Open Broadcaster Software
Free, open source software for live streaming and recording
pulseaudio-wrapper.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2014 by Leonhard Oelke <leonhard@in-verted.de>
3 Copyright (C) 2017 by Fabio Madia <admshao@gmail.com>
4 
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9 
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14 
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 #include <inttypes.h>
20 #include <pulse/stream.h>
21 #include <pulse/context.h>
22 #include <pulse/introspect.h>
23 
24 #pragma once
25 
28 };
29 
30 struct enum_cb {
32  void *data;
33  int cont;
34 };
35 
36 void get_default_id(char **id);
37 
38 bool devices_match(const char *id1, const char *id2);
39 
43 int_fast32_t pulseaudio_init();
44 
49 void pulseaudio_unref();
50 
63 void pulseaudio_lock();
64 
70 void pulseaudio_unlock();
71 
77 void pulseaudio_wait();
78 
88 void pulseaudio_signal(int wait_for_accept);
89 
95 void pulseaudio_accept();
96 
109 int_fast32_t pulseaudio_get_source_info_list(pa_source_info_cb_t cb,
110  void *userdata);
111 
128 int_fast32_t pulseaudio_get_source_info(pa_source_info_cb_t cb,
129  const char *name, void *userdata);
130 
143 int_fast32_t pulseaudio_get_server_info(pa_server_info_cb_t cb, void *userdata);
144 
152 pa_stream *pulseaudio_stream_new(const char *name, const pa_sample_spec *ss,
153  const pa_channel_map *map);
154 
164 int_fast32_t pulseaudio_connect_playback(pa_stream *s, const char *name,
165  const pa_buffer_attr *attr,
166  pa_stream_flags_t flags);
167 
175 void pulseaudio_write_callback(pa_stream *p, pa_stream_request_cb_t cb,
176  void *userdata);
177 
185 void pulseaudio_set_underflow_callback(pa_stream *p, pa_stream_notify_cb_t cb,
186  void *userdata);
pulseaudio_get_source_info_list
int_fast32_t pulseaudio_get_source_info_list(pa_source_info_cb_t cb, void *userdata)
pulseaudio_wait
void pulseaudio_wait()
get_default_id
void get_default_id(char **id)
obs_enum_audio_device_cb
bool(* obs_enum_audio_device_cb)(void *data, const char *name, const char *id)
Definition: obs.h:707
enum_cb::cb
obs_enum_audio_device_cb cb
Definition: pulseaudio-wrapper.h:31
pulseaudio_get_server_info
int_fast32_t pulseaudio_get_server_info(pa_server_info_cb_t cb, void *userdata)
pulseaudio_write_callback
void pulseaudio_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata)
enum_cb::data
void * data
Definition: pulseaudio-wrapper.h:32
pulseaudio_unlock
void pulseaudio_unlock()
enum_cb::cont
int cont
Definition: pulseaudio-wrapper.h:33
enum_cb
Definition: pulseaudio-wrapper.h:30
pulseaudio_unref
void pulseaudio_unref()
pulseaudio_set_underflow_callback
void pulseaudio_set_underflow_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata)
pulseaudio_get_source_info
int_fast32_t pulseaudio_get_source_info(pa_source_info_cb_t cb, const char *name, void *userdata)
devices_match
bool devices_match(const char *id1, const char *id2)
pulseaudio_accept
void pulseaudio_accept()
pulseaudio_stream_new
pa_stream * pulseaudio_stream_new(const char *name, const pa_sample_spec *ss, const pa_channel_map *map)
pulseaudio_default_output
Definition: pulseaudio-wrapper.h:26
pulseaudio_connect_playback
int_fast32_t pulseaudio_connect_playback(pa_stream *s, const char *name, const pa_buffer_attr *attr, pa_stream_flags_t flags)
pulseaudio_default_output::default_sink_name
char * default_sink_name
Definition: pulseaudio-wrapper.h:27
pulseaudio_lock
void pulseaudio_lock()
pulseaudio_signal
void pulseaudio_signal(int wait_for_accept)
pulseaudio_init
int_fast32_t pulseaudio_init()