summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/reference/libs/libs-sections.txt1
-rw-r--r--gst-libs/gst/vaapi/gstvaapiimage.c32
-rw-r--r--gst-libs/gst/vaapi/gstvaapiimage.h3
3 files changed, 36 insertions, 0 deletions
diff --git a/docs/reference/libs/libs-sections.txt b/docs/reference/libs/libs-sections.txt
index e619f19c..9b005e61 100644
--- a/docs/reference/libs/libs-sections.txt
+++ b/docs/reference/libs/libs-sections.txt
@@ -228,6 +228,7 @@ gst_vaapi_image_get_data_size
gst_vaapi_image_get_buffer
gst_vaapi_image_get_raw
gst_vaapi_image_update_from_buffer
+gst_vaapi_image_copy
<SUBSECTION Standard>
GST_VAAPI_IMAGE
</SECTION>
diff --git a/gst-libs/gst/vaapi/gstvaapiimage.c b/gst-libs/gst/vaapi/gstvaapiimage.c
index 30df81da..3ddf1240 100644
--- a/gst-libs/gst/vaapi/gstvaapiimage.c
+++ b/gst-libs/gst/vaapi/gstvaapiimage.c
@@ -1116,3 +1116,35 @@ gst_vaapi_image_update_from_raw(
return success;
}
+
+/**
+ * gst_vaapi_image_copy:
+ * @dst_image: the target #GstVaapiImage
+ * @src_image: the source #GstVaapiImage
+ *
+ * Copies pixels data from @src_image to @dst_image. Both images shall
+ * have the same format and size.
+ *
+ * Return value: %TRUE on success
+ */
+gboolean
+gst_vaapi_image_copy(GstVaapiImage *dst_image, GstVaapiImage *src_image)
+{
+ GstVaapiImageRaw dst_image_raw, src_image_raw;
+ gboolean success = FALSE;
+
+ g_return_val_if_fail(dst_image != NULL, FALSE);
+ g_return_val_if_fail(src_image != NULL, FALSE);
+
+ if (!_gst_vaapi_image_map(dst_image, &dst_image_raw))
+ goto end;
+ if (!_gst_vaapi_image_map(src_image, &src_image_raw))
+ goto end;
+
+ success = copy_image(&dst_image_raw, &src_image_raw, NULL);
+
+end:
+ _gst_vaapi_image_unmap(src_image);
+ _gst_vaapi_image_unmap(dst_image);
+ return success;
+}
diff --git a/gst-libs/gst/vaapi/gstvaapiimage.h b/gst-libs/gst/vaapi/gstvaapiimage.h
index 94eff613..124bdad5 100644
--- a/gst-libs/gst/vaapi/gstvaapiimage.h
+++ b/gst-libs/gst/vaapi/gstvaapiimage.h
@@ -156,6 +156,9 @@ gst_vaapi_image_update_from_raw(
GstVaapiRectangle *rect
);
+gboolean
+gst_vaapi_image_copy(GstVaapiImage *dst_image, GstVaapiImage *src_image);
+
G_END_DECLS
#endif /* GST_VAAPI_IMAGE_H */