Fixed sink not being able to output mono audio because it can only decode dual channel audio data

This commit is contained in:
xiongweichao
2022-08-24 11:05:03 +08:00
parent 0d5f3081ac
commit 697755dfe5
2 changed files with 10 additions and 2 deletions
@@ -302,6 +302,7 @@ static void bt_av_hdl_a2d_evt(uint16_t event, void *p_param)
/* for now only SBC stream is supported */
if (a2d->audio_cfg.mcc.type == ESP_A2D_MCT_SBC) {
int sample_rate = 16000;
int ch_count = 2;
char oct0 = a2d->audio_cfg.mcc.cie.sbc[0];
if (oct0 & (0x01 << 6)) {
sample_rate = 32000;
@@ -310,12 +311,18 @@ static void bt_av_hdl_a2d_evt(uint16_t event, void *p_param)
} else if (oct0 & (0x01 << 4)) {
sample_rate = 48000;
}
if (oct0 & (0x01 << 3)) {
ch_count = 1;
}
#ifdef CONFIG_EXAMPLE_A2DP_SINK_OUTPUT_INTERNAL_DAC
i2s_set_clk(0, sample_rate, 16, 2);
i2s_set_clk(0, sample_rate, 16, ch_count);
#else
i2s_channel_disable(tx_chan);
i2s_std_clk_config_t clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(sample_rate);
i2s_std_slot_config_t slot_cfg = I2S_STD_MSB_SLOT_DEFAULT_CONFIG(I2S_DATA_BIT_WIDTH_16BIT, ch_count);
i2s_channel_reconfig_std_clock(tx_chan, &clk_cfg);
i2s_channel_reconfig_std_slot(tx_chan, &slot_cfg);
i2s_channel_enable(tx_chan);
#endif
ESP_LOGI(BT_AV_TAG, "Configure audio player: %x-%x-%x-%x",