static int vlc_tls_ProxyShutdown(vlc_tls_t *tls, bool duplex)
Definition: tunnel.c:111
#define vlc_module_begin()
Definition: vlc_plugin.h:267
static int OpenURL(vlc_object_t *obj)
Probes and initializes.
Definition: rtp.c:335
void(* header)(demux_t *, void *, block_t *)
Definition: rtp.h:33
#define RTCP_PORT_LONGTEXT
Definition: rtp.c:498
size_t count
Definition: core.c:401
#define IPPROTO_UDPLITE
Definition: rtp.c:57
struct vlc_dtls * rtp_sock
Definition: rtp.h:70
int() var_Create(vlc_object_t *p_this, const char *psz_name, int i_type)
Creates a VLC object variable.
Definition: variables.c:291
#define SRTP_KEY_LONGTEXT
Definition: rtp.c:503
vlc_tls_t * vlc_tls_SocketOpenTCP(vlc_object_t *obj, const char *name, unsigned port)
Creates a transport-layer TCP stream from a name and port.
Definition: stream.c:431
uint32_t frequency
Definition: rtp.h:35
static ssize_t vlc_tls_ProxyRead(vlc_tls_t *tls, struct iovec *iov, unsigned count)
Definition: tunnel.c:93
rtp_session_t * rtp_session_create(demux_t *)
Creates a new RTP session.
Definition: session.c:58
static int vlc_stream_GetSize(stream_t *s, uint64_t *size)
Get the size of the stream.
Definition: vlc_stream.h:331
struct vlc_dtls * vlc_datagram_CreateFD(int fd)
Definition: datagram.c:99
#define SRTP_KEY_TEXT
Definition: rtp.c:502
static void vlc_tls_ProxyClose(vlc_tls_t *tls)
Definition: tunnel.c:118
static void vlc_gcrypt_init(void)
Definition: vlc_gcrypt.h:29
int strcasecmp(const char *, const char *)
void rtp_session_destroy(demux_t *, rtp_session_t *)
Destroys an RTP session.
Definition: session.c:77
char * vlc_http_authority(const char *host, unsigned port)
Formats an authority.
Definition: message.c:573
#define unlikely(p)
Predicted false condition.
Definition: vlc_common.h:227
ssize_t vlc_sendmsg(int fd, const struct msghdr *msg, int flags)
Sends a socket message.
Definition: filesystem.c:374
void srtp_destroy(srtp_session_t *s)
Releases all resources associated with a Secure RTP session.
Definition: srtp.c:98
bool autodetect
Payload type autodetection pending.
Definition: rtp.h:78
srtp_session_t * srtp_create(int encr, int auth, unsigned tag_len, int prf, unsigned flags)
Allocates a Secure RTP one-way session.
Definition: srtp.c:134
vlc_tls_t * vlc_https_connect_proxy(void *ctx, vlc_tls_client_t *creds, const char *hostname, unsigned port, bool *restrict two, const char *proxy)
Definition: tunnel.c:134
#define add_integer(name, value, text, longtext, advc)
Definition: vlc_plugin.h:422
#define set_callbacks(activate, deactivate)
Definition: vlc_plugin.h:320
int vlc_http_msg_add_creds_basic(struct vlc_http_msg *m, bool proxy, const char *username, const char *password)
Adds Basic credentials.
Definition: message.c:1005
#define net_Connect(a, b, c, d, e)
Definition: vlc_network.h:175
static const char *const dynamic_pt_list_text[]
Definition: rtp.c:539
int fd
Definition: vlc_fixups.h:419
void * theora_init(demux_t *demux)
Definition: xiph.c:74
void rtp_autodetect(demux_t *, rtp_session_t *, const block_t *)
Definition: rtpfmt.c:259
void vlc_http_msg_destroy(struct vlc_http_msg *m)
Destroys an HTTP message.
Definition: message.c:193
@ POLLHUP
Definition: vlc_fixups.h:406
Datagram socket.
Definition: vlc_dtls.h:29
void codec_decode(demux_t *demux, void *data, block_t *block)
Definition: rtpfmt.c:54
@ SRTP_ENCR_AES_CM
Definition: srtp.h:42
struct vlc_sdp_media * media
Definition: sdp.h:151
static int vlc_tls_GetPollFD(vlc_tls_t *tls, short *events)
Generates an event polling description.
Definition: vlc_tls.h:314
void * vlc_obj_malloc(vlc_object_t *obj, size_t size)
Allocates memory for a module.
Definition: objres.c:137
Definition: vlc_fixups.h:417
#define IPPROTO_DCCP
Definition: rtp.c:53
struct vlc_http_conn * vlc_h1_conn_create(void *ctx, struct vlc_tls *, bool proxy)
Definition: h1conn.c:340
vlc_tls_t * vlc_https_connect(vlc_tls_client_t *creds, const char *name, unsigned port, bool *restrict two)
Definition: connmgr.c:59
static void Close(vlc_object_t *obj)
Releases resources.
Definition: rtp.c:139
Transport layer socket.
Definition: vlc_tls.h:65
void vlc_UrlClean(vlc_url_t *restrict url)
Definition: url.c:598
struct vlc_tls * p
Reserved.
Definition: vlc_tls.h:70
SDP session descriptor.
Definition: sdp.h:145
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:106
#define set_shortname(shortname)
Definition: vlc_plugin.h:299
char * psz_password
Definition: vlc_url.h:149
vlc_tls_t * vlc_tls_ClientSessionCreate(vlc_tls_client_t *crd, vlc_tls_t *sock, const char *host, const char *service, const char *const *alpn, char **alp)
Initiates a client TLS session.
Definition: tls.c:149
int poll(struct pollfd *, unsigned, int)
#define VLC_EGENERIC
Unspecified error.
Definition: vlc_common.h:474
static void vlc_dtls_Close(struct vlc_dtls *dgs)
Definition: vlc_dtls.h:42
int vlc_http_msg_add_agent(struct vlc_http_msg *m, const char *str)
Sets the agent field.
Definition: message.c:783
#define RTP_MAX_SRC_TEXT
Definition: rtp.c:513
#define VLC_VAR_STRING
Definition: vlc_variables.h:51
static struct vlc_http_stream * vlc_http_stream_open(struct vlc_http_conn *conn, const struct vlc_http_msg *m, bool has_data)
Definition: conn.h:48
#define RTP_DYNAMIC_PT_LONGTEXT
Definition: rtp.c:533
static const char * vlc_sdp_attr_value(const struct vlc_sdp *sdp, const char *name)
Returns a session attribute value.
Definition: sdp.h:207
int(* pf_demux)(stream_t *)
Definition: vlc_stream.h:115
vlc_tls_t tls
Definition: tunnel.c:82
#define set_category(i_id)
Definition: vlc_plugin.h:368
int vlc_http_msg_add_header(struct vlc_http_msg *m, const char *name, const char *fmt,...)
Definition: message.c:144
#define change_safe()
Definition: vlc_plugin.h:500
static ssize_t vlc_datagram_Recv(struct vlc_dtls *dgs, struct iovec *iov, unsigned iovlen, bool *truncated)
Definition: datagram.c:64
short revents
Definition: vlc_fixups.h:421
SDP connection address.
Definition: sdp.h:66
#define set_description(desc)
Definition: vlc_plugin.h:303
uint16_t max_misorder
Max packet backward misordering.
Definition: rtp.h:76
es_out_t * out
Definition: vlc_stream.h:68
const char * psz_location
Location (URL with the scheme stripped)
Definition: vlc_stream.h:52
void codec_destroy(demux_t *demux, void *data)
Definition: rtpfmt.c:47
#define change_string_list(list, list_text)
Definition: vlc_plugin.h:473
struct vlc_demux_chained_t * chained_demux
Definition: rtp.h:66
void vlc_sdp_free(struct vlc_sdp *sdp)
Destroys a parsed SDP session descriptor.
Definition: sdp.c:252
@ DEMUX_GET_TIME
Definition: vlc_demux.h:189
#define vlc_module_end()
Definition: vlc_plugin.h:278
#define net_Close(fd)
Definition: vlc_network.h:57
int vlc_clone(vlc_thread_t *th, void *(*entry)(void *), void *data, int priority)
Creates and starts a new thread.
Definition: thread.c:144
char addr[]
Definition: sdp.h:72
char * psz_host
Definition: vlc_url.h:150
char * psz_name
Definition: vlc_stream.h:50
vlc_tls_t * sock
Definition: tunnel.c:83
#define MSG_TRUNC
Definition: datagram.c:36
#define SRTP_SALT_TEXT
Definition: rtp.c:508
void xiph_decode(demux_t *demux, void *data, block_t *block)
Definition: xiph.c:146
@ DEMUX_CAN_PAUSE
Checks whether (long) pause then stream resumption is supported.
Definition: vlc_demux.h:99
static const struct vlc_dtls_operations vlc_dccp_ops
Definition: datagram.c:143
static const char * vlc_sdp_media_attr_value(const struct vlc_sdp_media *media, const char *name)
Returns a media attribute value.
Definition: sdp.h:137
void rtp_queue(demux_t *, rtp_session_t *, block_t *)
Receives an RTP packet and queues it.
Definition: session.c:239
int vlc_savecancel(void)
Disables thread cancellation.
Definition: thread.c:183
static int64_t var_CreateGetInteger(vlc_object_t *p_obj, const char *psz_name)
Create a integer variable with inherit and get its value.
Definition: vlc_variables.h:523
static int var_SetString(vlc_object_t *p_obj, const char *psz_name, const char *psz_string)
Set the value of a string variable.
Definition: vlc_variables.h:345
static ssize_t vlc_tls_ProxyWrite(vlc_tls_t *tls, const struct iovec *iov, unsigned count)
Definition: tunnel.c:102
const struct vlc_dtls_operations * ops
Definition: vlc_dtls.h:30
static int OpenSDP(vlc_object_t *obj)
Definition: rtp.c:156
vlc_tick_t timeout
Definition: rtp.h:74
char * psz_protocol
Definition: vlc_url.h:147
struct vlc_http_msg * vlc_http_msg_get_initial(struct vlc_http_stream *s)
Definition: message.c:276
int vlc_UrlParse(vlc_url_t *url, const char *str)
Parses an URI or IRI.
Definition: url.c:558
@ DEMUX_GET_LENGTH
Definition: vlc_demux.h:188
struct vlc_http_msg * vlc_http_req_create(const char *method, const char *scheme, const char *authority, const char *path)
Creates an HTTP request.
Definition: message.c:213
struct vlc_http_msg * vlc_http_msg_get_final(struct vlc_http_msg *m)
Gets final response headers.
Definition: message.c:284
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45
char * psz_username
Definition: vlc_url.h:148
void xiph_destroy(demux_t *demux, void *data)
Definition: xiph.c:80
#define add_submodule()
Definition: vlc_plugin.h:287
struct vlc_sdp_conn * conn
Definition: sdp.h:149
const char * vlc_strerror_c(int errnum)
Definition: error.c:34
#define net_OpenDgram(a, b, c, d, e, g)
Definition: vlc_network.h:215
static const char *const dynamic_pt_list[]
Definition: rtp.c:538
short status
Definition: message.c:62
int vlc_close(int fd)
Closes a file descriptor.
Definition: filesystem.c:91
ssize_t recvmsg(int, struct msghdr *, int)
static const struct vlc_dtls_operations vlc_datagram_ops
Definition: datagram.c:92
State for a RTP session:
Definition: session.c:39
Thread handle.
Definition: vlc_threads.h:180
@ DEMUX_CAN_SEEK
Checks whether the stream supports seeking.
Definition: vlc_demux.h:91
stream_t definition
Definition: vlc_stream.h:46
static void vlc_datagram_Close(struct vlc_dtls *dgs)
Definition: datagram.c:45
struct vlc_sdp_conn * next
Definition: sdp.h:68
stream_t * s
Input stream.
Definition: vlc_stream.h:65
static void vlc_tls_Close(vlc_tls_t *session)
Closes a connection and its underlying resources.
Definition: vlc_tls.h:397
static const struct vlc_tls_operations vlc_tls_proxy_ops
Definition: tunnel.c:125
HTTP stream.
Definition: message.h:366
#define vlc_tick_from_sec(sec)
Definition: vlc_tick.h:81
#define container_of(ptr, type, member)
Definition: vlc_common.h:1140
Definition: datagram.c:39
ssize_t(* writev)(struct vlc_tls *, const struct iovec *iov, unsigned len)
Callback for sending data.
Definition: vlc_tls.h:107
int(* pf_control)(stream_t *, int i_query, va_list)
Stream control.
Definition: vlc_stream.h:133
void vlc_restorecancel(int state)
Restores the cancellation state.
Definition: thread.c:193
Definition: vlc_url.h:145
Session Description Protocol (SDP)
RTP demux module shared declarations.
VLC object common members.
Definition: vlc_objects.h:43
void(* decode)(demux_t *, void *, block_t *)
Definition: rtp.h:34
#define RTP_DYNAMIC_PT_TEXT
Definition: rtp.c:531
struct vlc_tls_proxy vlc_tls_proxy_t
#define VLC_ENOMEM
Not enough memory.
Definition: vlc_common.h:476
@ SRTP_PRF_AES_CM
Definition: srtp.h:56
#define set_capability(cap, score)
Definition: vlc_plugin.h:311
#define VLC_THREAD_PRIORITY_INPUT
Definition: vlc_threads.h:208
static char * var_CreateGetNonEmptyString(vlc_object_t *p_obj, const char *psz_name)
Definition: vlc_variables.h:570
#define RTP_TIMEOUT_TEXT
Definition: rtp.c:517
#define change_integer_range(minv, maxv)
Definition: vlc_plugin.h:485
static int Control(demux_t *demux, int query, va_list args)
Control callback.
Definition: rtp.c:90
@ DEMUX_GET_PTS_DELAY
Retrieves the PTS delay (roughly the default buffer duration).
Definition: vlc_demux.h:112
static struct vlc_http_msg * vlc_http_tunnel_open(struct vlc_http_conn *conn, const char *hostname, unsigned port, const char *username, const char *password)
Definition: tunnel.c:38
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:472
struct vlc_dtls s
Definition: datagram.c:42
char * strdup(const char *)
static int extract_port(char **phost)
Extracts port number from "[host]:port" or "host:port" strings, and remove brackets from the host nam...
Definition: rtp.c:67
static int64_t var_InheritInteger(vlc_object_t *obj, const char *name)
Definition: vlc_variables.h:685
#define RTP_MAX_MISORDER_LONGTEXT
Definition: rtp.c:527
#define VLC_TICK_FROM_MS(ms)
Definition: vlc_tick.h:122
static void vlc_http_conn_release(struct vlc_http_conn *conn)
Definition: conn.h:54
#define RTCP_PORT_TEXT
Definition: rtp.c:497
unsigned i_port
Definition: vlc_url.h:151
#define RTP_MAX_DROPOUT_TEXT
Definition: rtp.c:521
void * rtp_dgram_thread(void *data)
RTP/RTCP session thread for datagram sockets.
Definition: input.c:108
#define SRTP_SALT_LONGTEXT
Definition: rtp.c:509
int rtp_add_type(demux_t *demux, rtp_session_t *ses, const rtp_pt_t *pt)
Adds a payload type to an RTP session.
Definition: session.c:108
Definition: demux_chained.c:35
@ DEMUX_CAN_CONTROL_PACE
Whether the stream can be read at an arbitrary pace.
Definition: vlc_demux.h:105
static bool vlc_sdp_media_attr_present(const struct vlc_sdp_media *media, const char *name)
Checks if a median attribute is present.
Definition: sdp.h:118
bool rtp_dequeue(demux_t *, const rtp_session_t *, vlc_tick_t *)
int net_SetCSCov(int fd, int sendcov, int recvcov)
net_SetCSCov: Sets the send and receive checksum coverage of a socket:
Definition: udp.c:692
#define N_(str)
Definition: vlc_fixups.h:375
Definition: vlc_dtls.h:33
@ DEMUX_GET_POSITION
Definition: vlc_demux.h:184
static int vlc_datagram_GetPollFD(struct vlc_dtls *dgs, short *restrict ev)
Definition: datagram.c:58
#define SUBCAT_INPUT_DEMUX
Definition: vlc_plugin.h:168
static ssize_t vlc_datagram_Send(struct vlc_dtls *dgs, const struct iovec *iov, unsigned iovlen)
Definition: datagram.c:80
static ssize_t vlc_dccp_Recv(struct vlc_dtls *dgs, struct iovec *iov, unsigned iovlen, bool *truncated)
Definition: datagram.c:111
TLS client-side credentials.
Definition: vlc_tls.h:140
#define RTP_MAX_MISORDER_TEXT
Definition: rtp.c:526
#define vlc_object_parent(o)
Definition: vlc_objects.h:158
#define RTP_TIMEOUT_LONGTEXT
Definition: rtp.c:518
rtp_session_t * session
Definition: rtp.h:65
int fd
Definition: datagram.c:41
#define add_string(name, value, text, longtext, advc)
Definition: vlc_plugin.h:385
void * codec_init(demux_t *demux, es_format_t *fmt)
Definition: rtpfmt.c:40
#define set_subcategory(i_id)
Definition: vlc_plugin.h:372
vlc_thread_t thread
Definition: rtp.h:72
int vlc_http_msg_get_status(const struct vlc_http_msg *m)
Gets response status code.
Definition: message.c:168
#define likely(p)
Predicted true condition.
Definition: vlc_common.h:218
ssize_t(* readv)(struct vlc_tls *, struct iovec *iov, unsigned len)
Callback for receiving data.
Definition: vlc_tls.h:93
uint8_t * p_buffer
Payload start.
Definition: vlc_block.h:121
#define CAT_INPUT
Definition: vlc_plugin.h:165
void(* destroy)(demux_t *, void *)
Definition: rtp.h:32
uint8_t number
Definition: rtp.h:36
static uint8_t rtp_ptype(const block_t *block)
Definition: rtp.h:40
@ SRTP_RCC_MODE1
Definition: srtp.h:31
#define RTP_MAX_SRC_LONGTEXT
Definition: rtp.c:514
@ SRTP_AUTH_HMAC_SHA1
Definition: srtp.h:50
#define RTP_MAX_DROPOUT_LONGTEXT
Definition: rtp.c:522
int vlc_demux_chained_ControlVa(vlc_demux_chained_t *dc, int query, va_list ap)
Controls a chained demuxer.
Definition: demux_chained.c:138
static int vlc_tls_ProxyGetFD(vlc_tls_t *tls, short *restrict events)
Definition: tunnel.c:86
void vlc_join(vlc_thread_t handle, void **result)
Waits for a thread to complete (if needed), then destroys it.
Definition: thread.c:151
struct vlc_dtls * rtcp_sock
Definition: rtp.h:71
char * authority
Definition: message.c:65
uint8_t max_src
Max simultaneous RTP sources.
Definition: rtp.h:77
void * p_sys
Private data pointer.
Definition: vlc_stream.h:138
Definition: vlc_block.h:117
const struct vlc_tls_operations * ops
Callbacks to operate on the stream.
Definition: vlc_tls.h:68
#define msg_Err(p_this,...)
Definition: vlc_messages.h:102
static int vlc_tls_Shutdown(vlc_tls_t *tls, bool duplex)
Shuts a connection down.
Definition: vlc_tls.h:381
#define add_shortcut(...)
Definition: vlc_plugin.h:291
uint16_t max_dropout
Max packet forward misordering.
Definition: rtp.h:75
void vlc_cancel(vlc_thread_t thread_id)
Marks a thread as cancelled.
Definition: thread.c:167
struct vlc_dtls * vlc_dccp_CreateFD(int fd)
Definition: datagram.c:150
int srtp_setkeystring(srtp_session_t *s, const char *key, const char *salt)
Sets (or resets) the master key and master salt for a SRTP session from hexadecimal strings.
Definition: srtp.c:352
struct vlc_sdp * vlc_sdp_parse(const char *str, size_t length)
Parses an SDP session descriptor.
Definition: sdp.c:268