mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-01 22:58:47 -04:00
volume: simplify volume multiplifactions, do them in integer only
This commit is contained in:
parent
d634555a3e
commit
96f01b822a
1 changed files with 6 additions and 4 deletions
|
|
@ -200,16 +200,18 @@ pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, p
|
|||
}
|
||||
|
||||
pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) {
|
||||
return pa_sw_volume_from_linear(pa_sw_volume_to_linear(a) * pa_sw_volume_to_linear(b));
|
||||
|
||||
/* cbrt((a/PA_VOLUME_NORM)^3*(b/PA_VOLUME_NORM)^3)*PA_VOLUME_NORM = a*b/PA_VOLUME_NORM */
|
||||
|
||||
return (pa_volume_t) (((uint64_t) a * (uint64_t) b + (uint64_t) PA_VOLUME_NORM / 2ULL) / (uint64_t) PA_VOLUME_NORM);
|
||||
}
|
||||
|
||||
pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) {
|
||||
double v = pa_sw_volume_to_linear(b);
|
||||
|
||||
if (v <= 0)
|
||||
if (b <= PA_VOLUME_MUTED)
|
||||
return 0;
|
||||
|
||||
return pa_sw_volume_from_linear(pa_sw_volume_to_linear(a) / v);
|
||||
return (pa_volume_t) (((uint64_t) a * (uint64_t) PA_VOLUME_NORM + (uint64_t) b / 2ULL) / (uint64_t) b);
|
||||
}
|
||||
|
||||
/* Amplitude, not power */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue