On Tue, 16 Feb 2010, Lennart Poettering wrote:
On Tue, 16.02.10 09:24, Jaroslav Kysela (perex@perex.cz) wrote:
ALSA 1.0.21 (kernel 2.6.32) added a different TLV type that reports the range with the min/max values to minimize those rounding errors.
Unfortunately, it's not the case of a rounding problem. The USB specification is too much vague and vendors don't use the dB range correctly. For example, I tested SB MP3+ USB device and reported ranges were:
Master: -47.87dB..0.06dB # correct Line: 0dB..47.81dB # seems correct -47.81dB..0dB Line Capture: -0.18dB..23.81dB # seems correct -17.81dB..6.18dB
Hmm, how did you choose where to put 0dB?
It's just tested against another hw using one headphones.
http://git.alsa-project.org/?p=alsa-kernel.git;a=commitdiff;h=c3a3e040f01457...
The SB MP3+ uses AC97 codec AD1995 with some own ASIC from Creative. So I think that even the 47.87 values are not correct and the real ranges are from -48dB..0dB and -18dB..6dB.
So if I understand this correctly, then the way to handle issues like this is to measure the dB data for each USB card in question and then update the drivers with quirks accordingly?
Basically, yes, these values should be corrected early as possible.
So if I want my Aureon to work properly I better start measuring now?
Would it be feasible to allow overriding of the dB data from userspace, i.e. from the alsa mixer init db perhaps?
It's another possibility. But the right place to handle this issue is alsa-lib and parsing a text file with the new data.
Jaroslav
----- Jaroslav Kysela perex@perex.cz Linux Kernel Sound Maintainer ALSA Project, Red Hat, Inc.