simplified code

svn-id: r9061
This commit is contained in:
Max Horn 2003-07-17 20:44:36 +00:00
parent af75c03981
commit 0c47e125af

View File

@ -469,15 +469,15 @@ protected:
}
};
static inline int clamped_add_16(int a, int b) {
static inline void clamped_add_16(int16& a, int16 b) {
int val = a + b;
if (val > 32767) {
return 32767;
} else if (val < -32768) {
return -32768;
} else
return val;
if (val > 32767)
a = 32767;
else if (val < -32768)
a = -32768;
else
a = val;
}
static void mix_signed_mono_8(int16 *data, uint &len, byte *&s, uint32 &fp_pos,
@ -489,10 +489,8 @@ static void mix_signed_mono_8(int16 *data, uint &len, byte *&s, uint32 &fp_pos,
do {
result = interp.interpolate(fp_pos);
*data = clamped_add_16(*data, result);
data++;
*data = clamped_add_16(*data, result);
data++;
clamped_add_16(*data++, result);
clamped_add_16(*data++, result);
fp_pos += fp_speed;
inc = fp_pos >> 16;
@ -518,10 +516,8 @@ static void mix_unsigned_mono_8(int16 *data, uint &len, byte *&s, uint32 &fp_pos
do {
result = interp.interpolate(fp_pos);
*data = clamped_add_16(*data, result);
data++;
*data = clamped_add_16(*data, result);
data++;
clamped_add_16(*data++, result);
clamped_add_16(*data++, result);
fp_pos += fp_speed;
inc = fp_pos >> 16;
@ -551,15 +547,11 @@ static void mix_unsigned_stereo_8(int16 *data, uint &len, byte *&s, uint32 &fp_p
do {
do {
if (!reverse_stereo) {
*data = clamped_add_16(*data, left.interpolate(fp_pos));
data++;
*data = clamped_add_16(*data, right.interpolate(fp_pos));
data++;
clamped_add_16(*data++, left.interpolate(fp_pos));
clamped_add_16(*data++, right.interpolate(fp_pos));
} else {
*data = clamped_add_16(*data, right.interpolate(fp_pos));
data++;
*data = clamped_add_16(*data, left.interpolate(fp_pos));
data++;
clamped_add_16(*data++, right.interpolate(fp_pos));
clamped_add_16(*data++, left.interpolate(fp_pos));
}
fp_pos += fp_speed;
@ -586,10 +578,8 @@ static void mix_signed_mono_16(int16 *data, uint &len, byte *&s, uint32 &fp_pos,
int16 sample = ((int16)READ_BE_UINT16(s) * volume) / 256;
fp_pos += fp_speed;
*data = clamped_add_16(*data, sample);
data++;
*data = clamped_add_16(*data, sample);
data++;
clamped_add_16(*data++, sample);
clamped_add_16(*data++, sample);
s += (fp_pos >> 16) << 1;
fp_pos &= 0x0000FFFF;
@ -609,15 +599,11 @@ static void mix_signed_stereo_16(int16 *data, uint &len, byte *&s, uint32 &fp_po
fp_pos += fp_speed;
if (!reverse_stereo) {
*data = clamped_add_16(*data, leftS);
data++;
*data = clamped_add_16(*data, rightS);
data++;
clamped_add_16(*data++, leftS);
clamped_add_16(*data++, rightS);
} else {
*data = clamped_add_16(*data, rightS);
data++;
*data = clamped_add_16(*data, leftS);
data++;
clamped_add_16(*data++, rightS);
clamped_add_16(*data++, leftS);
}
s += (fp_pos >> 16) << 2;
fp_pos &= 0x0000FFFF;
@ -700,7 +686,7 @@ void ChannelRaw::mix(int16 *data, uint len) {
_pos = s - _ptr;
if (_size < 1) {
if (_size <= 0) {
if (_flags & SoundMixer::FLAG_LOOP) {
_ptr = _loop_ptr;
_size = _loop_size;
@ -895,10 +881,8 @@ void ChannelMP3::mix(int16 *data, uint len) {
while ((_posInFrame < _synth.pcm.length) && (len > 0)) {
int16 sample = (int16)((scale_sample(*ch++) * volume) / 32);
*data = clamped_add_16(*data, sample);
data++;
*data = clamped_add_16(*data, sample);
data++;
clamped_add_16(*data++, sample);
clamped_add_16(*data++, sample);
len--;
_posInFrame++;
}
@ -991,10 +975,8 @@ void ChannelMP3CDMusic::mix(int16 *data, uint len) {
ch = _synth.pcm.samples[0] + _posInFrame;
while ((_posInFrame < _synth.pcm.length) && (len > 0)) {
int16 sample = (int16)((scale_sample(*ch++) * volume) / 32);
*data = clamped_add_16(*data, sample);
data++;
*data = clamped_add_16(*data, sample);
data++;
clamped_add_16(*data++, sample);
clamped_add_16(*data++, sample);
len--;
_posInFrame++;
}
@ -1106,12 +1088,10 @@ void ChannelVorbis::mix(int16 *data, uint len) {
// Mix the samples in
for (uint i = 0; i < len; i++) {
int16 sample = (int16) ((int32) samples[i * channels] * volume / 256);
*data = clamped_add_16(*data, sample);
data++;
clamped_add_16(*data++, sample);
if (channels > 1)
sample = (int16) ((int32) samples[i * channels + 1] * volume / 256);
*data = clamped_add_16(*data, sample);
data++;
clamped_add_16(*data++, sample);
}
delete [] samples;