[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gstreamer-cvs
Subject:    gst-plugins-bad: =?UTF-8?Q?msdk=3A=20generalize=20the=20?= =?UTF-8?Q?parameter=20of=20msdk=20vid?= =
From:       sree () kemper ! freedesktop ! org (Sreerenj Balachandran)
Date:       2018-03-30 18:12:08
Message-ID: 20180330181208.C0E8776166 () kemper ! freedesktop ! org
[Download RAW message or body]

Module: gst-plugins-bad
Branch: master
Commit: c3438b5a0fde3f57b7c0e59243f1cbb8df623c91
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=c3438b5a0fde3f57b7c0e59243f1cbb8df623c91


Author: Hyunjun Ko <zzoon@igalia.com>
Date:   Fri Mar 30 11:03:00 2018 -0800

msdk: generalize the parameter of msdk video memory functions

There needs to be generalized for the parameter from
GstVideoMsdkVideoMemory to GstMemory.

Thus we can call these functions if using DMABuf memory.

https://bugzilla.gnome.org/show_bug.cgi?id=793707

---

 sys/msdk/gstmsdkbufferpool.c  |  7 +++----
 sys/msdk/gstmsdkvideomemory.c | 34 ++++++++++++++++++++++------------
 sys/msdk/gstmsdkvideomemory.h |  4 ++--
 3 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/sys/msdk/gstmsdkbufferpool.c b/sys/msdk/gstmsdkbufferpool.c
index b42d02198..8bb9cf92f 100644
--- a/sys/msdk/gstmsdkbufferpool.c
+++ b/sys/msdk/gstmsdkbufferpool.c
@@ -253,8 +253,8 @@ gst_msdk_buffer_pool_acquire_buffer (GstBufferPool * pool,
 
   surface = gst_msdk_get_surface_from_buffer (buf);
   if (!surface || surface->Data.Locked > 0) {
-    if (!gst_msdk_video_memory_get_surface_available (GST_MSDK_VIDEO_MEMORY_CAST
-            (gst_buffer_peek_memory (buf, 0)))) {
+    if (!gst_msdk_video_memory_get_surface_available (gst_buffer_peek_memory
+            (buf, 0))) {
       GST_WARNING_OBJECT (pool, "failed to get new surface available");
       return GST_FLOW_ERROR;
     }
@@ -278,8 +278,7 @@ gst_msdk_buffer_pool_release_buffer (GstBufferPool * pool, \
GstBuffer * buf)  if (!surface)
     goto done;
 
-  gst_msdk_video_memory_release_surface (GST_MSDK_VIDEO_MEMORY_CAST
-      (gst_buffer_peek_memory (buf, 0)));
+  gst_msdk_video_memory_release_surface (gst_buffer_peek_memory (buf, 0));
 
 done:
   return GST_BUFFER_POOL_CLASS (parent_class)->release_buffer (pool, buf);
diff --git a/sys/msdk/gstmsdkvideomemory.c b/sys/msdk/gstmsdkvideomemory.c
index ced7c96d1..8f56ddac4 100644
--- a/sys/msdk/gstmsdkvideomemory.c
+++ b/sys/msdk/gstmsdkvideomemory.c
@@ -61,13 +61,18 @@ gst_msdk_video_allocator_get_surface (GstAllocator * allocator)
 }
 
 gboolean
-gst_msdk_video_memory_get_surface_available (GstMsdkVideoMemory * mem)
+gst_msdk_video_memory_get_surface_available (GstMemory * mem)
 {
   GstAllocator *allocator;
+  GstMsdkVideoMemory *msdk_mem;
 
-  allocator = GST_MEMORY_CAST (mem)->allocator;
-  mem->surface = gst_msdk_video_allocator_get_surface (allocator);
-  return mem->surface ? TRUE : FALSE;
+  g_return_val_if_fail (mem, FALSE);
+  g_return_val_if_fail (GST_IS_MSDK_VIDEO_MEMORY (mem), FALSE);
+
+  msdk_mem = GST_MSDK_VIDEO_MEMORY_CAST (mem);
+  allocator = mem->allocator;
+  msdk_mem->surface = gst_msdk_video_allocator_get_surface (allocator);
+  return msdk_mem->surface ? TRUE : FALSE;
 }
 
 /*
@@ -76,23 +81,28 @@ gst_msdk_video_memory_get_surface_available (GstMsdkVideoMemory * \
                mem)
  * Otherwise, we put the surface to the available list.
  */
 void
-gst_msdk_video_memory_release_surface (GstMsdkVideoMemory * mem)
+gst_msdk_video_memory_release_surface (GstMemory * mem)
 {
   GstMsdkVideoAllocator *msdk_video_allocator;
+  GstMsdkVideoMemory *msdk_mem;
 
-  msdk_video_allocator =
-      GST_MSDK_VIDEO_ALLOCATOR_CAST (GST_MEMORY_CAST (mem)->allocator);
-  if (!mem->surface)
+  g_return_if_fail (mem);
+  g_return_if_fail (GST_IS_MSDK_VIDEO_MEMORY (mem));
+
+  msdk_mem = GST_MSDK_VIDEO_MEMORY_CAST (mem);
+  msdk_video_allocator = GST_MSDK_VIDEO_ALLOCATOR_CAST (mem->allocator);
+
+  if (!msdk_mem->surface)
     return;
 
-  if (mem->surface->Data.Locked > 0)
+  if (msdk_mem->surface->Data.Locked > 0)
     gst_msdk_context_put_surface_locked (msdk_video_allocator->context,
-        msdk_video_allocator->alloc_response, mem->surface);
+        msdk_video_allocator->alloc_response, msdk_mem->surface);
   else
     gst_msdk_context_put_surface_available (msdk_video_allocator->context,
-        msdk_video_allocator->alloc_response, mem->surface);
+        msdk_video_allocator->alloc_response, msdk_mem->surface);
 
-  mem->surface = NULL;
+  msdk_mem->surface = NULL;
   return;
 }
 
diff --git a/sys/msdk/gstmsdkvideomemory.h b/sys/msdk/gstmsdkvideomemory.h
index 554b4a40e..4e7941afd 100644
--- a/sys/msdk/gstmsdkvideomemory.h
+++ b/sys/msdk/gstmsdkvideomemory.h
@@ -73,10 +73,10 @@ GstMemory *
 gst_msdk_video_memory_new (GstAllocator * allocator);
 
 gboolean
-gst_msdk_video_memory_get_surface_available (GstMsdkVideoMemory * mem);
+gst_msdk_video_memory_get_surface_available (GstMemory * mem);
 
 void
-gst_msdk_video_memory_release_surface (GstMsdkVideoMemory * mem);
+gst_msdk_video_memory_release_surface (GstMemory * mem);
 
 gboolean
 gst_video_meta_map_msdk_memory (GstVideoMeta * meta, guint plane,

_______________________________________________
gstreamer-commits mailing list
gstreamer-commits@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/gstreamer-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic