pulsesink: add 24bit sample formats
authorWim Taymans <wim.taymans@collabora.co.uk>
Tue, 14 Jul 2009 14:12:55 +0000 (16:12 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Tue, 14 Jul 2009 14:14:34 +0000 (16:14 +0200)
Add check for pulseaudio 0.9.15 and enable 24bits samples in that case.

configure.ac
ext/pulse/pulsesink.c
ext/pulse/pulseutil.c

index fe81b49273a99c7463c50bb7d09d3d1ecc0f468c..1d533d0788cfe78aa6a672073fc1cf8569bd20d1 100644 (file)
@@ -759,6 +759,10 @@ AG_GST_CHECK_FEATURE(PULSE, [pulseaudio plug-in], pulseaudio, [
   if test x$HAVE_PULSE_0_9_13 = xyes; then
     AC_DEFINE(HAVE_PULSE_0_9_13, 1, [defined if pulseaudio >= 0.9.13 is available])
   fi
+  AG_GST_PKG_CHECK_MODULES(PULSE_0_9_15, libpulse >= 0.9.15)
+  if test x$HAVE_PULSE_0_9_15 = xyes; then
+    AC_DEFINE(HAVE_PULSE_0_9_15, 1, [defined if pulseaudio >= 0.9.15 is available])
+  fi
 ])
 
 dnl *** dv1394 ***
index c3f37548d9005a38d42f3a45705b832d3d67faa8..1c633c0b51ec4527ffea5dec39a7d6a94e225d16 100644 (file)
@@ -516,7 +516,6 @@ gst_pulsering_stream_underflow_cb (pa_stream * s, void *userdata)
   GST_WARNING_OBJECT (psink, "Got underflow");
 }
 
-
 static void
 gst_pulsering_stream_overflow_cb (pa_stream * s, void *userdata)
 {
@@ -1320,8 +1319,22 @@ gst_pulsesink_base_init (gpointer g_class)
           "signed = (boolean) TRUE, "
           "width = (int) 32, "
           "depth = (int) 32, "
+          "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 32 ];"
+#if HAVE_PULSE_0_9_15
+          "audio/x-raw-int, "
+          "endianness = (int) { " ENDIANNESS " }, "
+          "signed = (boolean) TRUE, "
+          "width = (int) 24, "
+          "depth = (int) 24, "
           "rate = (int) [ 1, MAX ], "
           "channels = (int) [ 1, 32 ];"
+          "audio/x-raw-int, "
+          "endianness = (int) { " ENDIANNESS " }, "
+          "signed = (boolean) TRUE, "
+          "width = (int) 32, "
+          "depth = (int) 24, "
+          "rate = (int) [ 1, MAX ], " "channels = (int) [ 1, 32 ];"
+#endif
           "audio/x-raw-int, "
           "signed = (boolean) FALSE, "
           "width = (int) 8, "
index 169c55b7fa70e8da2b9c84fe11816bef4fb32d3c..6fbf83776a4afbf2e84f43effeeedd2eee3c4932 100644 (file)
@@ -91,6 +91,16 @@ gst_pulse_fill_sample_spec (GstRingBufferSpec * spec, pa_sample_spec * ss)
     ss->format = PA_SAMPLE_S32LE;
   else if (spec->format == GST_S32_BE && spec->width == 32)
     ss->format = PA_SAMPLE_S32BE;
+#if HAVE_PULSE_0_9_15
+  else if (spec->format == GST_S24_3LE && spec->width == 24)
+    ss->format = PA_SAMPLE_S24LE;
+  else if (spec->format == GST_S24_3BE && spec->width == 24)
+    ss->format = PA_SAMPLE_S24BE;
+  else if (spec->format == GST_S24_LE && spec->width == 32)
+    ss->format = PA_SAMPLE_S24_32LE;
+  else if (spec->format == GST_S24_BE && spec->width == 32)
+    ss->format = PA_SAMPLE_S24_32BE;
+#endif
   else
     return FALSE;