> > Forgot to mention: can you please fix your name (full name please if > possible, with capital letters etc. - it makes the shortlog nicer), your > tabs (we use spaces) and in this case there was actually a bug - u->sink > was used in the alsa-source code.... it should have been u->source, so > please do a compile test at least before submitting patches :D > Hi Col, All Done. Thanks. Pls find attached patch. I'll use @intel.com account directly to send patch.
--xingchao
From 67f9b084c9aa1baffb60db0db7ca409ebaba8703 Mon Sep 17 00:00:00 2001 From: xingchao <[email protected]> Date: Fri, 12 Aug 2011 08:41:45 -0400 Subject: [PATCH] update process_usec before enter sleep during check_left_to_play/record(), there's chance to increase/decrease watermark. So before sleep, the actural sleep time should based on latest watermark. Signed-off-by: xingchao <[email protected]> --- src/modules/alsa/alsa-sink.c | 2 ++ src/modules/alsa/alsa-source.c | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-) diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c index dd2546c..35bca44 100644 --- a/src/modules/alsa/alsa-sink.c +++ b/src/modules/alsa/alsa-sink.c @@ -647,6 +647,7 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle if (u->use_tsched) { *sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec); + process_usec = pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec); if (*sleep_usec > process_usec) *sleep_usec -= process_usec; @@ -787,6 +788,7 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle if (u->use_tsched) { *sleep_usec = pa_bytes_to_usec(left_to_play, &u->sink->sample_spec); + process_usec = pa_bytes_to_usec(u->tsched_watermark, &u->sink->sample_spec); if (*sleep_usec > process_usec) *sleep_usec -= process_usec; diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c index ca3a913..96ef683 100644 --- a/src/modules/alsa/alsa-source.c +++ b/src/modules/alsa/alsa-source.c @@ -613,6 +613,7 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled if (u->use_tsched) { *sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec); + process_usec = pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec); if (*sleep_usec > process_usec) *sleep_usec -= process_usec; @@ -742,6 +743,7 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled if (u->use_tsched) { *sleep_usec = pa_bytes_to_usec(left_to_record, &u->source->sample_spec); + process_usec = pa_bytes_to_usec(u->tsched_watermark, &u->source->sample_spec); if (*sleep_usec > process_usec) *sleep_usec -= process_usec; -- 1.7.1
_______________________________________________ pulseaudio-discuss mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
