Hi! Attached patch allows decoding of the sample provided on ffmpeg-user: http://ffmpeg.org/pipermail/ffmpeg-user/2015-July/027472.html
Better suggestions welcome, Carl Eugen
diff --git a/libavformat/mxf.c b/libavformat/mxf.c index ecfb8a2..dc712bb 100644 --- a/libavformat/mxf.c +++ b/libavformat/mxf.c @@ -69,6 +69,11 @@ const MXFCodecUL ff_mxf_pixel_format_uls[] = { { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_PIX_FMT_NONE }, }; +const MXFCodecUL ff_mxf_codec_tag_uls[] = { + { { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x01,0x0E,0x04,0x03,0x01,0x01,0x03,0x01,0x00 }, 15, MKTAG('A', 'V', 'u', 'p') }, /* Avid 1:1 */ + { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, 0 }, +}; + static const struct { enum AVPixelFormat pix_fmt; const char data[16]; diff --git a/libavformat/mxf.h b/libavformat/mxf.h index 1763063..f3db1f9 100644 --- a/libavformat/mxf.h +++ b/libavformat/mxf.h @@ -78,6 +78,7 @@ typedef struct { extern const MXFCodecUL ff_mxf_data_definition_uls[]; extern const MXFCodecUL ff_mxf_codec_uls[]; extern const MXFCodecUL ff_mxf_pixel_format_uls[]; +extern const MXFCodecUL ff_mxf_codec_tag_uls[]; int ff_mxf_decode_pixel_layout(const char pixel_layout[16], enum AVPixelFormat *pix_fmt); const MXFSamplesPerFrame *ff_mxf_get_samples_per_frame(AVFormatContext *s, AVRational time_base); diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index b3c25b7..897e02a 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -2030,7 +2030,10 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) pix_fmt_ul = mxf_get_codec_ul(ff_mxf_pixel_format_uls, &descriptor->essence_codec_ul); st->codec->pix_fmt = (enum AVPixelFormat)pix_fmt_ul->id; - if (st->codec->pix_fmt == AV_PIX_FMT_NONE) { + if (st->codec->pix_fmt == AV_PIX_FMT_NONE) + st->codec->codec_tag = mxf_get_codec_ul(ff_mxf_codec_tag_uls, + &descriptor->essence_codec_ul)->id; + if (st->codec->pix_fmt == AV_PIX_FMT_NONE && !st->codec->codec_tag) { /* support files created before RP224v10 by defaulting to UYVY422 if subsampling is 4:2:2 and component depth is 8-bit */ if (descriptor->horiz_subsampling == 2 &&
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel