From ab2d169dcfdad840a268655ec15907a33c19e4c3 Mon Sep 17 00:00:00 2001 From: Brian Zhu Date: Fri, 28 Oct 2016 14:30:56 +0000 Subject: PD#133846 Use jpeg_decode function for android N and ConvertMjpegToNV21 for earlier android version Change-Id: I5fce66d3d0b120d03dcdae0eef7ae6a844d7c9fe --- diff --git a/inc/mjpeg/defs.h b/inc/mjpeg/defs.h index b286a08..244e125 100755..100644 --- a/inc/mjpeg/defs.h +++ b/inc/mjpeg/defs.h @@ -40,7 +40,7 @@ typedef int8_t INT8; typedef uint8_t UINT8; typedef int16_t INT16; typedef uint16_t UINT16; -typedef int32_t INT32; +//typedef int32_t INT32; typedef uint32_t UINT32; typedef int64_t INT64; typedef uint64_t UINT64; diff --git a/v3/Android.mk b/v3/Android.mk index 335bbd3..8ab9013 100644 --- a/v3/Android.mk +++ b/v3/Android.mk @@ -67,6 +67,8 @@ LOCAL_SHARED_LIBRARIES += \ LOCAL_STATIC_LIBRARIES := \ libyuv_static \ +LOCAL_CFLAGS += -DANDROID_PLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION) + LOCAL_KK=0 ifeq ($(GPU_TYPE),t83x) LOCAL_KK:=1 @@ -92,6 +94,7 @@ LOCAL_C_INCLUDES += external/jpeg \ $(LOCAL_PATH)/inc \ $(call include-path-for, camera) \ $(TOP)/external/expat/lib \ + $(LOCAL_PATH)/../inc/mjpeg/ \ LOCAL_SRC_FILES := \ EmulatedCameraHal.cpp \ @@ -121,6 +124,8 @@ LOCAL_SRC_FILES := \ fake-pipeline2/camera_hw.cpp \ VendorTags.cpp \ LoadXml.cpp \ + ../mjpeg/jpegdec.c \ + ../mjpeg/colorspaces.c \ ifeq ($(TARGET_PRODUCT),vbox_x86) LOCAL_MODULE := camera.vbox_x86 diff --git a/v3/fake-pipeline2/Sensor.cpp b/v3/fake-pipeline2/Sensor.cpp index 1338a14..c8d4c56 100644 --- a/v3/fake-pipeline2/Sensor.cpp +++ b/v3/fake-pipeline2/Sensor.cpp @@ -41,6 +41,10 @@ #include +extern "C"{ + #include "jutils.h" +} + #define ARRAY_SIZE(x) (sizeof((x))/sizeof(((x)[0]))) @@ -1980,9 +1984,13 @@ void Sensor::captureRGB(uint8_t *img, uint32_t gain, uint32_t stride) { ALOGE("new buffer failed!\n"); return; } +#if ANDROID_PLATFORM_SDK_VERSION > 23 + if (jpeg_decode(&tmp_buffer, src, width, height, V4L2_PIX_FMT_NV21) != 0) { +#else if (ConvertMjpegToNV21(src, vinfo->picture.buf.bytesused, tmp_buffer, width, tmp_buffer + width * height, (width + 1) / 2, width, height, width, height, libyuv::FOURCC_MJPG) != 0) { +#endif DBG_LOGA("Decode MJPEG frame failed\n"); putback_picture_frame(vinfo); usleep(5000); @@ -2240,9 +2248,13 @@ void Sensor::captureNV21(StreamBuffer b, uint32_t gain) { uint32_t width = vinfo->preview.format.fmt.pix.width; uint32_t height = vinfo->preview.format.fmt.pix.height; memset(mTemp_buffer, 0 , width * height * 3/2); +#if ANDROID_PLATFORM_SDK_VERSION > 23 + if (jpeg_decode(&mTemp_buffer, src, width, height, V4L2_PIX_FMT_NV21) != 0) { +#else if (ConvertMjpegToNV21(src, vinfo->preview.buf.bytesused, mTemp_buffer, width, mTemp_buffer + width * height, (width + 1) / 2, width, height, width, height, libyuv::FOURCC_MJPG) != 0) { +#endif putback_frame(vinfo); ALOGE("%s , %d , Decode MJPEG frame failed \n", __FUNCTION__ , __LINE__); continue; -- cgit