summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-04-09 01:18:05 +0000
committerLennart Poettering <lennart@poettering.net>2008-04-09 01:18:05 +0000
commitcc1e2654d30ee7547aebd3c1d5b26802e8bea5ff (patch)
tree941f49204db6b772c050c23861b2f7e6ce13ee71
parentf3109be9e1df3f7ef723e7122c80e58cc3944951 (diff)
init min/max latency properly; fix avail_min updating
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2227 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--src/modules/module-alsa-sink.c10
-rw-r--r--src/modules/module-alsa-source.c6
-rw-r--r--src/modules/module-ladspa-sink.c2
-rw-r--r--src/modules/module-remap-sink.c2
4 files changed, 11 insertions, 9 deletions
diff --git a/src/modules/module-alsa-sink.c b/src/modules/module-alsa-sink.c
index 70a94ee3..513350fc 100644
--- a/src/modules/module-alsa-sink.c
+++ b/src/modules/module-alsa-sink.c
@@ -436,7 +436,7 @@ static pa_usec_t hw_sleep_time(struct userdata *u) {
pa_assert(u);
- usec = pa_sink_get_requested_latency(u->sink);
+ usec = pa_sink_get_requested_latency_within_thread(u->sink);
if (usec <= 0)
usec = pa_bytes_to_usec(u->hwbuf_size, &u->sink->sample_spec);
@@ -461,7 +461,7 @@ static void update_hwbuf_unused_frames(struct userdata *u) {
pa_assert(u);
- if ((usec = pa_sink_get_requested_latency(u->sink)) <= 0) {
+ if ((usec = pa_sink_get_requested_latency_within_thread(u->sink)) <= 0) {
/* Use the full buffer if noone asked us for anything
* specific */
u->hwbuf_unused_frames = 0;
@@ -499,8 +499,6 @@ static int update_sw_params(struct userdata *u) {
} else
avail_min = 1;
- avail_min = (snd_pcm_uframes_t) -1;
-
pa_log("setting avail_min=%lu", (unsigned long) avail_min);
if ((err = pa_alsa_set_sw_params(u->pcm_handle, avail_min)) < 0) {
@@ -1222,8 +1220,10 @@ int pa__init(pa_module*m) {
u->sink->thread_info.max_rewind = use_tsched ? u->hwbuf_size : 0;
+ u->sink->max_latency = pa_bytes_to_usec(u->hwbuf_size, &ss);
+
if (!use_tsched)
- u->sink->min_latency = pa_bytes_to_usec(u->hwbuf_size, &ss);
+ u->sink->min_latency = u->sink->max_latency;
pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
nfrags, (long unsigned) u->fragment_size,
diff --git a/src/modules/module-alsa-source.c b/src/modules/module-alsa-source.c
index a074bc65..caaa5458 100644
--- a/src/modules/module-alsa-source.c
+++ b/src/modules/module-alsa-source.c
@@ -411,7 +411,7 @@ static pa_usec_t hw_sleep_time(struct userdata *u) {
pa_assert(u);
- usec = pa_source_get_requested_latency(u->source);
+ usec = pa_source_get_requested_latency_within_thread(u->source);
if (usec <= 0)
usec = pa_bytes_to_usec(u->hwbuf_size, &u->source->sample_spec);
@@ -1093,8 +1093,10 @@ int pa__init(pa_module*m) {
u->hw_dB_min = u->hw_dB_max = 0;
u->hw_volume_min = u->hw_volume_max = 0;
+ u->source->max_latency = pa_bytes_to_usec(u->hwbuf_size, &ss);
+
if (!use_tsched)
- u->source->min_latency = pa_bytes_to_usec(u->hwbuf_size, &ss);
+ u->source->min_latency = u->source->max_latency;
pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
nfrags, (long unsigned) u->fragment_size,
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index 1ba2b48a..2342cde9 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -145,7 +145,7 @@ static void sink_update_requested_latency(pa_sink *s) {
pa_assert_se(u = s->userdata);
/* Just hand this one over to the master sink */
- u->sink_input->thread_info.requested_sink_latency = pa_sink_get_requested_latency(s);
+ u->sink_input->thread_info.requested_sink_latency = pa_sink_get_requested_latency_within_thread(s);
pa_sink_invalidate_requested_latency(u->master);
}
diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
index 1c97a824..2dc4f2a1 100644
--- a/src/modules/module-remap-sink.c
+++ b/src/modules/module-remap-sink.c
@@ -123,7 +123,7 @@ static void sink_update_requested_latency(pa_sink *s) {
pa_assert_se(u = s->userdata);
/* Just hand this one over to the master sink */
- u->sink_input->thread_info.requested_sink_latency = pa_sink_get_requested_latency(s);
+ u->sink_input->thread_info.requested_sink_latency = pa_sink_get_requested_latency_within_thread(s);
pa_sink_invalidate_requested_latency(u->master);
}