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;
}
Example #2
0
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;
}
Example #3
0
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;
}