diff options
Diffstat (limited to 'camera/BaseCameraAdapter.cpp')
-rw-r--r-- | camera/BaseCameraAdapter.cpp | 2693 |
1 files changed, 0 insertions, 2693 deletions
diff --git a/camera/BaseCameraAdapter.cpp b/camera/BaseCameraAdapter.cpp deleted file mode 100644 index b3a47d1..0000000 --- a/camera/BaseCameraAdapter.cpp +++ /dev/null @@ -1,2693 +0,0 @@ -/* - * Copyright (C) Texas Instruments - http://www.ti.com/ - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BaseCameraAdapter.h" - -const int EVENT_MASK = 0xffff; - -namespace Ti { -namespace Camera { - -const LUT cameraCommandsUserToHAL[] = { - { "CAMERA_START_PREVIEW", CameraAdapter::CAMERA_START_PREVIEW }, - { "CAMERA_STOP_PREVIEW", CameraAdapter::CAMERA_STOP_PREVIEW }, - { "CAMERA_START_VIDEO", CameraAdapter::CAMERA_START_VIDEO }, - { "CAMERA_STOP_VIDEO", CameraAdapter::CAMERA_STOP_VIDEO }, - { "CAMERA_START_IMAGE_CAPTURE", CameraAdapter::CAMERA_START_IMAGE_CAPTURE }, - { "CAMERA_STOP_IMAGE_CAPTURE", CameraAdapter::CAMERA_STOP_IMAGE_CAPTURE }, - { "CAMERA_PERFORM_AUTOFOCUS", CameraAdapter::CAMERA_PERFORM_AUTOFOCUS }, - { "CAMERA_CANCEL_AUTOFOCUS", CameraAdapter::CAMERA_CANCEL_AUTOFOCUS }, - { "CAMERA_PREVIEW_FLUSH_BUFFERS", CameraAdapter::CAMERA_PREVIEW_FLUSH_BUFFERS }, - { "CAMERA_START_SMOOTH_ZOOM", CameraAdapter::CAMERA_START_SMOOTH_ZOOM }, - { "CAMERA_STOP_SMOOTH_ZOOM", CameraAdapter::CAMERA_STOP_SMOOTH_ZOOM }, - { "CAMERA_USE_BUFFERS_PREVIEW", CameraAdapter::CAMERA_USE_BUFFERS_PREVIEW }, - { "CAMERA_SET_TIMEOUT", CameraAdapter::CAMERA_SET_TIMEOUT }, - { "CAMERA_CANCEL_TIMEOUT", CameraAdapter::CAMERA_CANCEL_TIMEOUT }, - { "CAMERA_START_BRACKET_CAPTURE", CameraAdapter::CAMERA_START_BRACKET_CAPTURE }, - { "CAMERA_STOP_BRACKET_CAPTURE", CameraAdapter::CAMERA_STOP_BRACKET_CAPTURE }, - { "CAMERA_QUERY_RESOLUTION_PREVIEW", CameraAdapter::CAMERA_QUERY_RESOLUTION_PREVIEW }, - { "CAMERA_QUERY_BUFFER_SIZE_IMAGE_CAPTURE", CameraAdapter::CAMERA_QUERY_BUFFER_SIZE_IMAGE_CAPTURE }, - { "CAMERA_QUERY_BUFFER_SIZE_PREVIEW_DATA", CameraAdapter::CAMERA_QUERY_BUFFER_SIZE_PREVIEW_DATA }, - { "CAMERA_USE_BUFFERS_IMAGE_CAPTURE", CameraAdapter::CAMERA_USE_BUFFERS_IMAGE_CAPTURE }, - { "CAMERA_USE_BUFFERS_PREVIEW_DATA", CameraAdapter::CAMERA_USE_BUFFERS_PREVIEW_DATA }, - { "CAMERA_TIMEOUT_EXPIRED", CameraAdapter::CAMERA_TIMEOUT_EXPIRED }, - { "CAMERA_START_FD", CameraAdapter::CAMERA_START_FD }, - { "CAMERA_STOP_FD", CameraAdapter::CAMERA_STOP_FD }, - { "CAMERA_SWITCH_TO_EXECUTING", CameraAdapter::CAMERA_SWITCH_TO_EXECUTING }, - { "CAMERA_USE_BUFFERS_VIDEO_CAPTURE", CameraAdapter::CAMERA_USE_BUFFERS_VIDEO_CAPTURE }, -#ifdef OMAP_ENHANCEMENT_CPCAM - { "CAMERA_USE_BUFFERS_REPROCESS", CameraAdapter::CAMERA_USE_BUFFERS_REPROCESS }, - { "CAMERA_START_REPROCESS", CameraAdapter::CAMERA_START_REPROCESS }, -#endif -}; - -const LUTtypeHAL CamCommandsLUT = { - sizeof(cameraCommandsUserToHAL)/sizeof(cameraCommandsUserToHAL[0]), - cameraCommandsUserToHAL -}; - -/*--------------------Camera Adapter Class STARTS here-----------------------------*/ - -BaseCameraAdapter::BaseCameraAdapter() -{ - mReleaseImageBuffersCallback = NULL; - mEndImageCaptureCallback = NULL; - mErrorNotifier = NULL; - mEndCaptureData = NULL; - mReleaseData = NULL; - mRecording = false; - - mPreviewBuffers = NULL; - mPreviewBufferCount = 0; - mPreviewBuffersLength = 0; - - mVideoBuffers = NULL; - mVideoBuffersCount = 0; - mVideoBuffersLength = 0; - - mCaptureBuffers = NULL; - mCaptureBuffersCount = 0; - mCaptureBuffersLength = 0; - - mPreviewDataBuffers = NULL; - mPreviewDataBuffersCount = 0; - mPreviewDataBuffersLength = 0; - - mAdapterState = INTIALIZED_STATE; - - mSharedAllocator = NULL; - -#if PPM_INSTRUMENTATION || PPM_INSTRUMENTATION_ABS - mStartFocus.tv_sec = 0; - mStartFocus.tv_usec = 0; - mStartCapture.tv_sec = 0; - mStartCapture.tv_usec = 0; -#endif - -} - -BaseCameraAdapter::~BaseCameraAdapter() -{ - LOG_FUNCTION_NAME; - - android::AutoMutex lock(mSubscriberLock); - - mFrameSubscribers.clear(); - mImageSubscribers.clear(); - mRawSubscribers.clear(); - mVideoSubscribers.clear(); - mVideoInSubscribers.clear(); - mFocusSubscribers.clear(); - mShutterSubscribers.clear(); - mZoomSubscribers.clear(); - mSnapshotSubscribers.clear(); - mMetadataSubscribers.clear(); - - LOG_FUNCTION_NAME_EXIT; -} - -status_t BaseCameraAdapter::registerImageReleaseCallback(release_image_buffers_callback callback, void *user_data) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - mReleaseImageBuffersCallback = callback; - mReleaseData = user_data; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::registerEndCaptureCallback(end_image_capture_callback callback, void *user_data) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - mEndImageCaptureCallback= callback; - mEndCaptureData = user_data; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::setErrorHandler(ErrorNotifier *errorNotifier) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - if ( NULL == errorNotifier ) - { - CAMHAL_LOGEA("Invalid Error Notifier reference"); - ret = -EINVAL; - } - - if ( NO_ERROR == ret ) - { - mErrorNotifier = errorNotifier; - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -void BaseCameraAdapter::enableMsgType(int32_t msgs, frame_callback callback, event_callback eventCb, void* cookie) -{ - android::AutoMutex lock(mSubscriberLock); - - LOG_FUNCTION_NAME; - - int32_t frameMsg = ((msgs >> MessageNotifier::FRAME_BIT_FIELD_POSITION) & EVENT_MASK); - int32_t eventMsg = ((msgs >> MessageNotifier::EVENT_BIT_FIELD_POSITION) & EVENT_MASK); - - if ( frameMsg != 0 ) - { - CAMHAL_LOGVB("Frame message type id=0x%x subscription request", frameMsg); - switch ( frameMsg ) - { - case CameraFrame::PREVIEW_FRAME_SYNC: - mFrameSubscribers.add((int) cookie, callback); - break; - case CameraFrame::FRAME_DATA_SYNC: - mFrameDataSubscribers.add((int) cookie, callback); - break; - case CameraFrame::SNAPSHOT_FRAME: - mSnapshotSubscribers.add((int) cookie, callback); - break; - case CameraFrame::IMAGE_FRAME: - mImageSubscribers.add((int) cookie, callback); - break; - case CameraFrame::RAW_FRAME: - mRawSubscribers.add((int) cookie, callback); - break; - case CameraFrame::VIDEO_FRAME_SYNC: - mVideoSubscribers.add((int) cookie, callback); - break; - case CameraFrame::REPROCESS_INPUT_FRAME: - mVideoInSubscribers.add((int) cookie, callback); - break; - default: - CAMHAL_LOGEA("Frame message type id=0x%x subscription no supported yet!", frameMsg); - break; - } - } - - if ( eventMsg != 0) - { - CAMHAL_LOGVB("Event message type id=0x%x subscription request", eventMsg); - if ( CameraHalEvent::ALL_EVENTS == eventMsg ) - { - mFocusSubscribers.add((int) cookie, eventCb); - mShutterSubscribers.add((int) cookie, eventCb); - mZoomSubscribers.add((int) cookie, eventCb); - mMetadataSubscribers.add((int) cookie, eventCb); - } - else - { - CAMHAL_LOGEA("Event message type id=0x%x subscription no supported yet!", eventMsg); - } - } - - LOG_FUNCTION_NAME_EXIT; -} - -void BaseCameraAdapter::disableMsgType(int32_t msgs, void* cookie) -{ - android::AutoMutex lock(mSubscriberLock); - - LOG_FUNCTION_NAME; - - int32_t frameMsg = ((msgs >> MessageNotifier::FRAME_BIT_FIELD_POSITION) & EVENT_MASK); - int32_t eventMsg = ((msgs >> MessageNotifier::EVENT_BIT_FIELD_POSITION) & EVENT_MASK); - - if ( frameMsg != 0 ) - { - CAMHAL_LOGVB("Frame message type id=0x%x remove subscription request", frameMsg); - switch ( frameMsg ) - { - case CameraFrame::PREVIEW_FRAME_SYNC: - mFrameSubscribers.removeItem((int) cookie); - break; - case CameraFrame::FRAME_DATA_SYNC: - mFrameDataSubscribers.removeItem((int) cookie); - break; - case CameraFrame::SNAPSHOT_FRAME: - mSnapshotSubscribers.removeItem((int) cookie); - break; - case CameraFrame::IMAGE_FRAME: - mImageSubscribers.removeItem((int) cookie); - break; - case CameraFrame::RAW_FRAME: - mRawSubscribers.removeItem((int) cookie); - break; - case CameraFrame::VIDEO_FRAME_SYNC: - mVideoSubscribers.removeItem((int) cookie); - break; - case CameraFrame::REPROCESS_INPUT_FRAME: - mVideoInSubscribers.removeItem((int) cookie); - break; - case CameraFrame::ALL_FRAMES: - mFrameSubscribers.removeItem((int) cookie); - mFrameDataSubscribers.removeItem((int) cookie); - mSnapshotSubscribers.removeItem((int) cookie); - mImageSubscribers.removeItem((int) cookie); - mRawSubscribers.removeItem((int) cookie); - mVideoSubscribers.removeItem((int) cookie); - mVideoInSubscribers.removeItem((int) cookie); - break; - default: - CAMHAL_LOGEA("Frame message type id=0x%x subscription remove not supported yet!", frameMsg); - break; - } - } - - if ( eventMsg != 0 ) - { - CAMHAL_LOGVB("Event message type id=0x%x remove subscription request", eventMsg); - if ( CameraHalEvent::ALL_EVENTS == eventMsg) - { - //TODO: Process case by case - mFocusSubscribers.removeItem((int) cookie); - mShutterSubscribers.removeItem((int) cookie); - mZoomSubscribers.removeItem((int) cookie); - mMetadataSubscribers.removeItem((int) cookie); - } - else - { - CAMHAL_LOGEA("Event message type id=0x%x subscription remove not supported yet!", eventMsg); - } - } - - LOG_FUNCTION_NAME_EXIT; -} - -void BaseCameraAdapter::addFramePointers(CameraBuffer *frameBuf, void *buf) -{ - unsigned int *pBuf = (unsigned int *)buf; - android::AutoMutex lock(mSubscriberLock); - - if ((frameBuf != NULL) && ( pBuf != NULL) ) - { - CameraFrame *frame = new CameraFrame; - frame->mBuffer = frameBuf; - frame->mYuv[0] = pBuf[0]; - frame->mYuv[1] = pBuf[1]; - mFrameQueue.add(frameBuf, frame); - - CAMHAL_LOGVB("Adding Frame=0x%x Y=0x%x UV=0x%x", frame->mBuffer, frame->mYuv[0], frame->mYuv[1]); - } -} - -void BaseCameraAdapter::removeFramePointers() -{ - android::AutoMutex lock(mSubscriberLock); - - int size = mFrameQueue.size(); - CAMHAL_LOGVB("Removing %d Frames = ", size); - for (int i = 0; i < size; i++) - { - CameraFrame *frame = (CameraFrame *)mFrameQueue.valueAt(i); - CAMHAL_LOGVB("Free Frame=0x%x Y=0x%x UV=0x%x", frame->mBuffer, frame->mYuv[0], frame->mYuv[1]); - delete frame; - } - mFrameQueue.clear(); -} - -void BaseCameraAdapter::returnFrame(CameraBuffer * frameBuf, CameraFrame::FrameType frameType) -{ - status_t res = NO_ERROR; - size_t subscriberCount = 0; - int refCount = -1; - - if ( NULL == frameBuf ) - { - CAMHAL_LOGEA("Invalid frameBuf"); - return; - } - - if ( NO_ERROR == res) - { - android::AutoMutex lock(mReturnFrameLock); - - refCount = getFrameRefCount(frameBuf, frameType); - - if(frameType == CameraFrame::PREVIEW_FRAME_SYNC) - { - mFramesWithDisplay--; - } - else if(frameType == CameraFrame::VIDEO_FRAME_SYNC) - { - mFramesWithEncoder--; - } - - if ( 0 < refCount ) - { - - refCount--; - setFrameRefCount(frameBuf, frameType, refCount); - - - if ( mRecording && (CameraFrame::VIDEO_FRAME_SYNC == frameType) ) { - refCount += getFrameRefCount(frameBuf, CameraFrame::PREVIEW_FRAME_SYNC); - } else if ( mRecording && (CameraFrame::PREVIEW_FRAME_SYNC == frameType) ) { - refCount += getFrameRefCount(frameBuf, CameraFrame::VIDEO_FRAME_SYNC); - } else if ( mRecording && (CameraFrame::SNAPSHOT_FRAME == frameType) ) { - refCount += getFrameRefCount(frameBuf, CameraFrame::VIDEO_FRAME_SYNC); - } - - - } - else - { - CAMHAL_LOGDA("Frame returned when ref count is already zero!!"); - return; - } - } - - CAMHAL_LOGSVB("REFCOUNT 0x%x %d", frameBuf, refCount); - - if ( NO_ERROR == res ) - { - //check if someone is holding this buffer - if ( 0 == refCount ) - { -#ifdef CAMERAHAL_DEBUG - if((mBuffersWithDucati.indexOfKey((int)camera_buffer_get_omx_ptr(frameBuf)) >= 0) && - ((CameraFrame::PREVIEW_FRAME_SYNC == frameType) || - (CameraFrame::SNAPSHOT_FRAME == frameType))) - { - CAMHAL_LOGE("Buffer already with Ducati!! 0x%x", frameBuf); - for(unsigned int i=0;i<mBuffersWithDucati.size();i++) CAMHAL_LOGSV("0x%x", mBuffersWithDucati.keyAt(i)); - } - mBuffersWithDucati.add((int)camera_buffer_get_omx_ptr(frameBuf),1); -#endif - res = fillThisBuffer(frameBuf, frameType); - } - } - -} - -status_t BaseCameraAdapter::sendCommand(CameraCommands operation, int value1, int value2, int value3, int value4) { - status_t ret = NO_ERROR; - struct timeval *refTimestamp; - BuffersDescriptor *desc = NULL; - CameraFrame *frame = NULL; - - LOG_FUNCTION_NAME; - - switch ( operation ) { - case CameraAdapter::CAMERA_USE_BUFFERS_PREVIEW: - CAMHAL_LOGDA("Use buffers for preview"); - desc = ( BuffersDescriptor * ) value1; - - if ( NULL == desc ) - { - CAMHAL_LOGEA("Invalid preview buffers!"); - return -EINVAL; - } - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - android::AutoMutex lock(mPreviewBufferLock); - mPreviewBuffers = desc->mBuffers; - mPreviewBuffersLength = desc->mLength; - mPreviewBuffersAvailable.clear(); - mSnapshotBuffersAvailable.clear(); - for ( uint32_t i = 0 ; i < desc->mMaxQueueable ; i++ ) - { - mPreviewBuffersAvailable.add(&mPreviewBuffers[i], 0); - } - // initial ref count for undeqeueued buffers is 1 since buffer provider - // is still holding on to it - for ( uint32_t i = desc->mMaxQueueable ; i < desc->mCount ; i++ ) - { - mPreviewBuffersAvailable.add(&mPreviewBuffers[i], 1); - } - } - - if ( NULL != desc ) - { - ret = useBuffers(CameraAdapter::CAMERA_PREVIEW, - desc->mBuffers, - desc->mCount, - desc->mLength, - desc->mMaxQueueable); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - case CameraAdapter::CAMERA_USE_BUFFERS_PREVIEW_DATA: - CAMHAL_LOGDA("Use buffers for preview data"); - desc = ( BuffersDescriptor * ) value1; - - if ( NULL == desc ) - { - CAMHAL_LOGEA("Invalid preview data buffers!"); - return -EINVAL; - } - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - android::AutoMutex lock(mPreviewDataBufferLock); - mPreviewDataBuffers = desc->mBuffers; - mPreviewDataBuffersLength = desc->mLength; - mPreviewDataBuffersAvailable.clear(); - for ( uint32_t i = 0 ; i < desc->mMaxQueueable ; i++ ) - { - mPreviewDataBuffersAvailable.add(&mPreviewDataBuffers[i], 0); - } - // initial ref count for undeqeueued buffers is 1 since buffer provider - // is still holding on to it - for ( uint32_t i = desc->mMaxQueueable ; i < desc->mCount ; i++ ) - { - mPreviewDataBuffersAvailable.add(&mPreviewDataBuffers[i], 1); - } - } - - if ( NULL != desc ) - { - ret = useBuffers(CameraAdapter::CAMERA_MEASUREMENT, - desc->mBuffers, - desc->mCount, - desc->mLength, - desc->mMaxQueueable); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - case CameraAdapter::CAMERA_USE_BUFFERS_IMAGE_CAPTURE: - CAMHAL_LOGDA("Use buffers for image capture"); - desc = ( BuffersDescriptor * ) value1; - - if ( NULL == desc ) - { - CAMHAL_LOGEA("Invalid capture buffers!"); - return -EINVAL; - } - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - android::AutoMutex lock(mCaptureBufferLock); - mCaptureBuffers = desc->mBuffers; - mCaptureBuffersLength = desc->mLength; - mCaptureBuffersAvailable.clear(); - for ( uint32_t i = 0 ; i < desc->mMaxQueueable ; i++ ) - { - mCaptureBuffersAvailable.add(&mCaptureBuffers[i], 0); - } - // initial ref count for undeqeueued buffers is 1 since buffer provider - // is still holding on to it - for ( uint32_t i = desc->mMaxQueueable ; i < desc->mCount ; i++ ) - { - mCaptureBuffersAvailable.add(&mCaptureBuffers[i], 1); - } - } - - if ( NULL != desc ) - { - ret = useBuffers(CameraAdapter::CAMERA_IMAGE_CAPTURE, - desc->mBuffers, - desc->mCount, - desc->mLength, - desc->mMaxQueueable); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - -#ifdef OMAP_ENHANCEMENT_CPCAM - case CameraAdapter::CAMERA_USE_BUFFERS_REPROCESS: - CAMHAL_LOGDA("Use buffers for reprocessing"); - desc = (BuffersDescriptor *) value1; - - if (NULL == desc) { - CAMHAL_LOGEA("Invalid capture buffers!"); - return -EINVAL; - } - - if (ret == NO_ERROR) { - ret = setState(operation); - } - - if (ret == NO_ERROR) { - android::AutoMutex lock(mVideoInBufferLock); - mVideoInBuffers = desc->mBuffers; - mVideoInBuffersAvailable.clear(); - for (uint32_t i = 0 ; i < desc->mMaxQueueable ; i++) { - mVideoInBuffersAvailable.add(&mVideoInBuffers[i], 0); - } - // initial ref count for undeqeueued buffers is 1 since buffer provider - // is still holding on to it - for ( uint32_t i = desc->mMaxQueueable ; i < desc->mCount ; i++ ) { - mVideoInBuffersAvailable.add(&mVideoInBuffers[i], 1); - } - ret = useBuffers(CameraAdapter::CAMERA_REPROCESS, - desc->mBuffers, - desc->mCount, - desc->mLength, - desc->mMaxQueueable); - } - - if ( ret == NO_ERROR ) { - ret = commitState(); - } else { - ret |= rollbackState(); - } - - break; -#endif - - case CameraAdapter::CAMERA_START_SMOOTH_ZOOM: - { - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = startSmoothZoom(value1); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - } - - case CameraAdapter::CAMERA_STOP_SMOOTH_ZOOM: - { - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = stopSmoothZoom(); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - } - - case CameraAdapter::CAMERA_START_PREVIEW: - { - - CAMHAL_LOGDA("Start Preview"); - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = startPreview(); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - } - - case CameraAdapter::CAMERA_STOP_PREVIEW: - { - - CAMHAL_LOGDA("Stop Preview"); - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = stopPreview(); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - } - - case CameraAdapter::CAMERA_START_VIDEO: - { - - CAMHAL_LOGDA("Start video recording"); - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = startVideoCapture(); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - } - - case CameraAdapter::CAMERA_STOP_VIDEO: - { - - CAMHAL_LOGDA("Stop video recording"); - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = stopVideoCapture(); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - } - - case CameraAdapter::CAMERA_START_IMAGE_CAPTURE: - { - -#if PPM_INSTRUMENTATION || PPM_INSTRUMENTATION_ABS - - refTimestamp = ( struct timeval * ) value1; - if ( NULL != refTimestamp ) - { - memcpy( &mStartCapture, refTimestamp, sizeof( struct timeval )); - } - -#endif - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = takePicture(); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - } - - case CameraAdapter::CAMERA_STOP_IMAGE_CAPTURE: - { - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = stopImageCapture(); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - } - - case CameraAdapter::CAMERA_START_BRACKET_CAPTURE: - { - -#if PPM_INSTRUMENTATION || PPM_INSTRUMENTATION_ABS - - refTimestamp = ( struct timeval * ) value2; - if ( NULL != refTimestamp ) - { - memcpy( &mStartCapture, refTimestamp, sizeof( struct timeval )); - } - -#endif - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = startBracketing(value1); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - } - - case CameraAdapter::CAMERA_STOP_BRACKET_CAPTURE: - { - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = stopBracketing(); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - } - - case CameraAdapter::CAMERA_PERFORM_AUTOFOCUS: - -#if PPM_INSTRUMENTATION || PPM_INSTRUMENTATION_ABS - - refTimestamp = ( struct timeval * ) value1; - if ( NULL != refTimestamp ) - { - memcpy( &mStartFocus, refTimestamp, sizeof( struct timeval )); - } - -#endif - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = autoFocus(); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - case CameraAdapter::CAMERA_CANCEL_AUTOFOCUS: - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - ret = cancelAutoFocus(); - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - case CameraAdapter::CAMERA_QUERY_RESOLUTION_PREVIEW: - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - frame = ( CameraFrame * ) value1; - - if ( NULL != frame ) - { - ret = getFrameSize(frame->mWidth, frame->mHeight); - } - else - { - ret = -EINVAL; - } - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - case CameraAdapter::CAMERA_QUERY_BUFFER_SIZE_IMAGE_CAPTURE: - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - frame = ( CameraFrame * ) value1; - - if ( NULL != frame ) - { - ret = getPictureBufferSize(*frame, value2); - } - else - { - ret = -EINVAL; - } - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - case CameraAdapter::CAMERA_QUERY_BUFFER_SIZE_PREVIEW_DATA: - - if ( ret == NO_ERROR ) - { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) - { - frame = ( CameraFrame * ) value1; - - if ( NULL != frame ) - { - ret = getFrameDataSize(frame->mLength, value2); - } - else - { - ret = -EINVAL; - } - } - - if ( ret == NO_ERROR ) - { - ret = commitState(); - } - else - { - ret |= rollbackState(); - } - - break; - - case CameraAdapter::CAMERA_START_FD: - - ret = startFaceDetection(); - - break; - - case CameraAdapter::CAMERA_STOP_FD: - - ret = stopFaceDetection(); - - break; - - case CameraAdapter::CAMERA_USE_BUFFERS_VIDEO_CAPTURE: - - CAMHAL_LOGDA("Use buffers for video (RAW + JPEG) capture"); - desc = ( BuffersDescriptor * ) value1; - - if ( NULL == desc ) { - CAMHAL_LOGEA("Invalid capture buffers!"); - return -EINVAL; - } - - if ( ret == NO_ERROR ) { - ret = setState(operation); - } - - if ( ret == NO_ERROR ) { - android::AutoMutex lock(mVideoBufferLock); - mVideoBuffers = desc->mBuffers; - mVideoBuffersLength = desc->mLength; - mVideoBuffersAvailable.clear(); - for ( uint32_t i = 0 ; i < desc->mMaxQueueable ; i++ ) { - mVideoBuffersAvailable.add(&mVideoBuffers[i], 1); - } - // initial ref count for undeqeueued buffers is 1 since buffer provider - // is still holding on to it - for ( uint32_t i = desc->mMaxQueueable ; i < desc->mCount ; i++ ) { - mVideoBuffersAvailable.add(&mVideoBuffers[i], 1); - } - } - - if ( NULL != desc ) { - ret = useBuffers(CameraAdapter::CAMERA_VIDEO, - desc->mBuffers, - desc->mCount, - desc->mLength, - desc->mMaxQueueable); - } - - if ( ret == NO_ERROR ) { - ret = commitState(); - } else { - ret |= rollbackState(); - } - - break; - - case CameraAdapter::CAMERA_SWITCH_TO_EXECUTING: - ret = switchToExecuting(); - break; - -#ifdef OMAP_ENHANCEMENT_VTC - case CameraAdapter::CAMERA_SETUP_TUNNEL: - ret = setupTunnel(value1, value2, value3, value4); - break; - - case CameraAdapter::CAMERA_DESTROY_TUNNEL: - ret = destroyTunnel(); - break; -#endif - - case CameraAdapter::CAMERA_PREVIEW_INITIALIZATION: - ret = cameraPreviewInitialization(); - break; - - default: - CAMHAL_LOGEB("Command 0x%x unsupported!", operation); - break; - }; - - LOG_FUNCTION_NAME_EXIT; - return ret; -} - -status_t BaseCameraAdapter::notifyFocusSubscribers(CameraHalEvent::FocusStatus status) -{ - event_callback eventCb; - CameraHalEvent focusEvent; - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - if ( mFocusSubscribers.size() == 0 ) { - CAMHAL_LOGDA("No Focus Subscribers!"); - return NO_INIT; - } - -#if PPM_INSTRUMENTATION || PPM_INSTRUMENTATION_ABS - if (status == CameraHalEvent::FOCUS_STATUS_PENDING) { - gettimeofday(&mStartFocus, NULL); - } else { - //dump the AF latency - CameraHal::PPM("Focus finished in: ", &mStartFocus); - } -#endif - - focusEvent.mEventData = new CameraHalEvent::CameraHalEventData(); - if ( NULL == focusEvent.mEventData.get() ) { - return -ENOMEM; - } - - focusEvent.mEventType = CameraHalEvent::EVENT_FOCUS_LOCKED; - focusEvent.mEventData->focusEvent.focusStatus = status; - - for (unsigned int i = 0 ; i < mFocusSubscribers.size(); i++ ) - { - focusEvent.mCookie = (void *) mFocusSubscribers.keyAt(i); - eventCb = (event_callback) mFocusSubscribers.valueAt(i); - eventCb ( &focusEvent ); - } - - focusEvent.mEventData.clear(); - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::notifyShutterSubscribers() -{ - CameraHalEvent shutterEvent; - event_callback eventCb; - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - if ( mShutterSubscribers.size() == 0 ) - { - CAMHAL_LOGEA("No shutter Subscribers!"); - return NO_INIT; - } - - shutterEvent.mEventData = new CameraHalEvent::CameraHalEventData(); - if ( NULL == shutterEvent.mEventData.get() ) { - return -ENOMEM; - } - - shutterEvent.mEventType = CameraHalEvent::EVENT_SHUTTER; - shutterEvent.mEventData->shutterEvent.shutterClosed = true; - - for (unsigned int i = 0 ; i < mShutterSubscribers.size() ; i++ ) { - shutterEvent.mCookie = ( void * ) mShutterSubscribers.keyAt(i); - eventCb = ( event_callback ) mShutterSubscribers.valueAt(i); - - CAMHAL_LOGD("Sending shutter callback"); - - eventCb ( &shutterEvent ); - } - - shutterEvent.mEventData.clear(); - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::notifyZoomSubscribers(int zoomIdx, bool targetReached) -{ - event_callback eventCb; - CameraHalEvent zoomEvent; - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - if ( mZoomSubscribers.size() == 0 ) { - CAMHAL_LOGDA("No zoom Subscribers!"); - return NO_INIT; - } - - zoomEvent.mEventData = new CameraHalEvent::CameraHalEventData(); - if ( NULL == zoomEvent.mEventData.get() ) { - return -ENOMEM; - } - - zoomEvent.mEventType = CameraHalEvent::EVENT_ZOOM_INDEX_REACHED; - zoomEvent.mEventData->zoomEvent.currentZoomIndex = zoomIdx; - zoomEvent.mEventData->zoomEvent.targetZoomIndexReached = targetReached; - - for (unsigned int i = 0 ; i < mZoomSubscribers.size(); i++ ) { - zoomEvent.mCookie = (void *) mZoomSubscribers.keyAt(i); - eventCb = (event_callback) mZoomSubscribers.valueAt(i); - - eventCb ( &zoomEvent ); - } - - zoomEvent.mEventData.clear(); - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::notifyMetadataSubscribers(android::sp<CameraMetadataResult> &meta) -{ - event_callback eventCb; - CameraHalEvent metaEvent; - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - if ( mMetadataSubscribers.size() == 0 ) { - CAMHAL_LOGDA("No preview metadata subscribers!"); - return NO_INIT; - } - - metaEvent.mEventData = new CameraHalEvent::CameraHalEventData(); - if ( NULL == metaEvent.mEventData.get() ) { - return -ENOMEM; - } - - metaEvent.mEventType = CameraHalEvent::EVENT_METADATA; - metaEvent.mEventData->metadataEvent = meta; - - for (unsigned int i = 0 ; i < mMetadataSubscribers.size(); i++ ) { - metaEvent.mCookie = (void *) mMetadataSubscribers.keyAt(i); - eventCb = (event_callback) mMetadataSubscribers.valueAt(i); - - eventCb ( &metaEvent ); - } - - metaEvent.mEventData.clear(); - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::sendFrameToSubscribers(CameraFrame *frame) -{ - status_t ret = NO_ERROR; - unsigned int mask; - - if ( NULL == frame ) - { - CAMHAL_LOGEA("Invalid CameraFrame"); - return -EINVAL; - } - - for( mask = 1; mask < CameraFrame::ALL_FRAMES; mask <<= 1){ - if( mask & frame->mFrameMask ){ - switch( mask ){ - - case CameraFrame::IMAGE_FRAME: - { -#if PPM_INSTRUMENTATION || PPM_INSTRUMENTATION_ABS - CameraHal::PPM("Shot to Jpeg: ", &mStartCapture); -#endif - ret = __sendFrameToSubscribers(frame, &mImageSubscribers, CameraFrame::IMAGE_FRAME); - } - break; - case CameraFrame::RAW_FRAME: - { - ret = __sendFrameToSubscribers(frame, &mRawSubscribers, CameraFrame::RAW_FRAME); - } - break; - case CameraFrame::PREVIEW_FRAME_SYNC: - { - ret = __sendFrameToSubscribers(frame, &mFrameSubscribers, CameraFrame::PREVIEW_FRAME_SYNC); - } - break; - case CameraFrame::SNAPSHOT_FRAME: - { - ret = __sendFrameToSubscribers(frame, &mSnapshotSubscribers, CameraFrame::SNAPSHOT_FRAME); - } - break; - case CameraFrame::VIDEO_FRAME_SYNC: - { - ret = __sendFrameToSubscribers(frame, &mVideoSubscribers, CameraFrame::VIDEO_FRAME_SYNC); - } - break; - case CameraFrame::FRAME_DATA_SYNC: - { - ret = __sendFrameToSubscribers(frame, &mFrameDataSubscribers, CameraFrame::FRAME_DATA_SYNC); - } - break; - case CameraFrame::REPROCESS_INPUT_FRAME: - { - ret = __sendFrameToSubscribers(frame, &mVideoInSubscribers, CameraFrame::REPROCESS_INPUT_FRAME); - } - break; - default: - CAMHAL_LOGEB("FRAMETYPE NOT SUPPORTED 0x%x", mask); - break; - }//SWITCH - frame->mFrameMask &= ~mask; - - if (ret != NO_ERROR) { - goto EXIT; - } - }//IF - }//FOR - - EXIT: - return ret; -} - -status_t BaseCameraAdapter::__sendFrameToSubscribers(CameraFrame* frame, - android::KeyedVector<int, frame_callback> *subscribers, - CameraFrame::FrameType frameType) -{ - size_t refCount = 0; - status_t ret = NO_ERROR; - frame_callback callback = NULL; - - frame->mFrameType = frameType; - - if ( (frameType == CameraFrame::PREVIEW_FRAME_SYNC) || - (frameType == CameraFrame::VIDEO_FRAME_SYNC) || - (frameType == CameraFrame::SNAPSHOT_FRAME) ){ - if (mFrameQueue.size() > 0){ - CameraFrame *lframe = (CameraFrame *)mFrameQueue.valueFor(frame->mBuffer); - frame->mYuv[0] = lframe->mYuv[0]; - frame->mYuv[1] = frame->mYuv[0] + (frame->mLength + frame->mOffset)*2/3; - } - else{ - CAMHAL_LOGDA("Empty Frame Queue"); - return -EINVAL; - } - } - - if (NULL != subscribers) { - refCount = getFrameRefCount(frame->mBuffer, frameType); - - if (refCount == 0) { - CAMHAL_LOGDA("Invalid ref count of 0"); - return -EINVAL; - } - - if (refCount > subscribers->size()) { - CAMHAL_LOGEB("Invalid ref count for frame type: 0x%x", frameType); - return -EINVAL; - } - - CAMHAL_LOGSVB("Type of Frame: 0x%x address: 0x%x refCount start %d", - frame->mFrameType, - ( uint32_t ) frame->mBuffer, - refCount); - - for ( unsigned int i = 0 ; i < refCount; i++ ) { - frame->mCookie = ( void * ) subscribers->keyAt(i); - callback = (frame_callback) subscribers->valueAt(i); - - if (!callback) { - CAMHAL_LOGEB("callback not set for frame type: 0x%x", frameType); - return -EINVAL; - } - - callback(frame); - } - } else { - CAMHAL_LOGEA("Subscribers is null??"); - return -EINVAL; - } - - return ret; -} - -int BaseCameraAdapter::setInitFrameRefCount(CameraBuffer * buf, unsigned int mask) -{ - int ret = NO_ERROR; - unsigned int lmask; - - LOG_FUNCTION_NAME; - - if (buf == NULL) - { - return -EINVAL; - } - - for( lmask = 1; lmask < CameraFrame::ALL_FRAMES; lmask <<= 1){ - if( lmask & mask ){ - switch( lmask ){ - - case CameraFrame::IMAGE_FRAME: - { - setFrameRefCount(buf, CameraFrame::IMAGE_FRAME, (int) mImageSubscribers.size()); - } - break; - case CameraFrame::RAW_FRAME: - { - setFrameRefCount(buf, CameraFrame::RAW_FRAME, mRawSubscribers.size()); - } - break; - case CameraFrame::PREVIEW_FRAME_SYNC: - { - setFrameRefCount(buf, CameraFrame::PREVIEW_FRAME_SYNC, mFrameSubscribers.size()); - } - break; - case CameraFrame::SNAPSHOT_FRAME: - { - setFrameRefCount(buf, CameraFrame::SNAPSHOT_FRAME, mSnapshotSubscribers.size()); - } - break; - case CameraFrame::VIDEO_FRAME_SYNC: - { - setFrameRefCount(buf,CameraFrame::VIDEO_FRAME_SYNC, mVideoSubscribers.size()); - } - break; - case CameraFrame::FRAME_DATA_SYNC: - { - setFrameRefCount(buf, CameraFrame::FRAME_DATA_SYNC, mFrameDataSubscribers.size()); - } - break; - case CameraFrame::REPROCESS_INPUT_FRAME: - { - setFrameRefCount(buf,CameraFrame::REPROCESS_INPUT_FRAME, mVideoInSubscribers.size()); - } - break; - default: - CAMHAL_LOGEB("FRAMETYPE NOT SUPPORTED 0x%x", lmask); - break; - }//SWITCH - mask &= ~lmask; - }//IF - }//FOR - LOG_FUNCTION_NAME_EXIT; - return ret; -} - -int BaseCameraAdapter::getFrameRefCount(CameraBuffer * frameBuf, CameraFrame::FrameType frameType) -{ - int res = -1; - - LOG_FUNCTION_NAME; - - switch ( frameType ) - { - case CameraFrame::IMAGE_FRAME: - case CameraFrame::RAW_FRAME: - { - android::AutoMutex lock(mCaptureBufferLock); - res = mCaptureBuffersAvailable.valueFor(frameBuf ); - } - break; - case CameraFrame::SNAPSHOT_FRAME: - { - android::AutoMutex lock(mSnapshotBufferLock); - res = mSnapshotBuffersAvailable.valueFor( ( unsigned int ) frameBuf ); - } - break; - case CameraFrame::PREVIEW_FRAME_SYNC: - { - android::AutoMutex lock(mPreviewBufferLock); - res = mPreviewBuffersAvailable.valueFor(frameBuf ); - } - break; - case CameraFrame::FRAME_DATA_SYNC: - { - android::AutoMutex lock(mPreviewDataBufferLock); - res = mPreviewDataBuffersAvailable.valueFor(frameBuf ); - } - break; - case CameraFrame::VIDEO_FRAME_SYNC: - { - android::AutoMutex lock(mVideoBufferLock); - res = mVideoBuffersAvailable.valueFor(frameBuf ); - } - break; - case CameraFrame::REPROCESS_INPUT_FRAME: { - android::AutoMutex lock(mVideoInBufferLock); - res = mVideoInBuffersAvailable.valueFor(frameBuf ); - } - break; - default: - break; - }; - - LOG_FUNCTION_NAME_EXIT; - - return res; -} - -void BaseCameraAdapter::setFrameRefCount(CameraBuffer * frameBuf, CameraFrame::FrameType frameType, int refCount) -{ - - LOG_FUNCTION_NAME; - - switch ( frameType ) - { - case CameraFrame::IMAGE_FRAME: - case CameraFrame::RAW_FRAME: - { - android::AutoMutex lock(mCaptureBufferLock); - mCaptureBuffersAvailable.replaceValueFor(frameBuf, refCount); - } - break; - case CameraFrame::SNAPSHOT_FRAME: - { - android::AutoMutex lock(mSnapshotBufferLock); - mSnapshotBuffersAvailable.replaceValueFor( ( unsigned int ) frameBuf, refCount); - } - break; - case CameraFrame::PREVIEW_FRAME_SYNC: - { - android::AutoMutex lock(mPreviewBufferLock); - mPreviewBuffersAvailable.replaceValueFor(frameBuf, refCount); - } - break; - case CameraFrame::FRAME_DATA_SYNC: - { - android::AutoMutex lock(mPreviewDataBufferLock); - mPreviewDataBuffersAvailable.replaceValueFor(frameBuf, refCount); - } - break; - case CameraFrame::VIDEO_FRAME_SYNC: - { - android::AutoMutex lock(mVideoBufferLock); - mVideoBuffersAvailable.replaceValueFor(frameBuf, refCount); - } - break; - case CameraFrame::REPROCESS_INPUT_FRAME: { - android::AutoMutex lock(mVideoInBufferLock); - mVideoInBuffersAvailable.replaceValueFor(frameBuf, refCount); - } - break; - default: - break; - }; - - LOG_FUNCTION_NAME_EXIT; - -} - -status_t BaseCameraAdapter::startVideoCapture() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - android::AutoMutex lock(mVideoBufferLock); - - //If the capture is already ongoing, return from here. - if ( mRecording ) - { - ret = NO_INIT; - } - - - if ( NO_ERROR == ret ) - { - - for ( unsigned int i = 0 ; i < mPreviewBuffersAvailable.size() ; i++ ) - { - mVideoBuffersAvailable.add(mPreviewBuffersAvailable.keyAt(i), 0); - } - - mRecording = true; - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::stopVideoCapture() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - if ( !mRecording ) - { - ret = NO_INIT; - } - - if ( NO_ERROR == ret ) - { - for ( unsigned int i = 0 ; i < mVideoBuffersAvailable.size() ; i++ ) - { - CameraBuffer *frameBuf = mVideoBuffersAvailable.keyAt(i); - if( getFrameRefCount(frameBuf, CameraFrame::VIDEO_FRAME_SYNC) > 0) - { - returnFrame(frameBuf, CameraFrame::VIDEO_FRAME_SYNC); - } - } - - mVideoBuffersAvailable.clear(); - - mRecording = false; - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -//-----------------Stub implementation of the interface ------------------------------ - -status_t BaseCameraAdapter::takePicture() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::stopImageCapture() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::startBracketing(int range) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::stopBracketing() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::autoFocus() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - notifyFocusSubscribers(CameraHalEvent::FOCUS_STATUS_FAIL); - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::cancelAutoFocus() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::startSmoothZoom(int targetIdx) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::stopSmoothZoom() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::startPreview() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::stopPreview() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::useBuffers(CameraMode mode, CameraBuffer* bufArr, int num, size_t length, unsigned int queueable) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::fillThisBuffer(CameraBuffer * frameBuf, CameraFrame::FrameType frameType) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::getFrameSize(size_t &width, size_t &height) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::getFrameDataSize(size_t &dataFrameSize, size_t bufferCount) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::getPictureBufferSize(CameraFrame &frame, size_t bufferCount) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::startFaceDetection() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::stopFaceDetection() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::switchToExecuting() -{ - status_t ret = NO_ERROR; - LOG_FUNCTION_NAME; - LOG_FUNCTION_NAME_EXIT; - return ret; -} - -const char* BaseCameraAdapter::getLUTvalue_translateHAL(int Value, LUTtypeHAL LUT) { - int LUTsize = LUT.size; - for(int i = 0; i < LUTsize; i++) - if( LUT.Table[i].halDefinition == Value ) - return LUT.Table[i].userDefinition; - - return NULL; -} - -status_t BaseCameraAdapter::setupTunnel(uint32_t SliceHeight, uint32_t EncoderHandle, uint32_t width, uint32_t height) { - status_t ret = NO_ERROR; - LOG_FUNCTION_NAME; - LOG_FUNCTION_NAME_EXIT; - return ret; -} - -status_t BaseCameraAdapter::destroyTunnel() { - status_t ret = NO_ERROR; - LOG_FUNCTION_NAME; - LOG_FUNCTION_NAME_EXIT; - return ret; -} - -status_t BaseCameraAdapter::cameraPreviewInitialization() { - status_t ret = NO_ERROR; - LOG_FUNCTION_NAME; - LOG_FUNCTION_NAME_EXIT; - return ret; -} - -status_t BaseCameraAdapter::setState(CameraCommands operation) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - const char *printState = getLUTvalue_translateHAL(operation, CamCommandsLUT); - - mLock.lock(); - - switch ( mAdapterState ) - { - - case INTIALIZED_STATE: - - switch ( operation ) - { - - case CAMERA_USE_BUFFERS_PREVIEW: - CAMHAL_LOGDB("Adapter state switch INTIALIZED_STATE->LOADED_PREVIEW_STATE event = %s", - printState); - mNextState = LOADED_PREVIEW_STATE; - break; - - //These events don't change the current state - case CAMERA_QUERY_RESOLUTION_PREVIEW: - case CAMERA_QUERY_BUFFER_SIZE_IMAGE_CAPTURE: - case CAMERA_QUERY_BUFFER_SIZE_PREVIEW_DATA: - CAMHAL_LOGDB("Adapter state switch INTIALIZED_STATE->INTIALIZED_STATE event = %s", - printState); - mNextState = INTIALIZED_STATE; - break; - case CAMERA_STOP_BRACKET_CAPTURE: - case CAMERA_STOP_IMAGE_CAPTURE: - ret = INVALID_OPERATION; - break; - case CAMERA_CANCEL_AUTOFOCUS: - ret = INVALID_OPERATION; - break; - - default: - CAMHAL_LOGEB("Adapter state switch INTIALIZED_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case LOADED_PREVIEW_STATE: - - switch ( operation ) - { - - case CAMERA_START_PREVIEW: - CAMHAL_LOGDB("Adapter state switch LOADED_PREVIEW_STATE->PREVIEW_STATE event = %s", - printState); - mNextState = PREVIEW_STATE; - break; - - case CAMERA_STOP_PREVIEW: - CAMHAL_LOGDB("Adapter state switch LOADED_PREVIEW_STATE->INTIALIZED_STATE event = 0x%x", - operation); - mNextState = INTIALIZED_STATE; - break; - - //These events don't change the current state - case CAMERA_QUERY_BUFFER_SIZE_IMAGE_CAPTURE: - case CAMERA_QUERY_BUFFER_SIZE_PREVIEW_DATA: - case CAMERA_USE_BUFFERS_PREVIEW_DATA: - CAMHAL_LOGDB("Adapter state switch LOADED_PREVIEW_STATE->LOADED_PREVIEW_STATE event = %s", - printState); - mNextState = LOADED_PREVIEW_STATE; - break; - - default: - CAMHAL_LOGDB("Adapter state switch LOADED_PREVIEW Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case PREVIEW_STATE: - - switch ( operation ) - { - - case CAMERA_STOP_PREVIEW: - CAMHAL_LOGDB("Adapter state switch PREVIEW_STATE->INTIALIZED_STATE event = %s", - printState); - mNextState = INTIALIZED_STATE; - break; - - case CAMERA_PERFORM_AUTOFOCUS: - CAMHAL_LOGDB("Adapter state switch PREVIEW_STATE->AF_STATE event = %s", - printState); - mNextState = AF_STATE; - break; - - case CAMERA_START_SMOOTH_ZOOM: - CAMHAL_LOGDB("Adapter state switch PREVIEW_STATE->ZOOM_STATE event = %s", - printState); - mNextState = ZOOM_STATE; - break; - - case CAMERA_USE_BUFFERS_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch PREVIEW_STATE->LOADED_CAPTURE_STATE event = %s", - printState); - mNextState = LOADED_CAPTURE_STATE; - break; - -#ifdef OMAP_ENHANCEMENT_CPCAM - case CAMERA_USE_BUFFERS_REPROCESS: - CAMHAL_LOGDB("Adapter state switch PREVIEW_STATE->LOADED_REPROCESS_STATE event = %s", - printState); - mNextState = LOADED_REPROCESS_STATE; - break; -#endif - - case CAMERA_START_VIDEO: - CAMHAL_LOGDB("Adapter state switch PREVIEW_STATE->VIDEO_STATE event = %s", - printState); - mNextState = VIDEO_STATE; - break; - - case CAMERA_CANCEL_AUTOFOCUS: - case CAMERA_QUERY_BUFFER_SIZE_IMAGE_CAPTURE: - case CAMERA_STOP_SMOOTH_ZOOM: - CAMHAL_LOGDB("Adapter state switch PREVIEW_ACTIVE->PREVIEW_ACTIVE event = %s", - printState); - mNextState = PREVIEW_STATE; - break; - - case CAMERA_STOP_IMAGE_CAPTURE: - case CAMERA_STOP_BRACKET_CAPTURE: - CAMHAL_LOGDB("Adapter state switch PREVIEW_ACTIVE->PREVIEW_ACTIVE event = %s", - printState); - ret = INVALID_OPERATION; - break; - - default: - CAMHAL_LOGEB("Adapter state switch PREVIEW_ACTIVE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - -#ifdef OMAP_ENHANCEMENT_CPCAM - case LOADED_REPROCESS_STATE: - switch (operation) { - case CAMERA_USE_BUFFERS_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch LOADED_REPROCESS_STATE->LOADED_REPROCESS_CAPTURE_STATE event = %s", - printState); - mNextState = LOADED_REPROCESS_CAPTURE_STATE; - break; - case CAMERA_QUERY_BUFFER_SIZE_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch LOADED_REPROCESS_STATE->LOADED_REPROCESS_STATE event = %s", - printState); - mNextState = LOADED_REPROCESS_STATE; - break; - default: - CAMHAL_LOGEB("Adapter state switch LOADED_REPROCESS_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - } - - break; - - case LOADED_REPROCESS_CAPTURE_STATE: - switch (operation) { - case CAMERA_START_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch LOADED_REPROCESS_CAPTURE_STATE->REPROCESS_STATE event = %s", - printState); - mNextState = REPROCESS_STATE; - break; - default: - CAMHAL_LOGEB("Adapter state switch LOADED_REPROCESS_CAPTURE_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - } - break; -#endif - - case LOADED_CAPTURE_STATE: - - switch ( operation ) - { - - case CAMERA_START_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch LOADED_CAPTURE_STATE->CAPTURE_STATE event = %s", - printState); - mNextState = CAPTURE_STATE; - break; - - case CAMERA_START_BRACKET_CAPTURE: - CAMHAL_LOGDB("Adapter state switch LOADED_CAPTURE_STATE->BRACKETING_STATE event = %s", - printState); - mNextState = BRACKETING_STATE; - break; - - case CAMERA_USE_BUFFERS_VIDEO_CAPTURE: - //Hadnle this state for raw capture path. - //Just need to keep the same state. - //The next CAMERA_START_IMAGE_CAPTURE command will assign the mNextState. - CAMHAL_LOGDB("Adapter state switch LOADED_CAPTURE_STATE->LOADED_CAPTURE_STATE event = %s", - printState); - break; - - default: - CAMHAL_LOGEB("Adapter state switch LOADED_CAPTURE_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case CAPTURE_STATE: - - switch ( operation ) - { - case CAMERA_STOP_IMAGE_CAPTURE: - case CAMERA_STOP_BRACKET_CAPTURE: - CAMHAL_LOGDB("Adapter state switch CAPTURE_STATE->PREVIEW_STATE event = %s", - printState); - mNextState = PREVIEW_STATE; - break; - - case CAMERA_START_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch CAPTURE_STATE->CAPTURE_STATE event = %s", - printState); - mNextState = CAPTURE_STATE; - break; - -#ifdef OMAP_ENHANCEMENT_CPCAM - case CAMERA_USE_BUFFERS_REPROCESS: - CAMHAL_LOGDB("Adapter state switch CAPTURE_STATE->->LOADED_REPROCESS_STATE event = %s", - printState); - mNextState = LOADED_REPROCESS_STATE; - break; -#endif - - default: - CAMHAL_LOGEB("Adapter state switch CAPTURE_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case BRACKETING_STATE: - - switch ( operation ) - { - - case CAMERA_STOP_IMAGE_CAPTURE: - case CAMERA_STOP_BRACKET_CAPTURE: - CAMHAL_LOGDB("Adapter state switch BRACKETING_STATE->PREVIEW_STATE event = %s", - printState); - mNextState = PREVIEW_STATE; - break; - - case CAMERA_START_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch BRACKETING_STATE->CAPTURE_STATE event = %s", - printState); - mNextState = CAPTURE_STATE; - break; - - default: - CAMHAL_LOGEB("Adapter state switch BRACKETING_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case AF_STATE: - - switch ( operation ) - { - - case CAMERA_CANCEL_AUTOFOCUS: - CAMHAL_LOGDB("Adapter state switch AF_STATE->PREVIEW_STATE event = %s", - printState); - mNextState = PREVIEW_STATE; - break; - - case CAMERA_START_SMOOTH_ZOOM: - CAMHAL_LOGDB("Adapter state switch AF_STATE->AF_ZOOM_STATE event = %s", - printState); - mNextState = AF_ZOOM_STATE; - break; - - default: - CAMHAL_LOGEB("Adapter state switch AF_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case ZOOM_STATE: - - switch ( operation ) - { - - case CAMERA_CANCEL_AUTOFOCUS: - CAMHAL_LOGDB("Adapter state switch AF_STATE->PREVIEW_STATE event = %s", - printState); - mNextState = ZOOM_STATE; - break; - - case CAMERA_STOP_SMOOTH_ZOOM: - CAMHAL_LOGDB("Adapter state switch ZOOM_STATE->PREVIEW_STATE event = %s", - printState); - mNextState = PREVIEW_STATE; - break; - - case CAMERA_PERFORM_AUTOFOCUS: - CAMHAL_LOGDB("Adapter state switch ZOOM_STATE->AF_ZOOM_STATE event = %s", - printState); - mNextState = AF_ZOOM_STATE; - break; - - case CAMERA_START_VIDEO: - CAMHAL_LOGDB("Adapter state switch ZOOM_STATE->VIDEO_ZOOM_STATE event = %s", - printState); - mNextState = VIDEO_ZOOM_STATE; - break; - - default: - CAMHAL_LOGEB("Adapter state switch ZOOM_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case VIDEO_STATE: - - switch ( operation ) - { - - case CAMERA_STOP_VIDEO: - CAMHAL_LOGDB("Adapter state switch VIDEO_STATE->PREVIEW_STATE event = %s", - printState); - mNextState = PREVIEW_STATE; - break; - - case CAMERA_PERFORM_AUTOFOCUS: - CAMHAL_LOGDB("Adapter state switch VIDEO_STATE->VIDEO_AF_STATE event = %s", - printState); - mNextState = VIDEO_AF_STATE; - break; - - case CAMERA_START_SMOOTH_ZOOM: - CAMHAL_LOGDB("Adapter state switch VIDEO_STATE->VIDEO_ZOOM_STATE event = %s", - printState); - mNextState = VIDEO_ZOOM_STATE; - break; - - case CAMERA_USE_BUFFERS_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch VIDEO_STATE->VIDEO_LOADED_CAPTURE_STATE event = %s", - printState); - mNextState = VIDEO_LOADED_CAPTURE_STATE; - break; - - case CAMERA_QUERY_BUFFER_SIZE_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch VIDEO_STATE->VIDEO_STATE event = %s", - printState); - mNextState = VIDEO_STATE; - break; - - default: - CAMHAL_LOGEB("Adapter state switch VIDEO_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case VIDEO_AF_STATE: - - switch ( operation ) - { - - case CAMERA_CANCEL_AUTOFOCUS: - CAMHAL_LOGDB("Adapter state switch VIDEO_AF_STATE->VIDEO_STATE event = %s", - printState); - mNextState = VIDEO_STATE; - break; - - default: - CAMHAL_LOGEB("Adapter state switch VIDEO_AF_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case VIDEO_LOADED_CAPTURE_STATE: - - switch ( operation ) - { - - case CAMERA_START_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch LOADED_CAPTURE_STATE->CAPTURE_STATE event = %s", - printState); - mNextState = VIDEO_CAPTURE_STATE; - break; - - default: - CAMHAL_LOGEB("Adapter state switch LOADED_CAPTURE_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case VIDEO_CAPTURE_STATE: - - switch ( operation ) - { - case CAMERA_STOP_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch CAPTURE_STATE->PREVIEW_STATE event = %s", - printState); - mNextState = VIDEO_STATE; - break; - - default: - CAMHAL_LOGEB("Adapter state switch CAPTURE_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case AF_ZOOM_STATE: - - switch ( operation ) - { - - case CAMERA_STOP_SMOOTH_ZOOM: - CAMHAL_LOGDB("Adapter state switch AF_ZOOM_STATE->AF_STATE event = %s", - printState); - mNextState = AF_STATE; - break; - - case CAMERA_CANCEL_AUTOFOCUS: - CAMHAL_LOGDB("Adapter state switch AF_ZOOM_STATE->ZOOM_STATE event = %s", - printState); - mNextState = ZOOM_STATE; - break; - - default: - CAMHAL_LOGEB("Adapter state switch AF_ZOOM_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case VIDEO_ZOOM_STATE: - - switch ( operation ) - { - - case CAMERA_STOP_SMOOTH_ZOOM: - CAMHAL_LOGDB("Adapter state switch VIDEO_ZOOM_STATE->VIDEO_STATE event = %s", - printState); - mNextState = VIDEO_STATE; - break; - - case CAMERA_STOP_VIDEO: - CAMHAL_LOGDB("Adapter state switch VIDEO_ZOOM_STATE->ZOOM_STATE event = %s", - printState); - mNextState = ZOOM_STATE; - break; - - default: - CAMHAL_LOGEB("Adapter state switch VIDEO_ZOOM_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - - case BRACKETING_ZOOM_STATE: - - switch ( operation ) - { - - case CAMERA_STOP_SMOOTH_ZOOM: - CAMHAL_LOGDB("Adapter state switch BRACKETING_ZOOM_STATE->BRACKETING_STATE event = %s", - printState); - mNextState = BRACKETING_STATE; - break; - - default: - CAMHAL_LOGEB("Adapter state switch BRACKETING_ZOOM_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; - -#ifdef OMAP_ENHANCEMENT_CPCAM - case REPROCESS_STATE: - switch (operation) { - case CAMERA_STOP_IMAGE_CAPTURE: - CAMHAL_LOGDB("Adapter state switch REPROCESS_STATE->PREVIEW_STATE event = %s", - printState); - mNextState = PREVIEW_STATE; - break; - case CAMERA_START_IMAGE_CAPTURE: - case CAMERA_USE_BUFFERS_REPROCESS: - CAMHAL_LOGDB("Adapter state switch REPROCESS_STATE->REPROCESS_STATE event = %s", - printState); - mNextState = REPROCESS_STATE; - break; - - default: - CAMHAL_LOGEB("Adapter state switch REPROCESS_STATE Invalid Op! event = %s", - printState); - ret = INVALID_OPERATION; - break; - - } - - break; -#endif - - - default: - CAMHAL_LOGEA("Invalid Adapter state!"); - ret = INVALID_OPERATION; - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::rollbackToInitializedState() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - while ((getState() != INTIALIZED_STATE) && (ret == NO_ERROR)) { - ret = rollbackToPreviousState(); - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::rollbackToPreviousState() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - CameraAdapter::AdapterState currentState = getState(); - - switch (currentState) { - case INTIALIZED_STATE: - return NO_ERROR; - - case PREVIEW_STATE: - ret = sendCommand(CAMERA_STOP_PREVIEW); - break; - - case CAPTURE_STATE: -#ifdef OMAP_ENHANCEMENT_CPCAM - case REPROCESS_STATE: -#endif - ret = sendCommand(CAMERA_STOP_IMAGE_CAPTURE); - break; - - case BRACKETING_STATE: - ret = sendCommand(CAMERA_STOP_BRACKET_CAPTURE); - break; - - case AF_STATE: - ret = sendCommand(CAMERA_CANCEL_AUTOFOCUS); - break; - - case ZOOM_STATE: - ret = sendCommand(CAMERA_STOP_SMOOTH_ZOOM); - break; - - case VIDEO_STATE: - ret = sendCommand(CAMERA_STOP_VIDEO); - break; - - case VIDEO_AF_STATE: - ret = sendCommand(CAMERA_CANCEL_AUTOFOCUS); - break; - - case VIDEO_CAPTURE_STATE: - ret = sendCommand(CAMERA_STOP_IMAGE_CAPTURE); - break; - - case AF_ZOOM_STATE: - ret = sendCommand(CAMERA_STOP_SMOOTH_ZOOM); - break; - - case VIDEO_ZOOM_STATE: - ret = sendCommand(CAMERA_STOP_SMOOTH_ZOOM); - break; - - case BRACKETING_ZOOM_STATE: - ret = sendCommand(CAMERA_STOP_SMOOTH_ZOOM); - break; - - default: - CAMHAL_LOGEA("Invalid Adapter state!"); - ret = INVALID_OPERATION; - } - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -//State transition finished successfully. -//Commit the state and unlock the adapter state. -status_t BaseCameraAdapter::commitState() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - mAdapterState = mNextState; - - mLock.unlock(); - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::rollbackState() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - mNextState = mAdapterState; - - mLock.unlock(); - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -// getNextState() and getState() -// publicly exposed functions to retrieve the adapter states -// please notice that these functions are locked -CameraAdapter::AdapterState BaseCameraAdapter::getState() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - android::AutoMutex lock(mLock); - - LOG_FUNCTION_NAME_EXIT; - - return mAdapterState; -} - -CameraAdapter::AdapterState BaseCameraAdapter::getNextState() -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - android::AutoMutex lock(mLock); - - LOG_FUNCTION_NAME_EXIT; - - return mNextState; -} - -// getNextState() and getState() -// internal protected functions to retrieve the adapter states -// please notice that these functions are NOT locked to help -// internal functions query state in the middle of state -// transition -status_t BaseCameraAdapter::getState(AdapterState &state) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - state = mAdapterState; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -status_t BaseCameraAdapter::getNextState(AdapterState &state) -{ - status_t ret = NO_ERROR; - - LOG_FUNCTION_NAME; - - state = mNextState; - - LOG_FUNCTION_NAME_EXIT; - - return ret; -} - -void BaseCameraAdapter::onOrientationEvent(uint32_t orientation, uint32_t tilt) -{ - LOG_FUNCTION_NAME; - LOG_FUNCTION_NAME_EXIT; -} - -//----------------------------------------------------------------------------- - -extern "C" status_t OMXCameraAdapter_Capabilities( - CameraProperties::Properties * const properties_array, - const int starting_camera, const int max_camera, int & supportedCameras); -extern "C" status_t V4LCameraAdapter_Capabilities( - CameraProperties::Properties * const properties_array, - const int starting_camera, const int max_camera, int & supportedCameras); - -extern "C" status_t CameraAdapter_Capabilities( - CameraProperties::Properties * const properties_array, - const int starting_camera, const int max_camera, int & supportedCameras) -{ - - status_t ret = NO_ERROR; - status_t err = NO_ERROR; - int num_cameras_supported = 0; - - LOG_FUNCTION_NAME; - - supportedCameras = 0; -#ifdef OMX_CAMERA_ADAPTER - //Query OMX cameras - err = OMXCameraAdapter_Capabilities( properties_array, starting_camera, - max_camera, supportedCameras); - if(err != NO_ERROR) { - CAMHAL_LOGEA("error while getting OMXCameraAdapter capabilities"); - ret = UNKNOWN_ERROR; - } -#endif -#ifdef V4L_CAMERA_ADAPTER - //Query V4L cameras - err = V4LCameraAdapter_Capabilities( properties_array, (const int) supportedCameras, - max_camera, num_cameras_supported); - if(err != NO_ERROR) { - CAMHAL_LOGEA("error while getting V4LCameraAdapter capabilities"); - ret = UNKNOWN_ERROR; - } -#endif - - supportedCameras += num_cameras_supported; - CAMHAL_LOGEB("supportedCameras= %d\n", supportedCameras); - LOG_FUNCTION_NAME_EXIT; - return ret; -} - -//----------------------------------------------------------------------------- - -} // namespace Camera -} // namespace Ti - -/*--------------------Camera Adapter Class ENDS here-----------------------------*/ - |