middleware: version release v4.1.5

middleware:
[sensor]support sc035hgs_1l
[sample] vo layer framerate
[sensor] Update the SC5336 driver configuration and make compatibility adjustments.
[panel][bt1120] add panel nvp6021
[sensor]add gc2093 60fps
[sensor]support sc3336p
[V410][Phobos] add mipi switch support.
[sensor] add sc2336_slave [sensor] add sc2331_slave
[feat](Sensor): Add support for sensor SC2336P_1L.
[sensor]modify 4336 4336p bayerpattern
[sensor]add new sensor sc223a(linear mode can be used for sc233a)

isp:
[feat](toojson): update tooljson generation way.
[feat] isp add for trinocular camera.
[feat](isp) modify param type of VC module
[awb] refine adjust saturation by CA memory use

drv:
[feature](venc): venc sbm mode suppor multiple chn
[vpss] support multi chn(sbm + frm) online
[V410][PHOBOS] add mipi switch support.
remove useless code

Change-Id: Ieb9e66c5f33e620e615fd752ba7d29229716bf5c
This commit is contained in:
forum_service
2023-12-18 13:51:22 +08:00
committed by carbon
parent b7e531da4e
commit fce93ce92b
259 changed files with 26713 additions and 174 deletions

View File

@ -147,6 +147,8 @@ CVI_S32 SAMPLE_COMM_VI_ResetSensor(SAMPLE_VI_CONFIG_S *pstViConfig)
for (i = 0; i < pstViConfig->s32WorkingViNum; i++) {
pstViInfo = &pstViConfig->astViInfo[i];
devno = pstViInfo->stSnsInfo.MipiDev;
if (pstViConfig->astViInfo[i].stPipeInfo.aPipe[0] >= VI_MAX_PHY_DEV_NUM)
return CVI_SUCCESS;
s32Ret = CVI_MIPI_SetSensorReset(devno, 1);
if (s32Ret != CVI_SUCCESS) {
CVI_TRACE_LOG(CVI_DBG_ERR, "sensor %d reset failed!\n", i);
@ -166,6 +168,8 @@ CVI_S32 SAMPLE_COMM_VI_ResetMipi(SAMPLE_VI_CONFIG_S *pstViConfig)
for (i = 0; i < pstViConfig->s32WorkingViNum; i++) {
pstViInfo = &pstViConfig->astViInfo[i];
devno = pstViInfo->stSnsInfo.MipiDev;
if (pstViConfig->astViInfo[i].stPipeInfo.aPipe[0] >= VI_MAX_PHY_DEV_NUM)
return CVI_SUCCESS;
s32Ret = CVI_MIPI_SetMipiReset(devno, 1);
if (s32Ret != CVI_SUCCESS) {
CVI_TRACE_LOG(CVI_DBG_ERR, "mipi %d reset failed!\n", i);
@ -185,6 +189,8 @@ CVI_S32 SAMPLE_COMM_VI_UnresetSensor(SAMPLE_VI_CONFIG_S *pstViConfig)
for (i = 0; i < pstViConfig->s32WorkingViNum; i++) {
pstViInfo = &pstViConfig->astViInfo[i];
devno = pstViInfo->stSnsInfo.MipiDev;
if (pstViConfig->astViInfo[i].stPipeInfo.aPipe[0] >= VI_MAX_PHY_DEV_NUM)
return CVI_SUCCESS;
s32Ret = CVI_MIPI_SetSensorReset(devno, 0);
if (s32Ret != CVI_SUCCESS) {
CVI_TRACE_LOG(CVI_DBG_ERR, "sensor %d unreset failed!\n", i);
@ -204,6 +210,8 @@ CVI_S32 SAMPLE_COMM_VI_UnresetMipi(SAMPLE_VI_CONFIG_S *pstViConfig)
for (i = 0; i < pstViConfig->s32WorkingViNum; i++) {
pstViInfo = &pstViConfig->astViInfo[i];
devno = pstViInfo->stSnsInfo.MipiDev;
if (pstViConfig->astViInfo[i].stPipeInfo.aPipe[0] >= VI_MAX_PHY_DEV_NUM)
return CVI_SUCCESS;
s32Ret = CVI_MIPI_SetMipiReset(devno, 0);
if (s32Ret != CVI_SUCCESS) {
SAMPLE_PRT("mipi %d unreset failed!\n", i);
@ -251,6 +259,8 @@ CVI_S32 SAMPLE_COMM_VI_EnableSensorClock(SAMPLE_VI_CONFIG_S *pstViConfig)
for (i = 0; i < pstViConfig->s32WorkingViNum; i++) {
pstViInfo = &pstViConfig->astViInfo[i];
devno = pstViInfo->stSnsInfo.MipiDev;
if (pstViConfig->astViInfo[i].stPipeInfo.aPipe[0] >= VI_MAX_PHY_DEV_NUM)
return CVI_SUCCESS;
s32Ret = CVI_MIPI_SetSensorClock(devno, 1);
if (s32Ret != CVI_SUCCESS) {
CVI_TRACE_LOG(CVI_DBG_ERR, "sensor %d clock enable failed!\n", i);
@ -433,6 +443,7 @@ CVI_S32 SAMPLE_COMM_VI_StartSensor(SAMPLE_VI_CONFIG_S *pstViConfig)
for (i = 0; i < pstViConfig->s32WorkingViNum; i++) {
pstViInfo = &pstViConfig->astViInfo[i];
ViPipe = pstViInfo->stPipeInfo.aPipe[0];
u32SnsId = pstViInfo->stSnsInfo.s32SnsId;
s32Ret = SAMPLE_COMM_ISP_SetSnsObj(u32SnsId, pstViInfo->stSnsInfo.enSnsType);
if (s32Ret != CVI_SUCCESS) {
@ -558,6 +569,12 @@ CVI_S32 SAMPLE_COMM_VI_StartDev(SAMPLE_VI_INFO_S *pstViInfo)
stViDevAttr.stWDRAttr.enWDRMode = pstViInfo->stDevInfo.enWDRMode;
stViDevAttr.snrFps = (CVI_U32)pstPubAttr.f32FrameRate;
if (pstViInfo->stSnsInfo.u8MuxDev) {
stViDevAttr.isMux = true;
stViDevAttr.switchGpioPin = pstViInfo->stSnsInfo.s16SwitchGpio;
stViDevAttr.switchGPioPol = pstViInfo->stSnsInfo.u8SwitchPol;
}
s32Ret = CVI_VI_SetDevAttr(ViDev, &stViDevAttr);
if (s32Ret != CVI_SUCCESS) {
CVI_TRACE_LOG(CVI_DBG_ERR, "CVI_VI_SetDevAttr failed with %#x!\n", s32Ret);
@ -637,6 +654,7 @@ CVI_S32 SAMPLE_COMM_VI_StartViChn(SAMPLE_VI_CONFIG_S *pstViConfig)
pstSnsObj = (ISP_SNS_OBJ_S *)SAMPLE_COMM_ISP_GetSnsObj(u32SnsId);
SAMPLE_COMM_VI_GetChnAttrBySns(pstViConfig->astViInfo[i].stSnsInfo.enSnsType, &stChnAttr);
stChnAttr.enDynamicRange = pstViConfig->astViInfo[i].stChnInfo.enDynamicRange;
stChnAttr.enVideoFormat = pstViConfig->astViInfo[i].stChnInfo.enVideoFormat;
stChnAttr.enCompressMode = pstViConfig->astViInfo[i].stChnInfo.enCompressMode;
@ -709,6 +727,7 @@ CVI_S32 SAMPLE_COMM_VI_CreateIsp(SAMPLE_VI_CONFIG_S *pstViConfig)
CVI_S32 i;
CVI_S32 s32ViNum;
VI_PIPE ViPipe;
CVI_S32 s32Ret = CVI_SUCCESS;
SAMPLE_VI_INFO_S *pstViInfo = CVI_NULL;
@ -721,6 +740,7 @@ CVI_S32 SAMPLE_COMM_VI_CreateIsp(SAMPLE_VI_CONFIG_S *pstViConfig)
for (i = 0; i < pstViConfig->s32WorkingViNum; i++) {
s32ViNum = pstViConfig->as32WorkingViId[i];
pstViInfo = &pstViConfig->astViInfo[s32ViNum];
ViPipe = pstViInfo->stPipeInfo.aPipe[0];
s32Ret = SAMPLE_COMM_VI_StartIsp(pstViInfo);
if (s32Ret != CVI_SUCCESS) {
@ -742,7 +762,7 @@ CVI_S32 SAMPLE_COMM_VI_CreateIsp(SAMPLE_VI_CONFIG_S *pstViConfig)
}
#endif
s32Ret = SAMPLE_COMM_ISP_Run(s32ViNum);
s32Ret = SAMPLE_COMM_ISP_Run(ViPipe);
if (s32Ret != CVI_SUCCESS) {
CVI_TRACE_LOG(CVI_DBG_ERR, "ISP_Run failed with %#x!\n", s32Ret);
return s32Ret;
@ -1049,6 +1069,10 @@ CVI_S32 SAMPLE_COMM_VI_IniToViCfg(SAMPLE_INI_CFG_S *pstIniCfg, SAMPLE_VI_CONFIG_
pstIniCfg->s32SnsI2cAddr[s32WorkSnsId];
pstViConfig->astViInfo[s32WorkSnsId].stSnsInfo.u8HwSync = pstIniCfg->u8HwSync[s32WorkSnsId];
pstViConfig->astViInfo[s32WorkSnsId].stSnsInfo.u8Orien = pstIniCfg->u8Orien[s32WorkSnsId];
pstViConfig->astViInfo[s32WorkSnsId].stSnsInfo.u8MuxDev = pstIniCfg->u8MuxDev[s32WorkSnsId];
pstViConfig->astViInfo[s32WorkSnsId].stSnsInfo.s16SwitchGpio =
pstIniCfg->s16SwitchGpio[s32WorkSnsId];
pstViConfig->astViInfo[s32WorkSnsId].stSnsInfo.u8SwitchPol = pstIniCfg->u8SwitchPol[s32WorkSnsId];
pstViConfig->astViInfo[s32WorkSnsId].stSnsInfo.as16LaneId[0] =
pstIniCfg->as16LaneId[s32WorkSnsId][0];
pstViConfig->astViInfo[s32WorkSnsId].stSnsInfo.as16LaneId[1] =
@ -1071,14 +1095,25 @@ CVI_S32 SAMPLE_COMM_VI_IniToViCfg(SAMPLE_INI_CFG_S *pstIniCfg, SAMPLE_VI_CONFIG_
pstViConfig->astViInfo[s32WorkSnsId].stSnsInfo.as8PNSwap[4] =
pstIniCfg->as8PNSwap[s32WorkSnsId][4];
pstViConfig->astViInfo[s32WorkSnsId].stDevInfo.ViDev = s32WorkSnsId;
if (pstIniCfg->u8MuxDev[s32WorkSnsId] && pstIniCfg->u8AttachDev[s32WorkSnsId] > 0) {
pstViConfig->astViInfo[s32WorkSnsId].stDevInfo.ViDev =
pstIniCfg->u8AttachDev[s32WorkSnsId] + VI_MAX_PHY_DEV_NUM - 1;
pstViConfig->astViInfo[s32WorkSnsId].stPipeInfo.aPipe[0] =
pstIniCfg->u8AttachDev[s32WorkSnsId] + VI_MAX_PHY_DEV_NUM - 1;
} else {
pstViConfig->astViInfo[s32WorkSnsId].stDevInfo.ViDev = s32WorkSnsId;
pstViConfig->astViInfo[s32WorkSnsId].stPipeInfo.aPipe[0] = s32WorkSnsId;
}
pstViConfig->astViInfo[s32WorkSnsId].stDevInfo.enWDRMode = pstIniCfg->enWDRMode[s32WorkSnsId];
pstViConfig->astViInfo[s32WorkSnsId].stPipeInfo.enMastPipeMode = enMastPipeMode;
pstViConfig->astViInfo[s32WorkSnsId].stPipeInfo.aPipe[0] = s32WorkSnsId;
pstViConfig->astViInfo[s32WorkSnsId].stPipeInfo.aPipe[1] = -1;
pstViConfig->astViInfo[s32WorkSnsId].stPipeInfo.aPipe[2] = -1;
pstViConfig->astViInfo[s32WorkSnsId].stPipeInfo.aPipe[3] = -1;
pstViConfig->astViInfo[s32WorkSnsId].stPipeInfo.aPipe[4] = -1;
pstViConfig->astViInfo[s32WorkSnsId].stPipeInfo.aPipe[5] = -1;
pstViConfig->astViInfo[s32WorkSnsId].stChnInfo.ViChn = s32WorkSnsId;
pstViConfig->astViInfo[s32WorkSnsId].stChnInfo.enPixFormat = enPixFormat;