[Pkg-gstreamer-commits] [gstreamer-vaapi] 99/176: vaapiencode: use more GstVaapiPluginBase facilities.
Vincent Cheng
vcheng at moszumanska.debian.org
Tue Jun 3 08:09:31 UTC 2014
This is an automated email from the git hooks/post-receive script.
vcheng pushed a commit to branch upstream
in repository gstreamer-vaapi.
commit ea7c1d87c5e578adf6e1ac24fe136f453134049d
Author: Gwenole Beauchesne <gwenole.beauchesne at intel.com>
Date: Thu Jan 9 18:20:24 2014 +0100
vaapiencode: use more GstVaapiPluginBase facilities.
Avoid duplication of pad references or query functions since they are
provided through the GstVaapiPluginBase object.
---
gst/vaapi/gstvaapiencode.c | 74 +++++++++++++++--------------------------
gst/vaapi/gstvaapiencode.h | 8 -----
gst/vaapi/gstvaapiencode_h264.c | 3 +-
3 files changed, 28 insertions(+), 57 deletions(-)
diff --git a/gst/vaapi/gstvaapiencode.c b/gst/vaapi/gstvaapiencode.c
index fdb18ce..b482aef 100644
--- a/gst/vaapi/gstvaapiencode.c
+++ b/gst/vaapi/gstvaapiencode.c
@@ -70,22 +70,22 @@ ensure_uploader (GstVaapiEncode * encode)
static gboolean
gst_vaapiencode_query (GST_PAD_QUERY_FUNCTION_ARGS)
{
- GstVaapiEncode *const encode =
- GST_VAAPIENCODE_CAST (gst_pad_get_parent_element (pad));
+ GstVaapiPluginBase *const plugin =
+ GST_VAAPI_PLUGIN_BASE (gst_pad_get_parent_element (pad));
gboolean success;
- GST_INFO_OBJECT (encode, "query type %s", GST_QUERY_TYPE_NAME (query));
+ GST_INFO_OBJECT (plugin, "query type %s", GST_QUERY_TYPE_NAME (query));
- if (gst_vaapi_reply_to_query (query, GST_VAAPI_PLUGIN_BASE_DISPLAY (encode)))
+ if (gst_vaapi_reply_to_query (query, plugin->display))
success = TRUE;
else if (GST_PAD_IS_SINK (pad))
- success = GST_PAD_QUERY_FUNCTION_CALL (encode->sinkpad_query,
- encode->sinkpad, parent, query);
+ success = GST_PAD_QUERY_FUNCTION_CALL (plugin->sinkpad_query,
+ plugin->sinkpad, parent, query);
else
- success = GST_PAD_QUERY_FUNCTION_CALL (encode->srcpad_query,
- encode->srcpad, parent, query);
+ success = GST_PAD_QUERY_FUNCTION_CALL (plugin->srcpad_query,
+ plugin->srcpad, parent, query);
- gst_object_unref (encode);
+ gst_object_unref (plugin);
return success;
}
@@ -334,25 +334,25 @@ gst_vaapiencode_buffer_loop (GstVaapiEncode * encode)
if (ret == GST_FLOW_OK || ret == GST_VAAPI_ENCODE_FLOW_TIMEOUT)
return;
- gst_pad_pause_task (encode->srcpad);
+ gst_pad_pause_task (GST_VAAPI_PLUGIN_BASE_SRC_PAD (encode));
}
static GstCaps *
gst_vaapiencode_get_caps_impl (GstVideoEncoder * venc)
{
- GstVaapiEncode *const encode = GST_VAAPIENCODE_CAST (venc);
+ GstVaapiPluginBase *const plugin = GST_VAAPI_PLUGIN_BASE (venc);
GstCaps *caps;
- if (encode->sinkpad_caps)
- caps = gst_caps_ref (encode->sinkpad_caps);
+ if (plugin->sinkpad_caps)
+ caps = gst_caps_ref (plugin->sinkpad_caps);
else {
#if GST_CHECK_VERSION(1,0,0)
- caps = gst_pad_get_pad_template_caps (encode->sinkpad);
+ caps = gst_pad_get_pad_template_caps (plugin->sinkpad);
#else
caps = gst_caps_from_string (GST_VAAPI_SURFACE_CAPS);
- if (caps && ensure_uploader (encode)) {
- GstCaps *const yuv_caps = GST_VAAPI_PLUGIN_BASE_UPLOADER_CAPS (encode);
+ if (caps && ensure_uploader (GST_VAAPIENCODE_CAST (plugin))) {
+ GstCaps *const yuv_caps = GST_VAAPI_PLUGIN_BASE_UPLOADER_CAPS (plugin);
if (yuv_caps) {
caps = gst_caps_make_writable (caps);
gst_caps_append (caps, gst_caps_copy (yuv_caps));
@@ -394,8 +394,6 @@ gst_vaapiencode_destroy (GstVaapiEncode * encode)
encode->output_state = NULL;
}
gst_vaapi_encoder_replace (&encode->encoder, NULL);
- gst_caps_replace (&encode->sinkpad_caps, NULL);
- gst_caps_replace (&encode->srcpad_caps, NULL);
return TRUE;
}
@@ -456,24 +454,17 @@ gst_vaapiencode_close (GstVideoEncoder * venc)
return TRUE;
}
-static inline gboolean
-gst_vaapiencode_update_sink_caps (GstVaapiEncode * encode,
- GstVideoCodecState * state)
-{
- gst_caps_replace (&encode->sinkpad_caps, state->caps);
- return TRUE;
-}
-
static gboolean
set_codec_state (GstVaapiEncode * encode, GstVideoCodecState * state)
{
+ GstVaapiPluginBase *const plugin = GST_VAAPI_PLUGIN_BASE (encode);
GstCaps *out_caps, *allowed_caps, *template_caps, *intersect;
g_return_val_if_fail (encode->encoder, FALSE);
/* get peer caps for stream-format avc/bytestream, codec_data */
- template_caps = gst_pad_get_pad_template_caps (encode->srcpad);
- allowed_caps = gst_pad_get_allowed_caps (encode->srcpad);
+ template_caps = gst_pad_get_pad_template_caps (plugin->srcpad);
+ allowed_caps = gst_pad_get_allowed_caps (plugin->srcpad);
intersect = gst_caps_intersect (template_caps, allowed_caps);
gst_caps_unref (template_caps);
gst_caps_unref (allowed_caps);
@@ -490,7 +481,6 @@ set_codec_state (GstVaapiEncode * encode, GstVideoCodecState * state)
}
GST_DEBUG ("set srcpad caps to: %" GST_PTR_FORMAT, out_caps);
- gst_caps_replace (&encode->srcpad_caps, out_caps);
gst_caps_unref (out_caps);
return TRUE;
}
@@ -507,9 +497,6 @@ gst_vaapiencode_set_format (GstVideoEncoder * venc, GstVideoCodecState * state)
if (!set_codec_state (encode, state))
return FALSE;
- if (!gst_vaapiencode_update_sink_caps (encode, state))
- return FALSE;
-
if (!gst_vaapi_plugin_base_set_caps (GST_VAAPI_PLUGIN_BASE (encode),
state->caps, NULL))
return FALSE;
@@ -519,7 +506,7 @@ gst_vaapiencode_set_format (GstVideoEncoder * venc, GstVideoCodecState * state)
encode->input_state = gst_video_codec_state_ref (state);
encode->input_state_changed = TRUE;
- return gst_pad_start_task (encode->srcpad,
+ return gst_pad_start_task (GST_VAAPI_PLUGIN_BASE_SRC_PAD (encode),
(GstTaskFunction) gst_vaapiencode_buffer_loop, encode, NULL);
}
@@ -603,7 +590,7 @@ gst_vaapiencode_finish (GstVideoEncoder * venc)
status = gst_vaapi_encoder_flush (encode->encoder);
GST_VIDEO_ENCODER_STREAM_UNLOCK (encode);
- gst_pad_stop_task (encode->srcpad);
+ gst_pad_stop_task (GST_VAAPI_PLUGIN_BASE_SRC_PAD (encode));
GST_VIDEO_ENCODER_STREAM_LOCK (encode);
while (status == GST_VAAPI_ENCODER_STATUS_SUCCESS && ret == GST_FLOW_OK)
@@ -638,9 +625,6 @@ gst_vaapiencode_finalize (GObject * object)
encode->prop_values = NULL;
}
- encode->sinkpad = NULL;
- encode->srcpad = NULL;
-
gst_vaapi_plugin_base_finalize (GST_VAAPI_PLUGIN_BASE (object));
G_OBJECT_CLASS (gst_vaapiencode_parent_class)->finalize (object);
}
@@ -648,19 +632,13 @@ gst_vaapiencode_finalize (GObject * object)
static void
gst_vaapiencode_init (GstVaapiEncode * encode)
{
- gst_vaapi_plugin_base_init (GST_VAAPI_PLUGIN_BASE (encode), GST_CAT_DEFAULT);
-
- /* sink pad */
- encode->sinkpad = GST_VIDEO_ENCODER_SINK_PAD (encode);
- encode->sinkpad_query = GST_PAD_QUERYFUNC (encode->sinkpad);
- gst_pad_set_query_function (encode->sinkpad, gst_vaapiencode_query);
+ GstVaapiPluginBase *const plugin = GST_VAAPI_PLUGIN_BASE (encode);
- /* src pad */
- encode->srcpad = GST_VIDEO_ENCODER_SRC_PAD (encode);
- encode->srcpad_query = GST_PAD_QUERYFUNC (encode->srcpad);
- gst_pad_set_query_function (encode->srcpad, gst_vaapiencode_query);
+ gst_vaapi_plugin_base_init (GST_VAAPI_PLUGIN_BASE (encode), GST_CAT_DEFAULT);
- gst_pad_use_fixed_caps (encode->srcpad);
+ gst_pad_set_query_function (plugin->sinkpad, gst_vaapiencode_query);
+ gst_pad_set_query_function (plugin->srcpad, gst_vaapiencode_query);
+ gst_pad_use_fixed_caps (plugin->srcpad);
}
static void
diff --git a/gst/vaapi/gstvaapiencode.h b/gst/vaapi/gstvaapiencode.h
index 7ceffa3..8f78a75 100644
--- a/gst/vaapi/gstvaapiencode.h
+++ b/gst/vaapi/gstvaapiencode.h
@@ -50,14 +50,6 @@ struct _GstVaapiEncode
/*< private >*/
GstVaapiPluginBase parent_instance;
- GstPad *sinkpad;
- GstCaps *sinkpad_caps;
- GstPadQueryFunction sinkpad_query;
-
- GstPad *srcpad;
- GstCaps *srcpad_caps;
- GstPadQueryFunction srcpad_query;
-
GstVaapiEncoder *encoder;
GstVideoCodecState *input_state;
gboolean input_state_changed;
diff --git a/gst/vaapi/gstvaapiencode_h264.c b/gst/vaapi/gstvaapiencode_h264.c
index f64db7f..3e525d3 100644
--- a/gst/vaapi/gstvaapiencode_h264.c
+++ b/gst/vaapi/gstvaapiencode_h264.c
@@ -132,7 +132,8 @@ gst_vaapiencode_h264_get_caps (GstVaapiEncode * base_encode)
caps = gst_caps_from_string (GST_CODEC_CAPS);
/* Check whether "stream-format" is avcC mode */
- allowed_caps = gst_pad_get_allowed_caps (base_encode->srcpad);
+ allowed_caps =
+ gst_pad_get_allowed_caps (GST_VAAPI_PLUGIN_BASE_SRC_PAD (encode));
if (allowed_caps) {
const char *stream_format = NULL;
GstStructure *structure;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gstreamer/gstreamer-vaapi.git
More information about the Pkg-gstreamer-commits
mailing list