diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2011-11-15 16:34:13 +0100 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2011-11-15 16:34:13 +0100 |
commit | 03713e50459ba62d5b15e753907258b3ce0689c3 (patch) | |
tree | 9dc9f0614f99fe7c39d279268151fa5cdb06ee52 /gst/dvbsuboverlay/gstdvbsuboverlay.c | |
parent | ac9c7bbfefeaa66361e4817eec50eeb123e818d3 (diff) | |
download | gstreamer-plugins-bad-03713e50459ba62d5b15e753907258b3ce0689c3.tar.gz |
change getcaps to query
Diffstat (limited to 'gst/dvbsuboverlay/gstdvbsuboverlay.c')
-rw-r--r-- | gst/dvbsuboverlay/gstdvbsuboverlay.c | 52 |
1 files changed, 46 insertions, 6 deletions
diff --git a/gst/dvbsuboverlay/gstdvbsuboverlay.c b/gst/dvbsuboverlay/gstdvbsuboverlay.c index 7641f384c..a0948daf3 100644 --- a/gst/dvbsuboverlay/gstdvbsuboverlay.c +++ b/gst/dvbsuboverlay/gstdvbsuboverlay.c @@ -108,6 +108,7 @@ static gboolean gst_dvbsub_overlay_event_src (GstPad * pad, GstEvent * event); static void new_dvb_subtitles_cb (DvbSub * dvb_sub, DVBSubtitles * subs, gpointer user_data); +static gboolean gst_dvbsub_overlay_query_video (GstPad * pad, GstQuery * query); static gboolean gst_dvbsub_overlay_query_src (GstPad * pad, GstQuery * query); /* initialize the plugin's class */ @@ -185,11 +186,6 @@ gst_dvbsub_overlay_init (GstDVBSubOverlay * render) render->text_sinkpad = gst_pad_new_from_static_template (&text_sink_factory, "text_sink"); - gst_pad_set_getcaps_function (render->srcpad, - GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_getcaps)); - gst_pad_set_getcaps_function (render->video_sinkpad, - GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_getcaps)); - gst_pad_set_chain_function (render->video_sinkpad, GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_chain_video)); gst_pad_set_chain_function (render->text_sinkpad, @@ -202,6 +198,8 @@ gst_dvbsub_overlay_init (GstDVBSubOverlay * render) gst_pad_set_event_function (render->srcpad, GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_event_src)); + gst_pad_set_query_function (render->video_sinkpad, + GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_query_video)); gst_pad_set_query_function (render->srcpad, GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_query_src)); @@ -331,7 +329,22 @@ gst_dvbsub_overlay_query_src (GstPad * pad, GstQuery * query) GstDVBSubOverlay *render = GST_DVBSUB_OVERLAY (gst_pad_get_parent (pad)); gboolean ret; - ret = gst_pad_peer_query (render->video_sinkpad, query); + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_CAPS: + { + GstCaps *filter, *caps; + + gst_query_parse_caps (query, &filter); + caps = gst_dvbsub_overlay_getcaps (pad, filter); + gst_query_set_caps_result (query, caps); + gst_caps_unref (caps); + ret = TRUE; + break; + } + default: + ret = gst_pad_peer_query (render->video_sinkpad, query); + break; + } gst_object_unref (render); return ret; @@ -913,6 +926,33 @@ missing_timestamp: } static gboolean +gst_dvbsub_overlay_query_video (GstPad * pad, GstQuery * query) +{ + GstDVBSubOverlay *render = GST_DVBSUB_OVERLAY (gst_pad_get_parent (pad)); + gboolean ret; + + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_CAPS: + { + GstCaps *filter, *caps; + + gst_query_parse_caps (query, &filter); + caps = gst_dvbsub_overlay_getcaps (pad, filter); + gst_query_set_caps_result (query, caps); + gst_caps_unref (caps); + ret = TRUE; + break; + } + default: + ret = gst_pad_query_default (pad, query); + break; + } + + gst_object_unref (render); + return ret; +} + +static gboolean gst_dvbsub_overlay_event_video (GstPad * pad, GstEvent * event) { gboolean ret = FALSE; |