| 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
|
|
|