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