Loading camera/Camera.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -95,13 +95,20 @@ Camera::~Camera() disconnect(); } sp<Camera> Camera::connect() int32_t Camera::getNumberOfCameras() { const sp<ICameraService>& cs = getCameraService(); if (cs == 0) return 0; return cs->getNumberOfCameras(); } sp<Camera> Camera::connect(int cameraId) { LOGV("connect"); sp<Camera> c = new Camera(); const sp<ICameraService>& cs = getCameraService(); if (cs != 0) { c->mCamera = cs->connect(c); c->mCamera = cs->connect(c, cameraId); } if (c->mCamera != 0) { c->mCamera->asBinder()->linkToDeath(c); Loading camera/ICameraService.cpp +17 −2 Original line number Diff line number Diff line Loading @@ -34,12 +34,22 @@ public: { } // get number of cameras available virtual int32_t getNumberOfCameras() { Parcel data, reply; data.writeInterfaceToken(ICameraService::getInterfaceDescriptor()); remote()->transact(BnCameraService::GET_NUMBER_OF_CAMERAS, data, &reply); return reply.readInt32(); } // connect to camera service virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient) virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient, int cameraId) { Parcel data, reply; data.writeInterfaceToken(ICameraService::getInterfaceDescriptor()); data.writeStrongBinder(cameraClient->asBinder()); data.writeInt32(cameraId); remote()->transact(BnCameraService::CONNECT, data, &reply); return interface_cast<ICamera>(reply.readStrongBinder()); } Loading @@ -53,10 +63,15 @@ status_t BnCameraService::onTransact( uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { switch(code) { case GET_NUMBER_OF_CAMERAS: { CHECK_INTERFACE(ICameraService, data, reply); reply->writeInt32(getNumberOfCameras()); return NO_ERROR; } break; case CONNECT: { CHECK_INTERFACE(ICameraService, data, reply); sp<ICameraClient> cameraClient = interface_cast<ICameraClient>(data.readStrongBinder()); sp<ICamera> camera = connect(cameraClient); sp<ICamera> camera = connect(cameraClient, data.readInt32()); reply->writeStrongBinder(camera->asBinder()); return NO_ERROR; } break; Loading include/camera/Camera.h +2 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,8 @@ class Camera : public BnCameraClient, public IBinder::DeathRecipient public: // construct a camera client from an existing remote static sp<Camera> create(const sp<ICamera>& camera); static sp<Camera> connect(); static int32_t getNumberOfCameras(); static sp<Camera> connect(int cameraId); ~Camera(); void init(); Loading include/camera/ICameraService.h +5 −2 Original line number Diff line number Diff line Loading @@ -30,13 +30,16 @@ class ICameraService : public IInterface { public: enum { CONNECT = IBinder::FIRST_CALL_TRANSACTION, GET_NUMBER_OF_CAMERAS = IBinder::FIRST_CALL_TRANSACTION, CONNECT }; public: DECLARE_META_INTERFACE(CameraService); virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient) = 0; virtual int32_t getNumberOfCameras() = 0; virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient, int cameraId) = 0; }; // ---------------------------------------------------------------------------- Loading media/libstagefright/CameraSource.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -106,7 +106,7 @@ void CameraSourceListener::postDataTimestamp( // static CameraSource *CameraSource::Create() { sp<Camera> camera = Camera::connect(); sp<Camera> camera = Camera::connect(0); if (camera.get() == NULL) { return NULL; Loading Loading
camera/Camera.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -95,13 +95,20 @@ Camera::~Camera() disconnect(); } sp<Camera> Camera::connect() int32_t Camera::getNumberOfCameras() { const sp<ICameraService>& cs = getCameraService(); if (cs == 0) return 0; return cs->getNumberOfCameras(); } sp<Camera> Camera::connect(int cameraId) { LOGV("connect"); sp<Camera> c = new Camera(); const sp<ICameraService>& cs = getCameraService(); if (cs != 0) { c->mCamera = cs->connect(c); c->mCamera = cs->connect(c, cameraId); } if (c->mCamera != 0) { c->mCamera->asBinder()->linkToDeath(c); Loading
camera/ICameraService.cpp +17 −2 Original line number Diff line number Diff line Loading @@ -34,12 +34,22 @@ public: { } // get number of cameras available virtual int32_t getNumberOfCameras() { Parcel data, reply; data.writeInterfaceToken(ICameraService::getInterfaceDescriptor()); remote()->transact(BnCameraService::GET_NUMBER_OF_CAMERAS, data, &reply); return reply.readInt32(); } // connect to camera service virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient) virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient, int cameraId) { Parcel data, reply; data.writeInterfaceToken(ICameraService::getInterfaceDescriptor()); data.writeStrongBinder(cameraClient->asBinder()); data.writeInt32(cameraId); remote()->transact(BnCameraService::CONNECT, data, &reply); return interface_cast<ICamera>(reply.readStrongBinder()); } Loading @@ -53,10 +63,15 @@ status_t BnCameraService::onTransact( uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { switch(code) { case GET_NUMBER_OF_CAMERAS: { CHECK_INTERFACE(ICameraService, data, reply); reply->writeInt32(getNumberOfCameras()); return NO_ERROR; } break; case CONNECT: { CHECK_INTERFACE(ICameraService, data, reply); sp<ICameraClient> cameraClient = interface_cast<ICameraClient>(data.readStrongBinder()); sp<ICamera> camera = connect(cameraClient); sp<ICamera> camera = connect(cameraClient, data.readInt32()); reply->writeStrongBinder(camera->asBinder()); return NO_ERROR; } break; Loading
include/camera/Camera.h +2 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,8 @@ class Camera : public BnCameraClient, public IBinder::DeathRecipient public: // construct a camera client from an existing remote static sp<Camera> create(const sp<ICamera>& camera); static sp<Camera> connect(); static int32_t getNumberOfCameras(); static sp<Camera> connect(int cameraId); ~Camera(); void init(); Loading
include/camera/ICameraService.h +5 −2 Original line number Diff line number Diff line Loading @@ -30,13 +30,16 @@ class ICameraService : public IInterface { public: enum { CONNECT = IBinder::FIRST_CALL_TRANSACTION, GET_NUMBER_OF_CAMERAS = IBinder::FIRST_CALL_TRANSACTION, CONNECT }; public: DECLARE_META_INTERFACE(CameraService); virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient) = 0; virtual int32_t getNumberOfCameras() = 0; virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient, int cameraId) = 0; }; // ---------------------------------------------------------------------------- Loading
media/libstagefright/CameraSource.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -106,7 +106,7 @@ void CameraSourceListener::postDataTimestamp( // static CameraSource *CameraSource::Create() { sp<Camera> camera = Camera::connect(); sp<Camera> camera = Camera::connect(0); if (camera.get() == NULL) { return NULL; Loading