/** * gst_vaapi_surface_proxy_new_from_pool: * @pool: a #GstVaapiSurfacePool * * Allocates a new surface from the supplied surface @pool and creates * the wrapped surface proxy object from it. When the last reference * to the proxy object is released, then the underlying VA surface is * pushed back to its parent pool. * * Returns: The same newly allocated @proxy object, or %NULL on error */ GstVaapiSurfaceProxy * gst_vaapi_surface_proxy_new_from_pool (GstVaapiSurfacePool * pool) { GstVaapiSurfaceProxy *proxy; g_return_val_if_fail (pool != NULL, NULL); proxy = (GstVaapiSurfaceProxy *) gst_vaapi_mini_object_new (gst_vaapi_surface_proxy_class ()); if (!proxy) return NULL; proxy->parent = NULL; proxy->destroy_func = NULL; proxy->pool = gst_vaapi_video_pool_ref (GST_VAAPI_VIDEO_POOL (pool)); proxy->surface = gst_vaapi_video_pool_get_object (proxy->pool); if (!proxy->surface) goto error; gst_vaapi_object_ref (proxy->surface); gst_vaapi_surface_proxy_init_properties (proxy); return proxy; /* ERRORS */ error: { gst_vaapi_surface_proxy_unref (proxy); return NULL; } }
/** * gst_vaapi_coded_buffer_proxy_new_from_pool: * @pool: a #GstVaapiCodedBufferPool * * Allocates a new coded buffer from the supplied @pool and creates * the wrapped coded buffer proxy object from it. When the last * reference to the proxy object is released, then the underlying VA * coded buffer is pushed back to its parent pool. * * Returns: The same newly allocated @proxy object, or %NULL on error */ GstVaapiCodedBufferProxy * gst_vaapi_coded_buffer_proxy_new_from_pool (GstVaapiCodedBufferPool * pool) { GstVaapiCodedBufferProxy *proxy; g_return_val_if_fail (pool != NULL, NULL); g_return_val_if_fail (GST_VAAPI_VIDEO_POOL (pool)->object_type == GST_VAAPI_VIDEO_POOL_OBJECT_TYPE_CODED_BUFFER, NULL); proxy = (GstVaapiCodedBufferProxy *) gst_vaapi_mini_object_new (gst_vaapi_coded_buffer_proxy_class ()); if (!proxy) return NULL; proxy->destroy_func = NULL; proxy->user_data_destroy = NULL; proxy->pool = gst_vaapi_video_pool_ref (pool); proxy->buffer = gst_vaapi_video_pool_get_object (proxy->pool); if (!proxy->buffer) goto error; gst_vaapi_object_ref (proxy->buffer); return proxy; /* ERRORS */ error: { gst_vaapi_coded_buffer_proxy_unref (proxy); return NULL; } }