From ad6223b448bf527de15f2617fed9b4fa53495854 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 17 Dec 2007 14:46:26 +0000 Subject: gst/switch/gstswitch.*: Add `block' and `switch' signals. Original commit message from CVS: 2007-12-17 Andy Wingo * gst/switch/gstswitch.h (struct _GstStreamSelectorClass): * gst/switch/gstswitch.c (gst_stream_selector_class_init): Add `block' and `switch' signals. * gst/switch/Makefile.am: * gst/switch/gstswitch-marshal.list: Add foo to generate a marshaller for the `switch' signal. Patch 2/12. --- gst/switch/Makefile.am | 15 ++++++++++++++- gst/switch/gstswitch-marshal.list | 1 + gst/switch/gstswitch.c | 38 ++++++++++++++++++++++++++++++++++++++ gst/switch/gstswitch.h | 4 ++++ 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 gst/switch/gstswitch-marshal.list (limited to 'gst') diff --git a/gst/switch/Makefile.am b/gst/switch/Makefile.am index b5a55038..b829095d 100644 --- a/gst/switch/Makefile.am +++ b/gst/switch/Makefile.am @@ -1,9 +1,22 @@ +glib_enum_prefix = gst_switch + +include $(top_srcdir)/common/glib-gen.mak + +built_sources = gstswitch-marshal.c +built_headers = gstswitch-marshal.h + +BUILT_SOURCES = $(built_sources) $(built_headers) + +CLEANFILES = $(BUILT_SOURCES) + +EXTRA_DIST = gstswitch-marshal.list plugin_LTLIBRARIES = libgstswitch.la libgstswitch_la_SOURCES = gstswitch.c +nodist_libgstswitch_la_SOURCES = $(built_sources) libgstswitch_la_CFLAGS = $(GST_CFLAGS) libgstswitch_la_LIBADD = libgstswitch_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) -noinst_HEADERS = gstswitch.h +noinst_HEADERS = gstswitch.h $(built_headers) diff --git a/gst/switch/gstswitch-marshal.list b/gst/switch/gstswitch-marshal.list new file mode 100644 index 00000000..57ed247e --- /dev/null +++ b/gst/switch/gstswitch-marshal.list @@ -0,0 +1 @@ +VOID:STRING,UINT64,UINT64 diff --git a/gst/switch/gstswitch.c b/gst/switch/gstswitch.c index c1f48bde..c1f4b53b 100644 --- a/gst/switch/gstswitch.c +++ b/gst/switch/gstswitch.c @@ -27,6 +27,7 @@ #include #include "gstswitch.h" +#include "gstswitch-marshal.h" GST_DEBUG_CATEGORY_STATIC (stream_selector_debug); #define GST_CAT_DEFAULT stream_selector_debug @@ -57,6 +58,15 @@ enum PROP_ACTIVE_PAD = 1 }; +enum +{ + /* methods */ + SIGNAL_BLOCK, + SIGNAL_SWITCH, + LAST_SIGNAL +}; +static guint gst_stream_selector_signals[LAST_SIGNAL] = { 0 }; + static gboolean gst_stream_selector_is_active_sinkpad (GstStreamSelector * sel, GstPad * pad); static GstPad *gst_stream_selector_activate_sinkpad (GstStreamSelector * sel, @@ -429,6 +439,34 @@ gst_stream_selector_class_init (GstStreamSelectorClass * klass) gobject_class->dispose = gst_stream_selector_dispose; gstelement_class->request_new_pad = gst_stream_selector_request_new_pad; gstelement_class->release_pad = gst_stream_selector_release_pad; + + /** + * GstStreamSelector::block: + * @streamselector: the streamselector element to emit this signal on + * + * Block all sink pads in preparation for a switch. + */ + gst_stream_selector_signals[SIGNAL_BLOCK] = + g_signal_new ("block", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstStreamSelectorClass, block), + NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + /** + * GstStreamSelector::switch: + * @streamselector: the streamselector element to emit this signal on + * @pad: name of pad to switch to + * @stop_time: time at which to close the previous segment, or + * #GST_CLOCK_TIME_NONE for the last time on the previously + * active pad + * @start_time: start time for new segment, or foo + * + * Switch the given open file descriptor to multifdsink to write to and + * specify the burst parameters for the new connection. + */ + gst_stream_selector_signals[SIGNAL_SWITCH] = + g_signal_new ("switch", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GstStreamSelectorClass, switch_), + NULL, NULL, gst_switch_marshal_VOID__STRING_UINT64_UINT64, + G_TYPE_NONE, 3, G_TYPE_STRING, G_TYPE_UINT64, G_TYPE_UINT64); } static void diff --git a/gst/switch/gstswitch.h b/gst/switch/gstswitch.h index a7c4b22f..3d88ca2b 100644 --- a/gst/switch/gstswitch.h +++ b/gst/switch/gstswitch.h @@ -52,6 +52,10 @@ struct _GstStreamSelector { struct _GstStreamSelectorClass { GstElementClass parent_class; + + void (*block) (void); + void (*switch_) (const gchar *pad_name, GstClockTime stop_time, + GstClockTime start_time); }; GType gst_stream_selector_get_type (void); -- cgit v1.2.1