#ifndef foomixhfoo #define foomixhfoo /*** This file is part of PulseAudio. Copyright 2004-2006 Lennart Poettering Copyright 2006 Pierre Ossman for Cendio AB Copyright 2013 Peter Meerwald PulseAudio is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. PulseAudio is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with PulseAudio; if not, see . ***/ #include #include #include typedef struct pa_mix_info { pa_memchunk chunk; pa_cvolume volume; void *userdata; /* The following fields are used internally by pa_mix(), should * not be initialised by the caller of pa_mix(). */ void *ptr; union { int32_t i; float f; } linear[PA_CHANNELS_MAX]; } pa_mix_info; size_t pa_mix( pa_mix_info channels[], unsigned nchannels, void *data, size_t length, const pa_sample_spec *spec, const pa_cvolume *volume, bool mute); typedef void (*pa_do_mix_func_t) (pa_mix_info streams[], unsigned nstreams, unsigned channels, void *data, unsigned length); pa_do_mix_func_t pa_get_mix_func(pa_sample_format_t f); void pa_set_mix_func(pa_sample_format_t f, pa_do_mix_func_t func); void pa_volume_memchunk( pa_memchunk*c, const pa_sample_spec *spec, const pa_cvolume *volume); #endif