summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/mxf.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libavformat/mxf.c b/libavformat/mxf.c
index 899c81cecd..5a047b3a7c 100644
--- a/libavformat/mxf.c
+++ b/libavformat/mxf.c
@@ -50,6 +50,7 @@
typedef uint8_t UID[16];
enum MXFMetadataSetType {
+ AnyType,
MaterialPackage,
SourcePackage,
SourceClip,
@@ -648,7 +649,7 @@ static void *mxf_resolve_strong_ref(MXFContext *mxf, UID *strong_ref, enum MXFMe
return NULL;
for (i = 0; i < mxf->metadata_sets_count; i++) {
if (!memcmp(*strong_ref, mxf->metadata_sets[i]->uid, 16) &&
- mxf->metadata_sets[i]->type == type) {
+ (type == AnyType || mxf->metadata_sets[i]->type == type)) {
return mxf->metadata_sets[i];
}
}
@@ -749,7 +750,7 @@ static int mxf_parse_structural_metadata(MXFContext *mxf)
#endif
st->codec->codec_type = mxf_get_codec_type(mxf_data_definition_uls, &source_track->sequence->data_definition_ul);
- source_package->descriptor = mxf_resolve_strong_ref(mxf, &source_package->descriptor_ref, Descriptor);
+ source_package->descriptor = mxf_resolve_strong_ref(mxf, &source_package->descriptor_ref, AnyType);
if (source_package->descriptor) {
if (source_package->descriptor->type == MultipleDescriptor) {
for (j = 0; j < source_package->descriptor->sub_descriptors_count; j++) {
@@ -764,7 +765,7 @@ static int mxf_parse_structural_metadata(MXFContext *mxf)
break;
}
}
- } else
+ } else if (source_package->descriptor->type == Descriptor)
descriptor = source_package->descriptor;
}
if (!descriptor) {