| @@ -323,10 +323,22 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) | |||||
| sample_move_d32l24_sS; | sample_move_d32l24_sS; | ||||
| break; | break; | ||||
| case SND_PCM_FORMAT_S32_LE: | case SND_PCM_FORMAT_S32_LE: | ||||
| driver->write_via_copy = driver->quirk_bswap? | |||||
| sample_move_d32_sSs: | |||||
| sample_move_d32_sS; | |||||
| { | |||||
| int bits = snd_pcm_hw_params_get_sbits(driver->playback_hw_params); | |||||
| if (bits == 32) | |||||
| { | |||||
| driver->write_via_copy = driver->quirk_bswap? | |||||
| sample_move_d32_sSs: | |||||
| sample_move_d32_sS; | |||||
| } | |||||
| else | |||||
| { | |||||
| driver->write_via_copy = driver->quirk_bswap? | |||||
| sample_move_d32u24_sSs: | |||||
| sample_move_d32u24_sS; | |||||
| } | |||||
| break; | break; | ||||
| } | |||||
| default: | default: | ||||
| jack_error("unsupported 4 byte sample_format"); | jack_error("unsupported 4 byte sample_format"); | ||||
| exit (1); | exit (1); | ||||
| @@ -357,20 +369,32 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) | |||||
| sample_move_dS_s24; | sample_move_dS_s24; | ||||
| break; | break; | ||||
| case 4: | case 4: | ||||
| switch (driver->capture_sample_format) | |||||
| { | |||||
| case SND_PCM_FORMAT_S24_LE: | |||||
| case SND_PCM_FORMAT_S24_BE: | |||||
| switch (driver->capture_sample_format) | |||||
| { | |||||
| case SND_PCM_FORMAT_S24_LE: | |||||
| case SND_PCM_FORMAT_S24_BE: | |||||
| driver->read_via_copy = driver->quirk_bswap? | driver->read_via_copy = driver->quirk_bswap? | ||||
| sample_move_dS_s32l24s: | sample_move_dS_s32l24s: | ||||
| sample_move_dS_s32l24; | sample_move_dS_s32l24; | ||||
| break; | break; | ||||
| case SND_PCM_FORMAT_S32_LE: | |||||
| driver->read_via_copy = driver->quirk_bswap? | |||||
| sample_move_dS_s32s: | |||||
| sample_move_dS_s32; | |||||
| break; | |||||
| default: | |||||
| case SND_PCM_FORMAT_S32_LE: | |||||
| { | |||||
| int bits = snd_pcm_hw_params_get_sbits(driver->capture_hw_params); | |||||
| if (bits == 32) | |||||
| { | |||||
| driver->read_via_copy = driver->quirk_bswap? | |||||
| sample_move_dS_s32s: | |||||
| sample_move_dS_s32; | |||||
| } | |||||
| else | |||||
| { | |||||
| driver->read_via_copy = driver->quirk_bswap? | |||||
| sample_move_dS_s32u24s: | |||||
| sample_move_dS_s32u24; | |||||
| } | |||||
| break; | |||||
| } | |||||
| default: | |||||
| jack_error("unsupported 4 byte sample_format"); | jack_error("unsupported 4 byte sample_format"); | ||||
| exit (1); | exit (1); | ||||
| } | } | ||||