summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/CameraClient.cpp
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2012-05-20 15:59:14 -0700
committerEino-Ville Talvala <etalvala@google.com>2012-05-29 13:47:50 -0700
commitf69c70ded4316ea3ee504ac779bd024433ed4ef7 (patch)
tree35a9f7b23fff4fb40321cf4c009d268bed27bea8 /services/camera/libcameraservice/CameraClient.cpp
parentdd72c3017aef65d099460cfc6c0402bc2ba85bc3 (diff)
downloadframeworks_av-f69c70ded4316ea3ee504ac779bd024433ed4ef7.zip
frameworks_av-f69c70ded4316ea3ee504ac779bd024433ed4ef7.tar.gz
frameworks_av-f69c70ded4316ea3ee504ac779bd024433ed4ef7.tar.bz2
Camera service: Initialization for camera2 clients and devices
- Refactor initialization code to hide device type from CameraService - Add metadata queue class to Camera2Device - Initialization of Camera2Device, Camera2Client - Conversion from HAL2 device static metadata to camera API parameters. Bug: 6243944 Change-Id: I524145b45438e906d8493dae202704ce8f090aeb
Diffstat (limited to 'services/camera/libcameraservice/CameraClient.cpp')
-rw-r--r--services/camera/libcameraservice/CameraClient.cpp42
1 files changed, 31 insertions, 11 deletions
diff --git a/services/camera/libcameraservice/CameraClient.cpp b/services/camera/libcameraservice/CameraClient.cpp
index ce9ee1e..80ccb43 100644
--- a/services/camera/libcameraservice/CameraClient.cpp
+++ b/services/camera/libcameraservice/CameraClient.cpp
@@ -40,7 +40,6 @@ static int getCallingUid() {
CameraClient::CameraClient(const sp<CameraService>& cameraService,
const sp<ICameraClient>& cameraClient,
- const sp<CameraHardwareInterface>& hardware,
int cameraId, int cameraFacing, int clientPid):
Client(cameraService, cameraClient,
cameraId, cameraFacing, clientPid)
@@ -48,19 +47,11 @@ CameraClient::CameraClient(const sp<CameraService>& cameraService,
int callingPid = getCallingPid();
LOG1("CameraClient::CameraClient E (pid %d, id %d)", callingPid, cameraId);
- mHardware = hardware;
+ mHardware = NULL;
mMsgEnabled = 0;
mSurface = 0;
mPreviewWindow = 0;
mDestructionStarted = false;
- mHardware->setCallbacks(notifyCallback,
- dataCallback,
- dataCallbackTimestamp,
- (void *)cameraId);
-
- // Enable zoom, error, focus, and metadata messages by default
- enableMsgType(CAMERA_MSG_ERROR | CAMERA_MSG_ZOOM | CAMERA_MSG_FOCUS |
- CAMERA_MSG_PREVIEW_METADATA | CAMERA_MSG_FOCUS_MOVE);
// Callback is disabled by default
mPreviewCallbackFlag = CAMERA_FRAME_CALLBACK_FLAG_NOOP;
@@ -69,6 +60,36 @@ CameraClient::CameraClient(const sp<CameraService>& cameraService,
LOG1("CameraClient::CameraClient X (pid %d, id %d)", callingPid, cameraId);
}
+status_t CameraClient::initialize(camera_module_t *module) {
+ int callingPid = getCallingPid();
+ LOG1("CameraClient::initialize E (pid %d, id %d)", callingPid, mCameraId);
+
+ char camera_device_name[10];
+ status_t res;
+ snprintf(camera_device_name, sizeof(camera_device_name), "%d", mCameraId);
+
+ mHardware = new CameraHardwareInterface(camera_device_name);
+ res = mHardware->initialize(&module->common);
+ if (res != OK) {
+ ALOGE("%s: Camera %d: unable to initialize device: %s (%d)",
+ __FUNCTION__, mCameraId, strerror(-res), res);
+ return NO_INIT;
+ }
+
+ mHardware->setCallbacks(notifyCallback,
+ dataCallback,
+ dataCallbackTimestamp,
+ (void *)mCameraId);
+
+ // Enable zoom, error, focus, and metadata messages by default
+ enableMsgType(CAMERA_MSG_ERROR | CAMERA_MSG_ZOOM | CAMERA_MSG_FOCUS |
+ CAMERA_MSG_PREVIEW_METADATA | CAMERA_MSG_FOCUS_MOVE);
+
+ LOG1("CameraClient::initialize X (pid %d, id %d)", callingPid, mCameraId);
+ return OK;
+}
+
+
// tear down the client
CameraClient::~CameraClient() {
// this lock should never be NULL
@@ -83,7 +104,6 @@ CameraClient::~CameraClient() {
// set mClientPid to let disconnet() tear down the hardware
mClientPid = callingPid;
disconnect();
- mCameraService->releaseSound();
LOG1("CameraClient::~CameraClient X (pid %d, this %p)", callingPid, this);
}