Build libva-utils on Android

Add new Android.mk in the top source directory and some sub-directories,
update some existent Android.mk files. Then I fixed compilation errors

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..5cbb9d8
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,4 @@
+# Recursive call sub-folder Android.mk
+#
+
+ include $(call all-subdir-makefiles)
diff --git a/decode/Android.mk b/decode/Android.mk
index 52f7bfd..31c92c6 100644
--- a/decode/Android.mk
+++ b/decode/Android.mk
@@ -1,8 +1,7 @@
-# For test_01
-# =====================================================
-
 LOCAL_PATH:= $(call my-dir)
 
+# mpeg2vldemo
+#
 include $(CLEAR_VARS)
 
 LOCAL_SRC_FILES := \
@@ -14,9 +13,7 @@
     -DANDROID
 
 LOCAL_C_INCLUDES += \
-  $(LOCAL_PATH)/../../va \
-  $(LOCAL_PATH)/../common \
-  $(TARGET_OUT_HEADERS)/libva
+  $(LOCAL_PATH)/../common
 
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE :=	mpeg2vldemo
@@ -25,3 +22,25 @@
 
 include $(BUILD_EXECUTABLE)
 
+# loadjpeg
+#
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+	loadjpeg.c \
+	tinyjpeg.c \
+	../common/va_display.c	\
+	../common/va_display_android.cpp
+
+LOCAL_CFLAGS += \
+    -DANDROID
+
+LOCAL_C_INCLUDES += \
+  $(LOCAL_PATH)/../common
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE :=	loadjpeg
+
+LOCAL_SHARED_LIBRARIES := libva libva-android libdl libdrm libcutils libutils libgui
+
+include $(BUILD_EXECUTABLE)
diff --git a/encode/Android.mk b/encode/Android.mk
index 430ffd9..389dde6 100644
--- a/encode/Android.mk
+++ b/encode/Android.mk
@@ -1,6 +1,5 @@
-# For test_01
-# =====================================================
-
+# h264encode
+#
 LOCAL_PATH:= $(call my-dir)
 
 include $(CLEAR_VARS)
@@ -14,9 +13,7 @@
     -DANDROID
 
 LOCAL_C_INCLUDES += \
-  $(LOCAL_PATH)/../../va \
-  $(LOCAL_PATH)/../common \
-  $(TARGET_OUT_HEADERS)/libva
+  $(LOCAL_PATH)/../common
 
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE :=	h264encode
@@ -25,7 +22,8 @@
 
 include $(BUILD_EXECUTABLE)
 
-
+# avcenc
+#
 include $(CLEAR_VARS)
 
 LOCAL_SRC_FILES := \
@@ -37,9 +35,7 @@
 	-DANDROID
 
 LOCAL_C_INCLUDES += \
-	$(LOCAL_PATH)/../../va \
-	$(LOCAL_PATH)/../common \
-	$(TARGET_OUT_HEADERS)/libva
+	$(LOCAL_PATH)/../common
 
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE :=	avcenc
@@ -48,3 +44,90 @@
 
 include $(BUILD_EXECUTABLE)
 
+# vp9enc
+#
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+	../common/va_display.c			\
+	../common/va_display_android.cpp	\
+	vp9enc.c
+
+LOCAL_CFLAGS += \
+	-DANDROID
+
+LOCAL_C_INCLUDES += \
+	$(LOCAL_PATH)/../common
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE :=	vp9enc
+
+LOCAL_SHARED_LIBRARIES := libva-android libva libdl libdrm libcutils libutils libgui
+
+include $(BUILD_EXECUTABLE)
+
+# jpegenc
+#
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+	../common/va_display.c			\
+	../common/va_display_android.cpp	\
+	jpegenc.c
+
+LOCAL_CFLAGS += \
+	-DANDROID
+
+LOCAL_C_INCLUDES += \
+	$(LOCAL_PATH)/../common
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE :=	jpegenc
+
+LOCAL_SHARED_LIBRARIES := libva-android libva libdl libdrm libcutils libutils libgui
+
+include $(BUILD_EXECUTABLE)
+
+# mpeg2vaenc
+#
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+	../common/va_display.c			\
+	../common/va_display_android.cpp	\
+	mpeg2vaenc.c
+
+LOCAL_CFLAGS += \
+	-DANDROID
+
+LOCAL_C_INCLUDES += \
+	$(LOCAL_PATH)/../common
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE :=	mpeg2vaenc
+
+LOCAL_SHARED_LIBRARIES := libva-android libva libdl libdrm libcutils libutils libgui
+
+include $(BUILD_EXECUTABLE)
+
+# svctenc
+#
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+	../common/va_display.c			\
+	../common/va_display_android.cpp	\
+	svctenc.c
+
+LOCAL_CFLAGS += \
+	-DANDROID
+
+LOCAL_C_INCLUDES += \
+	$(LOCAL_PATH)/../common
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE :=	svctenc
+
+LOCAL_SHARED_LIBRARIES := libva-android libva libdl libdrm libcutils libutils libgui
+
+include $(BUILD_EXECUTABLE)
diff --git a/putsurface/Android.mk b/putsurface/Android.mk
index 03edb61..c02234f 100644
--- a/putsurface/Android.mk
+++ b/putsurface/Android.mk
@@ -7,13 +7,12 @@
 
 LOCAL_SRC_FILES := \
   putsurface_android.cpp
-  #putsurface_x11.c
 
 LOCAL_CFLAGS += \
     -DANDROID
 
 LOCAL_C_INCLUDES += \
-  $(TARGET_OUT_HEADERS)/libva
+  $(LOCAL_PATH)/../common
 
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE := putsurface
diff --git a/putsurface/putsurface_android.cpp b/putsurface/putsurface_android.cpp
index b4e0a92..44c72a9 100644
--- a/putsurface/putsurface_android.cpp
+++ b/putsurface/putsurface_android.cpp
@@ -47,7 +47,7 @@
 static int create_window(void *win_display, int x, int y, int width, int height);
 static int check_window_event(void *x11_display, void *win, int *width, int *height, int *quit);
 
-#define CAST_DRAWABLE(a)  static_cast<ANativeWindow *>((void *)(*(unsigned int *)a))
+#define CAST_DRAWABLE(a)  static_cast<ANativeWindow *>((void *)(*(unsigned long *)a))
 #include "putsurface_common.c"
 
 static void *open_display()
diff --git a/putsurface/putsurface_common.c b/putsurface/putsurface_common.c
index 07559f3..997b944 100755
--- a/putsurface/putsurface_common.c
+++ b/putsurface/putsurface_common.c
@@ -161,7 +161,7 @@
     if (num_image_formats == 0)
         return 0;
 
-    image_formats = malloc(num_image_formats * sizeof(*image_formats));
+    image_formats = (VAImageFormat *)malloc(num_image_formats * sizeof(*image_formats));
     if (!image_formats)
         return 0;
 
@@ -210,7 +210,7 @@
     /* Guess the number of surface attributes, thus including any
        pixel-format supported by the VA driver */
     num_surface_attribs = VASurfaceAttribCount + num_image_formats;
-    surface_attribs = malloc(num_surface_attribs * sizeof(*surface_attribs));
+    surface_attribs = (VASurfaceAttrib *)malloc(num_surface_attribs * sizeof(*surface_attribs));
     if (!surface_attribs)
         return 0;
 
@@ -219,7 +219,7 @@
     if (va_status == VA_STATUS_SUCCESS)
         va_surface_attribs =  surface_attribs;
     else if (va_status == VA_STATUS_ERROR_MAX_NUM_EXCEEDED) {
-        va_surface_attribs = realloc(surface_attribs,
+        va_surface_attribs = (VASurfaceAttrib *)realloc(surface_attribs,
             num_surface_attribs * sizeof(*va_surface_attribs));
         if (!va_surface_attribs) {
             free(surface_attribs);
@@ -261,7 +261,7 @@
     if (!lookup_image_format(csc_dst_fourcc)) {
         test_color_conversion = 0;
         printf("VA driver doesn't support %s image, skip additional color conversion\n",  map_vafourcc_to_str(csc_dst_fourcc));
-        goto cleanup;
+        return test_color_conversion;
     }
 
     // 2. make sure src_fourcc is supported for vaSurface
diff --git a/vainfo/Android.mk b/vainfo/Android.mk
new file mode 100644
index 0000000..8fb517d
--- /dev/null
+++ b/vainfo/Android.mk
@@ -0,0 +1,25 @@
+# For vainfo
+# =====================================================
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+	vainfo.c		\
+	../common/va_display.c	\
+	../common/va_display_android.cpp
+
+LOCAL_CFLAGS += \
+  -DANDROID
+
+LOCAL_C_INCLUDES += \
+  $(LOCAL_PATH)/../common
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE := vainfo
+
+LOCAL_SHARED_LIBRARIES := libva-android libva libdl libdrm libcutils libutils libgui
+
+include $(BUILD_EXECUTABLE)
+
diff --git a/vainfo/vainfo.c b/vainfo/vainfo.c
index 56eb620..f9104a3 100644
--- a/vainfo/vainfo.c
+++ b/vainfo/vainfo.c
@@ -32,6 +32,13 @@
 
 #include "va_display.h"
 
+#ifdef ANDROID
+
+/* Macros generated from configure */
+#define LIBVA_VERSION_S "2.0.0"
+
+#endif
+
 #define CHECK_VASTATUS(va_status,func, ret)                             \
 if (va_status != VA_STATUS_SUCCESS) {                                   \
     fprintf(stderr,"%s failed with error code %d (%s),exit\n",func, va_status, vaErrorStr(va_status)); \
diff --git a/videoprocess/Android.mk b/videoprocess/Android.mk
new file mode 100644
index 0000000..fa06407
--- /dev/null
+++ b/videoprocess/Android.mk
@@ -0,0 +1,23 @@
+# vavpp
+#
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+  ../common/va_display.c \
+  ../common/va_display_android.cpp \
+  vavpp.cpp
+
+LOCAL_CFLAGS += \
+    -DANDROID
+
+LOCAL_C_INCLUDES += \
+  $(LOCAL_PATH)/../common
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE :=	vavpp
+
+LOCAL_SHARED_LIBRARIES := libva-android libva libdl libdrm  libcutils libutils libgui libm
+
+include $(BUILD_EXECUTABLE)
diff --git a/videoprocess/vavpp.cpp b/videoprocess/vavpp.cpp
index 5caf0b6..94b467e 100644
--- a/videoprocess/vavpp.cpp
+++ b/videoprocess/vavpp.cpp
@@ -939,11 +939,11 @@
         g_out_fourcc == VA_FOURCC_I420 ||
         g_out_fourcc == VA_FOURCC_NV12) {
         if (g_dst_file_fourcc == VA_FOURCC_YV12)
-            store_yuv_surface_to_yv12_file(fp, surface_id);
+            return store_yuv_surface_to_yv12_file(fp, surface_id);
         else if (g_dst_file_fourcc == VA_FOURCC_I420)
-            store_yuv_surface_to_i420_file(fp, surface_id);
+            return store_yuv_surface_to_i420_file(fp, surface_id);
         else if (g_dst_file_fourcc == VA_FOURCC_NV12)
-            store_yuv_surface_to_nv12_file(fp, surface_id);
+            return store_yuv_surface_to_nv12_file(fp, surface_id);
         else {
             printf("Not supported YUV fourcc for output !!!\n");
             return VA_STATUS_ERROR_INVALID_SURFACE;
@@ -952,12 +952,12 @@
                 g_dst_file_fourcc == VA_FOURCC_YUY2) ||
                (g_out_fourcc == VA_FOURCC_UYVY &&
                 g_dst_file_fourcc == VA_FOURCC_UYVY)) {
-        store_packed_yuv_surface_to_packed_file(fp, surface_id);
+        return store_packed_yuv_surface_to_packed_file(fp, surface_id);
     } else if ((g_out_fourcc == VA_FOURCC_I010 &&
                 g_dst_file_fourcc == VA_FOURCC_I010) ||
                (g_out_fourcc == VA_FOURCC_P010 &&
                 g_dst_file_fourcc == VA_FOURCC_P010)) {
-        store_yuv_surface_to_10bit_file(fp, surface_id);
+        return store_yuv_surface_to_10bit_file(fp, surface_id);
     } else {
         printf("Not supported YUV fourcc for output !!!\n");
         return VA_STATUS_ERROR_INVALID_SURFACE;