+2004-02-14 Benjamin Otte <in7y118@public.uni-hamburg.de>
+
+ * ext/alsa/gstalsa.c: (gst_alsa_pcm_wait),
+ (gst_alsa_xrun_recovery):
+ * ext/alsa/gstalsa.h:
+ try xrun recovery when wait failed. Make xrun recovery function
+ return TRUE/FALSE to indicate success. (might fix #134354)
+
2004-02-13 David Schleef <ds@schleef.org>
* gst/sine/demo-dparams.c: (dynparm_log_value_changed),
return FALSE;
}
}
- GST_ERROR_OBJECT (this, "error waiting for alsa pcm: (%d: %s)", err, snd_strerror (err));
- return FALSE;
+ if (!gst_alsa_xrun_recovery (this)) {
+ GST_ERROR_OBJECT (this, "error waiting for alsa pcm: (%d: %s)", err, snd_strerror (err));
+ return FALSE;
+ }
}
}
return TRUE;
}
return TRUE;
}
-void
+
+gboolean
gst_alsa_xrun_recovery (GstAlsa *this)
{
snd_pcm_status_t *status;
if (!(gst_alsa_stop_audio (this) && gst_alsa_start_audio (this))) {
GST_ELEMENT_ERROR (this, RESOURCE, FAILED, (NULL),
("Error restarting audio after xrun"));
+ return FALSE;
}
+
+ return TRUE;
}
/*** AUDIO SETUP / START / STOP ***********************************************/
inline snd_pcm_sframes_t gst_alsa_update_avail (GstAlsa * this);
inline gboolean gst_alsa_pcm_wait (GstAlsa * this);
inline gboolean gst_alsa_start (GstAlsa * this);
-void gst_alsa_xrun_recovery (GstAlsa * this);
+gboolean gst_alsa_xrun_recovery (GstAlsa * this);
/* format conversions */
inline snd_pcm_uframes_t gst_alsa_timestamp_to_samples (GstAlsa * this,