diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2015-11-29 23:08:38 +0300 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2015-11-29 23:08:38 +0300 |
commit | ec494e6c836909e7478000d9316c945b51d4a25c (patch) | |
tree | 21aa3922885361860920745997313a5d2cd9b105 /libavformat/mxfdec.c | |
parent | 337b6d3b365a5be352841b0f2b57bd63afe6bff0 (diff) |
lavf/mxfdec: Set width to actual coded_width for AVCI50.
Fixes ticket #5029.
Reported and analyzed by videolan trac user HenkDemper in vlc ticket #15762.
Diffstat (limited to 'libavformat/mxfdec.c')
-rw-r--r-- | libavformat/mxfdec.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 429f46a7e9..6b1c654150 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -1145,6 +1145,15 @@ static const MXFCodecUL mxf_intra_only_picture_essence_coding_uls[] = { { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE }, }; +/* actual coded width for AVC-Intra to allow selecting correct SPS/PPS */ +static const MXFCodecUL mxf_intra_only_picture_coded_width[] = { + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x01 }, 16, 1440 }, + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x02 }, 16, 1440 }, + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x03 }, 16, 1440 }, + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x04 }, 16, 1440 }, + { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, 0 }, +}; + static const MXFCodecUL mxf_sound_essence_container_uls[] = { // sound essence container uls { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x06,0x01,0x00 }, 14, AV_CODEC_ID_PCM_S16LE }, /* BWF Frame wrapped */ @@ -2128,6 +2137,10 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) memcpy(st->codec->extradata, descriptor->extradata, descriptor->extradata_size); } } else if (st->codec->codec_id == AV_CODEC_ID_H264) { + int coded_width = mxf_get_codec_ul(mxf_intra_only_picture_coded_width, + &descriptor->essence_codec_ul)->id; + if (coded_width) + st->codec->width = coded_width; ret = ff_generate_avci_extradata(st); if (ret < 0) return ret; |