【杰理AC692X】mute功放的操作和蓝牙指示灯播放时暂停,慢闪到常亮的状态更新慢的问题

关于功放做MUTE,对于大功率音箱和外挂DSP的案子还是要根据实际效果来调试。

对于小音箱可以用下面的方法:

开系统自动MUTE:

#define DAC_AUTO_MUTE_EN	    1

dac_automute_cb() 这个函数是跟随系统自动MUTE的,自动获取系统MUTE的状态,可以把mute处理做在这,这样就不用去处理各种情况下的mute控制了,如果某个提示音解mute不及时出现播放不完整就直接在播那个提示音之前提前解mute就好,播完也不用再mute,同时,自动mute控制在每个状态下都很迅速,效果不错。

/*----------------------------------------------------------------------------*/
/** @brief : dac_automute_cb
    @param : statue,automute status
    @return: none
    @author:
    @note  : 1)This function called to get automute status
*/
/*----------------------------------------------------------------------------*/
void dac_automute_cb(u8 status)
{
    if (status) {
        puts(">>auto_mute\n");
		pa_mute();
    } else {
        puts(">>auto_umute\n");
		pa_umute();
    }
}

关于蓝牙指示灯播放时暂停,慢闪到常亮的状态更新慢的问题也可以用自动MUTE来解决:

打印会发现在蓝牙播歌到暂停的时候,蓝牙状态更新很慢,自动mute却很迅速,所以可以在蓝牙状态还没来得及更新时,通过判断mute先让指示灯变为常亮,这里可以在上面的函数里加标志位来实现:

u8 automute_flag = 0;

void dac_automute_cb(u8 status)
{
    if (status) {
			pa_mute();
			automute_flag = 1;
        puts(">>auto_mute\n");
    } else {
    		pa_umute();
			automute_flag = 0;
        puts(">>auto_umute\n");
    }
}
case MSG_HALF_SECOND:
                if (BT_MUSIC_STATUS_STARTING == a2dp_get_status()) {    /*播歌状态*/
                    //    user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_GET_PLAY_TIME, 0, NULL);
                    /* task_bt_puts("bt_music\n"); */
                    /* led_fre_set(C_BLED_SLOW_MODE); */
						
						if(automute_flag){
							led_fre_set(C_BLED_ON_MODE); 
						}else{
							led_fre_set(C_BLED_SLOW_MODE);	
						}
				... ...
			break;

也可以通过 is_auto_mute() 函数来判断。

你可能感兴趣的:(杰理692系列问题)