Go to the documentation of this file.
26 #ifndef VLC_SRC_STREAMOUT_H
27 # define VLC_SRC_STREAMOUT_H 1
42 #define sout_NewInstance(a,b) sout_NewInstance(VLC_OBJECT(a),b)
struct vlc_list sessions
Definition: sap.c:72
int sout_StreamIdSend(sout_stream_t *s, void *id, block_t *b)
Definition: stream_output.c:758
static sap_address_t * AddressCreate(vlc_object_t *obj, const char *group)
Definition: sap.c:84
void vlc_mutex_init(vlc_mutex_t *mtx)
Initializes a fast mutex.
Definition: threads.c:123
static size_t block_FifoCount(block_fifo_t *fifo)
Definition: vlc_block.h:681
static void vlc_array_append_or_abort(vlc_array_t *ar, void *elem)
Definition: vlc_arrays.h:347
void sout_StreamIdDel(sout_stream_t *s, void *id)
Definition: stream_output.c:751
int sout_AccessOutControl(sout_access_out_t *access, int query,...)
sout_AccessOutControl
Definition: stream_output.c:343
void sout_DeleteInstance(sout_instance_t *)
Definition: stream_output.c:137
char * psz_access
Definition: stream_output.c:65
In-memory stream object.
Definition: vlc_memstream.h:41
sout_input_t ** pp_inputs
Definition: vlc_sout.h:118
int vlc_getaddrinfo(const char *node, unsigned port, const struct addrinfo *hints, struct addrinfo **res)
Resolves a host name to a list of socket addresses (like getaddrinfo()).
Definition: getaddrinfo.c:77
static bool var_InheritBool(vlc_object_t *obj, const char *name)
Definition: vlc_variables.h:675
char * psz_mux
Definition: vlc_sout.h:106
bool sout_instance_ControlsPace(sout_instance_t *sout)
Definition: stream_output.c:149
const char * psz_name
Definition: text_style.c:53
sout_access_out_t * sout_AccessOutNew(vlc_object_t *p_sout, const char *psz_access, const char *psz_name)
Definition: stream_output.c:258
struct vlc_list node
Definition: sap.c:60
char * ptr
Buffer start address.
Definition: vlc_memstream.h:48
vlc_cond_t wait
Definition: sap.c:63
static vlc_mutex_t sap_mutex
Definition: sap.c:76
#define unlikely(p)
Predicted false condition.
Definition: vlc_common.h:227
static void block_FifoEmpty(block_fifo_t *fifo)
Clears all blocks in a FIFO.
Definition: vlc_block.h:644
#define TAB_FIND(count, tab, p, idx)
Definition: vlc_arrays.h:82
char * data
Definition: sap.c:53
char * psz_name
Definition: stream_output.c:67
socklen_t origlen
Definition: sap.c:67
size_t length
Definition: sap.c:52
#define VLC_THREAD_PRIORITY_LOW
Definition: vlc_threads.h:207
int sout_InputDelete(sout_instance_t *p_sout, sout_packetizer_input_t *p_input)
Definition: stream_output.c:195
static bool sout_StreamIsSynchronous(sout_stream_t *s)
Definition: vlc_sout.h:217
@ SOUT_STREAM_ID_SPU_HIGHLIGHT
Definition: vlc_sout.h:172
char group[64]
Definition: sap.c:65
size_t length
Buffer length in bytes.
Definition: vlc_memstream.h:49
Definition: vlc_sout.h:184
static void block_FifoPut(block_fifo_t *fifo, block_t *block)
Immediately queue one block at the end of a FIFO.
Definition: vlc_block.h:660
void sout_AccessOutDelete(sout_access_out_t *p_access)
Definition: stream_output.c:298
static vlc_tick_t vlc_tick_from_samples(int64_t samples, int samp_rate)
Definition: vlc_tick.h:101
void sout_MuxFlush(sout_mux_t *p_mux, sout_input_t *p_input)
Definition: stream_output.c:540
module_t * module
Definition: stream_output.c:731
static void vlc_list_init(struct vlc_list *restrict head)
Initializes an empty list head.
Definition: vlc_list.h:57
module_t * p_module
Definition: vlc_sout.h:104
bool sout_instance_ControlsPace(sout_instance_t *sout)
Definition: stream_output.c:149
sout_stream_t * p_stream
Definition: stream_output.h:61
config_chain_t * p_cfg
Definition: vlc_sout.h:189
int() vlc_memstream_puts(struct vlc_memstream *ms, const char *str)
Appends a nul-terminated string to a byte stream.
Definition: memstream.c:156
void sout_InputFlush(sout_instance_t *, sout_packetizer_input_t *)
Definition: stream_output.c:232
struct sap_address_t sap_address_t
ssize_t sout_AccessOutWrite(sout_access_out_t *p_access, block_t *p_buffer)
Definition: stream_output.c:335
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:106
struct sap_address_t * addr
Definition: sap.c:51
void sout_StreamChainDelete(sout_stream_t *p_first, sout_stream_t *end)
Definition: stream_output.c:816
vlc_thread_t thread
Definition: sap.c:62
#define VLC_EGENERIC
Unspecified error.
Definition: vlc_common.h:474
int vlc_memstream_open(struct vlc_memstream *ms)
Initializes a byte stream object.
Definition: memstream.c:105
@ SOUT_STREAM_WANTS_SUBSTREAMS
Definition: vlc_sout.h:171
int vlc_memstream_close(struct vlc_memstream *ms)
Closes a byte stream object.
Definition: memstream.c:120
int sout_InputSendBuffer(sout_instance_t *p_sout, sout_packetizer_input_t *p_input, block_t *p_buffer)
Definition: stream_output.c:242
void sout_StreamFlush(sout_stream_t *s, void *id)
Definition: stream_output.c:768
Doubly-linked list node.
Definition: vlc_list.h:43
Stream output access_output.
Definition: vlc_sout.h:53
bool b_add_stream_any_time
Definition: vlc_sout.h:126
#define VLC_STATIC_MUTEX
Static initializer for (static) mutex.
Definition: vlc_threads.h:249
sout_mux_t * sout_MuxNew(sout_access_out_t *p_access, const char *psz_mux)
Definition: stream_output.c:360
int asprintf(char **, const char *,...)
void vlc_cond_signal(vlc_cond_t *cond)
Wakes up one thread waiting on a condition variable.
Definition: threads.c:253
static char * sout_stream_url_to_chain(bool, const char *)
Definition: stream_output.c:953
#define VLC_LIST_INITIALIZER(h)
Static initializer for a list head.
Definition: vlc_list.h:52
Mutex.
Definition: vlc_threads.h:225
bool b_wants_substreams
Definition: stream_output.h:60
vlc_mutex_t lock
Definition: stream_output.c:730
sout_instance_t * sout_NewInstance(vlc_object_t *p_parent, const char *psz_dest)
Definition: stream_output.c:80
unsigned session_count
Definition: sap.c:71
int(* control)(sout_stream_t *, int, va_list)
Definition: vlc_sout.h:180
#define TAB_ERASE(count, tab, index)
Definition: vlc_arrays.h:92
#define net_Close(fd)
Definition: vlc_network.h:57
int sout_InputControl(sout_instance_t *, sout_packetizer_input_t *, int i_query,...)
Definition: stream_output.c:220
int(* pf_control)(sout_access_out_t *, int, va_list)
Definition: vlc_sout.h:65
static sout_stream_t * sout_StreamNew(vlc_object_t *parent, char *psz_name, config_chain_t *p_cfg, sout_stream_t *p_next)
Definition: stream_output.c:831
sout_input_t * sout_MuxAddStream(sout_mux_t *p_mux, const es_format_t *p_fmt)
Definition: stream_output.c:439
int vlc_clone(vlc_thread_t *th, void *(*entry)(void *), void *data, int priority)
Creates and starts a new thread.
Definition: thread.c:144
#define msg_Warn(p_this,...)
Definition: vlc_messages.h:104
@ MUX_CAN_ADD_STREAM_WHILE_MUXING
Definition: vlc_sout.h:135
#define vlc_assert_unreachable()
Impossible branch assertion.
Definition: vlc_common.h:253
Definition: vlc_arrays.h:258
void(* flush)(sout_stream_t *, void *)
Definition: vlc_sout.h:181
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
void block_FifoRelease(block_fifo_t *p_fifo)
Destroys a FIFO created by block_FifoNew().
Definition: fifo.c:103
static struct vlc_list sap_addrs
Definition: sap.c:75
vlc_tick_t vlc_tick_now(void)
Precision monotonic clock.
Definition: thread.c:261
int fd
Definition: sap.c:68
ssize_t(* pf_write)(sout_access_out_t *, block_t *)
Definition: vlc_sout.h:64
ssize_t sout_AccessOutRead(sout_access_out_t *p_access, block_t *p_buffer)
Definition: stream_output.c:326
FILE * stream
Definition: vlc_memstream.h:45
Definition: vlc_configuration.h:331
Internal module descriptor.
Definition: modules.h:78
static size_t vlc_array_count(vlc_array_t *p_array)
Definition: vlc_arrays.h:277
unsigned interval
Definition: sap.c:69
sout_stream_t * sout_StreamChainNew(vlc_object_t *parent, const char *psz_chain, sout_stream_t *sink)
Definition: stream_output.c:877
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45
static void vlc_list_remove(struct vlc_list *restrict node)
Removes an element from a list.
Definition: vlc_list.h:135
void sout_AnnounceUnRegister(vlc_object_t *obj, session_descriptor_t *session)
Unregisters an existing session.
Definition: sap.c:360
static void vlc_list_append(struct vlc_list *restrict node, struct vlc_list *head)
Appends an element into a list.
Definition: vlc_list.h:110
uint32_t i_flags
Definition: vlc_block.h:126
sout_access_out_t * p_access
Definition: vlc_sout.h:109
int(* pf_mux)(sout_mux_t *)
Definition: vlc_sout.h:113
int sout_AccessOutSeek(sout_access_out_t *p_access, off_t i_pos)
Definition: stream_output.c:316
static void sout_StreamUnlock(sout_stream_t *s)
Definition: stream_output.c:736
#define VLC_TICK_INVALID
Definition: vlc_config.h:44
char * psz_name
Definition: vlc_sout.h:188
static int mrl_Parse(mrl_t *p_mrl, const char *psz_mrl)
Definition: stream_output.c:589
vlc_mutex_t lock
Definition: rand.c:50
static bool vlc_list_is_empty(const struct vlc_list *head)
Checks if a list is empty.
Definition: vlc_list.h:167
#define TAB_APPEND(count, tab, p)
Definition: vlc_arrays.h:79
Definition: vlc_codec.h:242
int vlc_memstream_putc(struct vlc_memstream *ms, int c)
Appends a single byte to a byte stream.
Definition: memstream.c:151
void(* del)(sout_stream_t *, void *)
Definition: vlc_sout.h:178
Thread handle.
Definition: vlc_threads.h:180
config_chain_t * p_cfg
Definition: vlc_sout.h:67
int sout_MuxGetStream(sout_mux_t *p_mux, unsigned i_blocks, vlc_tick_t *pi_dts)
Definition: stream_output.c:549
block_fifo_t * block_FifoNew(void)
Creates a thread-safe FIFO queue of blocks.
Definition: fifo.c:90
void sout_InputFlush(sout_instance_t *p_sout, sout_packetizer_input_t *p_input)
Definition: stream_output.c:232
vlc_tick_t i_pts
Definition: vlc_block.h:129
struct vlc_list node
Definition: sap.c:50
size_t strlcpy(char *, const char *, size_t)
int(* pf_seek)(sout_access_out_t *, off_t)
Definition: vlc_sout.h:62
encoder_t * sout_EncoderCreate(vlc_object_t *p_this, size_t owner_size)
Definition: stream_output.c:1014
Muxer structure.
Definition: vlc_sout.h:101
module_t * p_module
Definition: vlc_sout.h:57
config_chain_t * p_cfg
Definition: vlc_sout.h:107
void(* pf_delstream)(sout_mux_t *, sout_input_t *)
Definition: vlc_sout.h:112
#define sout_stream_priv(s)
Definition: stream_output.c:728
static void sout_StreamLock(sout_stream_t *s)
Definition: stream_output.c:731
session_descriptor_t * sout_AnnounceRegisterSDP(vlc_object_t *obj, const char *sdp, const char *dst)
Registers a new session with the announce handler, using a pregenerated SDP.
Definition: sap.c:157
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
static void vlc_array_init(vlc_array_t *p_array)
Definition: vlc_arrays.h:264
void sout_DeleteInstance(sout_instance_t *p_sout)
Definition: stream_output.c:137
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
int sout_InputSendBuffer(sout_instance_t *, sout_packetizer_input_t *, block_t *)
Definition: stream_output.c:242
#define VLC_UNUSED(x)
Definition: vlc_common.h:1105
#define sout_NewInstance(a, b)
Definition: stream_output.h:42
ssize_t(* pf_read)(sout_access_out_t *, block_t *)
Definition: vlc_sout.h:63
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:472
Definition: stream_output.c:63
int sout_StreamControlVa(sout_stream_t *s, int i_query, va_list args)
Definition: stream_output.c:778
static void vlc_array_clear(vlc_array_t *p_array)
Definition: vlc_arrays.h:270
char * psz_way
Definition: stream_output.c:66
#define FREENULL(a)
Definition: vlc_common.h:961
char * strdup(const char *)
char * psz_access
Definition: vlc_sout.h:58
static int64_t var_InheritInteger(vlc_object_t *obj, const char *name)
Definition: vlc_variables.h:685
#define VLC_TICK_FROM_MS(ms)
Definition: vlc_tick.h:122
block_t * block_FifoShow(block_fifo_t *p_fifo)
Peeks the first block in the FIFO.
Definition: fifo.c:128
@ SOUT_INPUT_SET_SPU_HIGHLIGHT
Definition: stream_output.h:54
int(* pf_addstream)(sout_mux_t *, sout_input_t *)
Definition: vlc_sout.h:111
char * psz_path
Definition: vlc_sout.h:60
sout_packetizer_input_t * sout_InputNew(sout_instance_t *p_sout, const es_format_t *p_fmt)
Definition: stream_output.c:164
#define vlc_custom_create(o, s, n)
Definition: libvlc.h:117
void vlc_mutex_lock(vlc_mutex_t *mtx)
Acquires a mutex.
Definition: threads.c:158
const char name[16]
Definition: httpd.c:1268
void * p_sys
Definition: vlc_sout.h:61
int(* send)(sout_stream_t *, void *, block_t *)
Definition: vlc_sout.h:179
#define vlc_array_item_at_index(ar, idx)
Definition: vlc_arrays.h:283
Condition variable.
Definition: vlc_threads.h:349
sout_packetizer_input_t * sout_InputNew(sout_instance_t *, const es_format_t *)
Definition: stream_output.c:164
@ SPU_ES
Definition: vlc_es.h:605
void * sout_StreamIdAdd(sout_stream_t *s, const es_format_t *fmt)
Definition: stream_output.c:741
#define TAB_REMOVE(count, tab, p)
Definition: vlc_arrays.h:106
int sout_MuxSendBuffer(sout_mux_t *p_mux, sout_input_t *p_input, block_t *p_buffer)
Definition: stream_output.c:516
char * psz_sout
Definition: stream_output.h:58
void *(* add)(sout_stream_t *, const es_format_t *)
Definition: vlc_sout.h:177
sout_stream_t stream
Definition: stream_output.c:729
const struct sout_stream_operations * ops
Definition: vlc_sout.h:192
static void * RunThread(void *)
main SAP handler thread
Definition: sap.c:120
#define vlc_list_foreach(pos, head, member)
List iteration macro.
Definition: vlc_list.h:261
vlc_tick_t i_dts
Definition: vlc_block.h:130
bool b_waiting_stream
Definition: vlc_sout.h:127
vlc_tick_t i_add_stream_start
Definition: vlc_sout.h:129
void sout_MuxDeleteStream(sout_mux_t *p_mux, sout_input_t *p_input)
Definition: stream_output.c:481
Definition: stream_output.c:722
#define vlc_object_delete(obj)
Definition: vlc_objects.h:136
static void mrl_Clean(mrl_t *p_mrl)
Definition: stream_output.c:706
void * p_sys
Definition: vlc_sout.h:193
static int sout_InputControlVa(sout_instance_t *p_sout, sout_packetizer_input_t *p_input, int i_query, va_list args)
Definition: stream_output.c:207
static void sout_StreamDelete(sout_stream_t *p_stream)
Definition: stream_output.c:792
int(* pf_control)(sout_mux_t *, int, va_list)
Definition: vlc_sout.h:114
struct sockaddr_storage orig
Definition: sap.c:66
#define IPPORT_SAP
Definition: sap.c:43
int sout_InputControl(sout_instance_t *p_sout, sout_packetizer_input_t *p_input, int i_query,...)
Definition: stream_output.c:220
#define BLOCK_FLAG_DISCONTINUITY
The content doesn't follow the last block, possible some blocks in between have been lost.
Definition: vlc_block.h:67
static int sout_MuxControl(sout_mux_t *p_mux, int i_query,...)
Definition: vlc_sout.h:157
void * p_sys
Definition: vlc_sout.h:121
void vlc_cond_init(vlc_cond_t *cond)
Initializes a condition variable.
Definition: threads.c:234
int vlc_cond_timedwait(vlc_cond_t *cond, vlc_mutex_t *mutex, vlc_tick_t deadline)
Waits on a condition variable up to a certain date.
Definition: threads.c:349
#define module_unneed(a, b)
Definition: vlc_modules.h:126
int i_nb_inputs
Definition: vlc_sout.h:117
static int net_ConnectUDP(vlc_object_t *obj, const char *host, unsigned port, int hlim)
Definition: vlc_network.h:209
int vlc_getnameinfo(const struct sockaddr *sa, int salen, char *host, int hostlen, int *portnum, int flags)
Definition: getaddrinfo.c:39
size_t vlc_memstream_write(struct vlc_memstream *ms, const void *ptr, size_t len)
Appends a binary blob to a byte stream.
Definition: memstream.c:127
void vlc_join(vlc_thread_t handle, void **result)
Waits for a thread to complete (if needed), then destroys it.
Definition: thread.c:151
#define NI_MAXNUMERICHOST
Definition: vlc_network.h:274
Stream output instance.
Definition: stream_output.h:33
void vlc_mutex_unlock(vlc_mutex_t *mtx)
Releases a mutex.
Definition: threads.c:209
Definition: vlc_block.h:117
#define msg_Err(p_this,...)
Definition: vlc_messages.h:102
sout_stream_t * p_next
Definition: vlc_sout.h:190
static void AddressDestroy(sap_address_t *addr)
Definition: sap.c:109
int sout_InputDelete(sout_instance_t *, sout_packetizer_input_t *)
Definition: stream_output.c:195
#define module_need(a, b, c, d)
Definition: vlc_modules.h:111
sout_input_query_e
Definition: stream_output.h:52
static int sout_StreamControl(sout_stream_t *s, int i_query,...)
Definition: vlc_sout.h:206
void sout_MuxDelete(sout_mux_t *p_mux)
Definition: stream_output.c:423