Message ID | 20210925155702.319164-2-tcChlisop0@gmail.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,v3,1/5] avformat/matroskadec: Parse Block Additional Mapping elements | expand |
Context | Check | Description |
---|---|---|
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
andriy/make_ppc | success | Make finished |
andriy/make_fate_ppc | success | Make fate finished |
On Sat, Sep 25, 2021 at 11:58 PM quietvoid <tcchlisop0@gmail.com> wrote: > > The parsing was implemented in a new dovi_isom file for the > unification of the mov/mpegts DOVI parsing into one function, in a following patch. > > Most of the Matroska elements implementation was done by Plex developers. > > Signed-off-by: quietvoid <tcChlisop0@gmail.com> > --- > libavformat/Makefile | 2 +- > libavformat/dovi_isom.c | 80 +++++++++++++++++++++++++++++++++++++++ > libavformat/dovi_isom.h | 29 ++++++++++++++ > libavformat/matroskadec.c | 15 ++++++++ > 4 files changed, 125 insertions(+), 1 deletion(-) > create mode 100644 libavformat/dovi_isom.c > create mode 100644 libavformat/dovi_isom.h > > diff --git a/libavformat/Makefile b/libavformat/Makefile > index c45caa3eed..61a1fecf6c 100644 > --- a/libavformat/Makefile > +++ b/libavformat/Makefile > @@ -313,7 +313,7 @@ OBJS-$(CONFIG_M4V_MUXER) += rawenc.o > OBJS-$(CONFIG_MATROSKA_DEMUXER) += matroskadec.o matroska.o \ > flac_picture.o isom_tags.o rmsipr.o \ > oggparsevorbis.o vorbiscomment.o \ > - qtpalette.o replaygain.o > + qtpalette.o replaygain.o dovi_isom.o > OBJS-$(CONFIG_MATROSKA_MUXER) += matroskaenc.o matroska.o \ > av1.o avc.o hevc.o isom_tags.o \ > flacenc_header.o avlanguage.o \ > diff --git a/libavformat/dovi_isom.c b/libavformat/dovi_isom.c > new file mode 100644 > index 0000000000..2c0a49c993 > --- /dev/null > +++ b/libavformat/dovi_isom.c > @@ -0,0 +1,80 @@ > +/* > + * DOVI ISO Media common code > + * Copyright (c) 2021 quietvoid > + * > + * This file is part of FFmpeg. > + * > + * FFmpeg is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * FFmpeg is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with FFmpeg; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > + */ > + > +#include "libavutil/dovi_meta.h" > + > +#include "avformat.h" > +#include "dovi_isom.h" > + > +int ff_isom_parse_dvcc_dvvc(AVFormatContext *s, AVStream *st, const uint8_t *buf_ptr, uint64_t size) > +{ > + uint32_t buf; > + AVDOVIDecoderConfigurationRecord *dovi; > + size_t dovi_size; > + int ret; > + > + if (size > (1 << 30) || size < 4) > + return AVERROR_INVALIDDATA; > + > + dovi = av_dovi_alloc(&dovi_size); > + if (!dovi) > + return AVERROR(ENOMEM); > + > + dovi->dv_version_major = *buf_ptr++; // 8 bits > + dovi->dv_version_minor = *buf_ptr++; // 8 bits > + > + buf = *buf_ptr++ << 8; > + buf |= *buf_ptr++; > + > + dovi->dv_profile = (buf >> 9) & 0x7f; // 7 bits > + dovi->dv_level = (buf >> 3) & 0x3f; // 6 bits > + dovi->rpu_present_flag = (buf >> 2) & 0x01; // 1 bit > + dovi->el_present_flag = (buf >> 1) & 0x01; // 1 bit > + dovi->bl_present_flag = buf & 0x01; // 1 bit > + > + // Has enough remaining data > + if (size >= 5) { > + dovi->dv_bl_signal_compatibility_id = ((*buf_ptr++) >> 4) & 0x0f; // 4 bits > + } else { > + // 0 stands for None > + // Dolby Vision V1.2.93 profiles and levels > + dovi->dv_bl_signal_compatibility_id = 0; > + } > + > + ret = av_stream_add_side_data(st, AV_PKT_DATA_DOVI_CONF, > + (uint8_t *)dovi, dovi_size); > + if (ret < 0) { > + av_free(dovi); > + return ret; > + } > + > + av_log(s, AV_LOG_TRACE, "DOVI, version: %d.%d, profile: %d, level: %d, " > + "rpu flag: %d, el flag: %d, bl flag: %d, compatibility id: %d\n", > + dovi->dv_version_major, dovi->dv_version_minor, > + dovi->dv_profile, dovi->dv_level, > + dovi->rpu_present_flag, > + dovi->el_present_flag, > + dovi->bl_present_flag, > + dovi->dv_bl_signal_compatibility_id > + ); > + > + return 0; > +} > diff --git a/libavformat/dovi_isom.h b/libavformat/dovi_isom.h > new file mode 100644 > index 0000000000..4c313046a7 > --- /dev/null > +++ b/libavformat/dovi_isom.h > @@ -0,0 +1,29 @@ > +/* > + * DOVI ISO Media common code > + * Copyright (c) 2021 quietvoid > + * > + * This file is part of FFmpeg. > + * > + * FFmpeg is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * FFmpeg is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with FFmpeg; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > + */ > + > +#ifndef AVFORMAT_DOVI_ISOM_H > +#define AVFORMAT_DOVI_ISOM_H > + > +#include "avformat.h" > + > +int ff_isom_parse_dvcc_dvvc(AVFormatContext *s, AVStream *st, const uint8_t *buf_ptr, uint64_t size); > + > +#endif /* AVFORMAT_DOVI_ISOM_H */ > diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c > index 74c3fbc2a4..a50851b8d3 100644 > --- a/libavformat/matroskadec.c > +++ b/libavformat/matroskadec.c > @@ -51,6 +51,8 @@ > #include "libavcodec/mpeg4audio.h" > #include "libavcodec/packet_internal.h" > > +#include "libavformat/dovi_isom.h" > + > #include "avformat.h" > #include "avio_internal.h" > #include "internal.h" > @@ -2323,15 +2325,28 @@ static int mkv_parse_video_projection(AVStream *st, const MatroskaTrack *track, > return 0; > } > > +static int mkv_parse_dvcc_dvvc(AVFormatContext *s, AVStream *st, const MatroskaTrack *track, > + EbmlBin *bin) > +{ > + return ff_isom_parse_dvcc_dvvc(s, st, bin->data, bin->size); > +} > + > static int mkv_parse_block_addition_mappings(AVFormatContext *s, AVStream *st, const MatroskaTrack *track) > { > const EbmlList *mappings_list = &track->block_addition_mappings; > MatroskaBlockAdditionMapping *mappings = mappings_list->elem; > + int ret; > > for (int i = 0; i < mappings_list->nb_elem; i++) { > MatroskaBlockAdditionMapping *mapping = &mappings[i]; > > switch (mapping->type) { > + case MKBETAG('d','v','c','C'): > + case MKBETAG('d','v','v','C'): > + if ((ret = mkv_parse_dvcc_dvvc(s, st, track, &mapping->extradata)) < 0) > + return ret; > + > + break; > default: > av_log(s, AV_LOG_DEBUG, > "Unknown block additional mapping type %ld, value %ld, name \"%s\"\n", > -- > 2.33.0 I prefer split dovi_isom.c/.h with DOVI parse/write as one commit, MKV/MOV/MPEG TS change & refactoring part as the other commits
On 26/09/2021 07.13, mypopy@gmail.com wrote: > On Sat, Sep 25, 2021 at 11:58 PM quietvoid <tcchlisop0@gmail.com> wrote: >> The parsing was implemented in a new dovi_isom file for the >> unification of the mov/mpegts DOVI parsing into one function, in a following patch. >> >> Most of the Matroska elements implementation was done by Plex developers. >> >> Signed-off-by: quietvoid <tcChlisop0@gmail.com> >> --- >> libavformat/Makefile | 2 +- >> libavformat/dovi_isom.c | 80 +++++++++++++++++++++++++++++++++++++++ >> libavformat/dovi_isom.h | 29 ++++++++++++++ >> libavformat/matroskadec.c | 15 ++++++++ >> 4 files changed, 125 insertions(+), 1 deletion(-) >> create mode 100644 libavformat/dovi_isom.c >> create mode 100644 libavformat/dovi_isom.h >> >> diff --git a/libavformat/Makefile b/libavformat/Makefile >> index c45caa3eed..61a1fecf6c 100644 >> --- a/libavformat/Makefile >> +++ b/libavformat/Makefile >> @@ -313,7 +313,7 @@ OBJS-$(CONFIG_M4V_MUXER) += rawenc.o >> OBJS-$(CONFIG_MATROSKA_DEMUXER) += matroskadec.o matroska.o \ >> flac_picture.o isom_tags.o rmsipr.o \ >> oggparsevorbis.o vorbiscomment.o \ >> - qtpalette.o replaygain.o >> + qtpalette.o replaygain.o dovi_isom.o >> OBJS-$(CONFIG_MATROSKA_MUXER) += matroskaenc.o matroska.o \ >> av1.o avc.o hevc.o isom_tags.o \ >> flacenc_header.o avlanguage.o \ >> diff --git a/libavformat/dovi_isom.c b/libavformat/dovi_isom.c >> new file mode 100644 >> index 0000000000..2c0a49c993 >> --- /dev/null >> +++ b/libavformat/dovi_isom.c >> @@ -0,0 +1,80 @@ >> +/* >> + * DOVI ISO Media common code >> + * Copyright (c) 2021 quietvoid >> + * >> + * This file is part of FFmpeg. >> + * >> + * FFmpeg is free software; you can redistribute it and/or >> + * modify it under the terms of the GNU Lesser General Public >> + * License as published by the Free Software Foundation; either >> + * version 2.1 of the License, or (at your option) any later version. >> + * >> + * FFmpeg is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> + * Lesser General Public License for more details. >> + * >> + * You should have received a copy of the GNU Lesser General Public >> + * License along with FFmpeg; if not, write to the Free Software >> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA >> + */ >> + >> +#include "libavutil/dovi_meta.h" >> + >> +#include "avformat.h" >> +#include "dovi_isom.h" >> + >> +int ff_isom_parse_dvcc_dvvc(AVFormatContext *s, AVStream *st, const uint8_t *buf_ptr, uint64_t size) >> +{ >> + uint32_t buf; >> + AVDOVIDecoderConfigurationRecord *dovi; >> + size_t dovi_size; >> + int ret; >> + >> + if (size > (1 << 30) || size < 4) >> + return AVERROR_INVALIDDATA; >> + >> + dovi = av_dovi_alloc(&dovi_size); >> + if (!dovi) >> + return AVERROR(ENOMEM); >> + >> + dovi->dv_version_major = *buf_ptr++; // 8 bits >> + dovi->dv_version_minor = *buf_ptr++; // 8 bits >> + >> + buf = *buf_ptr++ << 8; >> + buf |= *buf_ptr++; >> + >> + dovi->dv_profile = (buf >> 9) & 0x7f; // 7 bits >> + dovi->dv_level = (buf >> 3) & 0x3f; // 6 bits >> + dovi->rpu_present_flag = (buf >> 2) & 0x01; // 1 bit >> + dovi->el_present_flag = (buf >> 1) & 0x01; // 1 bit >> + dovi->bl_present_flag = buf & 0x01; // 1 bit >> + >> + // Has enough remaining data >> + if (size >= 5) { >> + dovi->dv_bl_signal_compatibility_id = ((*buf_ptr++) >> 4) & 0x0f; // 4 bits >> + } else { >> + // 0 stands for None >> + // Dolby Vision V1.2.93 profiles and levels >> + dovi->dv_bl_signal_compatibility_id = 0; >> + } >> + >> + ret = av_stream_add_side_data(st, AV_PKT_DATA_DOVI_CONF, >> + (uint8_t *)dovi, dovi_size); >> + if (ret < 0) { >> + av_free(dovi); >> + return ret; >> + } >> + >> + av_log(s, AV_LOG_TRACE, "DOVI, version: %d.%d, profile: %d, level: %d, " >> + "rpu flag: %d, el flag: %d, bl flag: %d, compatibility id: %d\n", >> + dovi->dv_version_major, dovi->dv_version_minor, >> + dovi->dv_profile, dovi->dv_level, >> + dovi->rpu_present_flag, >> + dovi->el_present_flag, >> + dovi->bl_present_flag, >> + dovi->dv_bl_signal_compatibility_id >> + ); >> + >> + return 0; >> +} >> diff --git a/libavformat/dovi_isom.h b/libavformat/dovi_isom.h >> new file mode 100644 >> index 0000000000..4c313046a7 >> --- /dev/null >> +++ b/libavformat/dovi_isom.h >> @@ -0,0 +1,29 @@ >> +/* >> + * DOVI ISO Media common code >> + * Copyright (c) 2021 quietvoid >> + * >> + * This file is part of FFmpeg. >> + * >> + * FFmpeg is free software; you can redistribute it and/or >> + * modify it under the terms of the GNU Lesser General Public >> + * License as published by the Free Software Foundation; either >> + * version 2.1 of the License, or (at your option) any later version. >> + * >> + * FFmpeg is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >> + * Lesser General Public License for more details. >> + * >> + * You should have received a copy of the GNU Lesser General Public >> + * License along with FFmpeg; if not, write to the Free Software >> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA >> + */ >> + >> +#ifndef AVFORMAT_DOVI_ISOM_H >> +#define AVFORMAT_DOVI_ISOM_H >> + >> +#include "avformat.h" >> + >> +int ff_isom_parse_dvcc_dvvc(AVFormatContext *s, AVStream *st, const uint8_t *buf_ptr, uint64_t size); >> + >> +#endif /* AVFORMAT_DOVI_ISOM_H */ >> diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c >> index 74c3fbc2a4..a50851b8d3 100644 >> --- a/libavformat/matroskadec.c >> +++ b/libavformat/matroskadec.c >> @@ -51,6 +51,8 @@ >> #include "libavcodec/mpeg4audio.h" >> #include "libavcodec/packet_internal.h" >> >> +#include "libavformat/dovi_isom.h" >> + >> #include "avformat.h" >> #include "avio_internal.h" >> #include "internal.h" >> @@ -2323,15 +2325,28 @@ static int mkv_parse_video_projection(AVStream *st, const MatroskaTrack *track, >> return 0; >> } >> >> +static int mkv_parse_dvcc_dvvc(AVFormatContext *s, AVStream *st, const MatroskaTrack *track, >> + EbmlBin *bin) >> +{ >> + return ff_isom_parse_dvcc_dvvc(s, st, bin->data, bin->size); >> +} >> + >> static int mkv_parse_block_addition_mappings(AVFormatContext *s, AVStream *st, const MatroskaTrack *track) >> { >> const EbmlList *mappings_list = &track->block_addition_mappings; >> MatroskaBlockAdditionMapping *mappings = mappings_list->elem; >> + int ret; >> >> for (int i = 0; i < mappings_list->nb_elem; i++) { >> MatroskaBlockAdditionMapping *mapping = &mappings[i]; >> >> switch (mapping->type) { >> + case MKBETAG('d','v','c','C'): >> + case MKBETAG('d','v','v','C'): >> + if ((ret = mkv_parse_dvcc_dvvc(s, st, track, &mapping->extradata)) < 0) >> + return ret; >> + >> + break; >> default: >> av_log(s, AV_LOG_DEBUG, >> "Unknown block additional mapping type %ld, value %ld, name \"%s\"\n", >> -- >> 2.33.0 > I prefer split dovi_isom.c/.h with DOVI parse/write as one commit, > MKV/MOV/MPEG TS change & refactoring part as the other commits Ok, will do.
diff --git a/libavformat/Makefile b/libavformat/Makefile index c45caa3eed..61a1fecf6c 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -313,7 +313,7 @@ OBJS-$(CONFIG_M4V_MUXER) += rawenc.o OBJS-$(CONFIG_MATROSKA_DEMUXER) += matroskadec.o matroska.o \ flac_picture.o isom_tags.o rmsipr.o \ oggparsevorbis.o vorbiscomment.o \ - qtpalette.o replaygain.o + qtpalette.o replaygain.o dovi_isom.o OBJS-$(CONFIG_MATROSKA_MUXER) += matroskaenc.o matroska.o \ av1.o avc.o hevc.o isom_tags.o \ flacenc_header.o avlanguage.o \ diff --git a/libavformat/dovi_isom.c b/libavformat/dovi_isom.c new file mode 100644 index 0000000000..2c0a49c993 --- /dev/null +++ b/libavformat/dovi_isom.c @@ -0,0 +1,80 @@ +/* + * DOVI ISO Media common code + * Copyright (c) 2021 quietvoid + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavutil/dovi_meta.h" + +#include "avformat.h" +#include "dovi_isom.h" + +int ff_isom_parse_dvcc_dvvc(AVFormatContext *s, AVStream *st, const uint8_t *buf_ptr, uint64_t size) +{ + uint32_t buf; + AVDOVIDecoderConfigurationRecord *dovi; + size_t dovi_size; + int ret; + + if (size > (1 << 30) || size < 4) + return AVERROR_INVALIDDATA; + + dovi = av_dovi_alloc(&dovi_size); + if (!dovi) + return AVERROR(ENOMEM); + + dovi->dv_version_major = *buf_ptr++; // 8 bits + dovi->dv_version_minor = *buf_ptr++; // 8 bits + + buf = *buf_ptr++ << 8; + buf |= *buf_ptr++; + + dovi->dv_profile = (buf >> 9) & 0x7f; // 7 bits + dovi->dv_level = (buf >> 3) & 0x3f; // 6 bits + dovi->rpu_present_flag = (buf >> 2) & 0x01; // 1 bit + dovi->el_present_flag = (buf >> 1) & 0x01; // 1 bit + dovi->bl_present_flag = buf & 0x01; // 1 bit + + // Has enough remaining data + if (size >= 5) { + dovi->dv_bl_signal_compatibility_id = ((*buf_ptr++) >> 4) & 0x0f; // 4 bits + } else { + // 0 stands for None + // Dolby Vision V1.2.93 profiles and levels + dovi->dv_bl_signal_compatibility_id = 0; + } + + ret = av_stream_add_side_data(st, AV_PKT_DATA_DOVI_CONF, + (uint8_t *)dovi, dovi_size); + if (ret < 0) { + av_free(dovi); + return ret; + } + + av_log(s, AV_LOG_TRACE, "DOVI, version: %d.%d, profile: %d, level: %d, " + "rpu flag: %d, el flag: %d, bl flag: %d, compatibility id: %d\n", + dovi->dv_version_major, dovi->dv_version_minor, + dovi->dv_profile, dovi->dv_level, + dovi->rpu_present_flag, + dovi->el_present_flag, + dovi->bl_present_flag, + dovi->dv_bl_signal_compatibility_id + ); + + return 0; +} diff --git a/libavformat/dovi_isom.h b/libavformat/dovi_isom.h new file mode 100644 index 0000000000..4c313046a7 --- /dev/null +++ b/libavformat/dovi_isom.h @@ -0,0 +1,29 @@ +/* + * DOVI ISO Media common code + * Copyright (c) 2021 quietvoid + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFORMAT_DOVI_ISOM_H +#define AVFORMAT_DOVI_ISOM_H + +#include "avformat.h" + +int ff_isom_parse_dvcc_dvvc(AVFormatContext *s, AVStream *st, const uint8_t *buf_ptr, uint64_t size); + +#endif /* AVFORMAT_DOVI_ISOM_H */ diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 74c3fbc2a4..a50851b8d3 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -51,6 +51,8 @@ #include "libavcodec/mpeg4audio.h" #include "libavcodec/packet_internal.h" +#include "libavformat/dovi_isom.h" + #include "avformat.h" #include "avio_internal.h" #include "internal.h" @@ -2323,15 +2325,28 @@ static int mkv_parse_video_projection(AVStream *st, const MatroskaTrack *track, return 0; } +static int mkv_parse_dvcc_dvvc(AVFormatContext *s, AVStream *st, const MatroskaTrack *track, + EbmlBin *bin) +{ + return ff_isom_parse_dvcc_dvvc(s, st, bin->data, bin->size); +} + static int mkv_parse_block_addition_mappings(AVFormatContext *s, AVStream *st, const MatroskaTrack *track) { const EbmlList *mappings_list = &track->block_addition_mappings; MatroskaBlockAdditionMapping *mappings = mappings_list->elem; + int ret; for (int i = 0; i < mappings_list->nb_elem; i++) { MatroskaBlockAdditionMapping *mapping = &mappings[i]; switch (mapping->type) { + case MKBETAG('d','v','c','C'): + case MKBETAG('d','v','v','C'): + if ((ret = mkv_parse_dvcc_dvvc(s, st, track, &mapping->extradata)) < 0) + return ret; + + break; default: av_log(s, AV_LOG_DEBUG, "Unknown block additional mapping type %ld, value %ld, name \"%s\"\n",
The parsing was implemented in a new dovi_isom file for the unification of the mov/mpegts DOVI parsing into one function, in a following patch. Most of the Matroska elements implementation was done by Plex developers. Signed-off-by: quietvoid <tcChlisop0@gmail.com> --- libavformat/Makefile | 2 +- libavformat/dovi_isom.c | 80 +++++++++++++++++++++++++++++++++++++++ libavformat/dovi_isom.h | 29 ++++++++++++++ libavformat/matroskadec.c | 15 ++++++++ 4 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 libavformat/dovi_isom.c create mode 100644 libavformat/dovi_isom.h