[FFmpeg-cvslog] mxf: Extract origin information from material and source track

Marc-Antoine Arnaud git at videolan.org
Tue Jul 29 00:26:20 CEST 2014


ffmpeg | branch: master | Marc-Antoine Arnaud <arnaud.marcantoine at gmail.com> | Tue Jul 22 18:08:04 2014 +0200| [259fe7280d0b63dc7a8ff017d44f26d3a84cfde8] | committer: Luca Barbato

mxf: Extract origin information from material and source track

Signed-off-by: Luca Barbato <lu_zero at gentoo.org>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=259fe7280d0b63dc7a8ff017d44f26d3a84cfde8
---

 libavformat/mxfdec.c |   14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index bb876c0..ba76577 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -111,6 +111,7 @@ typedef struct {
     UID *structural_components_refs;
     int structural_components_count;
     int64_t duration;
+    uint8_t origin;
 } MXFSequence;
 
 typedef struct {
@@ -686,6 +687,9 @@ static int mxf_read_sequence(void *arg, AVIOContext *pb, int tag, int size, UID
     case 0x0201:
         avio_read(pb, sequence->data_definition_ul, 16);
         break;
+        case 0x4b02:
+        sequence->origin = avio_r8(pb);
+        break;
     case 0x1001:
         sequence->structural_components_count = avio_rb32(pb);
         if (sequence->structural_components_count >= UINT_MAX / sizeof(UID))
@@ -1589,6 +1593,16 @@ static int mxf_parse_structural_metadata(MXFContext *mxf)
                 }
             }
             st->need_parsing = AVSTREAM_PARSE_HEADERS;
+            if (material_track->sequence->origin) {
+                char material_origin[3];
+                snprintf(material_origin, sizeof(material_origin), "%d", material_track->sequence->origin);
+                av_dict_set(&st->metadata, "material_track_origin", material_origin, 0);
+            }
+            if (source_track->sequence->origin) {
+                char source_origin[3];
+                snprintf(source_origin, sizeof(source_origin), "%d", source_track->sequence->origin);
+                av_dict_set(&st->metadata, "source_track_origin", source_origin, 0);
+            }
         } else if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
             container_ul = mxf_get_codec_ul(mxf_sound_essence_container_uls, essence_container_ul);
             if (st->codec->codec_id == AV_CODEC_ID_NONE)



More information about the ffmpeg-cvslog mailing list