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:           Tue Nov 25 2008  14:49:48 UTC

Log message:
* gst/mxf/mxfmpeg.c: (mxf_mpeg_video_create_caps):
* gst/mxf/mxfparse.c:
(mxf_metadata_generic_picture_essence_descriptor_set_caps):
* gst/mxf/mxfparse.h:
Set video dimensions and pixel aspect ratio on the caps.

Modified files:
    .               : ChangeLog
    gst/mxf         : mxfmpeg.c mxfparse.c mxfparse.h

Links:
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3740&r2=1.3741
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfmpeg.c.diff?r1=1.3&r2=1.4
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.c.diff?r1=1.6&r2=1.7
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.h.diff?r1=1.4&r2=1.5

====Begin Diffs====
Index: ChangeLog
===================================================================
RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v
retrieving revision 1.3740
retrieving revision 1.3741
diff -u -d -r1.3740 -r1.3741
--- ChangeLog	25 Nov 2008 10:26:09 -0000	1.3740
+++ ChangeLog	25 Nov 2008 14:49:31 -0000	1.3741
@@ -1,5 +1,13 @@
 2008-11-25  Sebastian Dröge  <[email protected]>
 
+	* gst/mxf/mxfmpeg.c: (mxf_mpeg_video_create_caps):
+	* gst/mxf/mxfparse.c:
+	(mxf_metadata_generic_picture_essence_descriptor_set_caps):
+	* gst/mxf/mxfparse.h:
+	Set video dimensions and pixel aspect ratio on the caps.
+
+2008-11-25  Sebastian Dröge  <[email protected]>
 	* gst/mxf/mxfdemux.c: (gst_mxf_demux_reset_metadata),
 	(gst_mxf_demux_handle_metadata_generic_descriptor),
 	(gst_mxf_demux_handle_metadata_file_descriptor),
Index: mxfmpeg.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfmpeg.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- mxfmpeg.c	25 Nov 2008 09:38:26 -0000	1.3
+++ mxfmpeg.c	25 Nov 2008 14:49:34 -0000	1.4
@@ -23,6 +23,7 @@
 /* TODO:
  * - Handle PES streams
+ * - Fix TS/PS demuxers to forward timestamps
  */
 #ifdef HAVE_CONFIG_H
@@ -242,7 +243,9 @@
 {
   MXFMetadataMPEGVideoDescriptor *d = NULL;
   MXFMetadataFileDescriptor *f = NULL;
+  MXFMetadataGenericPictureEssenceDescriptor *p = NULL;
   guint i;
+  GstCaps *caps = NULL;
   g_return_val_if_fail (package != NULL, NULL);
   g_return_val_if_fail (track != NULL, NULL);
@@ -257,12 +260,16 @@
         MXF_METADATA_MPEG_VIDEO_DESCRIPTOR) {
       d = (MXFMetadataMPEGVideoDescriptor *) track->descriptor[i];
       f = track->descriptor[i];
+      p = (MXFMetadataGenericPictureEssenceDescriptor *) track->descriptor[i];
+      break;
+    } else if (((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
+        MXF_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR ||
+        ((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
+        MXF_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR) {
+      f = track->descriptor[i];
       break;
     } else if (((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
-        MXF_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR
-        || ((MXFMetadataGenericDescriptor *) track->descriptor[i])->type ==
-        MXF_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR
         MXF_METADATA_FILE_DESCRIPTOR) {
     }
@@ -278,7 +285,7 @@
   if (f->essence_container.u[13] == 0x04) {
     /* FIXME: get mpeg version somehow */
     GST_DEBUG ("Found MPEG ES stream");
-    return gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1,
+    caps = gst_caps_new_simple ("video/mpeg", "mpegversion", G_TYPE_INT, 1,
         "systemstream", G_TYPE_BOOLEAN, FALSE, NULL);
   } else if (f->essence_container.u[13] == 0x07) {
     GST_ERROR ("MPEG PES streams not supported yet");
@@ -286,11 +293,16 @@
   } else if (f->essence_container.u[13] == 0x08) {
     GST_DEBUG ("Found MPEG PS stream");
         "systemstream", G_TYPE_BOOLEAN, TRUE, NULL);
   } else if (f->essence_container.u[13] == 0x09) {
     GST_DEBUG ("Found MPEG TS stream");
-    return gst_caps_new_simple ("video/mpegts", NULL);
+    caps = gst_caps_new_simple ("video/mpegts", NULL);
   }
-  return NULL;
+  if (p)
+    mxf_metadata_generic_picture_essence_descriptor_set_caps (p, caps);
+  return caps;
 }
Index: mxfparse.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- mxfparse.c	25 Nov 2008 10:26:11 -0000	1.6
+++ mxfparse.c	25 Nov 2008 14:49:34 -0000	1.7
@@ -2278,11 +2278,38 @@
   memset (descriptor, 0, sizeof (MXFMetadataGenericPictureEssenceDescriptor));
+void mxf_metadata_generic_picture_essence_descriptor_set_caps
+    (MXFMetadataGenericPictureEssenceDescriptor * descriptor, GstCaps * caps)
+{
+  guint par_n, par_d;
+  guint width, height;
+  g_return_if_fail (descriptor != NULL);
+  g_return_if_fail (GST_IS_CAPS (caps));
+  width = descriptor->stored_width;
+  height = descriptor->stored_height;
+  if (width == 0 || height == 0)
+    return;
+  gst_caps_set_simple (caps, "width", G_TYPE_INT, width, "height", G_TYPE_INT,
+      height, NULL);
+  if (descriptor->aspect_ratio.n == 0 || descriptor->aspect_ratio.d == 0)
+  par_n = height * descriptor->aspect_ratio.n;
+  par_d = width * descriptor->aspect_ratio.d;
+  gst_caps_set_simple (caps, "pixel-aspect-ratio", GST_TYPE_FRACTION,
+      par_n, par_d, NULL);
+}
 gboolean
     mxf_metadata_cdci_picture_essence_descriptor_handle_tag
     (MXFMetadataGenericDescriptor * d, const MXFPrimerPack * primer,
-    guint16 tag, const guint8 * tag_data, guint16 tag_size)
-{
+    guint16 tag, const guint8 * tag_data, guint16 tag_size) {
   MXFMetadataCDCIPictureEssenceDescriptor *descriptor =
       (MXFMetadataCDCIPictureEssenceDescriptor *) d;
   gboolean ret = FALSE;
Index: mxfparse.h
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxfparse.h,v
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- mxfparse.h	25 Nov 2008 10:26:11 -0000	1.4
+++ mxfparse.h	25 Nov 2008 14:49:34 -0000	1.5
@@ -126,6 +126,7 @@
 gboolean mxf_metadata_generic_picture_essence_descriptor_handle_tag (MXFMetadataGenericDescriptor *descriptor,
     const MXFPrimerPack *primer, guint16 tag, const guint8 *tag_data, guint16 tag_size);
 void mxf_metadata_generic_picture_essence_descriptor_reset (MXFMetadataGenericPictureEssenceDescriptor *descriptor);
+void mxf_metadata_generic_picture_essence_descriptor_set_caps (MXFMetadataGenericPictureEssenceDescriptor *descriptor, GstCaps *caps);
 gboolean mxf_metadata_cdci_picture_essence_descriptor_handle_tag (MXFMetadataGenericDescriptor *descriptor,

-------------------------------------------------------------------------
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.