@ -981,6 +981,15 @@ static const MXFCodecUL mxf_sound_essence_container_uls[] = {
{ { 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 } , 0 , AV_CODEC_ID_NONE } ,
} ;
static const MXFCodecUL mxf_data_essence_container_uls [ ] = {
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x09 , 0x0d , 0x01 , 0x03 , 0x01 , 0x02 , 0x0e , 0x00 , 0x00 } , 16 , 0 } ,
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x09 , 0x0d , 0x01 , 0x03 , 0x01 , 0x02 , 0x0e , 0x00 , 0x00 } , 16 , AV_CODEC_ID_NONE } ,
} ;
static const char * mxf_data_essence_descriptor [ ] = {
" vbi_vanc_smpte_436M " ,
} ;
static int mxf_get_sorted_table_segments ( MXFContext * mxf , int * nb_sorted_segments , MXFIndexTableSegment * * * sorted_segments )
{
int i , j , nb_segments = 0 ;
@ -1657,6 +1666,14 @@ static int mxf_parse_structural_metadata(MXFContext *mxf)
} else if ( st - > codec - > codec_id = = AV_CODEC_ID_MP2 ) {
st - > need_parsing = AVSTREAM_PARSE_FULL ;
}
} else if ( st - > codec - > codec_type = = AVMEDIA_TYPE_DATA ) {
int codec_id = mxf_get_codec_ul ( mxf_data_essence_container_uls ,
essence_container_ul ) - > id ;
if ( codec_id > = 0 & &
codec_id < FF_ARRAY_ELEMS ( mxf_data_essence_descriptor ) ) {
av_dict_set ( & st - > metadata , " data_type " ,
mxf_data_essence_descriptor [ codec_id ] , 0 ) ;
}
}
if ( descriptor - > extradata ) {
if ( ! ff_alloc_extradata ( st - > codec , descriptor - > extradata_size ) ) {
@ -1826,6 +1843,7 @@ static const MXFMetadataReadTableEntry mxf_metadata_read_table[] = {
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x02 , 0x53 , 0x01 , 0x01 , 0x0d , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x51 , 0x00 } , mxf_read_generic_descriptor , sizeof ( MXFDescriptor ) , Descriptor } , /* MPEG 2 Video */
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x02 , 0x53 , 0x01 , 0x01 , 0x0d , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x48 , 0x00 } , mxf_read_generic_descriptor , sizeof ( MXFDescriptor ) , Descriptor } , /* Wave */
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x02 , 0x53 , 0x01 , 0x01 , 0x0d , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x47 , 0x00 } , mxf_read_generic_descriptor , sizeof ( MXFDescriptor ) , Descriptor } , /* AES3 */
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x02 , 0x53 , 0x01 , 0x01 , 0x0d , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x5c , 0x00 } , mxf_read_generic_descriptor , sizeof ( MXFDescriptor ) , Descriptor } , /* VANC/VBI - SMPTE 436M */
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x02 , 0x53 , 0x01 , 0x01 , 0x0d , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x3A , 0x00 } , mxf_read_track , sizeof ( MXFTrack ) , Track } , /* Static Track */
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x02 , 0x53 , 0x01 , 0x01 , 0x0d , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x3B , 0x00 } , mxf_read_track , sizeof ( MXFTrack ) , Track } , /* Generic Track */
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x02 , 0x53 , 0x01 , 0x01 , 0x0d , 0x01 , 0x01 , 0x01 , 0x01 , 0x01 , 0x14 , 0x00 } , mxf_read_timecode_component , sizeof ( MXFTimecodeComponent ) , TimecodeComponent } ,