-rw-r--r-- | v3/Android.mk | 15 | ||||
-rw-r--r-- | v3/fake-pipeline2/Sensor.cpp | 65 | ||||
-rw-r--r-- | v3/libamljpeg_static.a | 8538 | ||||
-rw-r--r-- | v3/libconvert_static.a | 5129 |
4 files changed, 19 insertions, 13728 deletions
diff --git a/v3/fake-pipeline2/Sensor.cpp b/v3/fake-pipeline2/Sensor.cpp index dd1e034..2c5048b 100644 --- a/v3/fake-pipeline2/Sensor.cpp +++ b/v3/fake-pipeline2/Sensor.cpp @@ -33,48 +33,15 @@ #include <cstdlib> #include <hardware/camera3.h> #include "system/camera_metadata.h" -//#include "libyuv.h" +#include "libyuv.h" #include "NV12_resize.h" -//#include "libyuv/scale.h" +#include "libyuv/scale.h" #include "ge2d_stream.h" #include "util.h" #include <sys/time.h> -extern "C" int amlMjpegToNV21(const uint8_t* src_frame, size_t src_size, - uint8_t* dst_y, int dst_stride_y, - uint8_t* dst_uv, int dst_stride_uv, - int src_width, int src_height, - int dst_width, int dst_height, - uint32_t format); - -extern "C" int amlToI420(const uint8_t* src_frame, size_t src_size, - uint8_t* dst_y, int dst_stride_y, - uint8_t* dst_u, int dst_stride_u, - uint8_t* dst_v, int dst_stride_v, - int crop_x, int crop_y, - int src_width, int src_height, - int dst_width, int dst_height, - int rotation, - uint32_t format); - - -extern "C" int I420Scale(const uint8_t* src_y, int src_stride_y, - const uint8_t* src_u, int src_stride_u, - const uint8_t* src_v, int src_stride_v, - int src_width, int src_height, - uint8_t* dst_y, int dst_stride_y, - uint8_t* dst_u, int dst_stride_u, - uint8_t* dst_v, int dst_stride_v, - int dst_width, int dst_height, - uint32_t filtering); - -#define FOURCC(a, b, c, d) ( \ - (static_cast<uint32_t>(a)) | (static_cast<uint32_t>(b) << 8) | \ - (static_cast<uint32_t>(c) << 16) | (static_cast<uint32_t>(d) << 24)) - - #define ARRAY_SIZE(x) (sizeof((x))/sizeof(((x)[0]))) namespace android { @@ -2006,9 +1973,9 @@ void Sensor::captureRGB(uint8_t *img, uint32_t gain, uint32_t stride) { ALOGE("new buffer failed!\n"); return; } - if (amlMjpegToNV21(src, vinfo->picture.buf.bytesused, tmp_buffer, + if (ConvertMjpegToNV21(src, vinfo->picture.buf.bytesused, tmp_buffer, width, tmp_buffer + width * height, (width + 1) / 2, width, - height, width, height, FOURCC('M', 'J', 'P', 'G')) != 0) { + height, width, height, libyuv::FOURCC_MJPG) != 0) { DBG_LOGA("Decode MJPEG frame failed\n"); putback_picture_frame(vinfo); usleep(5000); @@ -2265,9 +2232,9 @@ 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 (amlMjpegToNV21(src, vinfo->preview.buf.bytesused, mTemp_buffer, + if (ConvertMjpegToNV21(src, vinfo->preview.buf.bytesused, mTemp_buffer, width, mTemp_buffer + width * height, (width + 1) / 2, width, - height, width, height, FOURCC('M', 'J', 'P', 'G')) != 0) { + height, width, height, libyuv::FOURCC_MJPG) != 0) { putback_frame(vinfo); ALOGE("%s , %d , Decode MJPEG frame failed \n", __FUNCTION__ , __LINE__); continue; @@ -2355,7 +2322,7 @@ void Sensor::captureYV12(StreamBuffer b, uint32_t gain) { int width = vinfo->preview.format.fmt.pix.width; int height = vinfo->preview.format.fmt.pix.height; - int ret = I420Scale(src, width, + int ret = libyuv::I420Scale(src, width, src + width * height, width / 2, src + width * height + width * height / 4, width / 2, width, height, @@ -2363,7 +2330,7 @@ void Sensor::captureYV12(StreamBuffer b, uint32_t gain) { b.img + b.width * b.height, b.width / 2, b.img + b.width * b.height + b.width * b.height / 4, b.width / 2, b.width, b.height, - 0); + libyuv::kFilterNone); if (ret < 0) ALOGE("Sclale YV12 frame down failed!\n"); } else if (vinfo->preview.format.fmt.pix.pixelformat == V4L2_PIX_FMT_YUYV) { @@ -2378,7 +2345,7 @@ void Sensor::captureYV12(StreamBuffer b, uint32_t gain) { YUYVToYV12(src, tmp_buffer, width, height); - int ret = I420Scale(tmp_buffer, width, + int ret = libyuv::I420Scale(tmp_buffer, width, tmp_buffer + width * height, width / 2, tmp_buffer + width * height + width * height / 4, width / 2, width, height, @@ -2386,7 +2353,7 @@ void Sensor::captureYV12(StreamBuffer b, uint32_t gain) { b.img + b.width * b.height, b.width / 2, b.img + b.width * b.height + b.width * b.height / 4, b.width / 2, b.width, b.height, - 0); + libyuv::kFilterNone); if (ret < 0) ALOGE("Sclale YV12 frame down failed!\n"); delete [] tmp_buffer; @@ -2400,13 +2367,13 @@ void Sensor::captureYV12(StreamBuffer b, uint32_t gain) { return; } - if (amlToI420(src, vinfo->preview.buf.bytesused, tmp_buffer, width, tmp_buffer + width * height + width * height / 4, (width + 1) / 2, + if (ConvertToI420(src, vinfo->preview.buf.bytesused, tmp_buffer, width, tmp_buffer + width * height + width * height / 4, (width + 1) / 2, tmp_buffer + width * height, (width + 1) / 2, 0, 0, width, height, - width, height, 0, FOURCC('M', 'J', 'P', 'G')) != 0) { + width, height, libyuv::kRotate0, libyuv::FOURCC_MJPG) != 0) { DBG_LOGA("Decode MJPEG frame failed\n"); } - int ret = I420Scale(tmp_buffer, width, + int ret = libyuv::I420Scale(tmp_buffer, width, tmp_buffer + width * height, width / 2, tmp_buffer + width * height + width * height / 4, width / 2, width, height, @@ -2414,7 +2381,7 @@ void Sensor::captureYV12(StreamBuffer b, uint32_t gain) { b.img + b.width * b.height, b.width / 2, b.img + b.width * b.height + b.width * b.height / 4, b.width / 2, b.width, b.height, - 0); + libyuv::kFilterNone); if (ret < 0) ALOGE("Sclale YV12 frame down failed!\n"); @@ -2470,9 +2437,9 @@ void Sensor::captureYV12(StreamBuffer b, uint32_t gain) { } else if (vinfo->preview.format.fmt.pix.pixelformat == V4L2_PIX_FMT_MJPEG) { int width = vinfo->preview.format.fmt.pix.width; int height = vinfo->preview.format.fmt.pix.height; - if (amlToI420(src, vinfo->preview.buf.bytesused, b.img, width, b.img + width * height + width * height / 4, (width + 1) / 2, + if (ConvertToI420(src, vinfo->preview.buf.bytesused, b.img, width, b.img + width * height + width * height / 4, (width + 1) / 2, b.img + width * height, (width + 1) / 2, 0, 0, width, height, - width, height, 0, FOURCC('M', 'J', 'P', 'G')) != 0) { + width, height, libyuv::kRotate0, libyuv::FOURCC_MJPG) != 0) { putback_frame(vinfo); DBG_LOGA("Decode MJPEG frame failed\n"); continue; |