[pulseaudio-discuss] [PATCH 09/25] raop: Introduce sink_get_latency for latency calculation
Hajime Fujita
crisp.fujita at nifty.com
Sat Sep 7 09:34:58 PDT 2013
Latency calculation will be shared between TCP and UDP protocol
implementations, so move it to an external function.
---
src/modules/raop/module-raop-sink.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/src/modules/raop/module-raop-sink.c b/src/modules/raop/module-raop-sink.c
index 5553b43..0f4b801 100644
--- a/src/modules/raop/module-raop-sink.c
+++ b/src/modules/raop/module-raop-sink.c
@@ -170,6 +170,15 @@ static void on_close(void*userdata) {
pa_asyncmsgq_post(u->thread_mq.inq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_RIP_SOCKET, NULL, 0, NULL, NULL);
}
+static pa_usec_t sink_get_latency(const struct userdata *u) {
+ pa_usec_t w, r;
+
+ r = pa_smoother_get(u->smoother, pa_rtclock_now());
+ w = pa_bytes_to_usec((u->offset - u->encoding_overhead + (u->encoded_memchunk.length / u->encoding_ratio)), &u->sink->sample_spec);
+
+ return w > r ? w - r : 0;
+}
+
static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
struct userdata *u = PA_SINK(o)->userdata;
@@ -215,12 +224,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
break;
case PA_SINK_MESSAGE_GET_LATENCY: {
- pa_usec_t w, r;
-
- r = pa_smoother_get(u->smoother, pa_rtclock_now());
- w = pa_bytes_to_usec((u->offset - u->encoding_overhead + (u->encoded_memchunk.length / u->encoding_ratio)), &u->sink->sample_spec);
-
- *((pa_usec_t*) data) = w > r ? w - r : 0;
+ *((pa_usec_t*) data) = sink_get_latency(u);
return 0;
}
--
1.8.1.2
More information about the pulseaudio-discuss
mailing list