|
|
|
@@ -314,15 +314,16 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) |
|
|
|
break; |
|
|
|
|
|
|
|
case 4: /* NO DITHER */ |
|
|
|
switch (driver->playback_sample_format) |
|
|
|
{ |
|
|
|
case SND_PCM_FORMAT_S24_LE: |
|
|
|
case SND_PCM_FORMAT_S24_BE: |
|
|
|
switch (driver->playback_sample_format) |
|
|
|
{ |
|
|
|
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; |
|
|
|
case SND_PCM_FORMAT_S32_LE: |
|
|
|
case SND_PCM_FORMAT_S32_LE: |
|
|
|
case SND_PCM_FORMAT_S32_BE: |
|
|
|
{ |
|
|
|
int bits = snd_pcm_hw_params_get_sbits(driver->playback_hw_params); |
|
|
|
if (bits == 32) |
|
|
|
@@ -331,18 +332,25 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) |
|
|
|
sample_move_d32_sSs: |
|
|
|
sample_move_d32_sS; |
|
|
|
} |
|
|
|
else |
|
|
|
else if (bits == 24) |
|
|
|
{ |
|
|
|
driver->write_via_copy = driver->quirk_bswap? |
|
|
|
sample_move_d32u24_sSs: |
|
|
|
sample_move_d32u24_sS; |
|
|
|
} |
|
|
|
break; |
|
|
|
else |
|
|
|
{ |
|
|
|
jack_error("unsupported sample format for playback: " |
|
|
|
"SND_PCM_FORMAT_S32 with %d bits", |
|
|
|
bits); |
|
|
|
exit (1); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
default: |
|
|
|
jack_error("unsupported 4 byte sample_format"); |
|
|
|
exit (1); |
|
|
|
} |
|
|
|
default: |
|
|
|
jack_error("unsupported 4 byte sample_format"); |
|
|
|
exit (1); |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
@@ -378,6 +386,7 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) |
|
|
|
sample_move_dS_s32l24; |
|
|
|
break; |
|
|
|
case SND_PCM_FORMAT_S32_LE: |
|
|
|
case SND_PCM_FORMAT_S32_BE: |
|
|
|
{ |
|
|
|
int bits = snd_pcm_hw_params_get_sbits(driver->capture_hw_params); |
|
|
|
if (bits == 32) |
|
|
|
@@ -386,12 +395,19 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) |
|
|
|
sample_move_dS_s32s: |
|
|
|
sample_move_dS_s32; |
|
|
|
} |
|
|
|
else |
|
|
|
else if(bits == 24) |
|
|
|
{ |
|
|
|
driver->read_via_copy = driver->quirk_bswap? |
|
|
|
sample_move_dS_s32u24s: |
|
|
|
sample_move_dS_s32u24; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
jack_error("unsupported sample format for capture: " |
|
|
|
"SND_PCM_FORMAT_S32LE with %d bits", |
|
|
|
bits); |
|
|
|
exit (1); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
default: |
|
|
|
|