Subject: PCM8 vs. PCM16/LINEAR?
To: None <blymn@awadi.com.AU>
From: Ignatios Souvatzis <ignatios@theory.cs.uni-bonn.de>
List: tech-kern
Date: 08/02/1995 10:21:05
If you are really serious about the performance the best you could do
is use a lookup table. Pre-calculate the values, whack them into a
table and use the incoming value as a lookup. Costs you an extra
memory operation, 'tis all. For 16 bit a lookup table may be a bit
excessive ;-) in this case you could make a smaller table and use a
linear interpolation (or quadratic if you want to get really fancy) -
the trade off being the size of the table vs accuracy of the
interpolation vs the time to do the calculation.
I don't know the audio stuff by heart (hope s.b. beats me to it on the
Amiga while I'm occupated with the A2410 X server), but the
ulaw-to-linear conversion is usually done this way... only 8 bit
input.
Hm... one could even generate the lower 8 bits as u_int8_t and the
upper 6 bits as u_int16_t, this way, to do 14bit output on the Amiga
hardware ;-)
But the unsigned-signed conversion MUST be done by the CPU... you
don't want another memory access instead of a 1-clock-instruction, no?
At least on the Amiga, you have to copy the stuff to a chipmem buffer,
anyway, and can do the conversion while copying.
Regards,
Ignatios Souvatzis