Exemplo n.º 1
0
/******************************************************************************
* function : Start Ai
******************************************************************************/
HI_S32 unidoli_start_ai(AUDIO_DEV AiDevId, HI_S32 s32AiChnCnt, AIO_ATTR_S* pstAioAttr, HI_VOID* pstAiVqeAttr, HI_U32 u32AiVqeType)
{
    HI_S32 i;
    HI_S32 s32Ret;

    s32Ret = HI_MPI_AI_SetPubAttr(AiDevId, pstAioAttr);
    if (s32Ret)
    {
        printf("%s: HI_MPI_AI_SetPubAttr(%d) failed with %#x\n", __FUNCTION__, AiDevId, s32Ret);
        return s32Ret;
    }

    s32Ret = HI_MPI_AI_Enable(AiDevId);
    if (s32Ret)
    {
        printf("%s: HI_MPI_AI_Enable(%d) failed with %#x\n", __FUNCTION__, AiDevId, s32Ret);
        return s32Ret;
    }

    for (i = 0; i < s32AiChnCnt; i++)
    {
        s32Ret = HI_MPI_AI_EnableChn(AiDevId, i/(pstAioAttr->enSoundmode + 1));
        if (s32Ret)
        {
            printf("%s: HI_MPI_AI_EnableChn(%d,%d) failed with %#x\n", __FUNCTION__, AiDevId, i, s32Ret);
            return s32Ret;
        }

        if (NULL != pstAiVqeAttr)
        {
            HI_BOOL bAiVqe = HI_TRUE;
            switch (u32AiVqeType)
            {
                case 0:
                    s32Ret = HI_SUCCESS;
                    bAiVqe = HI_FALSE;
                    break;
                case 1:
                    s32Ret = HI_MPI_AI_SetTalkVqeAttr(AiDevId, i, SAMPLE_AUDIO_AO_DEV, i, (AI_TALKVQE_CONFIG_S *)pstAiVqeAttr);
                    break;
                default:
                    s32Ret = HI_FAILURE;
                    break;
            }
            if (s32Ret)
            {
                printf("%s: SetAiVqe%d(%d,%d) failed with %#x\n", __FUNCTION__, u32AiVqeType, AiDevId, i, s32Ret);
                return s32Ret;
            }
            if (bAiVqe)
            {
            s32Ret = HI_MPI_AI_EnableVqe(AiDevId, i);
            if (s32Ret)
            {
                printf("%s: HI_MPI_AI_EnableVqe(%d,%d) failed with %#x\n", __FUNCTION__, AiDevId, i, s32Ret);
                return s32Ret;
            }
        }
    }
    }
    
    return HI_SUCCESS;
}
Exemplo n.º 2
0
HI_S32 SAMPLE_COMM_AUDIO_StartAiEx(AUDIO_DEV AiDevId, HI_S32 s32AiChnCnt,
        AIO_ATTR_S *pstAioAttr, HI_BOOL bAnrEn, AUDIO_RESAMPLE_ATTR_EX_S *pstAiReSmpAttr,
        AI_VQE_CONFIG_S *pstAiVqeCfg, AI_VQE3_CONFIG_S *pstAiVqe3Cfg)
{
    HI_S32 i, s32Ret;

    s32Ret = HI_MPI_AI_SetPubAttr(AiDevId, pstAioAttr);
    if (s32Ret)
    {
        printf("%s: HI_MPI_AI_SetPubAttr(%d) failed with %#x\n", __FUNCTION__, AiDevId, s32Ret);
        return HI_FAILURE;
    }
    if (HI_MPI_AI_Enable(AiDevId))
    {
        printf("%s: HI_MPI_AI_Enable(%d) failed with %#x\n", __FUNCTION__, AiDevId, s32Ret);
        return HI_FAILURE;
    }
    for (i=0; i<s32AiChnCnt; i++)
    {


        if (HI_MPI_AI_EnableChn(AiDevId, i))
        {
            printf("%s: HI_MPI_AI_EnableChn(%d,%d) failed with %#x\n", __FUNCTION__,\
                    AiDevId, i, s32Ret);
            return HI_FAILURE;
        }


        if (HI_TRUE == bAnrEn)
        {
            if (HI_MPI_AI_EnableAnr(AiDevId, i))
            {
                printf("%s: HI_MPI_AI_EnableAnr(%d,%d) failed with %#x\n", __FUNCTION__,\
                    AiDevId, i, s32Ret);
                return HI_FAILURE;
            }
        }

        if (NULL != pstAiReSmpAttr)
        {
            if (HI_MPI_AI_EnableReSmpEx(AiDevId, i, pstAiReSmpAttr))
            {
                printf("%s: HI_MPI_AI_EnableReSmp(%d,%d) failed with %#x\n",\
                        __FUNCTION__, AiDevId, i, s32Ret);
                return HI_FAILURE;
            }
        }

        if (NULL != pstAiVqeCfg)
        {
            s32Ret = HI_MPI_AI_SetVqeAttr(AiDevId, i, AiDevId, i, pstAiVqeCfg);
            if (s32Ret)
            {
                printf("%s: HI_MPI_AI_SetVqeAttr(%d,%d) failed with %#x\n", __FUNCTION__, AiDevId, i, s32Ret);
                return s32Ret;
            }

            s32Ret = HI_MPI_AI_EnableVqe(AiDevId, i);
            if (s32Ret)
            {
                printf("%s: HI_MPI_AI_EnableVqe(%d,%d) failed with %#x\n", __FUNCTION__, AiDevId, i, s32Ret);
                return s32Ret;
            }
        }

        if (NULL != pstAiVqe3Cfg)
        {
            s32Ret = HI_MPI_AI_SetVqe3Attr(AiDevId, i, AiDevId, i, pstAiVqe3Cfg);
            if (s32Ret)
            {
                printf("%s: HI_MPI_AI_SetVqe3Attr(%d,%d) failed with %#x\n", __FUNCTION__, AiDevId, i, s32Ret);
                return s32Ret;
            }

            s32Ret = HI_MPI_AI_EnableVqe(AiDevId, i);
            if (s32Ret)
            {
                printf("%s: HI_MPI_AI_EnableVqe(%d,%d) failed with %#x\n", __FUNCTION__, AiDevId, i, s32Ret);
                return s32Ret;
            }
        }

    }
    return HI_SUCCESS;
}
Exemplo n.º 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;
}