1 #ifndef FS_EMU_AUDIO_H
2 #define FS_EMU_AUDIO_H
3 
4 #ifdef HAVE_CONFIG_H
5 #include "config.h"
6 #endif
7 
8 #include <stdint.h>
9 #include <stdbool.h>
10 
11 #define FS_EMU_AUDIO_MASTER -1
12 #define FSE_MAX_AUDIO_STREAMS 2
13 
14 //#ifdef FSE_DRIVERS
15 #if 1
16 
17 typedef struct fse_audio_stream_options {
18     int struct_size;
19     int frequency;
20     int channels;
21     int sample_size;
22     int buffer_size;
23     int min_buffers;
24 } fse_audio_stream_options;
25 
26 fse_audio_stream_options **fs_emu_audio_alloc_stream_options(int streams);
27 
28 void fs_emu_audio_free_stream_options(fse_audio_stream_options **options);
29 
30 void fs_emu_audio_configure(fse_audio_stream_options **options);
31 int fs_emu_audio_output_frequency(void);
32 
33 int fse_audio_volume(int stream);
34 void fse_set_set_audio_volume(int stream, int volume);
35 
36 bool fse_audio_muted(int stream);
37 void fse_set_audio_muted(int stream, bool muted);
38 
39 void fse_set_audio_paused(int stream, bool paused);
40 
41 int fse_queue_audio_buffer(int stream, int16_t *buffer, int size);
42 int fse_check_audio_buffer(int stream, int buffer);
43 
44 #else
45 
46 int fse_audio_volume(int stream);
47 void fse_set_set_audio_volume(int stream, int volume);
48 
49 bool fse_audio_muted(int stream);
50 void fse_set_audio_muted(int stream, int muted);
51 
52 typedef struct fse_audio_stream_options {
53     int struct_size;
54     int frequency;
55     int channels;
56     int sample_size;
57     int buffer_size;
58     int min_buffers;
59 } fse_audio_stream_options;
60 
61 void fs_emu_init_audio_stream(int stream,
62         fse_audio_stream_options *options);
63 void fs_emu_init_audio_stream_options(fse_audio_stream_options *options);
64 void fse_set_audio_paused(int stream, bool paused);
65 int fse_queue_audio_buffer(int stream, int16_t* buffer, int size);
66 int fse_check_audio_buffer(int stream, int buffer);
67 int fs_emu_audio_output_frequency(void);
68 
69 #endif
70 
71 #if 0
72 // start deprecated
73 void fs_emu_enable_audio_stream(int stream);
74 void fs_emu_disable_audio_stream(int stream);
75 int fs_emu_get_audio_buffer_size();
76 void fs_emu_audio_sample(int stream, int16_t left, int16_t right);
77 void fs_emu_set_max_audio_buffers(int buffers);
78 void fs_emu_set_audio_buffer_frequency(int stream, int frequency);
79 // end deprecated
80 #endif
81 
82 double fs_emu_audio_get_measured_avg_buffer_fill(int stream);
83 double fs_emu_audio_get_measured_output_frequency();
84 
85 #if 1 // def FSE_INTERNAL_API
86 
87 void fse_init_audio(void);
88 
89 void fse_init_openal_audio(void);
90 
91 void fse_init_dummy_audio(void);
92 
93 typedef struct fse_audio {
94     void (*configure)(fse_audio_stream_options **options);
95     int (*queue_buffer)(int stream, int16_t *buffer, int size);
96     int (*check_buffer)(int stream, int buffer);
97     void (*set_paused)(int stream, bool paused);
98     int (*frequency)(void);
99 
100     double want_volume[FSE_MAX_AUDIO_STREAMS];
101 } fse_audio_t;
102 
103 extern fse_audio_t fse_audio;
104 
105 #endif /* FSE_INTERNAL_API*/
106 
107 #endif /* FS_EMU_AUDIO_H */
108