HI_S32 SAMPLE_COMM_AUDIO_StartAoEx(AUDIO_DEV AoDevId, AO_CHN AoChn, AIO_ATTR_S *pstAioAttr, AUDIO_RESAMPLE_ATTR_EX_S *pstAoReSmpAttr, AO_VQE3_CONFIG_S *pstAoVqe3Cfg) { HI_S32 s32Ret; s32Ret = HI_MPI_AO_SetPubAttr(AoDevId, pstAioAttr); if(HI_SUCCESS != s32Ret) { printf("%s: HI_MPI_AO_SetPubAttr(%d) failed with %#x!\n", __FUNCTION__, \ AoDevId,s32Ret); return HI_FAILURE; } s32Ret = HI_MPI_AO_Enable(AoDevId); if(HI_SUCCESS != s32Ret) { printf("%s: HI_MPI_AO_Enable(%d) failed with %#x!\n", __FUNCTION__, \ AoDevId, s32Ret); return HI_FAILURE; } s32Ret = HI_MPI_AO_EnableChn(AoDevId, AoChn); if(HI_SUCCESS != s32Ret) { printf("%s: HI_MPI_AO_EnableChn(%d) failed with %#x!\n", __FUNCTION__,\ AoChn, s32Ret); return HI_FAILURE; } if (NULL != pstAoReSmpAttr) { s32Ret = HI_MPI_AO_DisableReSmpEx(AoDevId, AoChn); s32Ret |= HI_MPI_AO_EnableReSmpEx(AoDevId, AoChn, pstAoReSmpAttr); if(HI_SUCCESS != s32Ret) { printf("%s: HI_MPI_AO_EnableReSmp(%d,%d) failed with %#x!\n", \ __FUNCTION__, AoDevId, AoChn, s32Ret); return HI_FAILURE; } } if (NULL != pstAoVqe3Cfg) { s32Ret = HI_MPI_AO_SetVqe3Attr(AoDevId, AoChn, pstAoVqe3Cfg); if (s32Ret) { printf("%s: HI_MPI_AO_SetVqe3Attr(%d,%d) failed with %#x\n", __FUNCTION__, AoDevId, AoChn, s32Ret); return s32Ret; } s32Ret = HI_MPI_AO_EnableVqe(AoDevId, AoChn); if (s32Ret) { printf("%s: HI_MPI_AO_EnableVqe(%d,%d) failed with %#x\n", __FUNCTION__, AoDevId, AoChn, s32Ret); return s32Ret; } } return HI_SUCCESS; }
HI_S32 unidoli_start_ao(AUDIO_DEV AoDevId, HI_S32 s32AoChnCnt, AIO_ATTR_S* pstAioAttr, HI_VOID* pstAoVqeAttr, HI_U32 u32AoVqeType) { HI_S32 i; HI_S32 s32Ret; s32Ret = HI_MPI_AO_SetPubAttr(AoDevId, pstAioAttr); if (HI_SUCCESS != s32Ret) { printf("%s: HI_MPI_AO_SetPubAttr(%d) failed with %#x!\n", __FUNCTION__, \ AoDevId, s32Ret); return HI_FAILURE; } s32Ret = HI_MPI_AO_Enable(AoDevId); if (HI_SUCCESS != s32Ret) { printf("%s: HI_MPI_AO_Enable(%d) failed with %#x!\n", __FUNCTION__, AoDevId, s32Ret); return HI_FAILURE; } for (i = 0; i < s32AoChnCnt; i++) { s32Ret = HI_MPI_AO_EnableChn(AoDevId, i/(pstAioAttr->enSoundmode + 1)); if (HI_SUCCESS != s32Ret) { printf("%s: HI_MPI_AO_EnableChn(%d) failed with %#x!\n", __FUNCTION__, i, s32Ret); return HI_FAILURE; } if (NULL != pstAoVqeAttr) { HI_BOOL bAoVqe = HI_TRUE; switch (u32AoVqeType) { case 0: s32Ret = HI_SUCCESS; bAoVqe = HI_FALSE; break; case 1: s32Ret = HI_MPI_AO_SetVqeAttr(AoDevId, i, (AO_VQE_CONFIG_S *)pstAoVqeAttr); break; default: s32Ret = HI_FAILURE; break; } if (s32Ret) { printf("%s: SetAoVqe%d(%d,%d) failed with %#x\n", __FUNCTION__, u32AoVqeType, AoDevId, i, s32Ret); return s32Ret; } if (bAoVqe) { s32Ret = HI_MPI_AO_EnableVqe(AoDevId, i); if (s32Ret) { printf("%s: HI_MPI_AI_EnableVqe(%d,%d) failed with %#x\n", __FUNCTION__, AoDevId, i, s32Ret); return s32Ret; } } } } return HI_SUCCESS; }
static int audio_vqe_start() { HI_S32 s32Ret; AI_VQE_CONFIG_S aiVqeConfig; memset(&aiVqeConfig, 0, sizeof(aiVqeConfig)); /* AI_VQE_CONFIG_S getAiVqeConfig; HI_S32 s32VolumeDb; */ aiVqeConfig.bHpfOpen = g_audio_args->vqe_cfg.hpr_enable; aiVqeConfig.bAnrOpen = g_audio_args->vqe_cfg.anr_enable; aiVqeConfig.bAgcOpen = 0; aiVqeConfig.bEqOpen = 0; aiVqeConfig.bAecOpen = 0; aiVqeConfig.bRnrOpen = g_audio_args->vqe_cfg.rnr_enable;; aiVqeConfig.bHdrOpen = 0; aiVqeConfig.s32WorkSampleRate = g_audio_args->audio.sampleRate; aiVqeConfig.s32FrameSample = g_audio_args->audio.ptNumPerFrm; aiVqeConfig.enWorkstate = VQE_WORKSTATE_NOISY; aiVqeConfig.stHpfCfg.bUsrMode = HI_TRUE; aiVqeConfig.stHpfCfg.enHpfFreq = (AUDIO_HPF_FREQ_E)g_audio_args->vqe_cfg.hpr_freq; aiVqeConfig.stAnrCfg.bUsrMode = HI_TRUE; aiVqeConfig.stAnrCfg.s16NrIntensity = g_audio_args->vqe_cfg.anr_intensity; aiVqeConfig.stAnrCfg.s16NoiseDbThr = g_audio_args->vqe_cfg.anr_noise_db_thr; aiVqeConfig.stAnrCfg.s8SpProSwitch = 0; aiVqeConfig.stRnrCfg.bUsrMode = HI_TRUE; aiVqeConfig.stRnrCfg.s32NrMode = g_audio_args->vqe_cfg.rnr_nr_mode; aiVqeConfig.stRnrCfg.s32MaxNrLevel = g_audio_args->vqe_cfg.rnr_max_nr_level; aiVqeConfig.stRnrCfg.s32NoiseThresh = g_audio_args->vqe_cfg.rnr_noise_thresh; s32Ret = HI_MPI_AI_SetVqeAttr(0, 0, 0, 0, &aiVqeConfig); CHECK(s32Ret == HI_SUCCESS, HI_FAILURE, "Error with %#x.\n", s32Ret); s32Ret = HI_MPI_AI_EnableVqe(0, 0); CHECK(s32Ret == HI_SUCCESS, HI_FAILURE, "Error with %#x.\n", s32Ret); AO_VQE_CONFIG_S aoVqeConfig; memset(&aoVqeConfig, 0, sizeof(aoVqeConfig)); aoVqeConfig.bHpfOpen = g_audio_args->vqe_cfg.hpr_enable; aoVqeConfig.bAnrOpen = g_audio_args->vqe_cfg.anr_enable; aoVqeConfig.bAgcOpen = 0; aoVqeConfig.bEqOpen = 0; aoVqeConfig.s32WorkSampleRate = g_audio_args->audio.sampleRate; aoVqeConfig.s32FrameSample = g_audio_args->audio.ptNumPerFrm; aoVqeConfig.enWorkstate = VQE_WORKSTATE_NOISY; aoVqeConfig.stHpfCfg.bUsrMode = HI_TRUE; aoVqeConfig.stHpfCfg.enHpfFreq = (AUDIO_HPF_FREQ_E)g_audio_args->vqe_cfg.hpr_freq; aoVqeConfig.stAnrCfg.bUsrMode = HI_TRUE; aoVqeConfig.stAnrCfg.s16NrIntensity = g_audio_args->vqe_cfg.anr_intensity; aoVqeConfig.stAnrCfg.s16NoiseDbThr = g_audio_args->vqe_cfg.anr_noise_db_thr; aoVqeConfig.stAnrCfg.s8SpProSwitch = 0; s32Ret = HI_MPI_AO_SetVqeAttr(0, 0, &aoVqeConfig); CHECK(s32Ret == HI_SUCCESS, HI_FAILURE, "Error with %#x.\n", s32Ret); s32Ret = HI_MPI_AO_EnableVqe(0, 0); CHECK(s32Ret == HI_SUCCESS, HI_FAILURE, "Error with %#x.\n", s32Ret); return s32Ret; }