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