Re: [ecasound] Problems with 24/96 over stdin

From: Kai Vehmanen <kvehmanen@email-addr-hidden>
Date: Tue Apr 21 2009 - 22:50:05 EEST


On Tue, 21 Apr 2009, kls.schlz@email-addr-hidden wrote:

> The issue: "aplay" S24_LE can cope with the MPD output. MPD folks won't see a problem here.
> Alsa is setting the scene.
> As I wrote yesterday, to me it seems, that there is a confusion in the Linux world about the
> different 24bits formats.

yes, my original reply was incorrect. ALSA's S24_LE is 32bit with
most-significant 8bits padded to zero. For 24bit samples that have LSB
padded to zero, one should use S32_LE in ALSA (there's a separate
'msbits' in the hw_params struct that tells how many bits are valid.
So with ALSA you have three options for 24bit samples:

  1) S24_3LE => 24bit in three bytes (and similar for _BE)
  2) S32_LE + msbits=24 => 24bit in four bytes, LSB zero-padded
  3) S24_LE => 24bit in four bytes, MSB zero-padded

Now ecasound supports (1) and (2) directly, but mpd outputs in format (3),
so you get the attenuated signal (S24_LE and -f:s32_le).

As a workaround, you can use -f:s32_le and use '-ea:25600' to shift the
bits to the right place. The proper fix is to add (3) support to ecasound
(and maybe to brutefir as well), but this is not entirely straighforward.
I wonder wat would be a good ecasound -f option for (3)..
'-f:s24_le_msb_padded' maybe, yikes! :P

Stay on top of everything new and different, both inside and
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today.
Use priority code J9JMT32.
Ecasound-list mailing list
Received on Wed Apr 22 00:15:06 2009

This archive was generated by hypermail 2.1.8 : Wed Apr 22 2009 - 00:15:06 EEST