diff options
author | Chih-Chung Chang <chihchung@google.com> | 2010-06-10 13:32:16 +0800 |
---|---|---|
committer | Chih-Chung Chang <chihchung@google.com> | 2010-06-11 16:47:33 +0800 |
commit | ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4 (patch) | |
tree | 9a3115e77421f95a8505067cfa60b5a73518ad68 /camera/ICameraService.cpp | |
parent | 0a5baa9b411fe086013d2a5e9126ed63fbad046c (diff) | |
download | frameworks_av-ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4.zip frameworks_av-ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4.tar.gz frameworks_av-ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4.tar.bz2 |
Change camera interface to support multiple cameras.
Change-Id: Ie88fe706d2278acf762eca87780de349434778a4
Diffstat (limited to 'camera/ICameraService.cpp')
-rw-r--r-- | camera/ICameraService.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/camera/ICameraService.cpp b/camera/ICameraService.cpp index db1dca6..85f1a29 100644 --- a/camera/ICameraService.cpp +++ b/camera/ICameraService.cpp @@ -43,6 +43,18 @@ public: return reply.readInt32(); } + // get information about a camera + virtual status_t getCameraInfo(int cameraId, + struct CameraInfo* cameraInfo) { + Parcel data, reply; + data.writeInterfaceToken(ICameraService::getInterfaceDescriptor()); + data.writeInt32(cameraId); + remote()->transact(BnCameraService::GET_CAMERA_INFO, data, &reply); + cameraInfo->facing = reply.readInt32(); + cameraInfo->orientation = reply.readInt32(); + return reply.readInt32(); + } + // connect to camera service virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient, int cameraId) { @@ -68,6 +80,16 @@ status_t BnCameraService::onTransact( reply->writeInt32(getNumberOfCameras()); return NO_ERROR; } break; + case GET_CAMERA_INFO: { + CHECK_INTERFACE(ICameraService, data, reply); + CameraInfo cameraInfo; + memset(&cameraInfo, 0, sizeof(cameraInfo)); + status_t result = getCameraInfo(data.readInt32(), &cameraInfo); + reply->writeInt32(cameraInfo.facing); + reply->writeInt32(cameraInfo.orientation); + reply->writeInt32(result); + return NO_ERROR; + } break; case CONNECT: { CHECK_INTERFACE(ICameraService, data, reply); sp<ICameraClient> cameraClient = interface_cast<ICameraClient>(data.readStrongBinder()); |