summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <[email protected]>2014-07-29 00:17:58 +0200
committerMichael Niedermayer <[email protected]>2014-07-29 00:18:03 +0200
commit8b1e920676f6eeeb01422660768f5f92b3811bc6 (patch)
treee12162f3253d3a154facd7334c7a02768b0ca29a
parent4a4d0258eef26a8c7e93f68024b639290e1c8cb2 (diff)
parent259fe7280d0b63dc7a8ff017d44f26d3a84cfde8 (diff)
Merge commit '259fe7280d0b63dc7a8ff017d44f26d3a84cfde8'
* commit '259fe7280d0b63dc7a8ff017d44f26d3a84cfde8': mxf: Extract origin information from material and source track Merged-by: Michael Niedermayer <[email protected]>
-rw-r--r--libavformat/mxfdec.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 9f1ac2ee8e..151b61b2a9 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -114,6 +114,7 @@ typedef struct {
UID *structural_components_refs;
int structural_components_count;
int64_t duration;
+ uint8_t origin;
} MXFSequence;
typedef struct {
@@ -715,6 +716,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);
sequence->structural_components_refs = av_calloc(sequence->structural_components_count, sizeof(UID));
@@ -1627,6 +1631,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);
/* Only overwrite existing codec ID if it is unset or A-law, which is the default according to SMPTE RP 224. */