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