summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-04-13 18:27:35 +0000
committerLennart Poettering <lennart@poettering.net>2006-04-13 18:27:35 +0000
commit010c049db267870138ac6cd0996d4fadaa401a7b (patch)
treeb16c64876dde4acc65e426b874c8f3703a7322c6 /src
parentc25c549c420fe450b259b2bdcb2e200bf5862147 (diff)
include in-flux resampled chunk in latency calculations of playback streams
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@705 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src')
-rw-r--r--src/polypcore/protocol-native.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/polypcore/protocol-native.c b/src/polypcore/protocol-native.c
index 2aedd390..3f1d5ca2 100644
--- a/src/polypcore/protocol-native.c
+++ b/src/polypcore/protocol-native.c
@@ -1045,6 +1045,7 @@ static void command_get_playback_latency(PA_GCC_UNUSED pa_pdispatch *pd, PA_GCC_
struct playback_stream *s;
struct timeval tv, now;
uint32_t idx;
+ pa_usec_t latency;
assert(c && t);
if (pa_tagstruct_getu32(t, &idx) < 0 ||
@@ -1060,7 +1061,12 @@ static void command_get_playback_latency(PA_GCC_UNUSED pa_pdispatch *pd, PA_GCC_
CHECK_VALIDITY(c->pstream, s->type == PLAYBACK_STREAM, tag, PA_ERR_NOENTITY);
reply = reply_new(tag);
- pa_tagstruct_put_usec(reply, pa_sink_get_latency(s->sink_input->sink));
+
+ latency = pa_sink_get_latency(s->sink_input->sink);
+ if (s->sink_input->resampled_chunk.memblock)
+ latency += pa_bytes_to_usec(s->sink_input->resampled_chunk.length, &s->sink_input->sample_spec);
+ pa_tagstruct_put_usec(reply, latency);
+
pa_tagstruct_put_usec(reply, 0);
pa_tagstruct_put_boolean(reply, pa_memblockq_is_readable(s->memblockq));
pa_tagstruct_put_timeval(reply, &tv);