1 /*-*- Mode: C; c-basic-offset: 2 -*-*/ 2 3 /* 4 * GStreamer pulseaudio plugin 5 * 6 * Copyright (c) 2004-2008 Lennart Poettering 7 * 8 * gst-pulse is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU Lesser General Public License as 10 * published by the Free Software Foundation; either version 2.1 of the 11 * License, or (at your option) any later version. 12 * 13 * gst-pulse is distributed in the hope that it will be useful, but 14 * WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with gst-pulse; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 21 * USA. 22 */ 23 24 #ifndef __GST_PULSESRC_H__ 25 #define __GST_PULSESRC_H__ 26 27 #include <gst/gst.h> 28 #include <gst/audio/gstaudiosrc.h> 29 30 #include <pulse/pulseaudio.h> 31 #include <pulse/thread-mainloop.h> 32 33 G_BEGIN_DECLS 34 35 #define GST_TYPE_PULSESRC \ 36 (gst_pulsesrc_get_type()) 37 #define GST_PULSESRC(obj) \ 38 (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_PULSESRC,GstPulseSrc)) 39 #define GST_PULSESRC_CLASS(klass) \ 40 (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_PULSESRC,GstPulseSrcClass)) 41 #define GST_IS_PULSESRC(obj) \ 42 (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_PULSESRC)) 43 #define GST_IS_PULSESRC_CLASS(obj) \ 44 (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_PULSESRC)) 45 #define GST_PULSESRC_CAST(obj) \ 46 ((GstPulseSrc *)(obj)) 47 48 typedef struct _GstPulseSrc GstPulseSrc; 49 typedef struct _GstPulseSrcClass GstPulseSrcClass; 50 51 struct _GstPulseSrc 52 { 53 GstAudioSrc src; 54 55 gchar *server, *device, *client_name; 56 57 pa_threaded_mainloop *mainloop; 58 59 pa_context *context; 60 pa_stream *stream; 61 guint32 source_output_idx; 62 63 pa_sample_spec sample_spec; 64 65 const void *read_buffer; 66 size_t read_buffer_length; 67 68 gchar *device_description; 69 70 gdouble volume; 71 gboolean volume_set:1; 72 gboolean mute:1; 73 gboolean mute_set:1; 74 guint32 current_source_idx; 75 gchar *current_source_name; 76 77 gint notify; /* atomic */ 78 79 gboolean corked:1; 80 gboolean stream_connected:1; 81 gboolean operation_success:1; 82 gboolean paused:1; 83 gboolean in_read:1; 84 85 GstStructure *properties; 86 pa_proplist *proplist; 87 }; 88 89 struct _GstPulseSrcClass 90 { 91 GstAudioSrcClass parent_class; 92 }; 93 94 GType gst_pulsesrc_get_type (void); 95 96 G_END_DECLS 97 98 #endif /* __GST_PULSESRC_H__ */ 99