pulsecore: add remote utility functions with proplist definitions 55/241155/9
authorSeungbae Shin <seungbae.shin@samsung.com>
Tue, 18 Aug 2020 07:09:39 +0000 (16:09 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Thu, 20 Aug 2020 07:04:54 +0000 (16:04 +0900)
- pa_proplist_has_remote_name
- pa_proplist_set_remote_access_permission
- pa_proplist_remote_is_allowed
- pa_sink_update_proplist_remote_access_permission
- pa_source_update_proplist_remote_access_permission

[Version] 13.0-14
[Issue Type] Add

Change-Id: I61615c128f91b2eaeda77bce44fab67dfed3e1c0

packaging/pulseaudio.spec
src/pulse/proplist.h
src/pulsecore/proplist-util.c
src/pulsecore/proplist-util.h
src/pulsecore/sink.c
src/pulsecore/sink.h
src/pulsecore/source.c
src/pulsecore/source.h

index 02f4bbe..d3c15c0 100644 (file)
@@ -3,7 +3,7 @@
 Name:             pulseaudio
 Summary:          Improved Linux sound server
 Version:          13.0
-Release:          13
+Release:          14
 Group:            Multimedia/Audio
 License:          LGPL-2.1
 URL:              http://pulseaudio.org
index fc384a9..a266753 100644 (file)
@@ -52,6 +52,10 @@ PA_C_DECL_BEGIN
 #define PA_PROP_BUFFER_ATTR_PREBUF             "buffer.attr.prebuf"
 #define PA_PROP_BUFFER_ATTR_FRAGSIZE           "buffer.attr.fragsize"
 #define PA_PROP_DEVICE_ROLE                    "device.role"
+
+#define PA_PROP_MEDIA_REMOTE_NAME              "media.remote.name"
+#define PA_PROP_MEDIA_REMOTE_DESCRIPTION       "media.remote.description"
+#define PA_PROP_MEDIA_REMOTE_ACCESS            "media.remote.access"
 #endif
 
 /** For streams: localized media name, formatted as UTF-8. E.g. "Guns'N'Roses: Civil War".*/
index f966579..84a6c4b 100644 (file)
@@ -274,3 +274,37 @@ char *pa_proplist_get_stream_group(pa_proplist *p, const char *prefix, const cha
 
     return t;
 }
+
+#ifdef __TIZEN__
+#define REMOTE_ACCESS_PERMISSION_DENIED    "denied"
+#define REMOTE_ACCESS_PERMISSION_ALLOWED   "allowed"
+
+static const char *access_str[] = { REMOTE_ACCESS_PERMISSION_DENIED, REMOTE_ACCESS_PERMISSION_ALLOWED };
+
+bool pa_proplist_has_remote_name(pa_proplist *p) {
+    bool is_remote = false;
+
+    if (!p)
+        return false;
+
+    is_remote = pa_proplist_contains(p, PA_PROP_MEDIA_REMOTE_NAME);
+
+    pa_log_info("Is remote : %s", pa_yes_no(is_remote));
+
+    return is_remote;
+}
+
+int pa_proplist_set_remote_access_permission(pa_proplist *p, bool allowed) {
+    if (!p)
+        return -1;
+
+    return pa_proplist_sets(p, PA_PROP_MEDIA_REMOTE_ACCESS, access_str[allowed]);
+}
+
+bool pa_proplist_remote_is_allowed(pa_proplist *p) {
+    if (!p)
+        return false;
+
+    return pa_safe_streq(pa_proplist_gets(p, PA_PROP_MEDIA_REMOTE_ACCESS), REMOTE_ACCESS_PERMISSION_ALLOWED);
+}
+#endif /* __TIZEN__ */
\ No newline at end of file
index 17f231f..3253f05 100644 (file)
 ***/
 
 #include <pulse/proplist.h>
+#ifdef __TIZEN__
+#include <stdbool.h>
+#endif
 
 void pa_init_proplist(pa_proplist *p);
 char *pa_proplist_get_stream_group(pa_proplist *pl, const char *prefix, const char *cache);
 
+#ifdef __TIZEN__
+bool pa_proplist_has_remote_name(pa_proplist *p);
+int pa_proplist_set_remote_access_permission(pa_proplist *p, bool allowed);
+bool pa_proplist_remote_is_allowed(pa_proplist *p);
+#endif /* __TIZEN__ */
+
 #endif
index acf347e..a4cc072 100644 (file)
@@ -49,6 +49,9 @@
 #include <pulsecore/macro.h>
 #include <pulsecore/play-memblockq.h>
 #include <pulsecore/flist.h>
+#ifdef __TIZEN__
+#include <pulsecore/proplist-util.h>
+#endif
 
 #include "sink.h"
 
@@ -2483,7 +2486,11 @@ void pa_sink_mute_changed(pa_sink *s, bool new_muted) {
 }
 
 /* Called from main thread */
+#ifdef __TIZEN__
+void pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p) {
+#else
 bool pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p) {
+#endif
     pa_sink_assert_ref(s);
     pa_assert_ctl_context();
 
@@ -2495,8 +2502,29 @@ bool pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p)
         pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
     }
 
+#ifndef __TIZEN__
     return true;
+#endif
+}
+
+#ifdef __TIZEN__
+/* Called from main thread */
+void pa_sink_update_proplist_remote_access_permission(pa_sink *s, bool allowed) {
+    pa_proplist* p = NULL;
+
+    pa_sink_assert_ref(s);
+    pa_assert_ctl_context();
+
+    p = pa_proplist_new();
+
+    if (pa_proplist_set_remote_access_permission(p, allowed) == 0)
+         pa_sink_update_proplist(s, PA_UPDATE_REPLACE, p);
+    else
+        pa_log_error("set remote access permission %d on proplist %p failed", allowed, p);
+
+    pa_proplist_free(p);
 }
+#endif /* __TIZEN__ */
 
 /* Called from main thread */
 /* FIXME -- this should be dropped and be merged into pa_sink_update_proplist() */
index c3f5ad3..481914c 100644 (file)
@@ -493,7 +493,12 @@ const pa_cvolume *pa_sink_get_volume(pa_sink *sink, bool force_refresh);
 void pa_sink_set_mute(pa_sink *sink, bool mute, bool save);
 bool pa_sink_get_mute(pa_sink *sink, bool force_refresh);
 
+#ifdef __TIZEN__
+void pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p);
+void pa_sink_update_proplist_remote_access_permission(pa_sink *s, bool allowed);
+#else
 bool pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p);
+#endif
 
 int pa_sink_set_port(pa_sink *s, const char *name, bool save);
 
index 23d39bf..16eef57 100644 (file)
@@ -43,6 +43,9 @@
 #include <pulsecore/log.h>
 #include <pulsecore/mix.h>
 #include <pulsecore/flist.h>
+#ifdef __TIZEN__
+#include <pulsecore/proplist-util.h>
+#endif
 
 #include "source.h"
 
@@ -2035,7 +2038,11 @@ void pa_source_mute_changed(pa_source *s, bool new_muted) {
 }
 
 /* Called from main thread */
+#ifdef __TIZEN__
+void pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_proplist *p) {
+#else
 bool pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_proplist *p) {
+#endif
     pa_source_assert_ref(s);
     pa_assert_ctl_context();
 
@@ -2047,8 +2054,29 @@ bool pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_proplist
         pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
     }
 
+#ifndef __TIZEN__
     return true;
+#endif
+}
+
+#ifdef __TIZEN__
+/* Called from main thread */
+void pa_source_update_proplist_remote_access_permission(pa_source *s, bool allowed) {
+    pa_proplist* p = NULL;
+
+    pa_source_assert_ref(s);
+    pa_assert_ctl_context();
+
+    p = pa_proplist_new();
+
+    if (pa_proplist_set_remote_access_permission(p, allowed) == 0)
+        pa_source_update_proplist(s, PA_UPDATE_REPLACE, p);
+    else
+        pa_log_error("set remote access permission %d on proplist %p failed", allowed, p);
+
+    pa_proplist_free(p);
 }
+#endif /* __TIZEN__ */
 
 /* Called from main thread */
 /* FIXME -- this should be dropped and be merged into pa_source_update_proplist() */
index 447f4a9..a37d0ef 100644 (file)
@@ -418,7 +418,12 @@ const pa_cvolume *pa_source_get_volume(pa_source *source, bool force_refresh);
 void pa_source_set_mute(pa_source *source, bool mute, bool save);
 bool pa_source_get_mute(pa_source *source, bool force_refresh);
 
+#ifdef __TIZEN__
+void pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_proplist *p);
+void pa_source_update_proplist_remote_access_permission(pa_source *s, bool allowed);
+#else
 bool pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_proplist *p);
+#endif
 
 int pa_source_set_port(pa_source *s, const char *name, bool save);