comparison src/libmlk-core/core/sys.c @ 380:31e2f6d35c34

core: fix sndfile distortion issue
author David Demelier <markand@malikania.fr>
date Fri, 07 Jan 2022 08:20:12 +0100
parents 67c1c46af2c8
children 8273c40a5691
comparison
equal deleted inserted replaced
379:67c1c46af2c8 380:31e2f6d35c34
296 stream->samplerate = info->samplerate; 296 stream->samplerate = info->samplerate;
297 stream->samplesz = info->frames * info->channels; 297 stream->samplesz = info->frames * info->channels;
298 stream->samples = alloc_array(stream->samplesz, sizeof (*stream->samples)); 298 stream->samples = alloc_array(stream->samplesz, sizeof (*stream->samples));
299 stream->format = info->channels == 1 ? AL_FORMAT_MONO16 : AL_FORMAT_STEREO16; 299 stream->format = info->channels == 1 ? AL_FORMAT_MONO16 : AL_FORMAT_STEREO16;
300 300
301 sf_command(file, SFC_SET_SCALE_FLOAT_INT_READ, NULL, SF_TRUE);
302
301 if (sf_read_short(file, stream->samples, stream->samplesz) != stream->samplesz) { 303 if (sf_read_short(file, stream->samples, stream->samplesz) != stream->samplesz) {
302 free(stream->samples); 304 free(stream->samples);
303 free(stream); 305 free(stream);
304 stream = NULL; 306 stream = NULL;
305 } 307 }
306 308
307 alGenBuffers(1, &stream->buffer); 309 alGenBuffers(1, &stream->buffer);
308 alBufferData(stream->buffer, stream->format, stream->samples, 310 alBufferData(stream->buffer, stream->format, stream->samples,
309 stream->samplesz * sizeof (ALushort), stream->samplerate); 311 stream->samplesz * sizeof (*stream->samples), stream->samplerate);
310 alGenSources(1, &stream->source); 312 alGenSources(1, &stream->source);
311 alSourcei(stream->source, AL_BUFFER, stream->buffer); 313 alSourcei(stream->source, AL_BUFFER, stream->buffer);
312 314
313 sf_close(file); 315 sf_close(file);
314 316