[PATCH] Add configurable RTP stream name

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Path add configuration option 'stream_name' for stream/session name
So user will see it on receiver side as RTP Strean ($stream_name)

ex: load-module module-rtp-send source=rtp.monitor stream_name=MyServerMedia
---
 src/modules/rtp/module-rtp-send.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/modules/rtp/module-rtp-send.c b/src/modules/rtp/module-rtp-send.c
index 61900c01..a65f1ba3 100644
--- a/src/modules/rtp/module-rtp-send.c
+++ b/src/modules/rtp/module-rtp-send.c
@@ -66,6 +66,7 @@ PA_MODULE_USAGE(
         "loop=<loopback to local host?> "
         "ttl=<ttl value> "
         "inhibit_auto_suspend=<always|never|only_with_non_monitor_sources>"
+        "stream_name=<name of the stream>"
 );

 #define DEFAULT_PORT 46000
@@ -90,6 +91,7 @@ static const char* const valid_modargs[] = {
     "loop",
     "ttl",
     "inhibit_auto_suspend",
+    "stream_name",
     NULL
 };

@@ -229,6 +231,7 @@ int pa__init(pa_module*m) {
     bool loop = false;
     enum inhibit_auto_suspend inhibit_auto_suspend = INHIBIT_AUTO_SUSPEND_ONLY_WITH_NON_MONITOR_SOURCES;
     const char *inhibit_auto_suspend_str;
+    const char *stream_name = NULL;
     pa_source_output_new_data data;

     pa_assert(m);
@@ -261,6 +264,8 @@ int pa__init(pa_module*m) {
         }
     }

+    stream_name = pa_modargs_get_value(ma, "stream_name", NULL);
+
     ss = s->sample_spec;
     pa_rtp_sample_spec_fixup(&ss);
     cm = s->channel_map;
@@ -469,23 +474,27 @@ int pa__init(pa_module*m) {
     k = sizeof(sa_dst);
     pa_assert_se((r = getsockname(fd, (struct sockaddr*) &sa_dst, &k)) >= 0);

-    n = pa_sprintf_malloc("PulseAudio RTP Stream on %s", pa_get_fqdn(hn, sizeof(hn)));
+    n = NULL;
+    if(stream_name == NULL) {
+        n = pa_sprintf_malloc("PulseAudio RTP Stream on %s", pa_get_fqdn(hn, sizeof(hn)));
+        stream_name = n;
+    }

     if (af == AF_INET) {
         p = pa_sdp_build(af,
                      (void*) &((struct sockaddr_in*) &sa_dst)->sin_addr,
                      (void*) &dst_sa4.sin_addr,
-                     n, (uint16_t) port, payload, &ss);
+                     stream_name, (uint16_t) port, payload, &ss);
 #ifdef HAVE_IPV6
     } else {
         p = pa_sdp_build(af,
                      (void*) &((struct sockaddr_in6*) &sa_dst)->sin6_addr,
                      (void*) &dst_sa6.sin6_addr,
-                     n, (uint16_t) port, payload, &ss);
+                     stream_name, (uint16_t) port, payload, &ss);
 #endif
     }

-    pa_xfree(n);
+    pa_xfree(n); /* safe for NULL */

     pa_rtp_context_init_send(&u->rtp_context, fd, m->core->cookie, payload, pa_frame_size(&ss));
     pa_sap_context_init_send(&u->sap_context, sap_fd, p);
--
2.18.0



[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux