VLC  2.1.0-git
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
decoder.c File Reference
Include dependency graph for decoder.c:

Data Structures

struct  decoder_owner_sys_t

Macros

#define DECODER_MAX_BUFFERING_COUNT   (4)
#define DECODER_MAX_BUFFERING_AUDIO_DURATION   (AOUT_MAX_PREPARE_TIME)
#define DECODER_MAX_BUFFERING_VIDEO_DURATION   (1*CLOCK_FREQ)
#define DECODER_BOGUS_VIDEO_DELAY   ((mtime_t)(DEFAULT_PTS_DELAY * 30))
#define DECODER_SPU_VOUT_WAIT_DURATION   ((int)(0.200*CLOCK_FREQ))

Functions

static decoder_tCreateDecoder (vlc_object_t *p_parent, input_thread_t *p_input, es_format_t *fmt, bool b_packetizer, input_resource_t *p_resource, sout_instance_t *p_sout)
 Create a decoder object.
static void DeleteDecoder (decoder_t *p_dec)
 Destroys a decoder object.
static void * DecoderThread (void *p_data)
 The decoding main loop.
static void DecoderProcess (decoder_t *p_dec, block_t *p_block)
 Decode a block.
static void DecoderError (decoder_t *p_dec, block_t *p_block)
static void DecoderOutputChangePause (decoder_t *, bool b_paused, mtime_t i_date)
static void DecoderFlush (decoder_t *)
static void DecoderSignalBuffering (decoder_t *, bool)
static void DecoderFlushBuffering (decoder_t *)
static void DecoderUnsupportedCodec (decoder_t *, vlc_fourcc_t)
static block_taout_new_buffer (decoder_t *, int)
static picture_tvout_new_buffer (decoder_t *)
static void vout_del_buffer (decoder_t *, picture_t *)
static void vout_link_picture (decoder_t *, picture_t *)
static void vout_unlink_picture (decoder_t *, picture_t *)
static subpicture_tspu_new_buffer (decoder_t *, const subpicture_updater_t *)
static void spu_del_buffer (decoder_t *, subpicture_t *)
picture_tdecoder_NewPicture (decoder_t *p_decoder)
 This function will return a new picture usable by a decoder as an output buffer.
void decoder_DeletePicture (decoder_t *p_decoder, picture_t *p_picture)
 This function will release a picture create by decoder_NewPicture.
void decoder_LinkPicture (decoder_t *p_decoder, picture_t *p_picture)
 This function will increase the picture reference count.
void decoder_UnlinkPicture (decoder_t *p_decoder, picture_t *p_picture)
 This function will decrease the picture reference count.
block_tdecoder_NewAudioBuffer (decoder_t *p_decoder, int i_size)
 This function will return a new audio buffer usable by a decoder as an output buffer.
subpicture_tdecoder_NewSubpicture (decoder_t *p_decoder, const subpicture_updater_t *p_dyn)
 This function will return a new subpicture usable by a decoder as an output buffer.
void decoder_DeleteSubpicture (decoder_t *p_decoder, subpicture_t *p_subpicture)
 This function will release a subpicture created by decoder_NewSubicture.
int decoder_GetInputAttachments (decoder_t *p_dec, input_attachment_t ***ppp_attachment, int *pi_attachment)
 This function gives all input attachments at once.
mtime_t decoder_GetDisplayDate (decoder_t *p_dec, mtime_t i_ts)
 This function converts a decoder timestamp into a display date comparable to mdate().
int decoder_GetDisplayRate (decoder_t *p_dec)
 This function returns the current input rate.
static decoder_tdecoder_New (vlc_object_t *p_parent, input_thread_t *p_input, es_format_t *fmt, input_clock_t *p_clock, input_resource_t *p_resource, sout_instance_t *p_sout)
decoder_tinput_DecoderNew (input_thread_t *p_input, es_format_t *fmt, input_clock_t *p_clock, sout_instance_t *p_sout)
 Spawns a new decoder thread from the input thread.
decoder_tinput_DecoderCreate (vlc_object_t *p_parent, es_format_t *fmt, input_resource_t *p_resource)
 Spawn a decoder thread outside of the input thread.
void input_DecoderDelete (decoder_t *p_dec)
 Kills a decoder thread and waits until it's finished.
void input_DecoderDecode (decoder_t *p_dec, block_t *p_block, bool b_do_pace)
 Put a block_t in the decoder's fifo.
bool input_DecoderIsEmpty (decoder_t *p_dec)
 This function returns true if the decoder fifo is empty and false otherwise.
void input_DecoderIsCcPresent (decoder_t *p_dec, bool pb_present[4])
 This function set each pb_present entry to true if the corresponding channel exists or false otherwise.
int input_DecoderSetCcState (decoder_t *p_dec, bool b_decode, int i_channel)
 This function activates the request closed caption channel.
int input_DecoderGetCcState (decoder_t *p_dec, bool *pb_decode, int i_channel)
 This function returns an error if the requested channel does not exist and set pb_decode to the channel status(active or not) otherwise.
void input_DecoderChangePause (decoder_t *p_dec, bool b_paused, mtime_t i_date)
 This function changes the pause state.
void input_DecoderChangeDelay (decoder_t *p_dec, mtime_t i_delay)
 This function changes the delay.
void input_DecoderStartBuffering (decoder_t *p_dec)
 This function starts the buffering mode.
void input_DecoderStopBuffering (decoder_t *p_dec)
 This function stops the buffering mode.
void input_DecoderWaitBuffering (decoder_t *p_dec)
 This function waits for the decoder to have buffered sufficient data.
void input_DecoderFrameNext (decoder_t *p_dec, mtime_t *pi_duration)
 This function force the display of the next picture and fills the stream time consumed.
bool input_DecoderHasFormatChanged (decoder_t *p_dec, es_format_t *p_fmt, vlc_meta_t **pp_meta)
 This function will return true if the ES format or meta data have changed since the last call.
size_t input_DecoderGetFifoSize (decoder_t *p_dec)
 This function returns the current size in bytes of the decoder fifo.
void input_DecoderGetObjects (decoder_t *p_dec, vout_thread_t **pp_vout, audio_output_t **pp_aout)
 This function returns the objects associated to a decoder.
static int DecoderGetInputAttachments (decoder_t *p_dec, input_attachment_t ***ppp_attachment, int *pi_attachment)
static mtime_t DecoderGetDisplayDate (decoder_t *p_dec, mtime_t i_ts)
static int DecoderGetDisplayRate (decoder_t *p_dec)
static block_tDecoderBlockFlushNew ()
static bool DecoderIsFlushing (decoder_t *p_dec)
static void DecoderWaitUnblock (decoder_t *p_dec, bool *pb_reject)
static void DecoderUpdatePreroll (int64_t *pi_preroll, const block_t *p)
static void DecoderFixTs (decoder_t *p_dec, mtime_t *pi_ts0, mtime_t *pi_ts1, mtime_t *pi_duration, int *pi_rate, mtime_t i_ts_bound)
static bool DecoderIsExitRequested (decoder_t *p_dec)
static void DecoderWaitDate (decoder_t *p_dec, bool *pb_reject, mtime_t i_deadline)
 If *pb_reject, it does nothing, otherwise it waits for the given deadline or a flush request (in which case it set *pi_reject to true.
static void DecoderPlayAudio (decoder_t *p_dec, block_t *p_audio, int *pi_played_sum, int *pi_lost_sum)
static void DecoderDecodeAudio (decoder_t *p_dec, block_t *p_block)
static void DecoderGetCc (decoder_t *p_dec, decoder_t *p_dec_cc)
static void DecoderPlayVideo (decoder_t *p_dec, picture_t *p_picture, int *pi_played_sum, int *pi_lost_sum)
static void DecoderDecodeVideo (decoder_t *p_dec, block_t *p_block)
static void DecoderPlaySpu (decoder_t *p_dec, subpicture_t *p_subpic)
static void DecoderProcessVideo (decoder_t *p_dec, block_t *p_block, bool b_flush)
static void DecoderProcessAudio (decoder_t *p_dec, block_t *p_block, bool b_flush)
static void DecoderProcessSpu (decoder_t *p_dec, block_t *p_block, bool b_flush)
static void DecoderProcessOnFlush (decoder_t *p_dec)
static void DecoderUpdateFormatLocked (decoder_t *p_dec)
static vout_thread_taout_request_vout (void *p_private, vout_thread_t *p_vout, video_format_t *p_fmt, bool b_recyle)

Macro Definition Documentation

#define DECODER_BOGUS_VIDEO_DELAY   ((mtime_t)(DEFAULT_PTS_DELAY * 30))

Referenced by DecoderPlayVideo().

#define DECODER_MAX_BUFFERING_AUDIO_DURATION   (AOUT_MAX_PREPARE_TIME)

Referenced by DecoderPlayAudio().

#define DECODER_MAX_BUFFERING_COUNT   (4)
#define DECODER_MAX_BUFFERING_VIDEO_DURATION   (1*CLOCK_FREQ)

Referenced by DecoderPlayVideo().

#define DECODER_SPU_VOUT_WAIT_DURATION   ((int)(0.200*CLOCK_FREQ))

Referenced by spu_new_buffer().

Function Documentation

static block_t * aout_new_buffer ( decoder_t p_dec,
int  i_samples 
)
static
static vout_thread_t* aout_request_vout ( void *  p_private,
vout_thread_t p_vout,
video_format_t p_fmt,
bool  b_recyle 
)
static
static decoder_t * CreateDecoder ( vlc_object_t p_parent,
input_thread_t p_input,
es_format_t fmt,
bool  b_packetizer,
input_resource_t p_resource,
sout_instance_t p_sout 
)
static

Create a decoder object.

Parameters
p_inputthe input thread
p_esthe es descriptor
b_packetizerinstead of a decoder
Returns
the decoder object

References aout_new_buffer(), AUDIO_ES, es_format_t::audio_replay_gain, AUDIO_REPLAY_GAIN_MAX, decoder_owner_sys_t::b_buffering, decoder_owner_sys_t::b_exit, decoder_owner_sys_t::b_first, decoder_owner_sys_t::b_flushing, decoder_owner_sys_t::b_fmt_description, decoder_owner_sys_t::b_full, decoder_t::b_need_packetized, es_format_t::b_packetized, decoder_owner_sys_t::b_packetizer, decoder_owner_sys_t::b_paused, decoder_owner_sys_t::b_supported, block_FifoNew(), decoder_owner_sys_t::buffer, decoder_owner_sys_t::cc, DecoderGetDisplayDate(), DecoderGetDisplayRate(), DecoderGetInputAttachments(), es_format_Clean(), es_format_Copy(), es_format_Init(), decoder_owner_sys_t::fmt_description, decoder_t::fmt_in, decoder_t::fmt_out, es_format_t::i_cat, decoder_owner_sys_t::i_count, decoder_owner_sys_t::i_date, decoder_owner_sys_t::i_ignore, decoder_owner_sys_t::i_last_rate, decoder_owner_sys_t::i_preroll_end, decoder_owner_sys_t::i_spu_channel, decoder_owner_sys_t::i_spu_order, decoder_owner_sys_t::i_ts_delay, INPUT_RATE_DEFAULT, decoder_owner_sys_t::lock, module_need, decoder_owner_sys_t::p_aout, decoder_owner_sys_t::p_audio, decoder_owner_sys_t::p_block, decoder_t::p_description, decoder_owner_sys_t::p_description, decoder_owner_sys_t::p_fifo, decoder_owner_sys_t::p_input, decoder_t::p_module, decoder_t::p_owner, decoder_owner_sys_t::p_packetizer, decoder_owner_sys_t::p_picture, decoder_owner_sys_t::p_resource, decoder_owner_sys_t::p_sout, decoder_owner_sys_t::p_sout_input, decoder_owner_sys_t::p_spu_vout, decoder_owner_sys_t::p_subpic, decoder_owner_sys_t::p_vout, decoder_owner_sys_t::pause, audio_replay_gain_t::pb_gain, audio_replay_gain_t::pb_peak, decoder_owner_sys_t::pb_present, decoder_t::pf_aout_buffer_new, decoder_t::pf_decode_audio, decoder_t::pf_decode_sub, decoder_t::pf_decode_video, audio_replay_gain_t::pf_gain, decoder_t::pf_get_attachments, decoder_t::pf_get_cc, decoder_t::pf_get_display_date, decoder_t::pf_get_display_rate, decoder_t::pf_packetize, audio_replay_gain_t::pf_peak, decoder_t::pf_picture_link, decoder_t::pf_picture_unlink, decoder_t::pf_spu_buffer_del, decoder_t::pf_spu_buffer_new, decoder_t::pf_vout_buffer_del, decoder_t::pf_vout_buffer_new, decoder_owner_sys_t::pp_decoder, spu_del_buffer(), spu_new_buffer(), UNKNOWN_ES, unlikely, vlc_cond_init(), vlc_custom_create, vlc_mutex_init(), vlc_object_release, VLC_TS_INVALID, vout_del_buffer(), vout_link_picture(), vout_new_buffer(), vout_unlink_picture(), decoder_owner_sys_t::wait_acknowledge, and decoder_owner_sys_t::wait_request.

Referenced by decoder_New(), and input_DecoderSetCcState().

void decoder_DeletePicture ( decoder_t p_decoder,
picture_t p_picture 
)

This function will release a picture create by decoder_NewPicture.

References decoder_t::pf_vout_buffer_del.

void decoder_DeleteSubpicture ( decoder_t p_decoder,
subpicture_t p_subpicture 
)

This function will release a subpicture created by decoder_NewSubicture.

References decoder_t::pf_spu_buffer_del.

mtime_t decoder_GetDisplayDate ( decoder_t ,
mtime_t   
)

This function converts a decoder timestamp into a display date comparable to mdate().

You MUST use it only for gathering statistics about speed.

References decoder_t::pf_get_display_date, and VLC_TS_INVALID.

Referenced by decoder_SynchroChoose().

int decoder_GetDisplayRate ( decoder_t )

This function returns the current input rate.

You MUST use it only for gathering statistics about speed.

References INPUT_RATE_DEFAULT, and decoder_t::pf_get_display_rate.

Referenced by decoder_SynchroChoose().

int decoder_GetInputAttachments ( decoder_t ,
input_attachment_t ***  ppp_attachment,
int *  pi_attachment 
)

This function gives all input attachments at once.

You MUST release the returned values

< Unspecified error

References decoder_t::pf_get_attachments, and VLC_EGENERIC.

void decoder_LinkPicture ( decoder_t ,
picture_t  
)

This function will increase the picture reference count.

(picture_Hold is not usable.)

References decoder_t::pf_picture_link.

static decoder_t* decoder_New ( vlc_object_t p_parent,
input_thread_t p_input,
es_format_t fmt,
input_clock_t p_clock,
input_resource_t p_resource,
sout_instance_t p_sout 
)
static
block_t* decoder_NewAudioBuffer ( decoder_t ,
int  i_size 
)

This function will return a new audio buffer usable by a decoder as an output buffer.

You have to release it using decoder_DeleteAudioBuffer or by returning it to the caller as a pf_decode_audio return value.

References decoder_t::pf_aout_buffer_new.

picture_t* decoder_NewPicture ( decoder_t )

This function will return a new picture usable by a decoder as an output buffer.

You have to release it using decoder_DeletePicture or by returning it to the caller as a pf_decode_video return value.

References msg_Warn, and decoder_t::pf_vout_buffer_new.

subpicture_t* decoder_NewSubpicture ( decoder_t ,
const subpicture_updater_t  
)

This function will return a new subpicture usable by a decoder as an output buffer.

You have to release it using decoder_DeleteSubpicture or by returning it to the caller as a pf_decode_sub return value.

References msg_Warn, and decoder_t::pf_spu_buffer_new.

void decoder_UnlinkPicture ( decoder_t ,
picture_t  
)

This function will decrease the picture reference count.

(picture_Release is not usable.)

References decoder_t::pf_picture_unlink.

static block_t* DecoderBlockFlushNew ( )
static
static void DecoderDecodeAudio ( decoder_t p_dec,
block_t p_block 
)
static
static void DecoderDecodeVideo ( decoder_t p_dec,
block_t p_block 
)
static
static void DecoderError ( decoder_t p_dec,
block_t p_block 
)
static
static void DecoderFixTs ( decoder_t p_dec,
mtime_t pi_ts0,
mtime_t pi_ts1,
mtime_t pi_duration,
int *  pi_rate,
mtime_t  i_ts_bound 
)
static
static void DecoderFlush ( decoder_t p_dec)
static
static void DecoderFlushBuffering ( decoder_t p_dec)
static
static void DecoderGetCc ( decoder_t p_dec,
decoder_t p_dec_cc 
)
static
static mtime_t DecoderGetDisplayDate ( decoder_t p_dec,
mtime_t  i_ts 
)
static
static int DecoderGetDisplayRate ( decoder_t p_dec)
static
static int DecoderGetInputAttachments ( decoder_t p_dec,
input_attachment_t ***  ppp_attachment,
int *  pi_attachment 
)
static
static bool DecoderIsExitRequested ( decoder_t p_dec)
static
static bool DecoderIsFlushing ( decoder_t p_dec)
static
static void DecoderOutputChangePause ( decoder_t p_dec,
bool  b_paused,
mtime_t  i_date 
)
static
static void DecoderPlayAudio ( decoder_t p_dec,
block_t p_audio,
int *  pi_played_sum,
int *  pi_lost_sum 
)
static
static void DecoderPlaySpu ( decoder_t p_dec,
subpicture_t p_subpic 
)
static
static void DecoderPlayVideo ( decoder_t p_dec,
picture_t p_picture,
int *  pi_played_sum,
int *  pi_lost_sum 
)
static
static void DecoderProcess ( decoder_t p_dec,
block_t p_block 
)
static
static void DecoderProcessAudio ( decoder_t p_dec,
block_t p_block,
bool  b_flush 
)
static
static void DecoderProcessOnFlush ( decoder_t p_dec)
static
static void DecoderProcessSpu ( decoder_t p_dec,
block_t p_block,
bool  b_flush 
)
static
static void DecoderProcessVideo ( decoder_t p_dec,
block_t p_block,
bool  b_flush 
)
static
static void DecoderSignalBuffering ( decoder_t p_dec,
bool  b_full 
)
static
static void * DecoderThread ( void *  p_data)
static
static void DecoderUnsupportedCodec ( decoder_t p_dec,
vlc_fourcc_t  codec 
)
static

References _, dialog_Fatal, and msg_Err.

Referenced by decoder_New(), and input_DecoderSetCcState().

static void DecoderUpdateFormatLocked ( decoder_t p_dec)
static
static void DecoderUpdatePreroll ( int64_t *  pi_preroll,
const block_t p 
)
inlinestatic
static void DecoderWaitDate ( decoder_t p_dec,
bool *  pb_reject,
mtime_t  i_deadline 
)
static

If *pb_reject, it does nothing, otherwise it waits for the given deadline or a flush request (in which case it set *pi_reject to true.

References decoder_owner_sys_t::b_exit, decoder_owner_sys_t::b_flushing, decoder_owner_sys_t::lock, decoder_t::p_owner, vlc_assert_locked, vlc_cond_timedwait(), and decoder_owner_sys_t::wait_request.

Referenced by DecoderPlayAudio(), and DecoderPlaySpu().

static void DecoderWaitUnblock ( decoder_t p_dec,
bool *  pb_reject 
)
static
static void DeleteDecoder ( decoder_t p_dec)
static
void input_DecoderChangeDelay ( decoder_t p_dec,
mtime_t  i_delay 
)
void input_DecoderChangePause ( decoder_t ,
bool  b_paused,
mtime_t  i_date 
)

This function changes the pause state.

The date parameter MUST hold the exact date at wich the change has been done for proper vout/aout pausing.

References decoder_owner_sys_t::b_paused, DecoderOutputChangePause(), decoder_owner_sys_t::i_date, decoder_owner_sys_t::i_ignore, likely, decoder_owner_sys_t::lock, decoder_t::p_owner, decoder_owner_sys_t::pause, vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), and decoder_owner_sys_t::wait_request.

Referenced by EsOutDecodersChangePause().

decoder_t* input_DecoderCreate ( vlc_object_t p_parent,
es_format_t fmt,
input_resource_t p_resource 
)

Spawn a decoder thread outside of the input thread.

References decoder_New().

void input_DecoderDecode ( decoder_t p_dec,
block_t p_block,
bool  b_do_pace 
)

Put a block_t in the decoder's fifo.

Thread-safe w.r.t. the decoder. May be a cancellation point.

Parameters
p_decthe decoder object
p_blockthe data block

References decoder_owner_sys_t::b_buffering, block_FifoEmpty(), block_FifoPace(), block_FifoPut(), block_FifoSize(), msg_Warn, decoder_owner_sys_t::p_fifo, and decoder_t::p_owner.

Referenced by DecoderFlush(), EsOutControlLocked(), and EsOutSend().

void input_DecoderDelete ( decoder_t p_dec)
void input_DecoderFrameNext ( decoder_t p_dec,
mtime_t pi_duration 
)
int input_DecoderGetCcState ( decoder_t p_dec,
bool *  pb_decode,
int  i_channel 
)

This function returns an error if the requested channel does not exist and set pb_decode to the channel status(active or not) otherwise.

< Unspecified error

< Unspecified error

References decoder_owner_sys_t::cc, decoder_owner_sys_t::lock, decoder_t::p_owner, decoder_owner_sys_t::pb_present, decoder_owner_sys_t::pp_decoder, VLC_EGENERIC, vlc_mutex_lock(), and vlc_mutex_unlock().

Referenced by EsIsSelected().

size_t input_DecoderGetFifoSize ( decoder_t p_dec)

This function returns the current size in bytes of the decoder fifo.

References block_FifoSize(), decoder_owner_sys_t::p_fifo, and decoder_t::p_owner.

Referenced by EsOutIsExtraBufferingAllowed().

void input_DecoderGetObjects ( decoder_t ,
vout_thread_t **  ,
audio_output_t **   
)

This function returns the objects associated to a decoder.

They must be released using vlc_object_release().

References decoder_owner_sys_t::lock, decoder_owner_sys_t::p_aout, decoder_t::p_owner, decoder_owner_sys_t::p_vout, vlc_mutex_lock(), vlc_mutex_unlock(), and vlc_object_hold.

Referenced by EsOutControlLocked().

bool input_DecoderHasFormatChanged ( decoder_t p_dec,
es_format_t p_fmt,
vlc_meta_t **  pp_meta 
)

This function will return true if the ES format or meta data have changed since the last call.

In which case, it will do a copy of the current es_format_t if p_fmt is not NULL and will do a copy of the current description if pp_meta is non NULL. The es_format_t MUST be freed by es_format_Clean and *pp_meta MUST be freed by vlc_meta_Delete. Otherwise it will return false and will not initialize p_fmt and *pp_meta.

References decoder_owner_sys_t::b_fmt_description, es_format_Copy(), decoder_owner_sys_t::fmt_description, decoder_owner_sys_t::lock, decoder_owner_sys_t::p_description, decoder_t::p_owner, vlc_meta_Merge(), vlc_meta_New(), vlc_mutex_lock(), and vlc_mutex_unlock().

Referenced by EsOutSend().

void input_DecoderIsCcPresent ( decoder_t p_dec,
bool  pb_present[4] 
)

This function set each pb_present entry to true if the corresponding channel exists or false otherwise.

References decoder_owner_sys_t::cc, decoder_owner_sys_t::lock, decoder_t::p_owner, decoder_owner_sys_t::pb_present, vlc_mutex_lock(), and vlc_mutex_unlock().

Referenced by EsOutSend().

bool input_DecoderIsEmpty ( decoder_t p_dec)
decoder_t* input_DecoderNew ( input_thread_t p_input,
es_format_t fmt,
input_clock_t p_clock,
sout_instance_t p_sout 
)

Spawns a new decoder thread from the input thread.

Parameters
p_inputthe input thread
p_esthe es descriptor
Returns
the spawned decoder object

References decoder_New(), input_thread_t::p, input_thread_private_t::p_resource, and VLC_OBJECT.

Referenced by EsCreateDecoder(), and EsOutSetRecord().

int input_DecoderSetCcState ( decoder_t p_dec,
bool  b_decode,
int  i_channel 
)
void input_DecoderStartBuffering ( decoder_t p_dec)
void input_DecoderStopBuffering ( decoder_t p_dec)
void input_DecoderWaitBuffering ( decoder_t p_dec)
static void spu_del_buffer ( decoder_t p_dec,
subpicture_t p_subpic 
)
static
static subpicture_t * spu_new_buffer ( decoder_t p_dec,
const subpicture_updater_t p_updater 
)
static
static void vout_del_buffer ( decoder_t p_dec,
picture_t p_pic 
)
static
static void vout_link_picture ( decoder_t p_dec,
picture_t p_pic 
)
static
static picture_t * vout_new_buffer ( decoder_t p_dec)
static
static void vout_unlink_picture ( decoder_t p_dec,
picture_t p_pic 
)
static