1 #ifndef FAUDIOTESTVOLUMEMETER_AUDIO_H
2 #define FAUDIOTESTVOLUMEMETER_AUDIO_H
3 
4 #include <stddef.h>
5 #include <stdint.h>
6 #include "../wavcommon/wavs.h"
7 
8 #ifdef _MSC_VER
9 #define HAVE_XAUDIO2
10 #endif
11 
12 typedef struct AudioContext AudioContext;
13 
14 typedef enum
15 {
16 	AudioEngine_XAudio2,
17 	AudioEngine_FAudio
18 } AudioEngine;
19 
20 typedef void (*PFN_AUDIO_DESTROY_CONTEXT)(AudioContext *p_context);
21 typedef void (*PFN_AUDIO_WAVE_LOAD)(AudioContext *p_context, AudioSampleWave sample, bool stereo);
22 typedef void (*PFN_AUDIO_WAVE_PLAY)(AudioContext *p_context);
23 typedef void (*PFN_AUDIO_UPDATE_VOLUMEMETER)(AudioContext *p_context, float *peak, float *rms);
24 
25 AudioContext *audio_create_context(AudioEngine p_engine);
26 
27 extern PFN_AUDIO_DESTROY_CONTEXT audio_destroy_context;
28 extern PFN_AUDIO_WAVE_LOAD audio_wave_load;
29 extern PFN_AUDIO_WAVE_PLAY audio_wave_play;
30 extern PFN_AUDIO_UPDATE_VOLUMEMETER audio_update_volumemeter;
31 
32 #endif /* FAUDIOTESTVOLUMEMETER_AUDIO_H */
33