@ -2035,29 +2035,30 @@ static int mxf_parse_prores_frame(AVFormatContext *s, AVStream *st, AVPacket *pk
}
static const struct {
int cid ;
uint16_t cid ;
uint8_t interlaced ;
UID codec_ul ;
} mxf_dnxhd_codec_uls [ ] = {
{ 1235 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x01 , 0x00 , 0x00 } } , // 1080p 10bit HIGH
{ 1237 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x03 , 0x00 , 0x00 } } , // 1080p 8bit MED
{ 1238 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x04 , 0x00 , 0x00 } } , // 1080p 8bit HIGH
{ 1241 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x07 , 0x00 , 0x00 } } , // 1080i 10bit HIGH
{ 1242 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x08 , 0x00 , 0x00 } } , // 1080i 8bit MED
{ 1243 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x09 , 0x00 , 0x00 } } , // 1080i 8bit HIGH
{ 1244 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x0a , 0x00 , 0x00 } } , // 1080i 8bit TR
{ 1250 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x10 , 0x00 , 0x00 } } , // 720p 10bit
{ 1251 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x11 , 0x00 , 0x00 } } , // 720p 8bit HIGH
{ 1252 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x12 , 0x00 , 0x00 } } , // 720p 8bit MED
{ 1253 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x13 , 0x00 , 0x00 } } , // 720p 8bit LOW
{ 1256 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x16 , 0x00 , 0x00 } } , // 1080p 10bit 444
{ 1258 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x18 , 0x00 , 0x00 } } , // 720p 8bit TR
{ 1259 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x19 , 0x00 , 0x00 } } , // 1080p 8bit TR
{ 1260 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x1a , 0x00 , 0x00 } } , // 1080i 8bit TR MBAFF
{ 1270 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x24 , 0x00 , 0x00 } } , // DNXHR 444
{ 1271 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x25 , 0x00 , 0x00 } } , // DNXHR HQX
{ 1272 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x26 , 0x00 , 0x00 } } , // DNXHR HQ
{ 1273 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x27 , 0x00 , 0x00 } } , // DNXHR SQ
{ 1274 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x28 , 0x00 , 0x00 } } , // DNXHR LB
{ 1235 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x01 , 0x00 , 0x00 } } , // 1080p 10bit HIGH
{ 1237 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x03 , 0x00 , 0x00 } } , // 1080p 8bit MED
{ 1238 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x04 , 0x00 , 0x00 } } , // 1080p 8bit HIGH
{ 1241 , 1 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x07 , 0x00 , 0x00 } } , // 1080i 10bit HIGH
{ 1242 , 1 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x08 , 0x00 , 0x00 } } , // 1080i 8bit MED
{ 1243 , 1 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x09 , 0x00 , 0x00 } } , // 1080i 8bit HIGH
{ 1244 , 1 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x0a , 0x00 , 0x00 } } , // 1080i 8bit TR
{ 1250 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x10 , 0x00 , 0x00 } } , // 720p 10bit
{ 1251 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x11 , 0x00 , 0x00 } } , // 720p 8bit HIGH
{ 1252 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x12 , 0x00 , 0x00 } } , // 720p 8bit MED
{ 1253 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x13 , 0x00 , 0x00 } } , // 720p 8bit LOW
{ 1256 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x16 , 0x00 , 0x00 } } , // 1080p 10bit 444
{ 1258 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x18 , 0x00 , 0x00 } } , // 720p 8bit TR
{ 1259 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x19 , 0x00 , 0x00 } } , // 1080p 8bit TR
{ 1260 , 1 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x1a , 0x00 , 0x00 } } , // 1080i 8bit TR MBAFF
{ 1270 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x24 , 0x00 , 0x00 } } , // DNXHR 444
{ 1271 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x25 , 0x00 , 0x00 } } , // DNXHR HQX
{ 1272 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x26 , 0x00 , 0x00 } } , // DNXHR HQ
{ 1273 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x27 , 0x00 , 0x00 } } , // DNXHR SQ
{ 1274 , 0 , { 0x06 , 0x0E , 0x2B , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x28 , 0x00 , 0x00 } } , // DNXHR LB
} ;
static int mxf_parse_dnxhd_frame ( AVFormatContext * s , AVStream * st , AVPacket * pkt )
@ -2076,6 +2077,7 @@ static int mxf_parse_dnxhd_frame(AVFormatContext *s, AVStream *st, AVPacket *pkt
for ( i = 0 ; i < FF_ARRAY_ELEMS ( mxf_dnxhd_codec_uls ) ; i + + ) {
if ( cid = = mxf_dnxhd_codec_uls [ i ] . cid ) {
sc - > codec_ul = & mxf_dnxhd_codec_uls [ i ] . codec_ul ;
sc - > interlaced = mxf_dnxhd_codec_uls [ i ] . interlaced ;
break ;
}
}
@ -2097,9 +2099,6 @@ static int mxf_parse_dnxhd_frame(AVFormatContext *s, AVStream *st, AVPacket *pkt
if ( frame_size < 0 )
return 0 ;
if ( ( sc - > interlaced = avpriv_dnxhd_get_interlaced ( cid ) ) < 0 )
return 0 ;
if ( cid > = 1270 ) { // RI raster
av_reduce ( & sc - > aspect_ratio . num , & sc - > aspect_ratio . den ,
st - > codecpar - > width , st - > codecpar - > height ,