diff --git a/src/soundsourcemp3.cpp b/src/soundsourcemp3.cpp index 37b01d9..679a558 100644 --- a/src/soundsourcemp3.cpp +++ b/src/soundsourcemp3.cpp @@ -663,12 +663,23 @@ int SoundSourceMp3::findFrame(int pos) inline signed int SoundSourceMp3::madScale(mad_fixed_t sample) { + static int min = 0, max = 0; + static int row = 0, max_row = 0; + sample += (1L << (MAD_F_FRACBITS - 16)); - if (sample >= MAD_F_ONE) + if (sample >= MAD_F_ONE) { + if (max < sample) max = sample; + if(++row > max_row) max_row = row; sample = MAD_F_ONE - 1; - else if (sample < -MAD_F_ONE) + + } else if (sample < -MAD_F_ONE) { + if (min > sample) min = sample; + if(++row > max_row) max_row = row; sample = -MAD_F_ONE; + } else { + row = 0; + } return sample >> (MAD_F_FRACBITS + 1 - 16); }