<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 18, 2019 at 10:37 AM Thomas Guillem <<a href="mailto:thomas@gllm.fr">thomas@gllm.fr</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u><div><div>This patch could splited in 2:<br></div><div> - First patch that use the common code without adding any new feature<br></div><div> - Second patch that add the new feature.<br></div><div><br></div></div></blockquote><div><br></div><div>Thanks, Thomas, Good idea, this is indeed what I have done: patch 2 is the common code without any new features,</div><div>and patch 3 adds the features.<br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div></div><div>On Mon, Mar 18, 2019, at 14:19, Aaron Boxer wrote:<br></div><blockquote type="cite" id="gmail-m_-2351094745769627948fastmail-quoted"><div dir="ltr"><div dir="ltr"><div>for latency, maximum bandwidth, etc.<br></div><div>---<br></div><div> modules/access/srt.c        | 132 ++++++++++++++++++-----------------<br></div><div> modules/access_output/srt.c | 133 ++++++++++++++++++++----------------<br></div><div> 2 files changed, 142 insertions(+), 123 deletions(-)<br></div><div><br></div><div>diff --git a/modules/access/srt.c b/modules/access/srt.c<br></div><div>index d8d8cbe659..2cf800a914 100644<br></div><div>--- a/modules/access/srt.c<br></div><div>+++ b/modules/access/srt.c<br></div><div>@@ -1,5 +1,5 @@<br></div><div> /*****************************************************************************<br></div><div>- * srt.c: SRT (Secure Reliable Transport) input module<br></div><div>+ * srt.c: SRT (Secure Reliable Transport) access module<br></div><div>  *****************************************************************************<br></div><div>  * Copyright (C) 2017-2018, Collabora Ltd.<br></div><div>  * Copyright (C) 2018, Haivision Systems Inc.<br></div><div>@@ -21,43 +21,17 @@<br></div><div>  * along with this program; if not, write to the Free Software Foundation,<br></div><div>  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.<br></div><div>  *****************************************************************************/<br></div><div>+#include "srt_common.h"<br></div><div> <br></div><div>-#ifdef HAVE_CONFIG_H<br></div><div>-# include "config.h"<br></div><div>-#endif<br></div><div>-<br></div><div>-#include <vlc_common.h><br></div><div>-#include <vlc_interrupt.h><br></div><div> #include <vlc_fs.h><br></div><div> #include <vlc_plugin.h><br></div><div> #include <vlc_access.h><br></div><div>+#include <vlc_interrupt.h><br></div><div> <br></div><div> #include <vlc_network.h><br></div><div> #include <vlc_url.h><br></div><div> <br></div><div>-#include <srt/srt.h><br></div><div>-<br></div><div>-/* libsrt defines default packet size as 1316 internally<br></div><div>- * so srt module takes same value. */<br></div><div>-#define SRT_DEFAULT_CHUNK_SIZE 1316<br></div><div>-/* Minimum/Maximum chunks to allow reading at a time from libsrt */<br></div><div>-#define SRT_MIN_CHUNKS_TRYREAD 10<br></div><div>-#define SRT_MAX_CHUNKS_TRYREAD 100<br></div><div>-/* The default timeout is -1 (infinite) */<br></div><div>-#define SRT_DEFAULT_POLL_TIMEOUT -1<br></div><div>-/* The default latency is 125<br></div><div>- * which uses srt library internally */<br></div><div>-#define SRT_DEFAULT_LATENCY 125<br></div><div>-/* Crypto key length in bytes. */<br></div><div>-#define SRT_KEY_LENGTH_TEXT N_("Crypto key length in bytes")<br></div><div>-#define SRT_DEFAULT_KEY_LENGTH 16<br></div><div>-static const int srt_key_lengths[] = {<br></div><div>-    16, 24, 32,<br></div><div>-};<br></div><div>-<br></div><div>-static const char *const srt_key_length_names[] = {<br></div><div>-    N_("16 bytes"), N_("24 bytes"), N_("32 bytes"),<br></div><div>-};<br></div><div>+<br></div><div> <br></div><div> typedef struct<br></div><div> {<br></div><div>@@ -70,6 +44,8 @@ typedef struct<br></div><div>     int         i_chunks; /* Number of chunks to allocate in the next read */<br></div><div> } stream_sys_t;<br></div><div> <br></div><div>+<br></div><div>+<br></div><div> static void srt_wait_interrupted(void *p_data)<br></div><div> {<br></div><div>     stream_t *p_stream = p_data;<br></div><div>@@ -115,10 +91,14 @@ static int Control(stream_t *p_stream, int i_query, va_list args)<br></div><div> <br></div><div> static bool srt_schedule_reconnect(stream_t *p_stream)<br></div><div> {<br></div><div>-    int         i_latency;<br></div><div>-    int         stat;<br></div><div>-    char        *psz_passphrase = NULL;<br></div><div>-<br></div><div>+    vlc_object_t *strm_obj = (vlc_object_t *) p_stream;<br></div><div>+    int i_latency=var_InheritInteger( p_stream, SRT_PARAM_LATENCY );<br></div><div>+    int i_payload_size = var_InheritInteger( p_stream, SRT_PARAM_PAYLOAD_SIZE );<br></div><div>+    int stat;<br></div><div>+    char *psz_passphrase = var_InheritString( p_stream, SRT_PARAM_PASSPHRASE );<br></div><div>+    bool passphrase_needs_free = true;<br></div><div>+    char *url = NULL;<br></div><div>+    srt_params_t params;<br></div><div>     struct addrinfo hints = {<br></div><div>         .ai_socktype = SOCK_DGRAM,<br></div><div>     }, *res = NULL;<br></div><div>@@ -153,6 +133,21 @@ static bool srt_schedule_reconnect(stream_t *p_stream)<br></div><div>         goto out;<br></div><div>     }<br></div><div> <br></div><div>+    if (p_stream->psz_url) {<br></div><div>+        url = strdup( p_stream->psz_url );<br></div><div>+        if (srt_parse_url( url, &params )) {<br></div><div>+            if (params.latency != -1)<br></div><div>+                i_latency = params.latency;<br></div><div>+            if (params.payload_size != -1)<br></div><div>+                i_payload_size = params.payload_size;<br></div><div>+            if (params.passphrase != NULL) {<br></div><div>+                free( psz_passphrase );<br></div><div>+                passphrase_needs_free = false;<br></div><div>+                psz_passphrase = (char *) params.passphrase;<br></div><div>+            }<br></div><div>+        }<br></div><div>+    }<br></div><div>+<br></div><div>     /* Make SRT non-blocking */<br></div><div>     srt_setsockopt( p_sys->sock, 0, SRTO_SNDSYN,<br></div><div>         &(bool) { false }, sizeof( bool ) );<br></div><div>@@ -168,20 +163,25 @@ static bool srt_schedule_reconnect(stream_t *p_stream)<br></div><div>         &(int) { 0 }, sizeof( int ) );<br></div><div> <br></div><div>     /* Set latency */<br></div><div>-    i_latency = var_InheritInteger( p_stream, "latency" );<br></div><div>-    srt_setsockopt( p_sys->sock, 0, SRTO_TSBPDDELAY,<br></div><div>-        &i_latency, sizeof( int ) );<br></div><div>+    srt_set_socket_option( strm_obj, SRT_PARAM_LATENCY, p_sys->sock,<br></div><div>+            SRTO_TSBPDDELAY, &i_latency, sizeof(i_latency) );<br></div><div> <br></div><div>-    psz_passphrase = var_InheritString( p_stream, "passphrase" );<br></div><div>-    if ( psz_passphrase != NULL && psz_passphrase[0] != '\0')<br></div><div>-    {<br></div><div>-        int i_key_length = var_InheritInteger( p_stream, "key-length" );<br></div><div>-        srt_setsockopt( p_sys->sock, 0, SRTO_PASSPHRASE,<br></div><div>-            psz_passphrase, strlen( psz_passphrase ) );<br></div><div>-        srt_setsockopt( p_sys->sock, 0, SRTO_PBKEYLEN,<br></div><div>-            &i_key_length, sizeof( int ) );<br></div><div>+    /* set passphrase */<br></div><div>+    if (psz_passphrase != NULL && psz_passphrase[0] != '\0') {<br></div><div>+        int i_key_length = var_InheritInteger( p_stream, SRT_PARAM_KEY_LENGTH );<br></div><div>+<br></div><div>+        srt_set_socket_option( strm_obj, SRT_PARAM_KEY_LENGTH, p_sys->sock,<br></div><div>+                SRTO_PBKEYLEN, &i_key_length, sizeof(i_key_length) );<br></div><div>+<br></div><div>+        srt_set_socket_option( strm_obj, SRT_PARAM_PASSPHRASE, p_sys->sock,<br></div><div>+                SRTO_PASSPHRASE, &psz_passphrase, sizeof(psz_passphrase) );<br></div><div>     }<br></div><div> <br></div><div>+    /* set maximum payload size */<br></div><div>+    srt_set_socket_option( strm_obj, SRT_PARAM_PAYLOAD_SIZE, p_sys->sock,<br></div><div>+            SRTO_PAYLOADSIZE, &i_payload_size, sizeof(i_payload_size) );<br></div><div>+<br></div><div>+<br></div><div>     srt_epoll_add_usock( p_sys->i_poll_id, p_sys->sock,<br></div><div>         &(int) { SRT_EPOLL_ERR | SRT_EPOLL_IN });<br></div><div> <br></div><div>@@ -189,11 +189,10 @@ static bool srt_schedule_reconnect(stream_t *p_stream)<br></div><div>     msg_Dbg( p_stream, "Schedule SRT connect (dest addresss: %s, port: %d).",<br></div><div>         p_sys->psz_host, p_sys->i_port);<br></div><div> <br></div><div>-    stat = srt_connect( p_sys->sock, res->ai_addr, res->ai_addrlen);<br></div><div>-    if ( stat == SRT_ERROR )<br></div><div>-    {<br></div><div>+    stat = srt_connect( p_sys->sock, res->ai_addr, res->ai_addrlen );<br></div><div>+    if (stat == SRT_ERROR) {<br></div><div>         msg_Err( p_stream, "Failed to connect to server (reason: %s)",<br></div><div>-                 srt_getlasterror_str() );<br></div><div>+                srt_getlasterror_str() );<br></div><div>         failed = true;<br></div><div>     }<br></div><div> <br></div><div>@@ -210,8 +209,10 @@ out:<br></div><div>         p_sys->sock = SRT_INVALID_SOCK;<br></div><div>     }<br></div><div> <br></div><div>+    if (passphrase_needs_free)<br></div><div>+        free( psz_passphrase );<br></div><div>     freeaddrinfo( res );<br></div><div>-    free( psz_passphrase );<br></div><div>+    free( url );<br></div><div> <br></div><div>     return !failed;<br></div><div> }<br></div><div>@@ -413,23 +414,28 @@ static void Close(vlc_object_t *p_this)<br></div><div> <br></div><div> /* Module descriptor */<br></div><div> vlc_module_begin ()<br></div><div>-    set_shortname( N_("SRT") )<br></div><div>-    set_description( N_("SRT input") )<br></div><div>+    set_shortname( N_( "SRT" ) )<br></div><div>+    set_description( N_( "SRT input" ) )<br></div><div>     set_category( CAT_INPUT )<br></div><div>     set_subcategory( SUBCAT_INPUT_ACCESS )<br></div><div> <br></div><div>-    add_integer( "chunk-size", SRT_DEFAULT_CHUNK_SIZE,<br></div><div>-            N_("SRT chunk size (bytes)"), NULL, true )<br></div><div>-    add_integer( "poll-timeout", SRT_DEFAULT_POLL_TIMEOUT,<br></div><div>-            N_("Return poll wait after timeout milliseconds (-1 = infinite)"), NULL, true )<br></div><div>-    add_integer( "latency", SRT_DEFAULT_LATENCY, N_("SRT latency (ms)"), NULL, true )<br></div><div>-    add_password("passphrase", "", N_("Password for stream encryption"), NULL)<br></div><div>-    add_integer( "key-length", SRT_DEFAULT_KEY_LENGTH,<br></div><div>+    add_integer( SRT_PARAM_CHUNK_SIZE, SRT_DEFAULT_CHUNK_SIZE,<br></div><div>+            N_( "SRT chunk size (bytes)" ), NULL, true )<br></div><div>+    add_integer( SRT_PARAM_POLL_TIMEOUT, SRT_DEFAULT_POLL_TIMEOUT,<br></div><div>+            N_( "Return poll wait after timeout milliseconds (-1 = infinite)" ),<br></div><div>+            NULL, true )<br></div><div>+    add_integer( SRT_PARAM_LATENCY, SRT_DEFAULT_LATENCY,<br></div><div>+            N_( "SRT latency (ms)" ), NULL, true )<br></div><div>+    add_password( SRT_PARAM_PASSPHRASE, "",<br></div><div>+            N_( "Password for stream encryption" ), NULL )<br></div><div>+    add_integer( SRT_PARAM_PAYLOAD_SIZE, SRT_DEFAULT_PAYLOAD_SIZE,<br></div><div>+            N_( "SRT maximum payload size (bytes)" ), NULL, true )<br></div><div>+    add_integer( SRT_PARAM_KEY_LENGTH, SRT_DEFAULT_KEY_LENGTH,<br></div><div>             SRT_KEY_LENGTH_TEXT, SRT_KEY_LENGTH_TEXT, false )<br></div><div>-        change_integer_list( srt_key_lengths, srt_key_length_names )<br></div><div>+    change_integer_list( srt_key_lengths, srt_key_length_names )<br></div><div> <br></div><div>-    set_capability( "access", 0 )<br></div><div>-    add_shortcut( "srt" )<br></div><div>+    set_capability("access", 0)<br></div><div>+    add_shortcut("srt")<br></div><div> <br></div><div>-    set_callbacks( Open, Close )<br></div><div>+    set_callbacks(Open, Close)<br></div><div> vlc_module_end ()<br></div><div>diff --git a/modules/access_output/srt.c b/modules/access_output/srt.c<br></div><div>index c3fdce42b1..5b23f6c994 100644<br></div><div>--- a/modules/access_output/srt.c<br></div><div>+++ b/modules/access_output/srt.c<br></div><div>@@ -1,5 +1,5 @@<br></div><div> /*****************************************************************************<br></div><div>- * srt.c: SRT (Secure Reliable Transport) output module<br></div><div>+ * srt.c: SRT (Secure Reliable Transport) access_output module<br></div><div>  *****************************************************************************<br></div><div>  * Copyright (C) 2017-2018, Collabora Ltd.<br></div><div>  * Copyright (C) 2018, Haivision Systems Inc.<br></div><div>@@ -21,11 +21,6 @@<br></div><div>  * along with this program; if not, write to the Free Software Foundation,<br></div><div>  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.<br></div><div>  *****************************************************************************/<br></div><div>-<br></div><div>-#ifdef HAVE_CONFIG_H<br></div><div>-# include "config.h"<br></div><div>-#endif<br></div><div>-<br></div><div> #include <vlc_common.h><br></div><div> #include <vlc_interrupt.h><br></div><div> #include <vlc_fs.h><br></div><div>@@ -34,28 +29,7 @@<br></div><div> #include <vlc_block.h><br></div><div> #include <vlc_network.h><br></div><div> <br></div><div>-#include <srt/srt.h><br></div><div>-<br></div><div>-/* libsrt defines default packet size as 1316 internally<br></div><div>- * so srt module takes same value. */<br></div><div>-#define SRT_DEFAULT_CHUNK_SIZE 1316<br></div><div>-/* libsrt tutorial uses 9000 as a default binding port */<br></div><div>-#define SRT_DEFAULT_PORT 9000<br></div><div>-/* The default timeout is -1 (infinite) */<br></div><div>-#define SRT_DEFAULT_POLL_TIMEOUT 100<br></div><div>-/* The default latency is 125<br></div><div>- * which uses srt library internally */<br></div><div>-#define SRT_DEFAULT_LATENCY 125<br></div><div>-/* Crypto key length in bytes. */<br></div><div>-#define SRT_KEY_LENGTH_TEXT N_("Crypto key length in bytes")<br></div><div>-#define SRT_DEFAULT_KEY_LENGTH 16<br></div><div>-static const int srt_key_lengths[] = {<br></div><div>-    16, 24, 32,<br></div><div>-};<br></div><div>-<br></div><div>-static const char *const srt_key_length_names[] = {<br></div><div>-    N_("16 bytes"), N_("24 bytes"), N_("32 bytes"),<br></div><div>-};<br></div><div>+#include <srt_common.h><br></div><div> <br></div><div> typedef struct<br></div><div> {<br></div><div>@@ -86,12 +60,18 @@ static void srt_wait_interrupted(void *p_data)<br></div><div> <br></div><div> static bool srt_schedule_reconnect(sout_access_out_t *p_access)<br></div><div> {<br></div><div>-    char                    *psz_dst_addr = NULL;<br></div><div>-    int                      i_dst_port;<br></div><div>-    int                      i_latency;<br></div><div>-    int                      stat;<br></div><div>-    char                    *psz_passphrase = NULL;<br></div><div>-<br></div><div>+    vlc_object_t *access_obj = (vlc_object_t *) p_access;<br></div><div>+    int stat;<br></div><div>+    char *psz_dst_addr = NULL;<br></div><div>+    int i_dst_port;<br></div><div>+    int i_latency=var_InheritInteger( p_access, SRT_PARAM_LATENCY );<br></div><div>+    int i_payload_size = var_InheritInteger( p_access, SRT_PARAM_PAYLOAD_SIZE );<br></div><div>+    char *psz_passphrase = var_InheritString( p_access, SRT_PARAM_PASSPHRASE );<br></div><div>+    bool passphrase_needs_free = true;<br></div><div>+    int i_max_bandwidth_limit =<br></div><div>+    var_InheritInteger( p_access, SRT_PARAM_BANDWIDTH_OVERHEAD_LIMIT );<br></div><div>+    char *url = NULL;<br></div><div>+    srt_params_t params;<br></div><div>     struct addrinfo hints = {<br></div><div>         .ai_socktype = SOCK_DGRAM,<br></div><div>     }, *res = NULL;<br></div><div>@@ -99,8 +79,6 @@ static bool srt_schedule_reconnect(sout_access_out_t *p_access)<br></div><div>     sout_access_out_sys_t *p_sys = p_access->p_sys;<br></div><div>     bool failed = false;<br></div><div> <br></div><div>-    psz_passphrase = var_InheritString( p_access, "passphrase" );<br></div><div>-<br></div><div>     i_dst_port = SRT_DEFAULT_PORT;<br></div><div>     char *psz_parser = psz_dst_addr = strdup( p_access->psz_path );<br></div><div>     if( !psz_dst_addr )<br></div><div>@@ -146,6 +124,21 @@ static bool srt_schedule_reconnect(sout_access_out_t *p_access)<br></div><div>         goto out;<br></div><div>     }<br></div><div> <br></div><div>+    if (psz_dst_addr) {<br></div><div>+        url = strdup( psz_dst_addr );<br></div><div>+        if (srt_parse_url( url, &params )) {<br></div><div>+            if (params.latency != -1)<br></div><div>+                i_latency = params.latency;<br></div><div>+            if (params.payload_size != -1)<br></div><div>+                i_payload_size = params.payload_size;<br></div><div>+            if (params.passphrase != NULL) {<br></div><div>+                free( psz_passphrase );<br></div><div>+                passphrase_needs_free = false;<br></div><div>+                psz_passphrase = (char *) params.passphrase;<br></div><div>+            }<br></div><div>+        }<br></div><div>+    }<br></div><div>+<br></div><div>     /* Make SRT non-blocking */<br></div><div>     srt_setsockopt( p_sys->sock, 0, SRTO_SNDSYN,<br></div><div>         &(bool) { false }, sizeof( bool ) );<br></div><div>@@ -161,19 +154,29 @@ static bool srt_schedule_reconnect(sout_access_out_t *p_access)<br></div><div>         &(int) { 1 }, sizeof( int ) );<br></div><div> <br></div><div>     /* Set latency */<br></div><div>-    i_latency = var_InheritInteger( p_access, "latency" );<br></div><div>-    srt_setsockopt( p_sys->sock, 0, SRTO_TSBPDDELAY,<br></div><div>-        &i_latency, sizeof( int ) );<br></div><div>+    srt_set_socket_option( access_obj, SRT_PARAM_LATENCY, p_sys->sock,<br></div><div>+            SRTO_TSBPDDELAY, &i_latency, sizeof(i_latency) );<br></div><div> <br></div><div>-    if ( psz_passphrase != NULL && psz_passphrase[0] != '\0')<br></div><div>-    {<br></div><div>-        int i_key_length = var_InheritInteger( p_access, "key-length" );<br></div><div>-        srt_setsockopt( p_sys->sock, 0, SRTO_PASSPHRASE,<br></div><div>-            psz_passphrase, strlen( psz_passphrase ) );<br></div><div>-        srt_setsockopt( p_sys->sock, 0, SRTO_PBKEYLEN,<br></div><div>-            &i_key_length, sizeof( int ) );<br></div><div>+    /* set passphrase */<br></div><div>+    if (psz_passphrase != NULL && psz_passphrase[0] != '\0') {<br></div><div>+        int i_key_length = var_InheritInteger( access_obj, SRT_PARAM_KEY_LENGTH );<br></div><div>+<br></div><div>+        srt_set_socket_option( access_obj, SRT_PARAM_KEY_LENGTH, p_sys->sock,<br></div><div>+                SRTO_PBKEYLEN, &i_key_length, sizeof(i_key_length) );<br></div><div>+<br></div><div>+        srt_set_socket_option( access_obj, SRT_PARAM_PASSPHRASE, p_sys->sock,<br></div><div>+                SRTO_PASSPHRASE, &psz_passphrase, sizeof(psz_passphrase) );<br></div><div>     }<br></div><div> <br></div><div>+    /* set maximumu payload size */<br></div><div>+    srt_set_socket_option( access_obj, SRT_PARAM_PAYLOAD_SIZE, p_sys->sock,<br></div><div>+            SRTO_PAYLOADSIZE, &i_payload_size, sizeof(i_payload_size) );<br></div><div>+<br></div><div>+    /* set maximum bandwidth limit*/<br></div><div>+    srt_set_socket_option( access_obj, SRT_PARAM_BANDWIDTH_OVERHEAD_LIMIT,<br></div><div>+            p_sys->sock, SRTO_OHEADBW, &i_max_bandwidth_limit,<br></div><div>+            sizeof(i_max_bandwidth_limit) );<br></div><div>+<br></div><div>     srt_setsockopt( p_sys->sock, 0, SRTO_SENDER, &(int) { 1 }, sizeof(int) );<br></div><div> <br></div><div>     srt_epoll_add_usock( p_sys->i_poll_id, p_sys->sock,<br></div><div>@@ -199,8 +202,10 @@ out:<br></div><div>         p_sys->sock = SRT_INVALID_SOCK;<br></div><div>     }<br></div><div> <br></div><div>-    free( psz_passphrase );<br></div><div>+    if (passphrase_needs_free)<br></div><div>+        free( psz_passphrase );<br></div><div>     free( psz_dst_addr );<br></div><div>+    free( url );<br></div><div>     freeaddrinfo( res );<br></div><div> <br></div><div>     return !failed;<br></div><div>@@ -210,8 +215,8 @@ static ssize_t Write( sout_access_out_t *p_access, block_t *p_buffer )<br></div><div> {<br></div><div>     sout_access_out_sys_t *p_sys = p_access->p_sys;<br></div><div>     int i_len = 0;<br></div><div>-    size_t i_chunk_size = var_InheritInteger( p_access, "chunk-size" );<br></div><div>-    int i_poll_timeout = var_InheritInteger( p_access, "poll-timeout" );<br></div><div>+    size_t i_chunk_size = var_InheritInteger( p_access, SRT_PARAM_CHUNK_SIZE);<br></div><div>+    int i_poll_timeout = var_InheritInteger( p_access, SRT_PARAM_POLL_TIMEOUT );<br></div><div>     bool b_interrupted = false;<br></div><div> <br></div><div>     vlc_interrupt_register( srt_wait_interrupted, p_access);<br></div><div>@@ -421,20 +426,28 @@ static void Close( vlc_object_t * p_this )<br></div><div> <br></div><div> /* Module descriptor */<br></div><div> vlc_module_begin()<br></div><div>-    set_shortname( N_("SRT") )<br></div><div>-    set_description( N_("SRT stream output") )<br></div><div>+    set_shortname( N_( "SRT" ) )<br></div><div>+    set_description( N_( "SRT stream output" ) )<br></div><div>     set_category( CAT_SOUT )<br></div><div>     set_subcategory( SUBCAT_SOUT_ACO )<br></div><div> <br></div><div>-    add_integer( "chunk-size", SRT_DEFAULT_CHUNK_SIZE,<br></div><div>-            N_("SRT chunk size (bytes)"), NULL, true )<br></div><div>-    add_integer( "poll-timeout", SRT_DEFAULT_POLL_TIMEOUT,<br></div><div>-            N_("Return poll wait after timeout milliseconds (-1 = infinite)"), NULL, true )<br></div><div>-    add_integer( "latency", SRT_DEFAULT_LATENCY, N_("SRT latency (ms)"), NULL, true )<br></div><div>-    add_password("passphrase", "", N_("Password for stream encryption"), NULL)<br></div><div>-    add_integer( "key-length", SRT_DEFAULT_KEY_LENGTH,<br></div><div>-            SRT_KEY_LENGTH_TEXT, SRT_KEY_LENGTH_TEXT, false )<br></div><div>-        change_integer_list( srt_key_lengths, srt_key_length_names )<br></div><div>+    add_integer( SRT_PARAM_CHUNK_SIZE, SRT_DEFAULT_CHUNK_SIZE,<br></div><div>+            N_( "SRT chunk size (bytes)" ), NULL, true )<br></div><div>+    add_integer( SRT_PARAM_POLL_TIMEOUT, SRT_DEFAULT_POLL_TIMEOUT,<br></div><div>+            N_( "Return poll wait after timeout milliseconds (-1 = infinite)" ),<br></div><div>+            NULL, true )<br></div><div>+    add_integer( SRT_PARAM_LATENCY, SRT_DEFAULT_LATENCY, N_( "SRT latency (ms)" ),<br></div><div>+            NULL, true )<br></div><div>+    add_password( SRT_PARAM_PASSPHRASE, "", N_( "Password for stream encryption" ),<br></div><div>+            NULL )<br></div><div>+    add_integer( SRT_PARAM_PAYLOAD_SIZE, SRT_DEFAULT_PAYLOAD_SIZE,<br></div><div>+            N_( "SRT maximum payload size (bytes)" ), NULL, true )<br></div><div>+    add_integer( SRT_PARAM_BANDWIDTH_OVERHEAD_LIMIT,<br></div><div>+            SRT_DEFAULT_BANDWIDTH_OVERHEAD_LIMIT,<br></div><div>+            N_( "SRT maximum bandwidth ceiling (bytes)" ), NULL, true )<br></div><div>+    add_integer( SRT_PARAM_KEY_LENGTH, SRT_DEFAULT_KEY_LENGTH, SRT_KEY_LENGTH_TEXT,<br></div><div>+            SRT_KEY_LENGTH_TEXT, false )<br></div><div>+    change_integer_list( srt_key_lengths, srt_key_length_names )<br></div><div> <br></div><div>     set_capability( "sout access", 0 )<br></div><div>     add_shortcut( "srt" )<br></div><div>-- <br></div><div>2.17.1<br></div></div></div><div>_______________________________________________<br></div><div>vlc-devel mailing list<br></div><div>To unsubscribe or modify your subscription options:<br></div><div><a href="https://mailman.videolan.org/listinfo/vlc-devel" target="_blank">https://mailman.videolan.org/listinfo/vlc-devel</a><br></div></blockquote><div><br></div></div>_______________________________________________<br>
vlc-devel mailing list<br>
To unsubscribe or modify your subscription options:<br>
<a href="https://mailman.videolan.org/listinfo/vlc-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/vlc-devel</a></blockquote></div></div>