From f69c70ded4316ea3ee504ac779bd024433ed4ef7 Mon Sep 17 00:00:00 2001 From: Eino-Ville Talvala Date: Sun, 20 May 2012 15:59:14 -0700 Subject: 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 --- services/camera/libcameraservice/CameraClient.cpp | 42 +++++++++++++++++------ 1 file changed, 31 insertions(+), 11 deletions(-) (limited to 'services/camera/libcameraservice/CameraClient.cpp') 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, const sp& cameraClient, - const sp& hardware, int cameraId, int cameraFacing, int clientPid): Client(cameraService, cameraClient, cameraId, cameraFacing, clientPid) @@ -48,19 +47,11 @@ CameraClient::CameraClient(const sp& 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, 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); } -- cgit v1.1