You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.6 KiB
98 lines
3.6 KiB
/*****************************************************************************
|
|
* srt_common.h: SRT (Secure Reliable Transport) access module
|
|
*****************************************************************************
|
|
*
|
|
* Copyright (C) 2019, Haivision Systems Inc.
|
|
*
|
|
* Author: Aaron Boxer <aaron.boxer@collabora.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation; either version 2.1 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
|
*****************************************************************************/
|
|
#ifndef SRT_COMMON_H
|
|
#define SRT_COMMON_H 1
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
# include "config.h"
|
|
#endif
|
|
|
|
#include <vlc_common.h>
|
|
#include <srt/srt.h>
|
|
|
|
|
|
/* SRT parameter names */
|
|
#define SRT_PARAM_LATENCY "latency"
|
|
#define SRT_PARAM_PASSPHRASE "passphrase"
|
|
#define SRT_PARAM_PAYLOAD_SIZE "payload-size"
|
|
#define SRT_PARAM_BANDWIDTH_OVERHEAD_LIMIT "bandwidth-overhead-limit"
|
|
#define SRT_PARAM_CHUNK_SIZE "chunk-size"
|
|
#define SRT_PARAM_POLL_TIMEOUT "poll-timeout"
|
|
#define SRT_PARAM_KEY_LENGTH "key-length"
|
|
#define SRT_PARAM_STREAMID "streamid"
|
|
#define SRT_PARAM_MODE "mode"
|
|
|
|
/* SRT modes */
|
|
#define SRT_MODE_CALLER_TEXT "caller"
|
|
#define SRT_MODE_LISTENER_TEXT "listener"
|
|
|
|
typedef enum srt_mode {
|
|
SRT_MODE_CALLER,
|
|
SRT_MODE_LISTENER,
|
|
} srt_mode_t;
|
|
|
|
|
|
#define SRT_DEFAULT_BANDWIDTH_OVERHEAD_LIMIT 25
|
|
/* libsrt defines default packet size as 1316 internally
|
|
* so srt module takes same value. */
|
|
#define SRT_DEFAULT_CHUNK_SIZE SRT_LIVE_DEF_PLSIZE
|
|
/* libsrt tutorial uses 9000 as a default binding port */
|
|
#define SRT_DEFAULT_PORT 9000
|
|
/* Minimum/Maximum chunks to allow reading at a time from libsrt */
|
|
#define SRT_MIN_CHUNKS_TRYREAD 10
|
|
#define SRT_MAX_CHUNKS_TRYREAD 100
|
|
/* The default timeout is -1 (infinite) */
|
|
#define SRT_DEFAULT_POLL_TIMEOUT -1
|
|
/* The default latency which srt library uses internally */
|
|
#define SRT_DEFAULT_LATENCY SRT_LIVE_DEF_LATENCY_MS
|
|
#define SRT_DEFAULT_PAYLOAD_SIZE SRT_LIVE_DEF_PLSIZE
|
|
/* Crypto key length in bytes. */
|
|
#define SRT_KEY_LENGTH_TEXT N_("Crypto key length in bytes")
|
|
#define SRT_DEFAULT_KEY_LENGTH 16
|
|
static const int srt_key_lengths[] = { 16, 24, 32, };
|
|
static const char * const srt_key_length_names[] = { N_( "16 bytes" ), N_(
|
|
"24 bytes" ), N_( "32 bytes" ), };
|
|
/* SRT modes */
|
|
#define SRT_MODE_TEXT N_( "SRT mode" )
|
|
#define SRT_DEFAULT_MODE SRT_MODE_CALLER
|
|
static const char * const srt_mode_names[] = { SRT_MODE_CALLER_TEXT,
|
|
SRT_MODE_LISTENER_TEXT, };
|
|
static const int srt_mode_values[] = { SRT_MODE_CALLER,
|
|
SRT_MODE_LISTENER, };
|
|
|
|
typedef struct srt_params {
|
|
int latency;
|
|
const char* passphrase;
|
|
int key_length;
|
|
int payload_size;
|
|
int bandwidth_overhead_limit;
|
|
const char* streamid;
|
|
srt_mode_t mode;
|
|
} srt_params_t;
|
|
|
|
bool srt_parse_url(char* url, srt_params_t* params);
|
|
|
|
int srt_set_socket_option(vlc_object_t *this, const char *srt_param,
|
|
SRTSOCKET u, SRT_SOCKOPT opt, const void *optval, int optlen);
|
|
|
|
#endif
|
|
|