freertos: version release v4.1.4

[Audio][Feature]Remove log for VQE config function
[Audio][Feature]Add VQE config function

Change-Id: Ib0c06db87375b17429bb125fbcee73018bdb6910
This commit is contained in:
forum_service
2023-10-13 09:43:36 +08:00
committed by carbon
parent 446ba0b5f8
commit bf2d6014f8
10 changed files with 112 additions and 67 deletions

View File

@ -318,6 +318,8 @@ typedef struct _ISP_AWB_RESULT_S {
CVI_U8 u8Saturation[4];
ISP_AWB_RAW_STAT_ATTR_S stRawStatAttr;
CVI_BOOL bStable;
CVI_U8 u8AdjCASaturation;
CVI_U8 u8AdjCASatLuma;
} ISP_AWB_RESULT_S;
typedef struct _ISP_AWB_STAT_1_S {

View File

@ -869,7 +869,7 @@ typedef struct _ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S {
CVI_U8 u8Radius; /*RW; Range:[0x1, 0xFF]*/
} ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S;
struct ST_ISP_AWB_INTERFERNCE_S {
struct ST_ISP_AWB_INTERFERENCE_S {
CVI_U8 u8Mode; /*RW; Range:[0x0, 0x1]*/
CVI_U8 u8Limit; /*RW; Range:[0x32, 0x64]*/
CVI_U8 u8Radius; /*RW; Range:[0x1, 0xFF]*/
@ -976,12 +976,15 @@ typedef struct _ISP_AWB_ATTR_EX_S {
CVI_BOOL bMultiLightSourceEn;
ISP_AWB_MULTI_LS_TYPE_E enMultiLSType;
CVI_U16 u16MultiLSScaler; /*RW; Range:[0x0, 0x100]*/
CVI_U16 u16MultiLSThr; /*RW; Range:[0x20, 0x200]*/
CVI_U16 u16CALumaDiff; /*RW; Range:[0x0, 0x100]*/
CVI_U16 u16CAAdjustRatio; /*RW; Range:[0x0, 0x10]*/
CVI_U16 au16MultiCTBin[AWB_CT_BIN_NUM]; /*RW; Range:[0x0, 0xFFFF]*/
CVI_U16 au16MultiCTWt[AWB_CT_BIN_NUM]; /*RW; Range:[0x0, 0x400]*/
CVI_BOOL bFineTunEn;
CVI_U8 u8FineTunStrength;
//AWB Algo 6
struct ST_ISP_AWB_INTERFERNCE_S stInterfernce;
struct ST_ISP_AWB_INTERFERENCE_S stInterference;
struct ST_ISP_AWB_SKIN_S stSkin;
struct ST_ISP_AWB_SKY_S stSky;
struct ST_ISP_AWB_GRASS_S stGrass;
@ -989,7 +992,6 @@ typedef struct _ISP_AWB_ATTR_EX_S {
struct ST_ISP_AWB_SHIFT_LV_S stShiftLv;
struct ST_ISP_AWB_REGION_S stRegion;
CVI_U8 adjBgainMode;
CVI_U8 reserve[239];
} ISP_AWB_ATTR_EX_S;//keep size to 512 bytes
typedef struct _ISP_MWB_ATTR_S {

View File

@ -5,6 +5,7 @@
void *CviAud_Algo_Init(int s32FunctMask, void *param_info);
int CviAud_Algo_Process(void *pHandle, uint64_t mic_in,
uint64_t ref_in, uint64_t out, int iLength);
int CviAud_Algo_Fun_Config(void *pHandle, int u32OpenMask);
void CviAud_Algo_DeInit(void *pHandle);
void CviAud_Algo_GetVersion(char *pstrVersion);
#ifdef NEXT_SSP_ALGO

View File

@ -158,6 +158,7 @@ typedef struct _ssp_spk_data_rtos_ret {
#define CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK 0x0B
#define CVIAUDIO_RTOS_CMD_SSP_PROC_BLOCK 0x0C
#define CVIAUDIO_RTOS_CMD_SSP_DEINIT_BLOCK 0x0D
#define CVIAUDIO_RTOS_CMD_SSP_CONFIG_BLOCK 0x0E
#define CVIAUDIO_RTOS_CMD_SSP_MAX 0xFF

View File

@ -326,7 +326,26 @@ void *audio_ssp_init(void *para_obj, unsigned int sample_rate)
return (void *)pst3Ainfo;
}
int audio_ssp_fun_config(void *handle, int u32OpenMask)
{
struct st3AInfo *pst3Ainfo = (struct st3AInfo *)handle;
if (!pst3Ainfo) {
LOG_PRINTF("audio_ssp_process error.\n");
return -1;
}
if(!(pst3Ainfo && pst3Ainfo->bInitOk))
{
LOG_ERROR("audio_ssp_process error params.\n");
return -1;
}
pst3Ainfo->para_obj.para_fun_config = u32OpenMask;
printf("para_fun_config = %d\n", pst3Ainfo->para_obj.para_fun_config);
return 0;
}
int audio_ssp_process(void *handle, short *mic_in, short *ref_in, short *dataout, int iLength)
{

View File

@ -6,6 +6,7 @@
#define AEC_PRO_DATA_LEN (160)
//for uplink VQE(MIC in)
void *audio_ssp_init(void *para_obj, unsigned int sample_rate);
int audio_ssp_fun_config(void *handle, int u32OpenMask);
int audio_ssp_process(void *handle, short *mic_in, short *ref_in, short *dataout, int iLength);
int audio_ssp_deinit(void *handle);

View File

@ -204,6 +204,35 @@ int CviAud_Algo_Process(void *pHandle, uint64_t mic_in,
}
/**************************************************************************************
* Function: CviAud_Algo_Fun_Config
*
* Description: free platform-specific data allocated by CviAud_Algo_Init
*
* Inputs: instance pointer (pHandle)
* Outputs: none
*
* Return: CVI_SUCCESS / CVI_FAILURE
**************************************************************************************/
int CviAud_Algo_Fun_Config(void *pHandle, int u32OpenMask)
{
int ret = 0;
if (pHandle == NULL) {
printf("Null input [%s][%d]\n", __func__, __LINE__);
return -1;
}
ret = audio_ssp_fun_config(pHandle, u32OpenMask);
if (ret != 0) {
printf("audio_ssp_process error ret(%d).\n", ret);
return -1;
}
return ret;
}
/**************************************************************************************
* Function: CviAud_Algo_DeInit
*

View File

@ -165,7 +165,7 @@ void prvAudioRunTask(void *pvParameters)
#endif
cvi_audio_init_test();
printf("pAudioRunTask run Version:20220519\n");
aud_info("pAudioRunTask run Version:20220519\n");
xQueueAudioCmdqu = main_GetMODHandle(E_QUEUE_CMDQU);
xQueueAudio = main_GetMODHandle(E_QUEUE_AUDIO);
@ -514,10 +514,10 @@ void prvAudioRunTask(void *pvParameters)
aud_debug("[Rtos][%s][%d]....xxxxxxxcounter[%d]\n", __func__, __LINE__, counter);
aud_debug("[Rtos]keep waiting....\n");
} else {
//printf("[Rtos][%s][%d]index[%d]not full\n", __func__, __LINE__, index);
//aud_info("[Rtos][%s][%d]index[%d]not full\n", __func__, __LINE__, index);
//count += 1;
//if (count % 1000000 == 0) {
// printf("[Rtos][%s][%d]out count[%d]index[%d]\n", __func__, __LINE__, count, index);
// aud_info("[Rtos][%s][%d]out count[%d]index[%d]\n", __func__, __LINE__, count, index);
//}
}
bCheck_input_full = 1; //reset the check flag
@ -550,14 +550,14 @@ void prvAudioRunTask(void *pvParameters)
_pstVqeConfig = (AI_TALKVQE_CONFIG_S_RTOS *)pstAudBlockMailBox->AinVqeCfgPhy;
inv_dcache_range((uintptr_t)_pstVqeConfig, sizeof(AI_TALKVQE_CONFIG_S_RTOS));
printf("SSP_INIT dump-----------------------------------------------------\n");
printf("para_client_config[%d]\n", _pstVqeConfig->para_client_config);
printf("u32OpenMask[0x%x]\n", _pstVqeConfig->u32OpenMask);
printf("s32WorkSampleRate[%d]\n", _pstVqeConfig->s32WorkSampleRate);
printf("stAecCfg.para_aec_filter_len[%d]\n", _pstVqeConfig->stAecCfg.para_aec_filter_len);
printf("stAecCfg.para_aes_std_thrd[%d]\n", _pstVqeConfig->stAecCfg.para_aes_std_thrd);
printf("stAecCfg.para_aes_supp_coeff[%d]\n", _pstVqeConfig->stAecCfg.para_aes_supp_coeff);
printf("SSP_INIT dump-----------------------------------------------------[end]\n");
aud_info("SSP_INIT dump-----------------------------------------------------\n");
aud_info("para_client_config[%d]\n", _pstVqeConfig->para_client_config);
aud_info("u32OpenMask[0x%x]\n", _pstVqeConfig->u32OpenMask);
aud_info("s32WorkSampleRate[%d]\n", _pstVqeConfig->s32WorkSampleRate);
aud_info("stAecCfg.para_aec_filter_len[%d]\n", _pstVqeConfig->stAecCfg.para_aec_filter_len);
aud_info("stAecCfg.para_aes_std_thrd[%d]\n", _pstVqeConfig->stAecCfg.para_aes_std_thrd);
aud_info("stAecCfg.para_aes_supp_coeff[%d]\n", _pstVqeConfig->stAecCfg.para_aes_supp_coeff);
aud_info("SSP_INIT dump-----------------------------------------------------[end]\n");
AI_TALKVQE_CONFIG_S VqeConfig;
AI_TALKVQE_CONFIG_S *pVqeConfigSsp = &VqeConfig;
@ -595,6 +595,39 @@ void prvAudioRunTask(void *pvParameters)
} else
aud_error("warning paudio_ssp_blcok not Null..\n");
xQueueSend(xQueueAudioCmdqu, &rtos_cmdq, 0U);
}
break;
case CVIAUDIO_RTOS_CMD_SSP_CONFIG_BLOCK:
{
aud_info("CVIAUDIO_RTOS_CMD_SSP_CONFIG_BLOCK\n");
ST_CVIAUDIO_MAILBOX_BLOCK *pstAudBlockMailBox =
(ST_CVIAUDIO_MAILBOX_BLOCK *)rtos_cmdq.param_ptr;
AI_TALKVQE_CONFIG_S_RTOS *_pstVqeConfig = NULL;
inv_dcache_range((uintptr_t)pstAudBlockMailBox, sizeof(ST_CVIAUDIO_MAILBOX_BLOCK));
aud_debug("CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK phy[0x%x]\n", rtos_cmdq.param_ptr);
if (pstAudBlockMailBox->u64RevMask != CVIAUDIO_RTOS_MAGIC_WORD_USERSPACE_BLOCK_MODE) {
aud_error("[CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK]magic word mismatch[0x%lx]\n",
pstAudBlockMailBox->u64RevMask);
rtos_cmdq.param_ptr = CVIAUDIO_RTOS_BLOCK_MODE_FAILURE_FLAG;
clean_dcache_range((uintptr_t)pstAudBlockMailBox, sizeof(ST_CVIAUDIO_MAILBOX_BLOCK));
xQueueSend(xQueueAudioCmdqu, &rtos_cmdq, 0U);
break;
} else
aud_debug("CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK magic word matched\n");
_pstVqeConfig = (AI_TALKVQE_CONFIG_S_RTOS *)pstAudBlockMailBox->AinVqeCfgPhy;
inv_dcache_range((uintptr_t)_pstVqeConfig, sizeof(AI_TALKVQE_CONFIG_S_RTOS));
aud_debug("u32OpenMask[0x%x]\n", _pstVqeConfig->u32OpenMask);
if (paudio_ssp_block != NULL) {
CviAud_Algo_Fun_Config(paudio_ssp_block, _pstVqeConfig->u32OpenMask);
aud_info("CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK init success!!\n");
} else
aud_error("warning paudio_ssp_blcok not Null..\n");
xQueueSend(xQueueAudioCmdqu, &rtos_cmdq, 0U);
}
break;
@ -656,7 +689,7 @@ void prvAudioRunTask(void *pvParameters)
xTimer3AProcEnd = xTaskGetTickCount();
total_diff += xTimer3AProcEnd - xTimer3AProcStart;
if (frame_count == 8000/CVIAUDIO_BASIC_AEC_LENGTH*3) {
printf("total_diff = %ld, cpu = %ld, portTICK_PERIOD_MS=%d\n",
aud_info("total_diff = %ld, cpu = %ld, portTICK_PERIOD_MS=%d\n",
total_diff,
total_diff*portTICK_PERIOD_MS/30,
portTICK_PERIOD_MS);
@ -666,7 +699,7 @@ void prvAudioRunTask(void *pvParameters)
#endif
}
//pvincent = (short *)pstBlockFrm->output_addr;
//printf("CVIAUDIO_RTOS_CMD_SSP_PROC_BLOCK---success[0x%x][0x%x][0x%x]\n", pvincent[0], pvincent[1], pvincent[2]);
//aud_info("CVIAUDIO_RTOS_CMD_SSP_PROC_BLOCK---success[0x%x][0x%x][0x%x]\n", pvincent[0], pvincent[1], pvincent[2]);
clean_dcache_range((uintptr_t)pstBlockFrm, sizeof(ST_CVIAUDIO_BLOCK_FRAME));
clean_dcache_range((uintptr_t)pstBlockFrm->mic_in_addr, 1280);
clean_dcache_range((uintptr_t)pstBlockFrm->output_addr, 1280);

View File

@ -32,7 +32,7 @@ void prvRGNRunTask(void *pvParameters)
(void)pvParameters;
cmdqu_t rtos_cmdq;
int i, j, delta_x, delta_y;
int i;
void *pvAddr = NULL;
unsigned char obj_num = 0, line_num = 0;
int bs_size, status;
@ -40,7 +40,6 @@ void prvRGNRunTask(void *pvParameters)
RGN_CMPR_OBJ_ATTR_S *obj_attr = NULL;
OSDC_Canvas_Attr_S canvas;
OSDC_DRAW_OBJ_S *obj_vec = NULL;
RGN_LINE_ATTR_S *line_attr = NULL;
rgn_printf("%s run\n", __func__);
xQueueRGN = main_GetMODHandle(E_QUEUE_RGN);
@ -84,13 +83,6 @@ void prvRGNRunTask(void *pvParameters)
goto WRONG_CMD_IP_ID;
}
line_attr = (RGN_LINE_ATTR_S *)pvPortMalloc((obj_num ? obj_num : 1) * sizeof(RGN_LINE_ATTR_S));
if (line_attr == NULL) {
rgn_printf("(%s) malloc failed!\n", __func__);
vPortFree(obj_vec);
goto WRONG_CMD_IP_ID;
}
obj_attr = (RGN_CMPR_OBJ_ATTR_S *)((CVI_U8 *)rtos_cmdq.param_ptr + sizeof(RGN_CANVAS_CMPR_ATTR_S));
if (obj_num) {
for (i = 0; i < obj_num; ++i) {
@ -102,7 +94,6 @@ void prvRGNRunTask(void *pvParameters)
obj_attr[i].stLine.stPointEnd.s32Y,
obj_attr[i].stLine.u32Thick,
obj_attr[i].stLine.u32Color);
line_attr[line_num] = obj_attr[i].stLine;
line_num++;
} else if (obj_attr[i].enObjType == RGN_CMPR_RECT) {
rgn_printf("xywh(%d %d %d %d) Thick(%d) Color(0x%x) is_fill(%d)\n",
@ -124,51 +115,18 @@ void prvRGNRunTask(void *pvParameters)
}
}
// workaroud to fix draw line issue for now
j = 0;
while (j++ < 5) {
for (i = 0; i < line_num; ++i) {
delta_x = abs(line_attr[i].stPointStart.s32X - line_attr[i].stPointEnd.s32X);
delta_y = abs(line_attr[i].stPointStart.s32Y - line_attr[i].stPointEnd.s32Y);
if (delta_y < line_attr[i].u32Thick) {
if (i < line_num - 1) {
line_attr[i + 1].stPointStart.s32Y = line_attr[i].stPointEnd.s32Y
= line_attr[i].stPointStart.s32Y;
} else {
line_attr[0].stPointStart.s32Y = line_attr[i].stPointEnd.s32Y
= line_attr[i].stPointStart.s32Y;
}
}
if (delta_x < line_attr[i].u32Thick) {
if (i < line_num - 1) {
line_attr[i + 1].stPointStart.s32X = line_attr[i].stPointEnd.s32X
= line_attr[i].stPointStart.s32X;
} else {
line_attr[0].stPointStart.s32X = line_attr[i].stPointEnd.s32X
= line_attr[i].stPointStart.s32X;
}
}
}
delta_x = abs(line_attr[0].stPointStart.s32X - line_attr[0].stPointEnd.s32X);
delta_y = abs(line_attr[0].stPointStart.s32Y - line_attr[0].stPointEnd.s32Y);
if ((delta_x > line_attr[0].u32Thick || delta_x == 0) &&
(delta_y > line_attr[0].u32Thick || delta_y == 0))
break;
}
if (obj_num) {
for (i = 0, j = 0; i < obj_num; ++i) {
for (i = 0; i < obj_num; ++i) {
if (obj_attr[i].enObjType == RGN_CMPR_LINE) {
CVI_OSDC_SetLineObjAttr(
&canvas,
&obj_vec[i],
line_attr[j].u32Color,
line_attr[j].stPointStart.s32X,
line_attr[j].stPointStart.s32Y,
line_attr[j].stPointEnd.s32X,
line_attr[j].stPointEnd.s32Y,
line_attr[j].u32Thick);
j++;
obj_attr[i].stLine.u32Color,
obj_attr[i].stLine.stPointStart.s32X,
obj_attr[i].stLine.stPointStart.s32Y,
obj_attr[i].stLine.stPointEnd.s32X,
obj_attr[i].stLine.stPointEnd.s32Y,
obj_attr[i].stLine.u32Thick);
} else if (obj_attr[i].enObjType == RGN_CMPR_RECT) {
CVI_OSDC_SetRectObjAttr(
&canvas,
@ -256,7 +214,6 @@ void prvRGNRunTask(void *pvParameters)
rgn_printf("%s rtos_cmdq.cmd_id(%d)!\n", __func__, rtos_cmdq.cmd_id);
break;
}
vPortFree(line_attr);
vPortFree(obj_vec);
WRONG_CMD_IP_ID: