pulseutil: Add API for setting volume ratio
[platform/upstream/gst-plugins-good.git] / ext / pulse / pulseutil.h
index 4adfeb1..a410d05 100644 (file)
@@ -15,7 +15,7 @@
  *
  *  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
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
  *  USA.
  */
 
 
 #include <gst/gst.h>
 #include <pulse/pulseaudio.h>
+#include <gst/audio/gstaudioringbuffer.h>
 #include <gst/audio/gstaudiosink.h>
 
-gboolean gst_pulse_fill_sample_spec (GstRingBufferSpec * spec,
+
+#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, 2 ], 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);
-#ifdef HAVE_PULSE_1_0
-gboolean gst_pulse_fill_format_info (GstRingBufferSpec * spec,
+gboolean gst_pulse_fill_format_info (GstAudioRingBufferSpec * spec,
     pa_format_info ** f, guint * channels);
-#endif
+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 GstRingBufferSpec * spec);
+    const GstAudioRingBufferSpec * spec);
 
-GstRingBufferSpec *gst_pulse_channel_map_to_gst (const pa_channel_map * map,
-    GstRingBufferSpec * 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);
+
+#ifdef __TIZEN__
+void gst_pulse_set_volume_ratio (uint32_t stream_index, const char *direction, double ratio);
+#endif
 #endif