preprocess: Set actual process usec when a reference structure is created 25/299125/3
authorJaechul Lee <jcsing.lee@samsung.com>
Wed, 20 Sep 2023 08:33:27 +0000 (17:33 +0900)
committerJaechul Lee <jcsing.lee@samsung.com>
Tue, 26 Sep 2023 08:11:40 +0000 (17:11 +0900)
process_usec could be changed after creating processor because plugins
could have its own constraint framesize.
If there is changes, reference process_usec must be changed as well.

[Version] 15.0.56
[Issue Type] Update

Change-Id: I4d5111ec62cfaf9e98828909da9b9b718ed08fbc
Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com>
packaging/pulseaudio-modules-tizen.spec
src/preprocessor/module-tizenaudio-preprocessor.c
src/preprocessor/processor.c
src/preprocessor/processor.h

index ff07d73..41cc8f4 100644 (file)
@@ -2,7 +2,7 @@
 
 Name:             pulseaudio-modules-tizen
 Summary:          Pulseaudio modules for Tizen
-Version:          15.0.55
+Version:          15.0.56
 Release:          0
 Group:            Multimedia/Audio
 License:          LGPL-2.1+
index 7e0e343..c8369c1 100644 (file)
@@ -303,6 +303,7 @@ static pa_processor_holder *build_processor_holder(pa_core *core, pa_source_outp
     while ((processor_str = pa_split(processors_list, ",", &state))) {
         pa_processor *processor;
         pa_processor_method_t method;
+        pa_usec_t actual_process_usec;
 
         if (pa_processor_method_enum(processor_str, &method) < 0) {
             pa_log_error("Failed to get method. processor_str(%s)", processor_str);
@@ -316,6 +317,8 @@ static pa_processor_holder *build_processor_holder(pa_core *core, pa_source_outp
             goto fail;
         }
 
+        actual_process_usec = pa_processor_get_process_usec(processor);
+
         /* reference */
         if (pa_processor_method_need_reference_structure(method)) {
             pa_sample_spec request_ss;
@@ -341,8 +344,10 @@ static pa_processor_holder *build_processor_holder(pa_core *core, pa_source_outp
                 data->flags |= PA_SOURCE_OUTPUT_NO_REMAP;
             }
 
+            /* process_usec could be changed after creating processor.
+             * it depends on each plugin */
             reference = pa_processor_reference_new_custom(core, sink, &sink->sample_spec,
-                                                            &request_ss, process_usec,
+                                                            &request_ss, actual_process_usec,
                                                             PROCESSOR_REFERENCE_METHOD_NONE);
             if (!reference) {
                 pa_processor_free(processor);
@@ -362,8 +367,10 @@ static pa_processor_holder *build_processor_holder(pa_core *core, pa_source_outp
 
         pa_processor_holder_register_processor_sequencial(holder, processor);
 
-        pa_log_info("processor was created. processor(%s), process_msec(%" PRIu64 "ms)",
-                                processor_str, process_usec / PA_USEC_PER_MSEC);
+        pa_log_info("processor was created. processor(%s), process_msec(%" PRIu64 "ms->%" PRIu64 "ms)",
+                                processor_str,
+                                process_usec / PA_USEC_PER_MSEC,
+                                actual_process_usec / PA_USEC_PER_MSEC);
 
         pa_xfree(processor_str);
     }
index f61a666..8e072f3 100644 (file)
@@ -242,6 +242,12 @@ size_t pa_processor_get_process_bytes(pa_processor *p) {
     return p->process_bytes;
 }
 
+pa_usec_t pa_processor_get_process_usec(pa_processor *p) {
+    pa_assert(p);
+
+    return p->process_usec;
+}
+
 /* Do not touch chunk value */
 int pa_processor_process(pa_processor *processor, pa_memchunk *chunk) {
     int r = -1;
index c4bb54f..a4f7152 100644 (file)
@@ -66,6 +66,7 @@ void pa_processor_free(pa_processor *p);
 void pa_processor_reset(pa_processor *p);
 pa_memblockq *pa_processor_get_result_memblockq(pa_processor *processor);
 size_t pa_processor_get_process_bytes(pa_processor *p);
+pa_usec_t pa_processor_get_process_usec(pa_processor *p);
 
 /* reference */
 void pa_processor_attach_reference(pa_processor *processor, pa_processor_reference *reference);