Commit bed76379 authored by Ren Zhaohan's avatar Ren Zhaohan

Add vaPutSurfaceBuf to va_backend_tpi.h and va_tpi.c[h], update Android.mk for...

Add vaPutSurfaceBuf to va_backend_tpi.h and va_tpi.c[h], update Android.mk for new shared lib libva_android_tpi.so
parent 70074679
# For libva_android
# =====================================================
LOCAL_PATH:= $(call my-dir)
LIBVA_MINOR_VERSION := 31
......@@ -15,10 +18,8 @@ LOCAL_CFLAGS += -DHAVE_CONFIG_H \
-DANDROID \
LOCAL_C_INCLUDES += \
$(TOPDIR)kernel/include \
$(TARGET_OUT_HEADERS)/libva \
$(LOCAL_PATH)/x11 \
$(TOPDIR)kernel/include/drm
$(LOCAL_PATH)/x11
LOCAL_CXX := g++
......@@ -37,4 +38,26 @@ LOCAL_SHARED_LIBRARIES := libdl libdrm libcutils
include $(BUILD_SHARED_LIBRARY)
include $(call all-makefiles-under,$(LOCAL_PATH))
# For libva_android_tpi
# =====================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
va_tpi.c \
LOCAL_C_INCLUDES += \
$(TARGET_OUT_HEADERS)/libva \
LOCAL_COPY_HEADERS_TO := libva/va
LOCAL_COPY_HEADERS := \
va.h \
va_backend.h \
va_backend_tpi.h
LOCAL_MODULE := libva_android_tpi
include $(BUILD_SHARED_LIBRARY)
......@@ -50,6 +50,25 @@ struct VADriverVTableTPI
struct v4l2_buffer *v4l2_buf, /* V4L2 buffer */
VASurfaceID *surface /* out */
);
VAStatus (*vaPutSurfaceBuf) (
VADisplay dpy,
VASurfaceID surface,
unsigned int draw, /* Android Surface/Window */
unsigned char* data,
int* data_len,
short srcx,
short srcy,
unsigned short srcw,
unsigned short srch,
short destx,
short desty,
unsigned short destw,
unsigned short desth,
VARectangle *cliprects, /* client supplied clip list */
unsigned int number_cliprects, /* number of clip rects in the clip list */
unsigned int flags /* de-interlacing flags */
);
};
......
......@@ -39,6 +39,16 @@
#define CTX(dpy) (((VADisplayContextP)dpy)->pDriverContext)
#define CHECK_DISPLAY(dpy) if( !vaDisplayIsValid(dpy) ) { return VA_STATUS_ERROR_INVALID_DISPLAY; }
#ifdef ANDROID
#define Drawable unsigned int
#endif
static int vaDisplayIsValid (VADisplay dpy)
{
VADisplayContextP pDisplayContext = (VADisplayContextP)dpy;
return pDisplayContext && (pDisplayContext->vadpy_magic == VA_DISPLAY_MAGIC) && pDisplayContext->vaIsValid(pDisplayContext);
}
/* 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
......@@ -97,3 +107,35 @@ VAStatus vaCreateSurfaceFromV4L2Buf(
} else
return VA_STATUS_ERROR_UNIMPLEMENTED;
}
VAStatus vaPutSurfaceBuf (
VADisplay dpy,
VASurfaceID surface,
Drawable draw, /* Android Surface/Window */
unsigned char* data,
int* data_len,
short srcx,
short srcy,
unsigned short srcw,
unsigned short srch,
short destx,
short desty,
unsigned short destw,
unsigned short desth,
VARectangle *cliprects, /* client supplied clip list */
unsigned int number_cliprects, /* number of clip rects in the clip list */
unsigned int flags /* de-interlacing flags */
)
{
VADriverContextP ctx;
struct VADriverVTableTPI *tpi;
CHECK_DISPLAY(dpy);
ctx = CTX(dpy);
tpi = ( struct VADriverVTableTPI *)ctx->vtable_tpi;
if (tpi && tpi->vaPutSurfaceBuf) {
return tpi->vaPutSurfaceBuf( ctx, surface, draw, data, data_len, srcx, srcy, srcw, srch,
destx, desty, destw, desth, cliprects, number_cliprects, flags );
} else
return VA_STATUS_ERROR_UNIMPLEMENTED;
}
......@@ -46,4 +46,21 @@ VAStatus vaCreateSurfaceFromV4L2Buf(
VASurfaceID *surface /* out */
);
VAStatus vaPutSurfaceBuf (
VADisplay dpy,
VASurfaceID surface,
Drawable draw, /* Android Surface/Window */
unsigned char* data,
int* data_len,
short srcx,
short srcy,
unsigned short srcw,
unsigned short srch,
short destx,
short desty,
unsigned short destw,
unsigned short desth,
VARectangle *cliprects, /* client supplied clip list */
unsigned int number_cliprects, /* number of clip rects in the clip list */
unsigned int flags /* de-interlacing flags */
);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment