comparison render_audio.h @ 1931:374a5ae694e8 mame_interp

Merge from default
author Michael Pavone <pavone@retrodev.com>
date Sat, 18 Apr 2020 11:42:53 -0700
parents 4c322abd9fa5
children cfd53c94fffb
comparison
equal deleted inserted replaced
1843:13abdc98379e 1931:374a5ae694e8
1 #ifndef RENDER_AUDIO_H_
2 #define RENDER_AUDIO_H_
3
4 #include <stdint.h>
5 typedef enum {
6 RENDER_AUDIO_S16,
7 RENDER_AUDIO_FLOAT,
8 RENDER_AUDIO_UNKNOWN
9 } render_audio_format;
10
11 typedef struct {
12 void *opaque;
13 int16_t *front;
14 int16_t *back;
15 double dt;
16 uint64_t buffer_fraction;
17 uint64_t buffer_inc;
18 float gain_mult;
19 uint32_t buffer_pos;
20 uint32_t read_start;
21 uint32_t read_end;
22 uint32_t lowpass_alpha;
23 uint32_t mask;
24 int16_t last_left;
25 int16_t last_right;
26 uint8_t num_channels;
27 uint8_t front_populated;
28 } audio_source;
29
30 //public interface
31 audio_source *render_audio_source(uint64_t master_clock, uint64_t sample_divider, uint8_t channels);
32 void render_audio_source_gaindb(audio_source *src, float gain);
33 void render_audio_adjust_clock(audio_source *src, uint64_t master_clock, uint64_t sample_divider);
34 void render_put_mono_sample(audio_source *src, int16_t value);
35 void render_put_stereo_sample(audio_source *src, int16_t left, int16_t right);
36 void render_pause_source(audio_source *src);
37 void render_resume_source(audio_source *src);
38 void render_free_source(audio_source *src);
39 //interface for render backends
40 void render_audio_initialized(render_audio_format format, uint32_t rate, uint8_t channels, uint32_t buffer_size, int sample_size);
41 int mix_and_convert(unsigned char *byte_stream, int len, int *min_remaining_out);
42 uint8_t all_sources_ready(void);
43 void render_audio_adjust_speed(float adjust_ratio);
44 //to be implemented by render backend
45 uint8_t render_is_audio_sync(void);
46 void render_buffer_consumed(audio_source *src);
47 void *render_new_audio_opaque(void);
48 void render_free_audio_opaque(void *opaque);
49 void render_lock_audio(void);
50 void render_unlock_audio(void);
51 uint32_t render_min_buffered(void);
52 uint32_t render_audio_syncs_per_sec(void);
53 void render_audio_created(audio_source *src);
54 void render_do_audio_ready(audio_source *src);
55 void render_source_paused(audio_source *src, uint8_t remaining_sources);
56 void render_source_resumed(audio_source *src);
57 #endif //RENDER_AUDIO_H_