summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
Diffstat (limited to 'gst')
-rw-r--r--gst/mxf/mxfdemux.c28
-rw-r--r--gst/mxf/mxfparse.c17
2 files changed, 17 insertions, 28 deletions
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index 2fdfcb18..484f32e5 100644
--- a/gst/mxf/mxfdemux.c
+++ b/gst/mxf/mxfdemux.c
@@ -1127,8 +1127,9 @@ 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;
}
@@ -1982,7 +1983,6 @@ gst_mxf_demux_pull_klv_packet (GstMXFDemux * demux, guint64 offset, MXFUL * key,
const guint8 *data;
guint64 data_offset = 0;
guint64 length;
- gchar key_str[48];
GstFlowReturn ret = GST_FLOW_OK;
memset (key, 0, sizeof (MXFUL));
@@ -1994,13 +1994,6 @@ gst_mxf_demux_pull_klv_packet (GstMXFDemux * demux, guint64 offset, MXFUL * key,
data = GST_BUFFER_DATA (buffer);
- if (!mxf_is_mxf_packet ((const MXFUL *) data)) {
- GST_ERROR_OBJECT (demux, "Not an MXF packet, skipping. Key: %s",
- mxf_ul_to_string ((const MXFUL *) data, key_str));
- ret = GST_FLOW_ERROR;
- goto beach;
- }
-
memcpy (key, GST_BUFFER_DATA (buffer), 16);
/* Decode BER encoded packet length */
@@ -2243,7 +2236,12 @@ gst_mxf_demux_handle_klv_packet (GstMXFDemux * demux, const MXFUL * key,
goto beach;
}
- if (mxf_is_partition_pack (key)) {
+ if (!mxf_is_mxf_packet (key)) {
+ GST_WARNING_OBJECT (demux,
+ "Skipping non-MXF packet of size %u at offset %"
+ G_GUINT64_FORMAT ", key: %s", GST_BUFFER_SIZE (buffer), demux->offset,
+ mxf_ul_to_string (key, key_str));
+ } else if (mxf_is_partition_pack (key)) {
ret = gst_mxf_demux_handle_partition_pack (demux, key, buffer);
} else if (mxf_is_primer_pack (key)) {
ret = gst_mxf_demux_handle_primer_pack (demux, key, buffer);
@@ -2414,7 +2412,6 @@ gst_mxf_demux_chain (GstPad * pad, GstBuffer * inbuf)
guint64 length = 0;
guint64 offset = 0;
GstBuffer *buffer = NULL;
- gchar key_str[48];
demux = GST_MXF_DEMUX (gst_pad_get_parent (pad));
@@ -2488,13 +2485,6 @@ gst_mxf_demux_chain (GstPad * pad, GstBuffer * inbuf)
/* Pull 16 byte key and first byte of BER encoded length */
data = gst_adapter_peek (demux->adapter, 17);
- if (!mxf_is_mxf_packet ((const MXFUL *) data)) {
- GST_ERROR_OBJECT (demux, "Not an MXF packet, skipping. Key: %s",
- mxf_ul_to_string ((const MXFUL *) data, key_str));
- ret = GST_FLOW_ERROR;
- break;
- }
-
memcpy (&key, data, 16);
/* Decode BER encoded packet length */
diff --git a/gst/mxf/mxfparse.c b/gst/mxf/mxfparse.c
index 9a854a34..e9efac92 100644
--- a/gst/mxf/mxfparse.c
+++ b/gst/mxf/mxfparse.c
@@ -376,14 +376,19 @@ mxf_product_version_parse (MXFProductVersion * product_version,
memset (product_version, 0, sizeof (MXFProductVersion));
- if (size < 10)
+ if (size < 9)
return FALSE;
product_version->major = GST_READ_UINT16_BE (data);
product_version->minor = GST_READ_UINT16_BE (data + 2);
product_version->patch = GST_READ_UINT16_BE (data + 4);
product_version->build = GST_READ_UINT16_BE (data + 6);
- product_version->release = GST_READ_UINT16_BE (data + 8);
+
+ /* Avid writes a 9 byte product version */
+ if (size == 9)
+ product_version->release = GST_READ_UINT8 (data + 8);
+ else
+ product_version->release = GST_READ_UINT16_BE (data + 8);
return TRUE;
}
@@ -921,8 +926,6 @@ mxf_metadata_identification_parse (const MXFUL * key,
break;
case 0x3c03:
GST_WRITE_UINT16_BE (data, 0x0000);
- if (tag_size != 10)
- goto error;
if (!mxf_product_version_parse (&identification->product_version,
tag_data, tag_size))
goto error;
@@ -939,16 +942,12 @@ mxf_metadata_identification_parse (const MXFUL * key,
break;
case 0x3c06:
GST_WRITE_UINT16_BE (data, 0x0000);
- if (tag_size != 8)
- goto error;
if (!mxf_timestamp_parse (&identification->modification_date, tag_data,
tag_size))
goto error;
break;
case 0x3c07:
GST_WRITE_UINT16_BE (data, 0x0000);
- if (tag_size != 10)
- goto error;
if (!mxf_product_version_parse (&identification->toolkit_version,
tag_data, tag_size))
goto error;
@@ -1126,7 +1125,7 @@ mxf_metadata_content_storage_parse (const MXFUL * key,
for (i = 0; i < content_storage->n_packages; i++)
GST_DEBUG (" package %u = %s", i,
mxf_ul_to_string (&content_storage->packages_uids[i], str));
- for (i = 0; i < content_storage->n_packages; i++)
+ for (i = 0; i < content_storage->n_essence_container_data; i++)
GST_DEBUG (" essence container data %u = %s", i,
mxf_ul_to_string (&content_storage->essence_container_data_uids[i],
str));