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)
{
gst_object_unref (plugin);
return success;
}
+#endif
typedef struct
{
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);
}
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 *