Merge "QCamera2: HAL3: Adjust buffer timeout depending on expected duration" into oc-dr1-dev
diff --git a/msm8998/QCamera2/HAL3/QCamera3Channel.cpp b/msm8998/QCamera2/HAL3/QCamera3Channel.cpp
index df0e84c..f272045 100644
--- a/msm8998/QCamera2/HAL3/QCamera3Channel.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3Channel.cpp
@@ -99,6 +99,8 @@
mPerFrameMapUnmapEnable = true;
mDumpFrmCnt = 0;
mNRMode = 0;
+
+ mYUVDump = property_get_int32("persist.camera.dumpimg", 0);
}
/*===========================================================================
@@ -504,9 +506,6 @@
char buf[FILENAME_MAX];
memset(buf, 0, sizeof(buf));
static int counter = 0;
- char prop[PROPERTY_VALUE_MAX];
- property_get("persist.camera.dumpimg", prop, "0");
- mYUVDump = (uint32_t)atoi(prop);
if (mYUVDump & dump_type) {
mFrmNum = ((mYUVDump & 0xffff0000) >> 16);
if (mFrmNum == 0) {
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
index 15757a6..e75aff7 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.cpp
@@ -95,7 +95,6 @@
#define TEMPLATE_MAX_PREVIEW_FPS (30.0)
#define MAX_HFR_BATCH_SIZE (8)
#define REGIONS_TUPLE_COUNT 5
-#define HDR_PLUS_PERF_TIME_OUT (7000) // milliseconds
// Set a threshold for detection of missing buffers //seconds
#define MISSING_REQUEST_BUF_TIMEOUT 5
#define MISSING_HDRPLUS_REQUEST_BUF_TIMEOUT 30
@@ -586,6 +585,9 @@
property_get("persist.camera.cacmode.disable", prop, "0");
m_cacModeDisabled = (uint8_t)atoi(prop);
+ m_bForceInfinityAf = property_get_bool("persist.camera.af.infinity", 0);
+ m_MobicatMask = property_get_bool("persist.camera.mobicat", 0);
+
//Load and read GPU library.
lib_surface_utils = NULL;
LINK_get_surface_pixel_alignment = NULL;
@@ -4038,7 +4040,8 @@
return;
}
- //acquire perf lock for 5 sec after the last HDR frame is captured
+ //acquire perf lock for 2 secs after the last HDR frame is captured
+ constexpr uint32_t HDR_PLUS_PERF_TIME_OUT = 2000;
if ((p_frame_number_valid != NULL) && *p_frame_number_valid) {
if ((p_frame_number != NULL) &&
(mLastCustIntentFrmNum == (int32_t)*p_frame_number)) {
@@ -7151,6 +7154,11 @@
camMetadata.update(ANDROID_SENSOR_EXPOSURE_TIME , sensorExpTime, 1);
}
+ IF_META_AVAILABLE(float, expTimeBoost, CAM_INTF_META_EXP_TIME_BOOST, metadata) {
+ LOGD("expTimeBoost = %f", *expTimeBoost);
+ camMetadata.update(NEXUS_EXPERIMENTAL_2017_EXP_TIME_BOOST, expTimeBoost, 1);
+ }
+
IF_META_AVAILABLE(int64_t, sensorFameDuration,
CAM_INTF_META_SENSOR_FRAME_DURATION, metadata) {
LOGD("sensorFameDuration = %lld", *sensorFameDuration);
@@ -12155,11 +12163,8 @@
}
}
- char af_value[PROPERTY_VALUE_MAX];
- property_get("persist.camera.af.infinity", af_value, "0");
-
uint8_t fwk_focusMode = 0;
- if (atoi(af_value) == 0) {
+ if (m_bForceInfinityAf == 0) {
if (frame_settings.exists(ANDROID_CONTROL_AF_MODE)) {
fwk_focusMode = frame_settings.find(ANDROID_CONTROL_AF_MODE).data.u8[0];
int val = lookupHalName(FOCUS_MODES_MAP, METADATA_MAP_SIZE(FOCUS_MODES_MAP),
@@ -13765,12 +13770,9 @@
*==========================================================================*/
int32_t QCamera3HardwareInterface::setMobicat()
{
- char value [PROPERTY_VALUE_MAX];
- property_get("persist.camera.mobicat", value, "0");
int32_t ret = NO_ERROR;
- uint8_t enableMobi = (uint8_t)atoi(value);
- if (enableMobi) {
+ if (m_MobicatMask) {
tune_cmd_t tune_cmd;
tune_cmd.type = SET_RELOAD_CHROMATIX;
tune_cmd.module = MODULE_ALL;
@@ -13783,7 +13785,6 @@
CAM_INTF_PARM_SET_PP_COMMAND,
tune_cmd);
}
- m_MobicatMask = enableMobi;
return ret;
}
diff --git a/msm8998/QCamera2/HAL3/QCamera3HWI.h b/msm8998/QCamera2/HAL3/QCamera3HWI.h
index 9b2eb2f..9ef806f 100644
--- a/msm8998/QCamera2/HAL3/QCamera3HWI.h
+++ b/msm8998/QCamera2/HAL3/QCamera3HWI.h
@@ -559,6 +559,7 @@
uint8_t m_debug_avtimer;
uint8_t m_bVideoHdrEnabled;
uint8_t m_cacModeDisabled;
+ uint8_t m_bForceInfinityAf;
/* Data structure to store pending request */
typedef struct {
diff --git a/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp b/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp
index 72366c1..cd54f89 100644
--- a/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp
+++ b/msm8998/QCamera2/HAL3/QCamera3VendorTags.cpp
@@ -359,6 +359,7 @@
{ "stats.ois_shift_y", TYPE_INT32 },
{ "sensor.pd_data_dimensions", TYPE_INT32},
{ "sensor.pd_data_enable", TYPE_BYTE},
+ { "control.exposure_time_boost", TYPE_FLOAT},
};
vendor_tag_info_t tango_mode_data[TANGO_MODE_DATA_END -
@@ -594,6 +595,7 @@
(uint32_t)NEXUS_EXPERIMENTAL_2017_OIS_SHIFT_Y,
(uint32_t)NEXUS_EXPERIMENTAL_2017_PD_DATA_DIMENSIONS,
(uint32_t)NEXUS_EXPERIMENTAL_2017_PD_DATA_ENABLE,
+ (uint32_t)NEXUS_EXPERIMENTAL_2017_EXP_TIME_BOOST,
//TANGO_MODE
(uint32_t)TANGO_MODE_DATA_SENSOR_FULLFOV,
diff --git a/msm8998/QCamera2/HAL3/QCamera3VendorTags.h b/msm8998/QCamera2/HAL3/QCamera3VendorTags.h
index f505d20..087eeeb 100644
--- a/msm8998/QCamera2/HAL3/QCamera3VendorTags.h
+++ b/msm8998/QCamera2/HAL3/QCamera3VendorTags.h
@@ -439,6 +439,8 @@
/* PD plumbing */
NEXUS_EXPERIMENTAL_2017_PD_DATA_DIMENSIONS,
NEXUS_EXPERIMENTAL_2017_PD_DATA_ENABLE,
+ /* Exposure time boost */
+ NEXUS_EXPERIMENTAL_2017_EXP_TIME_BOOST,
NEXUS_EXPERIMENTAL_2017_END,
/* Select sensor mode for tango */
diff --git a/msm8998/QCamera2/stack/common/cam_intf.h b/msm8998/QCamera2/stack/common/cam_intf.h
index aa12488..9f07f31 100644
--- a/msm8998/QCamera2/stack/common/cam_intf.h
+++ b/msm8998/QCamera2/stack/common/cam_intf.h
@@ -1221,6 +1221,7 @@
INCLUDE(CAM_INTF_META_AF_REGIONS_CONFIDENCE, int32_t, 1);
INCLUDE(CAM_INTF_META_SENSOR_MODE_FULLFOV, int32_t, 1);
INCLUDE(CAM_INTF_META_EARLY_AF_STATE, uint32_t, 1);
+ INCLUDE(CAM_INTF_META_EXP_TIME_BOOST, float, 1);
} metadata_data_t;
diff --git a/msm8998/QCamera2/stack/common/cam_types.h b/msm8998/QCamera2/stack/common/cam_types.h
index a567f59..74d4a5e 100644
--- a/msm8998/QCamera2/stack/common/cam_types.h
+++ b/msm8998/QCamera2/stack/common/cam_types.h
@@ -2547,6 +2547,8 @@
CAM_INTF_META_AF_REGIONS_CONFIDENCE,
/* Early AF state due to trigger */
CAM_INTF_META_EARLY_AF_STATE,
+ /* Exposure time boost */
+ CAM_INTF_META_EXP_TIME_BOOST,
CAM_INTF_PARM_MAX
} cam_intf_parm_type_t;