gstreamer/ext/pulse/pulsesink.h
Stefan Kost b3d66d5e8d pulse: make it work on 0.9.12
First we ignore request to fill the ringbuffer which are less then a segment.
The small request where causing stutter.
Then we disable flushing the stream when running against pa 0.9.12 as this
triggers an assertiong in the sound server and terminates it. It does not happen
with 0.9.10 and 0.9.14.
2009-04-10 21:42:13 +03:00

78 lines
2 KiB
C

/*
* GStreamer pulseaudio plugin
*
* Copyright (c) 2004-2008 Lennart Poettering
*
* gst-pulse 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.
*
* gst-pulse 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with gst-pulse; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA.
*/
#ifndef __GST_PULSESINK_H__
#define __GST_PULSESINK_H__
#include <gst/gst.h>
#include <gst/audio/gstaudiosink.h>
#include <pulse/pulseaudio.h>
#include <pulse/thread-mainloop.h>
#include "pulseprobe.h"
G_BEGIN_DECLS
#define GST_TYPE_PULSESINK \
(gst_pulsesink_get_type())
#define GST_PULSESINK(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_PULSESINK,GstPulseSink))
#define GST_PULSESINK_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_PULSESINK,GstPulseSinkClass))
#define GST_IS_PULSESINK(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_PULSESINK))
#define GST_IS_PULSESINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_PULSESINK))
#define GST_PULSESINK_CAST(obj) \
((GstPulseSink *)(obj))
typedef struct _GstPulseSink GstPulseSink;
typedef struct _GstPulseSinkClass GstPulseSinkClass;
struct _GstPulseSink
{
GstBaseAudioSink sink;
gchar *server, *device, *stream_name;
gchar *device_description;
pa_threaded_mainloop *mainloop;
GstPulseProbe *probe;
gdouble volume;
gboolean volume_set;
gint notify;
const gchar *pa_version;
};
struct _GstPulseSinkClass
{
GstBaseAudioSinkClass parent_class;
};
GType gst_pulsesink_get_type (void);
G_END_DECLS
#endif /* __GST_PULSESINK_H__ */