Camera: Disable composite Jpeg/R support in case of Hal support
Detect whether camera devices can output Jpeg/R natively. In case
support is available, automatically disable the internal composite
Jpeg/R functionality.
Bug: 262265296
Test: test -c -d
cts/tests/camera/src/android/hardware/camera2/cts/ImageReaderTest.java#testJpegR
Change-Id: I7739511216792af0cdb5b85f8cd941be35b7b297
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
index d2d1e38..f7e02a8 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
@@ -316,6 +316,18 @@
return deviceInfo->supportNativeZoomRatio();
}
+bool CameraProviderManager::supportNativeJpegR(const std::string &id) const {
+ std::lock_guard<std::mutex> lock(mInterfaceMutex);
+ return supportNativeJpegRLocked(id);
+}
+
+bool CameraProviderManager::supportNativeJpegRLocked(const std::string &id) const {
+ auto deviceInfo = findDeviceInfoLocked(id);
+ if (deviceInfo == nullptr) return false;
+
+ return deviceInfo->supportNativeJpegR();
+}
+
status_t CameraProviderManager::getResourceCost(const std::string &id,
CameraResourceCost* cost) const {
std::lock_guard<std::mutex> lock(mInterfaceMutex);
@@ -1108,7 +1120,7 @@
}
status_t CameraProviderManager::ProviderInfo::DeviceInfo3::deriveJpegRTags(bool maxResolution) {
- if (kFrameworkJpegRDisabled) {
+ if (kFrameworkJpegRDisabled || mSupportsNativeJpegR) {
return OK;
}