Commit Description:
Add timers for Simulation and various engines...
Commit Description:
Add timers for Simulation and various engines Starting to add additional timers for different stages of the process of updating in order to get more insight into what is slowing it down. The update takes 9ms, which is much longer than it used to. Engine-specific timers are coming later.
File last commit:
Show/Diff file:
Action:
FNA/lib/FAudio/utils/testreverb/audio.h
103 lines | 2.5 KiB | text/x-c | CLexer
#ifndef FAUDIOFILTERDEMO_AUDIO_H
#define FAUDIOFILTERDEMO_AUDIO_H
#include <stddef.h>
#include <stdint.h>
#include "../wavcommon/wavs.h"
#ifdef _MSC_VER
#define HAVE_XAUDIO2
#endif
const uint32_t SAMPLERATE = 44100;
// types
struct AudioContext;
enum AudioEngine {
AudioEngine_XAudio2,
AudioEngine_FAudio
};
enum AudioVoiceType {
AudioVoiceType_Source = 0,
AudioVoiceType_Submix,
AudioVoiceType_Master
};
#pragma pack(push, 1)
struct ReverbI3DL2Parameters
{
float WetDryMix;
int Room;
int RoomHF;
float RoomRolloffFactor;
float DecayTime;
float DecayHFRatio;
int Reflections;
float ReflectionsDelay;
int Reverb;
float ReverbDelay;
float Diffusion;
float Density;
float HFReference;
};
struct ReverbParameters
{
float WetDryMix;
uint32_t ReflectionsDelay;
uint8_t ReverbDelay;
uint8_t RearDelay;
uint8_t PositionLeft;
uint8_t PositionRight;
uint8_t PositionMatrixLeft;
uint8_t PositionMatrixRight;
uint8_t EarlyDiffusion;
uint8_t LateDiffusion;
uint8_t LowEQGain;
uint8_t LowEQCutoff;
uint8_t HighEQGain;
uint8_t HighEQCutoff;
float RoomFilterFreq;
float RoomFilterMain;
float RoomFilterHF;
float ReflectionsGain;
float ReverbGain;
float DecayTime;
float Density;
float RoomSize;
};
#pragma pack(pop)
extern const char *audio_voice_type_names[3];
extern const char *audio_reverb_preset_names[];
extern const ReverbI3DL2Parameters audio_reverb_presets_i3dl2[];
extern const ReverbParameters *audio_reverb_presets;
extern const size_t audio_reverb_preset_count;
typedef void (*PFN_AUDIO_DESTROY_CONTEXT)(AudioContext *p_context);
typedef void (*PFN_AUDIO_CREATE_VOICE)(AudioContext *p_context, float *p_buffer, size_t p_buffer_size, int p_sample_rate, int p_num_channels);
typedef void (*PFN_AUDIO_WAVE_LOAD)(AudioContext *p_context, AudioSampleWave sample, bool stereo);
typedef void (*PFN_AUDIO_WAVE_PLAY)(AudioContext *p_context);
typedef void (*PFN_AUDIO_WAVE_STOP)(AudioContext *p_context);
typedef void(*PFN_AUDIO_EFFECT_CHANGE)(AudioContext *p_context, bool p_enabled, ReverbParameters *p_params);
// API
AudioContext *audio_create_context(AudioEngine p_engine, bool output_5p1, AudioVoiceType effect_on_voice);
extern PFN_AUDIO_DESTROY_CONTEXT audio_destroy_context;
extern PFN_AUDIO_CREATE_VOICE audio_create_voice;
extern PFN_AUDIO_WAVE_LOAD audio_wave_load;
extern PFN_AUDIO_WAVE_PLAY audio_wave_play;
extern PFN_AUDIO_WAVE_STOP audio_wave_stop;
extern PFN_AUDIO_EFFECT_CHANGE audio_effect_change;
#endif // FAUDIOFILTERDEMO_AUDIO_H