From: Jaechul Lee Date: Tue, 7 Nov 2023 04:37:48 +0000 (+0900) Subject: preprocessor: Improve AEC performance X-Git-Tag: accepted/tizen/unified/20231115.024823~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F08%2F301008%2F2;p=platform%2Fcore%2Fmultimedia%2Fpulseaudio-modules-tizen.git preprocessor: Improve AEC performance Added exception handlings instead of using silence blocks [Version] 15.0.65 [Issue Type] Update Change-Id: I888b4f0d92b88e770fa3866af1b6fbb2b846c127 Signed-off-by: Jaechul Lee --- diff --git a/packaging/pulseaudio-modules-tizen.spec b/packaging/pulseaudio-modules-tizen.spec index d752c03..e1e2d8b 100644 --- a/packaging/pulseaudio-modules-tizen.spec +++ b/packaging/pulseaudio-modules-tizen.spec @@ -2,7 +2,7 @@ Name: pulseaudio-modules-tizen Summary: Pulseaudio modules for Tizen -Version: 15.0.64 +Version: 15.0.65 Release: 0 Group: Multimedia/Audio License: LGPL-2.1+ diff --git a/src/preprocessor/module-tizenaudio-preprocessor.c b/src/preprocessor/module-tizenaudio-preprocessor.c index c8369c1..5b64cfb 100644 --- a/src/preprocessor/module-tizenaudio-preprocessor.c +++ b/src/preprocessor/module-tizenaudio-preprocessor.c @@ -293,7 +293,10 @@ static pa_processor_holder *build_processor_holder(pa_core *core, pa_source_outp } processors_list = pa_proplist_gets(data->proplist, PA_PROP_MEDIA_PREPROCESSOR_METHOD); - pa_assert(processors_list); + if (!processors_list) { + pa_log_error("Failed to get preprocessor method"); + goto fail; + } if (proplist_get_fragment_size_usec(data->source->proplist, &data->source->sample_spec, &process_usec) < 0) pa_log_warn("Failed to get source fragment usec. use default process usec"); diff --git a/src/preprocessor/processor.c b/src/preprocessor/processor.c index e44e870..889801f 100644 --- a/src/preprocessor/processor.c +++ b/src/preprocessor/processor.c @@ -33,6 +33,7 @@ #include #include "processor.h" +#include "processor-def.h" #ifdef __DEBUG__ #include @@ -263,9 +264,9 @@ int pa_processor_process(pa_processor *processor, pa_memchunk *chunk) { pa_assert(chunk); if (processor->reference) { - if (pa_processor_reference_pull(processor->reference, &rchunk) < 0) { - pa_log_warn("Failed to get memblock from reference memblockq."); - return -1; + if ((r = pa_processor_reference_pull(processor->reference, &rchunk)) < 0) { + pa_log_warn("Failed to get memblock from reference memblockq. ret(%d)", r); + return -PROCESSOR_ERR_BUFFERING; } reference = pa_memblock_acquire_chunk(&rchunk); diff --git a/src/preprocessor/processor_holder.c b/src/preprocessor/processor_holder.c index ceed0d3..31f4a7d 100644 --- a/src/preprocessor/processor_holder.c +++ b/src/preprocessor/processor_holder.c @@ -34,7 +34,7 @@ #include "processor_holder.h" #define MEMBLOCKQ_MAXLENGTH (16*1024*1024) -#define DEFAULT_PREBUFFER_MSEC (600) +#define DEFAULT_PREBUFFER_MSEC (300) pa_processor_holder *pa_processor_holder_new(pa_core *core, pa_sample_spec *ss) { pa_processor_holder *holder; diff --git a/src/preprocessor/processor_reference.c b/src/preprocessor/processor_reference.c index 0b0ece0..b41ca99 100644 --- a/src/preprocessor/processor_reference.c +++ b/src/preprocessor/processor_reference.c @@ -208,6 +208,7 @@ int pa_processor_reference_push(pa_processor_reference *reference, pa_memchunk * int pa_processor_reference_pull(pa_processor_reference *reference, pa_memchunk *chunk) { int r; size_t length; + size_t memblock_length; pa_assert(reference); pa_assert(chunk); @@ -238,6 +239,14 @@ int pa_processor_reference_pull(pa_processor_reference *reference, pa_memchunk * } exit: + memblock_length = pa_memblockq_get_length(reference->memblockq); + if (memblock_length < length) { + pa_log_info("reference memblockq has less memblocks. memblock_length(%zu), length(%zu)", + memblock_length, length); + + return -1; + } + if ((r = pa_memblockq_peek_fixed_size(reference->memblockq, length, chunk)) < 0) { pa_log_error("Failed to get memblock from reference memblockq"); return r;