|
VLC
2.1.0-git
|

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_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) |
| 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_t * | aout_new_buffer (decoder_t *, int) |
| static picture_t * | vout_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_t * | spu_new_buffer (decoder_t *, const subpicture_updater_t *) |
| static void | spu_del_buffer (decoder_t *, subpicture_t *) |
| picture_t * | decoder_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_t * | decoder_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_t * | decoder_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_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) |
| 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. | |
| 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. | |
| 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_t * | DecoderBlockFlushNew () |
| 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_t * | aout_request_vout (void *p_private, vout_thread_t *p_vout, video_format_t *p_fmt, bool b_recyle) |
| #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) |
Referenced by DecoderPlayAudio(), DecoderPlayVideo(), and vout_new_buffer().
| #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().
References AOUT_CHAN_DOLBYSTEREO, AOUT_CHAN_LEFT, AOUT_CHAN_PHYSMASK, AOUT_CHAN_RIGHT, aout_DecChangePause(), aout_DecDelete(), aout_DecNew(), aout_DecNewBuffer(), AOUT_FMTS_IDENTICAL, aout_FormatPrepare(), aout_request_vout(), decoder_owner_sys_t::audio, es_format_t::audio, es_format_t::audio_replay_gain, decoder_t::b_error, decoder_owner_sys_t::b_paused, DecoderFlushBuffering(), DecoderUpdateFormatLocked(), decoder_t::fmt_out, audio_format_t::i_bytes_per_frame, es_format_t::i_codec, audio_format_t::i_format, audio_format_t::i_original_channels, input_resource_GetAout(), input_resource_PutAout(), input_SendEventAout(), decoder_owner_sys_t::lock, mdate(), msg_Err, decoder_owner_sys_t::p_aout, decoder_owner_sys_t::p_input, decoder_t::p_owner, aout_request_vout_t::p_private, decoder_owner_sys_t::p_resource, aout_request_vout_t::pf_request_vout, unlikely, var_InheritInteger, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by CreateDecoder().
|
static |
References input_resource_RequestVout(), input_SendEventVout(), decoder_owner_sys_t::p_input, decoder_t::p_owner, and decoder_owner_sys_t::p_resource.
Referenced by aout_new_buffer().
|
static |
Create a decoder object.
| p_input | the input thread |
| p_es | the es descriptor |
| b_packetizer | instead of a decoder |
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().
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.
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.
This function will increase the picture reference count.
(picture_Hold is not usable.)
References decoder_t::pf_picture_link.
|
static |
References _, AUDIO_ES, CreateDecoder(), DecoderThread(), DecoderUnsupportedCodec(), DeleteDecoder(), dialog_Fatal, decoder_t::fmt_out, es_format_t::i_cat, es_format_t::i_codec, module_unneed, msg_Err, N_, decoder_owner_sys_t::p_clock, decoder_t::p_module, decoder_t::p_owner, decoder_owner_sys_t::thread, UNKNOWN_ES, vlc_clone(), vlc_gettext(), VLC_THREAD_PRIORITY_AUDIO, and VLC_THREAD_PRIORITY_VIDEO.
Referenced by input_DecoderCreate(), and input_DecoderNew().
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.
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.
This function will decrease the picture reference count.
(picture_Release is not usable.)
References decoder_t::pf_picture_unlink.
|
static |
References block_Alloc(), BLOCK_FLAG_CORE_FLUSH, BLOCK_FLAG_CORRUPTED, BLOCK_FLAG_DISCONTINUITY, block_t::i_buffer, block_t::i_flags, and block_t::p_buffer.
Referenced by DecoderFlush(), DecoderProcessAudio(), and DecoderProcessVideo().
References aout_DecDeleteBuffer(), aout_DecFlush(), block_Release(), input_thread_private_t::counters, input_thread_private_t::counters_lock, DecoderIsExitRequested(), DecoderPlayAudio(), decoder_owner_sys_t::i_preroll_end, block_t::i_pts, msg_Dbg, input_thread_t::p, decoder_owner_sys_t::p_aout, input_thread_private_t::p_decoded_audio, decoder_owner_sys_t::p_input, input_thread_private_t::p_lost_abuffers, decoder_t::p_owner, input_thread_private_t::p_played_abuffers, decoder_t::pf_decode_audio, stats_Update(), vlc_mutex_lock(), vlc_mutex_unlock(), and VLC_TS_INVALID.
Referenced by DecoderProcessAudio().
References block_Release(), input_thread_private_t::counters, input_thread_private_t::counters_lock, picture_t::date, DecoderGetCc(), DecoderIsExitRequested(), DecoderPlayVideo(), decoder_owner_sys_t::i_preroll_end, msg_Dbg, input_thread_t::p, input_thread_private_t::p_decoded_video, input_thread_private_t::p_displayed_pictures, decoder_owner_sys_t::p_input, input_thread_private_t::p_lost_pictures, decoder_t::p_owner, decoder_owner_sys_t::p_packetizer, decoder_owner_sys_t::p_vout, decoder_t::pf_decode_video, decoder_t::pf_get_cc, stats_Update(), vlc_mutex_lock(), vlc_mutex_unlock(), VLC_TS_INVALID, vout_Flush(), and vout_ReleasePicture().
Referenced by DecoderProcessVideo().
References BLOCK_FLAG_CORE_FLUSH, block_Release(), DecoderProcessOnFlush(), and block_t::i_flags.
Referenced by DecoderThread().
|
static |
References decoder_owner_sys_t::i_ts_delay, input_clock_ConvertTS(), input_clock_GetRate(), INPUT_RATE_DEFAULT, decoder_owner_sys_t::lock, decoder_owner_sys_t::p_clock, decoder_t::p_owner, vlc_assert_locked, and VLC_TS_INVALID.
Referenced by DecoderPlayAudio(), DecoderPlaySpu(), and DecoderPlayVideo().
|
static |
References decoder_owner_sys_t::b_flushing, block_FifoEmpty(), DecoderBlockFlushNew(), input_DecoderDecode(), decoder_owner_sys_t::lock, decoder_owner_sys_t::p_fifo, decoder_t::p_owner, vlc_assert_locked, vlc_cond_signal(), vlc_cond_wait(), decoder_owner_sys_t::wait_acknowledge, and decoder_owner_sys_t::wait_request.
Referenced by input_DecoderFrameNext(), and input_DecoderStartBuffering().
|
static |
References block_ChainRelease(), block_Release(), decoder_owner_sys_t::buffer, decoder_owner_sys_t::i_count, decoder_owner_sys_t::lock, decoder_owner_sys_t::p_audio, decoder_owner_sys_t::p_block, block_t::p_next, picture_t::p_next, subpicture_t::p_next, decoder_t::p_owner, decoder_owner_sys_t::p_picture, decoder_owner_sys_t::p_subpic, decoder_owner_sys_t::p_vout, decoder_owner_sys_t::pp_audio_next, decoder_owner_sys_t::pp_block_next, decoder_owner_sys_t::pp_picture_next, decoder_owner_sys_t::pp_subpic_next, subpicture_Delete(), vlc_assert_locked, and vout_ReleasePicture().
Referenced by aout_new_buffer(), DecoderProcessOnFlush(), DeleteDecoder(), spu_new_buffer(), and vout_new_buffer().
References decoder_owner_sys_t::b_supported, block_Duplicate(), block_Release(), decoder_owner_sys_t::cc, DecoderProcess(), decoder_owner_sys_t::lock, decoder_t::p_owner, decoder_owner_sys_t::pb_present, decoder_t::pf_get_cc, decoder_owner_sys_t::pp_decoder, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by DecoderDecodeVideo(), and DecoderProcessVideo().
|
static |
References input_clock_GetRate(), INPUT_RATE_DEFAULT, decoder_owner_sys_t::p_clock, and decoder_t::p_owner.
Referenced by CreateDecoder().
|
static |
< Object not found
References input_Control(), INPUT_GET_ATTACHMENTS, decoder_owner_sys_t::p_input, decoder_t::p_owner, unlikely, and VLC_ENOOBJ.
Referenced by CreateDecoder().
|
static |
References decoder_owner_sys_t::b_exit, decoder_owner_sys_t::lock, decoder_t::p_owner, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by DecoderDecodeAudio(), DecoderDecodeVideo(), spu_new_buffer(), and vout_new_buffer().
|
static |
References decoder_owner_sys_t::b_flushing, decoder_owner_sys_t::lock, decoder_t::p_owner, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by vout_new_buffer().
|
static |
References aout_DecGetResetLost(), aout_DecPlay(), AOUT_MAX_ADVANCE_TIME, AOUT_MAX_INPUT_RATE, AOUT_MAX_PREPARE_TIME, decoder_owner_sys_t::b_buffering, decoder_owner_sys_t::b_full, decoder_owner_sys_t::b_paused, block_Release(), decoder_owner_sys_t::buffer, DECODER_MAX_BUFFERING_AUDIO_DURATION, DECODER_MAX_BUFFERING_COUNT, DecoderFixTs(), DecoderWaitDate(), DecoderWaitUnblock(), decoder_owner_sys_t::i_count, block_t::i_length, block_t::i_pts, INPUT_RATE_DEFAULT, decoder_owner_sys_t::lock, msg_Dbg, msg_Warn, decoder_owner_sys_t::p_aout, decoder_owner_sys_t::p_audio, block_t::p_next, decoder_t::p_owner, decoder_owner_sys_t::pp_audio_next, unlikely, vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), VLC_TS_INVALID, and decoder_owner_sys_t::wait_acknowledge.
Referenced by DecoderDecodeAudio().
|
static |
References decoder_owner_sys_t::b_buffering, decoder_owner_sys_t::b_full, decoder_owner_sys_t::buffer, DecoderFixTs(), DecoderWaitDate(), DecoderWaitUnblock(), decoder_owner_sys_t::i_count, subpicture_t::i_start, subpicture_t::i_stop, decoder_owner_sys_t::lock, msg_Warn, subpicture_t::p_next, decoder_t::p_owner, decoder_owner_sys_t::p_spu_vout, decoder_owner_sys_t::p_subpic, decoder_owner_sys_t::pp_subpic_next, SPU_MAX_PREPARE_TIME, subpicture_Delete(), vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), VLC_TS_INVALID, vout_PutSubpicture(), and decoder_owner_sys_t::wait_acknowledge.
Referenced by DecoderProcessSpu().
|
static |
References decoder_owner_sys_t::b_buffering, decoder_owner_sys_t::b_first, picture_t::b_force, decoder_owner_sys_t::b_full, decoder_owner_sys_t::buffer, picture_t::date, DECODER_BOGUS_VIDEO_DELAY, DECODER_MAX_BUFFERING_COUNT, DECODER_MAX_BUFFERING_VIDEO_DURATION, DecoderFixTs(), DecoderWaitUnblock(), decoder_owner_sys_t::i_count, decoder_owner_sys_t::i_last_rate, INPUT_RATE_DEFAULT, decoder_owner_sys_t::lock, msg_Dbg, msg_Warn, picture_t::p_next, decoder_t::p_owner, decoder_owner_sys_t::p_picture, decoder_owner_sys_t::p_vout, decoder_owner_sys_t::pp_picture_next, vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), VLC_TS_INVALID, vout_Flush(), vout_GetResetStatistic(), vout_PutPicture(), vout_ReleasePicture(), and decoder_owner_sys_t::wait_acknowledge.
Referenced by DecoderDecodeVideo().
Decode a block.
| p_dec | the decoder object |
| p_block | the block to decode |
References AUDIO_ES, decoder_t::b_error, decoder_owner_sys_t::b_packetizer, BLOCK_FLAG_CORE_FLUSH, BLOCK_FLAG_CORE_PRIVATE_MASK, block_Release(), DecoderProcessAudio(), DecoderProcessOnFlush(), DecoderProcessSpu(), DecoderProcessVideo(), DecoderUpdatePreroll(), decoder_t::fmt_out, block_t::i_buffer, es_format_t::i_cat, block_t::i_flags, decoder_owner_sys_t::i_preroll_end, msg_Err, decoder_t::p_owner, SPU_ES, and VIDEO_ES.
Referenced by DecoderGetCc(), and DecoderThread().
References aout_DecFlush(), DecoderBlockFlushNew(), DecoderDecodeAudio(), es_format_Clean(), es_format_Copy(), decoder_t::fmt_in, decoder_t::fmt_out, es_format_t::i_extra, decoder_owner_sys_t::p_aout, block_t::p_next, decoder_t::p_owner, decoder_owner_sys_t::p_packetizer, and decoder_t::pf_packetize.
Referenced by DecoderProcess().
|
static |
References input_thread_private_t::counters, input_thread_private_t::counters_lock, DecoderPlaySpu(), decoder_owner_sys_t::i_preroll_end, decoder_owner_sys_t::i_spu_channel, subpicture_t::i_start, subpicture_t::i_stop, input_resource_HoldVout(), input_thread_t::p, input_thread_private_t::p_decoded_sub, decoder_owner_sys_t::p_input, decoder_t::p_owner, decoder_owner_sys_t::p_resource, decoder_owner_sys_t::p_spu_vout, decoder_t::pf_decode_sub, stats_Update(), subpicture_Delete(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_object_release, VLC_TS_INVALID, and vout_FlushSubpictureChannel().
Referenced by DecoderProcess().
References DecoderBlockFlushNew(), DecoderDecodeVideo(), DecoderGetCc(), es_format_Clean(), es_format_Copy(), decoder_t::fmt_in, decoder_t::fmt_out, es_format_t::i_extra, block_t::p_next, decoder_t::p_owner, decoder_owner_sys_t::p_packetizer, decoder_owner_sys_t::p_vout, decoder_t::pf_get_cc, decoder_t::pf_packetize, VLC_TS_INVALID, and vout_Flush().
Referenced by DecoderProcess().
|
static |
References decoder_owner_sys_t::b_buffering, decoder_owner_sys_t::b_full, decoder_owner_sys_t::buffer, decoder_owner_sys_t::lock, decoder_t::p_owner, vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), and decoder_owner_sys_t::wait_acknowledge.
Referenced by DecoderThread(), and vout_new_buffer().
|
static |
The decoding main loop.
| p_dec | the decoder |
References decoder_t::b_error, block_FifoGet(), BLOCK_FLAG_CORE_EOS, block_Release(), DecoderError(), DecoderProcess(), DecoderSignalBuffering(), block_t::i_flags, decoder_owner_sys_t::p_fifo, decoder_t::p_owner, vlc_restorecancel(), and vlc_savecancel().
Referenced by decoder_New().
|
static |
References _, dialog_Fatal, and msg_Err.
Referenced by decoder_New(), and input_DecoderSetCcState().
|
static |
References decoder_owner_sys_t::b_fmt_description, es_format_Clean(), es_format_Copy(), decoder_owner_sys_t::fmt_description, decoder_t::fmt_out, decoder_owner_sys_t::lock, decoder_t::p_description, decoder_owner_sys_t::p_description, decoder_t::p_owner, vlc_assert_locked, and vlc_meta_Delete().
Referenced by aout_new_buffer(), and vout_new_buffer().
|
inlinestatic |
References BLOCK_FLAG_DISCONTINUITY, BLOCK_FLAG_PREROLL, block_t::i_dts, block_t::i_flags, block_t::i_pts, and VLC_TS_INVALID.
Referenced by DecoderProcess().
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 |
References decoder_owner_sys_t::b_buffering, decoder_owner_sys_t::b_flushing, decoder_owner_sys_t::b_full, decoder_owner_sys_t::b_paused, decoder_owner_sys_t::buffer, decoder_owner_sys_t::i_ignore, decoder_owner_sys_t::lock, decoder_t::p_owner, decoder_owner_sys_t::pause, vlc_assert_locked, vlc_cond_wait(), and decoder_owner_sys_t::wait_request.
Referenced by DecoderPlayAudio(), DecoderPlaySpu(), and DecoderPlayVideo().
|
static |
Destroys a decoder object.
| p_dec | the decoder object |
References aout_DecDelete(), aout_DecFlush(), block_FifoCount(), block_FifoEmpty(), block_FifoRelease(), DecoderFlushBuffering(), es_format_Clean(), decoder_owner_sys_t::fmt_description, decoder_t::fmt_in, decoder_t::fmt_out, es_format_t::i_cat, es_format_t::i_codec, decoder_owner_sys_t::i_spu_channel, input_resource_HoldVout(), input_resource_PutAout(), input_resource_RequestVout(), input_SendEventAout(), input_SendEventVout(), decoder_owner_sys_t::lock, module_unneed, msg_Dbg, decoder_owner_sys_t::p_aout, 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_resource, decoder_owner_sys_t::p_sout_input, decoder_owner_sys_t::p_spu_vout, decoder_owner_sys_t::p_vout, decoder_owner_sys_t::sout, sout_InputDelete(), SPU_ES, vlc_cond_destroy(), vlc_meta_Delete(), vlc_mutex_destroy(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_object_release, vout_FlushSubpictureChannel(), vout_Reset(), decoder_owner_sys_t::wait_acknowledge, and decoder_owner_sys_t::wait_request.
Referenced by decoder_New(), input_DecoderDelete(), and input_DecoderSetCcState().
This function changes the delay.
References decoder_owner_sys_t::i_ts_delay, decoder_owner_sys_t::lock, decoder_t::p_owner, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by EsOutDecoderChangeDelay().
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().
Put a block_t in the decoder's fifo.
Thread-safe w.r.t. the decoder. May be a cancellation point.
| p_dec | the decoder object |
| p_block | the 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 | ) |
Kills a decoder thread and waits until it's finished.
| p_input | the input thread |
| p_es | the es descriptor |
References decoder_owner_sys_t::b_buffering, decoder_owner_sys_t::b_exit, decoder_owner_sys_t::b_flushing, decoder_owner_sys_t::b_paused, decoder_owner_sys_t::b_supported, decoder_owner_sys_t::cc, DeleteDecoder(), input_DecoderSetCcState(), decoder_owner_sys_t::lock, module_unneed, decoder_t::p_module, decoder_t::p_owner, decoder_owner_sys_t::thread, vlc_cancel(), vlc_cond_signal(), vlc_join(), vlc_mutex_lock(), vlc_mutex_unlock(), and decoder_owner_sys_t::wait_request.
Referenced by EsDestroyDecoder(), EsOutSetRecord(), and EsOutTerminate().
This function force the display of the next picture and fills the stream time consumed.
References decoder_owner_sys_t::b_paused, DecoderFlush(), decoder_t::fmt_out, es_format_t::i_cat, decoder_owner_sys_t::i_ignore, decoder_owner_sys_t::lock, decoder_t::p_owner, decoder_owner_sys_t::p_vout, decoder_owner_sys_t::pause, VIDEO_ES, vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), vout_NextPicture(), and decoder_owner_sys_t::wait_request.
Referenced by EsOutFrameNext().
| 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 | ) |
This function returns true if the decoder fifo is empty and false otherwise.
References aout_DecIsEmpty(), AUDIO_ES, decoder_owner_sys_t::b_buffering, block_FifoCount(), decoder_t::fmt_out, es_format_t::i_cat, decoder_owner_sys_t::lock, decoder_owner_sys_t::p_aout, decoder_owner_sys_t::p_fifo, decoder_t::p_owner, decoder_owner_sys_t::p_vout, VIDEO_ES, vlc_mutex_lock(), vlc_mutex_unlock(), and vout_IsEmpty().
Referenced by EsOutDecodersIsEmpty(), and EsOutDel().
| 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.
| p_input | the input thread |
| p_es | the es descriptor |
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 | ||
| ) |
This function activates the request closed caption channel.
< Unspecified error
< Unspecified error
< Unspecified error
< No error
References _, decoder_owner_sys_t::cc, CreateDecoder(), DecoderUnsupportedCodec(), DeleteDecoder(), dialog_Fatal, es_format_Init(), decoder_owner_sys_t::lock, module_unneed, msg_Err, decoder_owner_sys_t::p_clock, decoder_owner_sys_t::p_input, decoder_t::p_module, decoder_t::p_owner, decoder_owner_sys_t::p_resource, decoder_owner_sys_t::p_sout, decoder_owner_sys_t::pb_present, decoder_owner_sys_t::pp_decoder, SPU_ES, VLC_EGENERIC, VLC_FOURCC, vlc_mutex_lock(), vlc_mutex_unlock(), VLC_OBJECT, and VLC_SUCCESS.
Referenced by EsSelect(), EsUnselect(), and input_DecoderDelete().
| void input_DecoderStartBuffering | ( | decoder_t * | p_dec | ) |
This function starts the buffering mode.
References decoder_owner_sys_t::b_buffering, decoder_owner_sys_t::b_first, decoder_owner_sys_t::b_full, decoder_owner_sys_t::buffer, DecoderFlush(), decoder_owner_sys_t::i_count, decoder_owner_sys_t::lock, decoder_owner_sys_t::p_audio, decoder_owner_sys_t::p_block, decoder_t::p_owner, decoder_owner_sys_t::p_picture, decoder_owner_sys_t::p_subpic, decoder_owner_sys_t::pp_audio_next, decoder_owner_sys_t::pp_block_next, decoder_owner_sys_t::pp_picture_next, decoder_owner_sys_t::pp_subpic_next, vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), and decoder_owner_sys_t::wait_request.
Referenced by EsCreateDecoder(), EsOutChangePosition(), and EsOutSetRecord().
| void input_DecoderStopBuffering | ( | decoder_t * | p_dec | ) |
This function stops the buffering mode.
References decoder_owner_sys_t::b_buffering, decoder_owner_sys_t::lock, decoder_t::p_owner, vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), and decoder_owner_sys_t::wait_request.
Referenced by EsOutDecodersStopBuffering().
| void input_DecoderWaitBuffering | ( | decoder_t * | p_dec | ) |
This function waits for the decoder to have buffered sufficient data.
References decoder_owner_sys_t::b_buffering, decoder_owner_sys_t::b_full, block_FifoWake(), decoder_owner_sys_t::buffer, decoder_owner_sys_t::lock, decoder_owner_sys_t::p_fifo, decoder_t::p_owner, vlc_cond_wait(), vlc_mutex_lock(), vlc_mutex_unlock(), and decoder_owner_sys_t::wait_acknowledge.
Referenced by EsOutDecodersStopBuffering().
|
static |
References input_resource_HoldVout(), msg_Warn, decoder_t::p_owner, decoder_owner_sys_t::p_resource, decoder_owner_sys_t::p_spu_vout, subpicture_Delete(), and vlc_object_release.
Referenced by CreateDecoder().
|
static |
References decoder_t::b_error, subpicture_t::b_subtitle, DECODER_SPU_VOUT_WAIT_DURATION, DecoderFlushBuffering(), DecoderIsExitRequested(), subpicture_t::i_channel, subpicture_t::i_order, decoder_owner_sys_t::i_spu_channel, decoder_owner_sys_t::i_spu_order, input_resource_HoldVout(), decoder_owner_sys_t::lock, msg_Warn, msleep, decoder_t::p_owner, decoder_owner_sys_t::p_resource, decoder_owner_sys_t::p_spu_vout, subpicture_New(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_object_release, and vout_RegisterSubpictureChannel().
Referenced by CreateDecoder().
References decoder_t::p_owner, decoder_owner_sys_t::p_vout, and vout_ReleasePicture().
Referenced by CreateDecoder().
References decoder_t::p_owner, decoder_owner_sys_t::p_vout, and vout_HoldPicture().
Referenced by CreateDecoder().
References decoder_t::b_error, DECODER_MAX_BUFFERING_COUNT, DecoderFlushBuffering(), DecoderIsExitRequested(), DecoderIsFlushing(), DecoderSignalBuffering(), DecoderUpdateFormatLocked(), decoder_t::fmt_in, decoder_t::fmt_out, vlc_chroma_description_t::h, video_format_t::i_chroma, es_format_t::i_codec, decoder_t::i_extra_picture_buffers, video_format_t::i_height, video_format_t::i_sar_den, video_format_t::i_sar_num, video_format_t::i_visible_height, video_format_t::i_visible_width, video_format_t::i_width, video_format_t::i_x_offset, video_format_t::i_y_offset, input_resource_RequestVout(), input_SendEventVout(), decoder_owner_sys_t::lock, msg_Err, msg_Warn, msleep, vlc_chroma_description_t::p, decoder_owner_sys_t::p_input, decoder_t::p_owner, decoder_owner_sys_t::p_resource, decoder_owner_sys_t::p_vout, vlc_chroma_description_t::plane_count, var_CreateGetBool, decoder_owner_sys_t::video, es_format_t::video, VLC_CODEC_DIRAC, VLC_CODEC_H264, VLC_CODEC_VP5, VLC_CODEC_VP6, VLC_CODEC_VP6F, VLC_CODEC_VP8, vlc_fourcc_GetChromaDescription(), vlc_fourcc_IsYUV(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_ureduce(), vout_FixLeaks(), vout_GetPicture(), VOUT_OUTMEM_SLEEP, and vlc_chroma_description_t::w.
Referenced by CreateDecoder().
References decoder_t::p_owner, decoder_owner_sys_t::p_vout, and vout_ReleasePicture().
Referenced by CreateDecoder().
1.8.1.2