audio: fixed channel count determination from channel mask
Do not use popcount() to derive channel count from channel mask.
Bug: 15000850.
Change-Id: Idaf241be22f85040c6461834bad60ae1d9244f32
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 53aed41..46af57f 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -1819,7 +1819,7 @@
out->usecase = USECASE_AUDIO_PLAYBACK_MULTI_CH;
out->config = pcm_config_hdmi_multi;
out->config.rate = config->sample_rate;
- out->config.channels = popcount(out->channel_mask);
+ out->config.channels = audio_channel_count_from_out_mask(out->channel_mask);
out->config.period_size = HDMI_MULTI_PERIOD_BYTES / (out->config.channels * 2);
} else if (out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD) {
if (config->offload_info.version != AUDIO_INFO_INITIALIZER.version ||
@@ -1860,7 +1860,7 @@
out->compr_config.codec->bit_rate =
config->offload_info.bit_rate;
out->compr_config.codec->ch_in =
- popcount(config->channel_mask);
+ audio_channel_count_from_out_mask(config->channel_mask);
out->compr_config.codec->ch_out = out->compr_config.codec->ch_in;
if (flags & AUDIO_OUTPUT_FLAG_NON_BLOCKING)
@@ -2160,7 +2160,7 @@
static size_t adev_get_input_buffer_size(const struct audio_hw_device *dev __unused,
const struct audio_config *config)
{
- int channel_count = popcount(config->channel_mask);
+ int channel_count = audio_channel_count_from_in_mask(config->channel_mask);
return get_input_buffer_size(config->sample_rate, config->format, channel_count);
}
@@ -2174,7 +2174,7 @@
struct audio_device *adev = (struct audio_device *)dev;
struct stream_in *in;
int ret = 0, buffer_size, frame_size;
- int channel_count = popcount(config->channel_mask);
+ int channel_count = audio_channel_count_from_in_mask(config->channel_mask);
ALOGV("%s: enter", __func__);
*stream_in = NULL;
diff --git a/visualizer/offload_visualizer.c b/visualizer/offload_visualizer.c
index e13f305..eaa7774 100644
--- a/visualizer/offload_visualizer.c
+++ b/visualizer/offload_visualizer.c
@@ -580,7 +580,7 @@
visu_ctxt->scaling_mode = VISUALIZER_SCALING_MODE_NORMALIZED;
// measurement initialization
- visu_ctxt->channel_count = popcount(context->config.inputCfg.channels);
+ visu_ctxt->channel_count = audio_channel_count_from_out_mask(context->config.inputCfg.channels);
visu_ctxt->meas_mode = MEASUREMENT_MODE_NONE;
visu_ctxt->meas_wndw_size_in_buffers = MEASUREMENT_WINDOW_MAX_SIZE_IN_BUFFERS;
visu_ctxt->meas_buffer_idx = 0;