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;