VLC
3.0.15
|
Data Structures | |
struct | decoder_owner_sys_t |
Macros | |
#define | MAX_CC_DECODERS 64 /* The es_out only creates one type of es */ |
#define | DECODER_BOGUS_VIDEO_DELAY ((mtime_t)(DEFAULT_PTS_DELAY * 30)) |
#define | DECODER_SPU_VOUT_WAIT_DURATION ((int)(0.200*CLOCK_FREQ)) |
#define | BLOCK_FLAG_CORE_PRIVATE_RELOADED (1 << BLOCK_FLAG_CORE_PRIVATE_SHIFT) |
Enumerations | |
enum | reload { RELOAD_NO_REQUEST, RELOAD_DECODER, RELOAD_DECODER_AOUT } |
Functions | |
static int | LoadDecoder (decoder_t *p_dec, bool b_packetizer, const es_format_t *restrict p_fmt) |
Load a decoder module. More... | |
static void | UnloadDecoder (decoder_t *p_dec) |
Unload a decoder module. More... | |
static int | ReloadDecoder (decoder_t *p_dec, bool b_packetizer, const es_format_t *restrict p_fmt, enum reload reload) |
static void | DecoderUpdateFormatLocked (decoder_t *p_dec) |
static vout_thread_t * | aout_request_vout (void *p_private, vout_thread_t *p_vout, const video_format_t *p_fmt, bool b_recyle) |
static bool | aout_replaygain_changed (const audio_replay_gain_t *a, const audio_replay_gain_t *b) |
static int | aout_update_format (decoder_t *p_dec) |
static int | vout_update_format (decoder_t *p_dec) |
static picture_t * | vout_new_buffer (decoder_t *p_dec) |
static subpicture_t * | spu_new_buffer (decoder_t *p_dec, const subpicture_updater_t *p_updater) |
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) |
block_t * | decoder_NewAudioBuffer (decoder_t *dec, int samples) |
This function will return a new audio buffer usable by a decoder as an output buffer. More... | |
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. More... | |
static void | RequestReload (decoder_t *p_dec) |
int | decoder_GetInputAttachments (decoder_t *p_dec, input_attachment_t ***ppp_attachment, int *pi_attachment) |
This function gives all input attachments at once. More... | |
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(). More... | |
int | decoder_GetDisplayRate (decoder_t *p_dec) |
This function returns the current input rate. More... | |
void | decoder_AbortPictures (decoder_t *p_dec, bool b_abort) |
Abort any calls of decoder_NewPicture. More... | |
static void | DecoderWaitUnblock (decoder_t *p_dec) |
static int | DecoderTimedWait (decoder_t *p_dec, mtime_t deadline) |
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 void | DecoderPlayCc (decoder_t *p_dec, block_t *p_cc, const decoder_cc_desc_t *p_desc) |
static void | PacketizerGetCc (decoder_t *p_dec, decoder_t *p_dec_cc) |
static int | DecoderQueueCc (decoder_t *p_videodec, block_t *p_cc, const decoder_cc_desc_t *p_desc) |
static int | DecoderPlayVideo (decoder_t *p_dec, picture_t *p_picture, unsigned *restrict pi_lost_sum) |
static void | DecoderUpdateStatVideo (decoder_owner_sys_t *p_owner, unsigned decoded, unsigned lost) |
static int | DecoderQueueVideo (decoder_t *p_dec, picture_t *p_pic) |
static int | DecoderPlayAudio (decoder_t *p_dec, block_t *p_audio, unsigned *restrict pi_lost_sum) |
static void | DecoderUpdateStatAudio (decoder_owner_sys_t *p_owner, unsigned decoded, unsigned lost) |
static int | DecoderQueueAudio (decoder_t *p_dec, block_t *p_aout_buf) |
static void | DecoderPlaySpu (decoder_t *p_dec, subpicture_t *p_subpic) |
static void | DecoderUpdateStatSpu (decoder_owner_sys_t *p_owner, unsigned decoded, unsigned lost) |
static int | DecoderQueueSpu (decoder_t *p_dec, subpicture_t *p_spu) |
static void | DecoderProcess (decoder_t *p_dec, block_t *p_block) |
Decode a block. More... | |
static void | DecoderDecode (decoder_t *p_dec, block_t *p_block) |
static void | DecoderProcessFlush (decoder_t *p_dec) |
static void * | DecoderThread (void *p_data) |
The decoding main loop. More... | |
static decoder_t * | CreateDecoder (vlc_object_t *p_parent, input_thread_t *p_input, const es_format_t *fmt, input_resource_t *p_resource, sout_instance_t *p_sout) |
Create a decoder object. More... | |
static void | DeleteDecoder (decoder_t *p_dec) |
Destroys a decoder object. More... | |
static void | DecoderUnsupportedCodec (decoder_t *p_dec, const es_format_t *fmt, bool b_decoding) |
static decoder_t * | decoder_New (vlc_object_t *p_parent, input_thread_t *p_input, const 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. More... | |
decoder_t * | input_DecoderCreate (vlc_object_t *p_parent, const es_format_t *fmt, input_resource_t *p_resource) |
Spawn a decoder thread outside of the input thread. More... | |
void | input_DecoderDelete (decoder_t *p_dec) |
Kills a decoder thread and waits until it's finished. More... | |
void | input_DecoderDecode (decoder_t *p_dec, block_t *p_block, bool b_do_pace) |
Put a block_t in the decoder's fifo. More... | |
bool | input_DecoderIsEmpty (decoder_t *p_dec) |
This function returns true if the decoder fifo is empty and false otherwise. More... | |
void | input_DecoderDrain (decoder_t *p_dec) |
Signals that there are no further blocks to decode, and requests that the decoder drain all pending buffers. More... | |
void | input_DecoderFlush (decoder_t *p_dec) |
Requests that the decoder immediately discard all pending buffers. More... | |
void | input_DecoderGetCcDesc (decoder_t *p_dec, decoder_cc_desc_t *p_desc) |
This function get cc channels descriptions. More... | |
static bool | input_DecoderHasCCChanFlag (decoder_t *p_dec, vlc_fourcc_t codec, int i_channel) |
int | input_DecoderSetCcState (decoder_t *p_dec, vlc_fourcc_t codec, int i_channel, bool b_decode) |
This function activates the request closed caption channel. More... | |
int | input_DecoderGetCcState (decoder_t *p_dec, vlc_fourcc_t codec, int i_channel, bool *pb_decode) |
This function returns an error if the requested channel does not exist and set pb_decode to the channel status(active or not) otherwise. More... | |
void | input_DecoderChangePause (decoder_t *p_dec, bool b_paused, mtime_t i_date) |
This function changes the pause state. More... | |
void | input_DecoderChangeDelay (decoder_t *p_dec, mtime_t i_delay) |
This function changes the delay. More... | |
void | input_DecoderStartWait (decoder_t *p_dec) |
This function makes the decoder start waiting for a valid data block from its fifo. More... | |
void | input_DecoderStopWait (decoder_t *p_dec) |
This function exits the waiting mode of the decoder. More... | |
void | input_DecoderWait (decoder_t *p_dec) |
This function waits for the decoder to actually receive data. More... | |
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. More... | |
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. More... | |
size_t | input_DecoderGetFifoSize (decoder_t *p_dec) |
This function returns the current size in bytes of the decoder fifo. More... | |
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. More... | |
#define BLOCK_FLAG_CORE_PRIVATE_RELOADED (1 << BLOCK_FLAG_CORE_PRIVATE_SHIFT) |
#define DECODER_BOGUS_VIDEO_DELAY ((mtime_t)(DEFAULT_PTS_DELAY * 30)) |
#define DECODER_SPU_VOUT_WAIT_DURATION ((int)(0.200*CLOCK_FREQ)) |
#define MAX_CC_DECODERS 64 /* The es_out only creates one type of es */ |
enum reload |
|
static |
References AUDIO_REPLAY_GAIN_MAX, audio_replay_gain_t::pb_gain, and audio_replay_gain_t::pb_peak.
Referenced by aout_update_format().
|
static |
|
static |
References AOUT_CHAN_LEFT, AOUT_CHAN_RIGHT, AOUT_CHANMODE_DOLBYSTEREO, aout_DecDelete(), aout_DecNew(), AOUT_FMTS_IDENTICAL, aout_FormatPrepare(), aout_replaygain_changed(), aout_request_vout(), es_format_t::audio, es_format_t::audio_replay_gain, DecoderUpdateFormatLocked(), decoder_owner_sys_t::fmt, decoder_t::fmt_in, decoder_t::fmt_out, audio_format_t::i_bytes_per_frame, audio_format_t::i_chan_mode, es_format_t::i_codec, audio_format_t::i_format, audio_format_t::i_frame_length, audio_format_t::i_physical_channels, es_format_t::i_profile, input_resource_GetAout(), input_resource_PutAout(), input_SendEventAout(), decoder_owner_sys_t::lock, msg_Err, decoder_owner_sys_t::p_aout, decoder_owner_sys_t::p_input, decoder_t::p_owner, decoder_owner_sys_t::p_resource, aout_request_vout::pf_request_vout, var_InheritInteger, var_SetBool, var_TriggerCallback, VLC_CODEC_DTS, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by CreateDecoder().
|
static |
Create a decoder object.
p_input | the input thread |
p_es | the es descriptor |
b_packetizer | instead of a decoder |
References aout_update_format(), AUDIO_ES, es_format_t::audio_replay_gain, AUDIO_REPLAY_GAIN_MAX, decoder_owner_sys_t::b_draining, decoder_owner_sys_t::b_first, decoder_owner_sys_t::b_fmt_description, decoder_owner_sys_t::b_has_data, decoder_owner_sys_t::b_idle, es_format_t::b_packetized, decoder_owner_sys_t::b_supported, decoder_owner_sys_t::b_waiting, block_FifoNew(), decoder_owner_sys_t::cc, DecoderGetDisplayDate(), DecoderGetDisplayRate(), DecoderGetInputAttachments(), DecoderQueueAudio(), DecoderQueueCc(), DecoderQueueSpu(), DecoderQueueVideo(), DecoderUpdateStatAudio(), DecoderUpdateStatSpu(), DecoderUpdateStatVideo(), decoder_owner_sys_t::desc, decoder_owner_sys_t::drained, decoder_owner_sys_t::error, es_format_Init(), decoder_owner_sys_t::flushing, decoder_owner_sys_t::fmt, decoder_t::fmt_out, decoder_owner_sys_t::frames_countdown, decoder_cc_desc_t::i_608_channels, decoder_cc_desc_t::i_708_channels, es_format_t::i_cat, 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, LoadDecoder(), decoder_owner_sys_t::lock, MAX_CC_DECODERS, msg_Err, decoder_owner_sys_t::p_aout, decoder_owner_sys_t::p_description, decoder_owner_sys_t::p_fifo, decoder_owner_sys_t::p_input, decoder_t::p_owner, decoder_owner_sys_t::p_packetizer, 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_vout, decoder_owner_sys_t::pause_date, decoder_owner_sys_t::paused, audio_replay_gain_t::pb_gain, audio_replay_gain_t::pb_peak, decoder_t::pf_aout_format_update, audio_replay_gain_t::pf_gain, decoder_t::pf_get_attachments, decoder_t::pf_get_display_date, decoder_t::pf_get_display_rate, audio_replay_gain_t::pf_peak, decoder_t::pf_queue_audio, decoder_t::pf_queue_cc, decoder_t::pf_queue_sub, decoder_t::pf_queue_video, decoder_t::pf_spu_buffer_new, decoder_owner_sys_t::pf_update_stat, decoder_t::pf_vout_buffer_new, decoder_t::pf_vout_format_update, decoder_owner_sys_t::pp_decoder, decoder_owner_sys_t::reload, RELOAD_NO_REQUEST, SPU_ES, spu_new_buffer(), unlikely, UnloadDecoder(), VIDEO_ES, vlc_cond_init(), vlc_custom_create, vlc_mutex_init(), vlc_object_release, VLC_TS_INVALID, vout_new_buffer(), vout_update_format(), decoder_owner_sys_t::wait_acknowledge, decoder_owner_sys_t::wait_fifo, decoder_owner_sys_t::wait_request, and decoder_owner_sys_t::wait_timed.
Referenced by decoder_New().
|
static |
References _, AUDIO_ES, CreateDecoder(), DecoderThread(), DecoderUnsupportedCodec(), DeleteDecoder(), decoder_t::fmt_out, es_format_t::i_cat, 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_dialog_display_error, vlc_gettext(), VLC_THREAD_PRIORITY_AUDIO, and VLC_THREAD_PRIORITY_VIDEO.
Referenced by input_DecoderCreate(), and input_DecoderNew().
|
static |
|
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 |
|
static |
References block_Duplicate(), block_FifoPut(), block_Release(), decoder_owner_sys_t::cc, decoder_owner_sys_t::desc, decoder_cc_desc_t::i_608_channels, decoder_cc_desc_t::i_708_channels, decoder_owner_sys_t::lock, decoder_owner_sys_t::p_fifo, decoder_t::p_owner, decoder_owner_sys_t::pp_decoder, vlc_mutex_lock(), and vlc_mutex_unlock().
|
static |
|
static |
Decode a block.
p_dec | the decoder object |
p_block | the block to decode |
< No error
< No error
References block_ChainRelease(), BLOCK_FLAG_CORE_PRIVATE_RELOADED, block_Release(), DecoderDecode(), DecoderUpdatePreroll(), decoder_owner_sys_t::error, es_format_IsSimilar(), decoder_t::fmt_in, decoder_t::fmt_out, block_t::i_buffer, block_t::i_flags, decoder_owner_sys_t::i_preroll_end, decoder_owner_sys_t::lock, msg_Dbg, msg_Warn, block_t::p_next, decoder_t::p_owner, decoder_owner_sys_t::p_packetizer, decoder_owner_sys_t::p_sout, PacketizerGetCc(), decoder_t::pf_get_cc, decoder_t::pf_packetize, decoder_owner_sys_t::reload, RELOAD_DECODER, RELOAD_DECODER_AOUT, RELOAD_NO_REQUEST, ReloadDecoder(), unlikely, vlc_mutex_lock(), vlc_mutex_unlock(), and VLC_SUCCESS.
Referenced by DecoderThread().
|
static |
Referenced by DecoderThread().
Referenced by CreateDecoder().
|
static |
Referenced by CreateDecoder().
|
static |
Referenced by CreateDecoder().
Referenced by CreateDecoder().
|
static |
The decoding main loop.
p_dec | the decoder |
References aout_DecChangePause(), aout_DecFlush(), decoder_owner_sys_t::b_draining, decoder_owner_sys_t::b_idle, DecoderProcess(), DecoderProcessFlush(), decoder_owner_sys_t::drained, decoder_owner_sys_t::flushing, decoder_owner_sys_t::frames_countdown, likely, decoder_owner_sys_t::lock, msg_Dbg, decoder_owner_sys_t::p_aout, decoder_owner_sys_t::p_fifo, decoder_t::p_owner, decoder_owner_sys_t::p_vout, decoder_owner_sys_t::pause_date, decoder_owner_sys_t::paused, vlc_assert_unreachable, vlc_cleanup_pop, vlc_cond_signal(), vlc_fifo_CleanupPush, vlc_fifo_DequeueUnlocked(), vlc_fifo_Lock(), vlc_fifo_Unlock(), vlc_fifo_Wait(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_restorecancel(), vlc_savecancel(), vlc_testcancel(), vout_ChangePause(), decoder_owner_sys_t::wait_acknowledge, and decoder_owner_sys_t::wait_fifo.
Referenced by decoder_New().
< No error
< Unspecified error
< No error
References decoder_owner_sys_t::flushing, mdate(), decoder_owner_sys_t::p_fifo, decoder_t::p_owner, VLC_EGENERIC, vlc_fifo_Lock(), vlc_fifo_TimedWaitCond(), vlc_fifo_Unlock(), VLC_SUCCESS, and decoder_owner_sys_t::wait_timed.
|
static |
References _, es_format_t::i_cat, es_format_t::i_codec, msg_Err, N_, VLC_CODEC_UNKNOWN, vlc_dialog_display_error, and vlc_fourcc_GetDescription().
Referenced by decoder_New().
|
static |
References decoder_owner_sys_t::b_fmt_description, es_format_Clean(), es_format_Copy(), decoder_owner_sys_t::fmt, decoder_t::fmt_out, decoder_owner_sys_t::lock, decoder_owner_sys_t::p_description, decoder_t::p_description, decoder_t::p_owner, vlc_assert_locked(), and vlc_meta_Delete().
Referenced by aout_update_format(), and vout_update_format().
|
inlinestatic |
Referenced by DecoderProcess().
|
static |
Referenced by CreateDecoder().
|
static |
Referenced by CreateDecoder().
|
static |
Referenced by CreateDecoder().
|
static |
|
static |
Destroys a decoder object.
p_dec | the decoder object |
References aout_DecDelete(), aout_DecFlush(), block_FifoRelease(), es_format_Clean(), decoder_owner_sys_t::fmt, 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, msg_Dbg, decoder_owner_sys_t::p_aout, decoder_owner_sys_t::p_description, decoder_owner_sys_t::p_fifo, decoder_owner_sys_t::p_input, 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, sout_InputDelete(), SPU_ES, UnloadDecoder(), vlc_cond_destroy(), vlc_meta_Delete(), vlc_mutex_destroy(), vlc_object_release, vout_Cancel(), vout_FlushSubpictureChannel(), decoder_owner_sys_t::wait_acknowledge, decoder_owner_sys_t::wait_fifo, decoder_owner_sys_t::wait_request, and decoder_owner_sys_t::wait_timed.
Referenced by decoder_New(), and input_DecoderDelete().
This function changes the delay.
This function changes the pause state.
The date parameter MUST hold the exact date at which the change has been done for proper vout/aout pausing.
decoder_t* input_DecoderCreate | ( | vlc_object_t * | p_parent, |
const 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_waiting, block_ChainRelease(), BLOCK_FLAG_DISCONTINUITY, block_t::i_flags, msg_Warn, decoder_owner_sys_t::p_fifo, decoder_t::p_owner, vlc_fifo_DequeueAllUnlocked(), vlc_fifo_GetBytes(), vlc_fifo_GetCount(), vlc_fifo_Lock(), vlc_fifo_QueueUnlocked(), vlc_fifo_Unlock(), vlc_fifo_WaitCond(), and decoder_owner_sys_t::wait_fifo.
Referenced by 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_supported, decoder_owner_sys_t::b_waiting, decoder_owner_sys_t::cc, DeleteDecoder(), decoder_owner_sys_t::flushing, input_DecoderSetCcState(), decoder_owner_sys_t::lock, MAX_CC_DECODERS, decoder_owner_sys_t::p_fifo, decoder_t::p_owner, decoder_owner_sys_t::p_vout, decoder_owner_sys_t::thread, vlc_cancel(), VLC_CODEC_CEA608, vlc_cond_signal(), vlc_fifo_Lock(), vlc_fifo_Unlock(), vlc_join(), vlc_mutex_lock(), vlc_mutex_unlock(), vout_Cancel(), decoder_owner_sys_t::wait_request, and decoder_owner_sys_t::wait_timed.
void input_DecoderDrain | ( | decoder_t * | p_dec | ) |
Signals that there are no further blocks to decode, and requests that the decoder drain all pending buffers.
This is used to ensure that all intermediate buffers empty and no samples get lost at the end of the stream.
References decoder_owner_sys_t::b_draining, decoder_owner_sys_t::p_fifo, decoder_t::p_owner, vlc_fifo_Lock(), vlc_fifo_Signal(), and vlc_fifo_Unlock().
Referenced by EsOutControlLocked().
void input_DecoderFlush | ( | decoder_t * | p_dec | ) |
Requests that the decoder immediately discard all pending buffers.
This is useful when seeking or when deselecting a stream.
References block_ChainRelease(), decoder_owner_sys_t::flushing, decoder_owner_sys_t::fmt, decoder_owner_sys_t::frames_countdown, es_format_t::i_cat, decoder_owner_sys_t::p_fifo, decoder_t::p_owner, decoder_owner_sys_t::paused, SPU_ES, VIDEO_ES, vlc_cond_signal(), vlc_fifo_DequeueAllUnlocked(), vlc_fifo_Lock(), vlc_fifo_Signal(), vlc_fifo_Unlock(), and decoder_owner_sys_t::wait_timed.
This function force the display of the next picture and fills the stream time consumed.
void input_DecoderGetCcDesc | ( | decoder_t * | p_dec, |
decoder_cc_desc_t * | p_desc | ||
) |
This function get cc channels descriptions.
Referenced by EsOutSend().
int input_DecoderGetCcState | ( | decoder_t * | p_dec, |
vlc_fourcc_t | codec, | ||
int | i_channel, | ||
bool * | pb_decode | ||
) |
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
< No error
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 * | , |
vout_thread_t ** | , | ||
audio_output_t ** | |||
) |
This function returns the objects associated to a decoder.
They must be released using vlc_object_release().
Referenced by EsOutControlLocked().
|
static |
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.
Referenced by EsOutSend().
bool input_DecoderIsEmpty | ( | decoder_t * | p_dec | ) |
This function returns true if the decoder fifo is empty and false otherwise.
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_priv(), and VLC_OBJECT.
int input_DecoderSetCcState | ( | decoder_t * | p_dec, |
vlc_fourcc_t | codec, | ||
int | i_channel, | ||
bool | b_decode | ||
) |
This function activates the request closed caption channel.
< Unspecified error
< Unspecified error
< Unspecified error
< No error
Referenced by input_DecoderDelete().
void input_DecoderStartWait | ( | decoder_t * | p_dec | ) |
This function makes the decoder start waiting for a valid data block from its fifo.
void input_DecoderStopWait | ( | decoder_t * | p_dec | ) |
This function exits the waiting mode of the decoder.
void input_DecoderWait | ( | decoder_t * | p_dec | ) |
This function waits for the decoder to actually receive data.
|
static |
Load a decoder module.
References AUDIO_ES, decoder_t::b_frame_drop_allowed, ES_CATEGORY_COUNT, es_format_Clean(), es_format_Copy(), es_format_Init(), decoder_t::fmt_in, decoder_t::fmt_out, es_format_t::i_cat, decoder_t::i_extra_picture_buffers, module_need, decoder_t::p_module, decoder_t::pf_decode, decoder_t::pf_flush, decoder_t::pf_get_cc, decoder_t::pf_packetize, SPU_ES, and VIDEO_ES.
Referenced by CreateDecoder(), and ReloadDecoder().
Referenced by DecoderProcess().
|
static |
< No error
< Unspecified error
< Unspecified error
< No error
References aout_DecDelete(), AUDIO_ES, decoder_owner_sys_t::error, es_format_Clean(), es_format_Copy(), decoder_owner_sys_t::fmt, es_format_t::i_cat, input_resource_PutAout(), LoadDecoder(), decoder_owner_sys_t::lock, decoder_owner_sys_t::p_aout, decoder_t::p_owner, decoder_owner_sys_t::p_resource, RELOAD_DECODER_AOUT, UnloadDecoder(), VLC_EGENERIC, vlc_mutex_lock(), vlc_mutex_unlock(), and VLC_SUCCESS.
Referenced by DecoderProcess().
|
static |
|
static |
References subpicture_t::b_subtitle, DECODER_SPU_VOUT_WAIT_DURATION, decoder_owner_sys_t::error, 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(), msg_Warn, msleep, decoder_t::p_owner, decoder_owner_sys_t::p_resource, decoder_owner_sys_t::p_spu_vout, subpicture_New(), vlc_object_release, and vout_RegisterSubpictureChannel().
Referenced by CreateDecoder().
|
static |
Unload a decoder module.
References es_format_Clean(), decoder_t::fmt_in, decoder_t::fmt_out, module_unneed, decoder_t::p_description, decoder_t::p_module, and vlc_meta_Delete().
Referenced by CreateDecoder(), DeleteDecoder(), and ReloadDecoder().
References decoder_t::p_owner, decoder_owner_sys_t::p_vout, and vout_GetPicture().
Referenced by CreateDecoder().
|
static |
References DecoderUpdateFormatLocked(), vlc_rational_t::den, decoder_owner_sys_t::fmt, 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(), video_format_t::lighting, decoder_owner_sys_t::lock, video_format_t::mastering, video_format_t::MaxCLL, video_format_t::MaxFALL, msg_Err, msg_Warn, video_format_t::multiview_mode, video_format_t::orientation, 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, es_format_t::video, video_format_AdjustColorSpace(), VLC_CODEC_DIRAC, VLC_CODEC_H264, VLC_CODEC_HEVC, 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(), and vlc_chroma_description_t::w.
Referenced by CreateDecoder().