summaryrefslogtreecommitdiffstats
path: root/gst/mxf/mxfdemux.c
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2009-01-22 11:37:22 +0100
committerSebastian Dröge <slomo@circular-chaos.org>2009-01-22 13:12:59 +0100
commitcd80f534f5c22faefd191c8b9f716b4d4b34a64d (patch)
tree5d1ba26af1af24e43ac0234b6ec4844e0f495f50 /gst/mxf/mxfdemux.c
parent1b49a094feecae976611933269562f83d837b009 (diff)
downloadgst-plugins-bad-cd80f534f5c22faefd191c8b9f716b4d4b34a64d.tar.gz
gst-plugins-bad-cd80f534f5c22faefd191c8b9f716b4d4b34a64d.tar.bz2
gst-plugins-bad-cd80f534f5c22faefd191c8b9f716b4d4b34a64d.zip
Implement parsing of DMS1 (SMPTE S380M)
Diffstat (limited to 'gst/mxf/mxfdemux.c')
-rw-r--r--gst/mxf/mxfdemux.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index 2ddc9d3e..8d3505e1 100644
--- a/gst/mxf/mxfdemux.c
+++ b/gst/mxf/mxfdemux.c
@@ -558,11 +558,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;
}
}
@@ -908,6 +908,7 @@ gst_mxf_demux_handle_descriptive_metadata (GstMXFDemux * demux,
guint32 type;
guint8 scheme;
GstFlowReturn ret = GST_FLOW_OK;
+ MXFDescriptiveMetadata *m = NULL;
scheme = GST_READ_UINT8 (key->u + 12);
type = GST_READ_UINT24_BE (key->u + 13);
@@ -933,14 +934,23 @@ gst_mxf_demux_handle_descriptive_metadata (GstMXFDemux * demux,
return GST_FLOW_OK;
}
- switch (type) {
- default:
- GST_WARNING_OBJECT (demux,
- "Unknown or unhandled descriptive metadata of scheme 0x%02x and type 0x%06x",
- scheme, type);
- break;
+
+ m = mxf_descriptive_metadata_new (scheme, type, &demux->primer,
+ GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer));
+
+ if (!m) {
+ GST_WARNING_OBJECT (demux,
+ "Unknown or unhandled descriptive metadata of scheme 0x%02x and type 0x%06x",
+ scheme, type);
+ return GST_FLOW_OK;
}
+ if (!demux->metadata)
+ demux->metadata = g_ptr_array_new ();
+
+ g_ptr_array_add (demux->metadata, m);
+
+
return ret;
}
@@ -975,8 +985,8 @@ gst_mxf_demux_pad_next_component (GstMXFDemux * demux, GstMXFDemuxPad * pad)
GST_DEBUG_OBJECT (demux, "Switching to component %u", pad->current_component);
pad->component =
- MXF_METADATA_SOURCE_CLIP (sequence->structural_components[pad->
- current_component]);
+ MXF_METADATA_SOURCE_CLIP (sequence->
+ structural_components[pad->current_component]);
if (pad->component == NULL) {
GST_ERROR_OBJECT (demux, "No such structural component");
return GST_FLOW_ERROR;
@@ -984,8 +994,8 @@ gst_mxf_demux_pad_next_component (GstMXFDemux * demux, GstMXFDemuxPad * pad)
if (!pad->component->source_package
|| !pad->component->source_package->top_level
- || !MXF_METADATA_GENERIC_PACKAGE (pad->component->
- source_package)->tracks) {
+ || !MXF_METADATA_GENERIC_PACKAGE (pad->component->source_package)->
+ tracks) {
GST_ERROR_OBJECT (demux, "Invalid component");
return GST_FLOW_ERROR;
}