]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
parse SONY hidden MPEG-4 extradata, fix C0023S01.mxf
authorbcoudurier <bcoudurier@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Thu, 3 Aug 2006 12:31:15 +0000 (12:31 +0000)
committerbcoudurier <bcoudurier@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Thu, 3 Aug 2006 12:31:15 +0000 (12:31 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@5910 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavformat/mxf.c

index fd934c5df6a03ec68fd1cf05b945142475192792..67649ae88ef85c941164c122d49fc30ba6a148e0 100644 (file)
@@ -102,6 +102,8 @@ typedef struct MXFDescriptor {
     UID *sub_descriptors_refs;
     int sub_descriptors_count;
     int linked_track_id;
+    uint8_t *extradata;
+    int extradata_size;
 } MXFDescriptor;
 
 typedef struct MXFPackage {
@@ -598,6 +600,11 @@ static int mxf_read_metadata_generic_descriptor(MXFContext *mxf, KLVPacket *klv)
         case 0x3401:
             mxf_read_metadata_pixel_layout(pb, descriptor);
             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:
             url_fskip(pb, size);
         }
@@ -815,6 +822,10 @@ static int mxf_parse_structural_metadata(MXFContext *mxf)
         /* TODO: drop PictureEssenceCoding and SoundEssenceCompression, only check EssenceContainer */
         codec_ul = mxf_get_codec_ul(mxf_codec_uls, &descriptor->essence_codec_ul);
         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) {
             container_ul = mxf_get_codec_ul(mxf_picture_essence_container_uls, &descriptor->essence_container_ul);
             if (st->codec->codec_id == CODEC_ID_NONE)