From f2ab0b8f1930f9923448f35578ad89cbbbf25799 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 9 Nov 2011 17:37:31 +0100 Subject: [PATCH] upates for new ACCEPT_CAPS query --- gst/playback/gststreamsynchronizer.c | 22 ------------------ gst/playback/gstsubtitleoverlay.c | 43 +++++++++++++++++++++++++----------- 2 files changed, 30 insertions(+), 35 deletions(-) diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c index 668318f..561d712 100644 --- a/gst/playback/gststreamsynchronizer.c +++ b/gst/playback/gststreamsynchronizer.c @@ -170,24 +170,6 @@ gst_stream_synchronizer_getcaps (GstPad * pad, GstCaps * filter) return ret; } -static gboolean -gst_stream_synchronizer_acceptcaps (GstPad * pad, GstCaps * caps) -{ - GstPad *opad; - gboolean ret = FALSE; - - opad = gst_stream_get_other_pad_from_pad (pad); - if (opad) { - ret = gst_pad_peer_accept_caps (opad, caps); - gst_object_unref (opad); - } - - GST_LOG_OBJECT (pad, "Caps%s accepted: %" GST_PTR_FORMAT, (ret ? "" : " not"), - caps); - - return ret; -} - /* srcpad functions */ static gboolean gst_stream_synchronizer_src_event (GstPad * pad, GstEvent * event) @@ -687,8 +669,6 @@ gst_stream_synchronizer_request_new_pad (GstElement * element, GST_DEBUG_FUNCPTR (gst_stream_synchronizer_query)); gst_pad_set_getcaps_function (stream->sinkpad, GST_DEBUG_FUNCPTR (gst_stream_synchronizer_getcaps)); - gst_pad_set_acceptcaps_function (stream->sinkpad, - GST_DEBUG_FUNCPTR (gst_stream_synchronizer_acceptcaps)); gst_pad_set_event_function (stream->sinkpad, GST_DEBUG_FUNCPTR (gst_stream_synchronizer_sink_event)); gst_pad_set_chain_function (stream->sinkpad, @@ -704,8 +684,6 @@ gst_stream_synchronizer_request_new_pad (GstElement * element, GST_DEBUG_FUNCPTR (gst_stream_synchronizer_query)); gst_pad_set_getcaps_function (stream->srcpad, GST_DEBUG_FUNCPTR (gst_stream_synchronizer_getcaps)); - gst_pad_set_acceptcaps_function (stream->srcpad, - GST_DEBUG_FUNCPTR (gst_stream_synchronizer_acceptcaps)); gst_pad_set_event_function (stream->srcpad, GST_DEBUG_FUNCPTR (gst_stream_synchronizer_src_event)); diff --git a/gst/playback/gstsubtitleoverlay.c b/gst/playback/gstsubtitleoverlay.c index f12ef0a..c8122ac 100644 --- a/gst/playback/gstsubtitleoverlay.c +++ b/gst/playback/gstsubtitleoverlay.c @@ -1873,17 +1873,6 @@ gst_subtitle_overlay_subtitle_sink_getcaps (GstPad * pad, GstCaps * filter) } static gboolean -gst_subtitle_overlay_subtitle_sink_acceptcaps (GstPad * pad, GstCaps * caps) -{ - GstCaps *othercaps = gst_subtitle_overlay_subtitle_sink_getcaps (pad, NULL); - gboolean ret = gst_caps_is_subset (caps, othercaps); - - gst_caps_unref (othercaps); - - return ret; -} - -static gboolean gst_subtitle_overlay_subtitle_sink_setcaps (GstSubtitleOverlay * self, GstCaps * caps) { @@ -2052,6 +2041,34 @@ out: return ret; } +static gboolean +gst_subtitle_overlay_subtitle_sink_query (GstPad * pad, GstQuery * query) +{ + GstSubtitleOverlay *self = GST_SUBTITLE_OVERLAY (gst_pad_get_parent (pad)); + gboolean ret; + + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_ACCEPT_CAPS: + { + GstCaps *caps, *othercaps; + + gst_query_parse_accept_caps (query, &caps); + othercaps = gst_subtitle_overlay_subtitle_sink_getcaps (pad, NULL); + ret = gst_caps_is_subset (caps, othercaps); + gst_caps_unref (othercaps); + gst_query_set_accept_caps_result (query, ret); + ret = TRUE; + break; + } + default: + ret = gst_pad_query_default (pad, query); + break; + } + gst_object_unref (self); + + return ret; +} + static void gst_subtitle_overlay_init (GstSubtitleOverlay * self) { @@ -2101,12 +2118,12 @@ gst_subtitle_overlay_init (GstSubtitleOverlay * self) GST_DEBUG_FUNCPTR (gst_subtitle_overlay_subtitle_sink_unlink)); gst_pad_set_event_function (self->subtitle_sinkpad, GST_DEBUG_FUNCPTR (gst_subtitle_overlay_subtitle_sink_event)); + gst_pad_set_query_function (self->subtitle_sinkpad, + GST_DEBUG_FUNCPTR (gst_subtitle_overlay_subtitle_sink_query)); gst_pad_set_chain_function (self->subtitle_sinkpad, GST_DEBUG_FUNCPTR (gst_subtitle_overlay_subtitle_sink_chain)); gst_pad_set_getcaps_function (self->subtitle_sinkpad, GST_DEBUG_FUNCPTR (gst_subtitle_overlay_subtitle_sink_getcaps)); - gst_pad_set_acceptcaps_function (self->subtitle_sinkpad, - GST_DEBUG_FUNCPTR (gst_subtitle_overlay_subtitle_sink_acceptcaps)); proxypad = GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD -- 2.7.4