@ -146,6 +146,11 @@ enum ULIndex {
INDEX_DNXHD_720p_8bit_HIGH ,
INDEX_DNXHD_720p_8bit_MEDIUM ,
INDEX_DNXHD_720p_8bit_LOW ,
INDEX_DNXHR_LB ,
INDEX_DNXHR_SQ ,
INDEX_DNXHR_HQ ,
INDEX_DNXHR_HQX ,
INDEX_DNXHR_444 ,
INDEX_JPEG2000 ,
INDEX_H264 ,
} ;
@ -345,6 +350,31 @@ static const MXFContainerEssenceEntry mxf_essence_container_uls[] = {
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x01 , 0x02 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x15 , 0x01 , 0x05 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x0A , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x13 , 0x00 , 0x00 } ,
mxf_write_cdci_desc } ,
// DNxHR LB - CID 1274
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x02 , 0x11 , 0x01 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x01 , 0x02 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x15 , 0x01 , 0x05 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x0A , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x28 , 0x00 , 0x00 } ,
mxf_write_cdci_desc } ,
// DNxHR SQ - CID 1273
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x02 , 0x11 , 0x01 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x01 , 0x02 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x15 , 0x01 , 0x05 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x0A , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x27 , 0x00 , 0x00 } ,
mxf_write_cdci_desc } ,
// DNxHR HQ - CID 1272
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x02 , 0x11 , 0x01 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x01 , 0x02 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x15 , 0x01 , 0x05 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x0A , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x26 , 0x00 , 0x00 } ,
mxf_write_cdci_desc } ,
// DNxHR HQX - CID 1271
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x02 , 0x11 , 0x01 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x01 , 0x02 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x15 , 0x01 , 0x05 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x0A , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x25 , 0x00 , 0x00 } ,
mxf_write_cdci_desc } ,
// DNxHR 444 - CID 1270
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x02 , 0x11 , 0x01 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x01 , 0x02 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x15 , 0x01 , 0x05 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x0A , 0x04 , 0x01 , 0x02 , 0x02 , 0x71 , 0x24 , 0x00 , 0x00 } ,
mxf_write_cdci_desc } ,
// JPEG2000
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x07 , 0x0d , 0x01 , 0x03 , 0x01 , 0x02 , 0x0c , 0x01 , 0x00 } ,
{ 0x06 , 0x0e , 0x2b , 0x34 , 0x01 , 0x02 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x15 , 0x01 , 0x08 , 0x00 } ,
@ -1959,7 +1989,11 @@ AVPacket *pkt)
header_cid = pkt - > data + 0x28 ;
cid = header_cid [ 0 ] < < 24 | header_cid [ 1 ] < < 16 | header_cid [ 2 ] < < 8 | header_cid [ 3 ] ;
if ( ( frame_size = avpriv_dnxhd_get_frame_size ( cid ) ) < 0 )
if ( ( frame_size = avpriv_dnxhd_get_frame_size ( cid ) ) = = DNXHD_VARIABLE ) {
frame_size = avpriv_dnxhd_get_hr_frame_size ( cid , st - > codecpar - > width , st - > codecpar - > height ) ;
}
if ( frame_size < 0 )
return - 1 ;
if ( ( sc - > interlaced = avpriv_dnxhd_get_interlaced ( cid ) ) < 0 )
return AVERROR_INVALIDDATA ;
@ -1998,6 +2032,23 @@ AVPacket *pkt)
case 1253 :
sc - > index = INDEX_DNXHD_720p_8bit_LOW ;
break ;
case 1274 :
sc - > index = INDEX_DNXHR_LB ;
break ;
case 1273 :
sc - > index = INDEX_DNXHR_SQ ;
break ;
case 1272 :
sc - > index = INDEX_DNXHR_HQ ;
break ;
case 1271 :
sc - > index = INDEX_DNXHR_HQX ;
sc - > component_depth = st - > codecpar - > bits_per_raw_sample ;
break ;
case 1270 :
sc - > index = INDEX_DNXHR_444 ;
sc - > component_depth = st - > codecpar - > bits_per_raw_sample ;
break ;
default :
return - 1 ;
}