[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