summaryrefslogtreecommitdiff
path: root/src/modules/alsa/alsa-util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/alsa/alsa-util.c')
-rw-r--r--src/modules/alsa/alsa-util.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 61fb4903c..b91a0e987 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -1187,6 +1187,7 @@ int pa_alsa_safe_delay(snd_pcm_t *pcm, snd_pcm_status_t *status, snd_pcm_sframes
size_t abs_k;
int err;
snd_pcm_sframes_t avail = 0;
+ snd_pcm_audio_tstamp_config_t tstamp_config;
pa_assert(pcm);
pa_assert(delay);
@@ -1200,6 +1201,12 @@ int pa_alsa_safe_delay(snd_pcm_t *pcm, snd_pcm_status_t *status, snd_pcm_sframes
* avail, delay and timestamp values in a single kernel call to improve
* timer-based scheduling */
+ /* The time stamp configuration needs to be set so that the
+ * ALSA code will use the internal delay reported by the driver */
+ tstamp_config.type_requested = 1; /* ALSA default time stamp type */
+ tstamp_config.report_delay = 1;
+ snd_pcm_status_set_audio_htstamp_config(status, &tstamp_config);
+
if ((err = snd_pcm_status(pcm, status)) < 0)
return err;