Author: titmuss
Date: Tue Nov  4 02:44:55 2008
New Revision: 3268

URL: http://svn.slimdevices.com?rev=3268&root=Jive&view=rev
Log:
Bug: N/A
Description:
Add some additional debug for alsa playback.
Don't open the alsa device twice during init.


Modified:
    7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c

Modified: 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c
URL: 
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c?rev=3268&root=Jive&r1=3267&r2=3268&view=diff
==============================================================================
--- 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c 
(original)
+++ 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c Tue 
Nov  4 02:44:55 2008
@@ -170,12 +170,16 @@
 }
 
 
-static int pcm_open() {
+static int pcm_open(u32_t sample_rate) {
        int err, dir;
        snd_pcm_uframes_t size;
 #define BUFFER_SIZE 8192 /*(8291 / 4)*/
 #define PERIOD_SIZE (BUFFER_SIZE / 4) /*(BUFFER_SIZE / 8)*/
 
+       if (handle && sample_rate == pcm_sample_rate) {
+               return 0;
+       }
+
        /* Close existing pcm (if any) */
        if (handle) {
                if ((err = snd_pcm_drain(handle)) < 0) {
@@ -231,7 +235,7 @@
        }
 
        /* set the stream rate */
-       if ((err = snd_pcm_hw_params_set_rate_near(handle, hwparams, 
&new_sample_rate, 0)) < 0) {
+       if ((err = snd_pcm_hw_params_set_rate_near(handle, hwparams, 
&sample_rate, 0)) < 0) {
                DEBUG_ERROR("Rate not available: %s", snd_strerror(err));
                return err;
        }
@@ -261,8 +265,11 @@
                return err;
        }
 
-       pcm_sample_rate = new_sample_rate;
-       new_sample_rate = 0;
+#ifdef RUNTIME_DEBUG
+       snd_pcm_dump(handle, output);
+#endif
+
+       pcm_sample_rate = sample_rate;
 
        return 0;
 }
@@ -300,8 +307,6 @@
 
        DEBUG_TRACE("audio_thread_execute");
 
-       new_sample_rate = 44100;
-
        while (1) {
                fifo_lock(&decode_fifo);
 
@@ -310,6 +315,8 @@
                                DEBUG_ERROR("Open failed: %s", 
snd_strerror(err));
                                return (void *)-1;
                        }
+
+                       new_sample_rate = 0;
                        first = 1;
                }
 
@@ -445,7 +452,7 @@
 
        DEBUG_TRACE("Playback device: %s\n", device);
 
-       if (pcm_open() < 0) {
+       if (pcm_open(44100) < 0) {
                return 0;
        }
 

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins

Reply via email to