Camera: Add metrics for zoom override usage
Test: Verify locally that zoom override usage is detected correctly
Bug: 307409002
Change-Id: I0c1783e278ea7ead1df48ae59ec846d6640c0feb
diff --git a/camera/CameraSessionStats.cpp b/camera/CameraSessionStats.cpp
index f0630dd..057ec99 100644
--- a/camera/CameraSessionStats.cpp
+++ b/camera/CameraSessionStats.cpp
@@ -421,6 +421,12 @@
return err;
}
+ bool usedZoomOverride = false;
+ if ((err = parcel->readBool(&usedZoomOverride)) != OK) {
+ ALOGE("%s: Failed to read zoom override usage from parcel", __FUNCTION__);
+ return err;
+ }
+
int32_t sessionIdx;
if ((err = parcel->readInt32(&sessionIdx)) != OK) {
ALOGE("%s: Failed to read session index from parcel", __FUNCTION__);
@@ -451,6 +457,7 @@
mUserTag = toStdString(userTag);
mVideoStabilizationMode = videoStabilizationMode;
mUsedUltraWide = usedUltraWide;
+ mUsedZoomOverride = usedZoomOverride;
mSessionIndex = sessionIdx;
mCameraExtensionSessionStats = extStats;
@@ -549,11 +556,17 @@
ALOGE("%s: Failed to write video stabilization mode!", __FUNCTION__);
return err;
}
+
if ((err = parcel->writeBool(mUsedUltraWide)) != OK) {
ALOGE("%s: Failed to write ultrawide usage!", __FUNCTION__);
return err;
}
+ if ((err = parcel->writeBool(mUsedZoomOverride)) != OK) {
+ ALOGE("%s: Failed to write zoom override usage!", __FUNCTION__);
+ return err;
+ }
+
if ((err = parcel->writeInt32(mSessionIndex)) != OK) {
ALOGE("%s: Failed to write session index!", __FUNCTION__);
return err;
diff --git a/camera/camera_platform.aconfig b/camera/camera_platform.aconfig
index 33eb592..2ba2a83 100644
--- a/camera/camera_platform.aconfig
+++ b/camera/camera_platform.aconfig
@@ -27,3 +27,10 @@
description: "Use waitForService instead of getService with lazy AIDL HALs"
bug: "285546208"
}
+
+flag {
+ namespace: "camera_platform"
+ name: "log_zoom_override_usage"
+ description: "Enable measuring how much usage there is for zoom settings overrde"
+ bug: "307409002"
+}
diff --git a/camera/include/camera/CameraSessionStats.h b/camera/include/camera/CameraSessionStats.h
index 158ac2a..06c154d 100644
--- a/camera/include/camera/CameraSessionStats.h
+++ b/camera/include/camera/CameraSessionStats.h
@@ -162,6 +162,7 @@
std::string mUserTag;
int mVideoStabilizationMode;
bool mUsedUltraWide;
+ bool mUsedZoomOverride;
int mSessionIndex;
CameraExtensionSessionStats mCameraExtensionSessionStats;
diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
index 2e6eb06..28f7054 100644
--- a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
+++ b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
@@ -549,6 +549,14 @@
mUsedUltraWide = true;
}
}
+ if (!mUsedSettingsOverrideZoom && flags::log_zoom_override_usage()) {
+ entry = physicalSettingsList.begin()->metadata.find(
+ ANDROID_CONTROL_SETTINGS_OVERRIDE);
+ if (entry.count == 1 && entry.data.i32[0] ==
+ ANDROID_CONTROL_SETTINGS_OVERRIDE_ZOOM) {
+ mUsedSettingsOverrideZoom = true;
+ }
+ }
}
mRequestIdCounter++;
@@ -2061,7 +2069,8 @@
}
}
Camera2ClientBase::notifyIdleWithUserTag(requestCount, resultErrorCount, deviceError,
- fullStreamStats, mUserTag, mVideoStabilizationMode, mUsedUltraWide);
+ fullStreamStats, mUserTag, mVideoStabilizationMode, mUsedUltraWide,
+ mUsedSettingsOverrideZoom);
}
void CameraDeviceClient::notifyShutter(const CaptureResultExtras& resultExtras,
diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.h b/services/camera/libcameraservice/api2/CameraDeviceClient.h
index c2870aa..5dea3aa 100644
--- a/services/camera/libcameraservice/api2/CameraDeviceClient.h
+++ b/services/camera/libcameraservice/api2/CameraDeviceClient.h
@@ -372,6 +372,8 @@
int mVideoStabilizationMode = -1;
// Whether a zoom_ratio < 1.0 has been used during this session
bool mUsedUltraWide = false;
+ // Whether a zoom settings override has been used during this session
+ bool mUsedSettingsOverrideZoom = false;
// This only exists in case of camera ID Remapping.
const std::string mOriginalCameraId;
diff --git a/services/camera/libcameraservice/common/Camera2ClientBase.cpp b/services/camera/libcameraservice/common/Camera2ClientBase.cpp
index bd39226..c730b14 100644
--- a/services/camera/libcameraservice/common/Camera2ClientBase.cpp
+++ b/services/camera/libcameraservice/common/Camera2ClientBase.cpp
@@ -378,7 +378,8 @@
void Camera2ClientBase<TClientBase>::notifyIdleWithUserTag(
int64_t requestCount, int64_t resultErrorCount, bool deviceError,
const std::vector<hardware::CameraStreamStats>& streamStats,
- const std::string& userTag, int videoStabilizationMode, bool usedUltraWide) {
+ const std::string& userTag, int videoStabilizationMode, bool usedUltraWide,
+ bool usedZoomOverride) {
if (mDeviceActive) {
status_t res = TClientBase::finishCameraStreamingOps();
if (res != OK) {
@@ -387,7 +388,7 @@
}
mCameraServiceProxyWrapper->logIdle(TClientBase::mCameraIdStr,
requestCount, resultErrorCount, deviceError, userTag, videoStabilizationMode,
- usedUltraWide, streamStats);
+ usedUltraWide, usedZoomOverride, streamStats);
}
mDeviceActive = false;
diff --git a/services/camera/libcameraservice/common/Camera2ClientBase.h b/services/camera/libcameraservice/common/Camera2ClientBase.h
index c464422..bac4af8 100644
--- a/services/camera/libcameraservice/common/Camera2ClientBase.h
+++ b/services/camera/libcameraservice/common/Camera2ClientBase.h
@@ -98,7 +98,7 @@
bool deviceError,
const std::vector<hardware::CameraStreamStats>& streamStats,
const std::string& userTag, int videoStabilizationMode,
- bool usedUltraWide);
+ bool usedUltraWide, bool usedZoomOverride);
int getCameraId() const;
const sp<CameraDeviceBase>&
diff --git a/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.cpp b/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.cpp
index d227606..65e93a9 100644
--- a/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.cpp
+++ b/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.cpp
@@ -95,7 +95,7 @@
sp<hardware::ICameraServiceProxy>& proxyBinder,
int64_t requestCount, int64_t resultErrorCount, bool deviceError,
const std::string& userTag, int32_t videoStabilizationMode, bool usedUltraWide,
- const std::vector<hardware::CameraStreamStats>& streamStats) {
+ bool usedZoomOverride, const std::vector<hardware::CameraStreamStats>& streamStats) {
Mutex::Autolock l(mLock);
mSessionStats.mNewCameraState = CameraSessionStats::CAMERA_STATE_IDLE;
@@ -105,6 +105,7 @@
mSessionStats.mUserTag = userTag;
mSessionStats.mVideoStabilizationMode = videoStabilizationMode;
mSessionStats.mUsedUltraWide = usedUltraWide;
+ mSessionStats.mUsedZoomOverride = usedZoomOverride;
mSessionStats.mStreamStats = streamStats;
updateProxyDeviceState(proxyBinder);
@@ -280,7 +281,7 @@
void CameraServiceProxyWrapper::logIdle(const std::string& id,
int64_t requestCount, int64_t resultErrorCount, bool deviceError,
const std::string& userTag, int32_t videoStabilizationMode, bool usedUltraWide,
- const std::vector<hardware::CameraStreamStats>& streamStats) {
+ bool usedZoomOverride, const std::vector<hardware::CameraStreamStats>& streamStats) {
std::shared_ptr<CameraSessionStatsWrapper> sessionStats;
{
Mutex::Autolock l(mLock);
@@ -305,7 +306,7 @@
sp<hardware::ICameraServiceProxy> proxyBinder = getCameraServiceProxy();
sessionStats->onIdle(proxyBinder, requestCount, resultErrorCount, deviceError, userTag,
- videoStabilizationMode, usedUltraWide, streamStats);
+ videoStabilizationMode, usedUltraWide, usedZoomOverride, streamStats);
}
void CameraServiceProxyWrapper::logOpen(const std::string& id, int facing,
diff --git a/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.h b/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.h
index 4e21e58..49b7a8c 100644
--- a/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.h
+++ b/services/camera/libcameraservice/utils/CameraServiceProxyWrapper.h
@@ -62,7 +62,7 @@
void onIdle(sp<hardware::ICameraServiceProxy>& proxyBinder,
int64_t requestCount, int64_t resultErrorCount, bool deviceError,
const std::string& userTag, int32_t videoStabilizationMode, bool usedUltraWide,
- const std::vector<hardware::CameraStreamStats>& streamStats);
+ bool usedZoomOverride, const std::vector<hardware::CameraStreamStats>& streamStats);
std::string updateExtensionSessionStats(
const hardware::CameraExtensionSessionStats& extStats);
@@ -111,7 +111,7 @@
void logIdle(const std::string& id,
int64_t requestCount, int64_t resultErrorCount, bool deviceError,
const std::string& userTag, int32_t videoStabilizationMode, bool usedUltraWide,
- const std::vector<hardware::CameraStreamStats>& streamStats);
+ bool usedZoomOverride, const std::vector<hardware::CameraStreamStats>& streamStats);
// Ping camera service proxy for user update
void pingCameraServiceProxy();