|
102 Patches: Detours to the Rescue
C reference for DttR maintainers and modders.
|
#include <dttr_mods.h>#include <SDL3/SDL.h>#include <SDL3_mixer/SDL_mixer.h>#include <stdbool.h>#include <stddef.h>#include <stdint.h>#include <string.h>#include <windows.h>Go to the source code of this file.
Data Structures | |
| struct | mss_wave_info |
Macros | |
| #define | DTTR_MSS_STATUS_DONE 2 |
| #define | DTTR_MSS_STATUS_PLAYING 4 |
| #define | DTTR_MSS_STATUS_STOPPED 8 |
| #define | DTTR_MSS_PREF_DIG_MIXER_CHANNELS 1 |
| #define | DTTR_MSS_PREF_DIG_DEFAULT_VOLUME 2 |
| #define | DTTR_MSS_DEFAULT_MIXER_CHANNELS 64 |
| #define | DTTR_MSS_DEFAULT_LOOP_COUNT 1 |
| #define | DTTR_MSS_DEFAULT_MASTER_GAIN 1.0f |
| #define | DTTR_MSS_DEFAULT_PAN 64 |
| #define | DTTR_MSS_DEFAULT_VOLUME 127 |
| #define | DTTR_MSS_WAVE_FORMAT_PCM 1 |
| #define | DTTR_MSS_DEFAULT_RATE 22050 |
| #define | DTTR_MSS_MIXER_CHANNELS 2 |
| #define | DTTR_MSS_MIXER_FORMAT SDL_AUDIO_F32 |
| #define | DTTR_MSS_MIXER_RATE DTTR_MSS_DEFAULT_RATE |
| #define | DTTR_MSS_MAX_VOLUME 127.0f |
| #define | DTTR_MSS_PREFERENCES_CAPACITY 64 |
| #define | DTTR_MSS_STREAM_HEADROOM_GAIN 1.0f |
| #define DTTR_MSS_DEFAULT_LOOP_COUNT 1 |
Definition at line 22 of file mss_private.h.
Referenced by reset_sample_defaults(), and reset_stream_defaults().
| #define DTTR_MSS_DEFAULT_MASTER_GAIN 1.0f |
Definition at line 23 of file mss_private.h.
Referenced by dttr_mss_sdl_shutdown().
| #define DTTR_MSS_DEFAULT_MIXER_CHANNELS 64 |
Definition at line 21 of file mss_private.h.
Referenced by dttr_mss_ail_allocate_sample_handle(), dttr_mss_reset_preferences(), dttr_mss_sample_apply_master_gain(), dttr_mss_sample_shutdown_all(), dttr_mss_sample_stop_all(), and is_sample().
| #define DTTR_MSS_DEFAULT_PAN 64 |
Definition at line 24 of file mss_private.h.
Referenced by reset_sample_defaults().
| #define DTTR_MSS_DEFAULT_RATE 22050 |
Definition at line 29 of file mss_private.h.
Referenced by dttr_mss_ail_sample_playback_rate(), dttr_mss_wave_rate(), and reset_sample_defaults().
| #define DTTR_MSS_DEFAULT_VOLUME 127 |
Definition at line 25 of file mss_private.h.
Referenced by dttr_mss_reset_preferences(), dttr_mss_track_gain(), master_gain_for_volume(), reset_sample_defaults(), and reset_stream_defaults().
| #define DTTR_MSS_MAX_VOLUME 127.0f |
Definition at line 33 of file mss_private.h.
Referenced by dttr_mss_track_gain(), and master_gain_for_volume().
| #define DTTR_MSS_MIXER_CHANNELS 2 |
Definition at line 30 of file mss_private.h.
Referenced by dttr_mss_core_ensure_mixer(), and wave_format_spec().
| #define DTTR_MSS_MIXER_FORMAT SDL_AUDIO_F32 |
Definition at line 31 of file mss_private.h.
Referenced by dttr_mss_core_ensure_mixer(), and wave_format_spec().
| #define DTTR_MSS_MIXER_RATE DTTR_MSS_DEFAULT_RATE |
Definition at line 32 of file mss_private.h.
Referenced by dttr_mss_core_ensure_mixer(), and render_sample_audio().
| #define DTTR_MSS_PREF_DIG_DEFAULT_VOLUME 2 |
Definition at line 20 of file mss_private.h.
Referenced by dttr_mss_reset_preferences(), and reset_sample_defaults().
| #define DTTR_MSS_PREF_DIG_MIXER_CHANNELS 1 |
Definition at line 19 of file mss_private.h.
Referenced by dttr_mss_reset_preferences().
| #define DTTR_MSS_PREFERENCES_CAPACITY 64 |
Definition at line 34 of file mss_private.h.
| #define DTTR_MSS_STATUS_DONE 2 |
Definition at line 15 of file mss_private.h.
Referenced by dttr_mss_ail_sample_status(), dttr_mss_ail_stream_status(), dttr_mss_track_status(), reset_sample_defaults(), and reset_stream_defaults().
| #define DTTR_MSS_STATUS_PLAYING 4 |
Definition at line 16 of file mss_private.h.
Referenced by dttr_mss_ail_pause_stream(), dttr_mss_ail_set_sample_playback_rate(), dttr_mss_ail_start_sample(), dttr_mss_ail_start_stream(), and dttr_mss_track_status().
| #define DTTR_MSS_STATUS_STOPPED 8 |
Definition at line 17 of file mss_private.h.
Referenced by dttr_mss_track_status(), and stop_sample().
| #define DTTR_MSS_STREAM_HEADROOM_GAIN 1.0f |
Definition at line 35 of file mss_private.h.
Referenced by apply_stream_gain().
| #define DTTR_MSS_WAVE_FORMAT_PCM 1 |
Definition at line 27 of file mss_private.h.
Referenced by wave_format_spec().
Definition at line 339 of file mss_sample.c.
References DTTR_LOG_TRACE, dttr_mss_core_ensure_mixer(), DTTR_MSS_DEFAULT_MIXER_CHANNELS, NULL, reset_sample_slot(), and samples.
Definition at line 230 of file mss_stream.c.
References destroy_stream(), DTTR_LOG_TRACE, find_stream(), and stream_slot().
Definition at line 546 of file mss_sample.c.
References dttr_mss_ail_stop_sample().
| int dttr_mss_ail_get_preference | ( | unsigned int | preference | ) |
Definition at line 276 of file mss_sdl.c.
References dttr_mss_core_get_preference().
Definition at line 379 of file mss_sample.c.
References DTTR_LOG_TRACE, free_sample_audio(), require_sample(), reset_sample_defaults(), and sample_slot().
Definition at line 167 of file mss_stream.c.
References apply_stream_track(), mss_stream::audio, destroy_stream_objects(), DTTR_LOG_ERROR, DTTR_LOG_TRACE, dttr_mss_core_ensure_mixer(), dttr_mss_core_mixer(), free, link_stream(), NULL, reset_stream_defaults(), resolve_stream_path(), stream_slot(), and mss_stream::track.
Definition at line 281 of file mss_stream.c.
References DTTR_MSS_STATUS_PLAYING, find_stream(), mss_stream::status, and mss_stream::track.
Definition at line 363 of file mss_sample.c.
References DTTR_LOG_TRACE, free_sample_audio(), require_sample(), and sample_slot().
| int dttr_mss_ail_sample_playback_rate | ( | void * | sample | ) |
Definition at line 646 of file mss_sample.c.
References mss_sample::current_rate, DTTR_MSS_DEFAULT_RATE, and is_sample().
| int dttr_mss_ail_sample_status | ( | void * | sample | ) |
Definition at line 550 of file mss_sample.c.
References DTTR_MSS_STATUS_DONE, dttr_mss_track_status(), is_sample(), mss_sample::status, and mss_sample::track.
Definition at line 361 of file mss_sdl.c.
References dttr_mss_core_set_master_gain(), dttr_mss_sample_apply_master_gain(), dttr_mss_stream_apply_master_gain(), and master_gain_for_volume().
| int dttr_mss_ail_set_preference | ( | unsigned int | preference, |
| int | value ) |
Definition at line 272 of file mss_sdl.c.
References dttr_mss_core_set_preference().
Definition at line 391 of file mss_sample.c.
References apply_sample_track(), mss_sample::audio, mss_sample::base_rate, mss_wave_info::bits_per_sample, mss_wave_info::channels, mss_sample::current_rate, mss_wave_info::data_size, DTTR_LOG_ERROR, DTTR_LOG_TRACE, dttr_mss_core_ensure_mixer(), dttr_mss_core_mixer(), dttr_mss_wave_parse(), dttr_mss_wave_rate(), dttr_mss_wave_riff_size(), mss_wave_info::format_tag, free_sample_audio(), is_sample(), load_sample_audio_from_memory(), load_sample_frames(), mss_sample::pcm_frame_count, mss_sample::pcm_frames, mss_sample::rate_overridden, mss_wave_info::sample_rate, sample_slot(), size, and mss_sample::track.
Definition at line 560 of file mss_sample.c.
References dttr_mss_loops_to_sdl(), mss_sample::loops, require_sample(), and mss_sample::track.
Definition at line 582 of file mss_sample.c.
References dttr_mss_track_apply_pan(), mss_sample::pan, require_sample(), and mss_sample::track.
Definition at line 592 of file mss_sample.c.
References apply_rate(), mss_sample::base_rate, mss_sample::current_rate, DTTR_LOG_TRACE, dttr_mss_sample_rate_pauses_playback(), DTTR_MSS_STATUS_PLAYING, mss_sample::paused_by_rate, mss_sample::pcm_frames, mss_sample::rate_overridden, render_sample_audio(), mss_sample::rendered_rate, require_sample(), sample_slot(), mss_sample::status, and mss_sample::track.
Definition at line 572 of file mss_sample.c.
References apply_sample_gain(), require_sample(), and mss_sample::volume.
Definition at line 310 of file mss_stream.c.
References dttr_mss_loops_to_sdl(), find_stream(), mss_stream::loops, and mss_stream::track.
Definition at line 298 of file mss_stream.c.
References apply_stream_gain(), find_stream(), and mss_stream::volume.
| void dttr_mss_ail_shutdown | ( | ) |
Definition at line 268 of file mss_sdl.c.
References dttr_mss_sdl_shutdown().
Definition at line 483 of file mss_sample.c.
References apply_sample_track(), mss_sample::audio, mss_sample::current_rate, DTTR_LOG_ERROR, DTTR_LOG_TRACE, dttr_mss_loops_to_sdl(), DTTR_MSS_STATUS_PLAYING, dttr_mss_track_play(), mss_sample::loops, mss_sample::pan, mss_sample::paused_by_rate, mss_sample::pcm_frames, render_sample_audio(), require_sample(), sample_slot(), mss_sample::status, mss_sample::track, and mss_sample::volume.
Definition at line 242 of file mss_stream.c.
References apply_stream_track(), DTTR_LOG_TRACE, dttr_mss_loops_to_sdl(), DTTR_MSS_STATUS_PLAYING, dttr_mss_track_play(), find_stream(), mss_stream::loops, mss_stream::status, stream_slot(), mss_stream::track, and mss_stream::volume.
| int dttr_mss_ail_startup | ( | ) |
Definition at line 263 of file mss_sdl.c.
References dttr_mss_core_ensure_mix_initialized(), and dttr_mss_core_ensure_preferences().
Definition at line 530 of file mss_sample.c.
References DTTR_LOG_TRACE, require_sample(), sample_slot(), mss_sample::status, stop_sample(), and mss_sample::track.
Referenced by dttr_mss_ail_end_sample().
| int dttr_mss_ail_stream_status | ( | void * | stream | ) |
Definition at line 269 of file mss_stream.c.
References DTTR_MSS_STATUS_DONE, dttr_mss_track_status(), find_stream(), mss_stream::status, and mss_stream::track.
Definition at line 331 of file mss_sdl.c.
References DTTR_LOG_ERROR, DTTR_LOG_TRACE, dttr_mss_core_decrement_driver_open_count(), dttr_mss_core_driver_open_count(), dttr_mss_core_mixer(), and dttr_mss_sdl_shutdown().
| int dttr_mss_ail_waveOutOpen | ( | void ** | driver_out, |
| void * | wave_out, | ||
| int | device_id, | ||
| const void * | format ) |
Definition at line 281 of file mss_sdl.c.
References desired_spec, DTTR_LOG_TRACE, dttr_mss_core_driver_open_count(), dttr_mss_core_ensure_mixer(), dttr_mss_core_increment_driver_open_count(), dttr_mss_core_mixer(), dttr_mss_core_set_desired_spec(), NULL, and wave_format_spec().
| void dttr_mss_core_decrement_driver_open_count | ( | ) |
Definition at line 172 of file mss_core.c.
References driver_open_count.
Referenced by dttr_mss_ail_waveOutClose().
| void dttr_mss_core_destroy_mixer | ( | ) |
Definition at line 131 of file mss_core.c.
References clear_desired_spec(), mix_initialized, mixer, mixer_spec, and NULL.
Referenced by dttr_mss_sdl_shutdown().
| int dttr_mss_core_driver_open_count | ( | ) |
Definition at line 164 of file mss_core.c.
References driver_open_count.
Referenced by dttr_mss_ail_waveOutClose(), and dttr_mss_ail_waveOutOpen().
| bool dttr_mss_core_ensure_mix_initialized | ( | ) |
Definition at line 79 of file mss_core.c.
References DTTR_LOG_ERROR, and mix_initialized.
Referenced by dttr_mss_ail_startup(), and dttr_mss_core_ensure_mixer().
| bool dttr_mss_core_ensure_mixer | ( | ) |
Definition at line 93 of file mss_core.c.
References desired_spec, DTTR_LOG_ERROR, DTTR_LOG_INFO, dttr_mss_core_ensure_mix_initialized(), DTTR_MSS_MIXER_CHANNELS, DTTR_MSS_MIXER_FORMAT, DTTR_MSS_MIXER_RATE, has_desired_spec, mixer, and mixer_spec.
Referenced by dttr_mss_ail_allocate_sample_handle(), dttr_mss_ail_open_stream(), dttr_mss_ail_set_sample_file(), and dttr_mss_ail_waveOutOpen().
| void dttr_mss_core_ensure_preferences | ( | ) |
Definition at line 41 of file mss_core.c.
References dttr_mss_core_reset_preferences(), and preferences_initialized.
Referenced by dttr_mss_ail_startup(), dttr_mss_core_get_preference(), dttr_mss_core_set_preference(), and reset_sample_defaults().
| int dttr_mss_core_get_preference | ( | unsigned int | preference | ) |
Definition at line 49 of file mss_core.c.
References dttr_mss_core_ensure_preferences(), and preference_slot().
Referenced by dttr_mss_ail_get_preference(), and reset_sample_defaults().
| bool dttr_mss_core_has_driver | ( | ) |
Definition at line 32 of file mss_core.c.
References driver_open_count, and mixer.
Referenced by has_audio_driver().
| void dttr_mss_core_increment_driver_open_count | ( | ) |
Definition at line 168 of file mss_core.c.
References driver_open_count.
Referenced by dttr_mss_ail_waveOutOpen().
| float dttr_mss_core_master_gain | ( | ) |
Definition at line 184 of file mss_core.c.
References master_gain.
Referenced by apply_sample_gain(), and apply_stream_gain().
| MIX_Mixer * dttr_mss_core_mixer | ( | ) |
Definition at line 146 of file mss_core.c.
References mixer.
Referenced by dttr_mss_ail_open_stream(), dttr_mss_ail_set_sample_file(), dttr_mss_ail_waveOutClose(), dttr_mss_ail_waveOutOpen(), load_sample_audio_from_memory(), and render_sample_audio().
| SDL_AudioSpec dttr_mss_core_mixer_spec | ( | ) |
Definition at line 150 of file mss_core.c.
References mixer_spec.
Referenced by render_sample_audio().
| void dttr_mss_core_reset_driver_open_count | ( | ) |
Definition at line 180 of file mss_core.c.
References driver_open_count.
Referenced by dttr_mss_sdl_shutdown().
| void dttr_mss_core_reset_preferences | ( | ) |
Definition at line 36 of file mss_core.c.
References dttr_mss_reset_preferences(), preferences, and preferences_initialized.
Referenced by dttr_mss_core_ensure_preferences().
| float dttr_mss_core_sample_headroom_gain | ( | ) |
Definition at line 71 of file mss_core.c.
References dttr_config.
Referenced by apply_sample_gain().
| float dttr_mss_core_sample_preemphasis | ( | ) |
Definition at line 75 of file mss_core.c.
References dttr_config.
Referenced by render_sample_audio().
| void dttr_mss_core_set_desired_spec | ( | const SDL_AudioSpec * | spec | ) |
Definition at line 154 of file mss_core.c.
References clear_desired_spec(), desired_spec, and has_desired_spec.
Referenced by dttr_mss_ail_waveOutOpen().
Definition at line 188 of file mss_core.c.
References master_gain.
Referenced by dttr_mss_ail_set_digital_master_volume(), and dttr_mss_sdl_shutdown().
| int dttr_mss_core_set_preference | ( | unsigned int | preference, |
| int | value ) |
Definition at line 59 of file mss_core.c.
References dttr_mss_core_ensure_preferences(), and preference_slot().
Referenced by dttr_mss_ail_set_preference().
|
inlinestatic |
Definition at line 88 of file mss_private.h.
Referenced by dttr_mss_ail_set_sample_loop_count(), dttr_mss_ail_set_stream_loop_count(), dttr_mss_ail_start_sample(), and dttr_mss_ail_start_stream().
|
inlinestatic |
Definition at line 73 of file mss_private.h.
Referenced by dttr_mss_pan_to_stereo_bytes().
|
inlinestatic |
Definition at line 77 of file mss_private.h.
References dttr_mss_pan_table_byte().
Referenced by dttr_mss_track_apply_pan().
|
inlinestatic |
Definition at line 50 of file mss_private.h.
References count, DTTR_MSS_DEFAULT_MIXER_CHANNELS, DTTR_MSS_DEFAULT_VOLUME, DTTR_MSS_PREF_DIG_DEFAULT_VOLUME, DTTR_MSS_PREF_DIG_MIXER_CHANNELS, and preferences.
Referenced by dttr_mss_core_reset_preferences().
| void dttr_mss_sample_apply_master_gain | ( | ) |
Definition at line 329 of file mss_sample.c.
References apply_sample_gain(), DTTR_MSS_DEFAULT_MIXER_CHANNELS, and samples.
Referenced by dttr_mss_ail_set_digital_master_volume().
|
inlinestatic |
Definition at line 69 of file mss_private.h.
Referenced by dttr_mss_ail_set_sample_playback_rate().
| void dttr_mss_sample_shutdown_all | ( | ) |
Definition at line 312 of file mss_sample.c.
References DTTR_MSS_DEFAULT_MIXER_CHANNELS, free_sample_audio(), and samples.
Referenced by dttr_mss_sdl_shutdown().
| void dttr_mss_sample_stop_all | ( | ) |
Definition at line 319 of file mss_sample.c.
References DTTR_MSS_DEFAULT_MIXER_CHANNELS, samples, and stop_sample().
Referenced by run_guarded_audio_hook().
| bool dttr_mss_sdl_install_hooks | ( | const DTTR_Mods_Context * | ctx | ) |
Definition at line 228 of file mss_sdl.c.
References ctx, desc, DTTR_MODS_LOG_ERROR, and install_mss_import_descriptor().
Referenced by dttr_audio_init().
| void dttr_mss_sdl_release_hooks | ( | ) |
Definition at line 205 of file mss_sdl.c.
References DTTR_ARRAY_COUNT, DTTR_Core_Unhook(), DTTR_LOG_ERROR, DTTR_ResultOK(), dttr_sidecar_result_detail(), mss_import_hook::handle, mss_import_hook::hook_name, mss_import_hooks, and NULL.
Referenced by dttr_audio_cleanup().
| void dttr_mss_sdl_shutdown | ( | ) |
Definition at line 108 of file mss_sdl.c.
References dttr_mss_core_destroy_mixer(), dttr_mss_core_reset_driver_open_count(), dttr_mss_core_set_master_gain(), DTTR_MSS_DEFAULT_MASTER_GAIN, dttr_mss_sample_shutdown_all(), and dttr_mss_stream_shutdown_all().
Referenced by dttr_audio_cleanup(), dttr_mss_ail_shutdown(), and dttr_mss_ail_waveOutClose().
| void dttr_mss_stream_apply_master_gain | ( | ) |
Definition at line 142 of file mss_stream.c.
References apply_stream_gain(), and streams.
Referenced by dttr_mss_ail_set_digital_master_volume().
| void dttr_mss_stream_shutdown_all | ( | ) |
Definition at line 135 of file mss_stream.c.
References destroy_stream(), and streams.
Referenced by dttr_mss_sdl_shutdown().
| void dttr_mss_track_apply_pan | ( | MIX_Track * | track, |
| int | pan ) |
Definition at line 22 of file mss_track.c.
References dttr_mss_pan_to_stereo_bytes(), float, and STEREO_BYTE_MAX.
Referenced by apply_sample_track(), and dttr_mss_ail_set_sample_pan().
| float dttr_mss_track_frequency_ratio | ( | int | rate, |
| int | reference_rate ) |
Definition at line 54 of file mss_track.c.
References float, MAX_FREQUENCY_RATIO, and MIN_FREQUENCY_RATIO.
Referenced by apply_rate().
Definition at line 9 of file mss_track.c.
References DTTR_MSS_DEFAULT_VOLUME, DTTR_MSS_MAX_VOLUME, float, and master_gain.
Referenced by apply_sample_gain(), and apply_stream_gain().
| void dttr_mss_track_play | ( | MIX_Track * | track, |
| int | sdl_loops ) |
Definition at line 38 of file mss_track.c.
Referenced by dttr_mss_ail_start_sample(), and dttr_mss_ail_start_stream().
| int dttr_mss_track_status | ( | MIX_Track * | track, |
| int | previous_status ) |
Definition at line 71 of file mss_track.c.
References DTTR_MSS_STATUS_DONE, DTTR_MSS_STATUS_PLAYING, and DTTR_MSS_STATUS_STOPPED.
Referenced by dttr_mss_ail_sample_status(), and dttr_mss_ail_stream_status().
|
inlinestatic |
Definition at line 65 of file mss_private.h.
Referenced by wave_format_spec().
| bool dttr_mss_wave_decode_f32 | ( | const void * | file_image, |
| size_t | size, | ||
| mss_wave_info * | info, | ||
| float ** | frames_out ) |
Definition at line 77 of file mss_wave.c.
References mss_wave_info::channels, mss_wave_info::frame_count, mss_wave_info::has_data, mss_wave_info::has_fmt, NULL, mss_wave_info::sample_rate, and size.
Referenced by load_sample_frames().
Definition at line 115 of file mss_wave.c.
References NULL.
Referenced by clear_sample_wave(), and load_sample_frames().
| bool dttr_mss_wave_parse | ( | const void * | file_image, |
| mss_wave_info * | info ) |
Definition at line 29 of file mss_wave.c.
References mss_wave_info::bits_per_sample, mss_wave_info::block_align, mss_wave_info::channels, mss_wave_info::data_offset, mss_wave_info::data_size, dttr_mss_wave_riff_size(), mss_wave_info::format_tag, mss_wave_info::frame_count, mss_wave_info::has_data, mss_wave_info::has_fmt, NULL, and mss_wave_info::sample_rate.
Referenced by dttr_mss_ail_set_sample_file().
| int dttr_mss_wave_rate | ( | const mss_wave_info * | info | ) |
Definition at line 68 of file mss_wave.c.
References DTTR_MSS_DEFAULT_RATE, mss_wave_info::has_fmt, and mss_wave_info::sample_rate.
Referenced by dttr_mss_ail_set_sample_file().
| uint16_t dttr_mss_wave_read_u16le | ( | const uint8_t * | p | ) |
Definition at line 11 of file mss_wave.c.
Referenced by wave_format_spec().
| uint32_t dttr_mss_wave_read_u32le | ( | const uint8_t * | p | ) |
Definition at line 15 of file mss_wave.c.
Referenced by dttr_mss_wave_riff_size(), and wave_format_spec().
| size_t dttr_mss_wave_riff_size | ( | const void * | file_image | ) |
Definition at line 20 of file mss_wave.c.
References dttr_mss_wave_read_u32le().
Referenced by dttr_mss_ail_set_sample_file(), and dttr_mss_wave_parse().