Author: titmuss
Date: Mon Jan 12 12:10:27 2009
New Revision: 3777

URL: http://svn.slimdevices.com?rev=3777&root=Jive&view=rev
Log:
Bug: 10623
Description:
Fix audio on jive.


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

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c?rev=3777&root=Jive&r1=3776&r2=3777&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_alsa.c Mon 
Jan 12 12:10:27 2009
@@ -49,7 +49,7 @@
 
 
 #define ALSA_DEFAULT_DEVICE "default"
-#define ALSA_DEFAULT_BUFFER_TIME 500000
+#define ALSA_DEFAULT_BUFFER_TIME 30000
 #define ALSA_DEFAULT_PERIOD_COUNT 3
 
 
@@ -223,6 +223,7 @@
 
 static int pcm_open(struct decode_alsa *state) {
        int err, dir;
+       unsigned int val;
        snd_pcm_uframes_t size;
 
        /* Close existing pcm (if any) */
@@ -278,27 +279,29 @@
        }
 
        /* set buffer and period times */
-       if ((err = snd_pcm_hw_params_set_buffer_time_near(state->pcm, 
state->hw_params, &state->buffer_time, &dir)) < 0) {
+       val = state->buffer_time;
+       if ((err = snd_pcm_hw_params_set_buffer_time_near(state->pcm, 
state->hw_params, &val, &dir)) < 0) {
                DEBUG_ERROR("Unable to set  buffer time %s", snd_strerror(err));
                return err;
        }
 
-       if ((err = snd_pcm_hw_params_set_periods_near(state->pcm, 
state->hw_params, &state->period_count, &dir)) < 0) {
+       val = state->period_count;
+       if ((err = snd_pcm_hw_params_set_periods_near(state->pcm, 
state->hw_params, &val, &dir)) < 0) {
                DEBUG_ERROR("Unable to set period size %s", snd_strerror(err));
                return err;
        }
-
-       if ((err = snd_pcm_hw_params_get_period_size(state->hw_params, &size, 
&dir)) < 0) {
-               DEBUG_ERROR("Unable to get period size: %s", snd_strerror(err));
-               return err;
-       }
-       state->period_size = size;
 
        /* set hardware parameters */
        if ((err = snd_pcm_hw_params(state->pcm, state->hw_params)) < 0) {
                DEBUG_ERROR("Unable to set hw params: %s", snd_strerror(err));
                return err;
        }
+
+       if ((err = snd_pcm_hw_params_get_period_size(state->hw_params, &size, 
&dir)) < 0) {
+               DEBUG_ERROR("Unable to get period size: %s", snd_strerror(err));
+               return err;
+       }
+       state->period_size = size;
 
 #ifdef RUNTIME_DEBUG
        snd_pcm_dump(state->pcm, output);
@@ -411,7 +414,6 @@
                        }
                        else {
                                if ((err = snd_pcm_wait(state->pcm, 500)) < 0) {
-                                 printf("err=%d\n", err);
                                        if ((err = xrun_recovery(state, avail)) 
< 0) {
                                                DEBUG_ERROR("PCM wait failed: 
%s", snd_strerror(err));
                                        }

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

Reply via email to