summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
m---------common0
-rw-r--r--gst/mxf/mxfdemux.c11
3 files changed, 16 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 7cb9ccdc..a7a86211 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-12-01 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * gst/mxf/mxfdemux.c: (gst_mxf_demux_choose_package):
+ If the preface references a primary package use this as the default
+ playback package unless one was specified by the "package" property.
+ If there's no preface primary package still try to use the first
+ material package.
+
2008-11-30 Sebastian Dröge <sebastian.droege@collabora.co.uk>
* gst/mxf/mxfdemux.c:
diff --git a/common b/common
-Subproject 5596f3e94835309b54029096f8bba528d79ae67
+Subproject 24963a683c185e1405b6f0aad37d95064cced93
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index 33be4378..1bc0e7bf 100644
--- a/gst/mxf/mxfdemux.c
+++ b/gst/mxf/mxfdemux.c
@@ -1305,9 +1305,8 @@ gst_mxf_demux_handle_header_metadata_resolve_references (GstMXFDemux * demux)
MXFMetadataEssenceContainerData, i);
for (j = 0; j < demux->content_storage.n_essence_container_data; j++) {
- if (mxf_ul_is_equal (&demux->
- content_storage.essence_container_data_uids[j],
- &data->instance_uid)) {
+ if (mxf_ul_is_equal (&demux->content_storage.
+ essence_container_data_uids[j], &data->instance_uid)) {
demux->content_storage.essence_container_data[j] = data;
break;
}
@@ -1677,6 +1676,12 @@ gst_mxf_demux_choose_package (GstMXFDemux * demux)
GST_WARNING_OBJECT (demux,
"Current package not found, choosing the first best");
+ if (demux->preface.primary_package)
+ ret = demux->preface.primary_package;
+ if (ret && (ret->type == MXF_METADATA_GENERIC_PACKAGE_TOP_LEVEL_SOURCE
+ || ret->type == MXF_METADATA_GENERIC_PACKAGE_MATERIAL))
+ return ret;
+
if (!demux->material_package) {
GST_ERROR_OBJECT (demux, "No material package");
return NULL;