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

[email protected]
Newsgroups gmane.comp.video.gstreamer.cvs
Message-ID <[email protected]>
CVS Root:       /cvs/gstreamer
Module:         gst-plugins-bad
Changes by:     slomo
Date:           Sun Nov 30 2008  17:42:44 UTC

Log message:
* gst/mxf/mxfalaw.c: (mxf_is_alaw_essence_track):
* gst/mxf/mxfalaw.h:
* gst/mxf/mxfdemux.c:
(gst_mxf_demux_handle_header_metadata_update_streams):
* gst/mxf/mxfjpeg2000.c: (mxf_is_jpeg2000_essence_track):
* gst/mxf/mxfjpeg2000.h:
* gst/mxf/mxfmpeg.c: (mxf_is_mpeg_essence_track),
(mxf_mpeg_es_create_caps), (mxf_mpeg_create_caps):
* gst/mxf/mxfmpeg.h:
Some random cleanup.

Modified files:
    .               : ChangeLog
    gst/mxf         : mxfalaw.c mxfalaw.h mxfdemux.c mxfjpeg2000.c
                      mxfjpeg2000.h mxfmpeg.c mxfmpeg.h

Links:
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3769&r2=1.3770
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfalaw.c.diff?r1=1.1&r2=1.2
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfalaw.h.diff?r1=1.1&r2=1.2
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.c.diff?r1=1.18&r2=1.19
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfjpeg2000.c.diff?r1=1.2&r2=1.3
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfjpeg2000.h.diff?r1=1.1&r2=1.2
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfmpeg.c.diff?r1=1.6&r2=1.7
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfmpeg.h.diff?r1=1.3&r2=1.4

====Begin Diffs====
Index: ChangeLog
===================================================================
RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v
retrieving revision 1.3769
retrieving revision 1.3770
diff -u -d -r1.3769 -r1.3770
--- ChangeLog	30 Nov 2008 17:26:53 -0000	1.3769
+++ ChangeLog	30 Nov 2008 17:42:28 -0000	1.3770
@@ -1,5 +1,18 @@
 2008-11-30  Sebastian Dröge  <[email protected]>
 
+	* gst/mxf/mxfalaw.c: (mxf_is_alaw_essence_track):
+	* gst/mxf/mxfalaw.h:
+	* gst/mxf/mxfdemux.c:
+	(gst_mxf_demux_handle_header_metadata_update_streams):
+	* gst/mxf/mxfjpeg2000.c: (mxf_is_jpeg2000_essence_track):
+	* gst/mxf/mxfjpeg2000.h:
+	* gst/mxf/mxfmpeg.c: (mxf_is_mpeg_essence_track),
+	(mxf_mpeg_es_create_caps), (mxf_mpeg_create_caps):
+	* gst/mxf/mxfmpeg.h:
+	Some random cleanup.
+
+2008-11-30  Sebastian Dröge  <[email protected]>
 	* gst/mxf/mxfdemux.c: (gst_mxf_demux_remove_pads),
 	(gst_mxf_demux_reset), (gst_mxf_demux_find_package),
 	(gst_mxf_demux_choose_package),
Index: mxfalaw.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfalaw.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- mxfalaw.c	28 Nov 2008 18:13:30 -0000	1.1
+++ mxfalaw.c	30 Nov 2008 17:42:29 -0000	1.2
@@ -34,7 +34,7 @@
 #define GST_CAT_DEFAULT mxf_debug
 gboolean
-mxf_is_alaw_audio_essence_track (const MXFMetadataTrack * track)
+mxf_is_alaw_essence_track (const MXFMetadataTrack * track)
 {
   guint i;
@@ -99,8 +99,8 @@
       s = (MXFMetadataGenericSoundEssenceDescriptor *) track->descriptor[i];
       f = track->descriptor[i];
       break;
-    } else if (((MXFMetadataGenericDescriptor *) track->
-            descriptor[i])->is_file_descriptor
+    } else if (((MXFMetadataGenericDescriptor *) track->descriptor[i])->
+        is_file_descriptor
         && ((MXFMetadataGenericDescriptor *) track->descriptor[i])->type !=
         MXF_METADATA_MULTIPLE_DESCRIPTOR) {
Index: mxfalaw.h
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfalaw.h,v
--- mxfalaw.h	28 Nov 2008 18:13:30 -0000	1.1
+++ mxfalaw.h	30 Nov 2008 17:42:30 -0000	1.2
@@ -28,7 +28,7 @@
 #include "mxfparse.h"
-gboolean mxf_is_alaw_audio_essence_track (const MXFMetadataTrack *track);
+gboolean mxf_is_alaw_essence_track (const MXFMetadataTrack *track);
 GstCaps *
 mxf_alaw_create_caps (MXFMetadataGenericPackage *package, MXFMetadataTrack *track, GstTagList **tags, MXFEssenceElementHandler *handler, gpointer *mapping_data);
Index: mxfdemux.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfdemux.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- mxfdemux.c	30 Nov 2008 17:26:54 -0000	1.18
+++ mxfdemux.c	30 Nov 2008 17:42:30 -0000	1.19
@@ -1305,9 +1305,8 @@
           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;
         }
@@ -1865,15 +1864,15 @@
     switch (track_type) {
       case MXF_METADATA_TRACK_PICTURE_ESSENCE:
-        if (mxf_is_mpeg_video_essence_track (source_track))
+        if (mxf_is_mpeg_essence_track (source_track))
           caps =
-              mxf_mpeg_video_create_caps (source_package, source_track,
+              mxf_mpeg_create_caps (source_package, source_track,
               &pad->tags, &pad->handle_essence_element, &pad->mapping_data);
         else if (mxf_is_dv_dif_essence_track (source_track))
               mxf_dv_dif_create_caps (source_package, source_track,
-        else if (mxf_is_jpeg2000_video_essence_track (source_track))
+        else if (mxf_is_jpeg2000_essence_track (source_track))
               mxf_jpeg2000_create_caps (source_package, source_track,
@@ -1887,10 +1886,14 @@
-        else if (mxf_is_alaw_audio_essence_track (source_track))
+        else if (mxf_is_alaw_essence_track (source_track))
               mxf_alaw_create_caps (source_package, source_track,
+        else if (mxf_is_mpeg_essence_track (source_track))
+          caps =
+              &pad->tags, &pad->handle_essence_element, &pad->mapping_data);
         break;
       case MXF_METADATA_TRACK_DATA_ESSENCE:
         if (mxf_is_dv_dif_essence_track (source_track))
Index: mxfjpeg2000.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfjpeg2000.c,v
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- mxfjpeg2000.c	30 Nov 2008 14:12:04 -0000	1.2
+++ mxfjpeg2000.c	30 Nov 2008 17:42:30 -0000	1.3
@@ -38,7 +38,7 @@
-mxf_is_jpeg2000_video_essence_track (const MXFMetadataTrack * track)
+mxf_is_jpeg2000_essence_track (const MXFMetadataTrack * track)
@@ -106,8 +106,8 @@
       p = (MXFMetadataGenericPictureEssenceDescriptor *) track->descriptor[i];
Index: mxfjpeg2000.h
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfjpeg2000.h,v
--- mxfjpeg2000.h	29 Nov 2008 20:25:06 -0000	1.1
+++ mxfjpeg2000.h	30 Nov 2008 17:42:30 -0000	1.2
-gboolean mxf_is_jpeg2000_video_essence_track (const MXFMetadataTrack *track);
+gboolean mxf_is_jpeg2000_essence_track (const MXFMetadataTrack *track);
 mxf_jpeg2000_create_caps (MXFMetadataGenericPackage *package, MXFMetadataTrack *track, GstTagList **tags, MXFEssenceElementHandler *handler, gpointer *mapping_data);
Index: mxfmpeg.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfmpeg.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- mxfmpeg.c	30 Nov 2008 14:12:04 -0000	1.6
+++ mxfmpeg.c	30 Nov 2008 17:42:30 -0000	1.7
@@ -24,6 +24,7 @@
 /* TODO:
  * - Handle PES streams
  * - Fix TS/PS demuxers to forward timestamps
+ * - Handle sound/data somehow
  */
 #ifdef HAVE_CONFIG_H
@@ -195,7 +196,7 @@
 }
-mxf_is_mpeg_video_essence_track (const MXFMetadataTrack * track)
+mxf_is_mpeg_essence_track (const MXFMetadataTrack * track)
@@ -243,14 +244,84 @@
   0x01, 0x00, 0x00
 };
+static GstCaps *
+mxf_mpeg_es_create_caps (MXFMetadataGenericPackage * package,
+    MXFMetadataTrack * track, GstTagList ** tags,
+    MXFEssenceElementHandler * handler, gpointer * mapping_data,
+    MXFMetadataFileDescriptor * f,
+    MXFMetadataGenericPictureEssenceDescriptor * p,
+    MXFMetadataGenericSoundEssenceDescriptor * s,
+    MXFMetadataMPEGVideoDescriptor * d)
+{
+  GstCaps *caps = NULL;
+  /* SMPTE RP224 */
+  if (!p || mxf_ul_is_zero (&p->picture_essence_coding)) {
+    GST_WARNING
+        ("No picture essence descriptor or no picture essence coding defined");
+    caps =
+        gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 2,
+        "systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
+  } else if (p->picture_essence_coding.u[0] != 0x06
+      || p->picture_essence_coding.u[1] != 0x0e
+      || p->picture_essence_coding.u[2] != 0x2b
+      || p->picture_essence_coding.u[3] != 0x34
+      || p->picture_essence_coding.u[4] != 0x04
+      || p->picture_essence_coding.u[5] != 0x01
+      || p->picture_essence_coding.u[6] != 0x01
+      || p->picture_essence_coding.u[8] != 0x04
+      || p->picture_essence_coding.u[9] != 0x01
+      || p->picture_essence_coding.u[10] != 0x02
+      || p->picture_essence_coding.u[11] != 0x02
+      || p->picture_essence_coding.u[12] != 0x01) {
+    GST_ERROR ("No MPEG picture essence coding");
+    caps = NULL;
+  } else if (p->picture_essence_coding.u[13] >= 0x01 &&
+      p->picture_essence_coding.u[13] <= 0x08) {
+    caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 2,
+  } else if (p->picture_essence_coding.u[13] == 0x10) {
+    caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1,
+  } else if (p->picture_essence_coding.u[13] == 0x20) {
+    MXFLocalTag *local_tag =
+        (((MXFMetadataGenericDescriptor *) f)->other_tags) ?
+        g_hash_table_lookup (((MXFMetadataGenericDescriptor *)
+            f)->other_tags, &sony_mpeg4_extradata) : NULL;
+    caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 4,
+    if (local_tag) {
+      GstBuffer *codec_data = NULL;
+      codec_data = gst_buffer_new_and_alloc (local_tag->size);
+      memcpy (GST_BUFFER_DATA (codec_data), local_tag->data, local_tag->size);
+      gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER, codec_data,
+          NULL);
+      gst_buffer_unref (codec_data);
+    }
+  } else {
+    GST_ERROR ("Unsupported MPEG picture essence coding 0x%02x",
+        p->picture_essence_coding.u[13]);
+  }
+  if (caps)
+    *handler = mxf_mpeg_video_handle_essence_element;
+  return caps;
+}
-mxf_mpeg_video_create_caps (MXFMetadataGenericPackage * package,
+mxf_mpeg_create_caps (MXFMetadataGenericPackage * package,
     MXFMetadataTrack * track, GstTagList ** tags,
     MXFEssenceElementHandler * handler, gpointer * mapping_data)
   MXFMetadataMPEGVideoDescriptor *d = NULL;
   MXFMetadataFileDescriptor *f = NULL;
   MXFMetadataGenericPictureEssenceDescriptor *p = NULL;
+  MXFMetadataGenericSoundEssenceDescriptor *s = NULL;
   GstCaps *caps = NULL;
@@ -277,6 +348,11 @@
     } else if (((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
+        MXF_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR) {
+      f = track->descriptor[i];
+      s = (MXFMetadataGenericSoundEssenceDescriptor *) track->descriptor[i];
+      break;
+    } else if (((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
         MXF_METADATA_FILE_DESCRIPTOR) {
     }
@@ -287,62 +363,13 @@
     return NULL;
   }
-  *handler = mxf_mpeg_video_handle_essence_element;
   /* SMPTE 381M 7 */
   if (f->essence_container.u[13] == 0x04) {
     GST_DEBUG ("Found MPEG ES stream");
-    /* SMPTE RP224 */
-    if (!p || mxf_ul_is_zero (&p->picture_essence_coding)) {
-      GST_WARNING
-          ("No picture essence descriptor or no picture essence coding defined");
-      caps =
-          gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 2,
-          "systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
-    } else if (p->picture_essence_coding.u[0] != 0x06
-        || p->picture_essence_coding.u[1] != 0x0e
-        || p->picture_essence_coding.u[2] != 0x2b
-        || p->picture_essence_coding.u[3] != 0x34
-        || p->picture_essence_coding.u[4] != 0x04
-        || p->picture_essence_coding.u[5] != 0x01
-        || p->picture_essence_coding.u[6] != 0x01
-        || p->picture_essence_coding.u[8] != 0x04
-        || p->picture_essence_coding.u[9] != 0x01
-        || p->picture_essence_coding.u[10] != 0x02
-        || p->picture_essence_coding.u[11] != 0x02
-        || p->picture_essence_coding.u[12] != 0x01) {
-      GST_ERROR ("No MPEG picture essence coding");
-      caps = NULL;
-    } else if (p->picture_essence_coding.u[13] >= 0x01 &&
-        p->picture_essence_coding.u[13] <= 0x08) {
-      caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 2,
-    } else if (p->picture_essence_coding.u[13] == 0x10) {
-      caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1,
-    } else if (p->picture_essence_coding.u[13] == 0x20) {
-      MXFLocalTag *local_tag =
-          (((MXFMetadataGenericDescriptor *) f)->
-          other_tags) ? g_hash_table_lookup (((MXFMetadataGenericDescriptor *)
-              f)->other_tags, &sony_mpeg4_extradata) : NULL;
-
-      caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 4,
-      if (local_tag) {
-        GstBuffer *codec_data = NULL;
-        codec_data = gst_buffer_new_and_alloc (local_tag->size);
-        memcpy (GST_BUFFER_DATA (codec_data), local_tag->data, local_tag->size);
-        gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER, codec_data,
-            NULL);
-        gst_buffer_unref (codec_data);
-      }
-    } else {
-      GST_ERROR ("Unsupported MPEG picture essence coding 0x%02x",
-          p->picture_essence_coding.u[13]);
-    }
+        mxf_mpeg_es_create_caps (package, track, tags, handler, mapping_data, f,
+        p, s, d);
   } else if (f->essence_container.u[13] == 0x07) {
     GST_ERROR ("MPEG PES streams not supported yet");
@@ -354,7 +381,6 @@
   } else if (f->essence_container.u[13] == 0x09) {
     GST_DEBUG ("Found MPEG TS stream");
     caps = gst_caps_new_simple ("video/mpegts", NULL);
   if (p)
Index: mxfmpeg.h
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfmpeg.h,v
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- mxfmpeg.h	25 Nov 2008 09:38:26 -0000	1.3
+++ mxfmpeg.h	30 Nov 2008 17:42:30 -0000	1.4
@@ -52,9 +52,9 @@
 gboolean mxf_metadata_mpeg_video_descriptor_handle_tag (MXFMetadataGenericDescriptor *descriptor, const MXFPrimerPack *primer, guint16 tag, const guint8 *tag_data, guint16 tag_size);
 void mxf_metadata_mpeg_video_descriptor_reset (MXFMetadataMPEGVideoDescriptor *descriptor);
-gboolean mxf_is_mpeg_video_essence_track (const MXFMetadataTrack *track);
+gboolean mxf_is_mpeg_essence_track (const MXFMetadataTrack *track);
-mxf_mpeg_video_create_caps (MXFMetadataGenericPackage *package, MXFMetadataTrack *track, GstTagList **tags, MXFEssenceElementHandler *handler, gpointer *mapping_data);
+mxf_mpeg_create_caps (MXFMetadataGenericPackage *package, MXFMetadataTrack *track, GstTagList **tags, MXFEssenceElementHandler *handler, gpointer *mapping_data);
 #endif /* __MXF_MPEG_H__ */

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/

_______________________________________________
gstreamer-cvs-verbose mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gstreamer-cvs-verbose
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.