summaryrefslogtreecommitdiff
authorpengfei.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)
commit6448e1a8a3a4a4e2961e46de7b2d5f41a77645ef (patch)
tree10621a927fee32e2dc7411a89cda3b014858a7f3
parent4c85f2d36ea36955a6b6f580d67bac1d1537319c (diff)
downloadcamera-6448e1a8a3a4a4e2961e46de7b2d5f41a77645ef.zip
camera-6448e1a8a3a4a4e2961e46de7b2d5f41a77645ef.tar.gz
camera-6448e1a8a3a4a4e2961e46de7b2d5f41a77645ef.tar.bz2
pd#72806:Third party apk compatible Camera
Diffstat
-rwxr-xr-xCameraHal.cpp5
-rwxr-xr-xV4LCameraAdapter/V4LCameraAdapter.cpp27
-rwxr-xr-xinc/CameraHal.h1
-rwxr-xr-xinc/V4LCameraAdapter/V4LCameraAdapter.h5
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;