diff --git a/sys/msdk/gstmsdkbufferpool.c b/sys/msdk/gstmsdkbufferpool.c index b42d021981..8bb9cf92f3 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 ced7c96d1a..8f56ddac4e 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 554b4a40e2..4e7941afd6 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,