pcm_utils: pass only one buffer size to pcm_mix()

pcm_mix() might overflow the destination buffer if it is smaller than
the second buffer.  This is ok because the physical buffer size passed
by cross_fade_apply() is always big enough, but clutters pcm_mix()
with complicated length checks and contains a dangerous buffer
overflow pitfall.  Simplify pcm_mix()/pcm_add() and pass only the
smaller buffer size; let cross_fade_apply() do the memcpy().
This commit is contained in:
Max Kellermann
2008-09-29 17:25:08 +02:00
parent 6e21e24cae
commit c85b570ad7
3 changed files with 28 additions and 22 deletions

View File

@@ -47,8 +47,8 @@ typedef struct _ConvState {
void pcm_volumeChange(char *buffer, int bufferSize, const struct audio_format *format,
int volume);
void pcm_mix(char *buffer1, const char *buffer2, size_t bufferSize1,
size_t bufferSize2, const struct audio_format *format, float portion1);
void pcm_mix(char *buffer1, const char *buffer2, size_t size,
const struct audio_format *format, float portion1);
size_t pcm_convertAudioFormat(const struct audio_format *inFormat,
const char *inBuffer, size_t inSize,