summaryrefslogtreecommitdiff
path: root/gst/vaapi/gstvaapiencode.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/vaapi/gstvaapiencode.c')
-rw-r--r--gst/vaapi/gstvaapiencode.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/gst/vaapi/gstvaapiencode.c b/gst/vaapi/gstvaapiencode.c
index 14154418..a9b8b3d6 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 *