summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2008-11-24 11:31:27 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2008-11-24 11:31:27 +0000
commit10adeafe8730c1db9eaab849c6b442f908b11412 (patch)
treee133b805b4fc4b7580b108f2c9106522f816c471 /gst
parent25a21ecdef154073baa7a247126b72143f3fd44b (diff)
downloadgst-plugins-bad-10adeafe8730c1db9eaab849c6b442f908b11412.tar.gz
gst-plugins-bad-10adeafe8730c1db9eaab849c6b442f908b11412.tar.bz2
gst-plugins-bad-10adeafe8730c1db9eaab849c6b442f908b11412.zip
gst/mxf/mxfdemux.c: Make sure to only output generic container essence elements for a track if the body SID of the su...
Original commit message from CVS: * gst/mxf/mxfdemux.c: (gst_mxf_demux_handle_generic_container_essence_element): Make sure to only output generic container essence elements for a track if the body SID of the surrounding partition is the same as the body SID of the track's source package.
Diffstat (limited to 'gst')
-rw-r--r--gst/mxf/mxfdemux.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index 484f32e5..74ee5251 100644
--- a/gst/mxf/mxfdemux.c
+++ b/gst/mxf/mxfdemux.c
@@ -1127,9 +1127,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;
}
@@ -1862,7 +1861,7 @@ gst_mxf_demux_handle_generic_container_essence_element (GstMXFDemux * demux,
{
GstFlowReturn ret = GST_FLOW_OK;
guint32 track_number;
- guint i;
+ guint i, j;
GstMXFPad *pad = NULL;
GstBuffer *inbuf;
GstBuffer *outbuf = NULL;
@@ -1890,8 +1889,24 @@ gst_mxf_demux_handle_generic_container_essence_element (GstMXFDemux * demux,
(p->source_track->track_number == 0 &&
demux->src->len == 1 &&
demux->current_package->n_essence_tracks == 1)) {
- pad = p;
- break;
+ if (demux->essence_container_data) {
+ for (j = 0; j < demux->essence_container_data->len; j++) {
+ MXFMetadataEssenceContainerData *edata =
+ &g_array_index (demux->essence_container_data,
+ MXFMetadataEssenceContainerData, j);
+
+ if (p->source_package == edata->linked_package
+ && demux->partition.body_sid == edata->body_sid) {
+ pad = p;
+ break;
+ }
+ }
+ } else {
+ pad = p;
+ }
+
+ if (pad)
+ break;
}
}