diff options
author | Andy Wingo <wingo@pobox.com> | 2007-12-17 14:46:26 +0000 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2007-12-17 14:46:26 +0000 |
commit | ad6223b448bf527de15f2617fed9b4fa53495854 (patch) | |
tree | 3309c66ca6dfbd3e94bc432b3204e1f2a95fb089 /gst/switch | |
parent | 9db3f63b135acd7866bedc9a7e097da3a6b294bb (diff) | |
download | gst-plugins-bad-ad6223b448bf527de15f2617fed9b4fa53495854.tar.gz gst-plugins-bad-ad6223b448bf527de15f2617fed9b4fa53495854.tar.bz2 gst-plugins-bad-ad6223b448bf527de15f2617fed9b4fa53495854.zip |
gst/switch/gstswitch.*: Add `block' and `switch' signals.
Original commit message from CVS:
2007-12-17 Andy Wingo <wingo@pobox.com>
* 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.
Diffstat (limited to 'gst/switch')
-rw-r--r-- | gst/switch/Makefile.am | 15 | ||||
-rw-r--r-- | gst/switch/gstswitch-marshal.list | 1 | ||||
-rw-r--r-- | gst/switch/gstswitch.c | 38 | ||||
-rw-r--r-- | gst/switch/gstswitch.h | 4 |
4 files changed, 57 insertions, 1 deletions
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 <string.h> #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); |