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

[email protected] Thu, 18 Dec 2008 09:49:22 -0800 (PST)
Newsgroups gmane.comp.video.gstreamer.cvs
Message-ID <[email protected]>
CVS Root:       /cvs/gstreamer
Module:         gst-plugins-bad
Changes by:     slomo
Date:           Thu Dec 18 2008  17:49:22 UTC

Log message:
* gst/mxf/Makefile.am:
* gst/mxf/mxf.c: (plugin_init):
* gst/mxf/mxfvc3.c: (mxf_is_vc3_essence_track),
(mxf_vc3_handle_essence_element), (mxf_vc3_create_caps),
(mxf_vc3_init):
* gst/mxf/mxfvc3.h:
Add support for VC-3 (aka DNxHD essence, see SMPTE 2019-4).
This is untested because of lack of sample files but should
work fine.

Modified files:
    .               : ChangeLog
    gst/mxf         : Makefile.am mxf.c
Added files:
    gst/mxf         : mxfvc3.c mxfvc3.h

Links:
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3822&r2=1.3823
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/Makefile.am.diff?r1=1.7&r2=1.8
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxf.c.diff?r1=1.2&r2=1.3
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfvc3.c?rev=1.1&content-type=text/vnd.viewcvs-markup
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mxf/mxfvc3.h?rev=1.1&content-type=text/vnd.viewcvs-markup

====Begin Diffs====
Index: ChangeLog
===================================================================
RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v
retrieving revision 1.3822
retrieving revision 1.3823
diff -u -d -r1.3822 -r1.3823
--- ChangeLog	17 Dec 2008 13:51:44 -0000	1.3822
+++ ChangeLog	18 Dec 2008 17:49:05 -0000	1.3823
@@ -1,3 +1,15 @@
+2008-12-18  Sebastian Dröge  <[email protected]>
+
+	* gst/mxf/Makefile.am:
+	* gst/mxf/mxf.c: (plugin_init):
+	* gst/mxf/mxfvc3.c: (mxf_is_vc3_essence_track),
+	(mxf_vc3_handle_essence_element), (mxf_vc3_create_caps),
+	(mxf_vc3_init):
+	* gst/mxf/mxfvc3.h:
+	Add support for VC-3 (aka DNxHD essence, see SMPTE 2019-4).
+	This is untested because of lack of sample files but should
+	work fine.
 2008-12-17  Wim Taymans  <[email protected]>
 
 	* docs/plugins/Makefile.am:
Index: Makefile.am
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/Makefile.am,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- Makefile.am	15 Dec 2008 17:26:57 -0000	1.7
+++ Makefile.am	18 Dec 2008 17:49:07 -0000	1.8
@@ -11,6 +11,7 @@
 	mxfjpeg2000.c \
 	mxfd10.c \
 	mxfup.c \
+	mxfvc3.c \
 	mxfmetadata.c
 libgstmxf_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
@@ -28,6 +29,7 @@
 	mxfjpeg2000.h \
 	mxfd10.h \
 	mxfup.h \
+	mxfvc3.h \
 	mxftypes.h \
 	mxfmetadata.h
Index: mxf.c
RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mxf/mxf.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- mxf.c	15 Dec 2008 17:26:57 -0000	1.2
+++ mxf.c	18 Dec 2008 17:49:07 -0000	1.3
@@ -31,6 +31,7 @@
 #include "mxfjpeg2000.h"
 #include "mxfd10.h"
 #include "mxfup.h"
+#include "mxfvc3.h"
 GST_DEBUG_CATEGORY (mxf_debug);
 #define GST_CAT_DEFAULT mxf_debug
@@ -46,6 +47,7 @@
   mxf_jpeg2000_init ();
   mxf_d10_init ();
   mxf_up_init ();
+  mxf_vc3_init ();
   if (!gst_element_register (plugin, "mxfdemux", GST_RANK_PRIMARY,
           GST_TYPE_MXF_DEMUX))
--- NEW FILE: mxfvc3.c ---
/* GStreamer
 * Copyright (C) 2008 Sebastian Dröge <[email protected]>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

/* Implementation of SMPTE S2019-4 - Mapping VC-3 coding units into the MXF
 * Generic Container
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <gst/gst.h>
#include <string.h>
#include "mxfvc3.h"
GST_DEBUG_CATEGORY_EXTERN (mxf_debug);
#define GST_CAT_DEFAULT mxf_debug
static gboolean
mxf_is_vc3_essence_track (const MXFMetadataTimelineTrack * track)
{
  guint i;
  g_return_val_if_fail (track != NULL, FALSE);
  if (track->parent.descriptor == NULL)
    return FALSE;
  for (i = 0; i < track->parent.n_descriptor; i++) {
    MXFMetadataFileDescriptor *d = track->parent.descriptor[i];
    MXFUL *key;
    if (!d)
      continue;
    key = &d->essence_container;
    /* SMPTE S2019-4 7 */
    if (mxf_is_generic_container_essence_container_label (key) &&
        key->u[12] == 0x02 && key->u[13] == 0x11 &&
        (key->u[14] == 0x01 || key->u[14] == 0x02))
      return TRUE;
  }
  return FALSE;
}
static GstFlowReturn
mxf_vc3_handle_essence_element (const MXFUL * key, GstBuffer * buffer,
    GstCaps * caps,
    MXFMetadataTimelineTrack * track,
    MXFMetadataStructuralComponent * component, gpointer mapping_data,
    GstBuffer ** outbuf)
  *outbuf = buffer;
  /* SMPTE 2019-4 6.1 */
  if (key->u[12] != 0x15 || (key->u[14] != 0x05 && key->u[14] != 0x06)) {
    GST_ERROR ("Invalid VC-3 essence element");
    return GST_FLOW_ERROR;
  return GST_FLOW_OK;
static GstCaps *
mxf_vc3_create_caps (MXFMetadataTimelineTrack * track, GstTagList ** tags,
    MXFEssenceElementHandleFunc * handler, gpointer * mapping_data)
  MXFMetadataFileDescriptor *f = NULL;
  MXFMetadataGenericPictureEssenceDescriptor *p = NULL;
  GstCaps *caps = NULL;
  g_return_val_if_fail (track != NULL, NULL);
  if (track->parent.descriptor == NULL) {
    GST_ERROR ("No descriptor found for this track");
    return NULL;
    if (!track->parent.descriptor[i])
    if (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (track->parent.
            descriptor[i])) {
      p = (MXFMetadataGenericPictureEssenceDescriptor *) track->
          parent.descriptor[i];
      f = track->parent.descriptor[i];
      break;
    } else if (MXF_IS_METADATA_FILE_DESCRIPTOR (track->parent.descriptor[i]) &&
        !MXF_IS_METADATA_MULTIPLE_DESCRIPTOR (track->parent.descriptor[i])) {
    }
  if (!f) {
  *handler = mxf_vc3_handle_essence_element;
  caps = gst_caps_new_simple ("video/x-dnxhd", NULL);
  if (p) {
    mxf_metadata_generic_picture_essence_descriptor_set_caps (p, caps);
  } else {
    GST_WARNING ("Only a generic file descriptor found");
  if (!*tags)
    *tags = gst_tag_list_new ();
  gst_tag_list_add (*tags, GST_TAG_MERGE_APPEND, GST_TAG_VIDEO_CODEC,
      "VC-3 Video", NULL);
  return caps;
static const MXFEssenceElementHandler mxf_vc3_essence_element_handler = {
  mxf_is_vc3_essence_track,
  mxf_vc3_create_caps
};
void
mxf_vc3_init (void)
  mxf_essence_element_handler_register (&mxf_vc3_essence_element_handler);
--- NEW FILE: mxfvc3.h ---
#ifndef __MXF_VC3_H__
#define __MXF_VC3_H__
#include "mxfparse.h"
void mxf_vc3_init (void);
#endif /* __MXF_VC3_H__ */

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