summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/Camera2Client.cpp
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2013-02-06 17:20:07 -0800
committerEino-Ville Talvala <etalvala@google.com>2013-02-27 12:47:21 -0800
commit7fa43f376ebd63fda24d85c9ebf97e0ddf534083 (patch)
tree46c73e2599e85fe59accef0c7efd4780b47f26a3 /services/camera/libcameraservice/Camera2Client.cpp
parentf5daac4225905184b8d7cdd2fd87247d73e27ea7 (diff)
downloadframeworks_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.cpp28
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;
}