[pulseaudio-discuss] Please help to explain the algorithm in pa_sw_volume_to_dB
zhaochengyi at uniontech.com
zhaochengyi at uniontech.com
Tue Aug 9 05:44:07 UTC 2022
On 2022/8/8 下午9:29, zhaochengyi at uniontech.com wrote:
> Hi guys,
>
> The dB range of Playback Master of Sound Card is between -65.25 and 0.
>
> I changed the sink volume to 8%, but the dB volume calculated by
> function pa_sw_volume_to_dB is -65.82 dB, this will result in
> no sound playing when the volume is between %0 and 8%.
>
> I think this is an issue, but I don't understand the algorithm
> principle of function pa_sw_volume_to_dB.
>
> Would you please help to explain it, thanks a lot!
>
> logs:
> ------------------------------------
> 8月 08 21:06:32.535263 zhao-PC pulseaudio[5173]: D: [pulseaudio]
> protocol-native.c: Client dde-session-daemon changes volume of sink
> alsa_output.pci-0000_03_00.6.analog-stereo.
> 8月 08 21:06:32.535263 zhao-PC pulseaudio[5173]: D: [pulseaudio] sink.c:
> The reference volume of sink alsa_output.pci-0000_03_00.6.analog-stereo
> changed from front-left: 4587 / 7% / -69.30 dB, front-right: 4587 /
> 7% / -69.30 dB to front-left: 5898 / 9% / -62.75 dB, front-right:
> 5898 / 9% / -62.75 dB.
> 8月 08 21:06:32.535263 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] alsa-sink.c: Requested volume: front-left: 5898 / 9% / -62.75
> dB, front-right: 5898 / 9% / -62.75 dB
> 8月 08 21:06:32.535263 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] alsa-sink.c: Got hardware volume: front-left: 5919 / 9% /
> -62.65 dB, front-right: 5919 / 9% / -62.65 dB
> 8月 08 21:06:32.536525 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] alsa-sink.c: Calculated software volume: front-left: 65303 /
> 100% / -0.09 dB, front-right: 65303 / 100% / -0.09 dB
> (accurate-enough=yes)
> 8月 08 21:06:32.536525 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] sink.c: Volume going up to 5898 at 6577292163
> 8月 08 21:06:32.536525 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] ratelimit.c: 745 events suppressed
> 8月 08 21:06:32.536525 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] sink.c: Next volume change in 7992 usec
> 8月 08 21:06:32.536525 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] sink.c: Next volume change in 7981 usec
> 8月 08 21:06:32.536525 zhao-PC pulseaudio[5173]: I: [pulseaudio]
> module-device-restore.c: Storing volume/mute for device+port
> sink:alsa_output.pci-0000_03_00.6.analog-stereo:analog-output-speaker.
> 8月 08 21:06:32.543465 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] sink.c: Volume change to 5898 at 6577292163 was written 104 usec
> late
> 8月 08 21:06:40.507006 zhao-PC pulseaudio[5173]: D: [pulseaudio]
> protocol-native.c: Client dde-session-daemon changes volume of sink
> alsa_output.pci-0000_03_00.6.analog-stereo.
> 8月 08 21:06:40.507006 zhao-PC pulseaudio[5173]: D: [pulseaudio] sink.c:
> The reference volume of sink alsa_output.pci-0000_03_00.6.analog-stereo
> changed from front-left: 5898 / 9% / -62.75 dB, front-right: 5898 /
> 9% / -62.75 dB to front-left: 4587 / 7% / -69.30 dB, front-right:
> 4587 / 7% / -69.30 dB.
> 8月 08 21:06:40.507593 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] alsa-sink.c: Requested volume: front-left: 4587 / 7% / -69.30
> dB, front-right: 4587 / 7% / -69.30 dB
> 8月 08 21:06:40.507593 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] alsa-sink.c: Got hardware volume: front-left: 4605 / 7% /
> -69.20 dB, front-right: 4605 / 7% / -69.20 dB
> 8月 08 21:06:40.507593 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] alsa-sink.c: Calculated software volume: front-left: 65280 /
> 100% / -0.10 dB, front-right: 65280 / 100% / -0.10 dB
> (accurate-enough=yes)
> 8月 08 21:06:40.507593 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] sink.c: Volume going down to 4587 at 6585248016
> 8月 08 21:06:40.507593 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] sink.c: Volume change to 4587 at 6585248016 was written 8010
> usec late
> 8月 08 21:06:40.507593 zhao-PC pulseaudio[5173]: I: [pulseaudio]
> module-device-restore.c: Storing volume/mute for device+port
> sink:alsa_output.pci-0000_03_00.6.analog-stereo:analog-output-speaker.
> 8月 08 21:06:42.535546 zhao-PC pulseaudio[5173]: I: [pulseaudio]
> module-device-restore.c: Synced.
> 8月 08 21:06:48.928087 zhao-PC pulseaudio[5173]: D: [pulseaudio]
> protocol-native.c: Client dde-session-daemon changes volume of sink
> alsa_output.pci-0000_03_00.6.analog-stereo.
> 8月 08 21:06:48.928087 zhao-PC pulseaudio[5173]: D: [pulseaudio] sink.c:
> The reference volume of sink alsa_output.pci-0000_03_00.6.analog-stereo
> changed from front-left: 4587 / 7% / -69.30 dB, front-right: 4587 /
> 7% / -69.30 dB to front-left: 5242 / 8% / -65.82 dB, front-right:
> 5242 / 8% / -65.82 dB.
> 8月 08 21:06:48.928812 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] alsa-sink.c: Requested volume: front-left: 5242 / 8% / -65.82
> dB, front-right: 5242 / 8% / -65.82 dB
> 8月 08 21:06:48.928812 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] alsa-sink.c: Got hardware volume: front-left: 5276 / 8% /
> -65.65 dB, front-right: 5276 / 8% / -65.65 dB
> 8月 08 21:06:48.928812 zhao-PC pulseaudio[5173]: D: [alsa-sink-ALC256
> Analog] alsa-sink.c: Calculated software volume: front-left: 65114 / 99%
> / -0.17 dB, front-right: 65114 / 99% / -0.17 dB (accurate-enough=yes)
> --------------------------------------------
The relevant functions are as follows:
static double linear_to_dB(double v) {
return 20.0 * log10(v);
}
double pa_sw_volume_to_linear(pa_volume_t v) {
double f;
pa_return_val_if_fail(PA_VOLUME_IS_VALID(v), 0.0);
if (v <= PA_VOLUME_MUTED)
return 0.0;
if (v == PA_VOLUME_NORM)
return 1.0;
f = ((double) v / PA_VOLUME_NORM);
return f*f*f;
}
double pa_sw_volume_to_dB(pa_volume_t v) {
pa_return_val_if_fail(PA_VOLUME_IS_VALID(v), PA_DECIBEL_MININFTY);
if (v <= PA_VOLUME_MUTED)
return PA_DECIBEL_MININFTY;
return linear_to_dB(pa_sw_volume_to_linear(v));
}
More information about the pulseaudio-discuss
mailing list