Hi Thomas > On May 13, 2019, at 3:11 PM, Thomas Mundt <tmund...@gmail.com> wrote: > > Hi Baptiste, > > Am Fr., 10. Mai 2019 um 17:51 Uhr schrieb Baptiste Coudurier < > baptiste.coudur...@gmail.com>: > >> --- >> libavformat/Makefile | 2 +- >> libavformat/avc.c | 188 ++++++++++++++++++++++++++++++++++++++ >> libavformat/avc.h | 15 +++ >> libavformat/hevc.c | 36 +------- >> libavformat/mxf.h | 1 + >> libavformat/mxfenc.c | 213 ++++++++++++++++++++++++++++++++++--------- >> 6 files changed, 374 insertions(+), 81 deletions(-) >> [...] > > +static const MXFLocalTagPair mxf_avc_subdescriptor_local_tags[] = { >> + { 0x8100, >> {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x09,0x06,0x01,0x01,0x04,0x06,0x10,0x00,0x00}}, >> /* SubDescriptors */ >> + { 0x8200, >> {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x0E,0x04,0x01,0x06,0x06,0x01,0x0E,0x00,0x00}}, >> /* AVC Decoding Delay */ >> + { 0x8201, >> {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x0E,0x04,0x01,0x06,0x06,0x01,0x0A,0x00,0x00}}, >> /* AVC Profile */ >> + { 0x8202, >> {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x0E,0x04,0x01,0x06,0x06,0x01,0x0D,0x00,0x00}}, >> /* AVC Level */ >> +}; >> + >> [...] >> +static void mxf_write_avc_subdesc(AVFormatContext *s, AVStream *st) >> +{ >> + AVIOContext *pb = s->pb; >> + int64_t pos; >> + >> + avio_write(pb, mxf_avc_subdescriptor_key, 16); >> + klv_encode_ber4_length(pb, 0); >> + pos = avio_tell(pb); >> + >> + mxf_write_local_tag(pb, 16, 0x3C0A); >> + mxf_write_uuid(pb, AVCSubDescriptor, 0); >> + >> + mxf_write_local_tag(pb, 1, 0x8200); >> + avio_w8(pb, 0xFF); // AVC Decoding Delay, unknown >> + >> + mxf_write_local_tag(pb, 1, 0x8201); >> + avio_w8(pb, st->codecpar->profile); // AVC Profile >> + >> + mxf_write_local_tag(pb, 1, 0x8202); >> + avio_w8(pb, st->codecpar->level); // AVC Level >> + >> + mxf_update_klv_size(s->pb, pos); >> +} >> > > Other MXF muxers, e.g. bmxlib, also write the avc profile constraint tag > when the avc subdescriptor is used. At least MediaInfo detects intra coded > files as long gop otherwise.
I prefer not writing optional values unless actually required by actual decoders. I think MediaInfo should be fixed in this case, it is obviously wrong. > FFmpeg crashes with this patch when I try to remux AVC Intra files without > SPS/PPS header. > Tested on Windows 7. Compiled with msys2/gcc7.3.0 x86-32bit. > Command: ffmpeg -i AVCI100_Test.mxf -c:v copy out.mxf > Test file: > https://www.mediafire.com/file/n0oi50u39yi3qpr/AVCI100_Test.mxf/file > <https://www.mediafire.com/file/n0oi50u39yi3qpr/AVCI100_Test.mxf/file> Strange, why doesn’t gcc emit a warning for SPS might be initialized in this case… Fixed in an updated patch. — Baptiste _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".