Loading camera/common/1.0/default/CameraModule.cpp +35 −0 Original line number Diff line number Diff line Loading @@ -319,6 +319,41 @@ int CameraModule::getCameraInfo(int cameraId, struct camera_info *info) { return OK; } int CameraModule::getPhysicalCameraInfo(int physicalCameraId, camera_metadata_t **physicalInfo) { ATRACE_CALL(); Mutex::Autolock lock(mCameraInfoLock); if (physicalCameraId < 0) { ALOGE("%s: Invalid physical camera ID %d", __FUNCTION__, physicalCameraId); return -EINVAL; } // Only query physical camera info for 2.5 version for newer int apiVersion = mModule->common.module_api_version; if (apiVersion < CAMERA_MODULE_API_VERSION_2_5) { ALOGE("%s: Module version must be at least 2.5 to handle getPhysicalCameraInfo", __FUNCTION__); return -ENODEV; } ssize_t index = mPhysicalCameraInfoMap.indexOfKey(physicalCameraId); if (index == NAME_NOT_FOUND) { // Get physical camera characteristics, and cache it camera_metadata_t *info = nullptr; ATRACE_BEGIN("camera_module->get_physical_camera_info"); int ret = mModule->get_physical_camera_info(physicalCameraId, &info); ATRACE_END(); if (ret != 0) { return ret; } index = mPhysicalCameraInfoMap.add(physicalCameraId, info); } assert(index != NAME_NOT_FOUND); *physicalInfo = mPhysicalCameraInfoMap[index]; return OK; } int CameraModule::getDeviceVersion(int cameraId) { ssize_t index = mDeviceVersionMap.indexOfKey(cameraId); if (index == NAME_NOT_FOUND) { Loading camera/common/1.0/default/include/CameraModule.h +2 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public: void *getDso(); // Only used by CameraProvider void removeCamera(int cameraId); int getPhysicalCameraInfo(int physicalCameraId, camera_metadata_t **physicalInfo); private: // Derive camera characteristics keys defined after HAL device version Loading @@ -76,6 +77,7 @@ private: camera_module_t *mModule; KeyedVector<int, camera_info> mCameraInfoMap; KeyedVector<int, int> mDeviceVersionMap; KeyedVector<int, camera_metadata_t*> mPhysicalCameraInfoMap; Mutex mCameraInfoLock; }; Loading camera/device/3.2/default/CameraDevice.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ Status CameraDevice::getHidlStatus(int status) { } // Methods from ::android::hardware::camera::device::V3_2::ICameraDevice follow. Return<void> CameraDevice::getResourceCost(getResourceCost_cb _hidl_cb) { Return<void> CameraDevice::getResourceCost(ICameraDevice::getResourceCost_cb _hidl_cb) { Status status = initStatus(); CameraResourceCost resCost; if (status == Status::OK) { Loading Loading @@ -141,7 +141,8 @@ Return<void> CameraDevice::getResourceCost(getResourceCost_cb _hidl_cb) { return Void(); } Return<void> CameraDevice::getCameraCharacteristics(getCameraCharacteristics_cb _hidl_cb) { Return<void> CameraDevice::getCameraCharacteristics( ICameraDevice::getCameraCharacteristics_cb _hidl_cb) { Status status = initStatus(); CameraMetadata cameraCharacteristics; if (status == Status::OK) { Loading Loading @@ -172,7 +173,8 @@ Return<Status> CameraDevice::setTorchMode(TorchMode mode) { return status; } Return<void> CameraDevice::open(const sp<ICameraDeviceCallback>& callback, open_cb _hidl_cb) { Return<void> CameraDevice::open(const sp<ICameraDeviceCallback>& callback, ICameraDevice::open_cb _hidl_cb) { Status status = initStatus(); sp<CameraDeviceSession> session = nullptr; Loading camera/device/3.2/default/CameraDevice_3_2.h +47 −7 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ using ::android::Mutex; /* * The camera device HAL implementation is opened lazily (via the open call) */ struct CameraDevice : public ICameraDevice { struct CameraDevice : public virtual RefBase { // Called by provider HAL. Provider HAL must ensure the uniqueness of // CameraDevice object per cameraId, or there could be multiple CameraDevice // trying to access the same physical camera. Loading @@ -60,7 +60,14 @@ struct CameraDevice : public ICameraDevice { CameraDevice(sp<CameraModule> module, const std::string& cameraId, const SortedVector<std::pair<std::string, std::string>>& cameraDeviceNames); ~CameraDevice(); virtual ~CameraDevice(); // Retrieve the HIDL interface, split into its own class to avoid inheritance issues when // dealing with minor version revs and simultaneous implementation and interface inheritance virtual sp<ICameraDevice> getInterface() { return new TrampolineDeviceInterface_3_2(this); } // Caller must use this method to check if CameraDevice ctor failed bool isInitFailed() { return mInitFail; } // Used by provider HAL to signal external camera disconnected Loading @@ -68,16 +75,16 @@ struct CameraDevice : public ICameraDevice { /* Methods from ::android::hardware::camera::device::V3_2::ICameraDevice follow. */ // The following method can be called without opening the actual camera device Return<void> getResourceCost(getResourceCost_cb _hidl_cb) override; Return<void> getCameraCharacteristics(getCameraCharacteristics_cb _hidl_cb) override; Return<Status> setTorchMode(TorchMode mode) override; Return<void> getResourceCost(ICameraDevice::getResourceCost_cb _hidl_cb); Return<void> getCameraCharacteristics(ICameraDevice::getCameraCharacteristics_cb _hidl_cb); Return<Status> setTorchMode(TorchMode mode); // Open the device HAL and also return a default capture session Return<void> open(const sp<ICameraDeviceCallback>& callback, open_cb _hidl_cb) override; Return<void> open(const sp<ICameraDeviceCallback>& callback, ICameraDevice::open_cb _hidl_cb); // Forward the dump call to the opened session, or do nothing Return<void> dumpState(const ::android::hardware::hidl_handle& fd) override; Return<void> dumpState(const ::android::hardware::hidl_handle& fd); /* End of Methods from ::android::hardware::camera::device::V3_2::ICameraDevice */ protected: Loading Loading @@ -106,6 +113,39 @@ protected: static Status getHidlStatus(int); Status initStatus() const; private: struct TrampolineDeviceInterface_3_2 : public ICameraDevice { TrampolineDeviceInterface_3_2(sp<CameraDevice> parent) : mParent(parent) {} virtual Return<void> getResourceCost(V3_2::ICameraDevice::getResourceCost_cb _hidl_cb) override { return mParent->getResourceCost(_hidl_cb); } virtual Return<void> getCameraCharacteristics( V3_2::ICameraDevice::getCameraCharacteristics_cb _hidl_cb) override { return mParent->getCameraCharacteristics(_hidl_cb); } virtual Return<Status> setTorchMode(TorchMode mode) override { return mParent->setTorchMode(mode); } virtual Return<void> open(const sp<V3_2::ICameraDeviceCallback>& callback, V3_2::ICameraDevice::open_cb _hidl_cb) override { return mParent->open(callback, _hidl_cb); } virtual Return<void> dumpState(const hidl_handle& fd) override { return mParent->dumpState(fd); } private: sp<CameraDevice> mParent; }; }; } // namespace implementation Loading camera/device/3.5/Android.bp 0 → 100644 +23 −0 Original line number Diff line number Diff line // This file is autogenerated by hidl-gen -Landroidbp. hidl_interface { name: "android.hardware.camera.device@3.5", root: "android.hardware", vndk: { enabled: true, }, srcs: [ "ICameraDevice.hal", "ICameraDeviceSession.hal", ], interfaces: [ "android.hardware.camera.common@1.0", "android.hardware.camera.device@3.2", "android.hardware.camera.device@3.3", "android.hardware.camera.device@3.4", "android.hardware.graphics.common@1.0", "android.hidl.base@1.0", ], gen_java: false, } Loading
camera/common/1.0/default/CameraModule.cpp +35 −0 Original line number Diff line number Diff line Loading @@ -319,6 +319,41 @@ int CameraModule::getCameraInfo(int cameraId, struct camera_info *info) { return OK; } int CameraModule::getPhysicalCameraInfo(int physicalCameraId, camera_metadata_t **physicalInfo) { ATRACE_CALL(); Mutex::Autolock lock(mCameraInfoLock); if (physicalCameraId < 0) { ALOGE("%s: Invalid physical camera ID %d", __FUNCTION__, physicalCameraId); return -EINVAL; } // Only query physical camera info for 2.5 version for newer int apiVersion = mModule->common.module_api_version; if (apiVersion < CAMERA_MODULE_API_VERSION_2_5) { ALOGE("%s: Module version must be at least 2.5 to handle getPhysicalCameraInfo", __FUNCTION__); return -ENODEV; } ssize_t index = mPhysicalCameraInfoMap.indexOfKey(physicalCameraId); if (index == NAME_NOT_FOUND) { // Get physical camera characteristics, and cache it camera_metadata_t *info = nullptr; ATRACE_BEGIN("camera_module->get_physical_camera_info"); int ret = mModule->get_physical_camera_info(physicalCameraId, &info); ATRACE_END(); if (ret != 0) { return ret; } index = mPhysicalCameraInfoMap.add(physicalCameraId, info); } assert(index != NAME_NOT_FOUND); *physicalInfo = mPhysicalCameraInfoMap[index]; return OK; } int CameraModule::getDeviceVersion(int cameraId) { ssize_t index = mDeviceVersionMap.indexOfKey(cameraId); if (index == NAME_NOT_FOUND) { Loading
camera/common/1.0/default/include/CameraModule.h +2 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public: void *getDso(); // Only used by CameraProvider void removeCamera(int cameraId); int getPhysicalCameraInfo(int physicalCameraId, camera_metadata_t **physicalInfo); private: // Derive camera characteristics keys defined after HAL device version Loading @@ -76,6 +77,7 @@ private: camera_module_t *mModule; KeyedVector<int, camera_info> mCameraInfoMap; KeyedVector<int, int> mDeviceVersionMap; KeyedVector<int, camera_metadata_t*> mPhysicalCameraInfoMap; Mutex mCameraInfoLock; }; Loading
camera/device/3.2/default/CameraDevice.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ Status CameraDevice::getHidlStatus(int status) { } // Methods from ::android::hardware::camera::device::V3_2::ICameraDevice follow. Return<void> CameraDevice::getResourceCost(getResourceCost_cb _hidl_cb) { Return<void> CameraDevice::getResourceCost(ICameraDevice::getResourceCost_cb _hidl_cb) { Status status = initStatus(); CameraResourceCost resCost; if (status == Status::OK) { Loading Loading @@ -141,7 +141,8 @@ Return<void> CameraDevice::getResourceCost(getResourceCost_cb _hidl_cb) { return Void(); } Return<void> CameraDevice::getCameraCharacteristics(getCameraCharacteristics_cb _hidl_cb) { Return<void> CameraDevice::getCameraCharacteristics( ICameraDevice::getCameraCharacteristics_cb _hidl_cb) { Status status = initStatus(); CameraMetadata cameraCharacteristics; if (status == Status::OK) { Loading Loading @@ -172,7 +173,8 @@ Return<Status> CameraDevice::setTorchMode(TorchMode mode) { return status; } Return<void> CameraDevice::open(const sp<ICameraDeviceCallback>& callback, open_cb _hidl_cb) { Return<void> CameraDevice::open(const sp<ICameraDeviceCallback>& callback, ICameraDevice::open_cb _hidl_cb) { Status status = initStatus(); sp<CameraDeviceSession> session = nullptr; Loading
camera/device/3.2/default/CameraDevice_3_2.h +47 −7 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ using ::android::Mutex; /* * The camera device HAL implementation is opened lazily (via the open call) */ struct CameraDevice : public ICameraDevice { struct CameraDevice : public virtual RefBase { // Called by provider HAL. Provider HAL must ensure the uniqueness of // CameraDevice object per cameraId, or there could be multiple CameraDevice // trying to access the same physical camera. Loading @@ -60,7 +60,14 @@ struct CameraDevice : public ICameraDevice { CameraDevice(sp<CameraModule> module, const std::string& cameraId, const SortedVector<std::pair<std::string, std::string>>& cameraDeviceNames); ~CameraDevice(); virtual ~CameraDevice(); // Retrieve the HIDL interface, split into its own class to avoid inheritance issues when // dealing with minor version revs and simultaneous implementation and interface inheritance virtual sp<ICameraDevice> getInterface() { return new TrampolineDeviceInterface_3_2(this); } // Caller must use this method to check if CameraDevice ctor failed bool isInitFailed() { return mInitFail; } // Used by provider HAL to signal external camera disconnected Loading @@ -68,16 +75,16 @@ struct CameraDevice : public ICameraDevice { /* Methods from ::android::hardware::camera::device::V3_2::ICameraDevice follow. */ // The following method can be called without opening the actual camera device Return<void> getResourceCost(getResourceCost_cb _hidl_cb) override; Return<void> getCameraCharacteristics(getCameraCharacteristics_cb _hidl_cb) override; Return<Status> setTorchMode(TorchMode mode) override; Return<void> getResourceCost(ICameraDevice::getResourceCost_cb _hidl_cb); Return<void> getCameraCharacteristics(ICameraDevice::getCameraCharacteristics_cb _hidl_cb); Return<Status> setTorchMode(TorchMode mode); // Open the device HAL and also return a default capture session Return<void> open(const sp<ICameraDeviceCallback>& callback, open_cb _hidl_cb) override; Return<void> open(const sp<ICameraDeviceCallback>& callback, ICameraDevice::open_cb _hidl_cb); // Forward the dump call to the opened session, or do nothing Return<void> dumpState(const ::android::hardware::hidl_handle& fd) override; Return<void> dumpState(const ::android::hardware::hidl_handle& fd); /* End of Methods from ::android::hardware::camera::device::V3_2::ICameraDevice */ protected: Loading Loading @@ -106,6 +113,39 @@ protected: static Status getHidlStatus(int); Status initStatus() const; private: struct TrampolineDeviceInterface_3_2 : public ICameraDevice { TrampolineDeviceInterface_3_2(sp<CameraDevice> parent) : mParent(parent) {} virtual Return<void> getResourceCost(V3_2::ICameraDevice::getResourceCost_cb _hidl_cb) override { return mParent->getResourceCost(_hidl_cb); } virtual Return<void> getCameraCharacteristics( V3_2::ICameraDevice::getCameraCharacteristics_cb _hidl_cb) override { return mParent->getCameraCharacteristics(_hidl_cb); } virtual Return<Status> setTorchMode(TorchMode mode) override { return mParent->setTorchMode(mode); } virtual Return<void> open(const sp<V3_2::ICameraDeviceCallback>& callback, V3_2::ICameraDevice::open_cb _hidl_cb) override { return mParent->open(callback, _hidl_cb); } virtual Return<void> dumpState(const hidl_handle& fd) override { return mParent->dumpState(fd); } private: sp<CameraDevice> mParent; }; }; } // namespace implementation Loading
camera/device/3.5/Android.bp 0 → 100644 +23 −0 Original line number Diff line number Diff line // This file is autogenerated by hidl-gen -Landroidbp. hidl_interface { name: "android.hardware.camera.device@3.5", root: "android.hardware", vndk: { enabled: true, }, srcs: [ "ICameraDevice.hal", "ICameraDeviceSession.hal", ], interfaces: [ "android.hardware.camera.common@1.0", "android.hardware.camera.device@3.2", "android.hardware.camera.device@3.3", "android.hardware.camera.device@3.4", "android.hardware.graphics.common@1.0", "android.hidl.base@1.0", ], gen_java: false, }