Browse Source

alsa_driver: Use float to S32 conversion if requested

sample_move_d32u24_sS() converts into samples like 0x00****** but S32
format expects samples like 0x********. Therefore it will not use the
full volume range when also using sample_move_d32u24_sS() for S32.

Change-Id: I4afe9bd0c3b342975536f5f98fa4dadd2eaee02d
Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
pull/949/head
Timo Wischer Adam Miartus 6 years ago
parent
commit
294bcf7752
1 changed files with 12 additions and 8 deletions
  1. +12
    -8
      linux/alsa/alsa_driver.c

+ 12
- 8
linux/alsa/alsa_driver.c View File

@@ -318,10 +318,12 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver)
{
case SND_PCM_FORMAT_S24_LE:
case SND_PCM_FORMAT_S24_BE:
driver->write_via_copy = driver->quirk_bswap?
sample_move_d32l24_sSs:
sample_move_d32l24_sS;
break;
{
driver->write_via_copy = driver->quirk_bswap?
sample_move_d32u24_sSs:
sample_move_d32u24_sS;
break;
}
case SND_PCM_FORMAT_S32_LE:
case SND_PCM_FORMAT_S32_BE:
{
@@ -382,10 +384,12 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver)
{
case SND_PCM_FORMAT_S24_LE:
case SND_PCM_FORMAT_S24_BE:
driver->read_via_copy = driver->quirk_bswap?
sample_move_dS_s32l24s:
sample_move_dS_s32l24;
break;
{
driver->read_via_copy = driver->quirk_bswap?
sample_move_dS_s32u24s:
sample_move_dS_s32u24;
break;
}
case SND_PCM_FORMAT_S32_LE:
case SND_PCM_FORMAT_S32_BE:
{


Loading…
Cancel
Save