stream-manager: update interface between stream-manager and module-filter-apply. 14/125114/3 accepted/tizen/unified/20170531.082628 submit/tizen/20170526.083733
authorKimJeongYeon <jeongyeon.kim@samsung.com>
Fri, 14 Apr 2017 01:20:04 +0000 (10:20 +0900)
committerKimJeongYeon <jeongyeon.kim@samsung.com>
Fri, 26 May 2017 05:40:54 +0000 (14:40 +0900)
[Version] 5.0.150
[Profile] Common
[Issue Type] New Feature

* Some proplist of module-filter-apply have changed at commit 04d65f9b15.
  According to the changes, stream-manager-filter.c need to update together.
* Minor code refactoring.

Signed-off-by: KimJeongYeon <jeongyeon.kim@samsung.com>
Change-Id: Ie79419adbe7bcfb85f9eea3987f7f8fefc861a8f

packaging/pulseaudio-modules-tizen.spec
src/stream-manager-filter.c
src/stream-manager-priv.h

index 286449db3fffd052611647b91af7332d8f0d0daf..162d935529569174e70d9b635cc191da5e9fcee7 100644 (file)
@@ -1,6 +1,6 @@
 Name:             pulseaudio-modules-tizen
 Summary:          Pulseaudio modules for Tizen
-Version:          5.0.149
+Version:          5.0.150
 Release:          0
 Group:            Multimedia/Audio
 License:          LGPL-2.1+
index e313a8a31a8f4e04c690e5eed24d0954c5863710..9959e2e365a1b8cf2e2297111a72c0709360b072 100644 (file)
@@ -26,7 +26,9 @@
 #include "stream-manager-priv.h"
 #include "stream-manager-filter-priv.h"
 
-#define MODULE_FILTER_APPLY "module-filter-apply"
+#define MODULE_FILTER_APPLY             "module-filter-apply"
+#define PA_PROP_FILTER_APPLY_GROUP      PA_PROP_FILTER_APPLY".%s.group"
+#define PA_PROP_FILTER_APPLY_PARAMETERS PA_PROP_FILTER_APPLY".%s.parameters"
 
 /* Based on parse_control_parameters() of module-ladspa-sink.c */
 static int32_t parse_filter_control_parameters(const char *cdata, double *read_values, bool *use_default,
@@ -166,13 +168,25 @@ finish:
 
 /* Invoked from dbus method call or hook fire */
 int32_t apply_filter_to_sink_input(pa_sink_input *si, filter_info *f, bool need_to_hook) {
+    const char *filter_apply = NULL;
+    char *prop_group;
+    char *prop_parameters;
+
     pa_assert(si);
 
     if (!f) {
         /* Unload filter using module-filter-apply */
-        pa_proplist_unset(si->proplist, PA_PROP_FILTER_APPLY);
-        pa_proplist_unset(si->proplist, PA_PROP_FILTER_APPLY_EXTRA_PARAMETERS);
-        pa_proplist_unset(si->proplist, PA_PROP_FILTER_APPLY_EXTRA_GROUP);
+        if ((filter_apply = pa_proplist_gets(si->proplist, PA_PROP_FILTER_APPLY))) {
+            prop_group = pa_sprintf_malloc(PA_PROP_FILTER_APPLY_GROUP, filter_apply);
+            pa_proplist_unset(si->proplist, prop_group);
+            pa_xfree(prop_group);
+
+            prop_parameters = pa_sprintf_malloc(PA_PROP_FILTER_APPLY_PARAMETERS, filter_apply);
+            pa_proplist_unset(si->proplist, prop_parameters);
+            pa_xfree(prop_parameters);
+
+            pa_proplist_unset(si->proplist, PA_PROP_FILTER_APPLY);
+        }
     } else {
         if (!f->filter_apply || pa_streq(f->filter_apply, "")) {
             pa_log_error("Try to applying empty filter module");
@@ -183,10 +197,16 @@ int32_t apply_filter_to_sink_input(pa_sink_input *si, filter_info *f, bool need_
         pa_proplist_sets(si->proplist, PA_PROP_FILTER_APPLY, f->filter_apply);
 
         /* Optional properties */
-        if (f->extra_parameters)
-            pa_proplist_sets(si->proplist, PA_PROP_FILTER_APPLY_EXTRA_PARAMETERS, f->extra_parameters);
-        if (f->extra_group)
-            pa_proplist_sets(si->proplist, PA_PROP_FILTER_APPLY_EXTRA_GROUP, f->extra_group);
+        if (f->group) {
+            prop_group = pa_sprintf_malloc(PA_PROP_FILTER_APPLY_GROUP, f->filter_apply);
+            pa_proplist_sets(si->proplist, prop_group, f->group);
+            pa_xfree(prop_group);
+        }
+        if (f->parameters) {
+            prop_parameters = pa_sprintf_malloc(PA_PROP_FILTER_APPLY_PARAMETERS, f->filter_apply);
+            pa_proplist_sets(si->proplist, prop_parameters, f->parameters);
+            pa_xfree(prop_parameters);
+        }
     }
 
     if (need_to_hook)
@@ -220,8 +240,8 @@ int32_t update_filter(pa_stream_manager *m, const char *filter_name, const char
         f_key = pa_xstrdup(stream_type);
         f_new = pa_xmalloc0(sizeof(filter_info));
         f_new->filter_apply = pa_xstrdup(filter_name);
-        f_new->extra_parameters = pa_xstrdup(filter_parameters);
-        f_new->extra_group = pa_xstrdup(filter_group);
+        f_new->group = pa_xstrdup(filter_group);
+        f_new->parameters = pa_xstrdup(filter_parameters);
         pa_hashmap_put(m->filter_infos, (void*)f_key, f_new);
         pa_log_debug("Apply filter(module-%s) to streams of %s type", f_new->filter_apply, stream_type);
     } else {
@@ -316,8 +336,8 @@ static void filter_info_value_free_cb(filter_info *f) {
     pa_assert(f);
 
     pa_xfree((void *)f->filter_apply);
-    pa_xfree((void *)f->extra_parameters);
-    pa_xfree((void *)f->extra_group);
+    pa_xfree((void *)f->group);
+    pa_xfree((void *)f->parameters);
 
     pa_xfree(f);
 }
index e636a2b180052a5e1d9ae2e31b1179a7b83804d1..3f2fe19481dcb67199edf064fb12cd9ba700595d 100644 (file)
@@ -121,8 +121,8 @@ typedef struct _stream_parent {
 
 typedef struct _filter_info {
     const char *filter_apply;
-    const char *extra_parameters;
-    const char *extra_group;
+    const char *group;
+    const char *parameters;
     struct _controls {
         double values[FILTER_MAX_CONTROLS];
         bool use_default[FILTER_MAX_CONTROLS];