Add vaPutSurfaceBuf to va_backend_tpi.h and va_tpi.c[h], update Android.mk for new... 75/575/1
authorRen Zhaohan <zhaohan.ren@intel.com>
Tue, 11 May 2010 06:33:37 +0000 (14:33 +0800)
committerRen Zhaohan <zhaohan.ren@intel.com>
Tue, 11 May 2010 06:33:37 +0000 (14:33 +0800)
va/Android.mk
va/va_backend_tpi.h
va/va_tpi.c
va/va_tpi.h

index ff927d6..3743cae 100644 (file)
@@ -1,3 +1,6 @@
+# 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)
index 898a467..f4417d2 100644 (file)
@@ -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 */
+       );
 };
 
 
index fccd089..f375656 100644 (file)
 #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;
+}
index 559fdfc..65e6460 100644 (file)
@@ -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 */
+);