Index: third_party/libva/va/va_tpi.h |
diff --git a/third_party/libva/va/va_tpi.h b/third_party/libva/va/va_tpi.h |
index 921c8fed04dac22def10520eefa85059f9bab383..d4a9d063308cadc2323b99e4482515c1656bc2aa 100644 |
--- a/third_party/libva/va/va_tpi.h |
+++ b/third_party/libva/va/va_tpi.h |
@@ -21,34 +21,51 @@ |
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
*/ |
+#ifndef _VA_TPI_H_ |
+#define _VA_TPI_H_ |
-/* Wrap a CI (camera imaging) frame as a VA surface to share captured video between camear |
- * and VA encode. With frame_id, VA driver need to call CI interfaces to get the information |
- * of the frame, and to determine if the frame can be wrapped as a VA surface |
- * |
- * Application should make sure the frame is idle before the frame is passed into VA stack |
- * and also a vaSyncSurface should be called before application tries to access the frame |
- * from CI stack |
- */ |
#include <va/va.h> |
#ifdef __cplusplus |
extern "C" { |
#endif |
-VAStatus vaCreateSurfaceFromCIFrame ( |
- VADisplay dpy, |
- unsigned long frame_id, |
- VASurfaceID *surface /* out */ |
-); |
-VAStatus vaCreateSurfaceFromV4L2Buf( |
- VADisplay dpy, |
- int v4l2_fd, /* file descriptor of V4L2 device */ |
- struct v4l2_format *v4l2_fmt, /* format of V4L2 */ |
- struct v4l2_buffer *v4l2_buf, /* V4L2 buffer */ |
- VASurfaceID *surface /* out */ |
-); |
+typedef enum { |
+ VAExternalMemoryNULL, /* it is not external buffer, but requires the implementation allocates |
+ * the surface with the input attribute |
+ */ |
+ VAExternalMemoryV4L2Buffer, |
+ VAExternalMemoryCIFrame, /* the memory is from camera frames and buffers points the frame ID list */ |
+ VAExternalMemoryUserPointer, /* the memory is malloc-ed and buffers points to the buffers */ |
+ VAExternalMemoryKernelDRMBufffer, /* the memory is from kernel DRM buffers and buffers points the |
+ * DRM buffer handle list |
+ */ |
+ VAExternalMemoryAndroidGrallocBuffer, /* the memory is from Android Gralloc memory, and buffers points |
+ * the gralloc native_handle_t list |
+ */ |
+} VASurfaceMemoryType; |
+ |
+typedef struct _VASurfaceAttributeTPI { |
+ VASurfaceMemoryType type; |
+ unsigned int width; |
+ unsigned int height; |
+ unsigned int size; |
+ unsigned int pixel_format; /* buffer format */ |
+ unsigned int tiling; /* the memory is tiling or not */ |
+ unsigned int luma_stride; /* luma stride, could be width aligned with a special value */ |
+ unsigned int chroma_u_stride; /* chroma stride */ |
+ unsigned int chroma_v_stride; |
+ unsigned int luma_offset; /* could be 0 */ |
+ unsigned int chroma_u_offset; /* U offset from the beginning of the memory */ |
+ unsigned int chroma_v_offset; /* V offset from the beginning of the memory */ |
+ unsigned int count; /* buffer count for surface creation */ |
+ unsigned int *buffers; /* buffer handles or user pointers */ |
+ unsigned int reserved[4]; /* used to pass additional information, like |
+ * Android native window pointer |
+ */ |
+} VASurfaceAttributeTPI; |
+ |
VAStatus vaPutSurfaceBuf ( |
VADisplay dpy, |
@@ -69,51 +86,18 @@ VAStatus vaPutSurfaceBuf ( |
); |
-/* |
- * The surfaces could be shared and accessed with extern devices |
- * which has special requirements, e.g. stride alignment |
- * This API is used to force libVA video surfaces are allocated |
- * according to these external requirements |
- * Special API for V4L2 user pointer support |
- */ |
-VAStatus vaCreateSurfacesForUserPtr( |
+VAStatus vaCreateSurfacesWithAttribute ( |
VADisplay dpy, |
int width, |
int height, |
int format, |
int num_surfaces, |
VASurfaceID *surfaces, /* out */ |
- unsigned size, /* total buffer size need to be allocated */ |
- unsigned int fourcc, /* expected fourcc */ |
- unsigned int luma_stride, /* luma stride, could be width aligned with a special value */ |
- unsigned int chroma_u_stride, /* chroma stride */ |
- unsigned int chroma_v_stride, |
- unsigned int luma_offset, /* could be 0 */ |
- unsigned int chroma_u_offset, /* UV offset from the beginning of the memory */ |
- unsigned int chroma_v_offset |
+ VASurfaceAttributeTPI *attribute_tpi |
); |
-/* |
- * Create surface from the Kernel buffer |
- */ |
-VAStatus vaCreateSurfaceFromKBuf( |
- VADisplay dpy, |
- int width, |
- int height, |
- int format, |
- VASurfaceID *surface, /* out */ |
- unsigned int kbuf_handle, /* kernel buffer handle*/ |
- unsigned size, /* kernel buffer size */ |
- unsigned int kBuf_fourcc, /* expected fourcc */ |
- unsigned int luma_stride, /* luma stride, could be width aligned with a special value */ |
- unsigned int chroma_u_stride, /* chroma stride */ |
- unsigned int chroma_v_stride, |
- unsigned int luma_offset, /* could be 0 */ |
- unsigned int chroma_u_offset, /* UV offset from the beginning of the memory */ |
- unsigned int chroma_v_offset |
-); |
- |
- |
#ifdef __cplusplus |
} |
#endif |
+ |
+#endif |