summaryrefslogtreecommitdiff
path: root/camera/OMXCameraAdapter
diff options
context:
space:
mode:
Diffstat (limited to 'camera/OMXCameraAdapter')
-rw-r--r--camera/OMXCameraAdapter/OMXAlgo.cpp4
-rwxr-xr-xcamera/OMXCameraAdapter/OMXCameraAdapter.cpp28
-rw-r--r--camera/OMXCameraAdapter/OMXCapture.cpp61
-rw-r--r--camera/OMXCameraAdapter/OMXExif.cpp52
4 files changed, 66 insertions, 79 deletions
diff --git a/camera/OMXCameraAdapter/OMXAlgo.cpp b/camera/OMXCameraAdapter/OMXAlgo.cpp
index ff68cc93..12b9058f 100644
--- a/camera/OMXCameraAdapter/OMXAlgo.cpp
+++ b/camera/OMXCameraAdapter/OMXAlgo.cpp
@@ -641,10 +641,10 @@ status_t OMXCameraAdapter::setCaptureMode(OMXCameraAdapter::CaptureMode mode)
CAMHAL_LOGDA("Camera mode: HIGH QUALITY_ZSL");
camMode.eCamOperatingMode = OMX_TI_CaptureImageProfileZeroShutterLag;
- valstr = mParams.get(TICameraParameters::KEY_RECORDING_HINT);
- if (!valstr || (valstr && (strcmp(valstr, "false")))) {
+ if ( !mIternalRecordingHint ) {
zslHistoryLen.nHistoryLen = 5;
}
+
}
else if( OMXCameraAdapter::VIDEO_MODE == mode )
{
diff --git a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp
index 11ecf0ff..392de932 100755
--- a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp
+++ b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp
@@ -191,6 +191,7 @@ status_t OMXCameraAdapter::initialize(CameraProperties::Properties* caps)
mZoomParameterIdx = 0;
mExposureBracketingValidEntries = 0;
mSensorOverclock = false;
+ mIternalRecordingHint = false;
mDeviceOrientation = 0;
mCapabilities = caps;
@@ -536,6 +537,13 @@ status_t OMXCameraAdapter::setParameters(const CameraParameters &params)
mOMXStateSwitch = true;
}
+ valstr = params.get(TICameraParameters::KEY_RECORDING_HINT);
+ if (!valstr || (valstr && (strcmp(valstr, CameraParameters::FALSE)))) {
+ mIternalRecordingHint = false;
+ } else {
+ mIternalRecordingHint = true;
+ }
+
#ifdef OMAP_ENHANCEMENT
if ( (valstr = params.get(TICameraParameters::KEY_MEASUREMENT_ENABLE)) != NULL )
@@ -1465,13 +1473,6 @@ status_t OMXCameraAdapter::UseBuffersPreview(void* bufArr, int num)
LOG_FUNCTION_NAME;
- ///Flag to determine whether it is 3D camera or not
- bool isS3d = false;
- const char *valstr = NULL;
- if ( (valstr = mParams.get(TICameraParameters::KEY_S3D_SUPPORTED)) != NULL) {
- isS3d = (strcmp(valstr, "true") == 0);
- }
-
if(!bufArr)
{
CAMHAL_LOGEA("NULL pointer passed for buffArr");
@@ -1531,8 +1532,7 @@ status_t OMXCameraAdapter::UseBuffersPreview(void* bufArr, int num)
CAMHAL_LOGDB("Camera Mode = %d", mCapMode);
- if( ( mCapMode == OMXCameraAdapter::VIDEO_MODE ) ||
- ( isS3d && (mCapMode == OMXCameraAdapter::HIGH_QUALITY)) )
+ if( mCapMode == OMXCameraAdapter::VIDEO_MODE )
{
///Enable/Disable Video Noise Filter
ret = enableVideoNoiseFilter(mVnfEnabled);
@@ -3085,17 +3085,15 @@ OMX_ERRORTYPE OMXCameraAdapter::OMXCameraAdapterFillBufferDone(OMX_IN OMX_HANDLE
const char *valstr = NULL;
pixFormat = mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mImagePortIndex].mColorFormat;
- valstr = mParams.getPictureFormat();
if ( OMX_COLOR_FormatUnused == pixFormat )
{
typeOfFrame = CameraFrame::IMAGE_FRAME;
mask = (unsigned int) CameraFrame::IMAGE_FRAME;
- }
- else if ( pixFormat == OMX_COLOR_FormatCbYCrY &&
- ((valstr && !strcmp(valstr, CameraParameters::PIXEL_FORMAT_JPEG)) ||
- !valstr) )
- {
+ } else if ( pixFormat == OMX_COLOR_FormatCbYCrY &&
+ ((mPictureFormatFromClient &&
+ !strcmp(mPictureFormatFromClient, CameraParameters::PIXEL_FORMAT_JPEG)) ||
+ !mPictureFormatFromClient) ) {
// signals to callbacks that this needs to be coverted to jpeg
// before returning to framework
typeOfFrame = CameraFrame::IMAGE_FRAME;
diff --git a/camera/OMXCameraAdapter/OMXCapture.cpp b/camera/OMXCameraAdapter/OMXCapture.cpp
index 93a0dae5..6ad5f88e 100644
--- a/camera/OMXCameraAdapter/OMXCapture.cpp
+++ b/camera/OMXCameraAdapter/OMXCapture.cpp
@@ -63,69 +63,48 @@ status_t OMXCameraAdapter::setParametersCapture(const CameraParameters &params,
CAMHAL_LOGVB("Image: cap.mWidth = %d", (int)cap->mWidth);
CAMHAL_LOGVB("Image: cap.mHeight = %d", (int)cap->mHeight);
- if ( (valstr = params.getPictureFormat()) != NULL )
- {
- if (strcmp(valstr, (const char *) CameraParameters::PIXEL_FORMAT_YUV422I) == 0)
- {
+ if ((valstr = params.getPictureFormat()) != NULL) {
+ if (strcmp(valstr, (const char *) CameraParameters::PIXEL_FORMAT_YUV422I) == 0) {
CAMHAL_LOGDA("CbYCrY format selected");
pixFormat = OMX_COLOR_FormatCbYCrY;
- }
- else if(strcmp(valstr, (const char *) CameraParameters::PIXEL_FORMAT_YUV420SP) == 0)
- {
+ mPictureFormatFromClient = CameraParameters::PIXEL_FORMAT_YUV422I;
+ } else if(strcmp(valstr, (const char *) CameraParameters::PIXEL_FORMAT_YUV420SP) == 0) {
CAMHAL_LOGDA("YUV420SP format selected");
pixFormat = OMX_COLOR_FormatYUV420SemiPlanar;
- }
- else if(strcmp(valstr, (const char *) CameraParameters::PIXEL_FORMAT_RGB565) == 0)
- {
+ mPictureFormatFromClient = CameraParameters::PIXEL_FORMAT_YUV420SP;
+ } else if(strcmp(valstr, (const char *) CameraParameters::PIXEL_FORMAT_RGB565) == 0) {
CAMHAL_LOGDA("RGB565 format selected");
pixFormat = OMX_COLOR_Format16bitRGB565;
- }
- else if(strcmp(valstr, (const char *) CameraParameters::PIXEL_FORMAT_JPEG) == 0)
- {
+ mPictureFormatFromClient = CameraParameters::PIXEL_FORMAT_RGB565;
+ } else if (strcmp(valstr, (const char *) CameraParameters::PIXEL_FORMAT_JPEG) == 0) {
CAMHAL_LOGDA("JPEG format selected");
pixFormat = OMX_COLOR_FormatUnused;
mCodingMode = CodingNone;
- }
- else if(strcmp(valstr, (const char *) TICameraParameters::PIXEL_FORMAT_JPS) == 0)
- {
+ mPictureFormatFromClient = CameraParameters::PIXEL_FORMAT_JPEG;
+ } else if (strcmp(valstr, (const char *) TICameraParameters::PIXEL_FORMAT_JPS) == 0) {
CAMHAL_LOGDA("JPS format selected");
pixFormat = OMX_COLOR_FormatUnused;
mCodingMode = CodingJPS;
- }
- else if(strcmp(valstr, (const char *) TICameraParameters::PIXEL_FORMAT_MPO) == 0)
- {
+ mPictureFormatFromClient = TICameraParameters::PIXEL_FORMAT_JPS;
+ } else if (strcmp(valstr, (const char *) TICameraParameters::PIXEL_FORMAT_MPO) == 0) {
CAMHAL_LOGDA("MPO format selected");
pixFormat = OMX_COLOR_FormatUnused;
mCodingMode = CodingMPO;
- }
- else if(strcmp(valstr, (const char *) TICameraParameters::PIXEL_FORMAT_RAW_JPEG) == 0)
- {
- CAMHAL_LOGDA("RAW + JPEG format selected");
- pixFormat = OMX_COLOR_FormatUnused;
- mCodingMode = CodingRAWJPEG;
- }
- else if(strcmp(valstr, (const char *) TICameraParameters::PIXEL_FORMAT_RAW_MPO) == 0)
- {
- CAMHAL_LOGDA("RAW + MPO format selected");
- pixFormat = OMX_COLOR_FormatUnused;
- mCodingMode = CodingRAWMPO;
- }
- else if(strcmp(valstr, (const char *) TICameraParameters::PIXEL_FORMAT_RAW) == 0)
- {
+ mPictureFormatFromClient = TICameraParameters::PIXEL_FORMAT_MPO;
+ } else if (strcmp(valstr, (const char *) TICameraParameters::PIXEL_FORMAT_RAW) == 0) {
CAMHAL_LOGDA("RAW Picture format selected");
pixFormat = OMX_COLOR_FormatRawBayer10bit;
- }
- else
- {
+ mPictureFormatFromClient = TICameraParameters::PIXEL_FORMAT_RAW;
+ } else {
CAMHAL_LOGEA("Invalid format, JPEG format selected as default");
pixFormat = OMX_COLOR_FormatUnused;
- }
+ mPictureFormatFromClient = NULL;
}
- else
- {
+ } else {
CAMHAL_LOGEA("Picture format is NULL, defaulting to JPEG");
pixFormat = OMX_COLOR_FormatUnused;
- }
+ mPictureFormatFromClient = NULL;
+ }
// JPEG capture is not supported in video mode by OMX Camera
// Set capture format to yuv422i...jpeg encode will
diff --git a/camera/OMXCameraAdapter/OMXExif.cpp b/camera/OMXCameraAdapter/OMXExif.cpp
index 70fb3db7..76d94bdd 100644
--- a/camera/OMXCameraAdapter/OMXExif.cpp
+++ b/camera/OMXCameraAdapter/OMXExif.cpp
@@ -193,6 +193,7 @@ status_t OMXCameraAdapter::setParametersEXIF(const CameraParameters &params,
if( ( valstr = params.get(TICameraParameters::KEY_EXIF_MODEL ) ) != NULL )
{
CAMHAL_LOGVB("EXIF Model: %s", valstr);
+ strncpy(mEXIFData.mModel, valstr, EXIF_MODEL_SIZE - 1);
mEXIFData.mModelValid= true;
}
else
@@ -203,6 +204,7 @@ status_t OMXCameraAdapter::setParametersEXIF(const CameraParameters &params,
if( ( valstr = params.get(TICameraParameters::KEY_EXIF_MAKE ) ) != NULL )
{
CAMHAL_LOGVB("EXIF Make: %s", valstr);
+ strncpy(mEXIFData.mMake, valstr, EXIF_MAKE_SIZE - 1);
mEXIFData.mMakeValid = true;
}
else
@@ -210,6 +212,18 @@ status_t OMXCameraAdapter::setParametersEXIF(const CameraParameters &params,
mEXIFData.mMakeValid= false;
}
+
+ if( ( valstr = params.get(CameraParameters::KEY_FOCAL_LENGTH) ) != NULL ) {
+ CAMHAL_LOGVB("EXIF Focal length: %s", valstr);
+ ExifElementsTable::stringToRational(valstr,
+ &mEXIFData.mFocalNum,
+ &mEXIFData.mFocalDen);
+ } else {
+ mEXIFData.mFocalNum = 0;
+ mEXIFData.mFocalDen = 0;
+ }
+
+
LOG_FUNCTION_NAME_EXIT;
return ret;
@@ -293,7 +307,7 @@ status_t OMXCameraAdapter::setupEXIF()
( mEXIFData.mModelValid ) )
{
strncpy(( char * ) sharedPtr,
- ( char * ) mParams.get(TICameraParameters::KEY_EXIF_MODEL ),
+ mEXIFData.mModel,
EXIF_MODEL_SIZE - 1);
exifTags->pModelBuff = ( OMX_S8 * ) ( sharedPtr - sharedBuffer.pSharedBuff );
@@ -306,8 +320,8 @@ status_t OMXCameraAdapter::setupEXIF()
( mEXIFData.mMakeValid ) )
{
strncpy( ( char * ) sharedPtr,
- ( char * ) mParams.get(TICameraParameters::KEY_EXIF_MAKE ),
- EXIF_MAKE_SIZE - 1);
+ mEXIFData.mMake,
+ EXIF_MAKE_SIZE - 1);
exifTags->pMakeBuff = ( OMX_S8 * ) ( sharedPtr - sharedBuffer.pSharedBuff );
exifTags->ulMakeBuffSizeBytes = strlen((char*)sharedPtr) + 1;
@@ -317,12 +331,9 @@ status_t OMXCameraAdapter::setupEXIF()
if ( ( OMX_TI_TagReadWrite == exifTags->eStatusFocalLength ))
{
- unsigned int numerator = 0, denominator = 0;
- ExifElementsTable::stringToRational(mParams.get(CameraParameters::KEY_FOCAL_LENGTH),
- &numerator, &denominator);
- if (numerator || denominator) {
- exifTags->ulFocalLength[0] = (OMX_U32) numerator;
- exifTags->ulFocalLength[1] = (OMX_U32) denominator;
+ if (mEXIFData.mFocalNum || mEXIFData.mFocalDen ) {
+ exifTags->ulFocalLength[0] = (OMX_U32) mEXIFData.mFocalNum;
+ exifTags->ulFocalLength[1] = (OMX_U32) mEXIFData.mFocalDen;
CAMHAL_LOGVB("exifTags->ulFocalLength = [%u] [%u]",
(unsigned int)(exifTags->ulFocalLength[0]),
(unsigned int)(exifTags->ulFocalLength[1]));
@@ -512,22 +523,21 @@ status_t OMXCameraAdapter::setupEXIF_libjpeg(ExifElementsTable* exifTable,
capData = &mCameraAdapterParameters.mCameraPortParams[mCameraAdapterParameters.mImagePortIndex];
if ((NO_ERROR == ret) && (mEXIFData.mModelValid)) {
- ret = exifTable->insertElement(TAG_MODEL, mParams.get(TICameraParameters::KEY_EXIF_MODEL));
+ ret = exifTable->insertElement(TAG_MODEL, mEXIFData.mModel);
}
if ((NO_ERROR == ret) && (mEXIFData.mMakeValid)) {
- ret = exifTable->insertElement(TAG_MAKE, mParams.get(TICameraParameters::KEY_EXIF_MAKE));
+ ret = exifTable->insertElement(TAG_MAKE, mEXIFData.mMake);
}
if ((NO_ERROR == ret)) {
- unsigned int numerator = 0, denominator = 0;
- ExifElementsTable::stringToRational(mParams.get(CameraParameters::KEY_FOCAL_LENGTH),
- &numerator, &denominator);
- if (numerator || denominator) {
+ if (mEXIFData.mFocalNum || mEXIFData.mFocalDen) {
char temp_value[256]; // arbitrarily long string
snprintf(temp_value,
- sizeof(temp_value)/sizeof(char),
- "%u/%u", numerator, denominator);
+ sizeof(temp_value)/sizeof(char),
+ "%u/%u",
+ mEXIFData.mFocalNum,
+ mEXIFData.mFocalDen);
ret = exifTable->insertElement(TAG_FOCALLENGTH, temp_value);
}
@@ -618,8 +628,8 @@ status_t OMXCameraAdapter::setupEXIF_libjpeg(ExifElementsTable* exifTable,
memcpy(temp_value, ExifAsciiPrefix, sizeof(ExifAsciiPrefix));
memcpy(temp_value + sizeof(ExifAsciiPrefix),
- mParams.get(CameraParameters::KEY_GPS_PROCESSING_METHOD),
- (GPS_PROCESSING_SIZE - sizeof(ExifAsciiPrefix)));
+ mEXIFData.mGPSData.mProcMethod,
+ (GPS_PROCESSING_SIZE - sizeof(ExifAsciiPrefix)));
ret = exifTable->insertElement(TAG_GPS_PROCESSING_METHOD, temp_value);
}
@@ -650,9 +660,9 @@ status_t OMXCameraAdapter::setupEXIF_libjpeg(ExifElementsTable* exifTable,
ret = exifTable->insertElement(TAG_GPS_DATESTAMP, mEXIFData.mGPSData.mDatestamp);
}
- if ((NO_ERROR == ret) && mParams.get(CameraParameters::KEY_ROTATION) ) {
+ if (NO_ERROR == ret) {
const char* exif_orient =
- ExifElementsTable::degreesToExifOrientation(mParams.get(CameraParameters::KEY_ROTATION));
+ ExifElementsTable::degreesToExifOrientation(mPictureRotation);
if (exif_orient) {
ret = exifTable->insertElement(TAG_ORIENTATION, exif_orient);