diff options
author | Eino-Ville Talvala <etalvala@google.com> | 2012-05-20 15:59:14 -0700 |
---|---|---|
committer | Eino-Ville Talvala <etalvala@google.com> | 2012-05-29 13:47:50 -0700 |
commit | f69c70ded4316ea3ee504ac779bd024433ed4ef7 (patch) | |
tree | 35a9f7b23fff4fb40321cf4c009d268bed27bea8 /services/camera/libcameraservice/CameraClient.cpp | |
parent | dd72c3017aef65d099460cfc6c0402bc2ba85bc3 (diff) | |
download | frameworks_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.cpp | 42 |
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); } |