| /* |
| * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 |
| * USA. |
| */ |
| |
| #ifndef __GST_PULSEUTIL_H__ |
| #define __GST_PULSEUTIL_H__ |
| |
| #ifdef HAVE_CONFIG_H |
| #include "config.h" |
| #endif |
| |
| #include <gst/gst.h> |
| #include <pulse/pulseaudio.h> |
| #include <gst/audio/gstaudioringbuffer.h> |
| #include <gst/audio/gstaudiosink.h> |
| |
| |
| #if (G_BYTE_ORDER == G_LITTLE_ENDIAN) |
| # define _PULSE_FORMATS "{ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, " \ |
| "S24LE, S24BE, S24_32LE, S24_32BE, U8 }" |
| #else |
| # define _PULSE_FORMATS "{ S16BE, S16LE, F32BE, F32LE, S32BE, S32LE, " \ |
| "S24BE, S24LE, S24_32BE, S24_32LE, U8 }" |
| #endif |
| |
| #define _PULSE_CAPS_LINEAR \ |
| "audio/x-raw, " \ |
| "format = (string) " _PULSE_FORMATS ", " \ |
| "layout = (string) interleaved, " \ |
| "rate = (int) [ 1, MAX ], " \ |
| "channels = (int) [ 1, 32 ]; " |
| #define _PULSE_CAPS_ALAW \ |
| "audio/x-alaw, " \ |
| "rate = (int) [ 1, MAX], " \ |
| "channels = (int) [ 1, 32 ]; " |
| #define _PULSE_CAPS_MULAW \ |
| "audio/x-mulaw, " \ |
| "rate = (int) [ 1, MAX], " \ |
| "channels = (int) [ 1, 32 ]; " |
| |
| #define _PULSE_CAPS_AC3 "audio/x-ac3, framed = (boolean) true; " |
| #define _PULSE_CAPS_EAC3 "audio/x-eac3, framed = (boolean) true; " |
| #define _PULSE_CAPS_DTS "audio/x-dts, framed = (boolean) true, " \ |
| "block-size = (int) { 512, 1024, 2048 }; " |
| #define _PULSE_CAPS_MP3 "audio/mpeg, mpegversion = (int) 1, " \ |
| "mpegaudioversion = (int) [ 1, 3 ], parsed = (boolean) true;" |
| #define _PULSE_CAPS_AAC "audio/mpeg, mpegversion = (int) { 2, 4 }, " \ |
| "framed = (boolean) true, stream-format = (string) adts;" |
| |
| #define _PULSE_CAPS_PCM \ |
| _PULSE_CAPS_LINEAR \ |
| _PULSE_CAPS_ALAW \ |
| _PULSE_CAPS_MULAW |
| |
| |
| gboolean gst_pulse_fill_sample_spec (GstAudioRingBufferSpec * spec, |
| pa_sample_spec * ss); |
| gboolean gst_pulse_fill_format_info (GstAudioRingBufferSpec * spec, |
| pa_format_info ** f, guint * channels); |
| const char * gst_pulse_sample_format_to_caps_format (pa_sample_format_t sf); |
| |
| gchar *gst_pulse_client_name (void); |
| |
| pa_channel_map *gst_pulse_gst_to_channel_map (pa_channel_map * map, |
| const GstAudioRingBufferSpec * spec); |
| |
| GstAudioRingBufferSpec *gst_pulse_channel_map_to_gst (const pa_channel_map * map, |
| GstAudioRingBufferSpec * spec); |
| |
| void gst_pulse_cvolume_from_linear (pa_cvolume *v, unsigned channels, gdouble volume); |
| |
| pa_proplist *gst_pulse_make_proplist (const GstStructure *properties); |
| GstStructure *gst_pulse_make_structure (pa_proplist *properties); |
| |
| GstCaps * gst_pulse_format_info_to_caps (pa_format_info * format); |
| |
| #endif |