camera: intel: ipu6: Add config for still tnr extra frame count
Default still tnr use 3 frames, and extra frame
count is 2. add setting in xml to config the
extra frame count
BUG=b:149068439, b:149068672
TEST=Full tested pass for camera functions
Cq-Depend: chromium:2599681, chromium:2600371
Cq-Depend: chrome-internal:3469844
Change-Id: I4c79213b05ea32b2add6e09b2c990456054f7e93
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2594539
Tested-by: Tianshu Qiu <tian.shu.qiu@intel.com>
Commit-Queue: Ren-Pei Zeng <kamesan@chromium.org>
Reviewed-by: Ren-Pei Zeng <kamesan@chromium.org>
diff --git a/camera/hal/intel/ipu6/src/core/PSysProcessor.cpp b/camera/hal/intel/ipu6/src/core/PSysProcessor.cpp
index cea1c8e..6bc03b7 100644
--- a/camera/hal/intel/ipu6/src/core/PSysProcessor.cpp
+++ b/camera/hal/intel/ipu6/src/core/PSysProcessor.cpp
@@ -37,8 +37,6 @@
*/
#define SOF_EVENT_MARGIN (5000000) // 5ms
#define SOF_EVENT_MAX_MARGIN (60000000) // 60ms
-// GPU TNR needs to run extra 2 iterators to converge
-#define TNR_CONVERGE_COUNT 2
#define EXTREME_NEGATIVE_STRENGTH (-60)
#define EXTREME_POSITIVE_STRENGTH (20)
@@ -802,7 +800,7 @@
fakeTaskBuffers[item.first] = nullptr;
}
}
- for (int i = TNR_CONVERGE_COUNT; i > 0; i--) {
+ for (int i = PlatformData::getTnrExtraFrameCount(mCameraId); i > 0; i--) {
CameraBufferPortMap srcBuf;
{
AutoMutex lock(mBufferMapLock);
diff --git a/camera/hal/intel/ipu6/src/platformdata/CameraParser.cpp b/camera/hal/intel/ipu6/src/platformdata/CameraParser.cpp
index da63d9a..857a586 100644
--- a/camera/hal/intel/ipu6/src/platformdata/CameraParser.cpp
+++ b/camera/hal/intel/ipu6/src/platformdata/CameraParser.cpp
@@ -480,6 +480,9 @@
} else if (strcmp(name, "videoStreamNum") == 0) {
int val = atoi(atts[1]);
pCurrentCam->mVideoStreamNum = val > 0 ? val : DEFAULT_VIDEO_STREAM_NUM;
+ } else if (strcmp(name, "tnrExtraFrameNum") == 0) {
+ int val = atoi(atts[1]);
+ pCurrentCam->mTnrExtraFrameNum = val > 0 ? val : DEFAULT_TNR_EXTRA_FRAME_NUM;
}
}
diff --git a/camera/hal/intel/ipu6/src/platformdata/PlatformData.cpp b/camera/hal/intel/ipu6/src/platformdata/PlatformData.cpp
index 7286650..13ecb1f 100644
--- a/camera/hal/intel/ipu6/src/platformdata/PlatformData.cpp
+++ b/camera/hal/intel/ipu6/src/platformdata/PlatformData.cpp
@@ -1390,4 +1390,8 @@
return getInstance()->mStaticCfg.mCommonConfig.isTnrParamForceUpdate;
}
+int PlatformData::getTnrExtraFrameCount(int cameraId)
+{
+ return getInstance()->mStaticCfg.mCameras[cameraId].mTnrExtraFrameNum;
+}
} // namespace icamera
diff --git a/camera/hal/intel/ipu6/src/platformdata/PlatformData.h b/camera/hal/intel/ipu6/src/platformdata/PlatformData.h
index 5b1f76a..aa6499a 100644
--- a/camera/hal/intel/ipu6/src/platformdata/PlatformData.h
+++ b/camera/hal/intel/ipu6/src/platformdata/PlatformData.h
@@ -52,6 +52,7 @@
#define FACE_ENGINE_DEFAULT_RUNNING_INTERVAL 1
+#define DEFAULT_TNR_EXTRA_FRAME_NUM 2
/* Max number of the RAW buffer number is 32.
* Max number size of the pipeline depth is 6.
* Max setting count should be larger than raw buffer number + pipeline depth.
@@ -140,7 +141,8 @@
mPsysBundleWithAic(false),
mSwProcessingAlignWithIsp(false),
mMaxNvmDataSize(0),
- mVideoStreamNum(DEFAULT_VIDEO_STREAM_NUM)
+ mVideoStreamNum(DEFAULT_VIDEO_STREAM_NUM),
+ mTnrExtraFrameNum(DEFAULT_TNR_EXTRA_FRAME_NUM)
{
}
@@ -229,6 +231,7 @@
std::unordered_map<std::string, std::string> mCameraModuleToAiqbMap;
std::vector<IGraphType::ScalerInfo> mScalerInfo;
int mVideoStreamNum;
+ int mTnrExtraFrameNum;
};
std::vector<CameraInfo> mCameras;
@@ -1187,5 +1190,9 @@
* Check if update tnr7us params every frame
*/
static bool isTnrParamForceUpdate();
+ /**
+ * the extra frame count for still stream
+ */
+ static int getTnrExtraFrameCount(int cameraId);
};
} /* namespace icamera */