changeset 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 f48367c5a92e
files src/libmlk-core/core/sys.c src/libmlk-core/core/sys_p.h
diffstat 2 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/libmlk-core/core/sys.c	Wed Jan 05 12:45:17 2022 +0100
+++ b/src/libmlk-core/core/sys.c	Fri Jan 07 08:20:12 2022 +0100
@@ -298,6 +298,8 @@
 	stream->samples = alloc_array(stream->samplesz, sizeof (*stream->samples));
 	stream->format = info->channels == 1 ? AL_FORMAT_MONO16 : AL_FORMAT_STEREO16;
 
+	sf_command(file, SFC_SET_SCALE_FLOAT_INT_READ, NULL, SF_TRUE);
+
 	if (sf_read_short(file, stream->samples, stream->samplesz) != stream->samplesz) {
 		free(stream->samples);
 		free(stream);
@@ -306,7 +308,7 @@
 
 	alGenBuffers(1, &stream->buffer);
 	alBufferData(stream->buffer, stream->format, stream->samples,
-	    stream->samplesz * sizeof (ALushort), stream->samplerate);
+	    stream->samplesz * sizeof (*stream->samples), stream->samplerate);
 	alGenSources(1, &stream->source);
 	alSourcei(stream->source, AL_BUFFER, stream->buffer);
 	
--- a/src/libmlk-core/core/sys_p.h	Wed Jan 05 12:45:17 2022 +0100
+++ b/src/libmlk-core/core/sys_p.h	Fri Jan 07 08:20:12 2022 +0100
@@ -23,12 +23,13 @@
 
 #include <al.h>
 #include <alc.h>
+#include <alext.h>
 
 extern ALCdevice *audio_dev;
 extern ALCcontext *audio_ctx;
 
 struct audiostream {
-	ALshort *samples;
+	short *samples;
 	ALsizei samplesz;
 	ALsizei samplerate;
 	ALuint buffer;