diff options
Diffstat (limited to 'src/pulsecore/mix.h')
-rw-r--r-- | src/pulsecore/mix.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/pulsecore/mix.h b/src/pulsecore/mix.h new file mode 100644 index 0000000..8102bcd --- /dev/null +++ b/src/pulsecore/mix.h @@ -0,0 +1,62 @@ +#ifndef foomixhfoo +#define foomixhfoo + +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB + Copyright 2013 Peter Meerwald <pmeerw@pmeerw.net> + + 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 <http://www.gnu.org/licenses/>. +***/ + +#include <pulse/sample.h> +#include <pulse/volume.h> +#include <pulsecore/memchunk.h> + +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 |