MTK 铃声音量每级增益值修改为使用Audio player 16级增益值的方法

声音通道简化后如下图,软件有两个控制音量的寄存器可以设置

 

    

 

情景模式--〉音量--〉铃声--〉(1--7),这里是对模拟增益做7 级设置
 
    Audio player/video player 的音量控制实际上是对模拟增益做16 级设置(0-15),
只是我们大多数项目把audio player音量条做成了0-7,对应16级设置的0,2,4,6,8,10,12,15。
 
    由于相同等级音量配置的增益值不一样,这样经常出现同一首MP3 在audio player 和 文件管理里单首播放时音量表现不一样。
   
   可将情景模式里的铃声音量1-7修改成用audio player 的16级设置,1-7对应16级的2,4,6,8,10,12,15。
   
修改代码如下:
     请注意在mak文件中添加宏:__RGT_MELODY_VOL_SETTING_USE_16_LEVEL_ONLY__
 
void aud_set_melody_volume(kal_uint8 mode, kal_uint8 level)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint8 new_level;
    kal_uint8 analog_gain;
 
 
 
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    AUD_FUNC_ENTRY2(AUD_TRC_SET_MELODY_VOLUME, mode, level);
   ………………
   ………………

    /* 7 level volume (MSB bit is not set) */
    if (!(level & 0x80))
    {
#if defined(__RGT_MELODY_VOL_SETTING_USE_16_LEVEL_ONLY__)
        new_level = (new_level+1)*2; /*0-6 map to 2,4,6,8,10,12,15*/
 
        if( new_level>= 14 )
        {
            new_level = 15;
        }
        #ifdef __16_LEVEL_AUDIO_VOLUME__
            Media_SetLevelVolume( aud_context_p->acoustic_data.max_melody_volume_gain[mode],
                aud_context_p->acoustic_data.melody_volume_gain_step[mode],
                15 - new_level);
        #else
            ASSERT(0);
        #endif /* __16_LEVEL_AUDIO_VOLUME__ */
#else
    #if defined(TV_OUT_SUPPORT)
        if (mode == VOL_TV_OUT)
        {
            analog_gain = aud_get_volume_gain(mode, AUD_VOLUME_TVO, new_level);
        }
        else
    #endif /* TV_OUT_SUPPORT */
        {
            analog_gain = aud_get_volume_gain(mode, AUD_VOLUME_MEDIA, new_level);
        }
       
        aud_melody_set_output_volume(analog_gain, 0);
#endif       
    }
    /* 16 level volume */
    else
    {
      ………………
    }
}

你可能感兴趣的:(MTK 铃声音量每级增益值修改为使用Audio player 16级增益值的方法)