vlc_block.h File Reference

This file implements functions and structures to handle blocks of data in vlc. More...

Include dependency graph for vlc_block.h:

Go to the source code of this file.

Data Structures

struct  block_t

Defines

#define VLC_BLOCK_H   1
#define BLOCK_FLAG_DISCONTINUITY   0x0001
 The content doesn't follow the last block, or is probably broken.
#define BLOCK_FLAG_TYPE_I   0x0002
 Intra frame.
#define BLOCK_FLAG_TYPE_P   0x0004
 Inter frame with backward reference only.
#define BLOCK_FLAG_TYPE_B   0x0008
 Inter frame with backward and forward reference.
#define BLOCK_FLAG_TYPE_PB   0x0010
 For inter frame when you don't know the real type.
#define BLOCK_FLAG_HEADER   0x0020
 Warn that this block is a header one.
#define BLOCK_FLAG_END_OF_FRAME   0x0040
 This is the last block of the frame.
#define BLOCK_FLAG_NO_KEYFRAME   0x0080
 This is not a key frame for bitrate shaping.
#define BLOCK_FLAG_END_OF_SEQUENCE   0x0100
 This block contains the last part of a sequence.
#define BLOCK_FLAG_CLOCK   0x0200
 This block contains a clock reference.
#define BLOCK_FLAG_SCRAMBLED   0x0400
 This block is scrambled.
#define BLOCK_FLAG_PREROLL   0x0800
 This block has to be decoded but not be displayed.
#define BLOCK_FLAG_CORRUPTED   0x1000
 This block is corrupted and/or there is data loss.
#define BLOCK_FLAG_TOP_FIELD_FIRST   0x2000
 This block contains an interlaced picture with top field first.
#define BLOCK_FLAG_BOTTOM_FIELD_FIRST   0x4000
 This block contains an interlaced picture with bottom field first.
#define BLOCK_FLAG_INTERLACED_MASK   (BLOCK_FLAG_TOP_FIELD_FIRST|BLOCK_FLAG_BOTTOM_FIELD_FIRST)
 This block contains an interlaced picture.
#define BLOCK_FLAG_TYPE_MASK   (BLOCK_FLAG_TYPE_I|BLOCK_FLAG_TYPE_P|BLOCK_FLAG_TYPE_B|BLOCK_FLAG_TYPE_PB)
#define BLOCK_FLAG_CORE_PRIVATE_MASK   0x00ff0000
#define BLOCK_FLAG_CORE_PRIVATE_SHIFT   16
#define BLOCK_FLAG_PRIVATE_MASK   0xff000000
#define BLOCK_FLAG_PRIVATE_SHIFT   24
#define block_New(dummy, size)   block_Alloc(size)
#define block_cleanup_push(block)   vlc_cleanup_push (block_Cleanup, block)

Typedefs

typedef struct block_sys_t block_sys_t
typedef void(* block_free_t )(block_t *)

Functions

void block_Init (block_t *, void *, size_t)
block_tblock_Alloc (size_t)
block_tblock_Realloc (block_t *, ssize_t i_pre, size_t i_body)
static block_tblock_Duplicate (block_t *p_block)
static void block_Release (block_t *p_block)
block_tblock_heap_Alloc (void *, void *, size_t)
 Creates a block from a heap allocation.
block_tblock_mmap_Alloc (void *addr, size_t length)
block_tblock_File (int fd)
 Loads a file into a block of memory.
static void block_Cleanup (void *block)
static void block_ChainAppend (block_t **pp_list, block_t *p_block)
static void block_ChainLastAppend (block_t ***ppp_last, block_t *p_block)
static void block_ChainRelease (block_t *p_block)
static size_t block_ChainExtract (block_t *p_list, void *p_data, size_t i_max)
static void block_ChainProperties (block_t *p_list, int *pi_count, size_t *pi_size, mtime_t *pi_length)
static block_tblock_ChainGather (block_t *p_list)
block_fifo_tblock_FifoNew (void)
void block_FifoRelease (block_fifo_t *)
void block_FifoPace (block_fifo_t *fifo, size_t max_depth, size_t max_size)
 Wait until the FIFO gets below a certain size (if needed).
void block_FifoEmpty (block_fifo_t *)
size_t block_FifoPut (block_fifo_t *, block_t *)
 Immediately queue one block at the end of a FIFO.
void block_FifoWake (block_fifo_t *)
block_tblock_FifoGet (block_fifo_t *)
block_tblock_FifoShow (block_fifo_t *)
size_t block_FifoSize (const block_fifo_t *p_fifo)
size_t block_FifoCount (const block_fifo_t *p_fifo)


Detailed Description

This file implements functions and structures to handle blocks of data in vlc.


Define Documentation

#define block_cleanup_push ( block   )     vlc_cleanup_push (block_Cleanup, block)

#define BLOCK_FLAG_BOTTOM_FIELD_FIRST   0x4000

This block contains an interlaced picture with bottom field first.

Referenced by OpenVideoDev().

#define BLOCK_FLAG_CLOCK   0x0200

This block contains a clock reference.

Referenced by ThreadWrite(), TSDate(), TSNew(), and Write().

#define BLOCK_FLAG_CORE_PRIVATE_MASK   0x00ff0000

Referenced by DecoderProcess().

#define BLOCK_FLAG_CORE_PRIVATE_SHIFT   16

#define BLOCK_FLAG_CORRUPTED   0x1000

#define BLOCK_FLAG_DISCONTINUITY   0x0001

#define BLOCK_FLAG_END_OF_FRAME   0x0040

This is the last block of the frame.

Referenced by DecodeBlock(), and StreamRead().

#define BLOCK_FLAG_END_OF_SEQUENCE   0x0100

This block contains the last part of a sequence.

Referenced by DecodeVideo(), dirac_InspectDataUnit(), dirac_TimeGenPush(), and ParseMPEGBlock().

#define BLOCK_FLAG_HEADER   0x0020

Warn that this block is a header one.

Referenced by IOWrite(), Mux(), OggCreateHeader(), and Write().

#define BLOCK_FLAG_INTERLACED_MASK   (BLOCK_FLAG_TOP_FIELD_FIRST|BLOCK_FLAG_BOTTOM_FIELD_FIRST)

This block contains an interlaced picture.

Referenced by DecodeFrame().

#define BLOCK_FLAG_NO_KEYFRAME   0x0080

This is not a key frame for bitrate shaping.

Referenced by FixPES(), and Mux().

#define BLOCK_FLAG_PREROLL   0x0800

This block has to be decoded but not be displayed.

Referenced by DecodeBlock(), DecoderUpdatePreroll(), DecodeVideo(), and EsOutSend().

#define BLOCK_FLAG_PRIVATE_MASK   0xff000000

Referenced by Packetize().

#define BLOCK_FLAG_PRIVATE_SHIFT   24

#define BLOCK_FLAG_SCRAMBLED   0x0400

This block is scrambled.

Referenced by Mux(), and TSDate().

#define BLOCK_FLAG_TOP_FIELD_FIRST   0x2000

This block contains an interlaced picture with top field first.

Referenced by DecodeFrame(), and OpenVideoDev().

#define BLOCK_FLAG_TYPE_B   0x0008

Inter frame with backward and forward reference.

Referenced by asf_packet_create(), DecodeBlock(), Encode(), GetCc(), ParseIDU(), ParseMPEGBlock(), ParseSlice(), ParseVOP(), Pop(), and VideoGetBuffer().

#define BLOCK_FLAG_TYPE_I   0x0002

#define BLOCK_FLAG_TYPE_MASK   (BLOCK_FLAG_TYPE_I|BLOCK_FLAG_TYPE_P|BLOCK_FLAG_TYPE_B|BLOCK_FLAG_TYPE_PB)

Referenced by GetCc(), Mux(), and OutputSend().

#define BLOCK_FLAG_TYPE_P   0x0004

#define BLOCK_FLAG_TYPE_PB   0x0010

For inter frame when you don't know the real type.

Referenced by Demux_Seekable(), and ParseVOP().

#define block_New ( dummy,
size   )     block_Alloc(size)

#define VLC_BLOCK_H   1


Typedef Documentation

typedef void(* block_free_t)(block_t *)

typedef struct block_sys_t block_sys_t


Function Documentation

block_t* block_Alloc ( size_t   ) 

static void block_ChainAppend ( block_t **  pp_list,
block_t p_block 
) [inline, static]

static size_t block_ChainExtract ( block_t p_list,
void *  p_data,
size_t  i_max 
) [static]

static block_t* block_ChainGather ( block_t p_list  )  [inline, static]

static void block_ChainLastAppend ( block_t ***  ppp_last,
block_t p_block 
) [inline, static]

static void block_ChainProperties ( block_t p_list,
int *  pi_count,
size_t *  pi_size,
mtime_t pi_length 
) [inline, static]

static void block_ChainRelease ( block_t p_block  )  [inline, static]

static void block_Cleanup ( void *  block  )  [inline, static]

References block_Release().

static block_t* block_Duplicate ( block_t p_block  )  [inline, static]

size_t block_FifoCount ( const block_fifo_t p_fifo  ) 

void block_FifoEmpty ( block_fifo_t  ) 

block_t* block_FifoGet ( block_fifo_t  ) 

block_fifo_t* block_FifoNew ( void   ) 

void block_FifoPace ( block_fifo_t fifo,
size_t  max_depth,
size_t  max_size 
)

Wait until the FIFO gets below a certain size (if needed).

Note that if more than one thread writes to the FIFO, you cannot assume that the FIFO is actually below the requested size upon return (since another thread could have refilled it already). This is typically not an issue, as this function is meant for (relaxed) congestion control.

This function may be a cancellation point and it is cancel-safe.

Parameters:
fifo queue to wait on
max_depth wait until the queue has no more than this many blocks (use SIZE_MAX to ignore this constraint)
max_size wait until the queue has no more than this many bytes (use SIZE_MAX to ignore this constraint)
Returns:
nothing.

References block_fifo_t::i_depth, block_fifo_t::i_size, block_fifo_t::lock, mutex_cleanup_push, vlc_cleanup_pop, vlc_cond_wait(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_testcancel(), and block_fifo_t::wait_room.

Referenced by input_DecoderDecode().

size_t block_FifoPut ( block_fifo_t p_fifo,
block_t p_block 
)

void block_FifoRelease ( block_fifo_t  ) 

block_t* block_FifoShow ( block_fifo_t  ) 

size_t block_FifoSize ( const block_fifo_t p_fifo  ) 

void block_FifoWake ( block_fifo_t  ) 

block_t* block_File ( int  fd  ) 

Loads a file into a block of memory.

If possible a private file mapping is created. Otherwise, the file is read normally. On 32-bits platforms, this function will not work for very large files, due to memory space constraints. Cancellation point.

Parameters:
fd file descriptor to load from
Returns:
a new block with the file content at p_buffer, and file length at i_buffer (release it with block_Release()), or NULL upon error (see errno).

References block_Alloc(), block_cleanup_push, block_mmap_Alloc(), block_Release(), i, block_t::p_buffer, S_TYPEISSHM, and vlc_cleanup_pop.

Referenced by gnutls_Addx509File(), and test_block_File().

block_t* block_heap_Alloc ( void *  ptr,
void *  addr,
size_t  length 
)

Creates a block from a heap allocation.

This is provided by LibVLC so that manually heap-allocated blocks can safely be deallocated even after the origin plugin has been unloaded from memory.

When block_Release() is called, VLC will free() the specified pointer.

Parameters:
ptr base address of the heap allocation (will be free()'d)
addr base address of the useful buffer data
length bytes length of the useful buffer datan
Returns:
NULL in case of error (ptr free()'d in that case), or a valid block_t pointer.

References block_heap_Release(), block_Init(), block_heap_t::mem, block_t::pf_release, and block_heap_t::self.

Referenced by Demux().

void block_Init ( block_t ,
void *  ,
size_t   
)

block_t* block_mmap_Alloc ( void *  addr,
size_t  length 
)

Referenced by Block(), and block_File().

block_t* block_Realloc ( block_t ,
ssize_t  i_pre,
size_t  i_body 
)

static void block_Release ( block_t p_block  )  [inline, static]

References block_t::pf_release.

Referenced by AccessOutGrabberWrite(), Add_ADTS(), ALSAFill(), aout_InputPlay(), aout_OutputPlay(), asf_packet_create(), AStreamRefillBlock(), AudioGetBuffer(), Block(), block_ChainRelease(), block_Cleanup(), block_FifoEmpty(), block_File(), block_Realloc(), BlockDecode(), BlockRead(), BlockScan(), BlockUDP(), BufferChainClean(), CDDAReadBlocks(), Close(), CmdExecuteSend(), codec_decode(), CommandThread(), Convert(), DecBlock(), Decode(), DecodeAudio(), DecodeBlock(), DecodeFrame(), DecoderDecodeAudio(), DecoderDecodeVideo(), DecoderError(), DecoderGetCc(), DecoderPlaySout(), DecoderProcess(), DecoderProcessSout(), DecodeRtpSpeexPacket(), DecodeVideo(), Demux(), Demux2(), DemuxAudioMethod1(), DemuxBlock(), DemuxClose(), DemuxRecAudio(), DemuxRecCc(), DemuxRecVideo(), DemuxVideo(), DemuxVobSub(), dirac_InspectDataUnit(), Do_S16ToF32(), Do_U8ToF32(), DoWork(), DStreamDelete(), DStreamRead(), Encode(), EncodeBlock(), EncodeFrame(), EsOutSend(), FillBuffer(), Filter(), FixPES(), GatherPES(), gnutls_Addx509File(), GrabVideo(), ImageWriteUrl(), LoadClpi(), LoadMpls(), mediacontrol_snapshot(), mpa_decode(), mpv_decode(), Mux(), MuxBlock(), NewUDPPacket(), no_decode(), Packetize(), PacketizeAVC1(), PacketizeBlock(), packetizer_Header(), packetizer_Packetize(), PacketizeRawBlock(), PacketizeStreamBlock(), PacketizeSub(), Parse(), ParseIDU(), ParseMPEGBlock(), ParsePES(), PEStoTS(), Process(), ProcessPacket(), PutPPS(), PutSPS(), Raw1394Handler(), Read(), Reassemble(), Release(), Resample(), rtmp_new_block(), rtp_decode(), rtp_dgram_recv(), rtp_queue(), rtp_recv(), rtp_stream_recv(), rtp_thread(), S16toFloat32(), S16toS24(), S24toFloat32(), S8toS16(), S8toU16(), scan_session_Push(), SchroBufferFree(), screen_CloseCapture(), Send(), SendAudio(), SendIn(), sout_InputSendBuffer(), stream_Block(), stream_decode(), test_block(), test_block_File(), ThreadSend(), transcode_audio_process(), TSNew(), U16toFloat32(), U8toS16(), U8toU16(), VCDReadBlock(), VideoGetBuffer(), vorbis_decode(), VoutSaveSnapshot(), and Write().


Generated on Sat Nov 21 08:05:26 2009 for VLC by  doxygen 1.5.6