Loading camera/ndk/Android.bp +8 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,10 @@ cc_library_shared { "-Wextra", "-Werror", ], // TODO: jchowdhary@, use header_libs instead b/131165718 include_dirs: [ "system/media/private/camera/include", ], export_include_dirs: ["include"], export_shared_lib_headers: [ "libnativewindow", Loading Loading @@ -123,6 +127,10 @@ cc_library_shared { "android.hardware.camera.common@1.0-helper", "libarect", ], // TODO: jchowdhary@, use header_libs instead b/131165718 include_dirs: [ "system/media/private/camera/include", ], product_variables: { pdk: { enabled: false, Loading camera/ndk/NdkCameraManager.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -190,3 +190,17 @@ camera_status_t ACameraManager_openCamera( } return mgr->openCamera(cameraId, callback, device); } #ifdef __ANDROID_VNDK__ EXPORT camera_status_t ACameraManager_getTagFromName(ACameraManager *mgr, const char* cameraId, const char *name, /*out*/uint32_t *tag) { ATRACE_CALL(); if (mgr == nullptr || cameraId == nullptr || name == nullptr) { ALOGE("%s: invalid argument! mgr %p cameraId %p name %p", __FUNCTION__, mgr, cameraId, name); return ACAMERA_ERROR_INVALID_PARAMETER; } return mgr->getTagFromName(cameraId, name, tag); } #endif camera/ndk/include/camera/NdkCameraManager.h +17 −0 Original line number Diff line number Diff line Loading @@ -374,6 +374,23 @@ camera_status_t ACameraManager_unregisterExtendedAvailabilityCallback( ACameraManager* manager, const ACameraManager_ExtendedAvailabilityCallbacks* callback) __INTRODUCED_IN(29); #ifdef __ANDROID_VNDK__ /** * Retrieve the tag value, given the tag name and camera id. * This method is device specific since some metadata might be defined by device manufacturers * and might only be accessible for specific cameras. * @param manager The {@link ACameraManager} of interest. * @param cameraId The cameraId, which is used to query camera characteristics. * @param name The name of the tag being queried. * @param tag The output tag assigned by this method. * * @return ACAMERA_OK only if the function call was successful. */ camera_status_t ACameraManager_getTagFromName(ACameraManager *manager, const char* cameraId, const char *name, /*out*/uint32_t *tag) __INTRODUCED_IN(29); #endif #endif /* __ANDROID_API__ >= 29 */ __END_DECLS Loading camera/ndk/ndk_vendor/impl/ACameraManager.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ #include "ACameraMetadata.h" #include "ndk_vendor/impl/ACameraDevice.h" #include "utils.h" #include <CameraMetadata.h> #include <camera_metadata_hidden.h> #include <utils/Vector.h> #include <cutils/properties.h> Loading Loading @@ -587,6 +589,26 @@ ACameraManager::openCamera( return ACAMERA_OK; } camera_status_t ACameraManager::getTagFromName(const char *cameraId, const char *name, uint32_t *tag) { sp<ACameraMetadata> rawChars; camera_status_t ret = getCameraCharacteristics(cameraId, &rawChars); if (ret != ACAMERA_OK) { ALOGE("%s, Cannot retrieve camera characteristics for camera id %s", __FUNCTION__, cameraId); return ACAMERA_ERROR_METADATA_NOT_FOUND; } const CameraMetadata& metadata = rawChars->getInternalData(); const camera_metadata_t *rawMetadata = metadata.getAndLock(); metadata_vendor_id_t vendorTagId = get_camera_metadata_vendor_id(rawMetadata); metadata.unlock(rawMetadata); sp<VendorTagDescriptorCache> vtCache = VendorTagDescriptorCache::getGlobalVendorTagCache(); sp<VendorTagDescriptor> vTags = nullptr; vtCache->getVendorTagDescriptor(vendorTagId, &vTags); status_t status= metadata.getTagFromName(name, vTags.get(), tag); return status == OK ? ACAMERA_OK : ACAMERA_ERROR_METADATA_NOT_FOUND; } ACameraManager::~ACameraManager() { } camera/ndk/ndk_vendor/impl/ACameraManager.h +1 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,7 @@ struct ACameraManager { camera_status_t openCamera(const char* cameraId, ACameraDevice_StateCallbacks* callback, /*out*/ACameraDevice** device); camera_status_t getTagFromName(const char *cameraId, const char *name, uint32_t *tag); private: enum { Loading Loading
camera/ndk/Android.bp +8 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,10 @@ cc_library_shared { "-Wextra", "-Werror", ], // TODO: jchowdhary@, use header_libs instead b/131165718 include_dirs: [ "system/media/private/camera/include", ], export_include_dirs: ["include"], export_shared_lib_headers: [ "libnativewindow", Loading Loading @@ -123,6 +127,10 @@ cc_library_shared { "android.hardware.camera.common@1.0-helper", "libarect", ], // TODO: jchowdhary@, use header_libs instead b/131165718 include_dirs: [ "system/media/private/camera/include", ], product_variables: { pdk: { enabled: false, Loading
camera/ndk/NdkCameraManager.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -190,3 +190,17 @@ camera_status_t ACameraManager_openCamera( } return mgr->openCamera(cameraId, callback, device); } #ifdef __ANDROID_VNDK__ EXPORT camera_status_t ACameraManager_getTagFromName(ACameraManager *mgr, const char* cameraId, const char *name, /*out*/uint32_t *tag) { ATRACE_CALL(); if (mgr == nullptr || cameraId == nullptr || name == nullptr) { ALOGE("%s: invalid argument! mgr %p cameraId %p name %p", __FUNCTION__, mgr, cameraId, name); return ACAMERA_ERROR_INVALID_PARAMETER; } return mgr->getTagFromName(cameraId, name, tag); } #endif
camera/ndk/include/camera/NdkCameraManager.h +17 −0 Original line number Diff line number Diff line Loading @@ -374,6 +374,23 @@ camera_status_t ACameraManager_unregisterExtendedAvailabilityCallback( ACameraManager* manager, const ACameraManager_ExtendedAvailabilityCallbacks* callback) __INTRODUCED_IN(29); #ifdef __ANDROID_VNDK__ /** * Retrieve the tag value, given the tag name and camera id. * This method is device specific since some metadata might be defined by device manufacturers * and might only be accessible for specific cameras. * @param manager The {@link ACameraManager} of interest. * @param cameraId The cameraId, which is used to query camera characteristics. * @param name The name of the tag being queried. * @param tag The output tag assigned by this method. * * @return ACAMERA_OK only if the function call was successful. */ camera_status_t ACameraManager_getTagFromName(ACameraManager *manager, const char* cameraId, const char *name, /*out*/uint32_t *tag) __INTRODUCED_IN(29); #endif #endif /* __ANDROID_API__ >= 29 */ __END_DECLS Loading
camera/ndk/ndk_vendor/impl/ACameraManager.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ #include "ACameraMetadata.h" #include "ndk_vendor/impl/ACameraDevice.h" #include "utils.h" #include <CameraMetadata.h> #include <camera_metadata_hidden.h> #include <utils/Vector.h> #include <cutils/properties.h> Loading Loading @@ -587,6 +589,26 @@ ACameraManager::openCamera( return ACAMERA_OK; } camera_status_t ACameraManager::getTagFromName(const char *cameraId, const char *name, uint32_t *tag) { sp<ACameraMetadata> rawChars; camera_status_t ret = getCameraCharacteristics(cameraId, &rawChars); if (ret != ACAMERA_OK) { ALOGE("%s, Cannot retrieve camera characteristics for camera id %s", __FUNCTION__, cameraId); return ACAMERA_ERROR_METADATA_NOT_FOUND; } const CameraMetadata& metadata = rawChars->getInternalData(); const camera_metadata_t *rawMetadata = metadata.getAndLock(); metadata_vendor_id_t vendorTagId = get_camera_metadata_vendor_id(rawMetadata); metadata.unlock(rawMetadata); sp<VendorTagDescriptorCache> vtCache = VendorTagDescriptorCache::getGlobalVendorTagCache(); sp<VendorTagDescriptor> vTags = nullptr; vtCache->getVendorTagDescriptor(vendorTagId, &vTags); status_t status= metadata.getTagFromName(name, vTags.get(), tag); return status == OK ? ACAMERA_OK : ACAMERA_ERROR_METADATA_NOT_FOUND; } ACameraManager::~ACameraManager() { }
camera/ndk/ndk_vendor/impl/ACameraManager.h +1 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,7 @@ struct ACameraManager { camera_status_t openCamera(const char* cameraId, ACameraDevice_StateCallbacks* callback, /*out*/ACameraDevice** device); camera_status_t getTagFromName(const char *cameraId, const char *name, uint32_t *tag); private: enum { Loading