diff options
Diffstat (limited to 'sys/oss/gstosssink.c')
-rw-r--r-- | sys/oss/gstosssink.c | 56 |
1 files changed, 13 insertions, 43 deletions
diff --git a/sys/oss/gstosssink.c b/sys/oss/gstosssink.c index d93912ed..b1402b29 100644 --- a/sys/oss/gstosssink.c +++ b/sys/oss/gstosssink.c @@ -58,7 +58,7 @@ static gboolean gst_osssink_query (GstElement *element, GstQueryType type, static gboolean gst_osssink_sink_query (GstPad *pad, GstQueryType type, GstFormat *format, gint64 *value); -static GstPadLinkReturn gst_osssink_sinkconnect (GstPad *pad, GstCaps *caps); +static GstPadLinkReturn gst_osssink_sinkconnect (GstPad *pad, const GstCaps *caps); static void gst_osssink_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); @@ -83,28 +83,18 @@ enum { /* FILL ME */ }; -GST_PAD_TEMPLATE_FACTORY (osssink_sink_factory, +static GstStaticPadTemplate osssink_sink_factory = +GST_STATIC_PAD_TEMPLATE ( "sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "osssink_sink", - "audio/x-raw-int", - "endianness", GST_PROPS_INT (G_BYTE_ORDER), - "signed", GST_PROPS_LIST ( - GST_PROPS_BOOLEAN (FALSE), - GST_PROPS_BOOLEAN (TRUE) - ), - "width", GST_PROPS_LIST ( - GST_PROPS_INT (8), - GST_PROPS_INT (16) - ), - "depth", GST_PROPS_LIST ( - GST_PROPS_INT (8), - GST_PROPS_INT (16) - ), - "rate", GST_PROPS_INT_RANGE (1000, 48000), - "channels", GST_PROPS_INT_RANGE (1, 2) + GST_STATIC_CAPS ("audio/x-raw-int, " + "endianness = (int) BYTE_ORDER, " + "signed = (boolean) { TRUE, FALSE }, " + "width = (int) { 8, 16 }, " + "depth = (int) { 8, 16 }, " + "rate = (int) [ 1000, 48000 ], " + "channels = (int) [ 1, 2 ]" ) ); @@ -134,20 +124,6 @@ gst_osssink_get_type (void) return osssink_type; } -static GstBufferPool* -gst_osssink_get_bufferpool (GstPad *pad) -{ - GstOssSink *oss; - - oss = GST_OSSSINK (gst_pad_get_parent(pad)); - - /* 6 buffers per chunk by default */ - if (!oss->sinkpool) - oss->sinkpool = gst_buffer_pool_get_default (oss->bufsize, 6); - - return oss->sinkpool; -} - static void gst_osssink_dispose (GObject *object) { @@ -164,7 +140,7 @@ gst_osssink_base_init (gpointer g_class) GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); gst_element_class_set_details (element_class, &gst_osssink_details); - gst_element_class_add_pad_template (element_class, GST_PAD_TEMPLATE_GET (osssink_sink_factory)); + gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&osssink_sink_factory)); } static void gst_osssink_class_init (GstOssSinkClass *klass) @@ -214,10 +190,9 @@ static void gst_osssink_init (GstOssSink *osssink) { osssink->sinkpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (osssink_sink_factory), "sink"); + gst_static_pad_template_get (&osssink_sink_factory), "sink"); gst_element_add_pad (GST_ELEMENT (osssink), osssink->sinkpad); gst_pad_set_link_function (osssink->sinkpad, gst_osssink_sinkconnect); - gst_pad_set_bufferpool_function (osssink->sinkpad, gst_osssink_get_bufferpool); gst_pad_set_convert_function (osssink->sinkpad, gst_osssink_convert); gst_pad_set_query_function (osssink->sinkpad, gst_osssink_sink_query); gst_pad_set_query_type_function (osssink->sinkpad, gst_osssink_get_query_types); @@ -230,7 +205,6 @@ gst_osssink_init (GstOssSink *osssink) osssink->resync = FALSE; osssink->mute = FALSE; osssink->sync = TRUE; - osssink->sinkpool = NULL; osssink->provided_clock = gst_audio_clock_new ("ossclock", gst_osssink_get_time, osssink); gst_object_set_parent (GST_OBJECT (osssink->provided_clock), GST_OBJECT (osssink)); osssink->handled = 0; @@ -241,13 +215,10 @@ gst_osssink_init (GstOssSink *osssink) static GstPadLinkReturn -gst_osssink_sinkconnect (GstPad *pad, GstCaps *caps) +gst_osssink_sinkconnect (GstPad *pad, const GstCaps *caps) { GstOssSink *osssink = GST_OSSSINK (gst_pad_get_parent (pad)); - if (!GST_CAPS_IS_FIXED (caps)) - return GST_PAD_LINK_DELAYED; - if (!gst_osselement_parse_caps (GST_OSSELEMENT (osssink), caps)) return GST_PAD_LINK_REFUSED; @@ -529,7 +500,6 @@ gst_osssink_set_property (GObject *object, guint prop_id, const GValue *value, G break; case ARG_BUFFER_SIZE: osssink->bufsize = g_value_get_uint (value); - osssink->sinkpool = gst_buffer_pool_get_default (osssink->bufsize, 6); g_object_notify (object, "buffer_size"); break; case ARG_SYNC: |