summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmilian Peev <epeev@mm-sol.com>2012-09-04 12:09:17 +0300
committerJason Simmons <jsimmons@google.com>2012-11-07 14:36:33 -0800
commitd68392bec3edfd02bc24f8be35d84acbbd62f02c (patch)
tree8fd97f15bb7bd16f80f23f87bcb436a9b27c2bf0
parent30f74d865f141304800d9a4a7bf243c66124e165 (diff)
downloadomap4-aah-d68392bec3edfd02bc24f8be35d84acbbd62f02c.tar.gz
CameraHal: Add support for UYVY reprocessing
NOTE: Currently UYVY is mapped to 'CameraParameters::PIXEL_FORMAT_YUV422I' which is not entirely correct. The Google pixelformat expects YUYV ordering of the components. Change-Id: Ia82e08363d6804e51c447eb845da2ca23fc29ae9 Signed-off-by: Emilian Peev <epeev@mm-sol.com> Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
-rw-r--r--camera/BufferSourceAdapter.cpp7
-rw-r--r--camera/OMXCameraAdapter/OMXReprocess.cpp6
-rw-r--r--camera/inc/CameraHal.h1
3 files changed, 11 insertions, 3 deletions
diff --git a/camera/BufferSourceAdapter.cpp b/camera/BufferSourceAdapter.cpp
index a595b4b..97a7809 100644
--- a/camera/BufferSourceAdapter.cpp
+++ b/camera/BufferSourceAdapter.cpp
@@ -31,8 +31,7 @@ static int getANWFormat(const char* parameters_format)
if (parameters_format != NULL) {
if (strcmp(parameters_format, android::CameraParameters::PIXEL_FORMAT_YUV422I) == 0) {
CAMHAL_LOGDA("CbYCrY format selected");
- // TODO(XXX): not defined yet
- format = -1;
+ format = HAL_PIXEL_FORMAT_TI_UYVY;
} else if (strcmp(parameters_format, android::CameraParameters::PIXEL_FORMAT_YUV420SP) == 0) {
CAMHAL_LOGDA("YUV420SP format selected");
format = HAL_PIXEL_FORMAT_TI_NV12;
@@ -78,6 +77,8 @@ static const char* getFormatFromANW(int format)
return android::CameraParameters::PIXEL_FORMAT_YUV420SP;
case HAL_PIXEL_FORMAT_TI_Y16:
return android::CameraParameters::PIXEL_FORMAT_BAYER_RGGB;
+ case HAL_PIXEL_FORMAT_TI_UYVY:
+ return android::CameraParameters::PIXEL_FORMAT_YUV422I;
default:
break;
}
@@ -88,6 +89,7 @@ static CameraFrame::FrameType formatToOutputFrameType(const char* format) {
switch (getANWFormat(format)) {
case HAL_PIXEL_FORMAT_TI_NV12:
case HAL_PIXEL_FORMAT_TI_Y16:
+ case HAL_PIXEL_FORMAT_TI_UYVY:
// Assuming NV12 1D is RAW or Image frame
return CameraFrame::RAW_FRAME;
default:
@@ -102,6 +104,7 @@ static int getHeightFromFormat(const char* format, int stride, int size) {
case HAL_PIXEL_FORMAT_TI_NV12:
return (size / (3 * stride)) * 2;
case HAL_PIXEL_FORMAT_TI_Y16:
+ case HAL_PIXEL_FORMAT_TI_UYVY:
return (size / stride) / 2;
default:
break;
diff --git a/camera/OMXCameraAdapter/OMXReprocess.cpp b/camera/OMXCameraAdapter/OMXReprocess.cpp
index 9057c1c..6fdbe7b 100644
--- a/camera/OMXCameraAdapter/OMXReprocess.cpp
+++ b/camera/OMXCameraAdapter/OMXReprocess.cpp
@@ -60,6 +60,9 @@ status_t OMXCameraAdapter::setParametersReprocess(const android::CameraParameter
} else if (strcmp(valstr, android::CameraParameters::PIXEL_FORMAT_BAYER_RGGB) == 0) {
CAMHAL_LOGDA("RAW Picture format selected");
pixFormat = OMX_COLOR_FormatRawBayer10bit;
+ } else if (strcmp(valstr, android::CameraParameters::PIXEL_FORMAT_YUV422I) == 0) {
+ CAMHAL_LOGDA("YUV422i Picture format selected");
+ pixFormat = OMX_COLOR_FormatCbYCrY;
} else {
CAMHAL_LOGDA("Format not supported, selecting YUV420SP by default");
pixFormat = OMX_COLOR_FormatYUV420SemiPlanar;
@@ -74,7 +77,8 @@ status_t OMXCameraAdapter::setParametersReprocess(const android::CameraParameter
portData->mWidth = w;
portData->mHeight = h;
- if ( OMX_COLOR_FormatRawBayer10bit == pixFormat ) {
+ if ( ( OMX_COLOR_FormatRawBayer10bit == pixFormat ) ||
+ ( OMX_COLOR_FormatCbYCrY == pixFormat ) ) {
portData->mStride = w * 2;
} else {
portData->mStride = s;
diff --git a/camera/inc/CameraHal.h b/camera/inc/CameraHal.h
index f1119fc..29825c3 100644
--- a/camera/inc/CameraHal.h
+++ b/camera/inc/CameraHal.h
@@ -60,6 +60,7 @@
#define HAL_PIXEL_FORMAT_TI_NV12 0x100
#define HAL_PIXEL_FORMAT_TI_Y8 0x103
#define HAL_PIXEL_FORMAT_TI_Y16 0x104
+#define HAL_PIXEL_FORMAT_TI_UYVY 0x105
#define MIN_WIDTH 640
#define MIN_HEIGHT 480