slomo gst-plugins-bad: gst-plugins-bad/ gst-plugins-bad/gst/mxf/

[email protected] Fri, 5 Dec 2008 04:26:16 -0800 (PST)
Newsgroups gmane.comp.video.gstreamer.cvs
Message-ID <[email protected]>
CVS Root:       /cvs/gstreamer
Module:         gst-plugins-bad
Changes by:     slomo
Date:           Fri Dec 05 2008  12:26:16 UTC

Log message:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_reset_metadata),
(gst_mxf_demux_handle_metadata_generic_data_essence_descriptor),
(gst_mxf_demux_handle_header_metadata_resolve_references),
(gst_mxf_demux_handle_metadata):
* gst/mxf/mxfdemux.h:
* gst/mxf/mxfparse.c:
(mxf_metadata_generic_data_essence_descriptor_handle_tag),
(mxf_metadata_generic_data_essence_descriptor_reset):
* gst/mxf/mxfparse.h:
* gst/mxf/mxftypes.h:
Implement parsing of the generic data essence descriptor.

Modified files:
    .               : ChangeLog
    gst/mxf         : mxfdemux.c mxfdemux.h mxfparse.c mxfparse.h
                      mxftypes.h

Links:
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3791&r2=1.3792
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.c.diff?r1=1.28&r2=1.29
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.h.diff?r1=1.7&r2=1.8
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.c.diff?r1=1.17&r2=1.18
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.h.diff?r1=1.10&r2=1.11
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxftypes.h.diff?r1=1.4&r2=1.5

====Begin Diffs====
Index: ChangeLog
===================================================================
RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v
retrieving revision 1.3791
retrieving revision 1.3792
diff -u -d -r1.3791 -r1.3792
--- ChangeLog	5 Dec 2008 10:32:53 -0000	1.3791
+++ ChangeLog	5 Dec 2008 12:26:00 -0000	1.3792
@@ -1,5 +1,19 @@
 2008-12-05  Sebastian Dröge  <[email protected]>
 
+	* gst/mxf/mxfdemux.c: (gst_mxf_demux_reset_metadata),
+	(gst_mxf_demux_handle_metadata_generic_data_essence_descriptor),
+	(gst_mxf_demux_handle_header_metadata_resolve_references),
+	(gst_mxf_demux_handle_metadata):
+	* gst/mxf/mxfdemux.h:
+	* gst/mxf/mxfparse.c:
+	(mxf_metadata_generic_data_essence_descriptor_handle_tag),
+	(mxf_metadata_generic_data_essence_descriptor_reset):
+	* gst/mxf/mxfparse.h:
+	* gst/mxf/mxftypes.h:
+	Implement parsing of the generic data essence descriptor.
+
+2008-12-05  Sebastian Dröge  <[email protected]>
 	* gst/mxf/mxfdemux.c:
 	(gst_mxf_demux_handle_header_metadata_resolve_references):
 	Generalize some lines of codes that are more or less the same
Index: mxfdemux.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- mxfdemux.c	5 Dec 2008 10:32:55 -0000	1.28
+++ mxfdemux.c	5 Dec 2008 12:26:01 -0000	1.29
@@ -294,6 +294,15 @@
     demux->multiple_descriptor = NULL;
   }
+  if (demux->generic_data_essence_descriptor) {
+    for (i = 0; i < demux->generic_data_essence_descriptor->len; i++)
+      mxf_metadata_generic_data_essence_descriptor_reset (&g_array_index
+          (demux->generic_data_essence_descriptor,
+              MXFMetadataGenericDataEssenceDescriptor, i));
+    g_array_free (demux->generic_data_essence_descriptor, TRUE);
+    demux->generic_data_essence_descriptor = NULL;
+  }
   if (demux->generic_picture_essence_descriptor) {
     for (i = 0; i < demux->generic_picture_essence_descriptor->len; i++)
       mxf_metadata_generic_picture_essence_descriptor_reset (&g_array_index
@@ -786,38 +795,6 @@
 }
 static GstFlowReturn
-gst_mxf_demux_handle_metadata_generic_descriptor (GstMXFDemux * demux,
-    const MXFUL * key, guint16 type, GstBuffer * buffer)
-{
-  MXFMetadataGenericDescriptor descriptor;
-
-  memset (&descriptor, 0, sizeof (descriptor));
-  GST_DEBUG_OBJECT (demux,
-      "Handling metadata generic descriptor of size %u"
-      " at offset %" G_GUINT64_FORMAT " with type 0x%04d",
-      GST_BUFFER_SIZE (buffer), demux->offset, type);
-  if (!mxf_metadata_descriptor_parse (key,
-          (MXFMetadataGenericDescriptor *) & descriptor, &demux->primer,
-          type, GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer),
-          (MXFMetadataDescriptorHandleTag)
-          mxf_metadata_generic_descriptor_handle_tag,
-          (MXFMetadataDescriptorReset) mxf_metadata_generic_descriptor_reset)) {
-    GST_ERROR_OBJECT (demux, "Parsing metadata generic descriptor failed");
-    return GST_FLOW_ERROR;
-  }
-  if (!demux->generic_descriptor)
-    demux->generic_descriptor =
-        g_array_new (FALSE, FALSE, sizeof (MXFMetadataGenericDescriptor));
-  g_array_append_val (demux->generic_descriptor, descriptor);
-  return GST_FLOW_OK;
-}
-static GstFlowReturn
 gst_mxf_demux_handle_metadata_file_descriptor (GstMXFDemux * demux,
     const MXFUL * key, guint16 type, GstBuffer * buffer)
 {
@@ -883,6 +860,41 @@
+gst_mxf_demux_handle_metadata_generic_data_essence_descriptor (GstMXFDemux *
+    demux, const MXFUL * key, guint16 type, GstBuffer * buffer)
+{
+  MXFMetadataGenericDataEssenceDescriptor descriptor;
+  memset (&descriptor, 0, sizeof (descriptor));
+  GST_DEBUG_OBJECT (demux,
+      "Handling metadata generic data essence descriptor of size %u"
+      " at offset %" G_GUINT64_FORMAT " with type 0x%04d",
+      GST_BUFFER_SIZE (buffer), demux->offset, type);
+  if (!mxf_metadata_descriptor_parse (key,
+          (MXFMetadataGenericDescriptor *) & descriptor, &demux->primer,
+          type, GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer),
+          (MXFMetadataDescriptorHandleTag)
+          mxf_metadata_generic_data_essence_descriptor_handle_tag,
+          (MXFMetadataDescriptorReset)
+          mxf_metadata_generic_data_essence_descriptor_reset)) {
+    GST_ERROR_OBJECT (demux,
+        "Parsing metadata generic data essence descriptor failed");
+    return GST_FLOW_ERROR;
+  if (!demux->generic_data_essence_descriptor)
+    demux->generic_data_essence_descriptor =
+        g_array_new (FALSE, FALSE,
+        sizeof (MXFMetadataGenericDataEssenceDescriptor));
+  g_array_append_val (demux->generic_data_essence_descriptor, descriptor);
+  return GST_FLOW_OK;
+}
+static GstFlowReturn
 gst_mxf_demux_handle_metadata_generic_picture_essence_descriptor (GstMXFDemux *
     demux, const MXFUL * key, guint16 type, GstBuffer * buffer)
@@ -1179,6 +1191,8 @@
   FILL_DESCRIPTOR_ARRAY (demux->generic_descriptor,
       MXFMetadataGenericDescriptor);
   FILL_DESCRIPTOR_ARRAY (demux->file_descriptor, MXFMetadataFileDescriptor);
+  FILL_DESCRIPTOR_ARRAY (demux->generic_data_essence_descriptor,
+      MXFMetadataGenericDataEssenceDescriptor);
   FILL_DESCRIPTOR_ARRAY (demux->generic_picture_essence_descriptor,
       MXFMetadataGenericPictureEssenceDescriptor);
   FILL_DESCRIPTOR_ARRAY (demux->cdci_picture_essence_descriptor,
@@ -1309,8 +1323,9 @@
           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;
         }
@@ -2018,16 +2033,16 @@
           gst_mxf_demux_handle_metadata_structural_component (demux,
           key, type, buffer);
       break;
-    case MXF_METADATA_GENERIC_DATA_ESSENCE_DESCRIPTOR:
-      ret =
-          gst_mxf_demux_handle_metadata_generic_descriptor (demux,
-          key, type, buffer);
-      break;
     case MXF_METADATA_FILE_DESCRIPTOR:
       ret =
           gst_mxf_demux_handle_metadata_file_descriptor (demux,
+    case MXF_METADATA_GENERIC_DATA_ESSENCE_DESCRIPTOR:
+      ret =
+          gst_mxf_demux_handle_metadata_generic_data_essence_descriptor
+          (demux, key, type, buffer);
+      break;
     case MXF_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR:
           gst_mxf_demux_handle_metadata_generic_picture_essence_descriptor
Index: mxfdemux.h
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- mxfdemux.h	3 Dec 2008 16:08:28 -0000	1.7
+++ mxfdemux.h	5 Dec 2008 12:26:02 -0000	1.8
@@ -91,6 +91,7 @@
   GArray *file_descriptor;
   GArray *generic_sound_essence_descriptor;
   GArray *generic_picture_essence_descriptor;
+  GArray *generic_data_essence_descriptor;
   GArray *cdci_picture_essence_descriptor;
   GArray *rgba_picture_essence_descriptor;
   GArray *mpeg_video_descriptor;
Index: mxfparse.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- mxfparse.c	4 Dec 2008 08:50:48 -0000	1.17
+++ mxfparse.c	5 Dec 2008 12:26:02 -0000	1.18
@@ -2838,6 +2838,52 @@
 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;
+    default:
+          mxf_metadata_file_descriptor_handle_tag (d, primer, tag, tag_data,
+          tag_size);
+  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)
Index: mxfparse.h
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- mxfparse.h	30 Nov 2008 17:26:55 -0000	1.10
+++ mxfparse.h	5 Dec 2008 12:26:02 -0000	1.11
@@ -151,6 +151,10 @@
     const MXFPrimerPack *primer, guint16 tag, const guint8 *tag_data, guint16 tag_size);
 void mxf_metadata_rgba_picture_essence_descriptor_reset (MXFMetadataRGBAPictureEssenceDescriptor *descriptor);
+gboolean mxf_metadata_generic_data_essence_descriptor_handle_tag (MXFMetadataGenericDescriptor *descriptor,
+    const MXFPrimerPack *primer, guint16 tag, const guint8 *tag_data, guint16 tag_size);
+void mxf_metadata_generic_data_essence_descriptor_reset (MXFMetadataGenericDataEssenceDescriptor *descriptor);
 gboolean mxf_metadata_multiple_descriptor_handle_tag (MXFMetadataGenericDescriptor *descriptor,
 void mxf_metadata_multiple_descriptor_reset (MXFMetadataMultipleDescriptor *descriptor);
Index: mxftypes.h
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxftypes.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- mxftypes.h	28 Nov 2008 11:24:24 -0000	1.4
+++ mxftypes.h	5 Dec 2008 12:26:02 -0000	1.5
@@ -195,6 +195,7 @@
 typedef struct _MXFMetadataCDCIPictureEssenceDescriptor MXFMetadataCDCIPictureEssenceDescriptor;
 typedef struct _MXFMetadataRGBAPictureEssenceDescriptor MXFMetadataRGBAPictureEssenceDescriptor;
 typedef struct _MXFMetadataGenericSoundEssenceDescriptor MXFMetadataGenericSoundEssenceDescriptor;
+typedef struct _MXFMetadataGenericDataEssenceDescriptor MXFMetadataGenericDataEssenceDescriptor;
 typedef struct _MXFMetadataMultipleDescriptor MXFMetadataMultipleDescriptor;
 typedef struct _MXFMetadataLocator MXFMetadataLocator;
@@ -498,6 +499,12 @@
   MXFUL sound_essence_compression;
 };
+struct _MXFMetadataGenericDataEssenceDescriptor {
+  MXFMetadataFileDescriptor parent;
+  MXFUL data_essence_compression;
+};
 struct _MXFMetadataMultipleDescriptor {
   MXFMetadataFileDescriptor parent;

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/

_______________________________________________
gstreamer-cvs-verbose mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gstreamer-cvs-verbose