43 #include <sys/types.h> 66 #define BLOCK_FLAG_DISCONTINUITY 0x0001 68 #define BLOCK_FLAG_TYPE_I 0x0002 70 #define BLOCK_FLAG_TYPE_P 0x0004 72 #define BLOCK_FLAG_TYPE_B 0x0008 74 #define BLOCK_FLAG_TYPE_PB 0x0010 76 #define BLOCK_FLAG_HEADER 0x0020 78 #define BLOCK_FLAG_END_OF_SEQUENCE 0x0040 80 #define BLOCK_FLAG_CLOCK 0x0080 82 #define BLOCK_FLAG_SCRAMBLED 0x0100 84 #define BLOCK_FLAG_PREROLL 0x0200 86 #define BLOCK_FLAG_CORRUPTED 0x0400 88 #define BLOCK_FLAG_AU_END 0x0800 90 #define BLOCK_FLAG_TOP_FIELD_FIRST 0x1000 92 #define BLOCK_FLAG_BOTTOM_FIELD_FIRST 0x2000 94 #define BLOCK_FLAG_SINGLE_FIELD 0x4000 97 #define BLOCK_FLAG_INTERLACED_MASK \ 98 (BLOCK_FLAG_TOP_FIELD_FIRST|BLOCK_FLAG_BOTTOM_FIELD_FIRST|BLOCK_FLAG_SINGLE_FIELD) 100 #define BLOCK_FLAG_TYPE_MASK \ 101 (BLOCK_FLAG_TYPE_I|BLOCK_FLAG_TYPE_P|BLOCK_FLAG_TYPE_B|BLOCK_FLAG_TYPE_PB) 104 #define BLOCK_FLAG_CORE_PRIVATE_MASK 0x00ff0000 105 #define BLOCK_FLAG_CORE_PRIVATE_SHIFT 16 108 #define BLOCK_FLAG_PRIVATE_MASK 0xff000000 109 #define BLOCK_FLAG_PRIVATE_SHIFT 24 126 unsigned i_nb_samples;
153 void *base,
size_t length);
313 #define block_cleanup_push( block ) vlc_cleanup_push (block_Cleanup, block) 334 if( *pp_list == NULL )
351 **ppp_last = p_block;
354 *ppp_last = &p_last->
p_next;
370 uint8_t *
p = (uint8_t*)p_data;
372 while( p_list && i_max )
374 size_t i_copy = __MIN( i_max, p_list->
i_buffer );
375 memcpy( p, p_list->
p_buffer, i_copy );
403 *pi_length = i_length;
414 if( p_list->
p_next == NULL )
638 #define vlc_fifo_CleanupPush(fifo) vlc_cleanup_push(vlc_fifo_Cleanup, fifo) static void block_Cleanup(void *block)
Definition: vlc_block.h:310
vlc_tick_t i_pts
Definition: vlc_block.h:129
block_t * block_Init(block_t *block, const struct vlc_block_callbacks *cbs, void *base, size_t length)
Initializes a custom block.
block_t * block_heap_Alloc(void *, size_t)
Wraps heap in a block.
Definition: block.c:254
static bool vlc_fifo_IsEmpty(const vlc_fifo_t *fifo)
Definition: vlc_block.h:630
void vlc_fifo_WaitCond(vlc_fifo_t *, vlc_cond_t *)
Definition: fifo.c:69
static void block_ChainRelease(block_t *p_block)
Definition: vlc_block.h:358
block_t * block_shm_Alloc(void *addr, size_t length)
Wraps a System V memory segment in a block.
Definition: block.c:335
size_t block_FifoSize(block_fifo_t *)
Definition: fifo.c:216
Internal state for block queues.
Definition: fifo.c:38
block_t * block_TryRealloc(block_t *, ssize_t pre, size_t body)
Definition: block.c:144
block_t * block_FifoShow(block_fifo_t *)
Peeks the first block in the FIFO.
Definition: fifo.c:203
Definition: vlc_block.h:112
block_t * block_File(int fd, bool write)
Maps a file handle in memory.
Definition: block.c:364
size_t vlc_fifo_GetCount(const vlc_fifo_t *)
Counts blocks in a FIFO.
Definition: fifo.c:79
#define VLC_DEPRECATED
Deprecated functions or compound members annotation.
Definition: vlc_common.h:119
static void block_ChainProperties(block_t *p_list, int *pi_count, size_t *pi_size, vlc_tick_t *pi_length)
Definition: vlc_block.h:386
size_t i_buffer
Payload length.
Definition: vlc_block.h:122
block_t * block_FilePath(const char *, bool write)
Maps a file in memory.
Definition: block.c:433
void vlc_fifo_Wait(vlc_fifo_t *)
Waits on the FIFO.
Definition: fifo.c:64
void vlc_fifo_Lock(vlc_fifo_t *)
Locks a block FIFO.
Definition: fifo.c:49
static block_t * block_Duplicate(const block_t *p_block)
Duplicates a block.
Definition: vlc_block.h:223
block_t * p_next
Definition: vlc_block.h:119
uint32_t i_flags
Definition: vlc_block.h:126
block_t * vlc_fifo_DequeueUnlocked(vlc_fifo_t *)
Dequeues the first block from a locked FIFO, if any.
Definition: fifo.c:110
static void block_CopyProperties(block_t *dst, const block_t *src)
Definition: vlc_block.h:206
block_t * vlc_fifo_DequeueAllUnlocked(vlc_fifo_t *)
Dequeues the all blocks from a locked FIFO.
Definition: fifo.c:132
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
void vlc_fifo_QueueUnlocked(vlc_fifo_t *, block_t *)
Queues a linked-list of blocks into a locked FIFO.
Definition: fifo.c:91
#define VLC_MALLOC
Heap allocated result function annotation.
Definition: vlc_common.h:167
size_t block_FifoCount(block_fifo_t *)
Definition: fifo.c:227
static size_t block_ChainExtract(block_t *p_list, void *p_data, size_t i_max)
Definition: vlc_block.h:368
block_t * block_FifoGet(block_fifo_t *)
Dequeue the first block from the FIFO.
Definition: fifo.c:184
void block_FifoRelease(block_fifo_t *)
Destroys a FIFO created by block_FifoNew().
Definition: fifo.c:161
void block_Release(block_t *block)
Releases a block.
Definition: block.c:135
void block_FifoEmpty(block_fifo_t *)
Clears all blocks in a FIFO.
Definition: fifo.c:167
vlc_tick_t i_length
Definition: vlc_block.h:131
#define VLC_API
Definition: fourcc_gen.c:31
Condition variable.
Definition: vlc_threads.h:390
static void vlc_fifo_Cleanup(void *fifo)
Definition: vlc_block.h:635
int vlc_fifo_TimedWaitCond(vlc_fifo_t *, vlc_cond_t *, vlc_tick_t)
Timed variant of vlc_fifo_WaitCond().
Definition: fifo.c:74
void block_FifoPut(block_fifo_t *fifo, block_t *block)
Immediately queue one block at the end of a FIFO.
Definition: fifo.c:177
static void block_ChainLastAppend(block_t ***ppp_last, block_t *p_block)
Definition: vlc_block.h:348
block_t * block_mmap_Alloc(void *addr, size_t length)
Wraps a memory mapping in a block.
Definition: block.c:303
block_t * block_Realloc(block_t *, ssize_t pre, size_t body)
Reallocates a block.
Definition: block.c:235
size_t vlc_fifo_GetBytes(const vlc_fifo_t *)
Counts bytes in a FIFO.
Definition: fifo.c:85
unsigned i_nb_samples
Definition: vlc_block.h:127
Definition: vlc_block.h:117
uint8_t * p_buffer
Payload start.
Definition: vlc_block.h:121
block_fifo_t * block_FifoNew(void)
Creates a thread-safe FIFO queue of blocks.
Definition: fifo.c:146
static block_t * block_ChainGather(block_t *p_list)
Definition: vlc_block.h:409
void(* free)(block_t *)
Definition: vlc_block.h:114
static void block_ChainAppend(block_t **pp_list, block_t *p_block)
Definition: vlc_block.h:333
void vlc_fifo_Unlock(vlc_fifo_t *)
Unlocks a block FIFO.
Definition: fifo.c:54
vlc_tick_t i_dts
Definition: vlc_block.h:130
#define VLC_USED
Definition: fourcc_gen.c:32
void vlc_fifo_Signal(vlc_fifo_t *)
Wakes up one thread waiting on the FIFO, if any.
Definition: fifo.c:59