diff options
author | sletz <sletz@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2008-07-23 13:45:30 +0000 |
---|---|---|
committer | sletz <sletz@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2008-07-23 13:45:30 +0000 |
commit | c17e21ee12f579c01a8a63aa1b2482060d4897f9 (patch) | |
tree | 326002e604d008c6437a4432d4b8be3497f232fe /drivers/alsa | |
parent | d1399bb35853c248e0261b74af71ef57bd8e1c80 (diff) | |
download | jack1-c17e21ee12f579c01a8a63aa1b2482060d4897f9.tar.gz |
Florian Faber native 32 bits float patch for alsa driver.
git-svn-id: svn+ssh://jackaudio.org/trunk/jack@2723 0c269be4-1314-0410-8aa9-9f06e86f4224
Diffstat (limited to 'drivers/alsa')
-rw-r--r-- | drivers/alsa/alsa_driver.c | 237 | ||||
-rw-r--r-- | drivers/alsa/memops.c | 85 | ||||
-rw-r--r-- | drivers/alsa/memops.h | 4 |
3 files changed, 172 insertions, 154 deletions
diff --git a/drivers/alsa/alsa_driver.c b/drivers/alsa/alsa_driver.c index 757cca6..a360e5b 100644 --- a/drivers/alsa/alsa_driver.c +++ b/drivers/alsa/alsa_driver.c @@ -233,129 +233,145 @@ alsa_driver_hw_specific (alsa_driver_t *driver, int hw_monitoring, static void alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) { - switch (driver->playback_sample_bytes) { - case 2: - if (driver->playback_interleaved) { - driver->channel_copy = memcpy_interleave_d16_s16; + if (SNDRV_PCM_FORMAT_FLOAT_LE == driver->playback_sample_format) { + if (driver->playback_interleaved) { + driver->channel_copy = memcpy_interleave_d32_s32; } else { driver->channel_copy = memcpy_fake; } - - switch (driver->dither) { + driver->read_via_copy = sample_move_floatLE_sSs; + driver->write_via_copy = sample_move_dS_floatLE; + } else { + switch (driver->playback_sample_bytes) { + case 2: + if (driver->playback_interleaved) { + driver->channel_copy = memcpy_interleave_d16_s16; + } else { + driver->channel_copy = memcpy_fake; + } + + switch (driver->dither) { case Rectangular: - jack_info("Rectangular dithering at 16 bits"); - driver->write_via_copy = driver->quirk_bswap? - sample_move_dither_rect_d16_sSs: - sample_move_dither_rect_d16_sS; - break; - - case Triangular: - jack_info("Triangular dithering at 16 bits"); - driver->write_via_copy = driver->quirk_bswap? - sample_move_dither_tri_d16_sSs: - sample_move_dither_tri_d16_sS; - break; - + jack_info("Rectangular dithering at 16 bits"); + driver->write_via_copy = driver->quirk_bswap? + sample_move_dither_rect_d16_sSs: + sample_move_dither_rect_d16_sS; + break; + + case Triangular: + jack_info("Triangular dithering at 16 bits"); + driver->write_via_copy = driver->quirk_bswap? + sample_move_dither_tri_d16_sSs: + sample_move_dither_tri_d16_sS; + break; + case Shaped: - jack_info("Noise-shaped dithering at 16 bits"); - driver->write_via_copy = driver->quirk_bswap? - sample_move_dither_shaped_d16_sSs: - sample_move_dither_shaped_d16_sS; - break; - + jack_info("Noise-shaped dithering at 16 bits"); + driver->write_via_copy = driver->quirk_bswap? + sample_move_dither_shaped_d16_sSs: + sample_move_dither_shaped_d16_sS; + break; + default: - driver->write_via_copy = driver->quirk_bswap? - sample_move_d16_sSs : sample_move_d16_sS; - break; - } - break; - - case 3: - if (driver->playback_interleaved) { - driver->channel_copy = memcpy_interleave_d24_s24; - } else { - driver->channel_copy = memcpy_fake; - } - - switch (driver->dither) { + driver->write_via_copy = driver->quirk_bswap? + sample_move_d16_sSs : + sample_move_d16_sS; + break; + } + break; + + case 3: + if (driver->playback_interleaved) { + driver->channel_copy = memcpy_interleave_d24_s24; + } else { + driver->channel_copy = memcpy_fake; + } + + switch (driver->dither) { case Rectangular: - jack_info("Rectangular dithering at 16 bits"); - driver->write_via_copy = driver->quirk_bswap? - sample_move_dither_rect_d24_sSs: - sample_move_dither_rect_d24_sS; - break; - + jack_info("Rectangular dithering at 16 bits"); + driver->write_via_copy = driver->quirk_bswap? + sample_move_dither_rect_d24_sSs: + sample_move_dither_rect_d24_sS; + break; + case Triangular: - jack_info("Triangular dithering at 16 bits"); - driver->write_via_copy = driver->quirk_bswap? - sample_move_dither_tri_d24_sSs: - sample_move_dither_tri_d24_sS; - break; - + jack_info("Triangular dithering at 16 bits"); + driver->write_via_copy = driver->quirk_bswap? + sample_move_dither_tri_d24_sSs: + sample_move_dither_tri_d24_sS; + break; + case Shaped: - jack_info("Noise-shaped dithering at 16 bits"); - driver->write_via_copy = driver->quirk_bswap? - sample_move_dither_shaped_d24_sSs: - sample_move_dither_shaped_d24_sS; - break; - + jack_info("Noise-shaped dithering at 16 bits"); + driver->write_via_copy = driver->quirk_bswap? + sample_move_dither_shaped_d24_sSs: + sample_move_dither_shaped_d24_sS; + break; + default: - driver->write_via_copy = driver->quirk_bswap? - sample_move_d24_sSs : sample_move_d24_sS; + driver->write_via_copy = driver->quirk_bswap? + sample_move_d24_sSs: + sample_move_d24_sS; + break; + } break; - } - break; - - case 4: - if (driver->playback_interleaved) { - driver->channel_copy = memcpy_interleave_d32_s32; - } else { - driver->channel_copy = memcpy_fake; - } - - switch (driver->dither) { + + case 4: + if (driver->playback_interleaved) { + driver->channel_copy = memcpy_interleave_d32_s32; + } else { + driver->channel_copy = memcpy_fake; + } + + switch (driver->dither) { case Rectangular: - jack_info("Rectangular dithering at 16 bits"); - driver->write_via_copy = driver->quirk_bswap? - sample_move_dither_rect_d32u24_sSs: - sample_move_dither_rect_d32u24_sS; - break; - + jack_info("Rectangular dithering at 16 bits"); + driver->write_via_copy = driver->quirk_bswap? + sample_move_dither_rect_d32u24_sSs: + sample_move_dither_rect_d32u24_sS; + break; + case Triangular: - jack_info("Triangular dithering at 16 bits"); - driver->write_via_copy = driver->quirk_bswap? - sample_move_dither_tri_d32u24_sSs: - sample_move_dither_tri_d32u24_sS; - break; - + jack_info("Triangular dithering at 16 bits"); + driver->write_via_copy = driver->quirk_bswap? + sample_move_dither_tri_d32u24_sSs: + sample_move_dither_tri_d32u24_sS; + break; + case Shaped: - jack_info("Noise-shaped dithering at 16 bits"); - driver->write_via_copy = driver->quirk_bswap? - sample_move_dither_shaped_d32u24_sSs: - sample_move_dither_shaped_d32u24_sS; - break; - + jack_info("Noise-shaped dithering at 16 bits"); + driver->write_via_copy = driver->quirk_bswap? + sample_move_dither_shaped_d32u24_sSs: + sample_move_dither_shaped_d32u24_sS; + break; + default: - driver->write_via_copy = driver->quirk_bswap? - sample_move_d32u24_sSs : sample_move_d32u24_sS; + driver->write_via_copy = driver->quirk_bswap? + sample_move_d32u24_sSs: + sample_move_d32u24_sS; + break; + } + break; + } + + switch (driver->capture_sample_bytes) { + case 2: + driver->read_via_copy = driver->quirk_bswap? + sample_move_dS_s16s: + sample_move_dS_s16; break; - } - break; - } - - switch (driver->capture_sample_bytes) { - case 2: - driver->read_via_copy = driver->quirk_bswap? - sample_move_dS_s16s : sample_move_dS_s16; - break; - case 3: - driver->read_via_copy = driver->quirk_bswap? - sample_move_dS_s24s : sample_move_dS_s24; - break; - case 4: - driver->read_via_copy = driver->quirk_bswap? - sample_move_dS_s32u24s : sample_move_dS_s32u24; + case 3: + driver->read_via_copy = driver->quirk_bswap? + sample_move_dS_s24s: + sample_move_dS_s24; + break; + case 4: + driver->read_via_copy = driver->quirk_bswap? + sample_move_dS_s32u24s: + sample_move_dS_s32u24; break; + } } } @@ -377,15 +393,16 @@ alsa_driver_configure_stream (alsa_driver_t *driver, char *device_name, snd_pcm_format_t format; int swapped; } formats[] = { - {"32bit little-endian", SND_PCM_FORMAT_S32_LE, IS_LE}, - {"32bit big-endian", SND_PCM_FORMAT_S32_BE, IS_BE}, + {"32bit float little-endian", SND_PCM_FORMAT_FLOAT_LE}, + {"32bit integer little-endian", SND_PCM_FORMAT_S32_LE, IS_LE}, + {"32bit integer big-endian", SND_PCM_FORMAT_S32_BE, IS_BE}, {"24bit little-endian", SND_PCM_FORMAT_S24_3LE, IS_LE}, {"24bit big-endian", SND_PCM_FORMAT_S24_3BE, IS_BE}, {"16bit little-endian", SND_PCM_FORMAT_S16_LE, IS_LE}, {"16bit big-endian", SND_PCM_FORMAT_S16_BE, IS_BE}, }; #define NUMFORMATS (sizeof(formats)/sizeof(formats[0])) -#define FIRST_16BIT_FORMAT 4 +#define FIRST_16BIT_FORMAT 5 if ((err = snd_pcm_hw_params_any (handle, hw_params)) < 0) { jack_error ("ALSA: no playback configurations available (%s)", @@ -759,6 +776,7 @@ alsa_driver_set_parameters (alsa_driver_t *driver, if (driver->playback_handle) { switch (driver->playback_sample_format) { + case SND_PCM_FORMAT_FLOAT_LE: case SND_PCM_FORMAT_S32_LE: case SND_PCM_FORMAT_S24_3LE: case SND_PCM_FORMAT_S24_3BE: @@ -776,6 +794,7 @@ alsa_driver_set_parameters (alsa_driver_t *driver, if (driver->capture_handle) { switch (driver->capture_sample_format) { + case SND_PCM_FORMAT_FLOAT_LE: case SND_PCM_FORMAT_S32_LE: case SND_PCM_FORMAT_S24_3LE: case SND_PCM_FORMAT_S24_3BE: diff --git a/drivers/alsa/memops.c b/drivers/alsa/memops.c index d293f2f..1d1d86f 100644 --- a/drivers/alsa/memops.c +++ b/drivers/alsa/memops.c @@ -49,8 +49,28 @@ inline unsigned int fast_rand() { return seed; } -void sample_move_d32u24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) +/* functions for native float sample data */ + +void sample_move_floatLE_sSs (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip) { + while (nsamples--) { + *dst = *((float *) src); + dst++; + src += src_skip; + } +} + +void sample_move_dS_floatLE (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { + while (nsamples--) { + *((float *) dst) = *src; + dst += dst_skip; + src++; + } +} + +/* functions for native integer sample data */ + +void sample_move_d32u24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { long long y; int z; @@ -81,9 +101,8 @@ void sample_move_d32u24_sSs (char *dst, jack_default_audio_sample_t *src, unsign } void sample_move_d32u24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - { - long long y; + long long y; while (nsamples--) { y = (long long)(*src * SAMPLE_MAX_24BIT) << 8; @@ -140,7 +159,6 @@ void sample_move_dS_s32u24 (jack_default_audio_sample_t *dst, char *src, unsigne } void sample_move_dither_rect_d32u24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - { /* ALERT: signed sign-extension portability !!! */ jack_default_audio_sample_t x; @@ -176,7 +194,6 @@ void sample_move_dither_rect_d32u24_sSs (char *dst, jack_default_audio_sample_t } void sample_move_dither_rect_d32u24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - { /* ALERT: signed sign-extension portability !!! */ jack_default_audio_sample_t x; @@ -199,8 +216,7 @@ void sample_move_dither_rect_d32u24_sS (char *dst, jack_default_audio_sample_t * } } -void sample_move_dither_tri_d32u24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_tri_d32u24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; float r; @@ -240,8 +256,7 @@ void sample_move_dither_tri_d32u24_sSs (char *dst, jack_default_audio_sample_t state->rm1 = rm1; } -void sample_move_dither_tri_d32u24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_tri_d32u24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; float r; @@ -270,8 +285,7 @@ void sample_move_dither_tri_d32u24_sS (char *dst, jack_default_audio_sample_t * state->rm1 = rm1; } -void sample_move_dither_shaped_d32u24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_shaped_d32u24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; jack_default_audio_sample_t xe; /* the innput sample - filtered error */ @@ -330,8 +344,7 @@ void sample_move_dither_shaped_d32u24_sSs (char *dst, jack_default_audio_sample state->idx = idx; } -void sample_move_dither_shaped_d32u24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_shaped_d32u24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; jack_default_audio_sample_t xe; /* the innput sample - filtered error */ @@ -379,7 +392,6 @@ void sample_move_dither_shaped_d32u24_sS (char *dst, jack_default_audio_sample_ } void sample_move_d24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - { long long y; int z; @@ -409,7 +421,6 @@ void sample_move_d24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned } void sample_move_d24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - { long long y; @@ -483,7 +494,6 @@ void sample_move_dS_s24 (jack_default_audio_sample_t *dst, char *src, unsigned l } void sample_move_dither_rect_d24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - { /* ALERT: signed sign-extension portability !!! */ jack_default_audio_sample_t x; @@ -519,7 +529,6 @@ void sample_move_dither_rect_d24_sSs (char *dst, jack_default_audio_sample_t *sr } void sample_move_dither_rect_d24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - { /* ALERT: signed sign-extension portability !!! */ jack_default_audio_sample_t x; @@ -548,8 +557,7 @@ void sample_move_dither_rect_d24_sS (char *dst, jack_default_audio_sample_t *src } } -void sample_move_dither_tri_d24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_tri_d24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; float r; @@ -588,8 +596,7 @@ void sample_move_dither_tri_d24_sSs (char *dst, jack_default_audio_sample_t *sr state->rm1 = rm1; } -void sample_move_dither_tri_d24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_tri_d24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; float r; @@ -622,8 +629,7 @@ void sample_move_dither_tri_d24_sS (char *dst, jack_default_audio_sample_t *src state->rm1 = rm1; } -void sample_move_dither_shaped_d24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_shaped_d24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; jack_default_audio_sample_t xe; /* the innput sample - filtered error */ @@ -680,8 +686,7 @@ void sample_move_dither_shaped_d24_sSs (char *dst, jack_default_audio_sample_t state->idx = idx; } -void sample_move_dither_shaped_d24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_shaped_d24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; jack_default_audio_sample_t xe; /* the innput sample - filtered error */ @@ -732,8 +737,7 @@ void sample_move_dither_shaped_d24_sS (char *dst, jack_default_audio_sample_t * state->idx = idx; } -void sample_move_d16_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_d16_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { int tmp; @@ -758,8 +762,7 @@ void sample_move_d16_sSs (char *dst, jack_default_audio_sample_t *src, unsigned } } -void sample_move_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { int tmp; @@ -779,8 +782,7 @@ void sample_move_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned } } -void sample_move_dither_rect_d16_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_rect_d16_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t val; int tmp; @@ -806,8 +808,7 @@ void sample_move_dither_rect_d16_sSs (char *dst, jack_default_audio_sample_t *s } } -void sample_move_dither_rect_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_rect_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t val; int tmp; @@ -828,8 +829,7 @@ void sample_move_dither_rect_d16_sS (char *dst, jack_default_audio_sample_t *sr } } -void sample_move_dither_tri_d16_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_tri_d16_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; float r; @@ -861,8 +861,7 @@ void sample_move_dither_tri_d16_sSs (char *dst, jack_default_audio_sample_t *sr state->rm1 = rm1; } -void sample_move_dither_tri_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_tri_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; float r; @@ -890,8 +889,7 @@ void sample_move_dither_tri_d16_sS (char *dst, jack_default_audio_sample_t *src state->rm1 = rm1; } -void sample_move_dither_shaped_d16_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_shaped_d16_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; jack_default_audio_sample_t xe; /* the innput sample - filtered error */ @@ -941,8 +939,7 @@ void sample_move_dither_shaped_d16_sSs (char *dst, jack_default_audio_sample_t state->idx = idx; } -void sample_move_dither_shaped_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - +void sample_move_dither_shaped_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { jack_default_audio_sample_t x; jack_default_audio_sample_t xe; /* the innput sample - filtered error */ @@ -987,8 +984,7 @@ void sample_move_dither_shaped_d16_sS (char *dst, jack_default_audio_sample_t * state->idx = idx; } -void sample_move_dS_s16s (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip) - +void sample_move_dS_s16s (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip) { short z; @@ -1042,7 +1038,6 @@ void sample_merge_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned } void sample_merge_d32u24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) - { /* ALERT: signed sign-extension portability !!! */ @@ -1129,7 +1124,6 @@ merge_memcpy_d32_s32 (char *dst, char *src, unsigned long src_bytes, void merge_memcpy_interleave_d16_s16 (char *dst, char *src, unsigned long src_bytes, unsigned long dst_skip_bytes, unsigned long src_skip_bytes) - { while (src_bytes) { *((short *) dst) += *((short *) src); @@ -1201,3 +1195,4 @@ memcpy_interleave_d32_s32 (char *dst, char *src, unsigned long src_bytes, src_bytes -= 4; } } + diff --git a/drivers/alsa/memops.h b/drivers/alsa/memops.h index 0f4c737..a5582bf 100644 --- a/drivers/alsa/memops.h +++ b/drivers/alsa/memops.h @@ -39,7 +39,11 @@ typedef struct { float e[DITHER_BUF_SIZE]; } dither_state_t; +/* float functions */ +void sample_move_floatLE_sSs (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long dst_skip); +void sample_move_dS_floatLE (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state); +/* integer functions */ void sample_move_d32u24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state); void sample_move_d32u24_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state); void sample_move_d24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state); |