Skip to content

Commit

Permalink
Hook up audio output to the JS API.
Browse files Browse the repository at this point in the history
  • Loading branch information
mihaip committed Jan 25, 2024
1 parent cc50ab2 commit 023ef5d
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/CMakeLists.txt
@@ -1,16 +1,16 @@

set(SOURCES
adb.c audio.c bmap.c cfgopts.c configuration.c change.c cycInt.c
adb.c bmap.c cfgopts.c configuration.c change.c cycInt.c
dialog.c dma.c esp.c enet_slirp.c enet_pcap.c ethernet.c file.c
floppy.c grab.c ioMem.c ioMemTabNEXT.c ioMemTabTurbo.c keymap.c kms.c
m68000.c mo.c nbic.c NextBus.cpp paths.c printer.c queue.c
ramdac.c reset.c rom.c rs.c rtcnvram.c scandir.c scc.c host.c
scsi.c shortcut.c snd.c statusbar.c str.c sysReg.c tmc.c video.c zip.c)

if (EMSCRIPTEN)
set(SOURCES ${SOURCES} file_js.c main_js.c screen_js.c)
set(SOURCES ${SOURCES} audio_js.c file_js.c main_js.c screen_js.c)
else()
set(SOURCES ${SOURCES} main.c screen.c)
set(SOURCES ${SOURCES} audio.c main.c screen.c)
endif(EMSCRIPTEN)

# When building for macOS, define specific sources for gui and resources
Expand Down
48 changes: 48 additions & 0 deletions src/audio_js.c
@@ -0,0 +1,48 @@
#include "host.h"
#include "audio.h"
#include "main.h"
#include "snd.h"
#include "sysdeps.h"

#include <emscripten.h>

void Audio_Output_Enable(bool bEnable) {

}

void Audio_Output_Init(void) {
uint32_t sample_size = 16;
uint32_t channels = 2;
EM_ASM_({ workerApi.didOpenAudio($0, $1, $2, $3); }, SOUND_OUT_FREQUENCY, sample_size, channels);
}

void Audio_Output_UnInit(void) {

}

void Audio_Output_Queue(uint8_t* data, int len) {
EM_ASM_({ workerApi.enqueueAudio($0, $1); }, data, len);
}

void Audio_Output_Queue_Clear(void) {

}

uint32_t Audio_Output_Queue_Size(void) {
int js_audio_buffer_size = EM_ASM_INT_V({ return workerApi.audioBufferSize(); });
return js_audio_buffer_size;
}

// Audio input is currently unsupported
void Audio_Input_Enable(bool bEnable) {}
void Audio_Input_Init(void) {}
void Audio_Input_UnInit(void) {}
void Audio_Input_Lock(void) {}
int Audio_Input_Read(int16_t* sample) {
*sample = 0; // silence
return 0;
}
int Audio_Input_BufSize(void) {
return 0;
}
void Audio_Input_Unlock(void) {}

0 comments on commit 023ef5d

Please sign in to comment.