Browse Source

remove gain argument from write_to_channel ops

git-svn-id: svn+ssh://jackaudio.org/trunk/jack@104 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.109.0
pbd 23 years ago
parent
commit
6cdb9d5fbe
5 changed files with 49 additions and 116 deletions
  1. +1
    -1
      alsa_driver.c
  2. +1
    -1
      configure.in
  3. +3
    -6
      jack/alsa_driver.h
  4. +11
    -27
      jack/memops.h
  5. +33
    -81
      memops.c

+ 1
- 1
alsa_driver.c View File

@@ -839,7 +839,7 @@ alsa_driver_wait (alsa_driver_t *driver)
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);


+ 1
- 1
configure.in View File

@@ -5,7 +5,7 @@ AC_CONFIG_AUX_DIR(.)

JACK_MAJOR_VERSION=0
JACK_MINOR_VERSION=11
JACK_MICRO_VERSION=1
JACK_MICRO_VERSION=2

BETA=



+ 3
- 6
jack/alsa_driver.h View File

@@ -34,8 +34,7 @@ typedef void (*ReadCopyFunction) (sample_t *dst, char *src,
unsigned long src_skip_bytes);
typedef void (*WriteCopyFunction) (char *dst, sample_t *src,
unsigned long src_bytes,
unsigned long dst_skip_bytes,
gain_t gain);
unsigned long dst_skip_bytes);
typedef void (*CopyCopyFunction) (char *dst, char *src,
unsigned long src_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,
channel_t channel,
sample_t *buf,
nframes_t nsamples,
gain_t gain)
nframes_t nsamples)
{
driver->write_via_copy (driver->playback_addr[channel],
buf,
nsamples,
driver->playback_interleave_skip,
gain);
driver->playback_interleave_skip);
alsa_driver_mark_channel_done (driver, channel);
}



+ 11
- 27
jack/memops.h View File

@@ -23,47 +23,31 @@

#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_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
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
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);


+ 33
- 81
memops.c View File

@@ -34,23 +34,15 @@
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 !!! */

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;
@@ -76,33 +68,17 @@ void sample_move_d16_sS (char *dst, sample_t *src, unsigned long nsamples, unsi
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;

/* 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 !!! */

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



Loading…
Cancel
Save