srt: add stream ID option
[vlc.git] / modules / access / srt_common.h
1 /*****************************************************************************
2  * srt_common.h: SRT (Secure Reliable Transport) access module
3  *****************************************************************************
4  *
5  * Copyright (C) 2019, Haivision Systems Inc.
6  *
7  * Author: Aaron Boxer <aaron.boxer@collabora.com>
8  *
9  * This program is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23 #ifndef SRT_COMMON_H
24 #define SRT_COMMON_H 1
25
26 #ifdef HAVE_CONFIG_H
27 # include "config.h"
28 #endif
29
30 #include <vlc_common.h>
31 #include <srt/srt.h>
32
33
34 /* SRT parameter names */
35 #define SRT_PARAM_LATENCY                     "latency"
36 #define SRT_PARAM_PASSPHRASE                  "passphrase"
37 #define SRT_PARAM_PAYLOAD_SIZE                "payload-size"
38 #define SRT_PARAM_BANDWIDTH_OVERHEAD_LIMIT    "bandwidth-overhead-limit"
39 #define SRT_PARAM_CHUNK_SIZE                  "chunk-size"
40 #define SRT_PARAM_POLL_TIMEOUT                "poll-timeout"
41 #define SRT_PARAM_KEY_LENGTH                  "key-length"
42 #define SRT_PARAM_STREAMID                    "streamid"
43
44
45 #define SRT_DEFAULT_BANDWIDTH_OVERHEAD_LIMIT 25
46 /* libsrt defines default packet size as 1316 internally
47  * so srt module takes same value. */
48 #define SRT_DEFAULT_CHUNK_SIZE SRT_LIVE_DEF_PLSIZE
49 /* libsrt tutorial uses 9000 as a default binding port */
50 #define SRT_DEFAULT_PORT 9000
51 /* Minimum/Maximum chunks to allow reading at a time from libsrt */
52 #define SRT_MIN_CHUNKS_TRYREAD 10
53 #define SRT_MAX_CHUNKS_TRYREAD 100
54 /* The default timeout is -1 (infinite) */
55 #define SRT_DEFAULT_POLL_TIMEOUT -1
56 /* The default latency which srt library uses internally */
57 #define SRT_DEFAULT_LATENCY       SRT_LIVE_DEF_LATENCY_MS
58 #define SRT_DEFAULT_PAYLOAD_SIZE  SRT_LIVE_DEF_PLSIZE
59 /* Crypto key length in bytes. */
60 #define SRT_KEY_LENGTH_TEXT N_("Crypto key length in bytes")
61 #define SRT_DEFAULT_KEY_LENGTH 16
62 static const int srt_key_lengths[] = { 16, 24, 32, };
63
64 extern const char * const srt_key_length_names[];
65
66 typedef struct srt_params {
67     int latency;
68     const char* passphrase;
69     int key_length;
70     int payload_size;
71     int bandwidth_overhead_limit;
72     const char* streamid;
73 } srt_params_t;
74
75 bool srt_parse_url(char* url, srt_params_t* params);
76
77 int srt_set_socket_option(vlc_object_t *this, const char *srt_param,
78         SRTSOCKET u, SRT_SOCKOPT opt, const void *optval, int optlen);
79
80 #endif