Loading hal/audio_extn/a2dp.c +46 −28 Original line number Diff line number Diff line Loading @@ -879,7 +879,7 @@ static int a2dp_set_backend_cfg() } /* Set Tx backend sample rate */ if (a2dp.abr_config.is_abr_enabled) if (a2dp.abr_config.is_abr_enabled) { rate_str = ABR_TX_SAMPLE_RATE; ALOGD("%s: set backend tx sample rate = %s", __func__, rate_str); Loading @@ -894,6 +894,7 @@ static int a2dp_set_backend_cfg() ALOGE("%s: Failed to set backend sample rate = %s", __func__, rate_str); return -ENOSYS; } } } else { /* Fallback to legacy approch if MIXER_SAMPLE_RATE_RX and MIXER_SAMPLE_RATE_TX is not supported */ Loading Loading @@ -986,6 +987,7 @@ static int a2dp_reset_backend_cfg() return -ENOSYS; } if (a2dp.abr_config.is_abr_enabled) { ctl_sample_rate_tx = mixer_get_ctl_by_name(a2dp.adev->mixer, MIXER_SAMPLE_RATE_TX); if (!ctl_sample_rate_tx) { Loading @@ -997,6 +999,7 @@ static int a2dp_reset_backend_cfg() ALOGE("%s: Failed to reset Tx backend sample rate = %s", __func__, rate_str); return -ENOSYS; } } } else { ctl_sample_rate_rx = mixer_get_ctl_by_name(a2dp.adev->mixer, Loading Loading @@ -1805,6 +1808,15 @@ static int reset_a2dp_dec_config_params() return ret; } static void reset_a2dp_config() { reset_a2dp_enc_config_params(); reset_a2dp_dec_config_params(); a2dp_reset_backend_cfg(); if (a2dp.abr_config.is_abr_enabled && a2dp.abr_config.abr_started) stop_abr(); a2dp.abr_config.is_abr_enabled = false; } int audio_extn_a2dp_stop_playback() { int ret =0; Loading @@ -1824,13 +1836,9 @@ int audio_extn_a2dp_stop_playback() if (ret < 0) ALOGE("stop stream to BT IPC lib failed"); else ALOGV("stop steam to BT IPC lib successful"); reset_a2dp_enc_config_params(); reset_a2dp_dec_config_params(); a2dp_reset_backend_cfg(); if (a2dp.abr_config.is_abr_enabled && a2dp.abr_config.abr_started) stop_abr(); a2dp.abr_config.is_abr_enabled = false; ALOGV("stop stream to BT IPC lib successful"); if (!a2dp.a2dp_suspended) reset_a2dp_config(); a2dp.a2dp_started = false; } if(!a2dp.a2dp_total_active_session_request) Loading Loading @@ -1895,8 +1903,7 @@ void audio_extn_a2dp_set_parameters(struct str_parms *parms) pthread_mutex_lock(&a2dp.adev->lock); } } reset_a2dp_enc_config_params(); reset_a2dp_dec_config_params(); reset_a2dp_config(); if (a2dp.audio_suspend_stream) a2dp.audio_suspend_stream(); } else if (a2dp.a2dp_suspended == true) { Loading Loading @@ -1924,8 +1931,19 @@ void audio_extn_a2dp_set_parameters(struct str_parms *parms) if (ret != 0) { ALOGE("BT controller start failed"); a2dp.a2dp_started = false; } else { if (!configure_a2dp_encoder_format()) { ALOGE("%s: Encoder params configuration failed post suspend", __func__); a2dp.a2dp_started = false; ret = -ETIMEDOUT; } } } if (a2dp.a2dp_started) { a2dp_set_backend_cfg(); if (a2dp.abr_config.is_abr_enabled) start_abr(); } } list_for_each(node, &a2dp.adev->usecase_list) { uc_info = node_to_item(node, struct audio_usecase, list); Loading Loading
hal/audio_extn/a2dp.c +46 −28 Original line number Diff line number Diff line Loading @@ -879,7 +879,7 @@ static int a2dp_set_backend_cfg() } /* Set Tx backend sample rate */ if (a2dp.abr_config.is_abr_enabled) if (a2dp.abr_config.is_abr_enabled) { rate_str = ABR_TX_SAMPLE_RATE; ALOGD("%s: set backend tx sample rate = %s", __func__, rate_str); Loading @@ -894,6 +894,7 @@ static int a2dp_set_backend_cfg() ALOGE("%s: Failed to set backend sample rate = %s", __func__, rate_str); return -ENOSYS; } } } else { /* Fallback to legacy approch if MIXER_SAMPLE_RATE_RX and MIXER_SAMPLE_RATE_TX is not supported */ Loading Loading @@ -986,6 +987,7 @@ static int a2dp_reset_backend_cfg() return -ENOSYS; } if (a2dp.abr_config.is_abr_enabled) { ctl_sample_rate_tx = mixer_get_ctl_by_name(a2dp.adev->mixer, MIXER_SAMPLE_RATE_TX); if (!ctl_sample_rate_tx) { Loading @@ -997,6 +999,7 @@ static int a2dp_reset_backend_cfg() ALOGE("%s: Failed to reset Tx backend sample rate = %s", __func__, rate_str); return -ENOSYS; } } } else { ctl_sample_rate_rx = mixer_get_ctl_by_name(a2dp.adev->mixer, Loading Loading @@ -1805,6 +1808,15 @@ static int reset_a2dp_dec_config_params() return ret; } static void reset_a2dp_config() { reset_a2dp_enc_config_params(); reset_a2dp_dec_config_params(); a2dp_reset_backend_cfg(); if (a2dp.abr_config.is_abr_enabled && a2dp.abr_config.abr_started) stop_abr(); a2dp.abr_config.is_abr_enabled = false; } int audio_extn_a2dp_stop_playback() { int ret =0; Loading @@ -1824,13 +1836,9 @@ int audio_extn_a2dp_stop_playback() if (ret < 0) ALOGE("stop stream to BT IPC lib failed"); else ALOGV("stop steam to BT IPC lib successful"); reset_a2dp_enc_config_params(); reset_a2dp_dec_config_params(); a2dp_reset_backend_cfg(); if (a2dp.abr_config.is_abr_enabled && a2dp.abr_config.abr_started) stop_abr(); a2dp.abr_config.is_abr_enabled = false; ALOGV("stop stream to BT IPC lib successful"); if (!a2dp.a2dp_suspended) reset_a2dp_config(); a2dp.a2dp_started = false; } if(!a2dp.a2dp_total_active_session_request) Loading Loading @@ -1895,8 +1903,7 @@ void audio_extn_a2dp_set_parameters(struct str_parms *parms) pthread_mutex_lock(&a2dp.adev->lock); } } reset_a2dp_enc_config_params(); reset_a2dp_dec_config_params(); reset_a2dp_config(); if (a2dp.audio_suspend_stream) a2dp.audio_suspend_stream(); } else if (a2dp.a2dp_suspended == true) { Loading Loading @@ -1924,8 +1931,19 @@ void audio_extn_a2dp_set_parameters(struct str_parms *parms) if (ret != 0) { ALOGE("BT controller start failed"); a2dp.a2dp_started = false; } else { if (!configure_a2dp_encoder_format()) { ALOGE("%s: Encoder params configuration failed post suspend", __func__); a2dp.a2dp_started = false; ret = -ETIMEDOUT; } } } if (a2dp.a2dp_started) { a2dp_set_backend_cfg(); if (a2dp.abr_config.is_abr_enabled) start_abr(); } } list_for_each(node, &a2dp.adev->usecase_list) { uc_info = node_to_item(node, struct audio_usecase, list); Loading