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:
@ -318,6 +318,8 @@ typedef struct _ISP_AWB_RESULT_S {
|
|||||||
CVI_U8 u8Saturation[4];
|
CVI_U8 u8Saturation[4];
|
||||||
ISP_AWB_RAW_STAT_ATTR_S stRawStatAttr;
|
ISP_AWB_RAW_STAT_ATTR_S stRawStatAttr;
|
||||||
CVI_BOOL bStable;
|
CVI_BOOL bStable;
|
||||||
|
CVI_U8 u8AdjCASaturation;
|
||||||
|
CVI_U8 u8AdjCASatLuma;
|
||||||
} ISP_AWB_RESULT_S;
|
} ISP_AWB_RESULT_S;
|
||||||
|
|
||||||
typedef struct _ISP_AWB_STAT_1_S {
|
typedef struct _ISP_AWB_STAT_1_S {
|
||||||
|
|||||||
@ -869,7 +869,7 @@ typedef struct _ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S {
|
|||||||
CVI_U8 u8Radius; /*RW; Range:[0x1, 0xFF]*/
|
CVI_U8 u8Radius; /*RW; Range:[0x1, 0xFF]*/
|
||||||
} ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S;
|
} 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 u8Mode; /*RW; Range:[0x0, 0x1]*/
|
||||||
CVI_U8 u8Limit; /*RW; Range:[0x32, 0x64]*/
|
CVI_U8 u8Limit; /*RW; Range:[0x32, 0x64]*/
|
||||||
CVI_U8 u8Radius; /*RW; Range:[0x1, 0xFF]*/
|
CVI_U8 u8Radius; /*RW; Range:[0x1, 0xFF]*/
|
||||||
@ -976,12 +976,15 @@ typedef struct _ISP_AWB_ATTR_EX_S {
|
|||||||
CVI_BOOL bMultiLightSourceEn;
|
CVI_BOOL bMultiLightSourceEn;
|
||||||
ISP_AWB_MULTI_LS_TYPE_E enMultiLSType;
|
ISP_AWB_MULTI_LS_TYPE_E enMultiLSType;
|
||||||
CVI_U16 u16MultiLSScaler; /*RW; Range:[0x0, 0x100]*/
|
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 au16MultiCTBin[AWB_CT_BIN_NUM]; /*RW; Range:[0x0, 0xFFFF]*/
|
||||||
CVI_U16 au16MultiCTWt[AWB_CT_BIN_NUM]; /*RW; Range:[0x0, 0x400]*/
|
CVI_U16 au16MultiCTWt[AWB_CT_BIN_NUM]; /*RW; Range:[0x0, 0x400]*/
|
||||||
CVI_BOOL bFineTunEn;
|
CVI_BOOL bFineTunEn;
|
||||||
CVI_U8 u8FineTunStrength;
|
CVI_U8 u8FineTunStrength;
|
||||||
//AWB Algo 6
|
//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_SKIN_S stSkin;
|
||||||
struct ST_ISP_AWB_SKY_S stSky;
|
struct ST_ISP_AWB_SKY_S stSky;
|
||||||
struct ST_ISP_AWB_GRASS_S stGrass;
|
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_SHIFT_LV_S stShiftLv;
|
||||||
struct ST_ISP_AWB_REGION_S stRegion;
|
struct ST_ISP_AWB_REGION_S stRegion;
|
||||||
CVI_U8 adjBgainMode;
|
CVI_U8 adjBgainMode;
|
||||||
CVI_U8 reserve[239];
|
|
||||||
} ISP_AWB_ATTR_EX_S;//keep size to 512 bytes
|
} ISP_AWB_ATTR_EX_S;//keep size to 512 bytes
|
||||||
|
|
||||||
typedef struct _ISP_MWB_ATTR_S {
|
typedef struct _ISP_MWB_ATTR_S {
|
||||||
|
|||||||
Binary file not shown.
@ -5,6 +5,7 @@
|
|||||||
void *CviAud_Algo_Init(int s32FunctMask, void *param_info);
|
void *CviAud_Algo_Init(int s32FunctMask, void *param_info);
|
||||||
int CviAud_Algo_Process(void *pHandle, uint64_t mic_in,
|
int CviAud_Algo_Process(void *pHandle, uint64_t mic_in,
|
||||||
uint64_t ref_in, uint64_t out, int iLength);
|
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_DeInit(void *pHandle);
|
||||||
void CviAud_Algo_GetVersion(char *pstrVersion);
|
void CviAud_Algo_GetVersion(char *pstrVersion);
|
||||||
#ifdef NEXT_SSP_ALGO
|
#ifdef NEXT_SSP_ALGO
|
||||||
|
|||||||
@ -158,6 +158,7 @@ typedef struct _ssp_spk_data_rtos_ret {
|
|||||||
#define CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK 0x0B
|
#define CVIAUDIO_RTOS_CMD_SSP_INIT_BLOCK 0x0B
|
||||||
#define CVIAUDIO_RTOS_CMD_SSP_PROC_BLOCK 0x0C
|
#define CVIAUDIO_RTOS_CMD_SSP_PROC_BLOCK 0x0C
|
||||||
#define CVIAUDIO_RTOS_CMD_SSP_DEINIT_BLOCK 0x0D
|
#define CVIAUDIO_RTOS_CMD_SSP_DEINIT_BLOCK 0x0D
|
||||||
|
#define CVIAUDIO_RTOS_CMD_SSP_CONFIG_BLOCK 0x0E
|
||||||
|
|
||||||
#define CVIAUDIO_RTOS_CMD_SSP_MAX 0xFF
|
#define CVIAUDIO_RTOS_CMD_SSP_MAX 0xFF
|
||||||
|
|
||||||
|
|||||||
@ -326,7 +326,26 @@ void *audio_ssp_init(void *para_obj, unsigned int sample_rate)
|
|||||||
return (void *)pst3Ainfo;
|
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)
|
int audio_ssp_process(void *handle, short *mic_in, short *ref_in, short *dataout, int iLength)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
#define AEC_PRO_DATA_LEN (160)
|
#define AEC_PRO_DATA_LEN (160)
|
||||||
//for uplink VQE(MIC in)
|
//for uplink VQE(MIC in)
|
||||||
void *audio_ssp_init(void *para_obj, unsigned int sample_rate);
|
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_process(void *handle, short *mic_in, short *ref_in, short *dataout, int iLength);
|
||||||
int audio_ssp_deinit(void *handle);
|
int audio_ssp_deinit(void *handle);
|
||||||
|
|
||||||
|
|||||||
@ -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
|
* Function: CviAud_Algo_DeInit
|
||||||
*
|
*
|
||||||
|
|||||||
@ -165,7 +165,7 @@ void prvAudioRunTask(void *pvParameters)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
cvi_audio_init_test();
|
cvi_audio_init_test();
|
||||||
printf("pAudioRunTask run Version:20220519\n");
|
aud_info("pAudioRunTask run Version:20220519\n");
|
||||||
|
|
||||||
xQueueAudioCmdqu = main_GetMODHandle(E_QUEUE_CMDQU);
|
xQueueAudioCmdqu = main_GetMODHandle(E_QUEUE_CMDQU);
|
||||||
xQueueAudio = main_GetMODHandle(E_QUEUE_AUDIO);
|
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][%s][%d]....xxxxxxxcounter[%d]\n", __func__, __LINE__, counter);
|
||||||
aud_debug("[Rtos]keep waiting....\n");
|
aud_debug("[Rtos]keep waiting....\n");
|
||||||
} else {
|
} 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;
|
//count += 1;
|
||||||
//if (count % 1000000 == 0) {
|
//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
|
bCheck_input_full = 1; //reset the check flag
|
||||||
@ -550,14 +550,14 @@ void prvAudioRunTask(void *pvParameters)
|
|||||||
_pstVqeConfig = (AI_TALKVQE_CONFIG_S_RTOS *)pstAudBlockMailBox->AinVqeCfgPhy;
|
_pstVqeConfig = (AI_TALKVQE_CONFIG_S_RTOS *)pstAudBlockMailBox->AinVqeCfgPhy;
|
||||||
inv_dcache_range((uintptr_t)_pstVqeConfig, sizeof(AI_TALKVQE_CONFIG_S_RTOS));
|
inv_dcache_range((uintptr_t)_pstVqeConfig, sizeof(AI_TALKVQE_CONFIG_S_RTOS));
|
||||||
|
|
||||||
printf("SSP_INIT dump-----------------------------------------------------\n");
|
aud_info("SSP_INIT dump-----------------------------------------------------\n");
|
||||||
printf("para_client_config[%d]\n", _pstVqeConfig->para_client_config);
|
aud_info("para_client_config[%d]\n", _pstVqeConfig->para_client_config);
|
||||||
printf("u32OpenMask[0x%x]\n", _pstVqeConfig->u32OpenMask);
|
aud_info("u32OpenMask[0x%x]\n", _pstVqeConfig->u32OpenMask);
|
||||||
printf("s32WorkSampleRate[%d]\n", _pstVqeConfig->s32WorkSampleRate);
|
aud_info("s32WorkSampleRate[%d]\n", _pstVqeConfig->s32WorkSampleRate);
|
||||||
printf("stAecCfg.para_aec_filter_len[%d]\n", _pstVqeConfig->stAecCfg.para_aec_filter_len);
|
aud_info("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);
|
aud_info("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);
|
aud_info("stAecCfg.para_aes_supp_coeff[%d]\n", _pstVqeConfig->stAecCfg.para_aes_supp_coeff);
|
||||||
printf("SSP_INIT dump-----------------------------------------------------[end]\n");
|
aud_info("SSP_INIT dump-----------------------------------------------------[end]\n");
|
||||||
|
|
||||||
AI_TALKVQE_CONFIG_S VqeConfig;
|
AI_TALKVQE_CONFIG_S VqeConfig;
|
||||||
AI_TALKVQE_CONFIG_S *pVqeConfigSsp = &VqeConfig;
|
AI_TALKVQE_CONFIG_S *pVqeConfigSsp = &VqeConfig;
|
||||||
@ -595,6 +595,39 @@ void prvAudioRunTask(void *pvParameters)
|
|||||||
} else
|
} else
|
||||||
aud_error("warning paudio_ssp_blcok not Null..\n");
|
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);
|
xQueueSend(xQueueAudioCmdqu, &rtos_cmdq, 0U);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -656,7 +689,7 @@ void prvAudioRunTask(void *pvParameters)
|
|||||||
xTimer3AProcEnd = xTaskGetTickCount();
|
xTimer3AProcEnd = xTaskGetTickCount();
|
||||||
total_diff += xTimer3AProcEnd - xTimer3AProcStart;
|
total_diff += xTimer3AProcEnd - xTimer3AProcStart;
|
||||||
if (frame_count == 8000/CVIAUDIO_BASIC_AEC_LENGTH*3) {
|
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,
|
||||||
total_diff*portTICK_PERIOD_MS/30,
|
total_diff*portTICK_PERIOD_MS/30,
|
||||||
portTICK_PERIOD_MS);
|
portTICK_PERIOD_MS);
|
||||||
@ -666,7 +699,7 @@ void prvAudioRunTask(void *pvParameters)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
//pvincent = (short *)pstBlockFrm->output_addr;
|
//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, sizeof(ST_CVIAUDIO_BLOCK_FRAME));
|
||||||
clean_dcache_range((uintptr_t)pstBlockFrm->mic_in_addr, 1280);
|
clean_dcache_range((uintptr_t)pstBlockFrm->mic_in_addr, 1280);
|
||||||
clean_dcache_range((uintptr_t)pstBlockFrm->output_addr, 1280);
|
clean_dcache_range((uintptr_t)pstBlockFrm->output_addr, 1280);
|
||||||
|
|||||||
@ -32,7 +32,7 @@ void prvRGNRunTask(void *pvParameters)
|
|||||||
(void)pvParameters;
|
(void)pvParameters;
|
||||||
cmdqu_t rtos_cmdq;
|
cmdqu_t rtos_cmdq;
|
||||||
|
|
||||||
int i, j, delta_x, delta_y;
|
int i;
|
||||||
void *pvAddr = NULL;
|
void *pvAddr = NULL;
|
||||||
unsigned char obj_num = 0, line_num = 0;
|
unsigned char obj_num = 0, line_num = 0;
|
||||||
int bs_size, status;
|
int bs_size, status;
|
||||||
@ -40,7 +40,6 @@ void prvRGNRunTask(void *pvParameters)
|
|||||||
RGN_CMPR_OBJ_ATTR_S *obj_attr = NULL;
|
RGN_CMPR_OBJ_ATTR_S *obj_attr = NULL;
|
||||||
OSDC_Canvas_Attr_S canvas;
|
OSDC_Canvas_Attr_S canvas;
|
||||||
OSDC_DRAW_OBJ_S *obj_vec = NULL;
|
OSDC_DRAW_OBJ_S *obj_vec = NULL;
|
||||||
RGN_LINE_ATTR_S *line_attr = NULL;
|
|
||||||
|
|
||||||
rgn_printf("%s run\n", __func__);
|
rgn_printf("%s run\n", __func__);
|
||||||
xQueueRGN = main_GetMODHandle(E_QUEUE_RGN);
|
xQueueRGN = main_GetMODHandle(E_QUEUE_RGN);
|
||||||
@ -84,13 +83,6 @@ void prvRGNRunTask(void *pvParameters)
|
|||||||
goto WRONG_CMD_IP_ID;
|
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));
|
obj_attr = (RGN_CMPR_OBJ_ATTR_S *)((CVI_U8 *)rtos_cmdq.param_ptr + sizeof(RGN_CANVAS_CMPR_ATTR_S));
|
||||||
if (obj_num) {
|
if (obj_num) {
|
||||||
for (i = 0; i < obj_num; ++i) {
|
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.stPointEnd.s32Y,
|
||||||
obj_attr[i].stLine.u32Thick,
|
obj_attr[i].stLine.u32Thick,
|
||||||
obj_attr[i].stLine.u32Color);
|
obj_attr[i].stLine.u32Color);
|
||||||
line_attr[line_num] = obj_attr[i].stLine;
|
|
||||||
line_num++;
|
line_num++;
|
||||||
} else if (obj_attr[i].enObjType == RGN_CMPR_RECT) {
|
} 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",
|
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) {
|
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) {
|
if (obj_attr[i].enObjType == RGN_CMPR_LINE) {
|
||||||
CVI_OSDC_SetLineObjAttr(
|
CVI_OSDC_SetLineObjAttr(
|
||||||
&canvas,
|
&canvas,
|
||||||
&obj_vec[i],
|
&obj_vec[i],
|
||||||
line_attr[j].u32Color,
|
obj_attr[i].stLine.u32Color,
|
||||||
line_attr[j].stPointStart.s32X,
|
obj_attr[i].stLine.stPointStart.s32X,
|
||||||
line_attr[j].stPointStart.s32Y,
|
obj_attr[i].stLine.stPointStart.s32Y,
|
||||||
line_attr[j].stPointEnd.s32X,
|
obj_attr[i].stLine.stPointEnd.s32X,
|
||||||
line_attr[j].stPointEnd.s32Y,
|
obj_attr[i].stLine.stPointEnd.s32Y,
|
||||||
line_attr[j].u32Thick);
|
obj_attr[i].stLine.u32Thick);
|
||||||
j++;
|
|
||||||
} else if (obj_attr[i].enObjType == RGN_CMPR_RECT) {
|
} else if (obj_attr[i].enObjType == RGN_CMPR_RECT) {
|
||||||
CVI_OSDC_SetRectObjAttr(
|
CVI_OSDC_SetRectObjAttr(
|
||||||
&canvas,
|
&canvas,
|
||||||
@ -256,7 +214,6 @@ void prvRGNRunTask(void *pvParameters)
|
|||||||
rgn_printf("%s rtos_cmdq.cmd_id(%d)!\n", __func__, rtos_cmdq.cmd_id);
|
rgn_printf("%s rtos_cmdq.cmd_id(%d)!\n", __func__, rtos_cmdq.cmd_id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
vPortFree(line_attr);
|
|
||||||
vPortFree(obj_vec);
|
vPortFree(obj_vec);
|
||||||
|
|
||||||
WRONG_CMD_IP_ID:
|
WRONG_CMD_IP_ID:
|
||||||
|
|||||||
Reference in New Issue
Block a user