diff options
Diffstat (limited to 'drivers/alsa')
-rw-r--r-- | drivers/alsa/SCsub | 3 | ||||
-rw-r--r-- | drivers/alsa/asound-so_wrap.c | 96 | ||||
-rw-r--r-- | drivers/alsa/asound-so_wrap.h | 40 | ||||
-rw-r--r-- | drivers/alsa/audio_driver_alsa.cpp | 115 | ||||
-rw-r--r-- | drivers/alsa/audio_driver_alsa.h | 98 |
5 files changed, 120 insertions, 232 deletions
diff --git a/drivers/alsa/SCsub b/drivers/alsa/SCsub index 1d76bb18c4..f17acb0f91 100644 --- a/drivers/alsa/SCsub +++ b/drivers/alsa/SCsub @@ -3,6 +3,7 @@ Import("env") if "alsa" in env and env["alsa"]: - env.add_source_files(env.drivers_sources, "asound-so_wrap.c") + if env["use_sowrap"]: + env.add_source_files(env.drivers_sources, "asound-so_wrap.c") env.add_source_files(env.drivers_sources, "*.cpp") diff --git a/drivers/alsa/asound-so_wrap.c b/drivers/alsa/asound-so_wrap.c index 65624bcb70..ffe24d4313 100644 --- a/drivers/alsa/asound-so_wrap.c +++ b/drivers/alsa/asound-so_wrap.c @@ -1,12 +1,11 @@ // This file is generated. Do not edit! // see https://github.com/hpvb/dynload-wrapper for details -// generated by /home/hp/Projects/godot/pulse/generate-wrapper.py 0.3 on 2021-02-22 19:22:12 -// flags: /home/hp/Projects/godot/pulse/generate-wrapper.py --include /usr/include/alsa/asoundlib.h --sys-include <alsa/asoundlib.h> --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header asound-so_wrap.h --output-implementation asound-so_wrap.c +// generated by generate-wrapper.py 0.3 on 2023-01-12 10:26:13 +// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/alsa/asoundlib.h --sys-include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header ./drivers/alsa/asound-so_wrap.h --output-implementation ./drivers/alsa/asound-so_wrap.c // #include <stdint.h> #define snd_asoundlib_version snd_asoundlib_version_dylibloader_orig_asound -#define snd_dlpath snd_dlpath_dylibloader_orig_asound #define snd_dlopen snd_dlopen_dylibloader_orig_asound #define snd_dlsym snd_dlsym_dylibloader_orig_asound #define snd_dlclose snd_dlclose_dylibloader_orig_asound @@ -40,7 +39,6 @@ #define snd_strerror snd_strerror_dylibloader_orig_asound #define snd_lib_error_set_handler snd_lib_error_set_handler_dylibloader_orig_asound #define snd_lib_error_set_local snd_lib_error_set_local_dylibloader_orig_asound -#define snd_config_topdir snd_config_topdir_dylibloader_orig_asound #define snd_config_top snd_config_top_dylibloader_orig_asound #define snd_config_load snd_config_load_dylibloader_orig_asound #define snd_config_load_override snd_config_load_override_dylibloader_orig_asound @@ -58,9 +56,6 @@ #define snd_config_expand snd_config_expand_dylibloader_orig_asound #define snd_config_evaluate snd_config_evaluate_dylibloader_orig_asound #define snd_config_add snd_config_add_dylibloader_orig_asound -#define snd_config_add_before snd_config_add_before_dylibloader_orig_asound -#define snd_config_add_after snd_config_add_after_dylibloader_orig_asound -#define snd_config_remove snd_config_remove_dylibloader_orig_asound #define snd_config_delete snd_config_delete_dylibloader_orig_asound #define snd_config_delete_compound_members snd_config_delete_compound_members_dylibloader_orig_asound #define snd_config_copy snd_config_copy_dylibloader_orig_asound @@ -78,7 +73,6 @@ #define snd_config_imake_safe_string snd_config_imake_safe_string_dylibloader_orig_asound #define snd_config_imake_pointer snd_config_imake_pointer_dylibloader_orig_asound #define snd_config_get_type snd_config_get_type_dylibloader_orig_asound -#define snd_config_is_array snd_config_is_array_dylibloader_orig_asound #define snd_config_set_id snd_config_set_id_dylibloader_orig_asound #define snd_config_set_integer snd_config_set_integer_dylibloader_orig_asound #define snd_config_set_integer64 snd_config_set_integer64_dylibloader_orig_asound @@ -423,7 +417,6 @@ #define snd_pcm_areas_silence snd_pcm_areas_silence_dylibloader_orig_asound #define snd_pcm_area_copy snd_pcm_area_copy_dylibloader_orig_asound #define snd_pcm_areas_copy snd_pcm_areas_copy_dylibloader_orig_asound -#define snd_pcm_areas_copy_wrap snd_pcm_areas_copy_wrap_dylibloader_orig_asound #define snd_pcm_hook_get_pcm snd_pcm_hook_get_pcm_dylibloader_orig_asound #define snd_pcm_hook_get_private snd_pcm_hook_get_private_dylibloader_orig_asound #define snd_pcm_hook_set_private snd_pcm_hook_set_private_dylibloader_orig_asound @@ -1015,7 +1008,6 @@ #define snd_mixer_selem_id_get_index snd_mixer_selem_id_get_index_dylibloader_orig_asound #define snd_mixer_selem_id_set_name snd_mixer_selem_id_set_name_dylibloader_orig_asound #define snd_mixer_selem_id_set_index snd_mixer_selem_id_set_index_dylibloader_orig_asound -#define snd_mixer_selem_id_parse snd_mixer_selem_id_parse_dylibloader_orig_asound #define snd_seq_open snd_seq_open_dylibloader_orig_asound #define snd_seq_open_lconf snd_seq_open_lconf_dylibloader_orig_asound #define snd_seq_name snd_seq_name_dylibloader_orig_asound @@ -1284,9 +1276,8 @@ #define snd_midi_event_encode snd_midi_event_encode_dylibloader_orig_asound #define snd_midi_event_encode_byte snd_midi_event_encode_byte_dylibloader_orig_asound #define snd_midi_event_decode snd_midi_event_decode_dylibloader_orig_asound -#include <alsa/asoundlib.h> +#include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" #undef snd_asoundlib_version -#undef snd_dlpath #undef snd_dlopen #undef snd_dlsym #undef snd_dlclose @@ -1320,7 +1311,6 @@ #undef snd_strerror #undef snd_lib_error_set_handler #undef snd_lib_error_set_local -#undef snd_config_topdir #undef snd_config_top #undef snd_config_load #undef snd_config_load_override @@ -1338,9 +1328,6 @@ #undef snd_config_expand #undef snd_config_evaluate #undef snd_config_add -#undef snd_config_add_before -#undef snd_config_add_after -#undef snd_config_remove #undef snd_config_delete #undef snd_config_delete_compound_members #undef snd_config_copy @@ -1358,7 +1345,6 @@ #undef snd_config_imake_safe_string #undef snd_config_imake_pointer #undef snd_config_get_type -#undef snd_config_is_array #undef snd_config_set_id #undef snd_config_set_integer #undef snd_config_set_integer64 @@ -1703,7 +1689,6 @@ #undef snd_pcm_areas_silence #undef snd_pcm_area_copy #undef snd_pcm_areas_copy -#undef snd_pcm_areas_copy_wrap #undef snd_pcm_hook_get_pcm #undef snd_pcm_hook_get_private #undef snd_pcm_hook_set_private @@ -2295,7 +2280,6 @@ #undef snd_mixer_selem_id_get_index #undef snd_mixer_selem_id_set_name #undef snd_mixer_selem_id_set_index -#undef snd_mixer_selem_id_parse #undef snd_seq_open #undef snd_seq_open_lconf #undef snd_seq_name @@ -2567,8 +2551,7 @@ #include <dlfcn.h> #include <stdio.h> const char* (*snd_asoundlib_version_dylibloader_wrapper_asound)( void); -int (*snd_dlpath_dylibloader_wrapper_asound)( char*, size_t,const char*); -void* (*snd_dlopen_dylibloader_wrapper_asound)(const char*, int, char*, size_t); +void* (*snd_dlopen_dylibloader_wrapper_asound)(const char*, int); void* (*snd_dlsym_dylibloader_wrapper_asound)( void*,const char*,const char*); int (*snd_dlclose_dylibloader_wrapper_asound)( void*); int (*snd_async_add_handler_dylibloader_wrapper_asound)( snd_async_handler_t**, int, snd_async_callback_t, void*); @@ -2601,7 +2584,6 @@ int (*snd_output_flush_dylibloader_wrapper_asound)( snd_output_t*); const char* (*snd_strerror_dylibloader_wrapper_asound)( int); int (*snd_lib_error_set_handler_dylibloader_wrapper_asound)( snd_lib_error_handler_t); snd_local_error_handler_t (*snd_lib_error_set_local_dylibloader_wrapper_asound)( snd_local_error_handler_t); -const char* (*snd_config_topdir_dylibloader_wrapper_asound)( void); int (*snd_config_top_dylibloader_wrapper_asound)( snd_config_t**); int (*snd_config_load_dylibloader_wrapper_asound)( snd_config_t*, snd_input_t*); int (*snd_config_load_override_dylibloader_wrapper_asound)( snd_config_t*, snd_input_t*); @@ -2619,9 +2601,6 @@ int (*snd_config_search_definition_dylibloader_wrapper_asound)( snd_config_t*,co int (*snd_config_expand_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*,const char*, snd_config_t*, snd_config_t**); int (*snd_config_evaluate_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*, snd_config_t*, snd_config_t**); int (*snd_config_add_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -int (*snd_config_add_before_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -int (*snd_config_add_after_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -int (*snd_config_remove_dylibloader_wrapper_asound)( snd_config_t*); int (*snd_config_delete_dylibloader_wrapper_asound)( snd_config_t*); int (*snd_config_delete_compound_members_dylibloader_wrapper_asound)(const snd_config_t*); int (*snd_config_copy_dylibloader_wrapper_asound)( snd_config_t**, snd_config_t*); @@ -2639,7 +2618,6 @@ int (*snd_config_imake_string_dylibloader_wrapper_asound)( snd_config_t**,const int (*snd_config_imake_safe_string_dylibloader_wrapper_asound)( snd_config_t**,const char*,const char*); int (*snd_config_imake_pointer_dylibloader_wrapper_asound)( snd_config_t**,const char*,const void*); snd_config_type_t (*snd_config_get_type_dylibloader_wrapper_asound)(const snd_config_t*); -int (*snd_config_is_array_dylibloader_wrapper_asound)(const snd_config_t*); int (*snd_config_set_id_dylibloader_wrapper_asound)( snd_config_t*,const char*); int (*snd_config_set_integer_dylibloader_wrapper_asound)( snd_config_t*, long); int (*snd_config_set_integer64_dylibloader_wrapper_asound)( snd_config_t*, long long); @@ -2984,7 +2962,6 @@ int (*snd_pcm_area_silence_dylibloader_wrapper_asound)(const snd_pcm_channel_are int (*snd_pcm_areas_silence_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_uframes_t, snd_pcm_format_t); int (*snd_pcm_area_copy_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_format_t); int (*snd_pcm_areas_copy_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_uframes_t, snd_pcm_format_t); -int (*snd_pcm_areas_copy_wrap_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_uframes_t,const unsigned int, snd_pcm_uframes_t,const snd_pcm_format_t); snd_pcm_t* (*snd_pcm_hook_get_pcm_dylibloader_wrapper_asound)( snd_pcm_hook_t*); void* (*snd_pcm_hook_get_private_dylibloader_wrapper_asound)( snd_pcm_hook_t*); void (*snd_pcm_hook_set_private_dylibloader_wrapper_asound)( snd_pcm_hook_t*, void*); @@ -3576,7 +3553,6 @@ const char* (*snd_mixer_selem_id_get_name_dylibloader_wrapper_asound)(const snd_ unsigned int (*snd_mixer_selem_id_get_index_dylibloader_wrapper_asound)(const snd_mixer_selem_id_t*); void (*snd_mixer_selem_id_set_name_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*,const char*); void (*snd_mixer_selem_id_set_index_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*, unsigned int); -int (*snd_mixer_selem_id_parse_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*,const char*); int (*snd_seq_open_dylibloader_wrapper_asound)( snd_seq_t**,const char*, int, int); int (*snd_seq_open_lconf_dylibloader_wrapper_asound)( snd_seq_t**,const char*, int, int, snd_config_t*); const char* (*snd_seq_name_dylibloader_wrapper_asound)( snd_seq_t*); @@ -3864,14 +3840,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_dlpath - *(void **) (&snd_dlpath_dylibloader_wrapper_asound) = dlsym(handle, "snd_dlpath"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_dlopen *(void **) (&snd_dlopen_dylibloader_wrapper_asound) = dlsym(handle, "snd_dlopen"); if (verbose) { @@ -4136,14 +4104,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_config_topdir - *(void **) (&snd_config_topdir_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_topdir"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_config_top *(void **) (&snd_config_top_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_top"); if (verbose) { @@ -4280,30 +4240,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_config_add_before - *(void **) (&snd_config_add_before_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_add_before"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } -// snd_config_add_after - *(void **) (&snd_config_add_after_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_add_after"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } -// snd_config_remove - *(void **) (&snd_config_remove_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_remove"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_config_delete *(void **) (&snd_config_delete_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_delete"); if (verbose) { @@ -4440,14 +4376,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_config_is_array - *(void **) (&snd_config_is_array_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_is_array"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_config_set_id *(void **) (&snd_config_set_id_dylibloader_wrapper_asound) = dlsym(handle, "snd_config_set_id"); if (verbose) { @@ -7200,14 +7128,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_pcm_areas_copy_wrap - *(void **) (&snd_pcm_areas_copy_wrap_dylibloader_wrapper_asound) = dlsym(handle, "snd_pcm_areas_copy_wrap"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_pcm_hook_get_pcm *(void **) (&snd_pcm_hook_get_pcm_dylibloader_wrapper_asound) = dlsym(handle, "snd_pcm_hook_get_pcm"); if (verbose) { @@ -11936,14 +11856,6 @@ int initialize_asound(int verbose) { fprintf(stderr, "%s\n", error); } } -// snd_mixer_selem_id_parse - *(void **) (&snd_mixer_selem_id_parse_dylibloader_wrapper_asound) = dlsym(handle, "snd_mixer_selem_id_parse"); - if (verbose) { - error = dlerror(); - if (error != NULL) { - fprintf(stderr, "%s\n", error); - } - } // snd_seq_open *(void **) (&snd_seq_open_dylibloader_wrapper_asound) = dlsym(handle, "snd_seq_open"); if (verbose) { diff --git a/drivers/alsa/asound-so_wrap.h b/drivers/alsa/asound-so_wrap.h index 5332d74152..8d12d15ba8 100644 --- a/drivers/alsa/asound-so_wrap.h +++ b/drivers/alsa/asound-so_wrap.h @@ -2,13 +2,12 @@ #define DYLIBLOAD_WRAPPER_ASOUND // This file is generated. Do not edit! // see https://github.com/hpvb/dynload-wrapper for details -// generated by /home/hp/Projects/godot/pulse/generate-wrapper.py 0.3 on 2021-02-22 19:22:12 -// flags: /home/hp/Projects/godot/pulse/generate-wrapper.py --include /usr/include/alsa/asoundlib.h --sys-include <alsa/asoundlib.h> --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header asound-so_wrap.h --output-implementation asound-so_wrap.c +// generated by generate-wrapper.py 0.3 on 2023-01-12 10:26:13 +// flags: generate-wrapper.py --include ./thirdparty/linuxbsd_headers/alsa/asoundlib.h --sys-include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" --soname libasound.so.2 --init-name asound --omit-prefix snd_pcm_sw_params_set_tstamp_type --omit-prefix snd_pcm_status_get_audio_htstamp_report --omit-prefix snd_pcm_sw_params_get_tstamp_type --omit-prefix snd_pcm_status_set_audio_htstamp_config --output-header ./drivers/alsa/asound-so_wrap.h --output-implementation ./drivers/alsa/asound-so_wrap.c // #include <stdint.h> #define snd_asoundlib_version snd_asoundlib_version_dylibloader_orig_asound -#define snd_dlpath snd_dlpath_dylibloader_orig_asound #define snd_dlopen snd_dlopen_dylibloader_orig_asound #define snd_dlsym snd_dlsym_dylibloader_orig_asound #define snd_dlclose snd_dlclose_dylibloader_orig_asound @@ -42,7 +41,6 @@ #define snd_strerror snd_strerror_dylibloader_orig_asound #define snd_lib_error_set_handler snd_lib_error_set_handler_dylibloader_orig_asound #define snd_lib_error_set_local snd_lib_error_set_local_dylibloader_orig_asound -#define snd_config_topdir snd_config_topdir_dylibloader_orig_asound #define snd_config_top snd_config_top_dylibloader_orig_asound #define snd_config_load snd_config_load_dylibloader_orig_asound #define snd_config_load_override snd_config_load_override_dylibloader_orig_asound @@ -60,9 +58,6 @@ #define snd_config_expand snd_config_expand_dylibloader_orig_asound #define snd_config_evaluate snd_config_evaluate_dylibloader_orig_asound #define snd_config_add snd_config_add_dylibloader_orig_asound -#define snd_config_add_before snd_config_add_before_dylibloader_orig_asound -#define snd_config_add_after snd_config_add_after_dylibloader_orig_asound -#define snd_config_remove snd_config_remove_dylibloader_orig_asound #define snd_config_delete snd_config_delete_dylibloader_orig_asound #define snd_config_delete_compound_members snd_config_delete_compound_members_dylibloader_orig_asound #define snd_config_copy snd_config_copy_dylibloader_orig_asound @@ -80,7 +75,6 @@ #define snd_config_imake_safe_string snd_config_imake_safe_string_dylibloader_orig_asound #define snd_config_imake_pointer snd_config_imake_pointer_dylibloader_orig_asound #define snd_config_get_type snd_config_get_type_dylibloader_orig_asound -#define snd_config_is_array snd_config_is_array_dylibloader_orig_asound #define snd_config_set_id snd_config_set_id_dylibloader_orig_asound #define snd_config_set_integer snd_config_set_integer_dylibloader_orig_asound #define snd_config_set_integer64 snd_config_set_integer64_dylibloader_orig_asound @@ -425,7 +419,6 @@ #define snd_pcm_areas_silence snd_pcm_areas_silence_dylibloader_orig_asound #define snd_pcm_area_copy snd_pcm_area_copy_dylibloader_orig_asound #define snd_pcm_areas_copy snd_pcm_areas_copy_dylibloader_orig_asound -#define snd_pcm_areas_copy_wrap snd_pcm_areas_copy_wrap_dylibloader_orig_asound #define snd_pcm_hook_get_pcm snd_pcm_hook_get_pcm_dylibloader_orig_asound #define snd_pcm_hook_get_private snd_pcm_hook_get_private_dylibloader_orig_asound #define snd_pcm_hook_set_private snd_pcm_hook_set_private_dylibloader_orig_asound @@ -1017,7 +1010,6 @@ #define snd_mixer_selem_id_get_index snd_mixer_selem_id_get_index_dylibloader_orig_asound #define snd_mixer_selem_id_set_name snd_mixer_selem_id_set_name_dylibloader_orig_asound #define snd_mixer_selem_id_set_index snd_mixer_selem_id_set_index_dylibloader_orig_asound -#define snd_mixer_selem_id_parse snd_mixer_selem_id_parse_dylibloader_orig_asound #define snd_seq_open snd_seq_open_dylibloader_orig_asound #define snd_seq_open_lconf snd_seq_open_lconf_dylibloader_orig_asound #define snd_seq_name snd_seq_name_dylibloader_orig_asound @@ -1286,9 +1278,8 @@ #define snd_midi_event_encode snd_midi_event_encode_dylibloader_orig_asound #define snd_midi_event_encode_byte snd_midi_event_encode_byte_dylibloader_orig_asound #define snd_midi_event_decode snd_midi_event_decode_dylibloader_orig_asound -#include <alsa/asoundlib.h> +#include "thirdparty/linuxbsd_headers/alsa/asoundlib.h" #undef snd_asoundlib_version -#undef snd_dlpath #undef snd_dlopen #undef snd_dlsym #undef snd_dlclose @@ -1322,7 +1313,6 @@ #undef snd_strerror #undef snd_lib_error_set_handler #undef snd_lib_error_set_local -#undef snd_config_topdir #undef snd_config_top #undef snd_config_load #undef snd_config_load_override @@ -1340,9 +1330,6 @@ #undef snd_config_expand #undef snd_config_evaluate #undef snd_config_add -#undef snd_config_add_before -#undef snd_config_add_after -#undef snd_config_remove #undef snd_config_delete #undef snd_config_delete_compound_members #undef snd_config_copy @@ -1360,7 +1347,6 @@ #undef snd_config_imake_safe_string #undef snd_config_imake_pointer #undef snd_config_get_type -#undef snd_config_is_array #undef snd_config_set_id #undef snd_config_set_integer #undef snd_config_set_integer64 @@ -1705,7 +1691,6 @@ #undef snd_pcm_areas_silence #undef snd_pcm_area_copy #undef snd_pcm_areas_copy -#undef snd_pcm_areas_copy_wrap #undef snd_pcm_hook_get_pcm #undef snd_pcm_hook_get_private #undef snd_pcm_hook_set_private @@ -2297,7 +2282,6 @@ #undef snd_mixer_selem_id_get_index #undef snd_mixer_selem_id_set_name #undef snd_mixer_selem_id_set_index -#undef snd_mixer_selem_id_parse #undef snd_seq_open #undef snd_seq_open_lconf #undef snd_seq_name @@ -2570,7 +2554,6 @@ extern "C" { #endif #define snd_asoundlib_version snd_asoundlib_version_dylibloader_wrapper_asound -#define snd_dlpath snd_dlpath_dylibloader_wrapper_asound #define snd_dlopen snd_dlopen_dylibloader_wrapper_asound #define snd_dlsym snd_dlsym_dylibloader_wrapper_asound #define snd_dlclose snd_dlclose_dylibloader_wrapper_asound @@ -2604,7 +2587,6 @@ extern "C" { #define snd_strerror snd_strerror_dylibloader_wrapper_asound #define snd_lib_error_set_handler snd_lib_error_set_handler_dylibloader_wrapper_asound #define snd_lib_error_set_local snd_lib_error_set_local_dylibloader_wrapper_asound -#define snd_config_topdir snd_config_topdir_dylibloader_wrapper_asound #define snd_config_top snd_config_top_dylibloader_wrapper_asound #define snd_config_load snd_config_load_dylibloader_wrapper_asound #define snd_config_load_override snd_config_load_override_dylibloader_wrapper_asound @@ -2622,9 +2604,6 @@ extern "C" { #define snd_config_expand snd_config_expand_dylibloader_wrapper_asound #define snd_config_evaluate snd_config_evaluate_dylibloader_wrapper_asound #define snd_config_add snd_config_add_dylibloader_wrapper_asound -#define snd_config_add_before snd_config_add_before_dylibloader_wrapper_asound -#define snd_config_add_after snd_config_add_after_dylibloader_wrapper_asound -#define snd_config_remove snd_config_remove_dylibloader_wrapper_asound #define snd_config_delete snd_config_delete_dylibloader_wrapper_asound #define snd_config_delete_compound_members snd_config_delete_compound_members_dylibloader_wrapper_asound #define snd_config_copy snd_config_copy_dylibloader_wrapper_asound @@ -2642,7 +2621,6 @@ extern "C" { #define snd_config_imake_safe_string snd_config_imake_safe_string_dylibloader_wrapper_asound #define snd_config_imake_pointer snd_config_imake_pointer_dylibloader_wrapper_asound #define snd_config_get_type snd_config_get_type_dylibloader_wrapper_asound -#define snd_config_is_array snd_config_is_array_dylibloader_wrapper_asound #define snd_config_set_id snd_config_set_id_dylibloader_wrapper_asound #define snd_config_set_integer snd_config_set_integer_dylibloader_wrapper_asound #define snd_config_set_integer64 snd_config_set_integer64_dylibloader_wrapper_asound @@ -2987,7 +2965,6 @@ extern "C" { #define snd_pcm_areas_silence snd_pcm_areas_silence_dylibloader_wrapper_asound #define snd_pcm_area_copy snd_pcm_area_copy_dylibloader_wrapper_asound #define snd_pcm_areas_copy snd_pcm_areas_copy_dylibloader_wrapper_asound -#define snd_pcm_areas_copy_wrap snd_pcm_areas_copy_wrap_dylibloader_wrapper_asound #define snd_pcm_hook_get_pcm snd_pcm_hook_get_pcm_dylibloader_wrapper_asound #define snd_pcm_hook_get_private snd_pcm_hook_get_private_dylibloader_wrapper_asound #define snd_pcm_hook_set_private snd_pcm_hook_set_private_dylibloader_wrapper_asound @@ -3579,7 +3556,6 @@ extern "C" { #define snd_mixer_selem_id_get_index snd_mixer_selem_id_get_index_dylibloader_wrapper_asound #define snd_mixer_selem_id_set_name snd_mixer_selem_id_set_name_dylibloader_wrapper_asound #define snd_mixer_selem_id_set_index snd_mixer_selem_id_set_index_dylibloader_wrapper_asound -#define snd_mixer_selem_id_parse snd_mixer_selem_id_parse_dylibloader_wrapper_asound #define snd_seq_open snd_seq_open_dylibloader_wrapper_asound #define snd_seq_open_lconf snd_seq_open_lconf_dylibloader_wrapper_asound #define snd_seq_name snd_seq_name_dylibloader_wrapper_asound @@ -3849,8 +3825,7 @@ extern "C" { #define snd_midi_event_encode_byte snd_midi_event_encode_byte_dylibloader_wrapper_asound #define snd_midi_event_decode snd_midi_event_decode_dylibloader_wrapper_asound extern const char* (*snd_asoundlib_version_dylibloader_wrapper_asound)( void); -extern int (*snd_dlpath_dylibloader_wrapper_asound)( char*, size_t,const char*); -extern void* (*snd_dlopen_dylibloader_wrapper_asound)(const char*, int, char*, size_t); +extern void* (*snd_dlopen_dylibloader_wrapper_asound)(const char*, int); extern void* (*snd_dlsym_dylibloader_wrapper_asound)( void*,const char*,const char*); extern int (*snd_dlclose_dylibloader_wrapper_asound)( void*); extern int (*snd_async_add_handler_dylibloader_wrapper_asound)( snd_async_handler_t**, int, snd_async_callback_t, void*); @@ -3883,7 +3858,6 @@ extern int (*snd_output_flush_dylibloader_wrapper_asound)( snd_output_t*); extern const char* (*snd_strerror_dylibloader_wrapper_asound)( int); extern int (*snd_lib_error_set_handler_dylibloader_wrapper_asound)( snd_lib_error_handler_t); extern snd_local_error_handler_t (*snd_lib_error_set_local_dylibloader_wrapper_asound)( snd_local_error_handler_t); -extern const char* (*snd_config_topdir_dylibloader_wrapper_asound)( void); extern int (*snd_config_top_dylibloader_wrapper_asound)( snd_config_t**); extern int (*snd_config_load_dylibloader_wrapper_asound)( snd_config_t*, snd_input_t*); extern int (*snd_config_load_override_dylibloader_wrapper_asound)( snd_config_t*, snd_input_t*); @@ -3901,9 +3875,6 @@ extern int (*snd_config_search_definition_dylibloader_wrapper_asound)( snd_confi extern int (*snd_config_expand_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*,const char*, snd_config_t*, snd_config_t**); extern int (*snd_config_evaluate_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*, snd_config_t*, snd_config_t**); extern int (*snd_config_add_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -extern int (*snd_config_add_before_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -extern int (*snd_config_add_after_dylibloader_wrapper_asound)( snd_config_t*, snd_config_t*); -extern int (*snd_config_remove_dylibloader_wrapper_asound)( snd_config_t*); extern int (*snd_config_delete_dylibloader_wrapper_asound)( snd_config_t*); extern int (*snd_config_delete_compound_members_dylibloader_wrapper_asound)(const snd_config_t*); extern int (*snd_config_copy_dylibloader_wrapper_asound)( snd_config_t**, snd_config_t*); @@ -3921,7 +3892,6 @@ extern int (*snd_config_imake_string_dylibloader_wrapper_asound)( snd_config_t** extern int (*snd_config_imake_safe_string_dylibloader_wrapper_asound)( snd_config_t**,const char*,const char*); extern int (*snd_config_imake_pointer_dylibloader_wrapper_asound)( snd_config_t**,const char*,const void*); extern snd_config_type_t (*snd_config_get_type_dylibloader_wrapper_asound)(const snd_config_t*); -extern int (*snd_config_is_array_dylibloader_wrapper_asound)(const snd_config_t*); extern int (*snd_config_set_id_dylibloader_wrapper_asound)( snd_config_t*,const char*); extern int (*snd_config_set_integer_dylibloader_wrapper_asound)( snd_config_t*, long); extern int (*snd_config_set_integer64_dylibloader_wrapper_asound)( snd_config_t*, long long); @@ -4266,7 +4236,6 @@ extern int (*snd_pcm_area_silence_dylibloader_wrapper_asound)(const snd_pcm_chan extern int (*snd_pcm_areas_silence_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_uframes_t, snd_pcm_format_t); extern int (*snd_pcm_area_copy_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_format_t); extern int (*snd_pcm_areas_copy_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t, unsigned int, snd_pcm_uframes_t, snd_pcm_format_t); -extern int (*snd_pcm_areas_copy_wrap_dylibloader_wrapper_asound)(const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_uframes_t,const snd_pcm_channel_area_t*, snd_pcm_uframes_t,const snd_pcm_uframes_t,const unsigned int, snd_pcm_uframes_t,const snd_pcm_format_t); extern snd_pcm_t* (*snd_pcm_hook_get_pcm_dylibloader_wrapper_asound)( snd_pcm_hook_t*); extern void* (*snd_pcm_hook_get_private_dylibloader_wrapper_asound)( snd_pcm_hook_t*); extern void (*snd_pcm_hook_set_private_dylibloader_wrapper_asound)( snd_pcm_hook_t*, void*); @@ -4858,7 +4827,6 @@ extern const char* (*snd_mixer_selem_id_get_name_dylibloader_wrapper_asound)(con extern unsigned int (*snd_mixer_selem_id_get_index_dylibloader_wrapper_asound)(const snd_mixer_selem_id_t*); extern void (*snd_mixer_selem_id_set_name_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*,const char*); extern void (*snd_mixer_selem_id_set_index_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*, unsigned int); -extern int (*snd_mixer_selem_id_parse_dylibloader_wrapper_asound)( snd_mixer_selem_id_t*,const char*); extern int (*snd_seq_open_dylibloader_wrapper_asound)( snd_seq_t**,const char*, int, int); extern int (*snd_seq_open_lconf_dylibloader_wrapper_asound)( snd_seq_t**,const char*, int, int, snd_config_t*); extern const char* (*snd_seq_name_dylibloader_wrapper_asound)( snd_seq_t*); diff --git a/drivers/alsa/audio_driver_alsa.cpp b/drivers/alsa/audio_driver_alsa.cpp index f4c87da9e9..689f76389b 100644 --- a/drivers/alsa/audio_driver_alsa.cpp +++ b/drivers/alsa/audio_driver_alsa.cpp @@ -1,32 +1,32 @@ -/*************************************************************************/ -/* audio_driver_alsa.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ +/**************************************************************************/ +/* audio_driver_alsa.cpp */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ #include "audio_driver_alsa.h" @@ -37,23 +37,23 @@ #include <errno.h> -#ifdef PULSEAUDIO_ENABLED +#if defined(PULSEAUDIO_ENABLED) && defined(SOWRAP_ENABLED) extern "C" { extern int initialize_pulse(int verbose); } #endif -Error AudioDriverALSA::init_device() { +Error AudioDriverALSA::init_output_device() { mix_rate = GLOBAL_GET("audio/driver/mix_rate"); speaker_mode = SPEAKER_MODE_STEREO; channels = 2; - // If there is a specified device check that it is really present - if (device_name != "Default") { - PackedStringArray list = get_device_list(); - if (list.find(device_name) == -1) { - device_name = "Default"; - new_device = "Default"; + // If there is a specified output device check that it is really present + if (output_device_name != "Default") { + PackedStringArray list = get_output_device_list(); + if (list.find(output_device_name) == -1) { + output_device_name = "Default"; + new_output_device = "Default"; } } @@ -75,10 +75,10 @@ Error AudioDriverALSA::init_device() { //6 chans - "plug:surround51" //4 chans - "plug:surround40"; - if (device_name == "Default") { + if (output_device_name == "Default") { status = snd_pcm_open(&pcm_handle, "default", SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK); } else { - String device = device_name; + String device = output_device_name; int pos = device.find(";"); if (pos != -1) { device = device.substr(0, pos); @@ -153,6 +153,7 @@ Error AudioDriverALSA::init_device() { } Error AudioDriverALSA::init() { +#ifdef SOWRAP_ENABLED #ifdef DEBUG_ENABLED int dylibloader_verbose = 1; #else @@ -167,11 +168,11 @@ Error AudioDriverALSA::init() { if (initialize_asound(dylibloader_verbose)) { return ERR_CANT_OPEN; } - +#endif active.clear(); exit_thread.clear(); - Error err = init_device(); + Error err = init_output_device(); if (err == OK) { thread.start(AudioDriverALSA::thread_func, this); } @@ -227,18 +228,18 @@ void AudioDriverALSA::thread_func(void *p_udata) { } } - // User selected a new device, finish the current one so we'll init the new device - if (ad->device_name != ad->new_device) { - ad->device_name = ad->new_device; - ad->finish_device(); + // User selected a new output device, finish the current one so we'll init the new device. + if (ad->output_device_name != ad->new_output_device) { + ad->output_device_name = ad->new_output_device; + ad->finish_output_device(); - Error err = ad->init_device(); + Error err = ad->init_output_device(); if (err != OK) { - ERR_PRINT("ALSA: init_device error"); - ad->device_name = "Default"; - ad->new_device = "Default"; + ERR_PRINT("ALSA: init_output_device error"); + ad->output_device_name = "Default"; + ad->new_output_device = "Default"; - err = ad->init_device(); + err = ad->init_output_device(); if (err != OK) { ad->active.clear(); ad->exit_thread.set(); @@ -263,7 +264,7 @@ AudioDriver::SpeakerMode AudioDriverALSA::get_speaker_mode() const { return speaker_mode; } -PackedStringArray AudioDriverALSA::get_device_list() { +PackedStringArray AudioDriverALSA::get_output_device_list() { PackedStringArray list; list.push_back("Default"); @@ -298,13 +299,13 @@ PackedStringArray AudioDriverALSA::get_device_list() { return list; } -String AudioDriverALSA::get_device() { - return device_name; +String AudioDriverALSA::get_output_device() { + return output_device_name; } -void AudioDriverALSA::set_device(String device) { +void AudioDriverALSA::set_output_device(const String &p_name) { lock(); - new_device = device; + new_output_device = p_name; unlock(); } @@ -316,7 +317,7 @@ void AudioDriverALSA::unlock() { mutex.unlock(); } -void AudioDriverALSA::finish_device() { +void AudioDriverALSA::finish_output_device() { if (pcm_handle) { snd_pcm_close(pcm_handle); pcm_handle = nullptr; @@ -327,7 +328,7 @@ void AudioDriverALSA::finish() { exit_thread.set(); thread.wait_to_finish(); - finish_device(); + finish_output_device(); } #endif // ALSA_ENABLED diff --git a/drivers/alsa/audio_driver_alsa.h b/drivers/alsa/audio_driver_alsa.h index fa1dba38ed..b62d7188dd 100644 --- a/drivers/alsa/audio_driver_alsa.h +++ b/drivers/alsa/audio_driver_alsa.h @@ -1,32 +1,32 @@ -/*************************************************************************/ -/* audio_driver_alsa.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* https://godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ +/**************************************************************************/ +/* audio_driver_alsa.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ #ifndef AUDIO_DRIVER_ALSA_H #define AUDIO_DRIVER_ALSA_H @@ -38,7 +38,11 @@ #include "core/templates/safe_refcount.h" #include "servers/audio_server.h" +#ifdef SOWRAP_ENABLED #include "asound-so_wrap.h" +#else +#include <alsa/asoundlib.h> +#endif class AudioDriverALSA : public AudioDriver { Thread thread; @@ -46,14 +50,14 @@ class AudioDriverALSA : public AudioDriver { snd_pcm_t *pcm_handle = nullptr; - String device_name = "Default"; - String new_device = "Default"; + String output_device_name = "Default"; + String new_output_device = "Default"; Vector<int32_t> samples_in; Vector<int16_t> samples_out; - Error init_device(); - void finish_device(); + Error init_output_device(); + void finish_output_device(); static void thread_func(void *p_udata); @@ -69,20 +73,22 @@ class AudioDriverALSA : public AudioDriver { SafeFlag exit_thread; public: - const char *get_name() const { + virtual const char *get_name() const override { return "ALSA"; - }; - - virtual Error init(); - virtual void start(); - virtual int get_mix_rate() const; - virtual SpeakerMode get_speaker_mode() const; - virtual PackedStringArray get_device_list(); - virtual String get_device(); - virtual void set_device(String device); - virtual void lock(); - virtual void unlock(); - virtual void finish(); + } + + virtual Error init() override; + virtual void start() override; + virtual int get_mix_rate() const override; + virtual SpeakerMode get_speaker_mode() const override; + + virtual void lock() override; + virtual void unlock() override; + virtual void finish() override; + + virtual PackedStringArray get_output_device_list() override; + virtual String get_output_device() override; + virtual void set_output_device(const String &p_name) override; AudioDriverALSA() {} ~AudioDriverALSA() {} |