From bd8ef73b913f050792017ce8772a99bc198ecff5 Mon Sep 17 00:00:00 2001 From: Jaechul Lee Date: Mon, 16 Nov 2020 10:14:56 +0900 Subject: [PATCH] null-source: Add max_latency_msec argument It takes much time when starting to capture because max latency is set to 2 seconds as a initial value. null-source latency need to be set a lower value than initial value to improve latency. --- src/modules/module-null-source.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/modules/module-null-source.c b/src/modules/module-null-source.c index 8d3796e9a..38e3c823e 100644 --- a/src/modules/module-null-source.c +++ b/src/modules/module-null-source.c @@ -52,6 +52,7 @@ PA_MODULE_USAGE( "rate= " "source_name= " "channel_map= " + "max_latency_msec= " "description= "); #define DEFAULT_SOURCE_NAME "source.null" @@ -79,6 +80,7 @@ static const char* const valid_modargs[] = { "channels", "source_name", "channel_map", + "max_latency_msec", "description", NULL }; @@ -123,6 +125,7 @@ static void source_update_requested_latency_cb(pa_source *s) { pa_assert(u); u->block_usec = pa_source_get_requested_latency_within_thread(s); + if (u->block_usec == (pa_usec_t)-1) u->block_usec = u->source->thread_info.max_latency; } @@ -197,6 +200,8 @@ int pa__init(pa_module*m) { pa_channel_map map; pa_modargs *ma = NULL; pa_source_new_data data; + pa_usec_t max_latency = MAX_LATENCY_USEC; + uint32_t max_latency_msec; pa_assert(m); @@ -247,7 +252,11 @@ int pa__init(pa_module*m) { pa_source_set_asyncmsgq(u->source, u->thread_mq.inq); pa_source_set_rtpoll(u->source, u->rtpoll); - pa_source_set_latency_range(u->source, MIN_LATENCY_USEC, MAX_LATENCY_USEC); + if (pa_modargs_get_value_u32(ma, "max_latency_msec", &max_latency_msec)) + max_latency = max_latency_msec * PA_USEC_PER_MSEC; + + pa_source_set_latency_range(u->source, MIN_LATENCY_USEC, max_latency); + u->block_usec = u->source->thread_info.max_latency; u->source->thread_info.max_rewind =