美文网首页
FAQ-MT6250基线关机有pop音

FAQ-MT6250基线关机有pop音

作者: 体感互动 | 来源:发表于2019-06-17 14:42 被阅读0次

    MT6250基线关机有pop音,之前MT6250D有出现过,解决方法是将afe_def.h文件的__AFE_PA_DELAY_OFF__定义为1,能够解决。而MT6250按此方法处理后,能将pop音消除,但录音机录音后,立刻播放会死机。

    [Solution]

    分析过程:因为是播放声音的末尾有pop音,采用提前关PA的方法,这个方法在较多平台经常使用,如MT6236,MT6253,MT6252等。

    AFE_TurnOffSpeaker函数修改如下:

    void AFE_TurnOffSpeaker( kal_uint8 aud_func )

    {

    kal_uint32 savedMask;

    stack_print("AFE_TurnOffSpeaker v1-afe_common.c line 2872-2");

    savedMask = SaveAndSetIRQMask(); /* Disable interrupt to prevent race

    condition */

    afe.sp_flag &= ~(1<<aud_func);

    RestoreIRQMask(savedMask);

    if( !afe.gpio_lock && (afe.aud[aud_func].out_dev & L1SP_BUFFER_EXT)) {

    AFE_SwitchExtAmplifier( false );

    kal_sleep_task(1);

    afe.ext_op_on = KAL_FALSE;

    }

    AFE_SetRefresh();

    L1Audio_Msg_AFE_TurnSpk( L1AUDIO_Str_onoff(0), L1AUDIO_Func_Name(aud_func)

    );

    }

    但经试验会出现通话时,对方听不到我们手机的声音,或者对方说话,我们听不到了,免提可以听到.

    考虑到若是再去分析通话的问题,会比较发散。于是从__AFE_PA_DELAY_OFF__定义为1,引发死机问题着手。仍将__AFE_PA_DELAY_OFF__定义为1,但录音机录音后,立刻播放会死机,抓memory dump分析。

    AFE_Stop_and_Wait_DelayOff中kal_sleep_task,MMI (等待事件<aud_even:0x1>,一直等不到,导致MMI的外部消息队列满。

    作如下修改后,问题解决。http://bbs.16rd.com/thread-476848-1-1.html

    void AFE_Stop_and_Wait_DelayOff(kal_uint8 aud_func, kal_uint32 asp_fs)

    {

    #if __AFE_AudVoice_SingleClkSrc__

    #if defined(MT6250)

    kal_uint32 savedMask;

    kal_bool stop_and_wait = KAL_FALSE;

    kal_bool in_delayoff = KAL_FALSE;

    savedMask = SaveAndSetIRQMask();

    if(AFE_IsInDelayOff() )

    in_delayoff = KAL_TRUE;

    RestoreIRQMask(savedMask);

    switch(aud_func)

    {

    case L1SP_SPEECH:

    case L1SP_SND_EFFECT:

    case L1SP_VOICE:

    if( in_delayoff )

    {

    stop_and_wait = KAL_TRUE;

    if(*AFE_VMCU_CON&0x0001)

    AFE_TurnOff8K();

    if(*AFE_AMCU_CON0&0x0001)

    AFE_TurnOffAudioClock();

    }

    break;

    case L1SP_AUDIO:

    if( (!AFE_IsKaraok()) && (*AFE_VMCU_CON&0x0001) )

    {

    AFE_TurnOff8K();

    stop_and_wait = KAL_TRUE;

    }

    else if(in_delayoff)

    {

    if( AFE_IsKaraok() )

    stop_and_wait = KAL_TRUE;

    else if(afe.die2die_status == AFE_DIE2DIE_UPLINK)

    stop_and_wait = KAL_TRUE;

    else if( (afe.die2die_status == AFE_DIE2DIE_DOWNLINK) && (afe.audio_fs != asp_fs) )

    stop_and_wait = KAL_TRUE;

    }

    break;

    case L1SP_KEYTONE:

    case L1SP_TONE:

    if( (afe.die2die_status == AFE_DIE2DIE_DOWNLINK) && in_delayoff )

    -à 修改为: if( (afe.die2die_status == AFE_DIE2DIE_DOWNLINK) && (in_delayoff) &&

    (AM_IsAudioPlaybackOn() == -1) )

    stop_and_wait = KAL_TRUE;

    break;

    }

    if(stop_and_wait)

    {

    AFE_Disable_IdleOffDelay();

    while(afe.audio_clk_ena||afe.voice_clk_ena)

    kal_sleep_task(1);

    }

    #endif

    #else

    return;

    #endif

    }

    相关文章

      网友评论

          本文标题:FAQ-MT6250基线关机有pop音

          本文链接:https://www.haomeiwen.com/subject/pauafctx.html