ext/alsa/gstalsa.c: Fix for if items are already in list...
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Thu, 13 Jan 2005 11:46:19 +0000 (11:46 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Thu, 13 Jan 2005 11:46:19 +0000 (11:46 +0000)
Original commit message from CVS:
* ext/alsa/gstalsa.c: (gst_alsa_rates_probe):
Fix for if items are already in list...

ChangeLog
ext/alsa/gstalsa.c

index 3444ed234b290287d16e772035771d2b6993f922..fcbb4279ea255f4a6676ad3fe555a1ec0712e6cf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-13  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/alsa/gstalsa.c: (gst_alsa_rates_probe):
+         Fix for if items are already in list...
+
 2005-01-12  Benjamin Otte  <otte@gnome.org>
 
        * gst/adder/gstadder.c: (gst_adder_loop):
index 15c53ff9c61eabab7521e8350816c52ba36dc0af..5203ad1433f6cdb29405f6b970244824e81bc966 100644 (file)
@@ -850,6 +850,8 @@ static int
 gst_alsa_rates_probe (snd_pcm_t * device_handle,
     snd_pcm_hw_params_t * hw_params, GValue * supported_rates)
 {
+  int n;
+  gboolean min_found = FALSE, max_found = FALSE;
   unsigned int common_rates[] =
       { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 88200,
     96000, 192000, 0, 0, 0
@@ -873,8 +875,15 @@ gst_alsa_rates_probe (snd_pcm_t * device_handle,
       max_rate >
       GST_ALSA_MAX_RATE ? GST_ALSA_MAX_RATE : (max_rate +
       GST_ALSA_DIR_MAX (dir));
-  common_rates[12] = min_rate;
-  if (min_rate != max_rate)
+  for (n = 0; common_rates[n] != 0; n++) {
+    if (common_rates[n] == min_rate)
+      min_found = TRUE;
+    if (common_rates[n] == max_rate)
+      max_found = TRUE;
+  }
+  if (!min_found)
+    common_rates[12] = min_rate;
+  if (!max_found && min_rate != max_rate)
     common_rates[13] = max_rate;
 
   ret =