d3dvideosink: use parent buffer pool to release buffers

In certain cases, the sink's buffer pool will not call the parent's
release_buffer method, so the pool does not clean up properly
after the buffer is released.
This commit is contained in:
Aaron Boxer 2019-12-02 11:13:11 -06:00 committed by GStreamer Merge Bot
parent 81d1e16b6b
commit d3426cf15b

View file

@ -747,24 +747,6 @@ fallback:
}
}
static void
gst_d3dsurface_buffer_pool_release_buffer (GstBufferPool * bpool,
GstBuffer * buffer)
{
GstMemory *mem = NULL;
/* Check if something replaced our memory */
if (gst_buffer_n_memory (buffer) != 1 ||
(mem = gst_buffer_peek_memory (buffer, 0)) == 0 ||
!gst_memory_is_type (mem, GST_D3D_SURFACE_MEMORY_NAME)) {
gst_buffer_unref (buffer);
return;
}
GST_BUFFER_POOL_CLASS
(gst_d3dsurface_buffer_pool_parent_class)->release_buffer (bpool, buffer);
}
static void
gst_d3dsurface_buffer_pool_class_init (GstD3DSurfaceBufferPoolClass * klass)
{
@ -776,8 +758,6 @@ gst_d3dsurface_buffer_pool_class_init (GstD3DSurfaceBufferPoolClass * klass)
gstbufferpool_class->get_options = gst_d3dsurface_buffer_pool_get_options;
gstbufferpool_class->set_config = gst_d3dsurface_buffer_pool_set_config;
gstbufferpool_class->alloc_buffer = gst_d3dsurface_buffer_pool_alloc_buffer;
gstbufferpool_class->release_buffer =
gst_d3dsurface_buffer_pool_release_buffer;
}
static void