Commit e1dacee1 authored by Baptiste Coudurier's avatar Baptiste Coudurier

parse SONY hidden MPEG-4 extradata, fix C0023S01.mxf

Originally committed as revision 5910 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 61ca932e
...@@ -102,6 +102,8 @@ typedef struct MXFDescriptor { ...@@ -102,6 +102,8 @@ typedef struct MXFDescriptor {
UID *sub_descriptors_refs; UID *sub_descriptors_refs;
int sub_descriptors_count; int sub_descriptors_count;
int linked_track_id; int linked_track_id;
uint8_t *extradata;
int extradata_size;
} MXFDescriptor; } MXFDescriptor;
typedef struct MXFPackage { typedef struct MXFPackage {
...@@ -598,6 +600,11 @@ static int mxf_read_metadata_generic_descriptor(MXFContext *mxf, KLVPacket *klv) ...@@ -598,6 +600,11 @@ static int mxf_read_metadata_generic_descriptor(MXFContext *mxf, KLVPacket *klv)
case 0x3401: case 0x3401:
mxf_read_metadata_pixel_layout(pb, descriptor); mxf_read_metadata_pixel_layout(pb, descriptor);
break; break;
case 0x8201: /* Private tag used by SONY C0023S01.mxf */
descriptor->extradata = av_malloc(size);
descriptor->extradata_size = size;
get_buffer(pb, descriptor->extradata, size);
break;
default: default:
url_fskip(pb, size); url_fskip(pb, size);
} }
...@@ -815,6 +822,10 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) ...@@ -815,6 +822,10 @@ static int mxf_parse_structural_metadata(MXFContext *mxf)
/* TODO: drop PictureEssenceCoding and SoundEssenceCompression, only check EssenceContainer */ /* TODO: drop PictureEssenceCoding and SoundEssenceCompression, only check EssenceContainer */
codec_ul = mxf_get_codec_ul(mxf_codec_uls, &descriptor->essence_codec_ul); codec_ul = mxf_get_codec_ul(mxf_codec_uls, &descriptor->essence_codec_ul);
st->codec->codec_id = codec_ul->id; st->codec->codec_id = codec_ul->id;
if (descriptor->extradata) {
st->codec->extradata = descriptor->extradata;
st->codec->extradata_size = descriptor->extradata_size;
}
if (st->codec->codec_type == CODEC_TYPE_VIDEO) { if (st->codec->codec_type == CODEC_TYPE_VIDEO) {
container_ul = mxf_get_codec_ul(mxf_picture_essence_container_uls, &descriptor->essence_container_ul); container_ul = mxf_get_codec_ul(mxf_picture_essence_container_uls, &descriptor->essence_container_ul);
if (st->codec->codec_id == CODEC_ID_NONE) if (st->codec->codec_id == CODEC_ID_NONE)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment