Skip to content

Commit 6e14215

Browse files
committed
Fix A2DP volume update after changes in 0d488c7
1 parent 9faeeb3 commit 6e14215

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

src/ba-transport-pcm.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -591,16 +591,16 @@ bool ba_transport_pcm_is_active(const struct ba_transport_pcm *pcm) {
591591

592592
/**
593593
* Convert PCM volume level to [0, max] range. */
594-
int ba_transport_pcm_volume_level_to_range(int value, int max) {
594+
unsigned int ba_transport_pcm_volume_level_to_range(int value, int max) {
595595
int volume = audio_decibel_to_loudness(value / 100.0) * max;
596596
return MIN(MAX(volume, 0), max);
597597
}
598598

599599
/**
600600
* Convert [0, max] range to PCM volume level. */
601601
int ba_transport_pcm_volume_range_to_level(int value, int max) {
602-
double level = audio_loudness_to_decibel(1.0 * value / max);
603-
return MIN(MAX(level, -96.0), 96.0) * 100;
602+
int level = audio_loudness_to_decibel(1.0 * value / max) * 100;
603+
return MIN(MAX(level, -9600), 9600);
604604
}
605605

606606
/**
@@ -656,8 +656,8 @@ int ba_transport_pcm_volume_update(struct ba_transport_pcm *pcm) {
656656
for (size_t i = 0; i < pcm->channels; i++)
657657
level_sum += pcm->volume[i].level;
658658

659-
unsigned int volume = ba_transport_pcm_volume_level_to_range(
660-
level_sum / pcm->channels, BLUEZ_A2DP_VOLUME_MAX);
659+
uint16_t volume = ba_transport_pcm_volume_level_to_range(
660+
level_sum / (int)pcm->channels, BLUEZ_A2DP_VOLUME_MAX);
661661

662662
/* skip update if nothing has changed */
663663
if (volume != t->a2dp.volume) {

src/ba-transport-pcm.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ enum ba_transport_pcm_signal ba_transport_pcm_signal_recv(
238238

239239
bool ba_transport_pcm_is_active(const struct ba_transport_pcm *pcm);
240240

241-
int ba_transport_pcm_volume_level_to_range(int value, int max);
241+
unsigned int ba_transport_pcm_volume_level_to_range(int value, int max);
242242
int ba_transport_pcm_volume_range_to_level(int value, int max);
243243

244244
void ba_transport_pcm_volume_set(

utils/aplay/aplay.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,7 @@ static int io_worker_mixer_volume_sync_snd_mixer_elem(
452452
* some kind of channel mapping. In order to simplify things, we will set
453453
* all channels to the average left-right volume. */
454454

455-
int volume_sum = 0, muted = 0;
455+
unsigned int volume_sum = 0, muted = 0;
456456
for (size_t i = 1; i < ba_pcm->channels; i++) {
457457
volume_sum += ba_pcm->volume[i].volume;
458458
muted |= ba_pcm->volume[i].muted;
@@ -461,7 +461,7 @@ static int io_worker_mixer_volume_sync_snd_mixer_elem(
461461
/* keep local muted state up to date */
462462
pcm_muted = muted;
463463

464-
const int vmax = BA_PCM_VOLUME_MAX(ba_pcm);
464+
const unsigned int vmax = BA_PCM_VOLUME_MAX(ba_pcm);
465465
/* convert loudness to dB using decibel formula */
466466
long db = 10 * log2(1.0 * volume_sum / ba_pcm->channels / vmax) * 100;
467467
db += worker->mixer_volume_db_max_value;

0 commit comments

Comments
 (0)