diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2013-02-06 17:20:07 -0800 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2013-02-27 12:47:21 -0800 |
commit | 7fa43f376ebd63fda24d85c9ebf97e0ddf534083 (patch) | |
tree | 46c73e2599e85fe59accef0c7efd4780b47f26a3 /services/camera/libcameraservice/Camera2Client.cpp | |
parent | f5daac4225905184b8d7cdd2fd87247d73e27ea7 (diff) | |
download | frameworks_av-7fa43f376ebd63fda24d85c9ebf97e0ddf534083.zip frameworks_av-7fa43f376ebd63fda24d85c9ebf97e0ddf534083.tar.gz frameworks_av-7fa43f376ebd63fda24d85c9ebf97e0ddf534083.tar.bz2 |
Camera: Start of support for version 3.0 of camera device HAL
- Refactor common CameraDevice interface out of Camera2Device
- Initial skeleton only for Camera3Device
Change-Id: I097cc76e2ad102a51712ac114235163245f5482c
Diffstat (limited to 'services/camera/libcameraservice/Camera2Client.cpp')
-rw-r--r-- | services/camera/libcameraservice/Camera2Client.cpp | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp index 38d6949..8295905 100644 --- a/services/camera/libcameraservice/Camera2Client.cpp +++ b/services/camera/libcameraservice/Camera2Client.cpp @@ -25,6 +25,8 @@ #include <gui/Surface.h> #include "camera2/Parameters.h" #include "Camera2Client.h" +#include "Camera2Device.h" +#include "Camera3Device.h" #define ALOG1(...) ALOGD_IF(gLogLevel >= 1, __VA_ARGS__); #define ALOG2(...) ALOGD_IF(gLogLevel >= 2, __VA_ARGS__); @@ -45,7 +47,8 @@ Camera2Client::Camera2Client(const sp<CameraService>& cameraService, int cameraFacing, int clientPid, uid_t clientUid, - int servicePid): + int servicePid, + int deviceVersion): Client(cameraService, cameraClient, clientPackageName, cameraId, cameraFacing, clientPid, clientUid, servicePid), mSharedCameraClient(cameraClient), @@ -54,7 +57,20 @@ Camera2Client::Camera2Client(const sp<CameraService>& cameraService, ATRACE_CALL(); ALOGI("Camera %d: Opened", cameraId); - mDevice = new Camera2Device(cameraId); + switch (deviceVersion) { + case CAMERA_DEVICE_API_VERSION_2_0: + mDevice = new Camera2Device(cameraId); + break; + case CAMERA_DEVICE_API_VERSION_3_0: + mDevice = new Camera3Device(cameraId); + break; + default: + ALOGE("Camera %d: Unknown HAL device version %d", + cameraId, deviceVersion); + mDevice = NULL; + break; + } + SharedParameters::Lock l(mParameters); l.mParameters.state = Parameters::DISCONNECTED; @@ -81,6 +97,12 @@ status_t Camera2Client::initialize(camera_module_t *module) return res; } + if (mDevice == NULL) { + ALOGE("%s: Camera %d: No device connected", + __FUNCTION__, mCameraId); + return NO_INIT; + } + res = mDevice->initialize(module); if (res != OK) { ALOGE("%s: Camera %d: unable to initialize device: %s (%d)", @@ -1465,7 +1487,7 @@ int Camera2Client::getCameraId() const { return mCameraId; } -const sp<Camera2Device>& Camera2Client::getCameraDevice() { +const sp<CameraDeviceBase>& Camera2Client::getCameraDevice() { return mDevice; } |