author | pengfei.hao <pengfei.hao@amlogic.com> | 2013-06-25 02:39:47 (GMT) |
---|---|---|
committer | eric <eric.zhong@amlogic.com> | 2013-06-25 02:39:47 (GMT) |
commit | 6448e1a8a3a4a4e2961e46de7b2d5f41a77645ef (patch) | |
tree | 10621a927fee32e2dc7411a89cda3b014858a7f3 | |
parent | 4c85f2d36ea36955a6b6f580d67bac1d1537319c (diff) | |
download | camera-6448e1a8a3a4a4e2961e46de7b2d5f41a77645ef.zip camera-6448e1a8a3a4a4e2961e46de7b2d5f41a77645ef.tar.gz camera-6448e1a8a3a4a4e2961e46de7b2d5f41a77645ef.tar.bz2 |
pd#72806:Third party apk compatible Camera
-rwxr-xr-x | CameraHal.cpp | 5 | ||||
-rwxr-xr-x | V4LCameraAdapter/V4LCameraAdapter.cpp | 27 | ||||
-rwxr-xr-x | inc/CameraHal.h | 1 | ||||
-rwxr-xr-x | inc/V4LCameraAdapter/V4LCameraAdapter.h | 5 |
4 files changed, 31 insertions, 7 deletions
diff --git a/CameraHal.cpp b/CameraHal.cpp index 0e8613d..331a28e 100755 --- a/CameraHal.cpp +++ b/CameraHal.cpp @@ -2804,7 +2804,10 @@ status_t CameraHal::sendCommand(int32_t cmd, int32_t arg1, int32_t arg2) LOG_FUNCTION_NAME; - + if (CAMERA_APK_NAME==cmd) + { + ret = mCameraAdapter->sendCommand(CameraAdapter::CAMERA_APK, arg1,arg2); + } if ( ( NO_ERROR == ret ) && ( NULL == mCameraAdapter ) ) { CAMHAL_LOGEA("No CameraAdapter instance"); diff --git a/V4LCameraAdapter/V4LCameraAdapter.cpp b/V4LCameraAdapter/V4LCameraAdapter.cpp index af89e4f..47fbb67 100755 --- a/V4LCameraAdapter/V4LCameraAdapter.cpp +++ b/V4LCameraAdapter/V4LCameraAdapter.cpp @@ -148,6 +148,14 @@ static int writefile(char* path,char* content) } #endif /*--------------------Camera Adapter Class STARTS here-----------------------------*/ +status_t V4LCameraAdapter::sendCommand(CameraCommands operation, int value1, int value2, int value3) { + if(operation==CAMERA_APK) { + mPreviewOriation=value1; + mCaptureOriation=value2; + return 1; + }else + return BaseCameraAdapter::sendCommand(operation, value1, value2, value3); +} status_t V4LCameraAdapter::initialize(CameraProperties::Properties* caps) { @@ -1147,8 +1155,13 @@ status_t V4LCameraAdapter::startPreview() setMirrorEffect(); if(mIoctlSupport & IOCTL_MASK_ROTATE){ - set_rotate_value(mCameraHandle,0); - mRotateValue = 0; + if(mPreviewOriation!=0) { + set_rotate_value(mCameraHandle,mPreviewOriation); + mPreviewOriation=0; + }else{ + set_rotate_value(mCameraHandle,0); + mRotateValue = 0; + } } #endif @@ -1436,7 +1449,8 @@ V4LCameraAdapter::V4LCameraAdapter(size_t sensor_index) mbDisableMirror = false; mSensorIndex = sensor_index; - + mPreviewOriation=0; + mCaptureOriation=0; LOG_FUNCTION_NAME_EXIT; } @@ -1822,7 +1836,12 @@ int V4LCameraAdapter::pictureThread() #ifndef AMLOGIC_USB_CAMERA_SUPPORT if(mIoctlSupport & IOCTL_MASK_ROTATE){ - set_rotate_value(mCameraHandle,mRotateValue); + if(mCaptureOriation!=0){ + set_rotate_value(mCameraHandle,mCaptureOriation); + mCaptureOriation=0; + }else{ + set_rotate_value(mCameraHandle,mRotateValue); + } } #endif diff --git a/inc/CameraHal.h b/inc/CameraHal.h index b804436..e820ef0 100755 --- a/inc/CameraHal.h +++ b/inc/CameraHal.h @@ -790,6 +790,7 @@ public: CAMERA_SWITCH_TO_EXECUTING = 24, CAMERA_DISABLE_MIRROR = 25, CAMERA_FOCUS_MOVE_MSG = 26, + CAMERA_APK = 27, }; diff --git a/inc/V4LCameraAdapter/V4LCameraAdapter.h b/inc/V4LCameraAdapter/V4LCameraAdapter.h index e701ef0..310b117 100755 --- a/inc/V4LCameraAdapter/V4LCameraAdapter.h +++ b/inc/V4LCameraAdapter/V4LCameraAdapter.h @@ -262,7 +262,7 @@ public: //APIs to configure Camera adapter and get the current parameter set virtual status_t setParameters(const CameraParameters& params); virtual void getParameters(CameraParameters& params); - + virtual status_t sendCommand(CameraCommands operation, int value1 = 0, int value2 = 0, int value3 = 0 ); // API virtual status_t UseBuffersPreview(void* bufArr, int num); virtual status_t UseBuffersCapture(void* bufArr, int num); @@ -342,7 +342,8 @@ private: int mPreviewHeight; int mCaptureWidth; int mCaptureHeight; - + int mPreviewOriation; + int mCaptureOriation; bool mPreviewing; bool mCapturing; Mutex mLock; |