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++; | |||||
| } | } | ||||
| } | } | ||||