diff options
author | Víctor Manuel Jáquez Leal <vjaquez@igalia.com> | 2021-02-01 23:19:27 +0100 |
---|---|---|
committer | Víctor Manuel Jáquez Leal <vjaquez@igalia.com> | 2021-02-05 21:25:20 +0100 |
commit | 43cb1b5dcfe7fff12ad43bca209e8b6edcc8637c (patch) | |
tree | ac123fc5d37fe312e05429bda38b025c0f829b0c /sys | |
parent | 532b20cf058afe6a8d59e7427cb389f6d9410740 (diff) | |
download | gstreamer-plugins-bad-43cb1b5dcfe7fff12ad43bca209e8b6edcc8637c.tar.gz |
va: basedec: refactor context query
Context query is handled either by source and sink queries. This patch
factors-out its handling in a common utility function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1999>
Diffstat (limited to 'sys')
-rw-r--r-- | sys/va/gstvabasedec.c | 41 |
1 files changed, 16 insertions, 25 deletions
diff --git a/sys/va/gstvabasedec.c b/sys/va/gstvabasedec.c index bc9a870a1..1bf2ca827 100644 --- a/sys/va/gstvabasedec.c +++ b/sys/va/gstvabasedec.c @@ -118,6 +118,19 @@ gst_va_base_dec_getcaps (GstVideoDecoder * decoder, GstCaps * filter) } static gboolean +_query_context (GstVaBaseDec * self, GstQuery * query) +{ + GstVaDisplay *display = NULL; + gboolean ret; + + gst_object_replace ((GstObject **) & display, (GstObject *) self->display); + ret = gst_va_handle_context_query (GST_ELEMENT_CAST (self), query, display); + gst_clear_object (&display); + + return ret; +} + +static gboolean gst_va_base_dec_src_query (GstVideoDecoder * decoder, GstQuery * query) { GstVaBaseDec *base = GST_VA_BASE_DEC (decoder); @@ -125,15 +138,7 @@ gst_va_base_dec_src_query (GstVideoDecoder * decoder, GstQuery * query) switch (GST_QUERY_TYPE (query)) { case GST_QUERY_CONTEXT:{ - GstVaDisplay *display = NULL; - - gst_object_replace ((GstObject **) & display, - (GstObject *) base->display); - - ret = gst_va_handle_context_query (GST_ELEMENT_CAST (decoder), query, - display); - - gst_clear_object (&display); + ret = _query_context (base, query); break; } case GST_QUERY_CAPS:{ @@ -180,22 +185,8 @@ gst_va_base_dec_src_query (GstVideoDecoder * decoder, GstQuery * query) static gboolean gst_va_base_dec_sink_query (GstVideoDecoder * decoder, GstQuery * query) { - GstVaBaseDec *base = GST_VA_BASE_DEC (decoder); - gboolean ret = FALSE; - - if (GST_QUERY_TYPE (query) == GST_QUERY_CONTEXT) { - GstVaDisplay *display = NULL; - - gst_object_replace ((GstObject **) & display, (GstObject *) base->display); - - ret = gst_va_handle_context_query (GST_ELEMENT_CAST (decoder), query, - display); - - gst_clear_object (&display); - - return ret; - } - + if (GST_QUERY_TYPE (query) == GST_QUERY_CONTEXT) + return _query_context (GST_VA_BASE_DEC (decoder), query); return GST_VIDEO_DECODER_CLASS (parent_class)->sink_query (decoder, query); } |