pcm_utils: added inline function pcm_dither()
Merge some code into an inline function, so we can optimize it later only once.
This commit is contained in:
parent
75cba9343e
commit
5b5e46f5ef
@ -25,6 +25,12 @@
|
|||||||
#include "audio_format.h"
|
#include "audio_format.h"
|
||||||
#include "os_compat.h"
|
#include "os_compat.h"
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
pcm_dither(void)
|
||||||
|
{
|
||||||
|
return (rand() & 511) - (rand() & 511);
|
||||||
|
}
|
||||||
|
|
||||||
void pcm_volumeChange(char *buffer, int bufferSize,
|
void pcm_volumeChange(char *buffer, int bufferSize,
|
||||||
const struct audio_format *format,
|
const struct audio_format *format,
|
||||||
int volume)
|
int volume)
|
||||||
@ -46,8 +52,7 @@ void pcm_volumeChange(char *buffer, int bufferSize,
|
|||||||
while (bufferSize > 0) {
|
while (bufferSize > 0) {
|
||||||
temp32 = *buffer16;
|
temp32 = *buffer16;
|
||||||
temp32 *= volume;
|
temp32 *= volume;
|
||||||
temp32 += rand() & 511;
|
temp32 += pcm_dither();
|
||||||
temp32 -= rand() & 511;
|
|
||||||
temp32 += 500;
|
temp32 += 500;
|
||||||
temp32 /= 1000;
|
temp32 /= 1000;
|
||||||
*buffer16 = temp32 > 32767 ? 32767 :
|
*buffer16 = temp32 > 32767 ? 32767 :
|
||||||
@ -60,8 +65,7 @@ void pcm_volumeChange(char *buffer, int bufferSize,
|
|||||||
while (bufferSize > 0) {
|
while (bufferSize > 0) {
|
||||||
temp32 = *buffer8;
|
temp32 = *buffer8;
|
||||||
temp32 *= volume;
|
temp32 *= volume;
|
||||||
temp32 += rand() & 511;
|
temp32 += pcm_dither();
|
||||||
temp32 -= rand() & 511;
|
|
||||||
temp32 += 500;
|
temp32 += 500;
|
||||||
temp32 /= 1000;
|
temp32 /= 1000;
|
||||||
*buffer8 = temp32 > 127 ? 127 :
|
*buffer8 = temp32 > 127 ? 127 :
|
||||||
@ -92,8 +96,7 @@ static void pcm_add(char *buffer1, const char *buffer2, size_t bufferSize1,
|
|||||||
temp32 =
|
temp32 =
|
||||||
(vol1 * (*buffer16_1) +
|
(vol1 * (*buffer16_1) +
|
||||||
vol2 * (*buffer16_2));
|
vol2 * (*buffer16_2));
|
||||||
temp32 += rand() & 511;
|
temp32 += pcm_dither();
|
||||||
temp32 -= rand() & 511;
|
|
||||||
temp32 += 500;
|
temp32 += 500;
|
||||||
temp32 /= 1000;
|
temp32 /= 1000;
|
||||||
*buffer16_1 =
|
*buffer16_1 =
|
||||||
@ -111,8 +114,7 @@ static void pcm_add(char *buffer1, const char *buffer2, size_t bufferSize1,
|
|||||||
while (bufferSize1 > 0 && bufferSize2 > 0) {
|
while (bufferSize1 > 0 && bufferSize2 > 0) {
|
||||||
temp32 =
|
temp32 =
|
||||||
(vol1 * (*buffer8_1) + vol2 * (*buffer8_2));
|
(vol1 * (*buffer8_1) + vol2 * (*buffer8_2));
|
||||||
temp32 += rand() & 511;
|
temp32 += pcm_dither();
|
||||||
temp32 -= rand() & 511;
|
|
||||||
temp32 += 500;
|
temp32 += 500;
|
||||||
temp32 /= 1000;
|
temp32 /= 1000;
|
||||||
*buffer8_1 =
|
*buffer8_1 =
|
||||||
|
Loading…
Reference in New Issue
Block a user