summaryrefslogtreecommitdiffstats
path: root/gst/mxf/mxfparse.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/mxf/mxfparse.c')
-rw-r--r--gst/mxf/mxfparse.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/gst/mxf/mxfparse.c b/gst/mxf/mxfparse.c
index 53726b6b..212c6942 100644
--- a/gst/mxf/mxfparse.c
+++ b/gst/mxf/mxfparse.c
@@ -2838,6 +2838,52 @@ void mxf_metadata_rgba_picture_essence_descriptor_reset
}
gboolean
+ mxf_metadata_generic_data_essence_descriptor_handle_tag
+ (MXFMetadataGenericDescriptor * d, const MXFPrimerPack * primer,
+ guint16 tag, const guint8 * tag_data, guint16 tag_size)
+{
+ MXFMetadataGenericDataEssenceDescriptor *descriptor =
+ (MXFMetadataGenericDataEssenceDescriptor *) d;
+ gboolean ret = FALSE;
+ gchar str[48];
+
+ switch (tag) {
+ case 0x3e01:
+ if (tag_size != 16)
+ goto error;
+ memcpy (&descriptor->data_essence_compression, tag_data, 16);
+ GST_DEBUG (" data essence compression = %s",
+ mxf_ul_to_string (&descriptor->data_essence_compression, str));
+ ret = TRUE;
+ break;
+ default:
+ ret =
+ mxf_metadata_file_descriptor_handle_tag (d, primer, tag, tag_data,
+ tag_size);
+ break;
+ }
+
+ return ret;
+
+error:
+ GST_ERROR ("Invalid generic data essence descriptor tag 0x%04x of size %u",
+ tag, tag_size);
+
+ return TRUE;
+}
+
+void mxf_metadata_generic_data_essence_descriptor_reset
+ (MXFMetadataGenericDataEssenceDescriptor * descriptor)
+{
+ g_return_if_fail (descriptor != NULL);
+
+ mxf_metadata_file_descriptor_reset ((MXFMetadataFileDescriptor *) descriptor);
+
+ MXF_METADATA_DESCRIPTOR_CLEAR (descriptor,
+ MXFMetadataGenericDataEssenceDescriptor, MXFMetadataFileDescriptor);
+}
+
+gboolean
mxf_metadata_multiple_descriptor_handle_tag (MXFMetadataGenericDescriptor * d,
const MXFPrimerPack * primer, guint16 tag, const guint8 * tag_data,
guint16 tag_size)