diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-01-26 16:23:38 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-01-31 11:02:24 +0100 |
commit | afbec8ab9bc8b8b477ae0f1c948c8df3da4e1ea0 (patch) | |
tree | 094cb80728a8bda6384c5565c8bb1462c7245de1 | |
parent | 4162c36f17bdd3e58fa52cc994fbc1bdf4e3e6a0 (diff) | |
download | gst-plugins-bad-afbec8ab9bc8b8b477ae0f1c948c8df3da4e1ea0.tar.gz gst-plugins-bad-afbec8ab9bc8b8b477ae0f1c948c8df3da4e1ea0.tar.bz2 gst-plugins-bad-afbec8ab9bc8b8b477ae0f1c948c8df3da4e1ea0.zip |
Allow index table segments without primer pack
When parsing an index table segment without a valid
primer pack in this partition only parse the static
local tags and ignore all dynamic ones.
This allows us to use index table segments in some
broken files.
-rw-r--r-- | gst/mxf/mxfdemux.c | 17 | ||||
-rw-r--r-- | gst/mxf/mxfparse.c | 7 |
2 files changed, 13 insertions, 11 deletions
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c index 246c6c15..0473b696 100644 --- a/gst/mxf/mxfdemux.c +++ b/gst/mxf/mxfdemux.c @@ -586,11 +586,11 @@ gst_mxf_demux_choose_package (GstMXFDemux * demux) for (i = 0; i < demux->preface->content_storage->n_packages; i++) { if (demux->preface->content_storage->packages[i] && - MXF_IS_METADATA_MATERIAL_PACKAGE (demux->preface-> - content_storage->packages[i])) { + MXF_IS_METADATA_MATERIAL_PACKAGE (demux->preface->content_storage-> + packages[i])) { ret = - MXF_METADATA_GENERIC_PACKAGE (demux->preface-> - content_storage->packages[i]); + MXF_METADATA_GENERIC_PACKAGE (demux->preface->content_storage-> + packages[i]); break; } } @@ -1237,8 +1237,8 @@ gst_mxf_demux_pad_next_component (GstMXFDemux * demux, GstMXFDemuxPad * pad) pad->current_component_index); pad->current_component = - MXF_METADATA_SOURCE_CLIP (sequence-> - structural_components[pad->current_component_index]); + MXF_METADATA_SOURCE_CLIP (sequence->structural_components[pad-> + current_component_index]); if (pad->current_component == NULL) { GST_ERROR_OBJECT (demux, "No such structural component"); return GST_FLOW_ERROR; @@ -1246,8 +1246,8 @@ gst_mxf_demux_pad_next_component (GstMXFDemux * demux, GstMXFDemuxPad * pad) if (!pad->current_component->source_package || !pad->current_component->source_package->top_level - || !MXF_METADATA_GENERIC_PACKAGE (pad-> - current_component->source_package)->tracks) { + || !MXF_METADATA_GENERIC_PACKAGE (pad->current_component-> + source_package)->tracks) { GST_ERROR_OBJECT (demux, "Invalid component"); return GST_FLOW_ERROR; } @@ -1582,7 +1582,6 @@ gst_mxf_demux_handle_index_table_segment (GstMXFDemux * demux, if (!demux->current_partition->primer.mappings) { GST_WARNING_OBJECT (demux, "Invalid primer pack"); - return GST_FLOW_OK; } segment = g_new0 (MXFIndexTableSegment, 1); diff --git a/gst/mxf/mxfparse.c b/gst/mxf/mxfparse.c index 0c836912..91fbda57 100644 --- a/gst/mxf/mxfparse.c +++ b/gst/mxf/mxfparse.c @@ -868,9 +868,12 @@ mxf_index_table_segment_parse (const MXFUL * key, break; } default: - if (!mxf_local_tag_add_to_hash_table (primer, tag, tag_data, tag_size, - &segment->other_tags)) + if (!primer->mappings) { + GST_WARNING ("No valid primer pack for this partition"); + } else if (!mxf_local_tag_add_to_hash_table (primer, tag, tag_data, + tag_size, &segment->other_tags)) { goto error; + } break; } |