[Libva] [PATCH 16/16] add vaGetImageBufferWl
Zhao Halley
halley.zhao at intel.com
Tue Jun 5 02:07:04 PDT 2012
From: Zhao halley <halley.zhao at intel.com>
---
va/wayland/va_backend_wayland.h | 11 +++++++++--
va/wayland/va_wayland.c | 18 ++++++++++++++++++
va/wayland/va_wayland.h | 30 +++++++++++++++++++++++++++---
3 files changed, 54 insertions(+), 5 deletions(-)
diff --git a/va/wayland/va_backend_wayland.h b/va/wayland/va_backend_wayland.h
index 0f076c7..e652c70 100755
--- a/va/wayland/va_backend_wayland.h
+++ b/va/wayland/va_backend_wayland.h
@@ -41,9 +41,16 @@ struct VADriverVTableWayland {
/* Get wl_buffer from VASurface*/
VAStatus (*vaGetSurfaceBufferWl)(
- struct VADriverContext *ctx,
+ struct VADriverContext *ctx,
VASurfaceID va_surface,
- struct wl_buffer **out_buffer
+ struct wl_buffer **out_buffer
+ );
+
+ /* Get wl_buffer from VAImageID*/
+ VAStatus (*vaGetImageBufferWl)(
+ struct VADriverContext *ctx,
+ VAImageID va_image,
+ struct wl_buffer **out_buffer
);
};
diff --git a/va/wayland/va_wayland.c b/va/wayland/va_wayland.c
index a9ebc1e..7559c1b 100755
--- a/va/wayland/va_wayland.c
+++ b/va/wayland/va_wayland.c
@@ -173,3 +173,21 @@ vaGetSurfaceBufferWl(
return ctx->vtable_wayland->vaGetSurfaceBufferWl(ctx,
va_surface, out_buffer);
}
+
+VAStatus
+vaGetImageBufferWl(
+ VADisplay dpy,
+ VAImageID va_image,
+ struct wl_buffer **out_buffer
+)
+{
+ VADriverContextP const ctx = get_driver_context(dpy);
+
+ if (!ctx)
+ return VA_STATUS_ERROR_INVALID_DISPLAY;
+ if (!ctx->vtable_wayland || !ctx->vtable_wayland->vaGetImageBufferWl)
+ return VA_STATUS_ERROR_UNIMPLEMENTED;
+ return ctx->vtable_wayland->vaGetImageBufferWl(ctx,
+ va_image, out_buffer);
+}
+
diff --git a/va/wayland/va_wayland.h b/va/wayland/va_wayland.h
index 2186eec..ba6d139 100755
--- a/va/wayland/va_wayland.h
+++ b/va/wayland/va_wayland.h
@@ -78,9 +78,9 @@ vaGetDisplayWl(struct wl_display *display);
* format. if color conversion is required, vpp interface can help
* before call this function
*
- * @param[in] dpy the VA display
- * @param[in] va_surface the src VA surface
- * @param[out] out_buffer wl_buffer wraps from va_surface
+ * @param[in] dpy the VA display
+ * @param[in] va_surface the src VA surface
+ * @param[out] out_buffer wl_buffer wraps from va_surface
* @return VA_STATUS_SUCCESS if successful
*/
VAStatus
@@ -90,6 +90,30 @@ vaGetSurfaceBufferWl(
struct wl_buffer **out_buffer
);
+/**
+ * \brief create a wl_buffer which is wraped from va_image
+ *
+ * This function is used to get a wl_buffer from va_image,
+ * usually they share the same buffer without additional copy.
+ * it's up to the client to manage the life cycle of these
+ * va_image and wl_buffer. (XXXX, life cycle of wl_buffer?)
+ *
+ * Implementation note: va_image and out_buffer has same
+ * format. if color conversion is required, vpp interface can help
+ * before call this function
+ *
+ * @param[in] dpy the VA display
+ * @param[in] va_image the src VA Image id
+ * @param[out] out_buffer wl_buffer wraps from va_surface
+ * @return VA_STATUS_SUCCESS if successful
+ */
+VAStatus
+vaGetImageBufferWl(
+ VADisplay dpy,
+ VAImageID va_image,
+ struct wl_buffer **out_buffer
+);
+
/**@}*/
#ifdef __cplusplus
--
1.7.5.4
More information about the Libva
mailing list