diff --git a/config/linux/ipu6ep/gcss/graph_descriptor.xml b/config/linux/ipu6ep/gcss/graph_descriptor.xml index c0c2656a..d7e9617f 100644 --- a/config/linux/ipu6ep/gcss/graph_descriptor.xml +++ b/config/linux/ipu6ep/gcss/graph_descriptor.xml @@ -12354,7 +12354,6 @@ - @@ -12379,7 +12378,6 @@ - @@ -12410,7 +12408,6 @@ - @@ -12431,7 +12428,6 @@ - @@ -12454,7 +12450,6 @@ - @@ -12492,7 +12487,6 @@ - @@ -12515,7 +12509,6 @@ - @@ -12549,7 +12542,6 @@ - @@ -12573,7 +12565,6 @@ - @@ -12594,7 +12585,6 @@ - @@ -12620,7 +12610,6 @@ - @@ -12642,7 +12631,6 @@ - @@ -12668,7 +12656,6 @@ - @@ -12688,7 +12675,6 @@ - @@ -12714,7 +12700,6 @@ - @@ -12737,7 +12722,6 @@ - @@ -12787,7 +12771,6 @@ - @@ -12809,7 +12792,6 @@ - @@ -12863,7 +12845,6 @@ - @@ -12885,7 +12866,6 @@ - @@ -12932,7 +12912,6 @@ - @@ -13563,7 +13542,6 @@ - @@ -14129,7 +14107,6 @@ - @@ -14159,7 +14136,6 @@ - @@ -14307,7 +14283,6 @@ - @@ -14330,7 +14305,6 @@ - @@ -14384,7 +14358,6 @@ - @@ -14407,7 +14380,6 @@ - @@ -14451,7 +14423,6 @@ - @@ -14473,7 +14444,6 @@ - @@ -14511,7 +14481,6 @@ - @@ -14532,7 +14501,6 @@ - @@ -14589,7 +14557,6 @@ - @@ -14610,7 +14577,6 @@ - @@ -14641,7 +14607,6 @@ - @@ -14665,7 +14630,6 @@ - @@ -14686,7 +14650,6 @@ - @@ -14709,7 +14672,6 @@ - @@ -14731,7 +14693,6 @@ - @@ -14757,7 +14718,6 @@ - @@ -14779,7 +14739,6 @@ - @@ -14822,7 +14781,6 @@ - @@ -15283,7 +15241,6 @@ - @@ -15305,7 +15262,6 @@ - @@ -15348,7 +15304,6 @@ - @@ -15428,7 +15383,6 @@ - @@ -15453,7 +15407,6 @@ - @@ -15630,7 +15583,6 @@ - @@ -15651,7 +15603,6 @@ - @@ -15673,7 +15624,6 @@ - @@ -15695,7 +15645,6 @@ - @@ -15717,7 +15666,6 @@ - @@ -15737,7 +15685,6 @@ - @@ -15759,7 +15706,6 @@ - @@ -15782,7 +15728,6 @@ - @@ -15825,7 +15770,6 @@ - @@ -15847,7 +15791,6 @@ - @@ -15893,7 +15836,6 @@ - @@ -15915,7 +15857,6 @@ - @@ -15962,7 +15903,6 @@ - diff --git a/config/linux/ipu6ep/psys_policy_profiles.xml b/config/linux/ipu6ep/psys_policy_profiles.xml index a75ecf88..eb6fb30f 100644 --- a/config/linux/ipu6ep/psys_policy_profiles.xml +++ b/config/linux/ipu6ep/psys_policy_profiles.xml @@ -26,7 +26,11 @@ limitations under the License. - + + + + + diff --git a/config/linux/ipu6epmtl/OV02E10_ASG202N3_MTL.aiqb b/config/linux/ipu6epmtl/OV02E10_ASG202N3_MTL.aiqb new file mode 100644 index 00000000..2f3922ff Binary files /dev/null and b/config/linux/ipu6epmtl/OV02E10_ASG202N3_MTL.aiqb differ diff --git a/config/linux/ipu6epmtl/gcss/graph_settings_OV02E10_ASG202N3_MTL.xml b/config/linux/ipu6epmtl/gcss/graph_settings_OV02E10_ASG202N3_MTL.xml new file mode 100644 index 00000000..69c78ff6 --- /dev/null +++ b/config/linux/ipu6epmtl/gcss/graph_settings_OV02E10_ASG202N3_MTL.xml @@ -0,0 +1,2629 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + diff --git a/config/linux/ipu6epmtl/libcamhal_profile.xml b/config/linux/ipu6epmtl/libcamhal_profile.xml index 805b01b2..a29596ea 100644 --- a/config/linux/ipu6epmtl/libcamhal_profile.xml +++ b/config/linux/ipu6epmtl/libcamhal_profile.xml @@ -19,8 +19,6 @@ - + diff --git a/config/linux/ipu6epmtl/psys_policy_profiles.xml b/config/linux/ipu6epmtl/psys_policy_profiles.xml index 588f8f13..8091bfe2 100644 --- a/config/linux/ipu6epmtl/psys_policy_profiles.xml +++ b/config/linux/ipu6epmtl/psys_policy_profiles.xml @@ -51,12 +51,4 @@ limitations under the License. - - - - - - - - diff --git a/config/linux/ipu6epmtl/sensors/ov02e10-uf.xml b/config/linux/ipu6epmtl/sensors/ov02e10-uf.xml new file mode 100644 index 00000000..d7a78cd9 --- /dev/null +++ b/config/linux/ipu6epmtl/sensors/ov02e10-uf.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/include/linux/ipu-isys.h b/include/linux/ipu-isys.h index d96e95e1..b90f3427 100644 --- a/include/linux/ipu-isys.h +++ b/include/linux/ipu-isys.h @@ -22,7 +22,6 @@ #define V4L2_CID_IPU_BASE (V4L2_CID_USER_BASE + 0x1080) #define V4L2_CID_IPU_ISA_EN (V4L2_CID_IPU_BASE + 1) /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ -#define V4L2_CID_IPU_STORE_CSI2_HEADER (V4L2_CID_IPU_BASE + 2) #define V4L2_CID_IPU_ISYS_COMPRESSION (V4L2_CID_IPU_BASE + 3) #define V4L2_CID_IPU_QUERY_SUB_STREAM (V4L2_CID_IPU_BASE + 4) #define V4L2_IPU_ISA_EN_BLC (1 << 0) diff --git a/src/3a/intel3a/Intel3AParameter.cpp b/src/3a/intel3a/Intel3AParameter.cpp index cabaff45..83342ad6 100644 --- a/src/3a/intel3a/Intel3AParameter.cpp +++ b/src/3a/intel3a/Intel3AParameter.cpp @@ -294,6 +294,16 @@ void Intel3AParameter::setManualIso(const aiq_parameter_t& param) { return; } + SensitivityRange range; + if (PlatformData::getSensitivityRangeByTuningMode(mCameraId, param.tuningMode, range) == OK) { + float ratio = + (manualIso - mSensitivityRange.min) / (mSensitivityRange.max - mSensitivityRange.min); + manualIso = range.min + ratio * (range.max - range.min); + manualIso = CLIP(manualIso, range.max, range.min); + + LOG2("%s, param.manualIso %d, manualIso %d", __func__, param.manualIso, manualIso); + } + // Will overwrite manual_analog_gain for (unsigned int i = 0; i < mAeParams.num_exposures; i++) { mAeParams.manual_iso[i] = manualIso; diff --git a/src/core/DeviceBase.cpp b/src/core/DeviceBase.cpp index d10c6adb..42ed9f4d 100644 --- a/src/core/DeviceBase.cpp +++ b/src/core/DeviceBase.cpp @@ -301,20 +301,6 @@ int MainDevice::createBufferPool(const stream_t& config) { csiBEDeviceNodeName.c_str(), ret); } - bool setWithHeaderCtl = true; - std::string subDeviceNodeName; - - if (PlatformData::getDevNameByType(mCameraId, VIDEO_ISYS_RECEIVER, subDeviceNodeName) == OK) { - LOG1("%s: found ISYS receiver subdevice %s", __func__, subDeviceNodeName.c_str()); - if (PlatformData::isTPGReceiver(mCameraId)) { - LOG1("%s: no need to set csi header ctrl for tpg", __func__); - setWithHeaderCtl = false; - } - } else { - setWithHeaderCtl = false; - } - - int withHeader = 1; struct v4l2_format v4l2fmt; v4l2fmt.fmt.pix_mp.field = config.field; @@ -330,13 +316,6 @@ int MainDevice::createBufferPool(const stream_t& config) { v4l2fmt.fmt.pix_mp.plane_fmt[i].bytesperline = config.width; v4l2fmt.fmt.pix_mp.plane_fmt[i].sizeimage = 0; } - // The frame data is without header(MIPI STORE MODE) when - // format is YUV/RGB and frame output from CSI-Front-End entity. - if (!CameraUtils::isRaw(config.format)) { - LOG2("@%s, set frame without header for format: %s", __func__, - CameraUtils::pixelCode2String(config.format)); - withHeader = 0; - } } else { v4l2fmt.fmt.pix.width = config.width; v4l2fmt.fmt.pix.height = config.height; @@ -345,12 +324,6 @@ int MainDevice::createBufferPool(const stream_t& config) { v4l2fmt.fmt.pix.sizeimage = 0; } - if (setWithHeaderCtl) { - V4L2Subdevice* receiverSubDev = V4l2DeviceFactory::getSubDev(mCameraId, subDeviceNodeName); - int ret = receiverSubDev->SetControl(V4L2_CID_IPU_STORE_CSI2_HEADER, withHeader); - CheckAndLogError(ret != OK, ret, "set v4l2 store csi2 header failed, ret=%d", ret); - } - v4l2fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; V4L2Format tmpbuf{v4l2fmt}; int ret = mDevice->SetFormat(tmpbuf); diff --git a/src/core/RequestThread.cpp b/src/core/RequestThread.cpp index 07fd212a..6582dee2 100644 --- a/src/core/RequestThread.cpp +++ b/src/core/RequestThread.cpp @@ -176,8 +176,10 @@ int RequestThread::processRequest(int bufferNum, camera_buffer_t** ubuffer, mActive = true; } - mRequestTriggerEvent |= NEW_REQUEST; - mRequestSignal.signal(); + if (mRequestsInProcessing == 0) { + mRequestTriggerEvent |= NEW_REQUEST; + mRequestSignal.signal(); + } return OK; } @@ -244,7 +246,7 @@ void RequestThread::handleEvent(EventData eventData) { mRequestsInProcessing--; } // Just in case too many requests are pending in mPendingRequests. - if (!mPendingRequests.empty()) { + if (!mPendingRequests.empty() && (mRequestsInProcessing == 0)) { mRequestTriggerEvent |= NEW_FRAME; mRequestSignal.signal(); } @@ -261,8 +263,10 @@ void RequestThread::handleEvent(EventData eventData) { case EVENT_ISYS_SOF: { AutoMutex l(mPendingReqLock); mLastSofSeq = eventData.data.sync.sequence; - mRequestTriggerEvent |= NEW_SOF; - mRequestSignal.signal(); + if (mLastSofSeq > mLastAppliedSeq) { + mRequestTriggerEvent |= NEW_SOF; + mRequestSignal.signal(); + } } break; case EVENT_FRAME_AVAILABLE: { if (eventData.buffer->getUserBuffer() != &mFakeReqBuf) { @@ -282,7 +286,7 @@ void RequestThread::handleEvent(EventData eventData) { AutoMutex l(mPendingReqLock); // Insert fake request if no any request in the HAL to keep 3A running if (mGet3AStatWithFakeRequest && eventData.buffer->getSequence() >= mLastEffectSeq && - mPendingRequests.empty()) { + mPendingRequests.empty() && (mRequestsInProcessing == 0)) { LOGW("No request, insert fake req after req %ld to keep 3A stats update", mLastRequestId); CameraRequest fakeRequest; diff --git a/src/icbm/ICBMTypes.h b/src/icbm/ICBMTypes.h index cb64d6a5..31731797 100644 --- a/src/icbm/ICBMTypes.h +++ b/src/icbm/ICBMTypes.h @@ -46,6 +46,10 @@ struct ICBMInitInfo { uint32_t sessionType; uint32_t height; uint32_t width; +// DLC_FEATURE_S + int32_t dlcPathHandle; + char* dlcPath; +// DLC_FEATURE_E }; struct ICBMReqInfo { diff --git a/src/iutils/ModuleTags.cpp b/src/iutils/ModuleTags.cpp index bba451f5..03d8e528 100644 --- a/src/iutils/ModuleTags.cpp +++ b/src/iutils/ModuleTags.cpp @@ -79,6 +79,7 @@ const char* tagNames[] = { "Customized3A", "CustomizedAic", "CvfPrivacyChecker", + "DLCClient", "DeviceBase", "Dvs", "EXIFMaker", diff --git a/src/iutils/ModuleTags.h b/src/iutils/ModuleTags.h index e7aca700..d783e80d 100644 --- a/src/iutils/ModuleTags.h +++ b/src/iutils/ModuleTags.h @@ -87,143 +87,144 @@ enum ModuleTags { GENERATED_TAGS_Customized3A = 57, GENERATED_TAGS_CustomizedAic = 58, GENERATED_TAGS_CvfPrivacyChecker = 59, - GENERATED_TAGS_DeviceBase = 60, - GENERATED_TAGS_Dvs = 61, - GENERATED_TAGS_EXIFMaker = 62, - GENERATED_TAGS_EXIFMetaData = 63, - GENERATED_TAGS_ExifCreater = 64, - GENERATED_TAGS_FaceDetection = 65, - GENERATED_TAGS_FaceDetectionPVL = 66, - GENERATED_TAGS_FaceDetectionResultCallbackManager = 67, - GENERATED_TAGS_FaceSSD = 68, - GENERATED_TAGS_FileSource = 69, - GENERATED_TAGS_GPUExecutor = 70, - GENERATED_TAGS_GenGfx = 71, - GENERATED_TAGS_GfxGen = 72, - GENERATED_TAGS_GraphConfig = 73, - GENERATED_TAGS_GraphConfigImpl = 74, - GENERATED_TAGS_GraphConfigImplClient = 75, - GENERATED_TAGS_GraphConfigManager = 76, - GENERATED_TAGS_GraphConfigPipe = 77, - GENERATED_TAGS_GraphConfigServer = 78, - GENERATED_TAGS_GraphUtils = 79, - GENERATED_TAGS_HAL_FACE_DETECTION_TEST = 80, - GENERATED_TAGS_HAL_basic = 81, - GENERATED_TAGS_HAL_jpeg = 82, - GENERATED_TAGS_HAL_multi_streams_test = 83, - GENERATED_TAGS_HAL_rotation_test = 84, - GENERATED_TAGS_HAL_yuv = 85, - GENERATED_TAGS_HalAdaptor = 86, - GENERATED_TAGS_HalV3Utils = 87, - GENERATED_TAGS_I3AControlFactory = 88, - GENERATED_TAGS_IA_CIPR_UTILS = 89, - GENERATED_TAGS_ICBMThread = 90, - GENERATED_TAGS_ICamera = 91, - GENERATED_TAGS_IFaceDetection = 92, - GENERATED_TAGS_IPCIntelPGParam = 93, - GENERATED_TAGS_IPC_FACE_DETECTION = 94, - GENERATED_TAGS_IPC_GRAPH_CONFIG = 95, - GENERATED_TAGS_ImageProcessorCore = 96, - GENERATED_TAGS_ImageScalerCore = 97, - GENERATED_TAGS_Intel3AParameter = 98, - GENERATED_TAGS_IntelAEStateMachine = 99, - GENERATED_TAGS_IntelAFStateMachine = 100, - GENERATED_TAGS_IntelAWBStateMachine = 101, - GENERATED_TAGS_IntelAlgoClient = 102, - GENERATED_TAGS_IntelAlgoCommonClient = 103, - GENERATED_TAGS_IntelAlgoServer = 104, - GENERATED_TAGS_IntelCPUAlgoServer = 105, - GENERATED_TAGS_IntelCca = 106, - GENERATED_TAGS_IntelCcaClient = 107, - GENERATED_TAGS_IntelCcaServer = 108, - GENERATED_TAGS_IntelFDServer = 109, - GENERATED_TAGS_IntelFaceDetection = 110, - GENERATED_TAGS_IntelFaceDetectionClient = 111, - GENERATED_TAGS_IntelGPUAlgoServer = 112, - GENERATED_TAGS_IntelICBM = 113, - GENERATED_TAGS_IntelICBMClient = 114, - GENERATED_TAGS_IntelICBMServer = 115, - GENERATED_TAGS_IntelPGParam = 116, - GENERATED_TAGS_IntelPGParamClient = 117, - GENERATED_TAGS_IntelPGParamS = 118, - GENERATED_TAGS_IntelTNR7US = 119, - GENERATED_TAGS_IntelTNR7USClient = 120, - GENERATED_TAGS_IntelTNRServer = 121, - GENERATED_TAGS_IspControlUtils = 122, - GENERATED_TAGS_IspParamAdaptor = 123, - GENERATED_TAGS_JpegEncoderCore = 124, - GENERATED_TAGS_JpegMaker = 125, - GENERATED_TAGS_LensHw = 126, - GENERATED_TAGS_LensManager = 127, - GENERATED_TAGS_LiveTuning = 128, - GENERATED_TAGS_Ltm = 129, - GENERATED_TAGS_MANUAL_POST_PROCESSING = 130, - GENERATED_TAGS_MakerNote = 131, - GENERATED_TAGS_MediaControl = 132, - GENERATED_TAGS_MetadataConvert = 133, - GENERATED_TAGS_MockCamera3HAL = 134, - GENERATED_TAGS_MockCameraHal = 135, - GENERATED_TAGS_MockSysCall = 136, - GENERATED_TAGS_MsgHandler = 137, - GENERATED_TAGS_OnePunchIC2 = 138, - GENERATED_TAGS_OpenSourceGFX = 139, - GENERATED_TAGS_PGCommon = 140, - GENERATED_TAGS_PGUtils = 141, - GENERATED_TAGS_PSysDAG = 142, - GENERATED_TAGS_PSysPipe = 143, - GENERATED_TAGS_PSysProcessor = 144, - GENERATED_TAGS_ParameterGenerator = 145, - GENERATED_TAGS_ParameterHelper = 146, - GENERATED_TAGS_ParameterResult = 147, - GENERATED_TAGS_Parameters = 148, - GENERATED_TAGS_ParserBase = 149, - GENERATED_TAGS_PipeExecutor = 150, - GENERATED_TAGS_PipeLiteExecutor = 151, - GENERATED_TAGS_PlatformData = 152, - GENERATED_TAGS_PnpDebugControl = 153, - GENERATED_TAGS_PolicyParser = 154, - GENERATED_TAGS_PostProcessor = 155, - GENERATED_TAGS_PostProcessorBase = 156, - GENERATED_TAGS_PostProcessorCore = 157, - GENERATED_TAGS_PrivacyControl = 158, - GENERATED_TAGS_PrivateStream = 159, - GENERATED_TAGS_ProcessorManager = 160, - GENERATED_TAGS_RequestManager = 161, - GENERATED_TAGS_RequestThread = 162, - GENERATED_TAGS_ResultProcessor = 163, - GENERATED_TAGS_SWJpegEncoder = 164, - GENERATED_TAGS_SWPostProcessor = 165, - GENERATED_TAGS_SchedPolicy = 166, - GENERATED_TAGS_Scheduler = 167, - GENERATED_TAGS_SensorHwCtrl = 168, - GENERATED_TAGS_SensorManager = 169, - GENERATED_TAGS_SensorOB = 170, - GENERATED_TAGS_ShareRefer = 171, - GENERATED_TAGS_SofSource = 172, - GENERATED_TAGS_StreamBuffer = 173, - GENERATED_TAGS_SwImageConverter = 174, - GENERATED_TAGS_SwImageProcessor = 175, - GENERATED_TAGS_SyncManager = 176, - GENERATED_TAGS_SysCall = 177, - GENERATED_TAGS_TCPServer = 178, - GENERATED_TAGS_Thread = 179, - GENERATED_TAGS_Trace = 180, - GENERATED_TAGS_TunningParser = 181, - GENERATED_TAGS_Utils = 182, - GENERATED_TAGS_V4l2DeviceFactory = 183, - GENERATED_TAGS_V4l2_device_cc = 184, - GENERATED_TAGS_V4l2_subdevice_cc = 185, - GENERATED_TAGS_V4l2_video_node_cc = 186, - GENERATED_TAGS_VendorTags = 187, - GENERATED_TAGS_camera_metadata_tests = 188, - GENERATED_TAGS_icamera_metadata_base = 189, - GENERATED_TAGS_metadata_test = 190, - ST_FPS = 191, - ST_GPU_TNR = 192, - ST_STATS = 193, + GENERATED_TAGS_DLCClient = 60, + GENERATED_TAGS_DeviceBase = 61, + GENERATED_TAGS_Dvs = 62, + GENERATED_TAGS_EXIFMaker = 63, + GENERATED_TAGS_EXIFMetaData = 64, + GENERATED_TAGS_ExifCreater = 65, + GENERATED_TAGS_FaceDetection = 66, + GENERATED_TAGS_FaceDetectionPVL = 67, + GENERATED_TAGS_FaceDetectionResultCallbackManager = 68, + GENERATED_TAGS_FaceSSD = 69, + GENERATED_TAGS_FileSource = 70, + GENERATED_TAGS_GPUExecutor = 71, + GENERATED_TAGS_GenGfx = 72, + GENERATED_TAGS_GfxGen = 73, + GENERATED_TAGS_GraphConfig = 74, + GENERATED_TAGS_GraphConfigImpl = 75, + GENERATED_TAGS_GraphConfigImplClient = 76, + GENERATED_TAGS_GraphConfigManager = 77, + GENERATED_TAGS_GraphConfigPipe = 78, + GENERATED_TAGS_GraphConfigServer = 79, + GENERATED_TAGS_GraphUtils = 80, + GENERATED_TAGS_HAL_FACE_DETECTION_TEST = 81, + GENERATED_TAGS_HAL_basic = 82, + GENERATED_TAGS_HAL_jpeg = 83, + GENERATED_TAGS_HAL_multi_streams_test = 84, + GENERATED_TAGS_HAL_rotation_test = 85, + GENERATED_TAGS_HAL_yuv = 86, + GENERATED_TAGS_HalAdaptor = 87, + GENERATED_TAGS_HalV3Utils = 88, + GENERATED_TAGS_I3AControlFactory = 89, + GENERATED_TAGS_IA_CIPR_UTILS = 90, + GENERATED_TAGS_ICBMThread = 91, + GENERATED_TAGS_ICamera = 92, + GENERATED_TAGS_IFaceDetection = 93, + GENERATED_TAGS_IPCIntelPGParam = 94, + GENERATED_TAGS_IPC_FACE_DETECTION = 95, + GENERATED_TAGS_IPC_GRAPH_CONFIG = 96, + GENERATED_TAGS_ImageProcessorCore = 97, + GENERATED_TAGS_ImageScalerCore = 98, + GENERATED_TAGS_Intel3AParameter = 99, + GENERATED_TAGS_IntelAEStateMachine = 100, + GENERATED_TAGS_IntelAFStateMachine = 101, + GENERATED_TAGS_IntelAWBStateMachine = 102, + GENERATED_TAGS_IntelAlgoClient = 103, + GENERATED_TAGS_IntelAlgoCommonClient = 104, + GENERATED_TAGS_IntelAlgoServer = 105, + GENERATED_TAGS_IntelCPUAlgoServer = 106, + GENERATED_TAGS_IntelCca = 107, + GENERATED_TAGS_IntelCcaClient = 108, + GENERATED_TAGS_IntelCcaServer = 109, + GENERATED_TAGS_IntelFDServer = 110, + GENERATED_TAGS_IntelFaceDetection = 111, + GENERATED_TAGS_IntelFaceDetectionClient = 112, + GENERATED_TAGS_IntelGPUAlgoServer = 113, + GENERATED_TAGS_IntelICBM = 114, + GENERATED_TAGS_IntelICBMClient = 115, + GENERATED_TAGS_IntelICBMServer = 116, + GENERATED_TAGS_IntelPGParam = 117, + GENERATED_TAGS_IntelPGParamClient = 118, + GENERATED_TAGS_IntelPGParamS = 119, + GENERATED_TAGS_IntelTNR7US = 120, + GENERATED_TAGS_IntelTNR7USClient = 121, + GENERATED_TAGS_IntelTNRServer = 122, + GENERATED_TAGS_IspControlUtils = 123, + GENERATED_TAGS_IspParamAdaptor = 124, + GENERATED_TAGS_JpegEncoderCore = 125, + GENERATED_TAGS_JpegMaker = 126, + GENERATED_TAGS_LensHw = 127, + GENERATED_TAGS_LensManager = 128, + GENERATED_TAGS_LiveTuning = 129, + GENERATED_TAGS_Ltm = 130, + GENERATED_TAGS_MANUAL_POST_PROCESSING = 131, + GENERATED_TAGS_MakerNote = 132, + GENERATED_TAGS_MediaControl = 133, + GENERATED_TAGS_MetadataConvert = 134, + GENERATED_TAGS_MockCamera3HAL = 135, + GENERATED_TAGS_MockCameraHal = 136, + GENERATED_TAGS_MockSysCall = 137, + GENERATED_TAGS_MsgHandler = 138, + GENERATED_TAGS_OnePunchIC2 = 139, + GENERATED_TAGS_OpenSourceGFX = 140, + GENERATED_TAGS_PGCommon = 141, + GENERATED_TAGS_PGUtils = 142, + GENERATED_TAGS_PSysDAG = 143, + GENERATED_TAGS_PSysPipe = 144, + GENERATED_TAGS_PSysProcessor = 145, + GENERATED_TAGS_ParameterGenerator = 146, + GENERATED_TAGS_ParameterHelper = 147, + GENERATED_TAGS_ParameterResult = 148, + GENERATED_TAGS_Parameters = 149, + GENERATED_TAGS_ParserBase = 150, + GENERATED_TAGS_PipeExecutor = 151, + GENERATED_TAGS_PipeLiteExecutor = 152, + GENERATED_TAGS_PlatformData = 153, + GENERATED_TAGS_PnpDebugControl = 154, + GENERATED_TAGS_PolicyParser = 155, + GENERATED_TAGS_PostProcessor = 156, + GENERATED_TAGS_PostProcessorBase = 157, + GENERATED_TAGS_PostProcessorCore = 158, + GENERATED_TAGS_PrivacyControl = 159, + GENERATED_TAGS_PrivateStream = 160, + GENERATED_TAGS_ProcessorManager = 161, + GENERATED_TAGS_RequestManager = 162, + GENERATED_TAGS_RequestThread = 163, + GENERATED_TAGS_ResultProcessor = 164, + GENERATED_TAGS_SWJpegEncoder = 165, + GENERATED_TAGS_SWPostProcessor = 166, + GENERATED_TAGS_SchedPolicy = 167, + GENERATED_TAGS_Scheduler = 168, + GENERATED_TAGS_SensorHwCtrl = 169, + GENERATED_TAGS_SensorManager = 170, + GENERATED_TAGS_SensorOB = 171, + GENERATED_TAGS_ShareRefer = 172, + GENERATED_TAGS_SofSource = 173, + GENERATED_TAGS_StreamBuffer = 174, + GENERATED_TAGS_SwImageConverter = 175, + GENERATED_TAGS_SwImageProcessor = 176, + GENERATED_TAGS_SyncManager = 177, + GENERATED_TAGS_SysCall = 178, + GENERATED_TAGS_TCPServer = 179, + GENERATED_TAGS_Thread = 180, + GENERATED_TAGS_Trace = 181, + GENERATED_TAGS_TunningParser = 182, + GENERATED_TAGS_Utils = 183, + GENERATED_TAGS_V4l2DeviceFactory = 184, + GENERATED_TAGS_V4l2_device_cc = 185, + GENERATED_TAGS_V4l2_subdevice_cc = 186, + GENERATED_TAGS_V4l2_video_node_cc = 187, + GENERATED_TAGS_VendorTags = 188, + GENERATED_TAGS_camera_metadata_tests = 189, + GENERATED_TAGS_icamera_metadata_base = 190, + GENERATED_TAGS_metadata_test = 191, + ST_FPS = 192, + ST_GPU_TNR = 193, + ST_STATS = 194, }; -#define TAGS_MAX_NUM 194 +#define TAGS_MAX_NUM 195 #endif // !!! DO NOT EDIT THIS FILE !!! diff --git a/src/metadata/ParameterGenerator.cpp b/src/metadata/ParameterGenerator.cpp index 696af3b5..715c7e67 100644 --- a/src/metadata/ParameterGenerator.cpp +++ b/src/metadata/ParameterGenerator.cpp @@ -68,6 +68,8 @@ ParameterGenerator::ParameterGenerator(int cameraId) mTonemapCurveGreen[i * 2 + 1] = index / (mTonemapMaxCurvePoints - 1); } } + CLEAR(mSensitivityRange); + info.capability->getSupportedSensorSensitivityRange(mSensitivityRange); } ParameterGenerator::~ParameterGenerator() {} @@ -325,7 +327,19 @@ int ParameterGenerator::updateWithAiqResultsL(int64_t sequence, Parameters* para } else { params->setExposureTime(aiqResult->mAeResults.exposures[0].exposure[0].exposure_time_us); } - params->setSensitivityIso(aiqResult->mAeResults.exposures[0].exposure[0].iso); + + int iso = aiqResult->mAeResults.exposures[0].exposure[0].iso; + SensitivityRange range; + if (PlatformData::getSensitivityRangeByTuningMode(mCameraId, aiqResult->mTuningMode, + range) == OK) { + float ratio = static_cast(iso - range.min) / (range.max - range.min); + iso = mSensitivityRange.min + ratio * (mSensitivityRange.max - mSensitivityRange.min); + iso = CLIP(iso, mSensitivityRange.max, mSensitivityRange.min); + LOG2("%s, exposure[0].iso %d, iso %d", __func__, + aiqResult->mAeResults.exposures[0].exposure[0].iso, iso); + } + params->setSensitivityIso(iso); + float fps = 1000000.0 / aiqResult->mFrameDuration; params->setFrameRate(fps); diff --git a/src/metadata/ParameterGenerator.h b/src/metadata/ParameterGenerator.h index 47bcb6bf..41e41a39 100644 --- a/src/metadata/ParameterGenerator.h +++ b/src/metadata/ParameterGenerator.h @@ -108,6 +108,7 @@ class ParameterGenerator { int32_t mTonemapMaxCurvePoints; camera_color_transform_t mPaCcm; + camera_range_t mSensitivityRange; }; } /* namespace icamera */ diff --git a/src/platformdata/CameraParser.cpp b/src/platformdata/CameraParser.cpp index 258eead5..0cf56a77 100644 --- a/src/platformdata/CameraParser.cpp +++ b/src/platformdata/CameraParser.cpp @@ -426,6 +426,27 @@ void CameraParser::handleSensor(CameraParser* profiles, const char* name, const LOGE("unknown Lens HW type %s, set to LENS_NONE_HW", atts[1]); pCurrentCam->mLensHwType = LENS_NONE_HW; } + } else if (strcmp(name, "tuningModeToSensitivityMap") == 0) { + int size = strlen(atts[1]); + char src[size + 1]; + MEMCPY_S(src, size, atts[1], size); + src[size] = '\0'; + + char* savePtr = nullptr; + char* tuningMode = strtok_r(src, ",", &savePtr); + while (tuningMode) { + SensitivityRange range; + char* min = strtok_r(nullptr, ",", &savePtr); + char* max = strtok_r(nullptr, ",", &savePtr); + CheckAndLogError(!tuningMode || !min || !max, VOID_VALUE, "Wrong sensitivity map"); + + TuningMode mode = CameraUtils::string2TuningMode(tuningMode); + range.min = atoi(min); + range.max = atoi(max); + pCurrentCam->mTuningModeToSensitivityMap[mode] = range; + + tuningMode = strtok_r(nullptr, ",", &savePtr); + } } else if (strcmp(name, "enablePdaf") == 0) { pCurrentCam->mEnablePdaf = strcmp(atts[1], "true") == 0; } else if (strcmp(name, "sensorAwb") == 0) { diff --git a/src/platformdata/CameraTypes.h b/src/platformdata/CameraTypes.h index b239d7df..319c5e78 100644 --- a/src/platformdata/CameraTypes.h +++ b/src/platformdata/CameraTypes.h @@ -240,6 +240,11 @@ struct MultiExpRange { ExpRange SHS3; }; +struct SensitivityRange { + int32_t min; + int32_t max; +}; + struct UserToPslOutputMap { camera_resolution_t User; camera_resolution_t Psl; diff --git a/src/platformdata/PlatformData.cpp b/src/platformdata/PlatformData.cpp index f4374e10..9bfa206a 100644 --- a/src/platformdata/PlatformData.cpp +++ b/src/platformdata/PlatformData.cpp @@ -264,6 +264,17 @@ int PlatformData::getLensHwType(int cameraId) { return getInstance()->mStaticCfg.mCameras[cameraId].mLensHwType; } +int PlatformData::getSensitivityRangeByTuningMode(int cameraId, TuningMode mode, + SensitivityRange& range) { + auto& map = getInstance()->mStaticCfg.mCameras[cameraId].mTuningModeToSensitivityMap; + if (map.find(mode) != map.end()) { + range = map[mode]; + return OK; + } + + return NAME_NOT_FOUND; +} + bool PlatformData::isPdafEnabled(int cameraId) { return getInstance()->mStaticCfg.mCameras[cameraId].mEnablePdaf; } diff --git a/src/platformdata/PlatformData.h b/src/platformdata/PlatformData.h index 1f2f1ac0..d95b3c36 100644 --- a/src/platformdata/PlatformData.h +++ b/src/platformdata/PlatformData.h @@ -227,6 +227,7 @@ class PlatformData { VcAggregator mVcAggregator; // VIRTUAL_CHANNEL_E int mLensHwType; + std::unordered_map mTuningModeToSensitivityMap; bool mEnablePdaf; bool mSensorAwb; bool mSensorAe; @@ -475,6 +476,16 @@ class PlatformData { */ static int getLensHwType(int cameraId); + /** + * get sensitivity range by TuningMode + * + * \param[in] cameraId: [0, MAX_CAMERA_NUMBER - 1] + * \param[out] range: SensitivityRange + * \return OK if found, otherwise return NAME_NOT_FOUND. + */ + static int getSensitivityRangeByTuningMode(int cameraId, TuningMode mode, + SensitivityRange& range); + /** * check if PDAF is supported or not *