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 /gst | |
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.
Diffstat (limited to 'gst')
-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; } |