[alsa-devel] alsa-lib and floating point support
Ricard Wanderlof
ricard.wanderlof at axis.com
Wed Sep 20 12:55:30 CEST 2017
We recently came across an issue with the alsa-lib softvol plugin, which
requires hardware floating-point (i.e. --with-softfloat not enabled during
build) support in order to use anything but a set of default values (min
gain -51 dB, max 0 dB, and 256 gain steps). With no hardware floating
point support, the plugin just prints an error message when loaded.
static int softvol_load_control(snd_pcm_t *pcm, snd_pcm_softvol_t *svol,
...
#ifndef HAVE_SOFT_FLOAT
...
double v = (pow(10.0, db / 20.0) * (double)(1 <<
VOL_SCALE_SHIFT));
...
#else
SNDERR("Cannot handle the given dB range and resolution");
return -EINVAL;
#endif
}
...
I'm trying to understand why it is critical to have hardware floating
point support in this case. The pow() function is very resource hungry,
true, but the function is only called when the plugin is loaded, and not
for instance on every sample while the stream is running, so on the whole
I would expect the impact to be minimal. Is there some other rationale
that I'm missing?
/Ricard
--
Ricard Wolf Wanderlöf ricardw(at)axis.com
Axis Communications AB, Lund, Sweden www.axis.com
Phone +46 46 272 2016 Fax +46 46 13 61 30
More information about the Alsa-devel
mailing list