This commit is contained in:
Nishi 2025-11-30 09:52:44 +09:00
commit fc028824b3
Signed by: nishi
GPG key ID: 27EF69B208EB9343

View file

@ -6,28 +6,28 @@
typedef struct driver { typedef struct driver {
MDEAudioHandler handler; MDEAudioHandler handler;
void* user; void* user;
ma_device device; ma_device device;
} driver_t; } driver_t;
void data_callback(ma_device* device, void* output, const void* input, ma_uint32 frame_count){ void data_callback(ma_device* device, void* output, const void* input, ma_uint32 frame_count) {
driver_t* drv = device->pUserData; driver_t* drv = device->pUserData;
drv->handler(drv, drv->user, output, frame_count); drv->handler(drv, drv->user, output, frame_count);
} }
MDEAudio MDEAudioOpen(MDEAudioHandler handler, void* user){ MDEAudio MDEAudioOpen(MDEAudioHandler handler, void* user) {
driver_t* drv = malloc(sizeof(*drv)); driver_t* drv = malloc(sizeof(*drv));
ma_device_config config = ma_device_config_init(ma_device_type_playback); ma_device_config config = ma_device_config_init(ma_device_type_playback);
config.playback.format = ma_format_s16; config.playback.format = ma_format_s16;
config.playback.channels = 2; config.playback.channels = 2;
config.sampleRate = MDEAudioRate; config.sampleRate = MDEAudioRate;
config.dataCallback = data_callback; config.dataCallback = data_callback;
config.pUserData = drv; config.pUserData = drv;
drv->handler = handler; drv->handler = handler;
drv->user = user; drv->user = user;
if(ma_device_init(NULL, &config, &drv->device) != MA_SUCCESS){ if(ma_device_init(NULL, &config, &drv->device) != MA_SUCCESS) {
free(drv); free(drv);
return NULL; return NULL;
} }
@ -35,13 +35,13 @@ MDEAudio MDEAudioOpen(MDEAudioHandler handler, void* user){
return drv; return drv;
} }
void MDEAudioClose(MDEAudio handle){ void MDEAudioClose(MDEAudio handle) {
driver_t* drv = handle; driver_t* drv = handle;
ma_device_uninit(&drv->device); ma_device_uninit(&drv->device);
free(handle); free(handle);
} }
void MDEAudioStart(MDEAudio handle){ void MDEAudioStart(MDEAudio handle) {
driver_t* drv = handle; driver_t* drv = handle;
ma_device_start(&drv->device); ma_device_start(&drv->device);
} }