From: Mark Nauwelaerts Date: Wed, 18 Apr 2012 15:09:45 +0000 (+0200) Subject: dv1394: port to 0.11 X-Git-Tag: 1.19.3~509^2~7109 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=38d571fa57383beef31d946c20e884a057ca199c;p=platform%2Fupstream%2Fgstreamer.git dv1394: port to 0.11 --- diff --git a/configure.ac b/configure.ac index 8e60c28..659c7a2 100644 --- a/configure.ac +++ b/configure.ac @@ -309,7 +309,7 @@ dnl *** plug-ins to include *** dnl Non ported plugins (non-dependant, then dependant) dnl Make sure you have a space before and after all plugins GST_PLUGINS_NONPORTED="deinterlace \ - cairo cairo_gobject dv1394 gdk_pixbuf \ + cairo cairo_gobject gdk_pixbuf \ oss oss4 \ osx_video osx_audio " AC_SUBST(GST_PLUGINS_NONPORTED) diff --git a/ext/raw1394/gst1394probe.c b/ext/raw1394/gst1394probe.c index ee51ba0..1118aad 100644 --- a/ext/raw1394/gst1394probe.c +++ b/ext/raw1394/gst1394probe.c @@ -25,7 +25,8 @@ #include #include "gst1394probe.h" -#include "gst/interfaces/propertyprobe.h" + +#if 0 static GValueArray * gst_1394_get_guid_array (void) @@ -138,3 +139,5 @@ gst_1394_type_add_property_probe_interface (GType type) g_type_add_interface_static (type, GST_TYPE_PROPERTY_PROBE, &probe_iface_info); } + +#endif diff --git a/ext/raw1394/gst1394probe.h b/ext/raw1394/gst1394probe.h index 8436e70..85af8d3 100644 --- a/ext/raw1394/gst1394probe.h +++ b/ext/raw1394/gst1394probe.h @@ -24,7 +24,9 @@ G_BEGIN_DECLS +#if 0 void gst_1394_type_add_property_probe_interface (GType type); +#endif G_END_DECLS diff --git a/ext/raw1394/gstdv1394src.c b/ext/raw1394/gstdv1394src.c index 7c39649..1c769d3 100644 --- a/ext/raw1394/gstdv1394src.c +++ b/ext/raw1394/gstdv1394src.c @@ -142,45 +142,13 @@ static GstFlowReturn gst_dv1394src_create (GstPushSrc * psrc, GstBuffer ** buf); static gboolean gst_dv1394src_query (GstBaseSrc * src, GstQuery * query); static void gst_dv1394src_update_device_name (GstDV1394Src * src); -static void -_do_init (GType type) -{ - static const GInterfaceInfo urihandler_info = { - gst_dv1394src_uri_handler_init, - NULL, - NULL, - }; - g_type_add_interface_static (type, GST_TYPE_URI_HANDLER, &urihandler_info); - - gst_1394_type_add_property_probe_interface (type); - - GST_DEBUG_CATEGORY_INIT (dv1394src_debug, "dv1394src", 0, - "DV firewire source"); -} - -GST_BOILERPLATE_FULL (GstDV1394Src, gst_dv1394src, GstPushSrc, - GST_TYPE_PUSH_SRC, _do_init); - +#define gst_dv1394src_parent_class parent_class +G_DEFINE_TYPE_WITH_CODE (GstDV1394Src, gst_dv1394src, GST_TYPE_PUSH_SRC, + G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER, + gst_dv1394src_uri_handler_init)); static guint gst_dv1394src_signals[LAST_SIGNAL] = { 0 }; - -static void -gst_dv1394src_base_init (gpointer g_class) -{ - GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); - - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&src_factory)); - - gst_element_class_set_static_metadata (element_class, - "Firewire (1394) DV video source", "Source/Video", - "Source for DV video data from firewire port", - "Erik Walthinsen , " - "Daniel Fischer , " "Wim Taymans , " - "Zaheer Abbas Merali "); -} - static void gst_dv1394src_class_init (GstDV1394SrcClass * klass) { @@ -251,10 +219,23 @@ gst_dv1394src_class_init (GstDV1394SrcClass * klass) gstbasesrc_class->query = gst_dv1394src_query; gstpushsrc_class->create = gst_dv1394src_create; + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&src_factory)); + + gst_element_class_set_static_metadata (gstelement_class, + "Firewire (1394) DV video source", "Source/Video", + "Source for DV video data from firewire port", + "Erik Walthinsen , " + "Daniel Fischer , " "Wim Taymans , " + "Zaheer Abbas Merali "); + + GST_DEBUG_CATEGORY_INIT (dv1394src_debug, "dv1394src", 0, + "DV firewire source"); } static void -gst_dv1394src_init (GstDV1394Src * dv1394src, GstDV1394SrcClass * klass) +gst_dv1394src_init (GstDV1394Src * dv1394src) { GstPad *srcpad = GST_BASE_SRC_PAD (dv1394src); @@ -443,7 +424,7 @@ gst_dv1394src_iec61883_receive (unsigned char *data, int len, { GstDV1394Src *dv1394src = GST_DV1394SRC (cbdata); - if (G_UNLIKELY (!GST_PAD_CAPS (GST_BASE_SRC_PAD (dv1394src)))) { + if (G_UNLIKELY (!gst_pad_has_current_caps (GST_BASE_SRC_PAD (dv1394src)))) { GstCaps *caps; unsigned char *p = data; @@ -474,14 +455,12 @@ gst_dv1394src_iec61883_receive (unsigned char *data, int len, if (G_LIKELY ((dv1394src->frame_sequence + 1) % (dv1394src->skip + dv1394src->consecutive) < dv1394src->consecutive)) { if (complete && len == dv1394src->frame_size) { - guint8 *bufdata; GstBuffer *buf; buf = gst_buffer_new_and_alloc (dv1394src->frame_size); GST_BUFFER_OFFSET (buf) = dv1394src->frame_sequence; - bufdata = GST_BUFFER_DATA (buf); - memcpy (bufdata, data, len); + gst_buffer_fill (buf, 0, data, len); dv1394src->buf = buf; } } @@ -667,7 +646,6 @@ static GstFlowReturn gst_dv1394src_create (GstPushSrc * psrc, GstBuffer ** buf) { GstDV1394Src *dv1394src = GST_DV1394SRC (psrc); - GstCaps *caps; struct pollfd pollfds[2]; pollfds[0].fd = raw1394_get_fd (dv1394src->handle); @@ -709,10 +687,6 @@ gst_dv1394src_create (GstPushSrc * psrc, GstBuffer ** buf) g_assert (dv1394src->buf); - caps = gst_pad_get_caps (GST_BASE_SRC_PAD (psrc)); - gst_buffer_set_caps (dv1394src->buf, caps); - gst_caps_unref (caps); - *buf = dv1394src->buf; dv1394src->buf = NULL; return GST_FLOW_OK; @@ -1075,21 +1049,21 @@ gethandle_failed: /*** GSTURIHANDLER INTERFACE *************************************************/ -static guint -gst_dv1394src_uri_get_type (void) +static GstURIType +gst_dv1394src_uri_get_type (GType type) { return GST_URI_SRC; } -static gchar ** -gst_dv1394src_uri_get_protocols (void) +static const gchar *const * +gst_dv1394src_uri_get_protocols (GType type) { - static gchar *protocols[] = { (char *) "dv", NULL }; + static const gchar *protocols[] = { (char *) "dv", NULL }; return protocols; } -static const gchar * +static gchar * gst_dv1394src_uri_get_uri (GstURIHandler * handler) { GstDV1394Src *gst_dv1394src = GST_DV1394SRC (handler); @@ -1098,7 +1072,8 @@ gst_dv1394src_uri_get_uri (GstURIHandler * handler) } static gboolean -gst_dv1394src_uri_set_uri (GstURIHandler * handler, const gchar * uri) +gst_dv1394src_uri_set_uri (GstURIHandler * handler, const gchar * uri, + GError ** error) { gchar *protocol, *location; gboolean ret = TRUE; @@ -1107,6 +1082,7 @@ gst_dv1394src_uri_set_uri (GstURIHandler * handler, const gchar * uri) protocol = gst_uri_get_protocol (uri); if (strcmp (protocol, "dv") != 0) { g_free (protocol); + g_set_error (error, GST_URI_ERROR, GST_URI_ERROR_BAD_URI, "Invalid DV URI"); return FALSE; } g_free (protocol); diff --git a/ext/raw1394/gsthdv1394src.c b/ext/raw1394/gsthdv1394src.c index eb5d044..9197972 100644 --- a/ext/raw1394/gsthdv1394src.c +++ b/ext/raw1394/gsthdv1394src.c @@ -115,48 +115,21 @@ static GstFlowReturn gst_hdv1394src_create (GstPushSrc * psrc, static void gst_hdv1394src_update_device_name (GstHDV1394Src * src); -static void -_do_init (GType type) -{ - static const GInterfaceInfo urihandler_info = { - gst_hdv1394src_uri_handler_init, - NULL, - NULL, - }; - g_type_add_interface_static (type, GST_TYPE_URI_HANDLER, &urihandler_info); - - gst_1394_type_add_property_probe_interface (type); - - GST_DEBUG_CATEGORY_INIT (hdv1394src_debug, "hdv1394src", 0, - "MPEG-TS firewire source"); -} - -GST_BOILERPLATE_FULL (GstHDV1394Src, gst_hdv1394src, GstPushSrc, - GST_TYPE_PUSH_SRC, _do_init); - - -static void -gst_hdv1394src_base_init (gpointer g_class) -{ - GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); - - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&src_factory)); - - gst_element_class_set_static_metadata (element_class, - "Firewire (1394) HDV video source", "Source/Video", - "Source for MPEG-TS video data from firewire port", - "Edward Hervey "); -} +#define gst_hdv1394src_parent_class parent_class +G_DEFINE_TYPE_WITH_CODE (GstHDV1394Src, gst_hdv1394src, GST_TYPE_PUSH_SRC, + G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER, + gst_hdv1394src_uri_handler_init)); static void gst_hdv1394src_class_init (GstHDV1394SrcClass * klass) { GObjectClass *gobject_class; + GstElementClass *gstelement_class; GstBaseSrcClass *gstbasesrc_class; GstPushSrcClass *gstpushsrc_class; gobject_class = (GObjectClass *) klass; + gstelement_class = (GstElementClass *) klass; gstbasesrc_class = (GstBaseSrcClass *) klass; gstpushsrc_class = (GstPushSrcClass *) klass; @@ -196,10 +169,21 @@ gst_hdv1394src_class_init (GstHDV1394SrcClass * klass) gstbasesrc_class->unlock = gst_hdv1394src_unlock; gstpushsrc_class->create = gst_hdv1394src_create; + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&src_factory)); + + gst_element_class_set_static_metadata (gstelement_class, + "Firewire (1394) HDV video source", "Source/Video", + "Source for MPEG-TS video data from firewire port", + "Edward Hervey "); + + GST_DEBUG_CATEGORY_INIT (hdv1394src_debug, "hdv1394src", 0, + "MPEG-TS firewire source"); } static void -gst_hdv1394src_init (GstHDV1394Src * dv1394src, GstHDV1394SrcClass * klass) +gst_hdv1394src_init (GstHDV1394Src * dv1394src) { GstPad *srcpad = GST_BASE_SRC_PAD (dv1394src); @@ -387,7 +371,6 @@ static GstFlowReturn gst_hdv1394src_create (GstPushSrc * psrc, GstBuffer ** buf) { GstHDV1394Src *dv1394src = GST_HDV1394SRC (psrc); - GstCaps *caps; struct pollfd pollfds[2]; pollfds[0].fd = raw1394_get_fd (dv1394src->handle); @@ -439,17 +422,10 @@ gst_hdv1394src_create (GstPushSrc * psrc, GstBuffer ** buf) GST_LOG ("We have some frames (%u bytes)", (guint) dv1394src->outoffset); /* Create the buffer */ - *buf = gst_buffer_new (); - GST_BUFFER_DATA (*buf) = dv1394src->outdata; - GST_BUFFER_MALLOCDATA (*buf) = dv1394src->outdata; - GST_BUFFER_SIZE (*buf) = dv1394src->outoffset; + *buf = gst_buffer_new_wrapped (dv1394src->outdata, dv1394src->outoffset); dv1394src->outdata = NULL; dv1394src->outoffset = 0; - caps = gst_pad_get_caps (GST_BASE_SRC_PAD (psrc)); - gst_buffer_set_caps (*buf, caps); - gst_caps_unref (caps); - return GST_FLOW_OK; error_while_polling: @@ -785,21 +761,21 @@ gethandle_failed: /*** GSTURIHANDLER INTERFACE *************************************************/ -static guint -gst_hdv1394src_uri_get_type (void) +static GstURIType +gst_hdv1394src_uri_get_type (GType type) { return GST_URI_SRC; } -static gchar ** -gst_hdv1394src_uri_get_protocols (void) +static const gchar *const * +gst_hdv1394src_uri_get_protocols (GType type) { - static gchar *protocols[] = { (char *) "hdv", NULL }; + static const gchar *protocols[] = { (char *) "hdv", NULL }; return protocols; } -static const gchar * +static gchar * gst_hdv1394src_uri_get_uri (GstURIHandler * handler) { GstHDV1394Src *gst_hdv1394src = GST_HDV1394SRC (handler); @@ -808,7 +784,8 @@ gst_hdv1394src_uri_get_uri (GstURIHandler * handler) } static gboolean -gst_hdv1394src_uri_set_uri (GstURIHandler * handler, const gchar * uri) +gst_hdv1394src_uri_set_uri (GstURIHandler * handler, const gchar * uri, + GError ** error) { gchar *protocol, *location; gboolean ret = TRUE; @@ -817,6 +794,8 @@ gst_hdv1394src_uri_set_uri (GstURIHandler * handler, const gchar * uri) protocol = gst_uri_get_protocol (uri); if (strcmp (protocol, "hdv") != 0) { g_free (protocol); + g_set_error (error, GST_URI_ERROR, GST_URI_ERROR_BAD_URI, + "Invalid HDV URI"); return FALSE; } g_free (protocol);