#ifndef _XAS_MIXER_H #define _XAS_MIXER_H #include #include #include #define XAS_MIXER_INPUT_STREAM_MANAGED (1 << 0) typedef struct _xas_mixer_input { xas_audio_stream *stream; float gain, bias_l, bias_r; int flags; struct _xas_mixer_input *next; } xas_mixer_input; typedef struct _xas_mixer { xas_object obj; xas_mixer_input *inputs, *last; xas_audio_stream *output; void *buf; size_t buffer_size; } xas_mixer; xas_mixer *xas_mixer_new(xas_audio_format format, size_t buffer_size); void xas_mixer_destroy(xas_mixer *mixer); xas_audio_stream *xas_mixer_output(xas_mixer *mixer); xas_mixer_input *xas_mixer_input_add(xas_mixer *mixer, xas_audio_stream *stream, float gain, float pan); xas_mixer_input *xas_mixer_object_add(xas_mixer *mixer, xas_object *object, float gain, float pan); void xas_mixer_input_set_gain(xas_mixer_input *input, float gain); void xas_mixer_input_set_pan(xas_mixer_input *input, float pan); #endif /* _XAS_MIXER_H */