Merge "hal: Fix device selection at start of the voice call"
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 0634a2d..8d47a8b 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -68,17 +68,14 @@
#define COMPRESS_OFFLOAD_FRAGMENT_SIZE_FOR_AV_STREAMING (2 * 1024)
#define COMPRESS_OFFLOAD_FRAGMENT_SIZE (32 * 1024)
/* Used in calculating fragment size for pcm offload */
-#define PCM_OFFLOAD_BUFFER_DURATION_FOR_AV 1000 /* 1 sec */
-#define PCM_OFFLOAD_BUFFER_DURATION_FOR_AV_STREAMING 80 /* 80 millisecs */
-#define PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS 20 /* 20 millisecs */
-#define PCM_OFFLOAD_BUFFER_DURATION_MAX 1200 /* 1200 millisecs */
+#define PCM_OFFLOAD_BUFFER_DURATION 40 /* 40 millisecs */
/* MAX PCM fragment size cannot be increased further due
* to flinger's cblk size of 1mb,and it has to be a multiple of
* 24 - lcm of channels supported by DSP
*/
#define MAX_PCM_OFFLOAD_FRAGMENT_SIZE (240 * 1024)
-#define MIN_PCM_OFFLOAD_FRAGMENT_SIZE (4 * 1024)
+#define MIN_PCM_OFFLOAD_FRAGMENT_SIZE 512
/*
* Offload buffer size for compress passthrough
@@ -2009,7 +2006,7 @@
goto exit;
}
- if (popcount(devices) == 2) {
+ if (popcount(devices) == 2 && !voice_is_in_call(adev)) {
if (devices == (AUDIO_DEVICE_OUT_WIRED_HEADPHONE |
AUDIO_DEVICE_OUT_SPEAKER)) {
if (my_data->external_spk_1)
@@ -3269,25 +3266,13 @@
{
uint32_t fragment_size = 0;
uint32_t bits_per_sample = 16;
- uint32_t pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS;
+ uint32_t pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION;
if (info->format == AUDIO_FORMAT_PCM_24_BIT_OFFLOAD) {
bits_per_sample = 32;
}
- if (info->use_small_bufs) {
- pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS;
- } else {
- if (!info->has_video) {
- pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_MAX;
- } else if (info->has_video && info->is_streaming) {
- pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_AV_STREAMING;
- } else if (info->has_video) {
- pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_AV;
- }
- }
-
- //duration is set to 20 ms worth of stereo data at 48Khz
+ //duration is set to 40 ms worth of stereo data at 48Khz
//with 16 bit per sample, modify this when the channel
//configuration is different
fragment_size = (pcm_offload_time
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index a7b5570..fc81443 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -65,17 +65,14 @@
#define COMPRESS_OFFLOAD_FRAGMENT_SIZE (32 * 1024)
/* Used in calculating fragment size for pcm offload */
-#define PCM_OFFLOAD_BUFFER_DURATION_FOR_AV 1000 /* 1 sec */
-#define PCM_OFFLOAD_BUFFER_DURATION_FOR_AV_STREAMING 80 /* 80 millisecs */
-#define PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS 20 /* 20 millisecs */
-#define PCM_OFFLOAD_BUFFER_DURATION_MAX 1200 /* 1200 millisecs */
+#define PCM_OFFLOAD_BUFFER_DURATION 40 /* 40 millisecs */
/* MAX PCM fragment size cannot be increased further due
* to flinger's cblk size of 1mb,and it has to be a multiple of
* 24 - lcm of channels supported by DSP
*/
#define MAX_PCM_OFFLOAD_FRAGMENT_SIZE (240 * 1024)
-#define MIN_PCM_OFFLOAD_FRAGMENT_SIZE (4 * 1024)
+#define MIN_PCM_OFFLOAD_FRAGMENT_SIZE 512
/*
* Offload buffer size for compress passthrough
@@ -2019,7 +2016,7 @@
goto exit;
}
- if (popcount(devices) == 2) {
+ if (popcount(devices) == 2 && !voice_is_in_call(adev)) {
if (devices == (AUDIO_DEVICE_OUT_WIRED_HEADPHONE |
AUDIO_DEVICE_OUT_SPEAKER)) {
if (my_data->external_spk_1)
@@ -3174,25 +3171,13 @@
{
uint32_t fragment_size = 0;
uint32_t bits_per_sample = 16;
- uint32_t pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS;
+ uint32_t pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION;
if (info->format == AUDIO_FORMAT_PCM_24_BIT_OFFLOAD) {
bits_per_sample = 32;
}
- if (info->use_small_bufs) {
- pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_SMALL_BUFFERS;
- } else {
- if (!info->has_video) {
- pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_MAX;
- } else if (info->has_video && info->is_streaming) {
- pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_AV_STREAMING;
- } else if (info->has_video) {
- pcm_offload_time = PCM_OFFLOAD_BUFFER_DURATION_FOR_AV;
- }
- }
-
- //duration is set to 20 ms worth of stereo data at 48Khz
+ //duration is set to 40 ms worth of stereo data at 48Khz
//with 16 bit per sample, modify this when the channel
//configuration is different
fragment_size = (pcm_offload_time