From f16675ed24fd331903b8d6ef5d8ac07f6acbd6b0 Mon Sep 17 00:00:00 2001 From: Manuel Bachmann Date: Mon, 11 Jan 2016 02:43:19 +0100 Subject: Audio Plugin: add PulseAudio support If PulseAudio development libraries are present, Audio plugin will now support it. It may still fall back to ALSA if a PulseAudio server is not found at runtime. PulseAudio backend supports multiple clients using one audio adapter. (+ various fixes and style improvements) Signed-off-by: Manuel Bachmann --- plugins/audio/audio-pulse.h | 62 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 plugins/audio/audio-pulse.h (limited to 'plugins/audio/audio-pulse.h') diff --git a/plugins/audio/audio-pulse.h b/plugins/audio/audio-pulse.h new file mode 100644 index 00000000..fc18d9c0 --- /dev/null +++ b/plugins/audio/audio-pulse.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2016 "IoT.bzh" + * Author "Manuel Bachmann" + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License + * along with this program. If not, see . + */ + +#ifndef AUDIO_PULSE_H +#define AUDIO_PULSE_H + +#include +#include +#include +#include + +#include "audio-alsa.h" +#include "local-def.h" + +typedef struct dev_ctx_pulse dev_ctx_pulse_T; +typedef struct alsa_info alsa_info_T; + +struct dev_ctx_pulse { + char *sink_name; + char **card_name; + pa_mainloop *pa_loop; + pa_context *pa_context; + pa_simple *pa; + pa_cvolume volume; + int mute; + unsigned char refresh; + pthread_t thr; + unsigned char thr_should_run; + unsigned char thr_finished; +}; + +struct alsa_info { + char *device; + char *synonyms; +}; + +STATIC void _pulse_context_cb (pa_context *, void *); +STATIC void _pulse_sink_list_cb (pa_context *, const pa_sink_info *, int, void *); +STATIC void _pulse_sink_info_cb (pa_context *, const pa_sink_info *, int, void *); +STATIC void* _pulse_play_thread_fn (void *); +PUBLIC void _pulse_refresh_sink (dev_ctx_pulse_T *); + +static struct alsa_info **alsa_info = NULL; +static struct dev_ctx_pulse **dev_ctx_p = NULL; +static unsigned int client_count = 0; + +#endif /* AUDIO_PULSE_H */ -- cgit 1.2.3-korg