Commit 422ef792 authored by David Reid's avatar David Reid

Add support for enabling only specific backends at compile time.

This enables the ability to explicitly enable only the backends a
program is interested in. Essentially it's the reverse of the pre-
existing method whereby instead of disabling backends, all backends are
disabled by default, and then specific backends are enabled. Example:

    #define MA_ENABLE_ONLY_SPECIFIC_BACKENDS
    #define MA_ENABLE_WASAPI /* Only care about WASAPI on Windows. */
    #define MA_ENABLE_ALSA   /* Only care about ALSA on Linux. */

Note that even if MA_ENABLE_* is used, the backend will still only be
enabled if the compilation environment and target platform actually
supports it. You can therefore use the MA_ENABLE_* options without
needing to worry about platform detection.

Public issue https://github.com/mackron/miniaudio/issues/260
parent b16f74bf
...@@ -280,74 +280,125 @@ The Emscripten build emits Web Audio JavaScript directly and should compile clea ...@@ -280,74 +280,125 @@ The Emscripten build emits Web Audio JavaScript directly and should compile clea
------------------ ------------------
`#define` these options before including miniaudio.h. `#define` these options before including miniaudio.h.
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| Option | Description | | Option | Description |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_WASAPI | Disables the WASAPI backend. | | MA_NO_WASAPI | Disables the WASAPI backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_DSOUND | Disables the DirectSound backend. | | MA_NO_DSOUND | Disables the DirectSound backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_WINMM | Disables the WinMM backend. | | MA_NO_WINMM | Disables the WinMM backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_ALSA | Disables the ALSA backend. | | MA_NO_ALSA | Disables the ALSA backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_PULSEAUDIO | Disables the PulseAudio backend. | | MA_NO_PULSEAUDIO | Disables the PulseAudio backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_JACK | Disables the JACK backend. | | MA_NO_JACK | Disables the JACK backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_COREAUDIO | Disables the Core Audio backend. | | MA_NO_COREAUDIO | Disables the Core Audio backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_SNDIO | Disables the sndio backend. | | MA_NO_SNDIO | Disables the sndio backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_AUDIO4 | Disables the audio(4) backend. | | MA_NO_AUDIO4 | Disables the audio(4) backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_OSS | Disables the OSS backend. | | MA_NO_OSS | Disables the OSS backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_AAUDIO | Disables the AAudio backend. | | MA_NO_AAUDIO | Disables the AAudio backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_OPENSL | Disables the OpenSL|ES backend. | | MA_NO_OPENSL | Disables the OpenSL|ES backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_WEBAUDIO | Disables the Web Audio backend. | | MA_NO_WEBAUDIO | Disables the Web Audio backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_NULL | Disables the null backend. | | MA_NO_NULL | Disables the null backend. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_ONLY_EXPLICIT_BACKENDS | Disables all backends by default and requires `MA_ENABLE_*` to |
| | enable specific backends. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_WASAPI | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the WASAPI backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_DSOUND | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the DirectSound backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_WINMM | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the WinMM backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_ALSA | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the ALSA backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_PULSEAUDIO | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the PulseAudio backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_JACK | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the JACK backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_COREAUDIO | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the Core Audio backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_SNDIO | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the sndio backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_AUDIO4 | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the audio(4) backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_OSS | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the OSS backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_AAUDIO | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the AAudio backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_OPENSL | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the OpenSL|ES backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_WEBAUDIO | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the Web Audio backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_ENABLE_NULL | Used in conjunction with MA_ENABLE_ONLY_EXPLICIT_BACKENDS to |
| | enable the null backend. |
+----------------------------------+--------------------------------------------------------------------+
| MA_NO_DECODING | Disables decoding APIs. | | MA_NO_DECODING | Disables decoding APIs. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_ENCODING | Disables encoding APIs. | | MA_NO_ENCODING | Disables encoding APIs. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_WAV | Disables the built-in WAV decoder and encoder. | | MA_NO_WAV | Disables the built-in WAV decoder and encoder. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_FLAC | Disables the built-in FLAC decoder. | | MA_NO_FLAC | Disables the built-in FLAC decoder. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_MP3 | Disables the built-in MP3 decoder. | | MA_NO_MP3 | Disables the built-in MP3 decoder. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_DEVICE_IO | Disables playback and recording. This will disable ma_context and ma_device APIs. This is useful if you only want to use | | MA_NO_DEVICE_IO | Disables playback and recording. This will disable ma_context and |
| | miniaudio's data conversion and/or decoding APIs. | | | ma_device APIs. This is useful if you only want to use miniaudio's |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ | | data conversion and/or decoding APIs. |
| MA_NO_THREADING | Disables the ma_thread, ma_mutex, ma_semaphore and ma_event APIs. This option is useful if you only need to use miniaudio for | +----------------------------------+--------------------------------------------------------------------+
| | data conversion, decoding and/or encoding. Some families of APIs require threading which means the following options must also | | MA_NO_THREADING | Disables the ma_thread, ma_mutex, ma_semaphore and ma_event APIs. |
| | be set: | | | This option is useful if you only need to use miniaudio for data |
| | conversion, decoding and/or encoding. Some families of APIs |
| | require threading which means the following options must also be |
| | set: |
| | | | | |
| | ``` | | | ``` |
| | MA_NO_DEVICE_IO | | | MA_NO_DEVICE_IO |
| | ``` | | | ``` |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_GENERATION | Disables generation APIs such a ma_waveform and ma_noise. | | MA_NO_GENERATION | Disables generation APIs such a ma_waveform and ma_noise. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_SSE2 | Disables SSE2 optimizations. | | MA_NO_SSE2 | Disables SSE2 optimizations. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_AVX2 | Disables AVX2 optimizations. | | MA_NO_AVX2 | Disables AVX2 optimizations. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_AVX512 | Disables AVX-512 optimizations. | | MA_NO_AVX512 | Disables AVX-512 optimizations. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_NEON | Disables NEON optimizations. | | MA_NO_NEON | Disables NEON optimizations. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_NO_RUNTIME_LINKING | Disables runtime linking. This is useful for passing Apple's notarization process. When enabling this, you may need to avoid | | MA_NO_RUNTIME_LINKING | Disables runtime linking. This is useful for passing Apple's |
| | using `-std=c89` or `-std=c99` on Linux builds or else you may end up with compilation errors due to conflicts with `timespec` | | | notarization process. When enabling this, you may need to avoid |
| | and `timeval` data types. | | | using `-std=c89` or `-std=c99` on Linux builds or else you may end |
| | up with compilation errors due to conflicts with `timespec` and |
| | `timeval` data types. |
| | | | | |
| | You may need to enable this if your target platform does not allow runtime linking via `dlopen()`. | | | You may need to enable this if your target platform does not allow |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ | | runtime linking via `dlopen()`. |
+----------------------------------+--------------------------------------------------------------------+
| MA_LOG_LEVEL [level] | Sets the logging level. Set `level` to one of the following: | | MA_LOG_LEVEL [level] | Sets the logging level. Set `level` to one of the following: |
| | | | | |
| | ``` | | | ``` |
...@@ -356,17 +407,20 @@ The Emscripten build emits Web Audio JavaScript directly and should compile clea ...@@ -356,17 +407,20 @@ The Emscripten build emits Web Audio JavaScript directly and should compile clea
| | MA_LOG_LEVEL_WARNING | | | MA_LOG_LEVEL_WARNING |
| | MA_LOG_LEVEL_ERROR | | | MA_LOG_LEVEL_ERROR |
| | ``` | | | ``` |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_DEBUG_OUTPUT | Enable `printf()` debug output. | | MA_DEBUG_OUTPUT | Enable `printf()` debug output. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ +----------------------------------+--------------------------------------------------------------------+
| MA_COINIT_VALUE | Windows only. The value to pass to internal calls to `CoInitializeEx()`. Defaults to `COINIT_MULTITHREADED`. | | MA_COINIT_VALUE | Windows only. The value to pass to internal calls to |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ | | `CoInitializeEx()`. Defaults to `COINIT_MULTITHREADED`. |
| MA_API | Controls how public APIs should be decorated. Defaults to `extern`. | +----------------------------------+--------------------------------------------------------------------+
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ | MA_API | Controls how public APIs should be decorated. Default is `extern`. |
| MA_DLL | If set, configures MA_API to either import or export APIs depending on whether or not the implementation is being defined. If | +----------------------------------+--------------------------------------------------------------------+
| | defining the implementation, MA_API will be configured to export. Otherwise it will be configured to import. This has no effect | | MA_DLL | If set, configures MA_API to either import or export APIs |
| | if MA_API is defined externally. | | | depending on whether or not the implementation is being defined. |
+-----------------------+---------------------------------------------------------------------------------------------------------------------------------+ | | If defining the implementation, MA_API will be configured to |
| | export. Otherwise it will be configured to import. This has no |
| | effect if MA_API is defined externally. |
+----------------------------------+--------------------------------------------------------------------+
3. Definitions 3. Definitions
...@@ -2928,50 +2982,50 @@ This section contains the APIs for device playback and capture. Here is where yo ...@@ -2928,50 +2982,50 @@ This section contains the APIs for device playback and capture. Here is where yo
#endif #endif
#if !defined(MA_NO_WASAPI) && defined(MA_SUPPORT_WASAPI) #if defined(MA_SUPPORT_WASAPI) && !defined(MA_NO_WASAPI) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_WASAPI))
#define MA_ENABLE_WASAPI #define MA_HAS_WASAPI
#endif #endif
#if !defined(MA_NO_DSOUND) && defined(MA_SUPPORT_DSOUND) #if defined(MA_SUPPORT_DSOUND) && !defined(MA_NO_DSOUND) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_DSOUND))
#define MA_ENABLE_DSOUND #define MA_HAS_DSOUND
#endif #endif
#if !defined(MA_NO_WINMM) && defined(MA_SUPPORT_WINMM) #if defined(MA_SUPPORT_WINMM) && !defined(MA_NO_WINMM) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_WINMM))
#define MA_ENABLE_WINMM #define MA_HAS_WINMM
#endif #endif
#if !defined(MA_NO_ALSA) && defined(MA_SUPPORT_ALSA) #if defined(MA_SUPPORT_ALSA) && !defined(MA_NO_ALSA) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_ALSA))
#define MA_ENABLE_ALSA #define MA_HAS_ALSA
#endif #endif
#if !defined(MA_NO_PULSEAUDIO) && defined(MA_SUPPORT_PULSEAUDIO) #if defined(MA_SUPPORT_PULSEAUDIO) && !defined(MA_NO_PULSEAUDIO) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_PULSEAUDIO))
#define MA_ENABLE_PULSEAUDIO #define MA_HAS_PULSEAUDIO
#endif #endif
#if !defined(MA_NO_JACK) && defined(MA_SUPPORT_JACK) #if defined(MA_SUPPORT_JACK) && !defined(MA_NO_JACK) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_JACK))
#define MA_ENABLE_JACK #define MA_HAS_JACK
#endif #endif
#if !defined(MA_NO_COREAUDIO) && defined(MA_SUPPORT_COREAUDIO) #if defined(MA_SUPPORT_COREAUDIO) && !defined(MA_NO_COREAUDIO) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_COREAUDIO))
#define MA_ENABLE_COREAUDIO #define MA_HAS_COREAUDIO
#endif #endif
#if !defined(MA_NO_SNDIO) && defined(MA_SUPPORT_SNDIO) #if defined(MA_SUPPORT_SNDIO) && !defined(MA_NO_SNDIO) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_SNDIO))
#define MA_ENABLE_SNDIO #define MA_HAS_SNDIO
#endif #endif
#if !defined(MA_NO_AUDIO4) && defined(MA_SUPPORT_AUDIO4) #if defined(MA_SUPPORT_AUDIO4) && !defined(MA_NO_AUDIO4) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_AUDIO4))
#define MA_ENABLE_AUDIO4 #define MA_HAS_AUDIO4
#endif #endif
#if !defined(MA_NO_OSS) && defined(MA_SUPPORT_OSS) #if defined(MA_SUPPORT_OSS) && !defined(MA_NO_OSS) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_OSS))
#define MA_ENABLE_OSS #define MA_HAS_OSS
#endif #endif
#if !defined(MA_NO_AAUDIO) && defined(MA_SUPPORT_AAUDIO) #if defined(MA_SUPPORT_AAUDIO) && !defined(MA_NO_AAUDIO) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_AAUDIO))
#define MA_ENABLE_AAUDIO #define MA_HAS_AAUDIO
#endif #endif
#if !defined(MA_NO_OPENSL) && defined(MA_SUPPORT_OPENSL) #if defined(MA_SUPPORT_OPENSL) && !defined(MA_NO_OPENSL) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_OPENSL))
#define MA_ENABLE_OPENSL #define MA_HAS_OPENSL
#endif #endif
#if !defined(MA_NO_WEBAUDIO) && defined(MA_SUPPORT_WEBAUDIO) #if defined(MA_SUPPORT_WEBAUDIO) && !defined(MA_NO_WEBAUDIO) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_WEBAUDIO))
#define MA_ENABLE_WEBAUDIO #define MA_HAS_WEBAUDIO
#endif #endif
#if !defined(MA_NO_CUSTOM) && defined(MA_SUPPORT_CUSTOM) #if defined(MA_SUPPORT_CUSTOM) && !defined(MA_NO_CUSTOM) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_CUSTOM))
#define MA_ENABLE_CUSTOM #define MA_HAS_CUSTOM
#endif #endif
#if !defined(MA_NO_NULL) && defined(MA_SUPPORT_NULL) #if defined(MA_SUPPORT_NULL) && !defined(MA_NO_NULL) && (!defined(MA_ENABLE_ONLY_SPECIFIC_BACKENDS) || defined(MA_ENABLE_NULL))
#define MA_ENABLE_NULL #define MA_HAS_NULL
#endif #endif
#define MA_STATE_UNINITIALIZED 0 #define MA_STATE_UNINITIALIZED 0
...@@ -10506,76 +10560,6 @@ not officially supporting this, but I'm leaving it here in case it's useful for ...@@ -10506,76 +10560,6 @@ not officially supporting this, but I'm leaving it here in case it's useful for
#endif #endif
#endif #endif
/*
Check if we have the necessary development packages for each backend at the top so we can use this to determine whether or not
certain unused functions and variables can be excluded from the build to avoid warnings.
*/
#ifdef MA_ENABLE_WASAPI
#define MA_HAS_WASAPI /* Every compiler should support WASAPI */
#endif
#ifdef MA_ENABLE_DSOUND
#define MA_HAS_DSOUND /* Every compiler should support DirectSound. */
#endif
#ifdef MA_ENABLE_WINMM
#define MA_HAS_WINMM /* Every compiler I'm aware of supports WinMM. */
#endif
#ifdef MA_ENABLE_ALSA
#define MA_HAS_ALSA
#ifdef MA_NO_RUNTIME_LINKING
#ifdef __has_include
#if !__has_include(<alsa/asoundlib.h>)
#undef MA_HAS_ALSA
#endif
#endif
#endif
#endif
#ifdef MA_ENABLE_PULSEAUDIO
#define MA_HAS_PULSEAUDIO
#ifdef MA_NO_RUNTIME_LINKING
#ifdef __has_include
#if !__has_include(<pulse/pulseaudio.h>)
#undef MA_HAS_PULSEAUDIO
#endif
#endif
#endif
#endif
#ifdef MA_ENABLE_JACK
#define MA_HAS_JACK
#ifdef MA_NO_RUNTIME_LINKING
#ifdef __has_include
#if !__has_include(<jack/jack.h>)
#undef MA_HAS_JACK
#endif
#endif
#endif
#endif
#ifdef MA_ENABLE_COREAUDIO
#define MA_HAS_COREAUDIO
#endif
#ifdef MA_ENABLE_SNDIO
#define MA_HAS_SNDIO
#endif
#ifdef MA_ENABLE_AUDIO4
#define MA_HAS_AUDIO4
#endif
#ifdef MA_ENABLE_OSS
#define MA_HAS_OSS
#endif
#ifdef MA_ENABLE_AAUDIO
#define MA_HAS_AAUDIO
#endif
#ifdef MA_ENABLE_OPENSL
#define MA_HAS_OPENSL
#endif
#ifdef MA_ENABLE_WEBAUDIO
#define MA_HAS_WEBAUDIO
#endif
#ifdef MA_ENABLE_CUSTOM
#define MA_HAS_CUSTOM
#endif
#ifdef MA_ENABLE_NULL
#define MA_HAS_NULL /* Everything supports the null backend. */
#endif
MA_API const char* ma_get_backend_name(ma_backend backend) MA_API const char* ma_get_backend_name(ma_backend backend)
{ {
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment