diff options
Diffstat (limited to 'camera/OMXCameraAdapter/OMXExif.cpp')
-rw-r--r-- | camera/OMXCameraAdapter/OMXExif.cpp | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/camera/OMXCameraAdapter/OMXExif.cpp b/camera/OMXCameraAdapter/OMXExif.cpp index 70fb3db..76d94bd 100644 --- a/camera/OMXCameraAdapter/OMXExif.cpp +++ b/camera/OMXCameraAdapter/OMXExif.cpp @@ -193,6 +193,7 @@ status_t OMXCameraAdapter::setParametersEXIF(const CameraParameters ¶ms, 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 ¶ms, 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 ¶ms, 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); |