Moved audio code to audio.c/h

This commit is contained in:
rxi
2017-05-06 08:59:26 +01:00
parent c096249beb
commit a41497715c
3 changed files with 41 additions and 22 deletions

29
src/audio.c Normal file
View File

@@ -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();
}

7
src/audio.h Normal file
View File

@@ -0,0 +1,7 @@
#ifndef AUDIO_H
#define AUDIO_H
void audio_init(void);
void audio_deinit(void);
#endif

View File

@@ -12,23 +12,23 @@
#include <dos.h>
#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();