diff --git a/gst-libs/gst/vaapi/gstvaapisurface.c b/gst-libs/gst/vaapi/gstvaapisurface.c index 76f431fcfb..0858c17ed6 100644 --- a/gst-libs/gst/vaapi/gstvaapisurface.c +++ b/gst-libs/gst/vaapi/gstvaapisurface.c @@ -396,3 +396,20 @@ gst_vaapi_surface_put_image(GstVaapiSurface *surface, GstVaapiImage *image) return TRUE; } + +gboolean +gst_vaapi_surface_sync(GstVaapiSurface *surface) +{ + VAStatus status; + + g_return_val_if_fail(GST_VAAPI_IS_SURFACE(surface), FALSE); + + status = vaSyncSurface( + GST_VAAPI_DISPLAY_VADISPLAY(surface->priv->display), + surface->priv->surface_id + ); + if (!vaapi_check_status(status, "vaSyncSurface()")) + return FALSE; + + return TRUE; +} diff --git a/gst-libs/gst/vaapi/gstvaapisurface.h b/gst-libs/gst/vaapi/gstvaapisurface.h index 445ca8f56f..1d6d4f7b34 100644 --- a/gst-libs/gst/vaapi/gstvaapisurface.h +++ b/gst-libs/gst/vaapi/gstvaapisurface.h @@ -113,6 +113,9 @@ gst_vaapi_surface_get_image(GstVaapiSurface *surface, GstVaapiImage *image); gboolean gst_vaapi_surface_put_image(GstVaapiSurface *surface, GstVaapiImage *image); +gboolean +gst_vaapi_surface_sync(GstVaapiSurface *surface); + G_END_DECLS #endif /* GST_VAAPI_SURFACE_H */