diff --git a/gst/vaapi/gstvaapiencode.c b/gst/vaapi/gstvaapiencode.c index 141544184e..a9b8b3d633 100644 --- a/gst/vaapi/gstvaapiencode.c +++ b/gst/vaapi/gstvaapiencode.c @@ -57,6 +57,45 @@ ensure_display (GstVaapiEncode * encode) return gst_vaapi_plugin_base_ensure_display (GST_VAAPI_PLUGIN_BASE (encode)); } +#if GST_CHECK_VERSION(1,4,0) +static gboolean +gst_vaapiencode_sink_query (GstVideoEncoder * encoder, GstQuery * query) +{ + gboolean ret = TRUE; + GstVaapiPluginBase *const plugin = GST_VAAPI_PLUGIN_BASE (encoder); + + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_CONTEXT: + ret = gst_vaapi_handle_context_query (query, plugin->display); + break; + default: + ret = GST_VIDEO_ENCODER_CLASS (gst_vaapiencode_parent_class)->sink_query + (encoder, query); + break; + } + + return ret; +} + +static gboolean +gst_vaapiencode_src_query (GstVideoEncoder * encoder, GstQuery * query) +{ + gboolean ret = TRUE; + GstVaapiPluginBase *const plugin = GST_VAAPI_PLUGIN_BASE (encoder); + + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_CONTEXT: + ret = gst_vaapi_handle_context_query (query, plugin->display); + break; + default: + ret = GST_VIDEO_ENCODER_CLASS (gst_vaapiencode_parent_class)->src_query + (encoder, query); + break; + } + + return ret; +} +#else static gboolean gst_vaapiencode_query (GstPad * pad, GstObject * parent, GstQuery * query) { @@ -76,6 +115,7 @@ gst_vaapiencode_query (GstPad * pad, GstObject * parent, GstQuery * query) gst_object_unref (plugin); return success; } +#endif typedef struct { @@ -610,8 +650,10 @@ gst_vaapiencode_init (GstVaapiEncode * encode) gst_vaapi_plugin_base_init (GST_VAAPI_PLUGIN_BASE (encode), GST_CAT_DEFAULT); +#if !GST_CHECK_VERSION(1,4,0) gst_pad_set_query_function (plugin->sinkpad, gst_vaapiencode_query); gst_pad_set_query_function (plugin->srcpad, gst_vaapiencode_query); +#endif gst_pad_use_fixed_caps (plugin->srcpad); } @@ -645,8 +687,13 @@ gst_vaapiencode_class_init (GstVaapiEncodeClass * klass) klass->set_property = gst_vaapiencode_default_set_property; klass->alloc_buffer = gst_vaapiencode_default_alloc_buffer; +#if GST_CHECK_VERSION(1,4,0) + venc_class->src_query = GST_DEBUG_FUNCPTR (gst_vaapiencode_src_query); + venc_class->sink_query = GST_DEBUG_FUNCPTR (gst_vaapiencode_sink_query); +#else /* Registering debug symbols for function pointers */ GST_DEBUG_REGISTER_FUNCPTR (gst_vaapiencode_query); +#endif } static inline GPtrArray *