ext/alsa/gstalsasink.c: Get actual segment size and buffer size after opening the...
authorWim Taymans <wim.taymans@gmail.com>
Tue, 31 May 2005 11:22:33 +0000 (11:22 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Tue, 31 May 2005 11:22:33 +0000 (11:22 +0000)
Original commit message from CVS:
* ext/alsa/gstalsasink.c: (set_hwparams), (gst_alsasink_open):
Get actual segment size and buffer size after opening
the device.

ChangeLog
ext/alsa/gstalsasink.c

index 6ace931..6218e43 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-05-31  Wim Taymans  <wim@fluendo.com>
+
+       * ext/alsa/gstalsasink.c: (set_hwparams), (gst_alsasink_open):
+       Get actual segment size and buffer size after opening
+       the device.
+
 2005-05-30  Wim Taymans  <wim@fluendo.com>
 
        * ext/ogg/gstoggdemux.c: (gst_ogg_demux_activate_chain),
index 43cd41a..637eac8 100644 (file)
@@ -206,20 +206,21 @@ set_hwparams (GstAlsaSink * alsa)
     CHECK (snd_pcm_hw_params_set_buffer_time_near (alsa->handle, params,
             &alsa->buffer_time, &dir), buffer_time);
   }
-  CHECK (snd_pcm_hw_params_get_buffer_size (params, &alsa->buffer_size),
-      buffer_size);
-
   if (alsa->period_time != -1) {
     /* set the period time */
     CHECK (snd_pcm_hw_params_set_period_time_near (alsa->handle, params,
             &alsa->period_time, &dir), period_time);
   }
-  CHECK (snd_pcm_hw_params_get_period_size (params, &alsa->period_size, &dir),
-      period_size);
 
   /* write the parameters to device */
   CHECK (snd_pcm_hw_params (alsa->handle, params), set_hw_params);
 
+  CHECK (snd_pcm_hw_params_get_buffer_size (params, &alsa->buffer_size),
+      buffer_size);
+
+  CHECK (snd_pcm_hw_params_get_period_size (params, &alsa->period_size, &dir),
+      period_size);
+
   return 0;
 
   /* ERRORS */
@@ -437,9 +438,8 @@ gst_alsasink_open (GstAudioSink * asink, GstRingBufferSpec * spec)
   CHECK (set_hwparams (alsa), hw_params_failed);
   CHECK (set_swparams (alsa), sw_params_failed);
 
-  spec->bytes_per_sample = 4;
-  alsa->bytes_per_sample = 4;
-  spec->segsize = alsa->period_size * 4;
+  alsa->bytes_per_sample = spec->bytes_per_sample;
+  spec->segsize = alsa->period_size * spec->bytes_per_sample;
   spec->segtotal = alsa->buffer_size / alsa->period_size;
   spec->silence_sample[0] = 0;
   spec->silence_sample[1] = 0;