summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2007-04-19 11:44:38 +0200
committerDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2007-04-19 11:44:38 +0200
commit1ab66e82c8d65ee7dbaded31d4c07e1ddaf8b868 (patch)
treef957ef5926b20fce780cfcac50335acda2a30078
parent3df56a114f8f6549d7c518b9737451b3f0a6ff5e (diff)
downloadxine-lib-1ab66e82c8d65ee7dbaded31d4c07e1ddaf8b868.tar.gz
xine-lib-1ab66e82c8d65ee7dbaded31d4c07e1ddaf8b868.tar.bz2
audio_filter_amp: calculate the total number of frames to iterate over just once.
This way, it avoids to calculate the multiplication in the for loops and in the memset() call.
-rw-r--r--src/xine-engine/audio_out.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/xine-engine/audio_out.c b/src/xine-engine/audio_out.c
index fb2758c7a..66e28d80d 100644
--- a/src/xine-engine/audio_out.c
+++ b/src/xine-engine/audio_out.c
@@ -578,18 +578,16 @@ static void audio_filter_compress (aos_t *this, int16_t *mem, int num_frames) {
}
static void audio_filter_amp (aos_t *this, void *buf, int num_frames) {
-
- int i;
- int num_channels;
double amp_factor;
-
- num_channels = _x_ao_mode2channels (this->input.mode);
- if (!num_channels)
+ int i;
+ const int total_frames = num_frames * _x_ao_mode2channels (this->input.mode);
+
+ if (!total_frames)
return;
amp_factor=this->amp_factor;
if (this->amp_mute || amp_factor == 0) {
- memset (buf, 0, num_frames * num_channels * (this->input.bits / 8));
+ memset (buf, 0, total_frames * (this->input.bits / 8));
return;
}
@@ -597,7 +595,7 @@ static void audio_filter_amp (aos_t *this, void *buf, int num_frames) {
int16_t test;
int8_t *mem = (int8_t *) buf;
- for (i=0; i<num_frames*num_channels; i++) {
+ for (i=0; i<total_frames; i++) {
test = mem[i] * amp_factor;
/* Force limit on amp_factor to prevent clipping */
if (test < INT8_MIN) {
@@ -614,7 +612,7 @@ static void audio_filter_amp (aos_t *this, void *buf, int num_frames) {
int32_t test;
int16_t *mem = (int16_t *) buf;
- for (i=0; i<num_frames*num_channels; i++) {
+ for (i=0; i<total_frames; i++) {
test = mem[i] * amp_factor;
/* Force limit on amp_factor to prevent clipping */
if (test < INT16_MIN) {