Go to the documentation of this file.
24 #ifndef LIBVLC_INPUT_STREAM_H
25 #define LIBVLC_INPUT_STREAM_H 1
32 void (*destroy)(
stream_t *),
size_t extra_size,
33 const char *type_name);
121 char const** out_extra );
123 char *
get_path(
const char *location);
void * vlc_iconv_t
Definition: vlc_charset.h:140
int vlc_sd_probe_Add(vlc_probe_t *probe, const char *name, const char *longname, int category)
Definition: services_discovery.c:40
void vlc_mutex_init(vlc_mutex_t *mtx)
Initializes a fast mutex.
Definition: threads.c:123
int vlc_stream_vaControl(stream_t *s, int cmd, va_list args)
Use to control the "stream_t *".
Definition: stream.c:687
uint64_t vlc_stream_Tell(const stream_t *s)
Tells the current stream position.
Definition: stream.c:611
size_t count
Definition: core.c:401
stream_t * vlc_stream_CustomNew(vlc_object_t *parent, void(*destroy)(stream_t *), size_t extra_size, const char *type_name)
Allocates a VLC stream object.
Definition: stream.c:68
block_t * vlc_stream_Block(stream_t *s, size_t size)
Read data into a block.
Definition: stream.c:729
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
Main service discovery structure to build a SD module.
Definition: vlc_services_discovery.h:59
block_t * peek
Definition: stream.c:72
void input_stats_Destroy(struct input_stats *stats)
Definition: stats.c:74
#define unlikely(p)
Predicted false condition.
Definition: vlc_common.h:227
static int vlc_tls_SocketGetFD(vlc_tls_t *tls, short *restrict events)
Definition: stream.c:174
ssize_t vlc_sendmsg(int fd, const struct msghdr *msg, int flags)
Sends a socket message.
Definition: filesystem.c:374
ssize_t vlc_tls_Read(vlc_tls_t *session, void *buf, size_t len, bool waitall)
Receives data through a socket.
Definition: stream.c:53
#define vlc_probe(obj, cap, pcount)
Definition: vlc_probe.h:37
block_t * block_TryRealloc(block_t *p_block, ssize_t i_prebody, size_t i_body)
Definition: block.c:144
block_t *(* pf_block)(stream_t *, bool *eof)
Read data block.
Definition: vlc_stream.h:103
Definition: vlc_probe.h:40
static float stats_GetRate(const input_rate_t *rate)
Definition: stats.c:45
VLC_EXPORT int vlc_iconv_close(vlc_iconv_t)
size_t i_buffer
Payload length.
Definition: vlc_block.h:122
#define VLC_ICONV_ERR
Definition: vlc_charset.h:139
void vlc_sd_Destroy(services_discovery_t *sd)
Definition: services_discovery.c:130
struct vlc_tls_socket vlc_tls_socket_t
int fd
Definition: vlc_fixups.h:419
int vlc_socketpair(int pf, int type, int proto, int fds[2], bool nonblock)
Creates a pair of socket file descriptors.
Definition: filesystem.c:335
@ STREAM_SET_SEEKPOINT
arg1= int res=can fail
Definition: vlc_stream.h:167
static int vlc_tls_GetPollFD(vlc_tls_t *tls, short *events)
Generates an event polling description.
Definition: vlc_tls.h:314
Definition: vlc_fixups.h:417
stream_t * stream_FilterChainNew(stream_t *source, const char *list)
Builds an explicit chain of stream filters.
Definition: stream_filter.c:109
void input_stats_Compute(struct input_stats *stats, input_stats_t *st)
Definition: stats.c:79
Transport layer socket.
Definition: vlc_tls.h:65
struct vlc_tls * p
Reserved.
Definition: vlc_tls.h:70
static ssize_t vlc_tls_ConnectWrite(vlc_tls_t *tls, const struct iovec *iov, unsigned count)
Definition: stream.c:359
int category
Definition: services_discovery.c:57
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:106
char * vlc_stream_ReadLine(stream_t *s)
Definition: stream.c:187
struct input_stats * input_stats_Create(void)
Definition: stats.c:54
stream_t * vlc_stream_AttachmentNew(vlc_object_t *p_this, input_attachment_t *attachement)
Definition: stream_memory.c:90
@ STREAM_SET_TITLE
arg1= int res=can fail
Definition: vlc_stream.h:166
static ssize_t vlc_tls_SocketWrite(vlc_tls_t *tls, const struct iovec *iov, unsigned count)
Definition: stream.c:195
#define VLC_EGENERIC
Unspecified error.
Definition: vlc_common.h:474
vlc_iconv_t conv
Definition: stream.c:78
static const struct vlc_tls_operations vlc_tls_socket_ops
Definition: stream.c:223
static uint16_t U16_AT(const void *p)
Reads 16 bits in network byte order.
Definition: vlc_common.h:985
services_discovery_t * vlc_sd_Create(vlc_object_t *parent, const char *cfg, const struct services_discovery_owner_t *restrict owner)
Definition: services_discovery.c:106
Definition: services_discovery.c:33
module_t * p_module
Loaded module.
Definition: vlc_services_discovery.h:62
vlc_tls_t * vlc_tls_SocketOpen(int fd)
Creates a transport-layer stream from a socket.
Definition: stream.c:252
vlc_tls_t * vlc_tls_SocketOpenAddrInfo(const struct addrinfo *restrict info, bool defer_connect)
Definition: stream.c:408
#define net_Close(fd)
Definition: vlc_network.h:57
stream_t *() vlc_stream_NewURL(vlc_object_t *p_parent, const char *psz_url)
Create a stream_t reading from a URL.
Definition: stream.c:141
int(* pf_readdir)(stream_t *, input_item_node_t *)
Read directory.
Definition: vlc_stream.h:113
unsigned char char_width
Definition: stream.c:79
void vlc_tls_SessionDelete(vlc_tls_t *session)
Destroys a TLS session.
Definition: tls.c:135
bool little_endian
Definition: stream.c:80
#define msg_Warn(p_this,...)
Definition: vlc_messages.h:104
Definition: vlc_es_out.h:143
const char * description
Human-readable name.
Definition: vlc_services_discovery.h:67
struct sockaddr peer[]
Definition: stream.c:171
VLC_EXPORT size_t vlc_iconv(vlc_iconv_t, const char **, size_t *, char **, size_t *)
vlc_tick_t vlc_tick_now(void)
Precision monotonic clock.
Definition: thread.c:261
static void input_rate_Init(input_rate_t *rate)
Create a statistics counter.
Definition: stats.c:36
int vlc_stream_ReadDir(stream_t *s, input_item_node_t *p_node)
Reads a directory.
Definition: stream.c:749
char * vlc_tls_GetLine(vlc_tls_t *session)
Receives a text line through a socket.
Definition: stream.c:133
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45
block_t * block_Alloc(size_t size)
Allocates a block.
Definition: block.c:108
#define POLLOUT
Definition: vlc_fixups.h:415
int(* pf_seek)(stream_t *, uint64_t)
Seek.
Definition: vlc_stream.h:124
max_align_t private_data[]
Definition: stream.c:83
static ssize_t vlc_tls_SocketRead(vlc_tls_t *tls, struct iovec *iov, unsigned count)
Definition: stream.c:182
char * psz_url
Full URL or MRL (can be NULL)
Definition: vlc_stream.h:51
stream_t * stream_FilterAutoNew(stream_t *source)
Probes stream filters automatically.
Definition: stream_filter.c:93
static void vlc_tls_SocketClose(vlc_tls_t *tls)
Definition: stream.c:215
const char * vlc_strerror_c(int errnum)
Definition: error.c:34
static int vlc_tls_SocketShutdown(vlc_tls_t *tls, bool duplex)
Definition: stream.c:208
char ** vlc_sd_GetNames(vlc_object_t *obj, char ***pppsz_longnames, int **pp_categories)
Gets the list of available services discovery plugins.
Definition: services_discovery.c:60
static int vlc_tls_GetFD(vlc_tls_t *tls)
Returns the underlying file descriptor.
Definition: vlc_tls.h:325
#define VLC_TICK_INVALID
Definition: vlc_config.h:44
VLC_EXPORT vlc_iconv_t vlc_iconv_open(const char *, const char *)
short events
Definition: vlc_fixups.h:420
ssize_t recvmsg(int, struct msghdr *, int)
int vlc_getaddrinfo_i11e(const char *name, unsigned port, const struct addrinfo *hints, struct addrinfo **res)
Definition: getaddrinfo.c:39
ssize_t vlc_tls_Write(vlc_tls_t *session, const void *buf, size_t len)
Sends data through a socket.
Definition: stream.c:94
int vlc_socket(int pf, int type, int proto, bool nonblock)
Creates a socket file descriptor.
Definition: filesystem.c:327
stream_t definition
Definition: vlc_stream.h:46
bool vlc_killed(void)
Checks if the interruption context was "killed".
Definition: interrupt.c:185
stream_t * s
Input stream.
Definition: vlc_stream.h:65
Definition: vlc_fixups.h:136
#define POLLIN
Definition: vlc_fixups.h:414
int vlc_stream_Seek(stream_t *s, uint64_t offset)
Sets the current stream position.
Definition: stream.c:625
struct services_discovery_owner_t owner
Owner callbacks.
Definition: vlc_services_discovery.h:76
char * name
Definition: services_discovery.c:55
char * longname
Definition: services_discovery.c:56
ssize_t vlc_stream_Read(stream_t *s, void *buf, size_t len)
Reads data from a byte stream.
Definition: stream.c:485
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
stream_t stream
Definition: stream.c:69
Definition: vlc_services_discovery.h:50
input_item_t * p_input_item
Input item (can be NULL)
Definition: vlc_stream.h:55
VLC object common members.
Definition: vlc_objects.h:43
char * config_ChainCreate(char **ppsz_name, config_chain_t **pp_cfg, const char *psz_chain)
This function will parse a configuration string (psz_string) and.
Definition: chain.c:225
#define VLC_ENOMEM
Not enough memory.
Definition: vlc_common.h:476
int vlc_tls_SocketPair(int family, int protocol, vlc_tls_t *pair[2])
Creates a connected pair of transport-layer sockets.
Definition: stream.c:257
void config_ChainDestroy(config_chain_t *p_cfg)
This function will release a linked list of config_chain_t (Including the head)
Definition: chain.c:253
#define VLC_UNUSED(x)
Definition: vlc_common.h:1105
void input_rate_Add(input_rate_t *counter, uintmax_t val)
Update a counter element with new values.
Definition: stats.c:121
static int vlc_tls_WaitConnect(vlc_tls_t *tls)
Waits for pending transport layer socket connection.
Definition: stream.c:307
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:472
char * strdup(const char *)
struct vlc_tls tls
Definition: stream.c:168
#define VLC_USED
Definition: fourcc_gen.c:32
#define vlc_custom_create(o, s, n)
Definition: libvlc.h:117
#define VLC_TICK_FROM_SEC(sec)
Definition: vlc_tick.h:52
struct stream_priv_t::@47 text
void vlc_mutex_lock(vlc_mutex_t *mtx)
Acquires a mutex.
Definition: threads.c:158
module_config_t ** list
Definition: core.c:400
const char name[16]
Definition: httpd.c:1268
ssize_t(* pf_read)(stream_t *, void *buf, size_t len)
Read data.
Definition: vlc_stream.h:85
config_chain_t * p_cfg
Configuration for the SD.
Definition: vlc_services_discovery.h:65
static const struct vlc_tls_operations vlc_tls_socket_fastopen_ops
Definition: stream.c:399
#define SOL_TCP
Definition: stream.c:46
#define VLC_PROBE_CONTINUE
Definition: vlc_probe.h:63
block_t * vlc_stream_ReadBlock(stream_t *s)
Reads a data block from a byte stream.
Definition: stream.c:561
static vlc_tls_t * vlc_tls_SocketAlloc(int fd, const struct sockaddr *restrict peer, socklen_t peerlen)
Definition: stream.c:232
socklen_t peerlen
Definition: stream.c:170
void * vlc_stream_Private(stream_t *stream)
Definition: stream.c:103
int vlc_poll_i11e(struct pollfd *fds, unsigned nfds, int timeout)
Interruptible variant of poll().
Definition: interrupt.c:367
static vlc_tls_t * vlc_tls_SocketAddrInfo(const struct addrinfo *restrict info)
Allocates an unconnected transport layer socket.
Definition: stream.c:286
stream_t * vlc_stream_CommonNew(vlc_object_t *parent, void(*destroy)(stream_t *))
Definition: stream.c:108
char * psz_name
Main name of the SD.
Definition: vlc_services_discovery.h:64
void vlc_stream_Delete(stream_t *s)
Destroy a stream.
Definition: stream.c:133
uint64_t offset
Definition: stream.c:73
static ssize_t vlc_tls_Connect(vlc_tls_t *tls)
Connects a transport layer socket.
Definition: stream.c:342
char * get_path(const char *location)
Definition: access.c:51
#define vlc_object_delete(obj)
Definition: vlc_objects.h:136
void stream_CommonDelete(stream_t *s)
Definition: stream.c:114
#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
stream_t * stream_AccessNew(vlc_object_t *, input_thread_t *, es_out_t *, bool, const char *)
This function creates a raw stream_t from an URL.
Definition: access.c:291
bool vlc_stream_Eof(const stream_t *s)
Checks for end of stream.
Definition: stream.c:618
uint8_t * p_buffer
Payload start.
Definition: vlc_block.h:121
block_t * block
Definition: stream.c:71
int fd
Definition: stream.c:169
static int vlc_probe_add(vlc_probe_t *obj, const void *data, size_t len)
Definition: vlc_probe.h:50
static void * vlc_alloc(size_t count, size_t size)
Definition: vlc_common.h:1144
void(* destroy)(stream_t *)
Definition: stream.c:70
#define module_unneed(a, b)
Definition: vlc_modules.h:126
void block_Release(block_t *block)
Releases a block.
Definition: block.c:135
void vlc_mutex_unlock(vlc_mutex_t *mtx)
Releases a mutex.
Definition: threads.c:209
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
ssize_t vlc_stream_ReadPartial(stream_t *s, void *buf, size_t len)
Reads partial data from a byte stream.
Definition: stream.c:463
#define module_need(a, b, c, d)
Definition: vlc_modules.h:111
bool eof
Definition: stream.c:74