通過VOLUME_UP,VOLUME_DOWN調節atv的聲音,不變化,只有調到靜音的時候,才沒有聲音,界面上的聲音大小是顯示對的.[Solution]這類問題常見的原因是音頻參數沒有進行設置,使用原始release預設的參數,而預設的參數在各版本上0-6均為255,導致調節音量等級,聲音大小無變化 ...
通過VOLUME_UP,VOLUME_DOWN調節atv的聲音,不變化,只有調到靜音的時候,才沒有聲音,界面上的聲音大小是顯示對的.
[Solution]
這類問題常見的原因是音頻參數沒有進行設置,使用原始release預設的參數,而預設的參數在各版本上0-6均為255,導致調節音量等級,聲音大小無變化。
分析方法:請在相關函數中加TRACE查看,
MMI層
mmi_mtv_player_entry_channel_list_screen,中註冊按鍵是否有執行到,
SetKeyHandler(mmi_mtv_player_vol_inc, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
SetKeyHandler(mmi_mtv_player_vol_dec, KEY_LEFT_ARROW, KEY_EVENT_DOWN);
SetKeyHandler(mmi_mtv_player_vol_inc, KEY_VOL_UP, KEY_EVENT_DOWN);
SetKeyHandler(mmi_mtv_player_vol_dec, KEY_VOL_DOWN, KEY_EVENT_DOWN);
mmi_mtv_player_vol_inc 中mdi_audio_set_volume->
media_aud_set_volume_ext- > aud_send_set_volume_req 中的type, volume值是多少,是否正常傳下去了等。
MED層,
加TRACE看音量是否有正確設置下去。同樣type ,volume等關鍵的值都列印出來,並trace看是走的哪個分支。
aud_audio_set_volume_req_hdlr,
aud_atv_set_volume_by_mode
查看TV_OUT_SUPPORT,__ATV_I2S_SUPPORT__,__MED_BT_A2DP_MOD__ 的定義情況.
依次跟下去看最終是否有在AFE設置音量。
aud_atv_set_volume_by_mode 中 analog_gain 值為多少傳入
aud_atv_set_output_volume(analog_gain, 0);
aud_atv_set_output_volume->ATV_AudioSetOutputVolume-
>LINEIN_SetOutputVolume
void ATV_AudioSetOutputVolume(kal_uint8 volume1, kal_int8
digital_gain_index)
{
#if defined(__ATV_I2S_SUPPORT__)
Media_SetOutputVolume( volume1, digital_gain_index );
#else
LINEIN_SetOutputVolume( volume1, digital_gain_index );
#endif
}
void LINEIN_SetOutputVolume( uint8 volume1, int8 digital_gain_index )
{
AFE_SetOutputVolume( L1SP_LINEIN, volume1, digital_gain_index );
}
AFE_SetOutputVolume 中EXT_DAC_SUPPORT 是否有定義?
是aud_atv_set_volume_by_mode這個函數中的analog_gain不對,它傳給
aud_atv_set_output_volume(analog_gain, 0);這個函數的"analog_gain"變數一直為255。
GAIN_HND_GMI_VOL0-6的值這些值都是255,就找到調音量不起作用的原因了,請把這些值設置成遞增的數據。例如以下參數,註意這隻是示例,可以自行調節。
#define GAIN_HND_GMI_VOL 3
#define GAIN_HND_GMI_VOL0 16
#define GAIN_HND_GMI_VOL1 32
#define GAIN_HND_GMI_VOL2 48
#define GAIN_HND_GMI_VOL3 64
#define GAIN_HND_GMI_VOL4 80
#define GAIN_HND_GMI_VOL5 96
#define GAIN_HND_GMI_VOL6 112