git-svn-id: svn+ssh://jackaudio.org/trunk/jack@104 0c269be4-1314-0410-8aa9-9f06e86f4224tags/0.109.0
@@ -839,7 +839,7 @@ alsa_driver_wait (alsa_driver_t *driver) | |||||
continue; | continue; | ||||
} | } | ||||
alsa_driver_write_to_channel (driver, 1, jack_port_get_buffer (port, contiguous), contiguous, 1.0); | |||||
alsa_driver_write_to_channel (driver, 1, jack_port_get_buffer (port, contiguous), contiguous); | |||||
} | } | ||||
engine->process_unlock (engine); | engine->process_unlock (engine); | ||||
@@ -5,7 +5,7 @@ AC_CONFIG_AUX_DIR(.) | |||||
JACK_MAJOR_VERSION=0 | JACK_MAJOR_VERSION=0 | ||||
JACK_MINOR_VERSION=11 | JACK_MINOR_VERSION=11 | ||||
JACK_MICRO_VERSION=1 | |||||
JACK_MICRO_VERSION=2 | |||||
BETA= | BETA= | ||||
@@ -34,8 +34,7 @@ typedef void (*ReadCopyFunction) (sample_t *dst, char *src, | |||||
unsigned long src_skip_bytes); | unsigned long src_skip_bytes); | ||||
typedef void (*WriteCopyFunction) (char *dst, sample_t *src, | typedef void (*WriteCopyFunction) (char *dst, sample_t *src, | ||||
unsigned long src_bytes, | unsigned long src_bytes, | ||||
unsigned long dst_skip_bytes, | |||||
gain_t gain); | |||||
unsigned long dst_skip_bytes); | |||||
typedef void (*CopyCopyFunction) (char *dst, char *src, | typedef void (*CopyCopyFunction) (char *dst, char *src, | ||||
unsigned long src_bytes, | unsigned long src_bytes, | ||||
unsigned long dst_skip_bytes, | unsigned long dst_skip_bytes, | ||||
@@ -155,14 +154,12 @@ static __inline__ void alsa_driver_read_from_channel (alsa_driver_t *driver, | |||||
static __inline__ void alsa_driver_write_to_channel (alsa_driver_t *driver, | static __inline__ void alsa_driver_write_to_channel (alsa_driver_t *driver, | ||||
channel_t channel, | channel_t channel, | ||||
sample_t *buf, | sample_t *buf, | ||||
nframes_t nsamples, | |||||
gain_t gain) | |||||
nframes_t nsamples) | |||||
{ | { | ||||
driver->write_via_copy (driver->playback_addr[channel], | driver->write_via_copy (driver->playback_addr[channel], | ||||
buf, | buf, | ||||
nsamples, | nsamples, | ||||
driver->playback_interleave_skip, | |||||
gain); | |||||
driver->playback_interleave_skip); | |||||
alsa_driver_mark_channel_done (driver, channel); | alsa_driver_mark_channel_done (driver, channel); | ||||
} | } | ||||
@@ -23,47 +23,31 @@ | |||||
#include <jack/types.h> | #include <jack/types.h> | ||||
void sample_move_d32u24_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip, gain_t); | |||||
void sample_move_d16_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip, gain_t); | |||||
void sample_move_d32u24_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip); | |||||
void sample_move_d16_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip); | |||||
void sample_move_dS_s32u24 (sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip); | void sample_move_dS_s32u24 (sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip); | ||||
void sample_move_dS_s16 (sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip); | void sample_move_dS_s16 (sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip); | ||||
void sample_merge_d16_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip, gain_t); | |||||
void sample_merge_d32u24_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip, gain_t); | |||||
void sample_merge_d16_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip); | |||||
void sample_merge_d32u24_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip); | |||||
static __inline__ void | static __inline__ void | ||||
sample_merge (sample_t *dst, sample_t *src, unsigned long cnt, gain_t gain) | |||||
sample_merge (sample_t *dst, sample_t *src, unsigned long cnt) | |||||
{ | { | ||||
if (gain == 1.0) { | |||||
while (cnt--) { | |||||
*dst += *src; | |||||
dst++; | |||||
src++; | |||||
} | |||||
} else { | |||||
while (cnt--) { | |||||
*dst += (*src * gain); | |||||
dst++; | |||||
src++; | |||||
} | |||||
while (cnt--) { | |||||
*dst += *src; | |||||
dst++; | |||||
src++; | |||||
} | } | ||||
} | } | ||||
static __inline__ void | static __inline__ void | ||||
sample_memcpy (sample_t *dst, sample_t *src, unsigned long cnt, gain_t gain) | |||||
sample_memcpy (sample_t *dst, sample_t *src, unsigned long cnt) | |||||
{ | { | ||||
if (gain == 1.0) { | |||||
memcpy (dst, src, cnt * sizeof (sample_t)); | |||||
} else { | |||||
while (cnt--) { | |||||
*dst = (*src * gain); | |||||
dst++; | |||||
src++; | |||||
} | |||||
} | |||||
memcpy (dst, src, cnt * sizeof (sample_t)); | |||||
} | } | ||||
void memset_interleave (char *dst, char val, unsigned long bytes, unsigned long unit_bytes, unsigned long skip_bytes); | void memset_interleave (char *dst, char val, unsigned long bytes, unsigned long unit_bytes, unsigned long skip_bytes); | ||||
@@ -34,23 +34,15 @@ | |||||
floating-point => int conversion the compiler provides. | floating-point => int conversion the compiler provides. | ||||
*/ | */ | ||||
void sample_move_d32u24_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip, gain_t gain) | |||||
void sample_move_d32u24_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip) | |||||
{ | { | ||||
/* ALERT: signed sign-extension portability !!! */ | /* ALERT: signed sign-extension portability !!! */ | ||||
if (gain == 1.0) { | |||||
while (nsamples--) { | |||||
*((int *) dst) = ((int) (*src * SAMPLE_MAX_24BIT)) << 8; | |||||
dst += dst_skip; | |||||
src++; | |||||
} | |||||
} else { | |||||
while (nsamples--) { | |||||
*((int *) dst) = ((int) ((*src * gain) * SAMPLE_MAX_24BIT)) << 8; | |||||
dst += dst_skip; | |||||
src++; | |||||
} | |||||
while (nsamples--) { | |||||
*((int *) dst) = ((int) (*src * SAMPLE_MAX_24BIT)) << 8; | |||||
dst += dst_skip; | |||||
src++; | |||||
} | } | ||||
} | } | ||||
@@ -65,7 +57,7 @@ void sample_move_dS_s32u24 (sample_t *dst, char *src, unsigned long nsamples, un | |||||
} | } | ||||
} | } | ||||
void sample_move_d16_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip, gain_t gain) | |||||
void sample_move_d16_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip) | |||||
{ | { | ||||
sample_t val; | sample_t val; | ||||
@@ -76,33 +68,17 @@ void sample_move_d16_sS (char *dst, sample_t *src, unsigned long nsamples, unsi | |||||
sucks that h/w. | sucks that h/w. | ||||
*/ | */ | ||||
if (gain == 1.0) { | |||||
while (nsamples--) { | |||||
val = *src; | |||||
if (val > 1.0f) { | |||||
*((short *)dst) = SHRT_MAX; | |||||
} else if (val < -1.0f) { | |||||
*((short *)dst) = SHRT_MIN; | |||||
} else { | |||||
*((short *) dst) = (short) (val * SAMPLE_MAX_16BIT); | |||||
} | |||||
dst += dst_skip; | |||||
src++; | |||||
} | |||||
} else { | |||||
while (nsamples--) { | |||||
val = *src * gain; | |||||
if (val > 1.0f) { | |||||
*((short *)dst) = SHRT_MAX; | |||||
} else if (val < -1.0f) { | |||||
*((short *)dst) = SHRT_MIN; | |||||
} else { | |||||
*((short *) dst) = (short) (val * SAMPLE_MAX_16BIT); | |||||
} | |||||
dst += dst_skip; | |||||
src++; | |||||
while (nsamples--) { | |||||
val = *src; | |||||
if (val > 1.0f) { | |||||
*((short *)dst) = SHRT_MAX; | |||||
} else if (val < -1.0f) { | |||||
*((short *)dst) = SHRT_MIN; | |||||
} else { | |||||
*((short *) dst) = (short) (val * SAMPLE_MAX_16BIT); | |||||
} | } | ||||
dst += dst_skip; | |||||
src++; | |||||
} | } | ||||
} | } | ||||
@@ -117,60 +93,36 @@ void sample_move_dS_s16 (sample_t *dst, char *src, unsigned long nsamples, unsig | |||||
} | } | ||||
} | } | ||||
void sample_merge_d16_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip, gain_t gain) | |||||
void sample_merge_d16_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip) | |||||
{ | { | ||||
short val; | short val; | ||||
/* ALERT: signed sign-extension portability !!! */ | /* ALERT: signed sign-extension portability !!! */ | ||||
if (gain == 1.0) { | |||||
while (nsamples--) { | |||||
val = (short) (*src * SAMPLE_MAX_16BIT); | |||||
if (val > SHRT_MAX - *((short *) dst)) { | |||||
*((short *)dst) = SHRT_MAX; | |||||
} else if (val < SHRT_MIN - *((short *) dst)) { | |||||
*((short *)dst) = SHRT_MIN; | |||||
} else { | |||||
*((short *) dst) += val; | |||||
} | |||||
dst += dst_skip; | |||||
src++; | |||||
} | |||||
} else { | |||||
while (nsamples--) { | |||||
val = (short) (*src * gain * SAMPLE_MAX_16BIT); | |||||
if (val > SHRT_MAX - *((short *) dst)) { | |||||
*((short *)dst) = SHRT_MAX; | |||||
} else if (val < SHRT_MIN - *((short *) dst)) { | |||||
*((short *)dst) = SHRT_MIN; | |||||
} else { | |||||
*((short *) dst) += val; | |||||
} | |||||
dst += dst_skip; | |||||
src++; | |||||
while (nsamples--) { | |||||
val = (short) (*src * SAMPLE_MAX_16BIT); | |||||
if (val > SHRT_MAX - *((short *) dst)) { | |||||
*((short *)dst) = SHRT_MAX; | |||||
} else if (val < SHRT_MIN - *((short *) dst)) { | |||||
*((short *)dst) = SHRT_MIN; | |||||
} else { | |||||
*((short *) dst) += val; | |||||
} | } | ||||
dst += dst_skip; | |||||
src++; | |||||
} | } | ||||
} | } | ||||
void sample_merge_d32u24_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip, gain_t gain) | |||||
void sample_merge_d32u24_sS (char *dst, sample_t *src, unsigned long nsamples, unsigned long dst_skip) | |||||
{ | { | ||||
/* ALERT: signed sign-extension portability !!! */ | /* ALERT: signed sign-extension portability !!! */ | ||||
if (gain == 1.0) { | |||||
while (nsamples--) { | |||||
*((int *) dst) += (((int) (*src * SAMPLE_MAX_24BIT)) << 8); | |||||
dst += dst_skip; | |||||
src++; | |||||
} | |||||
} else { | |||||
while (nsamples--) { | |||||
*((int *) dst) += (((int) ((*src * gain) * SAMPLE_MAX_24BIT)) << 8); | |||||
dst += dst_skip; | |||||
src++; | |||||
} | |||||
while (nsamples--) { | |||||
*((int *) dst) += (((int) (*src * SAMPLE_MAX_24BIT)) << 8); | |||||
dst += dst_skip; | |||||
src++; | |||||
} | } | ||||
} | } | ||||