@ -283,6 +283,7 @@ static int mxf_read_close(AVFormatContext *s);
static const uint8_t mxf_header_partition_pack_key [ ] = { 0x06 , 0x0e , 0x2b , 0x34 , 0x02 , 0x05 , 0x01 , 0x01 , 0x0d , 0x01 , 0x02 , 0x01 , 0x01 , 0x02 } ;
static const uint8_t mxf_essence_element_key [ ] = { 0x06 , 0x0e , 0x2b , 0x34 , 0x01 , 0x02 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 } ;
static const uint8_t mxf_avid_essence_element_key [ ] = { 0x06 , 0x0e , 0x2b , 0x34 , 0x01 , 0x02 , 0x01 , 0x01 , 0x0e , 0x04 , 0x03 , 0x01 } ;
static const uint8_t mxf_canopus_essence_element_key [ ] = { 0x06 , 0x0e , 0x2b , 0x34 , 0x01 , 0x02 , 0x01 , 0x0a , 0x0e , 0x0f , 0x03 , 0x01 , 0x15 , 0x01 , 0x05 } ;
static const uint8_t mxf_system_item_key [ ] = { 0x06 , 0x0e , 0x2b , 0x34 , 0x02 , 0x05 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x04 } ;
static const uint8_t mxf_klv_key [ ] = { 0x06 , 0x0e , 0x2b , 0x34 } ;
/* complete keys to match */
@ -1128,6 +1129,8 @@ static const MXFCodecUL mxf_picture_essence_container_uls[] = {
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x02 , 0x01 , 0x04 , 0x01 } , 14 , AV_CODEC_ID_MPEG2VIDEO } , /* Type D-10 mapping of 40Mbps 525/60-I */
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x02 , 0x02 , 0x41 , 0x01 } , 14 , AV_CODEC_ID_DVVIDEO } , /* DV 625 25mbps */
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x01 , 0x0d , 0x01 , 0x03 , 0x01 , 0x02 , 0x05 , 0x00 , 0x00 } , 14 , AV_CODEC_ID_RAWVIDEO } , /* Uncompressed Picture */
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x0e , 0x0f , 0x03 , 0x01 , 0x02 , 0x20 , 0x01 , 0x01 } , 15 , AV_CODEC_ID_HQ_HQA } ,
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x04 , 0x01 , 0x01 , 0x0a , 0x0e , 0x0f , 0x03 , 0x01 , 0x02 , 0x20 , 0x02 , 0x01 } , 15 , AV_CODEC_ID_HQX } ,
{ { 0x06 , 0x0e , 0x2b , 0x34 , 0x01 , 0x01 , 0x01 , 0xff , 0x4b , 0x46 , 0x41 , 0x41 , 0x00 , 0x0d , 0x4d , 0x4f } , 14 , AV_CODEC_ID_RAWVIDEO } , /* Legacy ?? Uncompressed Picture */
{ { 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 } , 0 , AV_CODEC_ID_NONE } ,
} ;
@ -2952,6 +2955,7 @@ static int mxf_read_packet_old(AVFormatContext *s, AVPacket *pkt)
return 0 ;
}
if ( IS_KLV_KEY ( klv . key , mxf_essence_element_key ) | |
IS_KLV_KEY ( klv . key , mxf_canopus_essence_element_key ) | |
IS_KLV_KEY ( klv . key , mxf_avid_essence_element_key ) ) {
int index = mxf_get_stream_index ( s , & klv ) ;
int64_t next_ofs , next_klv ;