From 1e358f59c21e42b41cf5b968bf5ed03054abc6b2 Mon Sep 17 00:00:00 2001 From: Jaechul Lee Date: Fri, 6 Nov 2020 10:52:33 +0900 Subject: [PATCH] null-sink: Change block size to 50 msec when norewinds is set playing sound through null sink takes almost 2 seconds at first time playback when norewinds is set. Because block_usec is set 2 seconds at initializing time. The value will be changed 50 msec after calling update_request_latency callback. Part-of: [jcsing.lee: backport mainline commit 1e7adb4fd for null-sink latency] Change-Id: I2f47c14ae8497421a0ab8f27e9043674191e95c4 --- packaging/pulseaudio.spec | 2 +- src/modules/module-null-sink.c | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/packaging/pulseaudio.spec b/packaging/pulseaudio.spec index 0a919d6..6579991 100644 --- a/packaging/pulseaudio.spec +++ b/packaging/pulseaudio.spec @@ -3,7 +3,7 @@ Name: pulseaudio Summary: Improved Linux sound server Version: 13.0 -Release: 22 +Release: 23 Group: Multimedia/Audio License: LGPL-2.1 URL: http://pulseaudio.org diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c index 5b0627f..e644262 100644 --- a/src/modules/module-null-sink.c +++ b/src/modules/module-null-sink.c @@ -57,8 +57,8 @@ PA_MODULE_USAGE( "norewinds="); #define DEFAULT_SINK_NAME "null" -#define BLOCK_USEC (PA_USEC_PER_SEC * 2) -#define NOREWINDS_MAX_LATENCY_USEC (50*PA_USEC_PER_MSEC) +#define BLOCK_USEC (2 * PA_USEC_PER_SEC) +#define BLOCK_USEC_NOREWINDS (50 * PA_USEC_PER_MSEC) struct userdata { pa_core *core; @@ -318,6 +318,7 @@ int pa__init(pa_module*m) { u->core = m->core; u->module = m; u->rtpoll = pa_rtpoll_new(); + u->block_usec = BLOCK_USEC; if (pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll) < 0) { pa_log("pa_thread_mq_init() failed."); @@ -385,13 +386,15 @@ int pa__init(pa_module*m) { pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq); pa_sink_set_rtpoll(u->sink, u->rtpoll); - u->block_usec = BLOCK_USEC; - nbytes = pa_usec_to_bytes(u->block_usec, &u->sink->sample_spec); - if(pa_modargs_get_value_boolean(ma, "norewinds", &u->norewinds) < 0){ pa_log("Invalid argument, norewinds expects a boolean value."); } + if (u->norewinds) + u->block_usec = BLOCK_USEC_NOREWINDS; + + nbytes = pa_usec_to_bytes(u->block_usec, &u->sink->sample_spec); + if(u->norewinds){ pa_sink_set_max_rewind(u->sink, 0); } else { @@ -405,11 +408,7 @@ int pa__init(pa_module*m) { goto fail; } - if(u->norewinds){ - pa_sink_set_latency_range(u->sink, 0, NOREWINDS_MAX_LATENCY_USEC); - } else { - pa_sink_set_latency_range(u->sink, 0, BLOCK_USEC); - } + pa_sink_set_latency_range(u->sink, 0, u->block_usec); pa_sink_put(u->sink); -- 2.7.4