Hello,
I’m using SDL2 on different GNU/Linux platforms and I have found something I don’t understand regarding audio.
I am uing the function SDL_MixAudioFormat() to halve the volume of a WAV file.
The WAV file content is loaded to the data buffer, then that buffer is supossed to be processed by SDL_MixAudioFormat() and the result should be stored in the data_vol bufer, with the halved volume.
The problem is that I get all zeros in the data_vol buffer. No errors that I can see. If I bypass this volume halving and use the data buffer directly, it works fine.
But all there is in the data_vol buffer are zeros. Any idea on what am I doing wrong here?
Code:
if( SDL_LoadWAV(filename, &wave, &data, &length) == NULL)
{
wavfile.loaded = 0;
resume_audio();
return;
}
int i;
for (i = 0; i < length; i++)
printf ("WAV pos %d data %d\n", i, data[i]);
SDL_LockAudio();
// Halve Volume Of Wav File
uint8_t* data_vol = new uint8_t[length];
//SDL_MixAudio(data_vol, data, length, SDL_MIX_MAXVOLUME / 2);
SDL_MixAudioFormat(data_vol, data, length, wave.format, SDL_MIX_MAXVOLUME / 2);
// This outputs all zeros...
for (i = 0; i < length; i++)
printf ("WAV VOL HALVED pos %d data_vol %d\n", i, data_vol[i]);