static GstVdpBuffer * gst_vdp_video_buffer_pool_alloc_buffer (GstVdpBufferPool * bpool, GError ** error) { GstVdpVideoBufferPool *vpool = GST_VDP_VIDEO_BUFFER_POOL (bpool); GstVdpDevice *device; device = gst_vdp_buffer_pool_get_device (bpool); return GST_VDP_BUFFER_CAST (gst_vdp_video_buffer_new (device, vpool->chroma_type, vpool->width, vpool->height, error)); }
static GstVdpBuffer * gst_vdp_output_buffer_pool_alloc_buffer (GstVdpBufferPool * bpool, GError ** error) { GstVdpOutputBufferPool *opool = GST_VDP_OUTPUT_BUFFER_POOL (bpool); GstVdpDevice *device; device = gst_vdp_buffer_pool_get_device (bpool); return GST_VDP_BUFFER_CAST (gst_vdp_output_buffer_new (device, opool->rgba_format, opool->width, opool->height, error)); }
static void gst_vdp_video_buffer_finalize (GstVdpVideoBuffer * buffer) { GstVdpDevice *device; VdpStatus status; if (gst_vdp_buffer_revive (GST_VDP_BUFFER_CAST (buffer))) return; device = buffer->device; status = device->vdp_video_surface_destroy (buffer->surface); if (status != VDP_STATUS_OK) GST_ERROR ("Couldn't destroy the buffers VdpVideoSurface, error returned was: %s", device->vdp_get_error_string (status)); g_object_unref (buffer->device); GST_MINI_OBJECT_CLASS (gst_vdp_video_buffer_parent_class)->finalize (GST_MINI_OBJECT (buffer)); }