102 Patches: Detours to the Rescue
C reference for DttR maintainers and modders.
Loading...
Searching...
No Matches
mss_private.h File Reference
#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

Functions

static void dttr_mss_reset_preferences (int *preferences, size_t count)
static bool dttr_mss_wave_bits_supported (uint16_t bits_per_sample)
static bool dttr_mss_sample_rate_pauses_playback (int rate)
static int dttr_mss_pan_table_byte (int pan)
static void dttr_mss_pan_to_stereo_bytes (int pan, int *left_out, int *right_out)
static int dttr_mss_loops_to_sdl (int mss_loop_count)
bool dttr_mss_core_has_driver ()
void dttr_mss_core_reset_preferences ()
void dttr_mss_core_ensure_preferences ()
int dttr_mss_core_get_preference (unsigned int preference)
int dttr_mss_core_set_preference (unsigned int preference, int value)
bool dttr_mss_core_ensure_mix_initialized ()
bool dttr_mss_core_ensure_mixer ()
void dttr_mss_core_destroy_mixer ()
MIX_Mixer * dttr_mss_core_mixer ()
SDL_AudioSpec dttr_mss_core_mixer_spec ()
void dttr_mss_core_set_desired_spec (const SDL_AudioSpec *spec)
int dttr_mss_core_driver_open_count ()
void dttr_mss_core_increment_driver_open_count ()
void dttr_mss_core_decrement_driver_open_count ()
void dttr_mss_core_reset_driver_open_count ()
float dttr_mss_core_master_gain ()
void dttr_mss_core_set_master_gain (float gain)
float dttr_mss_core_sample_headroom_gain ()
float dttr_mss_core_sample_preemphasis ()
void dttr_mss_sample_shutdown_all ()
void dttr_mss_sample_stop_all ()
void dttr_mss_sample_apply_master_gain ()
void dttr_mss_stream_shutdown_all ()
void dttr_mss_stream_apply_master_gain ()
float dttr_mss_track_gain (int volume, float master_gain, float headroom)
void dttr_mss_track_apply_pan (MIX_Track *track, int pan)
void dttr_mss_track_play (MIX_Track *track, int sdl_loops)
float dttr_mss_track_frequency_ratio (int rate, int reference_rate)
int dttr_mss_track_status (MIX_Track *track, int previous_status)
uint16_t dttr_mss_wave_read_u16le (const uint8_t *p)
uint32_t dttr_mss_wave_read_u32le (const uint8_t *p)
size_t dttr_mss_wave_riff_size (const void *file_image)
bool dttr_mss_wave_parse (const void *file_image, mss_wave_info *info)
int dttr_mss_wave_rate (const mss_wave_info *info)
bool dttr_mss_wave_decode_f32 (const void *file_image, size_t size, mss_wave_info *info, float **frames_out)
void dttr_mss_wave_free (void *ptr)
void dttr_mss_sdl_shutdown ()
void dttr_mss_sdl_release_hooks ()
bool dttr_mss_sdl_install_hooks (const DTTR_Mods_Context *ctx)
int dttr_mss_ail_startup ()
void dttr_mss_ail_shutdown ()
int dttr_mss_ail_set_preference (unsigned int preference, int value)
int dttr_mss_ail_get_preference (unsigned int preference)
int dttr_mss_ail_waveOutOpen (void **driver_out, void *wave_out, int device_id, const void *format)
void dttr_mss_ail_waveOutClose (void *driver)
voiddttr_mss_ail_allocate_sample_handle (void *driver)
void dttr_mss_ail_release_sample_handle (void *sample)
void dttr_mss_ail_init_sample (void *sample)
int dttr_mss_ail_set_sample_file (void *sample, const void *file_image, int block)
void dttr_mss_ail_start_sample (void *sample)
void dttr_mss_ail_stop_sample (void *sample)
void dttr_mss_ail_end_sample (void *sample)
int dttr_mss_ail_sample_status (void *sample)
void dttr_mss_ail_set_sample_loop_count (void *sample, int loops)
void dttr_mss_ail_set_sample_volume (void *sample, int volume)
void dttr_mss_ail_set_sample_pan (void *sample, int pan)
void dttr_mss_ail_set_sample_playback_rate (void *sample, int rate)
int dttr_mss_ail_sample_playback_rate (void *sample)
voiddttr_mss_ail_open_stream (void *driver, const char *path, int stream_mem)
void dttr_mss_ail_close_stream (void *stream)
void dttr_mss_ail_start_stream (void *stream)
int dttr_mss_ail_stream_status (void *stream)
void dttr_mss_ail_pause_stream (void *stream, int pause)
void dttr_mss_ail_set_stream_volume (void *stream, int volume)
void dttr_mss_ail_set_stream_loop_count (void *stream, int loops)
void dttr_mss_ail_set_digital_master_volume (void *driver, int volume)

Macro Definition Documentation

◆ DTTR_MSS_DEFAULT_LOOP_COUNT

#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().

◆ DTTR_MSS_DEFAULT_MASTER_GAIN

#define DTTR_MSS_DEFAULT_MASTER_GAIN   1.0f

Definition at line 23 of file mss_private.h.

Referenced by dttr_mss_sdl_shutdown().

◆ DTTR_MSS_DEFAULT_MIXER_CHANNELS

◆ DTTR_MSS_DEFAULT_PAN

#define DTTR_MSS_DEFAULT_PAN   64

Definition at line 24 of file mss_private.h.

Referenced by reset_sample_defaults().

◆ DTTR_MSS_DEFAULT_RATE

#define DTTR_MSS_DEFAULT_RATE   22050

◆ DTTR_MSS_DEFAULT_VOLUME

#define DTTR_MSS_DEFAULT_VOLUME   127

◆ DTTR_MSS_MAX_VOLUME

#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().

◆ DTTR_MSS_MIXER_CHANNELS

#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().

◆ DTTR_MSS_MIXER_FORMAT

#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().

◆ DTTR_MSS_MIXER_RATE

#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().

◆ DTTR_MSS_PREF_DIG_DEFAULT_VOLUME

#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().

◆ DTTR_MSS_PREF_DIG_MIXER_CHANNELS

#define DTTR_MSS_PREF_DIG_MIXER_CHANNELS   1

Definition at line 19 of file mss_private.h.

Referenced by dttr_mss_reset_preferences().

◆ DTTR_MSS_PREFERENCES_CAPACITY

#define DTTR_MSS_PREFERENCES_CAPACITY   64

Definition at line 34 of file mss_private.h.

◆ DTTR_MSS_STATUS_DONE

#define DTTR_MSS_STATUS_DONE   2

◆ DTTR_MSS_STATUS_PLAYING

◆ DTTR_MSS_STATUS_STOPPED

#define DTTR_MSS_STATUS_STOPPED   8

Definition at line 17 of file mss_private.h.

Referenced by dttr_mss_track_status(), and stop_sample().

◆ DTTR_MSS_STREAM_HEADROOM_GAIN

#define DTTR_MSS_STREAM_HEADROOM_GAIN   1.0f

Definition at line 35 of file mss_private.h.

Referenced by apply_stream_gain().

◆ DTTR_MSS_WAVE_FORMAT_PCM

#define DTTR_MSS_WAVE_FORMAT_PCM   1

Definition at line 27 of file mss_private.h.

Referenced by wave_format_spec().

Function Documentation

◆ dttr_mss_ail_allocate_sample_handle()

void * dttr_mss_ail_allocate_sample_handle ( void * driver)

◆ dttr_mss_ail_close_stream()

void dttr_mss_ail_close_stream ( void * stream)

Definition at line 230 of file mss_stream.c.

References destroy_stream(), DTTR_LOG_TRACE, find_stream(), and stream_slot().

◆ dttr_mss_ail_end_sample()

void dttr_mss_ail_end_sample ( void * sample)

Definition at line 546 of file mss_sample.c.

References dttr_mss_ail_stop_sample().

◆ dttr_mss_ail_get_preference()

int dttr_mss_ail_get_preference ( unsigned int preference)

Definition at line 276 of file mss_sdl.c.

References dttr_mss_core_get_preference().

◆ dttr_mss_ail_init_sample()

void dttr_mss_ail_init_sample ( void * sample)

◆ dttr_mss_ail_open_stream()

◆ dttr_mss_ail_pause_stream()

void dttr_mss_ail_pause_stream ( void * stream,
int pause )

◆ dttr_mss_ail_release_sample_handle()

void dttr_mss_ail_release_sample_handle ( void * sample)

Definition at line 363 of file mss_sample.c.

References DTTR_LOG_TRACE, free_sample_audio(), require_sample(), and sample_slot().

◆ dttr_mss_ail_sample_playback_rate()

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().

◆ dttr_mss_ail_sample_status()

int dttr_mss_ail_sample_status ( void * sample)

◆ dttr_mss_ail_set_digital_master_volume()

void dttr_mss_ail_set_digital_master_volume ( void * driver,
int volume )

◆ dttr_mss_ail_set_preference()

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().

◆ dttr_mss_ail_set_sample_file()

◆ dttr_mss_ail_set_sample_loop_count()

void dttr_mss_ail_set_sample_loop_count ( void * sample,
int loops )

◆ dttr_mss_ail_set_sample_pan()

void dttr_mss_ail_set_sample_pan ( void * sample,
int pan )

◆ dttr_mss_ail_set_sample_playback_rate()

◆ dttr_mss_ail_set_sample_volume()

void dttr_mss_ail_set_sample_volume ( void * sample,
int volume )

Definition at line 572 of file mss_sample.c.

References apply_sample_gain(), require_sample(), and mss_sample::volume.

◆ dttr_mss_ail_set_stream_loop_count()

void dttr_mss_ail_set_stream_loop_count ( void * stream,
int loops )

◆ dttr_mss_ail_set_stream_volume()

void dttr_mss_ail_set_stream_volume ( void * stream,
int volume )

Definition at line 298 of file mss_stream.c.

References apply_stream_gain(), find_stream(), and mss_stream::volume.

◆ dttr_mss_ail_shutdown()

void dttr_mss_ail_shutdown ( )

Definition at line 268 of file mss_sdl.c.

References dttr_mss_sdl_shutdown().

◆ dttr_mss_ail_start_sample()

◆ dttr_mss_ail_start_stream()

◆ dttr_mss_ail_startup()

int dttr_mss_ail_startup ( )

◆ dttr_mss_ail_stop_sample()

void dttr_mss_ail_stop_sample ( void * sample)

◆ dttr_mss_ail_stream_status()

int dttr_mss_ail_stream_status ( void * stream)

◆ dttr_mss_ail_waveOutClose()

◆ dttr_mss_ail_waveOutOpen()

int dttr_mss_ail_waveOutOpen ( void ** driver_out,
void * wave_out,
int device_id,
const void * format )

◆ dttr_mss_core_decrement_driver_open_count()

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().

◆ dttr_mss_core_destroy_mixer()

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().

◆ dttr_mss_core_driver_open_count()

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().

◆ dttr_mss_core_ensure_mix_initialized()

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().

◆ dttr_mss_core_ensure_mixer()

◆ dttr_mss_core_ensure_preferences()

◆ dttr_mss_core_get_preference()

int dttr_mss_core_get_preference ( unsigned int preference)

◆ dttr_mss_core_has_driver()

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().

◆ dttr_mss_core_increment_driver_open_count()

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().

◆ dttr_mss_core_master_gain()

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().

◆ dttr_mss_core_mixer()

◆ dttr_mss_core_mixer_spec()

SDL_AudioSpec dttr_mss_core_mixer_spec ( )

Definition at line 150 of file mss_core.c.

References mixer_spec.

Referenced by render_sample_audio().

◆ dttr_mss_core_reset_driver_open_count()

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().

◆ dttr_mss_core_reset_preferences()

void dttr_mss_core_reset_preferences ( )

◆ dttr_mss_core_sample_headroom_gain()

float dttr_mss_core_sample_headroom_gain ( )

Definition at line 71 of file mss_core.c.

References dttr_config.

Referenced by apply_sample_gain().

◆ dttr_mss_core_sample_preemphasis()

float dttr_mss_core_sample_preemphasis ( )

Definition at line 75 of file mss_core.c.

References dttr_config.

Referenced by render_sample_audio().

◆ dttr_mss_core_set_desired_spec()

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().

◆ dttr_mss_core_set_master_gain()

void dttr_mss_core_set_master_gain ( float gain)

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().

◆ dttr_mss_core_set_preference()

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().

◆ dttr_mss_loops_to_sdl()

int dttr_mss_loops_to_sdl ( int mss_loop_count)
inlinestatic

◆ dttr_mss_pan_table_byte()

int dttr_mss_pan_table_byte ( int pan)
inlinestatic

Definition at line 73 of file mss_private.h.

Referenced by dttr_mss_pan_to_stereo_bytes().

◆ dttr_mss_pan_to_stereo_bytes()

void dttr_mss_pan_to_stereo_bytes ( int pan,
int * left_out,
int * right_out )
inlinestatic

Definition at line 77 of file mss_private.h.

References dttr_mss_pan_table_byte().

Referenced by dttr_mss_track_apply_pan().

◆ dttr_mss_reset_preferences()

void dttr_mss_reset_preferences ( int * preferences,
size_t count )
inlinestatic

◆ dttr_mss_sample_apply_master_gain()

void dttr_mss_sample_apply_master_gain ( )

◆ dttr_mss_sample_rate_pauses_playback()

bool dttr_mss_sample_rate_pauses_playback ( int rate)
inlinestatic

Definition at line 69 of file mss_private.h.

Referenced by dttr_mss_ail_set_sample_playback_rate().

◆ dttr_mss_sample_shutdown_all()

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().

◆ dttr_mss_sample_stop_all()

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().

◆ dttr_mss_sdl_install_hooks()

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().

◆ dttr_mss_sdl_release_hooks()

◆ dttr_mss_sdl_shutdown()

◆ dttr_mss_stream_apply_master_gain()

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().

◆ dttr_mss_stream_shutdown_all()

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().

◆ dttr_mss_track_apply_pan()

void dttr_mss_track_apply_pan ( MIX_Track * track,
int pan )

◆ dttr_mss_track_frequency_ratio()

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().

◆ dttr_mss_track_gain()

float dttr_mss_track_gain ( int volume,
float master_gain,
float headroom )

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().

◆ dttr_mss_track_play()

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().

◆ dttr_mss_track_status()

int dttr_mss_track_status ( MIX_Track * track,
int previous_status )

◆ dttr_mss_wave_bits_supported()

bool dttr_mss_wave_bits_supported ( uint16_t bits_per_sample)
inlinestatic

Definition at line 65 of file mss_private.h.

Referenced by wave_format_spec().

◆ dttr_mss_wave_decode_f32()

bool dttr_mss_wave_decode_f32 ( const void * file_image,
size_t size,
mss_wave_info * info,
float ** frames_out )

◆ dttr_mss_wave_free()

void dttr_mss_wave_free ( void * ptr)

Definition at line 115 of file mss_wave.c.

References NULL.

Referenced by clear_sample_wave(), and load_sample_frames().

◆ dttr_mss_wave_parse()

◆ dttr_mss_wave_rate()

int dttr_mss_wave_rate ( const mss_wave_info * info)

◆ dttr_mss_wave_read_u16le()

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().

◆ dttr_mss_wave_read_u32le()

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().

◆ dttr_mss_wave_riff_size()

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().