pulsesink: Add property to apply render delay automatically based on the latency...
[platform/upstream/gst-plugins-good.git] / ext / pulse / pulsesink.h
index 26e9997..446bd27 100644 (file)
 #include "config.h"
 #endif
 
+#if defined(__TIZEN__) && defined(PCM_DUMP_ENABLE)
+#include <stdio.h>
+#endif
+
 #include <gst/gst.h>
 #include <gst/audio/audio.h>
 #include <gst/audio/gstaudiosink.h>
@@ -35,7 +39,7 @@
 #include <pulse/pulseaudio.h>
 #include <pulse/thread-mainloop.h>
 
-#include "pulseprobe.h"
+#include "pulseutil.h"
 
 G_BEGIN_DECLS
 
@@ -67,17 +71,26 @@ struct _GstPulseSink
   gchar *server, *device, *stream_name, *client_name;
   GstPulseDeviceInfo device_info;
 
-  GstPulseProbe *probe;
-
   gdouble volume;
   gboolean volume_set:1;
   gboolean mute:1;
   gboolean mute_set:1;
+  guint32 current_sink_idx;
+  gchar *current_sink_name;
 
   guint defer_pending;
 
   gint notify; /* atomic */
 
+#ifdef __TIZEN__
+  gchar *latency;
+  gboolean auto_render_delay:1;
+#ifdef PCM_DUMP_ENABLE
+  gint need_dump_input;
+  FILE *dump_fd_input;
+#endif
+#endif /* __TIZEN__ */
+
   const gchar *pa_version;
 
   GstStructure *properties;
@@ -94,47 +107,13 @@ struct _GstPulseSinkClass
 
 GType gst_pulsesink_get_type (void);
 
-#if (G_BYTE_ORDER == G_LITTLE_ENDIAN)
-# define FORMATS   "{ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, " \
-                     "S24LE, S24BE, S24_32LE, S24_32BE, U8 }"
-#else
-# define FORMATS   "{ S16BE, S16LE, F32BE, F32LE, S32BE, S32LE, " \
-                     "S24BE, S24LE, S24_32BE, S24_32LE, U8 }"
-#endif
-
-#define _PULSE_SINK_CAPS_LINEAR \
-    "audio/x-raw, " \
-      "format = (string) " FORMATS ", " \
-      "layout = (string) interleaved, " \
-      "rate = (int) [ 1, MAX ], " \
-      "channels = (int) [ 1, 32 ]; "
-#define _PULSE_SINK_CAPS_ALAW \
-    "audio/x-alaw, " \
-      "rate = (int) [ 1, MAX], " \
-      "channels = (int) [ 1, 32 ]; "
-#define _PULSE_SINK_CAPS_MULAW \
-    "audio/x-mulaw, " \
-      "rate = (int) [ 1, MAX], " \
-      "channels = (int) [ 1, 32 ]; "
-
-#define _PULSE_SINK_CAPS_AC3 "audio/x-ac3, framed = (boolean) true; "
-#define _PULSE_SINK_CAPS_EAC3 "audio/x-eac3, framed = (boolean) true; "
-#define _PULSE_SINK_CAPS_DTS "audio/x-dts, framed = (boolean) true, " \
-    "block-size = (int) { 512, 1024, 2048 }; "
-#define _PULSE_SINK_CAPS_MP3 "audio/mpeg, mpegversion = (int) 1, " \
-    "mpegaudioversion = (int) [ 1, 2 ], parsed = (boolean) true;"
-
-#define _PULSE_SINK_CAPS_PCM \
-  _PULSE_SINK_CAPS_LINEAR \
-  _PULSE_SINK_CAPS_ALAW \
-  _PULSE_SINK_CAPS_MULAW
-
 #define PULSE_SINK_TEMPLATE_CAPS \
-  _PULSE_SINK_CAPS_PCM \
-  _PULSE_SINK_CAPS_AC3 \
-  _PULSE_SINK_CAPS_EAC3 \
-  _PULSE_SINK_CAPS_DTS \
-  _PULSE_SINK_CAPS_MP3
+  _PULSE_CAPS_PCM \
+  _PULSE_CAPS_AC3 \
+  _PULSE_CAPS_EAC3 \
+  _PULSE_CAPS_DTS \
+  _PULSE_CAPS_MP3 \
+  _PULSE_CAPS_AAC
 
 G_END_DECLS