[Pkg-gstreamer-commits] [gstreamer-vaapi] 85/176: codec: add helper macros to maintain object refcount.

Vincent Cheng vcheng at moszumanska.debian.org
Tue Jun 3 08:09:30 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 39dda15f5fa7d3881a9f95d62970a52dd0c00ec1
Author: Gwenole Beauchesne <gwenole.beauchesne at intel.com>
Date:   Thu Jan 9 09:27:40 2014 +0100

    codec: add helper macros to maintain object refcount.
    
    Add gst_vaapi_mini_object_{ref,unref,replace}() helper macros so that
    to avoid explicit casts to GstVaapiMiniObject in all caller sites.
---
 gst-libs/gst/vaapi/gstvaapicodec_objects.c   | 17 +++++++++--------
 gst-libs/gst/vaapi/gstvaapicodec_objects.h   | 10 ++++++++++
 gst-libs/gst/vaapi/gstvaapidecoder_objects.c | 26 +++++++-------------------
 gst-libs/gst/vaapi/gstvaapidecoder_objects.h | 19 ++++++-------------
 4 files changed, 32 insertions(+), 40 deletions(-)

diff --git a/gst-libs/gst/vaapi/gstvaapicodec_objects.c b/gst-libs/gst/vaapi/gstvaapicodec_objects.c
index f7204af..26c0c04 100644
--- a/gst-libs/gst/vaapi/gstvaapicodec_objects.c
+++ b/gst-libs/gst/vaapi/gstvaapicodec_objects.c
@@ -73,16 +73,17 @@ gst_vaapi_codec_object_new (const GstVaapiCodecObjectClass * object_class,
     GstVaapiCodecBase * codec, gconstpointer param, guint param_size,
     gconstpointer data, guint data_size, guint flags)
 {
-  GstVaapiMiniObject *obj;
-  GstVaapiCodecObject *va_obj;
+  GstVaapiCodecObject *obj;
   GstVaapiCodecObjectConstructorArgs args;
 
-  obj = gst_vaapi_mini_object_new0 (&object_class->parent_class);
+  obj =
+      (GstVaapiCodecObject *)
+      gst_vaapi_mini_object_new0 (GST_VAAPI_MINI_OBJECT_CLASS (object_class));
   if (!obj)
     return NULL;
 
-  va_obj = GST_VAAPI_CODEC_OBJECT (obj);
-  va_obj->codec = codec;
+  obj = GST_VAAPI_CODEC_OBJECT (obj);
+  obj->codec = codec;
 
   args.param = param;
   args.param_size = param_size;
@@ -90,10 +91,10 @@ gst_vaapi_codec_object_new (const GstVaapiCodecObjectClass * object_class,
   args.data_size = data_size;
   args.flags = flags;
 
-  if (gst_vaapi_codec_object_create (va_obj, &args))
-    return va_obj;
+  if (gst_vaapi_codec_object_create (obj, &args))
+    return obj;
 
-  gst_vaapi_mini_object_unref (obj);
+  gst_vaapi_codec_object_unref (obj);
   return NULL;
 }
 
diff --git a/gst-libs/gst/vaapi/gstvaapicodec_objects.h b/gst-libs/gst/vaapi/gstvaapicodec_objects.h
index 576eea0..10d4582 100644
--- a/gst-libs/gst/vaapi/gstvaapicodec_objects.h
+++ b/gst-libs/gst/vaapi/gstvaapicodec_objects.h
@@ -104,6 +104,16 @@ gst_vaapi_codec_object_new (const GstVaapiCodecObjectClass * object_class,
     GstVaapiCodecBase * codec, gconstpointer param, guint param_size,
     gconstpointer data, guint data_size, guint flags);
 
+#define gst_vaapi_codec_object_ref(object) \
+  ((gpointer) gst_vaapi_mini_object_ref (GST_VAAPI_MINI_OBJECT (object)))
+
+#define gst_vaapi_codec_object_unref(object) \
+  gst_vaapi_mini_object_unref (GST_VAAPI_MINI_OBJECT (object))
+
+#define gst_vaapi_codec_object_replace(old_object_ptr, new_object) \
+  gst_vaapi_mini_object_replace ((GstVaapiMiniObject **) (old_object_ptr), \
+      GST_VAAPI_MINI_OBJECT (new_object))
+
 /* ------------------------------------------------------------------------- */
 /* --- Inverse Quantization Matrices                                     --- */
 /* ------------------------------------------------------------------------- */
diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_objects.c b/gst-libs/gst/vaapi/gstvaapidecoder_objects.c
index b2f6319..33cbb92 100644
--- a/gst-libs/gst/vaapi/gstvaapidecoder_objects.c
+++ b/gst-libs/gst/vaapi/gstvaapidecoder_objects.c
@@ -60,29 +60,17 @@ enum
   GST_VAAPI_CREATE_PICTURE_FLAG_FIELD = 1 << 1,
 };
 
-static void
-destroy_slice_cb (gpointer data, gpointer user_data)
-{
-  GstVaapiMiniObject *const object = data;
-
-  gst_vaapi_mini_object_unref (object);
-}
-
 void
 gst_vaapi_picture_destroy (GstVaapiPicture * picture)
 {
   if (picture->slices) {
-    g_ptr_array_foreach (picture->slices, destroy_slice_cb, NULL);
-    g_ptr_array_free (picture->slices, TRUE);
+    g_ptr_array_unref (picture->slices);
     picture->slices = NULL;
   }
 
-  gst_vaapi_mini_object_replace ((GstVaapiMiniObject **) & picture->iq_matrix,
-      NULL);
-  gst_vaapi_mini_object_replace ((GstVaapiMiniObject **) & picture->huf_table,
-      NULL);
-  gst_vaapi_mini_object_replace ((GstVaapiMiniObject **) & picture->bitplane,
-      NULL);
+  gst_vaapi_codec_object_replace (&picture->iq_matrix, NULL);
+  gst_vaapi_codec_object_replace (&picture->huf_table, NULL);
+  gst_vaapi_codec_object_replace (&picture->bitplane, NULL);
 
   if (picture->proxy) {
     gst_vaapi_surface_proxy_unref (picture->proxy);
@@ -164,7 +152,8 @@ gst_vaapi_picture_create (GstVaapiPicture * picture,
     return FALSE;
   picture->param_size = args->param_size;
 
-  picture->slices = g_ptr_array_new ();
+  picture->slices = g_ptr_array_new_with_free_func ((GDestroyNotify)
+      gst_vaapi_mini_object_unref);
   if (!picture->slices)
     return FALSE;
 
@@ -382,8 +371,7 @@ gst_vaapi_slice_destroy (GstVaapiSlice * slice)
 {
   VADisplay const va_display = GET_VA_DISPLAY (slice);
 
-  gst_vaapi_mini_object_replace ((GstVaapiMiniObject **) & slice->huf_table,
-      NULL);
+  gst_vaapi_codec_object_replace (&slice->huf_table, NULL);
 
   vaapi_destroy_buffer (va_display, &slice->data_id);
   vaapi_destroy_buffer (va_display, &slice->param_id);
diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_objects.h b/gst-libs/gst/vaapi/gstvaapidecoder_objects.h
index ab3c1fd..7908461 100644
--- a/gst-libs/gst/vaapi/gstvaapidecoder_objects.h
+++ b/gst-libs/gst/vaapi/gstvaapidecoder_objects.h
@@ -176,21 +176,14 @@ void
 gst_vaapi_picture_set_crop_rect (GstVaapiPicture * picture,
     const GstVaapiRectangle * crop_rect);
 
-static inline gpointer
-gst_vaapi_picture_ref (gpointer ptr)
-{
-  return gst_vaapi_mini_object_ref (GST_VAAPI_MINI_OBJECT (ptr));
-}
+#define gst_vaapi_picture_ref(picture) \
+  gst_vaapi_codec_object_ref (picture)
 
-static inline void
-gst_vaapi_picture_unref (gpointer ptr)
-{
-  gst_vaapi_mini_object_unref (GST_VAAPI_MINI_OBJECT (ptr));
-}
+#define gst_vaapi_picture_unref(picture) \
+  gst_vaapi_codec_object_unref (picture)
 
-#define gst_vaapi_picture_replace(old_picture_p, new_picture)             \
-  gst_vaapi_mini_object_replace ((GstVaapiMiniObject **) (old_picture_p), \
-      (GstVaapiMiniObject *) (new_picture))
+#define gst_vaapi_picture_replace(old_picture_ptr, new_picture) \
+  gst_vaapi_codec_object_replace (old_picture_ptr, new_picture)
 
 /* ------------------------------------------------------------------------- */
 /* --- Slices                                                            --- */

-- 
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