Loading camera/device/3.4/default/CameraDeviceSession.cpp +36 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,32 @@ CameraDeviceSession::CameraDeviceSession( } } } camera_metadata_entry_t capabilities = mDeviceInfo.find(ANDROID_REQUEST_AVAILABLE_CAPABILITIES); bool isLogicalMultiCamera = false; for (size_t i = 0; i < capabilities.count; i++) { if (capabilities.data.u8[i] == ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA) { isLogicalMultiCamera = true; break; } } if (isLogicalMultiCamera) { camera_metadata_entry entry = mDeviceInfo.find(ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS); const uint8_t* ids = entry.data.u8; size_t start = 0; for (size_t i = 0; i < entry.count; ++i) { if (ids[i] == '\0') { if (start != i) { const char* physicalId = reinterpret_cast<const char*>(ids+start); mPhysicalCameraIds.emplace(physicalId); } start = i + 1; } } } } CameraDeviceSession::~CameraDeviceSession() { Loading Loading @@ -456,9 +482,19 @@ void CameraDeviceSession::sProcessCaptureResult_3_4( return; } if (hal_result->num_physcam_metadata > d->mPhysicalCameraIds.size()) { ALOGE("%s: Fatal: Invalid num_physcam_metadata %u", __FUNCTION__, hal_result->num_physcam_metadata); return; } result.physicalCameraMetadata.resize(hal_result->num_physcam_metadata); for (uint32_t i = 0; i < hal_result->num_physcam_metadata; i++) { std::string physicalId = hal_result->physcam_ids[i]; if (d->mPhysicalCameraIds.find(physicalId) == d->mPhysicalCameraIds.end()) { ALOGE("%s: Fatal: Invalid physcam_ids[%u]: %s", __FUNCTION__, i, hal_result->physcam_ids[i]); return; } V3_2::CameraMetadata physicalMetadata; V3_2::implementation::convertToHidl(hal_result->physcam_metadata[i], &physicalMetadata); PhysicalCameraMetadata physicalCameraMetadata = { Loading camera/device/3.4/default/include/device_v3_4_impl/CameraDeviceSession.h +5 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include <hidl/Status.h> #include <deque> #include <map> #include <unordered_set> #include <unordered_map> #include "CameraMetadata.h" #include "HandleImporter.h" Loading Loading @@ -110,6 +111,10 @@ protected: // Whether this camera device session is created with version 3.4 callback. bool mHasCallback_3_4; // Physical camera ids for the logical multi-camera. Empty if this // is not a logical multi-camera. std::unordered_set<std::string> mPhysicalCameraIds; private: struct TrampolineSessionInterface_3_4 : public ICameraDeviceSession { Loading compatibility_matrices/compatibility_matrix.current.xml +24 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,14 @@ <instance>default</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.automotive.audiocontrol</name> <version>1.0</version> <interface> <name>IAudioControl</name> <instance>default</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.automotive.evs</name> <version>1.0</version> Loading Loading @@ -103,6 +111,14 @@ <instance>default</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.confirmationui</name> <version>1.0</version> <interface> <name>IConfirmationUI</name> <instance>default</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.contexthub</name> <version>1.0</version> Loading Loading @@ -286,6 +302,14 @@ <instance>slot1</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.radio.config</name> <version>1.0</version> <interface> <name>IRadioConfig</name> <instance>default</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.renderscript</name> <version>1.0</version> Loading current.txt +4 −4 Original line number Diff line number Diff line Loading @@ -318,14 +318,14 @@ a3ff916784dce87a56c757ab5c86433f0cdf562280999a5f978a6e8a0f3f19e7 android.hardwar 7877ff8e4c1e48b825e6e5e66d050288e5656ed535c61cc7830a92ed4a9e1990 android.hardware.drm@1.1::IDrmFactory fef2f0ebde7704548fb203df46673ceb342272fc4fa9d0af25a980d2584a36e7 android.hardware.drm@1.1::IDrmPlugin 5047a346ecce239404b9020959f60dd467318e9c17b290a6386bc3894df62c3c android.hardware.drm@1.1::types be794f5df97f134d6dcabb866b250d1305100e7ae07fb253b7841df890b931bb android.hardware.gnss@1.1::IGnss a830336ac8627d6432cfafb1b884343ad9f885dee0a5323e380e6d3c519156b8 android.hardware.gnss@1.1::IGnss 8ad55bc35bb3a83e65c018bdfde7ae5ebc749ff2bf6b79412ded0bc6c89b97d8 android.hardware.gnss@1.1::IGnssCallback 3c5183d7506010be57e0f748e3640fc2ded1ba955784b6256ba427f4c399591c android.hardware.gnss@1.1::IGnssConfiguration b054af24fbb70d54cde1fb5cba126809e7c4e863e8f9115dc492321dfbcbc993 android.hardware.gnss@1.1::IGnssMeasurement 1a07d1383e847c3deb696ec7a2c9e33b9683772945660448a010b18063da67a4 android.hardware.gnss@1.1::IGnssMeasurement 83e7a10ff3702147bd7ffa04567b20d407a3b16bbb7705644af44d919afe9103 android.hardware.gnss@1.1::IGnssMeasurementCallback 82da7e7624f72ff1927f48738913e20bee3a513adfe5dc7c4f888176e20376e6 android.hardware.graphics.common@1.1::types 0b96e0254e2168cfecb30c1ed5fb42681652cc00faa68c6e07568fafe64d1d50 android.hardware.graphics.common@1.1::types d9b40a5b09962a5a0780b10fe33a4e607e69e2e088fc83de88a584115b7cb1c0 android.hardware.graphics.composer@2.2::IComposer d6ce042995239712bc1d0970fa9d512c15c0b1ac9bcb048bd8b69f617b45c25e android.hardware.graphics.composer@2.2::IComposerClient c3cd2a3e245ffefae859c9a3d31382a9421be95cfa6bc1231571eb3533049b54 android.hardware.graphics.composer@2.2::IComposerClient dd83be076b6b3f10ed62ab34d8c8b95f2415961fb785200eb842e7bfb2b0ee92 android.hardware.graphics.mapper@2.1::IMapper 675682dd3007805c985eaaec91612abc88f4c25b3431fb84070b7584a1a741fb android.hardware.health@2.0::IHealth 434c4c32c00b0e54bb05e40c79503208b40f786a318029a2a4f66e34f10f2a76 android.hardware.health@2.0::IHealthInfoCallback Loading gnss/1.1/IGnss.hal +11 −9 Original line number Diff line number Diff line Loading @@ -46,15 +46,17 @@ interface IGnss extends @1.0::IGnss { * @param minIntervalMs Represents the time between fixes in milliseconds. * @param preferredAccuracyMeters Represents the requested fix accuracy in meters. * @param preferredTimeMs Represents the requested time to first fix in milliseconds. * @param lowPowerMode When true, HAL must make strong tradeoffs to substantially restrict power * use. Specifically, in the case of a several second long minIntervalMs, the GNSS chipset * must not, on average, run power hungry operations like RF and signal searches for more * than one second per interval, and must make exactly one call to gnssSvStatusCb(), and * either zero or one call to GnssLocationCb() at each interval. When false, HAL must * operate in the nominal mode (similar to V1.0 where this flag wasn't present) and is * expected to make power and performance tradoffs such as duty-cycling when signal * conditions are good and more active searches to reacquire GNSS signals when no signals * are present. * @param lowPowerMode When true, and IGnss.hal is the only client to the GNSS hardware, the * GNSS hardware must make strong tradeoffs to substantially restrict power use. * Specifically, in the case of a several second long minIntervalMs, the GNSS hardware must * not, on average, run power hungry operations like RF and signal searches for more than * one second per interval, and must make exactly one call to gnssSvStatusCb(), and either * zero or one call to GnssLocationCb() at each interval. When false, HAL must operate in * the nominal mode (similar to V1.0 where this flag wasn't present) and is expected to make * power and performance tradoffs such as duty-cycling when signal conditions are good and * more active searches to reacquire GNSS signals when no signals are present. * When there are additional clients using the GNSS hardware other than IGnss.hal, the GNSS * hardware may operate in a higher power mode, on behalf of those clients. * * @return success Returns true if successful. */ Loading Loading
camera/device/3.4/default/CameraDeviceSession.cpp +36 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,32 @@ CameraDeviceSession::CameraDeviceSession( } } } camera_metadata_entry_t capabilities = mDeviceInfo.find(ANDROID_REQUEST_AVAILABLE_CAPABILITIES); bool isLogicalMultiCamera = false; for (size_t i = 0; i < capabilities.count; i++) { if (capabilities.data.u8[i] == ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA) { isLogicalMultiCamera = true; break; } } if (isLogicalMultiCamera) { camera_metadata_entry entry = mDeviceInfo.find(ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS); const uint8_t* ids = entry.data.u8; size_t start = 0; for (size_t i = 0; i < entry.count; ++i) { if (ids[i] == '\0') { if (start != i) { const char* physicalId = reinterpret_cast<const char*>(ids+start); mPhysicalCameraIds.emplace(physicalId); } start = i + 1; } } } } CameraDeviceSession::~CameraDeviceSession() { Loading Loading @@ -456,9 +482,19 @@ void CameraDeviceSession::sProcessCaptureResult_3_4( return; } if (hal_result->num_physcam_metadata > d->mPhysicalCameraIds.size()) { ALOGE("%s: Fatal: Invalid num_physcam_metadata %u", __FUNCTION__, hal_result->num_physcam_metadata); return; } result.physicalCameraMetadata.resize(hal_result->num_physcam_metadata); for (uint32_t i = 0; i < hal_result->num_physcam_metadata; i++) { std::string physicalId = hal_result->physcam_ids[i]; if (d->mPhysicalCameraIds.find(physicalId) == d->mPhysicalCameraIds.end()) { ALOGE("%s: Fatal: Invalid physcam_ids[%u]: %s", __FUNCTION__, i, hal_result->physcam_ids[i]); return; } V3_2::CameraMetadata physicalMetadata; V3_2::implementation::convertToHidl(hal_result->physcam_metadata[i], &physicalMetadata); PhysicalCameraMetadata physicalCameraMetadata = { Loading
camera/device/3.4/default/include/device_v3_4_impl/CameraDeviceSession.h +5 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include <hidl/Status.h> #include <deque> #include <map> #include <unordered_set> #include <unordered_map> #include "CameraMetadata.h" #include "HandleImporter.h" Loading Loading @@ -110,6 +111,10 @@ protected: // Whether this camera device session is created with version 3.4 callback. bool mHasCallback_3_4; // Physical camera ids for the logical multi-camera. Empty if this // is not a logical multi-camera. std::unordered_set<std::string> mPhysicalCameraIds; private: struct TrampolineSessionInterface_3_4 : public ICameraDeviceSession { Loading
compatibility_matrices/compatibility_matrix.current.xml +24 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,14 @@ <instance>default</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.automotive.audiocontrol</name> <version>1.0</version> <interface> <name>IAudioControl</name> <instance>default</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.automotive.evs</name> <version>1.0</version> Loading Loading @@ -103,6 +111,14 @@ <instance>default</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.confirmationui</name> <version>1.0</version> <interface> <name>IConfirmationUI</name> <instance>default</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.contexthub</name> <version>1.0</version> Loading Loading @@ -286,6 +302,14 @@ <instance>slot1</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.radio.config</name> <version>1.0</version> <interface> <name>IRadioConfig</name> <instance>default</instance> </interface> </hal> <hal format="hidl" optional="true"> <name>android.hardware.renderscript</name> <version>1.0</version> Loading
current.txt +4 −4 Original line number Diff line number Diff line Loading @@ -318,14 +318,14 @@ a3ff916784dce87a56c757ab5c86433f0cdf562280999a5f978a6e8a0f3f19e7 android.hardwar 7877ff8e4c1e48b825e6e5e66d050288e5656ed535c61cc7830a92ed4a9e1990 android.hardware.drm@1.1::IDrmFactory fef2f0ebde7704548fb203df46673ceb342272fc4fa9d0af25a980d2584a36e7 android.hardware.drm@1.1::IDrmPlugin 5047a346ecce239404b9020959f60dd467318e9c17b290a6386bc3894df62c3c android.hardware.drm@1.1::types be794f5df97f134d6dcabb866b250d1305100e7ae07fb253b7841df890b931bb android.hardware.gnss@1.1::IGnss a830336ac8627d6432cfafb1b884343ad9f885dee0a5323e380e6d3c519156b8 android.hardware.gnss@1.1::IGnss 8ad55bc35bb3a83e65c018bdfde7ae5ebc749ff2bf6b79412ded0bc6c89b97d8 android.hardware.gnss@1.1::IGnssCallback 3c5183d7506010be57e0f748e3640fc2ded1ba955784b6256ba427f4c399591c android.hardware.gnss@1.1::IGnssConfiguration b054af24fbb70d54cde1fb5cba126809e7c4e863e8f9115dc492321dfbcbc993 android.hardware.gnss@1.1::IGnssMeasurement 1a07d1383e847c3deb696ec7a2c9e33b9683772945660448a010b18063da67a4 android.hardware.gnss@1.1::IGnssMeasurement 83e7a10ff3702147bd7ffa04567b20d407a3b16bbb7705644af44d919afe9103 android.hardware.gnss@1.1::IGnssMeasurementCallback 82da7e7624f72ff1927f48738913e20bee3a513adfe5dc7c4f888176e20376e6 android.hardware.graphics.common@1.1::types 0b96e0254e2168cfecb30c1ed5fb42681652cc00faa68c6e07568fafe64d1d50 android.hardware.graphics.common@1.1::types d9b40a5b09962a5a0780b10fe33a4e607e69e2e088fc83de88a584115b7cb1c0 android.hardware.graphics.composer@2.2::IComposer d6ce042995239712bc1d0970fa9d512c15c0b1ac9bcb048bd8b69f617b45c25e android.hardware.graphics.composer@2.2::IComposerClient c3cd2a3e245ffefae859c9a3d31382a9421be95cfa6bc1231571eb3533049b54 android.hardware.graphics.composer@2.2::IComposerClient dd83be076b6b3f10ed62ab34d8c8b95f2415961fb785200eb842e7bfb2b0ee92 android.hardware.graphics.mapper@2.1::IMapper 675682dd3007805c985eaaec91612abc88f4c25b3431fb84070b7584a1a741fb android.hardware.health@2.0::IHealth 434c4c32c00b0e54bb05e40c79503208b40f786a318029a2a4f66e34f10f2a76 android.hardware.health@2.0::IHealthInfoCallback Loading
gnss/1.1/IGnss.hal +11 −9 Original line number Diff line number Diff line Loading @@ -46,15 +46,17 @@ interface IGnss extends @1.0::IGnss { * @param minIntervalMs Represents the time between fixes in milliseconds. * @param preferredAccuracyMeters Represents the requested fix accuracy in meters. * @param preferredTimeMs Represents the requested time to first fix in milliseconds. * @param lowPowerMode When true, HAL must make strong tradeoffs to substantially restrict power * use. Specifically, in the case of a several second long minIntervalMs, the GNSS chipset * must not, on average, run power hungry operations like RF and signal searches for more * than one second per interval, and must make exactly one call to gnssSvStatusCb(), and * either zero or one call to GnssLocationCb() at each interval. When false, HAL must * operate in the nominal mode (similar to V1.0 where this flag wasn't present) and is * expected to make power and performance tradoffs such as duty-cycling when signal * conditions are good and more active searches to reacquire GNSS signals when no signals * are present. * @param lowPowerMode When true, and IGnss.hal is the only client to the GNSS hardware, the * GNSS hardware must make strong tradeoffs to substantially restrict power use. * Specifically, in the case of a several second long minIntervalMs, the GNSS hardware must * not, on average, run power hungry operations like RF and signal searches for more than * one second per interval, and must make exactly one call to gnssSvStatusCb(), and either * zero or one call to GnssLocationCb() at each interval. When false, HAL must operate in * the nominal mode (similar to V1.0 where this flag wasn't present) and is expected to make * power and performance tradoffs such as duty-cycling when signal conditions are good and * more active searches to reacquire GNSS signals when no signals are present. * When there are additional clients using the GNSS hardware other than IGnss.hal, the GNSS * hardware may operate in a higher power mode, on behalf of those clients. * * @return success Returns true if successful. */ Loading