From a41497715c7f30dd7974ab4069c510ac1c59dc88 Mon Sep 17 00:00:00 2001 From: rxi Date: Sat, 6 May 2017 08:59:26 +0100 Subject: [PATCH] Moved audio code to audio.c/h --- src/audio.c | 29 +++++++++++++++++++++++++++++ src/audio.h | 7 +++++++ src/main.c | 27 +++++---------------------- 3 files changed, 41 insertions(+), 22 deletions(-) create mode 100644 src/audio.c create mode 100644 src/audio.h diff --git a/src/audio.c b/src/audio.c new file mode 100644 index 0000000..c02916a --- /dev/null +++ b/src/audio.c @@ -0,0 +1,29 @@ +#include "lib/cmixer/cmixer.h" +#include "soundblaster.h" + + +static short audio_buffer[SOUNDBLASTER_SAMPLES_PER_BUFFER * 2]; + +static const short* audio_callback(void) { + /* For the moment the soundblaster code expects mono audio while the cmixer + ** library outputs stereo -- we process to a stereo buffer, then copy the left + ** channel to the start of the buffer */ + int i; + int len = SOUNDBLASTER_SAMPLES_PER_BUFFER; + cm_process(audio_buffer, len * 2); + for (i = 0; i < len; i++) { + audio_buffer[i] = audio_buffer[i * 2]; + } + return audio_buffer; +} + + +void audio_init(void) { + cm_init(soundblaster_getSampleRate()); + soundblaster_init(audio_callback); +} + + +void audio_deinit(void) { + soundblaster_deinit(); +} diff --git a/src/audio.h b/src/audio.h new file mode 100644 index 0000000..df9a168 --- /dev/null +++ b/src/audio.h @@ -0,0 +1,7 @@ +#ifndef AUDIO_H +#define AUDIO_H + +void audio_init(void); +void audio_deinit(void); + +#endif diff --git a/src/main.c b/src/main.c index 0685268..08582d3 100644 --- a/src/main.c +++ b/src/main.c @@ -12,23 +12,23 @@ #include #include "lib/dmt/dmt.h" -#include "lib/cmixer/cmixer.h" -#include "vga.h" + #include "luaobj.h" +#include "vga.h" +#include "audio.h" #include "keyboard.h" #include "filesystem.h" #include "mouse.h" #include "image.h" #include "palette.h" #include "package.h" -#include "soundblaster.h" static lua_State *L; static void deinit(void) { /* Deinit and clear up everything. Called at exit */ - soundblaster_deinit(); + audio_deinit(); vga_deinit(); keyboard_deinit(); lua_close(L); @@ -47,22 +47,6 @@ static int onLuaPanic(lua_State *L) { } -static short audioBuffer[SOUNDBLASTER_SAMPLES_PER_BUFFER * 2]; - -static const short* audioCallback(void) { - /* For the moment the soundblaster code expects mono audio while the cmixer - ** library outputs stereo -- we process to a stereo buffer, then copy the left - ** channel to the start of the buffer */ - int i; - int len = SOUNDBLASTER_SAMPLES_PER_BUFFER; - cm_process(audioBuffer, len * 2); - for (i = 0; i < len; i++) { - audioBuffer[i] = audioBuffer[i * 2]; - } - return audioBuffer; -} - - int luaopen_love(lua_State *L); int main(int argc, char **argv) { @@ -74,8 +58,7 @@ int main(int argc, char **argv) { /* Init everything */ atexit(deinit); - cm_init(soundblaster_getSampleRate()); - soundblaster_init(audioCallback); + audio_init(); vga_init(); palette_init(); keyboard_init();