mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
parse SONY hidden MPEG-4 extradata, fix C0023S01.mxf
Originally committed as revision 5910 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
61ca932e4a
commit
e1dacee11e
@ -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)
|
|||||||
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)
|
|||||||
/* 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)
|
||||||
|
Loading…
Reference in New Issue
Block a user