diff --git a/extras/backends/pipewire/miniaudio_pipewire.c b/extras/backends/pipewire/miniaudio_pipewire.c index d055e0b2..555f1fb1 100644 --- a/extras/backends/pipewire/miniaudio_pipewire.c +++ b/extras/backends/pipewire/miniaudio_pipewire.c @@ -2895,6 +2895,12 @@ ma_device_backend_vtable* ma_device_backend_pipewire = &ma_gDeviceBackendVTable_ ma_device_backend_vtable* ma_device_backend_pipewire = NULL; #endif /* MA_HAS_PIPEWIRE */ +MA_API ma_device_backend_vtable* ma_pipewire_get_vtable(void) +{ + return ma_device_backend_pipewire; +} + + MA_API ma_context_config_pipewire ma_context_config_pipewire_init(void) { ma_context_config_pipewire config; diff --git a/extras/backends/pipewire/miniaudio_pipewire.h b/extras/backends/pipewire/miniaudio_pipewire.h index 6b7d1b61..8320a54f 100644 --- a/extras/backends/pipewire/miniaudio_pipewire.h +++ b/extras/backends/pipewire/miniaudio_pipewire.h @@ -7,9 +7,6 @@ extern "C" { #endif -extern ma_device_backend_vtable* ma_device_backend_pipewire; - - typedef struct { int _unused; @@ -27,6 +24,10 @@ typedef struct MA_API ma_device_config_pipewire ma_device_config_pipewire_init(void); + +extern ma_device_backend_vtable* ma_device_backend_pipewire; +MA_API ma_device_backend_vtable* ma_pipewire_get_vtable(void); + #ifdef __cplusplus } #endif diff --git a/extras/backends/sdl2/miniaudio_sdl2.c b/extras/backends/sdl2/miniaudio_sdl2.c index e5855613..59ab5e7a 100644 --- a/extras/backends/sdl2/miniaudio_sdl2.c +++ b/extras/backends/sdl2/miniaudio_sdl2.c @@ -685,6 +685,11 @@ ma_device_backend_vtable* ma_device_backend_sdl2 = &ma_gDeviceBackendVTable_SDL2 ma_device_backend_vtable* ma_device_backend_sdl2 = NULL; #endif /* MA_HAS_SDL2 */ +MA_API ma_device_backend_vtable* ma_sdl2_get_vtable(void) +{ + return ma_device_backend_sdl2; +} + MA_API ma_context_config_sdl2 ma_context_config_sdl2_init(void) { diff --git a/extras/backends/sdl2/miniaudio_sdl2.h b/extras/backends/sdl2/miniaudio_sdl2.h index 9264edbf..10aa1eba 100644 --- a/extras/backends/sdl2/miniaudio_sdl2.h +++ b/extras/backends/sdl2/miniaudio_sdl2.h @@ -10,9 +10,6 @@ and device configs. extern "C" { #endif -extern ma_device_backend_vtable* ma_device_backend_sdl2; - - typedef struct { int _unused; @@ -28,6 +25,10 @@ typedef struct MA_API ma_device_config_sdl2 ma_device_config_sdl2_init(void); + +extern ma_device_backend_vtable* ma_device_backend_sdl2; +MA_API ma_device_backend_vtable* ma_sdl2_get_vtable(void); + #ifdef __cplusplus } #endif diff --git a/extras/decoders/libopus/miniaudio_libopus.c b/extras/decoders/libopus/miniaudio_libopus.c index f0c9ea1d..4598c2e5 100644 --- a/extras/decoders/libopus/miniaudio_libopus.c +++ b/extras/decoders/libopus/miniaudio_libopus.c @@ -555,4 +555,9 @@ ma_decoding_backend_vtable* ma_decoding_backend_libopus = &ma_gDecodingBackendVT ma_decoding_backend_vtable* ma_decoding_backend_libopus = NULL; #endif +MA_API ma_decoding_backend_vtable* ma_libopus_get_vtable(void) +{ + return ma_decoding_backend_libopus; +} + #endif /* miniaudio_libopus_c */ diff --git a/extras/decoders/libopus/miniaudio_libopus.h b/extras/decoders/libopus/miniaudio_libopus.h index 80dce280..de67e731 100644 --- a/extras/decoders/libopus/miniaudio_libopus.h +++ b/extras/decoders/libopus/miniaudio_libopus.h @@ -35,6 +35,7 @@ MA_API ma_result ma_libopus_get_length_in_pcm_frames(ma_libopus* pOpus, ma_uint6 /* Decoding backend vtable. This is what you'll plug into ma_decoder_config.pBackendVTables. No user data required. */ extern ma_decoding_backend_vtable* ma_decoding_backend_libopus; +MA_API ma_decoding_backend_vtable* ma_libopus_get_vtable(void); #ifdef __cplusplus } diff --git a/extras/decoders/libvorbis/miniaudio_libvorbis.c b/extras/decoders/libvorbis/miniaudio_libvorbis.c index d678888b..ad8d538a 100644 --- a/extras/decoders/libvorbis/miniaudio_libvorbis.c +++ b/extras/decoders/libvorbis/miniaudio_libvorbis.c @@ -609,4 +609,9 @@ ma_decoding_backend_vtable* ma_decoding_backend_libvorbis = &ma_gDecodingBackend ma_decoding_backend_vtable* ma_decoding_backend_libvorbis = NULL; #endif +MA_API ma_decoding_backend_vtable* ma_libvorbis_get_vtable(void) +{ + return ma_decoding_backend_libvorbis; +} + #endif /* miniaudio_libvorbis_c */ diff --git a/extras/decoders/libvorbis/miniaudio_libvorbis.h b/extras/decoders/libvorbis/miniaudio_libvorbis.h index 6699266c..e5316a8d 100644 --- a/extras/decoders/libvorbis/miniaudio_libvorbis.h +++ b/extras/decoders/libvorbis/miniaudio_libvorbis.h @@ -35,6 +35,7 @@ MA_API ma_result ma_libvorbis_get_length_in_pcm_frames(ma_libvorbis* pVorbis, ma /* Decoding backend vtable. This is what you'll plug into ma_decoder_config.pBackendVTables. No user data required. */ extern ma_decoding_backend_vtable* ma_decoding_backend_libvorbis; +MA_API ma_decoding_backend_vtable* ma_libvorbis_get_vtable(void); #ifdef __cplusplus } diff --git a/miniaudio.h b/miniaudio.h index cf4e16c3..3e7198f1 100644 --- a/miniaudio.h +++ b/miniaudio.h @@ -6791,6 +6791,7 @@ MA_API ma_device_config_wasapi ma_device_config_wasapi_init(void); extern ma_device_backend_vtable* ma_device_backend_wasapi; +MA_API ma_device_backend_vtable* ma_wasapi_get_vtable(void); /* END WASAPI */ @@ -6812,6 +6813,7 @@ MA_API ma_device_config_dsound ma_device_config_dsound_init(void); extern ma_device_backend_vtable* ma_device_backend_dsound; +MA_API ma_device_backend_vtable* ma_dsound_get_vtable(void); /* END DSOUND */ @@ -6833,6 +6835,7 @@ MA_API ma_device_config_winmm ma_device_config_winmm_init(void); extern ma_device_backend_vtable* ma_device_backend_winmm; +MA_API ma_device_backend_vtable* ma_winmm_get_vtable(void); /* END WINMM */ @@ -6883,6 +6886,7 @@ MA_API ma_device_config_coreaudio ma_device_config_coreaudio_init(void); extern ma_device_backend_vtable* ma_device_backend_coreaudio; +MA_API ma_device_backend_vtable* ma_coreaudio_get_vtable(void); /* END COREAUDIO */ @@ -6908,6 +6912,7 @@ MA_API ma_device_config_pulseaudio ma_device_config_pulseaudio_init(void); extern ma_device_backend_vtable* ma_device_backend_pulseaudio; +MA_API ma_device_backend_vtable* ma_pulseaudio_get_vtable(void); /* END PULSEAUDIO */ @@ -6933,6 +6938,7 @@ MA_API ma_device_config_alsa ma_device_config_alsa_init(void); extern ma_device_backend_vtable* ma_device_backend_alsa; +MA_API ma_device_backend_vtable* ma_alsa_get_vtable(void); /* END ALSA */ @@ -6955,6 +6961,7 @@ MA_API ma_device_config_jack ma_device_config_jack_init(void); extern ma_device_backend_vtable* ma_device_backend_jack; +MA_API ma_device_backend_vtable* ma_jack_get_vtable(void); /* END JACK */ @@ -6976,6 +6983,7 @@ MA_API ma_device_config_sndio ma_device_config_sndio_init(void); extern ma_device_backend_vtable* ma_device_backend_sndio; +MA_API ma_device_backend_vtable* ma_sndio_get_vtable(void); /* END SNDIO */ @@ -6997,6 +7005,7 @@ MA_API ma_device_config_audio4 ma_device_config_audio4_init(void); extern ma_device_backend_vtable* ma_device_backend_audio4; +MA_API ma_device_backend_vtable* ma_audio4_get_vtable(void); /* END AUDIO4 */ @@ -7018,6 +7027,7 @@ MA_API ma_device_config_oss ma_device_config_oss_init(void); extern ma_device_backend_vtable* ma_device_backend_oss; +MA_API ma_device_backend_vtable* ma_oss_get_vtable(void); /* END OSS */ @@ -7106,6 +7116,7 @@ MA_API ma_device_config_aaudio ma_device_config_aaudio_init(void); extern ma_device_backend_vtable* ma_device_backend_aaudio; +MA_API ma_device_backend_vtable* ma_aaudio_get_vtable(void); /* END AAUDIO */ @@ -7152,6 +7163,7 @@ MA_API ma_device_config_opensl ma_device_config_opensl_init(void); extern ma_device_backend_vtable* ma_device_backend_opensl; +MA_API ma_device_backend_vtable* ma_opensl_get_vtable(void); /* END OPENSL */ @@ -7181,6 +7193,7 @@ MA_API ma_device_config_webaudio ma_device_config_webaudio_init(void); extern ma_device_backend_vtable* ma_device_backend_webaudio; +MA_API ma_device_backend_vtable* ma_webaudio_get_vtable(void); /* END WEBAUDIO */ @@ -7202,6 +7215,7 @@ MA_API ma_device_config_null ma_device_config_null_init(void); extern ma_device_backend_vtable* ma_device_backend_null; +MA_API ma_device_backend_vtable* ma_null_get_vtable(void); /* END NULL */ @@ -9966,8 +9980,13 @@ MA_API ma_result ma_decode_memory(const void* pData, size_t dataSize, ma_decoder /* Expose our decoding backend vtables so they can be plugged into a priority list. */ extern ma_decoding_backend_vtable* ma_decoding_backend_wav; +MA_API ma_decoding_backend_vtable* ma_wav_get_vtable(void); + extern ma_decoding_backend_vtable* ma_decoding_backend_flac; +MA_API ma_decoding_backend_vtable* ma_flac_get_vtable(void); + extern ma_decoding_backend_vtable* ma_decoding_backend_mp3; +MA_API ma_decoding_backend_vtable* ma_mp3_get_vtable(void); #endif /* MA_NO_DECODING */ @@ -21057,6 +21076,11 @@ ma_device_backend_vtable* ma_device_backend_null = &ma_gDeviceBackendVTable_Null ma_device_backend_vtable* ma_device_backend_null = NULL; #endif +MA_API ma_device_backend_vtable* ma_null_get_vtable(void) +{ + return ma_device_backend_null; +} + /******************************************************************************* @@ -24911,6 +24935,12 @@ ma_device_backend_vtable* ma_device_backend_wasapi = &ma_gDeviceBackendVTable_WA ma_device_backend_vtable* ma_device_backend_wasapi = NULL; #endif +MA_API ma_device_backend_vtable* ma_wasapi_get_vtable(void) +{ + return ma_device_backend_wasapi; +} + + /****************************************************************************** DirectSound Backend @@ -26582,6 +26612,11 @@ ma_device_backend_vtable* ma_device_backend_dsound = &ma_gDeviceBackendVTable_DS ma_device_backend_vtable* ma_device_backend_dsound = NULL; #endif +MA_API ma_device_backend_vtable* ma_dsound_get_vtable(void) +{ + return ma_device_backend_dsound; +} + /****************************************************************************** @@ -27668,6 +27703,11 @@ ma_device_backend_vtable* ma_device_backend_winmm = &ma_gDeviceBackendVTable_Win ma_device_backend_vtable* ma_device_backend_winmm = NULL; #endif +MA_API ma_device_backend_vtable* ma_winmm_get_vtable(void) +{ + return ma_device_backend_winmm; +} + @@ -30056,6 +30096,11 @@ ma_device_backend_vtable* ma_device_backend_alsa = &ma_gDeviceBackendVTable_ALSA ma_device_backend_vtable* ma_device_backend_alsa = NULL; #endif /* MA_HAS_ALSA */ +MA_API ma_device_backend_vtable* ma_alsa_get_vtable(void) +{ + return ma_device_backend_alsa; +} + /****************************************************************************** @@ -32594,6 +32639,12 @@ ma_device_backend_vtable* ma_device_backend_pulseaudio = &ma_gDeviceBackendVTabl ma_device_backend_vtable* ma_device_backend_pulseaudio = NULL; #endif +MA_API ma_device_backend_vtable* ma_pulseaudio_get_vtable(void) +{ + return ma_device_backend_pulseaudio; +} + + /****************************************************************************** @@ -33377,6 +33428,11 @@ ma_device_backend_vtable* ma_device_backend_jack = &ma_gDeviceBackendVTable_JACK ma_device_backend_vtable* ma_device_backend_jack = NULL; #endif /* MA_HAS_JACK */ +MA_API ma_device_backend_vtable* ma_jack_get_vtable(void) +{ + return ma_device_backend_jack; +} + /****************************************************************************** @@ -36852,6 +36908,11 @@ ma_device_backend_vtable* ma_device_backend_coreaudio = &ma_gDeviceBackendVTable ma_device_backend_vtable* ma_device_backend_coreaudio = NULL; #endif /* MA_HAS_COREAUDIO */ +MA_API ma_device_backend_vtable* ma_coreaudio_get_vtable(void) +{ + return ma_device_backend_coreaudio; +} + /****************************************************************************** @@ -37962,6 +38023,11 @@ ma_device_backend_vtable* ma_device_backend_sndio = &ma_gDeviceBackendVTable_snd ma_device_backend_vtable* ma_device_backend_sndio = NULL; #endif /* MA_HAS_SNDIO */ +MA_API ma_device_backend_vtable* ma_sndio_get_vtable(void) +{ + return ma_device_backend_sndio; +} + /****************************************************************************** @@ -38948,6 +39014,12 @@ ma_device_backend_vtable* ma_device_backend_audio4 = &ma_gDeviceBackendVTable_Au ma_device_backend_vtable* ma_device_backend_audio4 = NULL; #endif /* MA_HAS_AUDIO4 */ +MA_API ma_device_backend_vtable* ma_audio4_get_vtable(void) +{ + return ma_device_backend_audio4; +} + + /****************************************************************************** @@ -39891,7 +39963,10 @@ ma_device_backend_vtable* ma_device_backend_oss = &ma_gDeviceBackendVTable_OSS; ma_device_backend_vtable* ma_device_backend_oss = NULL; #endif /* MA_HAS_OSS */ - +MA_API ma_device_backend_vtable* ma_oss_get_vtable(void) +{ + return ma_device_backend_oss; +} @@ -41118,6 +41193,12 @@ ma_device_backend_vtable* ma_device_backend_aaudio = &ma_gDeviceBackendVTable_AA ma_device_backend_vtable* ma_device_backend_aaudio = NULL; #endif /* AAudio */ +MA_API ma_device_backend_vtable* ma_aaudio_get_vtable(void) +{ + return ma_device_backend_aaudio; +} + + /****************************************************************************** @@ -42367,6 +42448,12 @@ ma_device_backend_vtable* ma_device_backend_opensl = &ma_gDeviceBackendVTable_Op ma_device_backend_vtable* ma_device_backend_opensl = NULL; #endif /* OpenSL|ES */ +MA_API ma_device_backend_vtable* ma_opensl_get_vtable(void) +{ + return ma_device_backend_opensl; +} + + /****************************************************************************** @@ -43500,6 +43587,12 @@ ma_device_backend_vtable* ma_device_backend_webaudio = &ma_gDeviceBackendVTable_ ma_device_backend_vtable* ma_device_backend_webaudio = NULL; #endif /* MA_HAS_WEBAUDIO */ +MA_API ma_device_backend_vtable* ma_webaudio_get_vtable(void) +{ + return ma_device_backend_webaudio; +} + + MA_API void ma_get_device_backend_info(ma_device_backend_vtable* pBackendVTable, ma_device_backend_info* pBackendInfo) { @@ -65228,6 +65321,12 @@ ma_decoding_backend_vtable* ma_decoding_backend_wav = &ma_gDecodingBackendVTable ma_decoding_backend_vtable* ma_decoding_backend_wav = NULL; #endif /* ma_dr_wav_h */ +MA_API ma_decoding_backend_vtable* ma_wav_get_vtable(void) +{ + return ma_decoding_backend_wav; +} + + /* FLAC */ #ifdef ma_dr_flac_h @@ -65863,6 +65962,12 @@ ma_decoding_backend_vtable* ma_decoding_backend_flac = &ma_gDecodingBackendVTabl ma_decoding_backend_vtable* ma_decoding_backend_flac = NULL; #endif /* ma_dr_flac_h */ +MA_API ma_decoding_backend_vtable* ma_flac_get_vtable(void) +{ + return ma_decoding_backend_flac; +} + + /* MP3 */ #ifdef ma_dr_mp3_h @@ -66552,6 +66657,12 @@ ma_decoding_backend_vtable* ma_decoding_backend_mp3 = &ma_gDecodingBackendVTable ma_decoding_backend_vtable* ma_decoding_backend_mp3 = NULL; #endif /* ma_dr_mp3_h */ +MA_API ma_decoding_backend_vtable* ma_mp3_get_vtable(void) +{ + return ma_decoding_backend_mp3; +} + + /* Vorbis */ #ifdef STB_VORBIS_INCLUDE_STB_VORBIS_H #define MA_HAS_VORBIS