mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
funnel: Integrate into the build system and rename the types
This commit is contained in:
parent
e5a857e78a
commit
565efa30ea
11 changed files with 158 additions and 124 deletions
|
@ -24,6 +24,7 @@
|
||||||
<xi:include href="xml/element-fdsrc.xml" />
|
<xi:include href="xml/element-fdsrc.xml" />
|
||||||
<xi:include href="xml/element-filesrc.xml" />
|
<xi:include href="xml/element-filesrc.xml" />
|
||||||
<xi:include href="xml/element-filesink.xml" />
|
<xi:include href="xml/element-filesink.xml" />
|
||||||
|
<xi:include href="xml/element-funnel.xml" />
|
||||||
<xi:include href="xml/element-identity.xml" />
|
<xi:include href="xml/element-identity.xml" />
|
||||||
<xi:include href="xml/element-input-selector.xml" />
|
<xi:include href="xml/element-input-selector.xml" />
|
||||||
<xi:include href="xml/element-multiqueue.xml" />
|
<xi:include href="xml/element-multiqueue.xml" />
|
||||||
|
|
|
@ -95,6 +95,21 @@ GST_IS_FILE_SINK_CLASS
|
||||||
gst_file_sink_get_type
|
gst_file_sink_get_type
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
|
<SECTION>
|
||||||
|
<FILE>element-funnel</FILE>
|
||||||
|
<TITLE>funnel</TITLE>
|
||||||
|
GstFunnel
|
||||||
|
<SUBSECTION Standard>
|
||||||
|
GstFunnelClass
|
||||||
|
GST_FUNNEL
|
||||||
|
GST_IS_FUNNEL
|
||||||
|
GST_TYPE_FUNNEL
|
||||||
|
GST_FUNNEL_CLASS
|
||||||
|
GST_IS_FUNNEL_CLASS
|
||||||
|
<SUBSECTION Private>
|
||||||
|
gst_funnel_get_type
|
||||||
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>element-capsfilter</FILE>
|
<FILE>element-capsfilter</FILE>
|
||||||
<TITLE>capsfilter</TITLE>
|
<TITLE>capsfilter</TITLE>
|
||||||
|
|
|
@ -1,43 +1,44 @@
|
||||||
GObject
|
GObject
|
||||||
GstObject
|
GstObject
|
||||||
GstBus
|
GstPad
|
||||||
GstClock
|
GstPadTemplate
|
||||||
|
GstPluginFeature
|
||||||
|
GstElementFactory
|
||||||
|
GstTypeFindFactory
|
||||||
|
GstIndexFactory
|
||||||
GstElement
|
GstElement
|
||||||
|
GstBin
|
||||||
|
GstPipeline
|
||||||
|
GstBaseTransform
|
||||||
|
GstCapsFilter
|
||||||
|
GstIdentity
|
||||||
|
GstBaseSrc
|
||||||
|
GstFakeSrc
|
||||||
|
GstPushSrc
|
||||||
|
GstFdSrc
|
||||||
|
GstFileSrc
|
||||||
GstBaseSink
|
GstBaseSink
|
||||||
GstFakeSink
|
GstFakeSink
|
||||||
GstFdSink
|
GstFdSink
|
||||||
GstFileSink
|
GstFileSink
|
||||||
GstBaseSrc
|
GstFunnel
|
||||||
GstFakeSrc
|
|
||||||
GstFileSrc
|
|
||||||
GstPushSrc
|
|
||||||
GstFdSrc
|
|
||||||
GstBaseTransform
|
|
||||||
GstCapsFilter
|
|
||||||
GstIdentity
|
|
||||||
GstBin
|
|
||||||
GstPipeline
|
|
||||||
GstInputSelector
|
GstInputSelector
|
||||||
GstMultiQueue
|
|
||||||
GstOutputSelector
|
GstOutputSelector
|
||||||
GstQueue
|
GstQueue
|
||||||
GstQueue2
|
GstQueue2
|
||||||
GstTee
|
GstTee
|
||||||
GstTypeFindElement
|
GstTypeFindElement
|
||||||
|
GstMultiQueue
|
||||||
GstValve
|
GstValve
|
||||||
GstIndex
|
GstBus
|
||||||
GstFileIndex
|
|
||||||
GstMemIndex
|
|
||||||
GstPad
|
|
||||||
GstPadTemplate
|
|
||||||
GstPlugin
|
|
||||||
GstPluginFeature
|
|
||||||
GstElementFactory
|
|
||||||
GstIndexFactory
|
|
||||||
GstTypeFindFactory
|
|
||||||
GstRegistry
|
|
||||||
GstTask
|
GstTask
|
||||||
GstTaskPool
|
GstTaskPool
|
||||||
|
GstClock
|
||||||
|
GstPlugin
|
||||||
|
GstRegistry
|
||||||
|
GstIndex
|
||||||
|
GstMemIndex
|
||||||
|
GstFileIndex
|
||||||
GstSignalObject
|
GstSignalObject
|
||||||
GInterface
|
GInterface
|
||||||
GTypePlugin
|
GTypePlugin
|
||||||
|
|
|
@ -120,6 +120,27 @@
|
||||||
</caps>
|
</caps>
|
||||||
</pads>
|
</pads>
|
||||||
</element>
|
</element>
|
||||||
|
<element>
|
||||||
|
<name>funnel</name>
|
||||||
|
<longname>Farsight Funnel pipe fitting</longname>
|
||||||
|
<class>Generic</class>
|
||||||
|
<description>N-to-1 pipe fitting</description>
|
||||||
|
<author>Olivier Crete <olivier.crete@collabora.co.uk></author>
|
||||||
|
<pads>
|
||||||
|
<caps>
|
||||||
|
<name>sink%d</name>
|
||||||
|
<direction>sink</direction>
|
||||||
|
<presence>request</presence>
|
||||||
|
<details>ANY</details>
|
||||||
|
</caps>
|
||||||
|
<caps>
|
||||||
|
<name>src</name>
|
||||||
|
<direction>source</direction>
|
||||||
|
<presence>always</presence>
|
||||||
|
<details>ANY</details>
|
||||||
|
</caps>
|
||||||
|
</pads>
|
||||||
|
</element>
|
||||||
<element>
|
<element>
|
||||||
<name>identity</name>
|
<name>identity</name>
|
||||||
<longname>Identity</longname>
|
<longname>Identity</longname>
|
||||||
|
|
12
docs/plugins/inspect/plugin-staticelements.xml
Normal file
12
docs/plugins/inspect/plugin-staticelements.xml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<plugin>
|
||||||
|
<name>staticelements</name> <description>core elements linked into the GStreamer library</description> <filename></filename> <basename></basename> <version>0.10.29.1</version> <license>LGPL</license> <source>gstreamer</source> <package>GStreamer git</package> <origin>Unknown package origin</origin> <elements>
|
||||||
|
<element>
|
||||||
|
<name>bin</name> <longname>Generic bin</longname> <class>Generic/Bin</class> <description>Simple container object</description> <author>Erik Walthinsen <omega@cse.ogi.edu>,Wim Taymans <wim.taymans@gmail.com></author> <pads>
|
||||||
|
</pads>
|
||||||
|
</element>
|
||||||
|
<element>
|
||||||
|
<name>pipeline</name> <longname>Pipeline object</longname> <class>Generic/Bin</class> <description>Complete pipeline object</description> <author>Erik Walthinsen <omega@cse.ogi.edu>, Wim Taymans <wim@fluendo.com></author> <pads>
|
||||||
|
</pads>
|
||||||
|
</element>
|
||||||
|
</elements>
|
||||||
|
</plugin>
|
|
@ -11,6 +11,7 @@ libgstcoreelements_la_SOURCES = \
|
||||||
gstfdsink.c \
|
gstfdsink.c \
|
||||||
gstfilesink.c \
|
gstfilesink.c \
|
||||||
gstfilesrc.c \
|
gstfilesrc.c \
|
||||||
|
gstfunnel.c \
|
||||||
gstidentity.c \
|
gstidentity.c \
|
||||||
gstinputselector.c \
|
gstinputselector.c \
|
||||||
gstoutputselector.c \
|
gstoutputselector.c \
|
||||||
|
@ -36,6 +37,7 @@ noinst_HEADERS = \
|
||||||
gstfdsink.h \
|
gstfdsink.h \
|
||||||
gstfilesink.h \
|
gstfilesink.h \
|
||||||
gstfilesrc.h \
|
gstfilesrc.h \
|
||||||
|
gstfunnel.h \
|
||||||
gstidentity.h \
|
gstidentity.h \
|
||||||
gstinputselector.h \
|
gstinputselector.h \
|
||||||
gstoutputselector.h \
|
gstoutputselector.h \
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "gstfdsink.h"
|
#include "gstfdsink.h"
|
||||||
#include "gstfilesink.h"
|
#include "gstfilesink.h"
|
||||||
#include "gstfilesrc.h"
|
#include "gstfilesrc.h"
|
||||||
|
#include "gstfunnel.h"
|
||||||
#include "gstidentity.h"
|
#include "gstidentity.h"
|
||||||
#include "gstinputselector.h"
|
#include "gstinputselector.h"
|
||||||
#include "gstoutputselector.h"
|
#include "gstoutputselector.h"
|
||||||
|
@ -61,6 +62,7 @@ static struct _elements_entry _elements[] = {
|
||||||
{"fdsink", GST_RANK_NONE, gst_fd_sink_get_type},
|
{"fdsink", GST_RANK_NONE, gst_fd_sink_get_type},
|
||||||
#endif
|
#endif
|
||||||
{"filesrc", GST_RANK_PRIMARY, gst_file_src_get_type},
|
{"filesrc", GST_RANK_PRIMARY, gst_file_src_get_type},
|
||||||
|
{"funnel", GST_RANK_NONE, gst_funnel_get_type},
|
||||||
{"identity", GST_RANK_NONE, gst_identity_get_type},
|
{"identity", GST_RANK_NONE, gst_identity_get_type},
|
||||||
{"input-selector", GST_RANK_NONE, gst_input_selector_get_type},
|
{"input-selector", GST_RANK_NONE, gst_input_selector_get_type},
|
||||||
{"output-selector", GST_RANK_NONE, gst_output_selector_get_type},
|
{"output-selector", GST_RANK_NONE, gst_output_selector_get_type},
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
/*
|
/*
|
||||||
* Farsight2 - Farsight Funnel element
|
* GStreamer Funnel element
|
||||||
*
|
*
|
||||||
* Copyright 2007 Collabora Ltd.
|
* Copyright 2007 Collabora Ltd.
|
||||||
* @author: Olivier Crete <olivier.crete@collabora.co.uk>
|
* @author: Olivier Crete <olivier.crete@collabora.co.uk>
|
||||||
* Copyright 2007 Nokia Corp.
|
* Copyright 2007 Nokia Corp.
|
||||||
*
|
*
|
||||||
* fs-funnel.c: Simple Funnel element
|
* gstfunnel.c: Simple Funnel element
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -23,26 +23,20 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SECTION:element-fsfunnel
|
* SECTION:element-funnel
|
||||||
* @short_description: N-to-1 simple funnel
|
* @short_description: N-to-1 simple funnel
|
||||||
*
|
*
|
||||||
* Takes packets from various input sinks into one output source
|
* Takes packets from various input sinks into one output source
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
# include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "fs-funnel.h"
|
#include "gstfunnel.h"
|
||||||
|
|
||||||
GST_DEBUG_CATEGORY_STATIC (fs_funnel_debug);
|
GST_DEBUG_CATEGORY_STATIC (gst_funnel_debug);
|
||||||
#define GST_CAT_DEFAULT fs_funnel_debug
|
#define GST_CAT_DEFAULT gst_funnel_debug
|
||||||
|
|
||||||
static const GstElementDetails fs_funnel_details =
|
|
||||||
GST_ELEMENT_DETAILS ("Farsight Funnel pipe fitting",
|
|
||||||
"Generic",
|
|
||||||
"N-to-1 pipe fitting",
|
|
||||||
"Olivier Crete <olivier.crete@collabora.co.uk>");
|
|
||||||
|
|
||||||
static GstStaticPadTemplate funnel_sink_template =
|
static GstStaticPadTemplate funnel_sink_template =
|
||||||
GST_STATIC_PAD_TEMPLATE ("sink%d",
|
GST_STATIC_PAD_TEMPLATE ("sink%d",
|
||||||
|
@ -56,44 +50,43 @@ GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
GST_PAD_ALWAYS,
|
GST_PAD_ALWAYS,
|
||||||
GST_STATIC_CAPS_ANY);
|
GST_STATIC_CAPS_ANY);
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_do_init (GType type)
|
_do_init (GType type)
|
||||||
{
|
{
|
||||||
GST_DEBUG_CATEGORY_INIT (fs_funnel_debug, "fsfunnel", 0, "fsfunnel element");
|
GST_DEBUG_CATEGORY_INIT (gst_funnel_debug, "funnel", 0, "funnel element");
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_BOILERPLATE_FULL (FsFunnel, fs_funnel, GstElement, GST_TYPE_ELEMENT,
|
GST_BOILERPLATE_FULL (GstFunnel, gst_funnel, GstElement, GST_TYPE_ELEMENT,
|
||||||
_do_init);
|
_do_init);
|
||||||
|
|
||||||
|
static GstStateChangeReturn gst_funnel_change_state (GstElement * element,
|
||||||
|
|
||||||
static GstStateChangeReturn fs_funnel_change_state (GstElement * element,
|
|
||||||
GstStateChange transition);
|
GstStateChange transition);
|
||||||
|
|
||||||
static GstPad *fs_funnel_request_new_pad (GstElement * element,
|
static GstPad *gst_funnel_request_new_pad (GstElement * element,
|
||||||
GstPadTemplate * templ, const gchar * name);
|
GstPadTemplate * templ, const gchar * name);
|
||||||
static void fs_funnel_release_pad (GstElement * element, GstPad * pad);
|
static void gst_funnel_release_pad (GstElement * element, GstPad * pad);
|
||||||
|
|
||||||
static GstFlowReturn fs_funnel_buffer_alloc (GstPad * pad, guint64 offset,
|
static GstFlowReturn gst_funnel_buffer_alloc (GstPad * pad, guint64 offset,
|
||||||
guint size, GstCaps * caps, GstBuffer ** buf);
|
guint size, GstCaps * caps, GstBuffer ** buf);
|
||||||
static GstFlowReturn fs_funnel_chain (GstPad * pad, GstBuffer * buffer);
|
static GstFlowReturn gst_funnel_chain (GstPad * pad, GstBuffer * buffer);
|
||||||
static gboolean fs_funnel_event (GstPad * pad, GstEvent * event);
|
static gboolean gst_funnel_event (GstPad * pad, GstEvent * event);
|
||||||
static gboolean fs_funnel_src_event (GstPad * pad, GstEvent * event);
|
static gboolean gst_funnel_src_event (GstPad * pad, GstEvent * event);
|
||||||
static GstCaps *fs_funnel_getcaps (GstPad * pad);
|
static GstCaps *gst_funnel_getcaps (GstPad * pad);
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
GstSegment segment;
|
GstSegment segment;
|
||||||
} FsFunnelPadPrivate;
|
} GstFunnelPadPrivate;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fs_funnel_base_init (gpointer g_class)
|
gst_funnel_base_init (gpointer g_class)
|
||||||
{
|
{
|
||||||
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (g_class);
|
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (g_class);
|
||||||
|
|
||||||
gst_element_class_set_details (gstelement_class, &fs_funnel_details);
|
gst_element_class_set_details_simple (gstelement_class,
|
||||||
|
"Farsight Funnel pipe fitting", "Generic", "N-to-1 pipe fitting",
|
||||||
|
"Olivier Crete <olivier.crete@collabora.co.uk>");
|
||||||
|
|
||||||
gst_element_class_add_pad_template (gstelement_class,
|
gst_element_class_add_pad_template (gstelement_class,
|
||||||
gst_static_pad_template_get (&funnel_sink_template));
|
gst_static_pad_template_get (&funnel_sink_template));
|
||||||
|
@ -103,7 +96,7 @@ fs_funnel_base_init (gpointer g_class)
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fs_funnel_dispose (GObject * object)
|
gst_funnel_dispose (GObject * object)
|
||||||
{
|
{
|
||||||
GList *item;
|
GList *item;
|
||||||
|
|
||||||
|
@ -121,34 +114,34 @@ restart:
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fs_funnel_class_init (FsFunnelClass * klass)
|
gst_funnel_class_init (GstFunnelClass * klass)
|
||||||
{
|
{
|
||||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||||
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
|
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
|
||||||
|
|
||||||
gobject_class->dispose = GST_DEBUG_FUNCPTR (fs_funnel_dispose);
|
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_funnel_dispose);
|
||||||
|
|
||||||
gstelement_class->request_new_pad =
|
gstelement_class->request_new_pad =
|
||||||
GST_DEBUG_FUNCPTR (fs_funnel_request_new_pad);
|
GST_DEBUG_FUNCPTR (gst_funnel_request_new_pad);
|
||||||
gstelement_class->release_pad = GST_DEBUG_FUNCPTR (fs_funnel_release_pad);
|
gstelement_class->release_pad = GST_DEBUG_FUNCPTR (gst_funnel_release_pad);
|
||||||
gstelement_class->change_state = GST_DEBUG_FUNCPTR (fs_funnel_change_state);
|
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_funnel_change_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fs_funnel_init (FsFunnel * funnel, FsFunnelClass * g_class)
|
gst_funnel_init (GstFunnel * funnel, GstFunnelClass * g_class)
|
||||||
{
|
{
|
||||||
funnel->srcpad = gst_pad_new_from_static_template (&funnel_src_template,
|
funnel->srcpad = gst_pad_new_from_static_template (&funnel_src_template,
|
||||||
"src");
|
"src");
|
||||||
gst_pad_set_event_function (funnel->srcpad, fs_funnel_src_event);
|
gst_pad_set_event_function (funnel->srcpad, gst_funnel_src_event);
|
||||||
gst_pad_use_fixed_caps (funnel->srcpad);
|
gst_pad_use_fixed_caps (funnel->srcpad);
|
||||||
gst_element_add_pad (GST_ELEMENT (funnel), funnel->srcpad);
|
gst_element_add_pad (GST_ELEMENT (funnel), funnel->srcpad);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
fs_funnel_buffer_alloc (GstPad * pad, guint64 offset, guint size,
|
gst_funnel_buffer_alloc (GstPad * pad, guint64 offset, guint size,
|
||||||
GstCaps * caps, GstBuffer ** buf)
|
GstCaps * caps, GstBuffer ** buf)
|
||||||
{
|
{
|
||||||
FsFunnel *funnel = FS_FUNNEL (gst_pad_get_parent_element (pad));
|
GstFunnel *funnel = GST_FUNNEL (gst_pad_get_parent_element (pad));
|
||||||
GstFlowReturn ret = GST_FLOW_OK;
|
GstFlowReturn ret = GST_FLOW_OK;
|
||||||
|
|
||||||
ret = gst_pad_alloc_buffer (funnel->srcpad, offset, size, caps, buf);
|
ret = gst_pad_alloc_buffer (funnel->srcpad, offset, size, caps, buf);
|
||||||
|
@ -160,21 +153,22 @@ fs_funnel_buffer_alloc (GstPad * pad, guint64 offset, guint size,
|
||||||
|
|
||||||
|
|
||||||
static GstPad *
|
static GstPad *
|
||||||
fs_funnel_request_new_pad (GstElement * element, GstPadTemplate * templ,
|
gst_funnel_request_new_pad (GstElement * element, GstPadTemplate * templ,
|
||||||
const gchar * name)
|
const gchar * name)
|
||||||
{
|
{
|
||||||
GstPad *sinkpad;
|
GstPad *sinkpad;
|
||||||
FsFunnelPadPrivate *priv = g_slice_alloc0 (sizeof (FsFunnelPadPrivate));
|
GstFunnelPadPrivate *priv = g_slice_alloc0 (sizeof (GstFunnelPadPrivate));
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (element, "requesting pad");
|
GST_DEBUG_OBJECT (element, "requesting pad");
|
||||||
|
|
||||||
sinkpad = gst_pad_new_from_template (templ, name);
|
sinkpad = gst_pad_new_from_template (templ, name);
|
||||||
|
|
||||||
gst_pad_set_chain_function (sinkpad, GST_DEBUG_FUNCPTR (fs_funnel_chain));
|
gst_pad_set_chain_function (sinkpad, GST_DEBUG_FUNCPTR (gst_funnel_chain));
|
||||||
gst_pad_set_event_function (sinkpad, GST_DEBUG_FUNCPTR (fs_funnel_event));
|
gst_pad_set_event_function (sinkpad, GST_DEBUG_FUNCPTR (gst_funnel_event));
|
||||||
gst_pad_set_getcaps_function (sinkpad, GST_DEBUG_FUNCPTR (fs_funnel_getcaps));
|
gst_pad_set_getcaps_function (sinkpad,
|
||||||
|
GST_DEBUG_FUNCPTR (gst_funnel_getcaps));
|
||||||
gst_pad_set_bufferalloc_function (sinkpad,
|
gst_pad_set_bufferalloc_function (sinkpad,
|
||||||
GST_DEBUG_FUNCPTR (fs_funnel_buffer_alloc));
|
GST_DEBUG_FUNCPTR (gst_funnel_buffer_alloc));
|
||||||
|
|
||||||
gst_segment_init (&priv->segment, GST_FORMAT_UNDEFINED);
|
gst_segment_init (&priv->segment, GST_FORMAT_UNDEFINED);
|
||||||
gst_pad_set_element_private (sinkpad, priv);
|
gst_pad_set_element_private (sinkpad, priv);
|
||||||
|
@ -187,25 +181,25 @@ fs_funnel_request_new_pad (GstElement * element, GstPadTemplate * templ,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fs_funnel_release_pad (GstElement * element, GstPad * pad)
|
gst_funnel_release_pad (GstElement * element, GstPad * pad)
|
||||||
{
|
{
|
||||||
FsFunnel *funnel = FS_FUNNEL (element);
|
GstFunnel *funnel = GST_FUNNEL (element);
|
||||||
FsFunnelPadPrivate *priv = gst_pad_get_element_private (pad);
|
GstFunnelPadPrivate *priv = gst_pad_get_element_private (pad);
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (funnel, "releasing pad");
|
GST_DEBUG_OBJECT (funnel, "releasing pad");
|
||||||
|
|
||||||
gst_pad_set_active (pad, FALSE);
|
gst_pad_set_active (pad, FALSE);
|
||||||
|
|
||||||
if (priv)
|
if (priv)
|
||||||
g_slice_free1 (sizeof (FsFunnelPadPrivate), priv);
|
g_slice_free1 (sizeof (GstFunnelPadPrivate), priv);
|
||||||
|
|
||||||
gst_element_remove_pad (GST_ELEMENT_CAST (funnel), pad);
|
gst_element_remove_pad (GST_ELEMENT_CAST (funnel), pad);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstCaps *
|
static GstCaps *
|
||||||
fs_funnel_getcaps (GstPad * pad)
|
gst_funnel_getcaps (GstPad * pad)
|
||||||
{
|
{
|
||||||
FsFunnel *funnel = FS_FUNNEL (gst_pad_get_parent (pad));
|
GstFunnel *funnel = GST_FUNNEL (gst_pad_get_parent (pad));
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
|
|
||||||
caps = gst_pad_peer_get_caps_reffed (funnel->srcpad);
|
caps = gst_pad_peer_get_caps_reffed (funnel->srcpad);
|
||||||
|
@ -218,11 +212,11 @@ fs_funnel_getcaps (GstPad * pad)
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
fs_funnel_chain (GstPad * pad, GstBuffer * buffer)
|
gst_funnel_chain (GstPad * pad, GstBuffer * buffer)
|
||||||
{
|
{
|
||||||
GstFlowReturn res;
|
GstFlowReturn res;
|
||||||
FsFunnel *funnel = FS_FUNNEL (gst_pad_get_parent (pad));
|
GstFunnel *funnel = GST_FUNNEL (gst_pad_get_parent (pad));
|
||||||
FsFunnelPadPrivate *priv = gst_pad_get_element_private (pad);
|
GstFunnelPadPrivate *priv = gst_pad_get_element_private (pad);
|
||||||
GstEvent *event = NULL;
|
GstEvent *event = NULL;
|
||||||
GstClockTime newts;
|
GstClockTime newts;
|
||||||
GstCaps *padcaps;
|
GstCaps *padcaps;
|
||||||
|
@ -283,10 +277,10 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
fs_funnel_event (GstPad * pad, GstEvent * event)
|
gst_funnel_event (GstPad * pad, GstEvent * event)
|
||||||
{
|
{
|
||||||
FsFunnel *funnel = FS_FUNNEL (gst_pad_get_parent (pad));
|
GstFunnel *funnel = GST_FUNNEL (gst_pad_get_parent (pad));
|
||||||
FsFunnelPadPrivate *priv = gst_pad_get_element_private (pad);
|
GstFunnelPadPrivate *priv = gst_pad_get_element_private (pad);
|
||||||
gboolean forward = TRUE;
|
gboolean forward = TRUE;
|
||||||
gboolean res = TRUE;
|
gboolean res = TRUE;
|
||||||
|
|
||||||
|
@ -334,7 +328,7 @@ fs_funnel_event (GstPad * pad, GstEvent * event)
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
fs_funnel_src_event (GstPad * pad, GstEvent * event)
|
gst_funnel_src_event (GstPad * pad, GstEvent * event)
|
||||||
{
|
{
|
||||||
GstElement *funnel;
|
GstElement *funnel;
|
||||||
GstIterator *iter;
|
GstIterator *iter;
|
||||||
|
@ -376,7 +370,7 @@ static void
|
||||||
reset_pad (gpointer data, gpointer user_data)
|
reset_pad (gpointer data, gpointer user_data)
|
||||||
{
|
{
|
||||||
GstPad *pad = data;
|
GstPad *pad = data;
|
||||||
FsFunnelPadPrivate *priv = gst_pad_get_element_private (pad);
|
GstFunnelPadPrivate *priv = gst_pad_get_element_private (pad);
|
||||||
|
|
||||||
GST_OBJECT_LOCK (pad);
|
GST_OBJECT_LOCK (pad);
|
||||||
gst_segment_init (&priv->segment, GST_FORMAT_UNDEFINED);
|
gst_segment_init (&priv->segment, GST_FORMAT_UNDEFINED);
|
||||||
|
@ -385,9 +379,9 @@ reset_pad (gpointer data, gpointer user_data)
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstStateChangeReturn
|
static GstStateChangeReturn
|
||||||
fs_funnel_change_state (GstElement * element, GstStateChange transition)
|
gst_funnel_change_state (GstElement * element, GstStateChange transition)
|
||||||
{
|
{
|
||||||
FsFunnel *funnel = FS_FUNNEL (element);
|
GstFunnel *funnel = GST_FUNNEL (element);
|
||||||
GstStateChangeReturn ret;
|
GstStateChangeReturn ret;
|
||||||
|
|
||||||
switch (transition) {
|
switch (transition) {
|
||||||
|
@ -418,18 +412,3 @@ fs_funnel_change_state (GstElement * element, GstStateChange transition)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
plugin_init (GstPlugin * plugin)
|
|
||||||
{
|
|
||||||
return gst_element_register (plugin, "fsfunnel",
|
|
||||||
GST_RANK_NONE, FS_TYPE_FUNNEL);
|
|
||||||
}
|
|
||||||
|
|
||||||
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
|
|
||||||
GST_VERSION_MINOR,
|
|
||||||
"fsfunnel",
|
|
||||||
"Farsight Funnel plugin",
|
|
||||||
plugin_init,
|
|
||||||
VERSION, "LGPL", "Farsight", "http://farsight.freedesktop.org/")
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
/*
|
/*
|
||||||
* Farsight2 - Farsight Funnel element
|
* GStreamer Funnel element
|
||||||
*
|
*
|
||||||
* Copyright 2007 Collabora Ltd.
|
* Copyright 2007 Collabora Ltd.
|
||||||
* @author: Olivier Crete <olivier.crete@collabora.co.uk>
|
* @author: Olivier Crete <olivier.crete@collabora.co.uk>
|
||||||
* Copyright 2007 Nokia Corp.
|
* Copyright 2007 Nokia Corp.
|
||||||
*
|
*
|
||||||
* fs-funnel.h: Simple Funnel element
|
* gstfunnel.h: Simple Funnel element
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -23,33 +23,33 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef __FS_FUNNEL_H__
|
#ifndef __GST_FUNNEL_H__
|
||||||
#define __FS_FUNNEL_H__
|
#define __GST_FUNNEL_H__
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
#define FS_TYPE_FUNNEL \
|
#define GST_TYPE_FUNNEL \
|
||||||
(fs_funnel_get_type ())
|
(gst_funnel_get_type ())
|
||||||
#define FS_FUNNEL(obj) \
|
#define GST_FUNNEL(obj) \
|
||||||
(G_TYPE_CHECK_INSTANCE_CAST((obj),FS_TYPE_FUNNEL,FsFunnel))
|
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_FUNNEL,GstFunnel))
|
||||||
#define FS_FUNNEL_CLASS(klass) \
|
#define GST_FUNNEL_CLASS(klass) \
|
||||||
(G_TYPE_CHECK_CLASS_CAST((klass),FS_TYPE_FUNNEL,FsFunnelClass))
|
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_FUNNEL,GstFunnelClass))
|
||||||
#define FS_IS_FUNNEL(obj) \
|
#define GST_IS_FUNNEL(obj) \
|
||||||
(G_TYPE_CHECK_INSTANCE_TYPE((obj),FS_TYPE_FUNNEL))
|
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FUNNEL))
|
||||||
#define FS_IS_FUNNEL_CLASS(klass) \
|
#define GST_IS_FUNNEL_CLASS(klass) \
|
||||||
(G_TYPE_CHECK_CLASS_TYPE((klass),FS_TYPE_FUNNEL))
|
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FUNNEL))
|
||||||
|
|
||||||
typedef struct _FsFunnel FsFunnel;
|
typedef struct _GstFunnel GstFunnel;
|
||||||
typedef struct _FsFunnelClass FsFunnelClass;
|
typedef struct _GstFunnelClass GstFunnelClass;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FsFunnel:
|
* GstFunnel:
|
||||||
*
|
*
|
||||||
* Opaque #FsFunnel data structure.
|
* Opaque #GstFunnel data structure.
|
||||||
*/
|
*/
|
||||||
struct _FsFunnel {
|
struct _GstFunnel {
|
||||||
GstElement element;
|
GstElement element;
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
|
@ -58,12 +58,12 @@ struct _FsFunnel {
|
||||||
gboolean has_segment;
|
gboolean has_segment;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _FsFunnelClass {
|
struct _GstFunnelClass {
|
||||||
GstElementClass parent_class;
|
GstElementClass parent_class;
|
||||||
};
|
};
|
||||||
|
|
||||||
GType fs_funnel_get_type (void);
|
GType gst_funnel_get_type (void);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __FS_FUNNEL_H__ */
|
#endif /* __GST_FUNNEL_H__ */
|
||||||
|
|
|
@ -77,6 +77,7 @@ REGISTRY_CHECKS = \
|
||||||
elements/fdsrc \
|
elements/fdsrc \
|
||||||
elements/filesink \
|
elements/filesink \
|
||||||
elements/filesrc \
|
elements/filesrc \
|
||||||
|
elements/funnel \
|
||||||
elements/identity \
|
elements/identity \
|
||||||
elements/multiqueue \
|
elements/multiqueue \
|
||||||
elements/selector \
|
elements/selector \
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Farsight 2 unit tests for the fsfunnel
|
/* GStreamer unit tests for the funnel
|
||||||
*
|
*
|
||||||
* Copyright (C) 2008 Collabora, Nokia
|
* Copyright (C) 2008 Collabora, Nokia
|
||||||
* @author: Olivier Crete <olivier.crete@collabora.co.uk>
|
* @author: Olivier Crete <olivier.crete@collabora.co.uk>
|
||||||
|
@ -39,7 +39,7 @@ setup_test_objects (struct TestData *td, GstPadChainFunction chain_func,
|
||||||
{
|
{
|
||||||
td->mycaps = gst_caps_new_simple ("test/test", NULL);
|
td->mycaps = gst_caps_new_simple ("test/test", NULL);
|
||||||
|
|
||||||
td->funnel = gst_element_factory_make ("fsfunnel", NULL);
|
td->funnel = gst_element_factory_make ("funnel", NULL);
|
||||||
|
|
||||||
td->funnelsrc = gst_element_get_static_pad (td->funnel, "src");
|
td->funnelsrc = gst_element_get_static_pad (td->funnel, "src");
|
||||||
fail_unless (td->funnelsrc != NULL);
|
fail_unless (td->funnelsrc != NULL);
|
||||||
|
|
Loading…
Reference in a new issue