diff options
author | Emilian Peev <epeev@mm-sol.com> | 2012-09-04 12:09:17 +0300 |
---|---|---|
committer | Jason Simmons <jsimmons@google.com> | 2012-11-07 14:36:33 -0800 |
commit | d68392bec3edfd02bc24f8be35d84acbbd62f02c (patch) | |
tree | 8fd97f15bb7bd16f80f23f87bcb436a9b27c2bf0 | |
parent | 30f74d865f141304800d9a4a7bf243c66124e165 (diff) | |
download | omap4-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.cpp | 7 | ||||
-rw-r--r-- | camera/OMXCameraAdapter/OMXReprocess.cpp | 6 | ||||
-rw-r--r-- | camera/inc/CameraHal.h | 1 |
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 |