VLC 4.0.0-dev
No Matches

In-memory anonymous pipe. More...

Collaboration diagram for FIFO stream:


typedef struct vlc_stream_fifo vlc_stream_fifo_t


vlc_stream_fifo_tvlc_stream_fifo_New (vlc_object_t *parent, stream_t **reader)
 Creates a FIFO stream.
int vlc_stream_fifo_Queue (vlc_stream_fifo_t *s, block_t *block)
 Writes a block to a FIFO stream.
ssize_t vlc_stream_fifo_Write (vlc_stream_fifo_t *s, const void *buf, size_t len)
 Writes data to a FIFO stream.
void vlc_stream_fifo_Close (vlc_stream_fifo_t *s)
 Terminates a FIFO stream.

Detailed Description

In-memory anonymous pipe.

Typedef Documentation

◆ vlc_stream_fifo_t

Function Documentation

◆ vlc_stream_fifo_Close()

void vlc_stream_fifo_Close ( vlc_stream_fifo_t s)

Terminates a FIFO stream.

Marks the end of the FIFO stream and releases any underlying resources.

sFIFO stream created by vlc_stream_fifo_New()

References vlc_stream_fifo::eof, vlc_stream_fifo::queue, vlc_queue_Lock(), vlc_queue_Signal(), vlc_queue_Unlock(), and vlc_stream_fifo_private::writer.

Referenced by vlc_demux_chained_Delete(), and vlc_demux_chained_New().

◆ vlc_stream_fifo_New()

vlc_stream_fifo_t * vlc_stream_fifo_New ( vlc_object_t parent,
stream_t **  reader 

Creates a FIFO stream.

Creates a non-seekable byte stream object whose byte stream is generated by another thread in the process. This is the LibVLC equivalent of an anonymous pipe/FIFO.

On the reader side, the normal stream functions are used, e.g. vlc_stream_Read() and vlc_stream_Delete().

The created stream object is automatically destroyed when both the reader and the writer sides have been closed, with vlc_stream_Delete() and vlc_stream_fifo_Close() respectively.

parentparent VLC object for the stream
readerlocation to store read side stream pointer [OUT]
a FIFO stream object or NULL on memory error.

References vlc_stream_fifo::eof, stream_t::pf_block, stream_t::pf_control, stream_t::pf_seek, vlc_stream_fifo::queue, unlikely, vlc_queue_Init(), vlc_stream_CustomNew(), vlc_stream_fifo_Block(), vlc_stream_fifo_Control(), vlc_stream_fifo_Destroy(), vlc_stream_Private(), and vlc_stream_fifo_private::writer.

Referenced by vlc_demux_chained_New().

◆ vlc_stream_fifo_Queue()

int vlc_stream_fifo_Queue ( vlc_stream_fifo_t s,
block_t block 

Writes a block to a FIFO stream.

sFIFO stream created by vlc_stream_fifo_New()
blockdata block to write to the stream
0 on success. -1 if the reader end has already been closed (errno is then set to EPIPE, and the block is deleted).
No congestion control is performed. If the reader end is not keeping up with the writer end, buffers will accumulate in memory.

References block_Release, vlc_stream_fifo::eof, likely, vlc_stream_fifo::queue, unlikely, vlc_queue_EnqueueUnlocked(), vlc_queue_Lock(), vlc_queue_Unlock(), and vlc_stream_fifo_private::writer.

Referenced by vlc_demux_chained_Send(), and vlc_stream_fifo_Write().

◆ vlc_stream_fifo_Write()

ssize_t vlc_stream_fifo_Write ( vlc_stream_fifo_t s,
const void *  buf,
size_t  len 

Writes data to a FIFO stream.

This is a convenience helper for vlc_stream_fifo_Queue().

sFIFO stream created by vlc_stream_fifo_New()
bufstart address of data to write
lenlength of data to write in bytes
len on success, or -1 on error (errno is set accordingly)

References block_Alloc, vlc_frame_t::p_buffer, unlikely, vlc_stream_fifo_Queue(), and vlc_stream_fifo_private::writer.