VLC
4.0.0-dev
|
Data Structures | |
struct | decoder_owner |
Macros | |
#define | PREROLL_NONE INT64_MIN |
#define | PREROLL_FORCED INT64_MAX |
#define | MAX_CC_DECODERS 64 /* The es_out only creates one type of es */ |
#define | DECODER_BOGUS_VIDEO_DELAY ((vlc_tick_t)(DEFAULT_PTS_DELAY * 30)) |
#define | DECODER_SPU_VOUT_WAIT_DURATION VLC_TICK_FROM_MS(200) |
#define | BLOCK_FLAG_CORE_PRIVATE_RELOADED (1 << BLOCK_FLAG_CORE_PRIVATE_SHIFT) |
#define | decoder_Notify(decoder_priv, event, ...) |
Enumerations | |
enum | reload { RELOAD_NO_REQUEST, RELOAD_DECODER, RELOAD_DECODER_AOUT } |
Functions | |
static struct decoder_owner * | dec_get_owner (decoder_t *p_dec) |
static int | LoadDecoder (decoder_t *p_dec, bool b_packetizer, const es_format_t *restrict p_fmt) |
Load a decoder module. More... | |
static int | DecoderThread_Reload (struct decoder_owner *p_owner, bool b_packetizer, const es_format_t *restrict p_fmt, enum reload reload) |
static void | DecoderUpdateFormatLocked (struct decoder_owner *p_owner) |
static void | MouseEvent (const vlc_mouse_t *newmouse, void *user_data) |
static bool | aout_replaygain_changed (const audio_replay_gain_t *a, const audio_replay_gain_t *b) |
static int | ModuleThread_UpdateAudioFormat (decoder_t *p_dec) |
static int | CreateVoutIfNeeded (struct decoder_owner *, vout_thread_t **, enum vlc_vout_order *, vlc_decoder_device **) |
static int | ModuleThread_UpdateVideoFormat (decoder_t *p_dec, vlc_video_context *vctx) |
static vlc_decoder_device * | ModuleThread_GetDecoderDevice (decoder_t *p_dec) |
static picture_t * | ModuleThread_NewVideoBuffer (decoder_t *p_dec) |
static subpicture_t * | ModuleThread_NewSpuBuffer (decoder_t *p_dec, const subpicture_updater_t *p_updater) |
static int | InputThread_GetInputAttachments (decoder_t *p_dec, input_attachment_t ***ppp_attachment, int *pi_attachment) |
static vlc_tick_t | ModuleThread_GetDisplayDate (decoder_t *p_dec, vlc_tick_t system_now, vlc_tick_t i_ts) |
static float | ModuleThread_GetDisplayRate (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... | |
static void | RequestReload (struct decoder_owner *p_owner) |
static void | DecoderThread_AbortPictures (decoder_t *p_dec, bool b_abort) |
static void | DecoderWaitUnblock (struct decoder_owner *p_owner) |
static void | DecoderUpdatePreroll (vlc_tick_t *pi_preroll, const block_t *p) |
static void | DecoderPlayCc (struct decoder_owner *p_owner, block_t *p_cc, const decoder_cc_desc_t *p_desc) |
static void | PacketizerGetCc (struct decoder_owner *p_owner, decoder_t *p_dec_cc) |
static void | ModuleThread_QueueCc (decoder_t *p_videodec, block_t *p_cc, const decoder_cc_desc_t *p_desc) |
static int | ModuleThread_PlayVideo (struct decoder_owner *p_owner, picture_t *p_picture) |
static void | ModuleThread_UpdateStatVideo (struct decoder_owner *p_owner, bool lost) |
static void | ModuleThread_QueueVideo (decoder_t *p_dec, picture_t *p_pic) |
static vlc_decoder_device * | thumbnailer_get_device (decoder_t *p_dec) |
static picture_t * | thumbnailer_buffer_new (decoder_t *p_dec) |
static void | ModuleThread_QueueThumbnail (decoder_t *p_dec, picture_t *p_pic) |
static int | ModuleThread_PlayAudio (struct decoder_owner *p_owner, block_t *p_audio) |
static void | ModuleThread_UpdateStatAudio (struct decoder_owner *p_owner, bool lost) |
static void | ModuleThread_QueueAudio (decoder_t *p_dec, block_t *p_aout_buf) |
static void | ModuleThread_PlaySpu (struct decoder_owner *p_owner, subpicture_t *p_subpic) |
static void | ModuleThread_QueueSpu (decoder_t *p_dec, subpicture_t *p_spu) |
static void | DecoderThread_ProcessInput (struct decoder_owner *p_owner, block_t *p_block) |
Decode a block. More... | |
static void | DecoderThread_DecodeBlock (struct decoder_owner *p_owner, block_t *p_block) |
static void | DecoderThread_Flush (struct decoder_owner *p_owner) |
static void | DecoderThread_ChangePause (struct decoder_owner *p_owner, bool paused, vlc_tick_t date) |
static void | DecoderThread_ChangeRate (struct decoder_owner *p_owner, float rate) |
static void | DecoderThread_ChangeDelay (struct decoder_owner *p_owner, vlc_tick_t delay) |
static void * | DecoderThread (void *p_data) |
The decoding main loop. More... | |
static struct decoder_owner * | CreateDecoder (vlc_object_t *p_parent, const es_format_t *fmt, vlc_clock_t *p_clock, input_resource_t *p_resource, sout_instance_t *p_sout, bool b_thumbnailing, const struct input_decoder_callbacks *cbs, void *cbs_userdata) |
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, const es_format_t *fmt, vlc_clock_t *p_clock, input_resource_t *p_resource, sout_instance_t *p_sout, bool thumbnailing, const struct input_decoder_callbacks *cbs, void *userdata) |
decoder_t * | input_DecoderNew (vlc_object_t *parent, es_format_t *fmt, vlc_clock_t *p_clock, input_resource_t *resource, sout_instance_t *p_sout, bool thumbnailing, const struct input_decoder_callbacks *cbs, void *cbs_userdata) |
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 (struct decoder_owner *p_owner, 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, vlc_tick_t i_date) |
This function changes the pause state. More... | |
void | input_DecoderChangeRate (decoder_t *dec, float rate) |
Changes the decoder rate. More... | |
void | input_DecoderChangeDelay (decoder_t *dec, vlc_tick_t 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, vlc_tick_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_DecoderSetVoutMouseEvent (decoder_t *dec, vlc_mouse_event mouse_event, void *user_data) |
int | input_DecoderAddVoutOverlay (decoder_t *dec, subpicture_t *sub, size_t *channel) |
int | input_DecoderDelVoutOverlay (decoder_t *dec, size_t channel) |
int | input_DecoderSetSpuHighlight (decoder_t *dec, const vlc_spu_highlight_t *spu_hl) |
Variables | |
static const struct decoder_owner_callbacks | dec_video_cbs |
static const struct decoder_owner_callbacks | dec_thumbnailer_cbs |
static const struct decoder_owner_callbacks | dec_audio_cbs |
static const struct decoder_owner_callbacks | dec_spu_cbs |
#define BLOCK_FLAG_CORE_PRIVATE_RELOADED (1 << BLOCK_FLAG_CORE_PRIVATE_SHIFT) |
Referenced by DecoderThread_DecodeBlock(), and DecoderThread_ProcessInput().
#define DECODER_BOGUS_VIDEO_DELAY ((vlc_tick_t)(DEFAULT_PTS_DELAY * 30)) |
#define decoder_Notify | ( | decoder_priv, | |
event, | |||
... | |||
) |
Referenced by DeleteDecoder(), ModuleThread_NewSpuBuffer(), ModuleThread_QueueThumbnail(), ModuleThread_UpdateStatAudio(), ModuleThread_UpdateStatVideo(), and ModuleThread_UpdateVideoFormat().
#define DECODER_SPU_VOUT_WAIT_DURATION VLC_TICK_FROM_MS(200) |
Referenced by ModuleThread_NewSpuBuffer().
#define MAX_CC_DECODERS 64 /* The es_out only creates one type of es */ |
Referenced by CreateDecoder(), DecoderThread_Flush(), and input_DecoderDelete().
#define PREROLL_FORCED INT64_MAX |
Referenced by DecoderUpdatePreroll().
#define PREROLL_NONE INT64_MIN |
Referenced by CreateDecoder(), DecoderThread_Flush(), ModuleThread_PlayAudio(), and ModuleThread_PlayVideo().
enum reload |
|
static |
References AUDIO_REPLAY_GAIN_MAX, audio_replay_gain_t::pb_gain, and audio_replay_gain_t::pb_peak.
Referenced by ModuleThread_UpdateAudioFormat().
|
static |
Create a decoder object.
p_input | the input thread |
p_es | the es descriptor |
b_packetizer | instead of a decoder |
References AUDIO_ES, es_format_t::audio_replay_gain, AUDIO_REPLAY_GAIN_MAX, decoder_owner::b_draining, decoder_owner::b_first, decoder_owner::b_fmt_description, decoder_owner::b_has_data, decoder_owner::b_idle, es_format_t::b_packetized, decoder_owner::b_sout_created, decoder_owner::b_supported, decoder_owner::b_waiting, block_FifoNew(), decoder_owner::cbs, decoder_t::cbs, decoder_owner::cbs_userdata, decoder_owner::cc, decoder_owner::dec, dec_audio_cbs, dec_spu_cbs, dec_thumbnailer_cbs, dec_video_cbs, decoder_owner::delay, decoder_owner::desc, decoder_owner::drained, decoder_owner::error, es_format_Init(), decoder_owner::flushing, decoder_owner::fmt, decoder_t::fmt_in, decoder_t::fmt_out, decoder_owner::frames_countdown, decoder_cc_desc_t::i_608_channels, decoder_cc_desc_t::i_708_channels, es_format_t::i_cat, decoder_owner::i_preroll_end, decoder_owner::i_spu_channel, decoder_owner::i_spu_order, LoadDecoder(), decoder_owner::lock, MAX_CC_DECODERS, decoder_owner::mouse_event, decoder_owner::mouse_lock, decoder_owner::mouse_opaque, msg_Err, decoder_owner::output_rate, decoder_owner::p_aout, decoder_owner::p_clock, decoder_owner::p_description, decoder_owner::p_fifo, decoder_owner::p_packetizer, decoder_owner::p_resource, decoder_owner::p_sout, decoder_owner::p_sout_input, decoder_owner::p_vout, decoder_owner::pause_date, decoder_owner::paused, audio_replay_gain_t::pb_gain, audio_replay_gain_t::pb_peak, audio_replay_gain_t::pf_gain, audio_replay_gain_t::pf_peak, decoder_owner::pp_decoder, PREROLL_NONE, decoder_owner::reload, RELOAD_NO_REQUEST, decoder_owner::request_rate, decoder_owner::reset_out_state, SPU_ES, static_assert, unlikely, VIDEO_ES, vlc_cond_init(), vlc_custom_create, vlc_mutex_init(), vlc_object_delete, VLC_TICK_INVALID, VOUT_SPU_CHANNEL_INVALID, decoder_owner::vout_thread_started, decoder_owner::wait_acknowledge, decoder_owner::wait_fifo, and decoder_owner::wait_request.
Referenced by decoder_New().
|
static |
References decoder_owner::dec, DecoderUpdateFormatLocked(), decoder_owner::fmt, decoder_t::fmt_out, video_format_t::i_chroma, es_format_t::i_codec, 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_GetVoutDecoderDevice(), decoder_owner::lock, msg_Dbg, msg_Err, video_format_t::multiview_mode, video_format_t::orientation, decoder_owner::out_pool, decoder_owner::p_fifo, decoder_owner::p_resource, decoder_owner::p_vout, picture_pool_Release(), decoder_owner::reset_out_state, es_format_t::video, vlc_decoder_device_Release(), vlc_fifo_Lock(), vlc_fifo_Unlock(), vlc_mutex_lock(), vlc_mutex_unlock(), vout_device_configuration_t::vout, and decoder_owner::vout_order.
Referenced by ModuleThread_GetDecoderDevice(), ModuleThread_UpdateAudioFormat(), and ModuleThread_UpdateVideoFormat().
|
static |
References container_of, and decoder_owner::dec.
Referenced by DecoderPlayCc(), DecoderThread_AbortPictures(), DeleteDecoder(), input_DecoderAddVoutOverlay(), input_DecoderChangeDelay(), input_DecoderChangePause(), input_DecoderChangeRate(), input_DecoderDecode(), input_DecoderDelete(), input_DecoderDelVoutOverlay(), input_DecoderDrain(), input_DecoderFlush(), input_DecoderFrameNext(), input_DecoderGetCcDesc(), input_DecoderGetCcState(), input_DecoderGetFifoSize(), input_DecoderHasFormatChanged(), input_DecoderIsEmpty(), input_DecoderSetCcState(), input_DecoderSetSpuHighlight(), input_DecoderSetVoutMouseEvent(), input_DecoderStartWait(), input_DecoderStopWait(), input_DecoderWait(), InputThread_GetInputAttachments(), ModuleThread_GetDecoderDevice(), ModuleThread_GetDisplayDate(), ModuleThread_GetDisplayRate(), ModuleThread_NewSpuBuffer(), ModuleThread_NewVideoBuffer(), ModuleThread_QueueAudio(), ModuleThread_QueueCc(), ModuleThread_QueueSpu(), ModuleThread_QueueThumbnail(), ModuleThread_QueueVideo(), ModuleThread_UpdateAudioFormat(), ModuleThread_UpdateVideoFormat(), MouseEvent(), and thumbnailer_buffer_new().
|
static |
References _, AUDIO_ES, es_format_t::b_packetized, CreateDecoder(), decoder_owner::dec, DecoderThread(), DecoderUnsupportedCodec(), DeleteDecoder(), decoder_owner::error, decoder_t::fmt_in, es_format_t::i_cat, es_format_t::i_codec, msg_Err, N_, decoder_t::p_module, decoder_owner::p_sout, decoder_owner::p_sout_input, sout_InputNew(), decoder_owner::thread, UNKNOWN_ES, VIDEO_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().
This function will return a new audio buffer usable by a decoder as an output buffer.
It must be released with block_Release() or returned it to the caller as a decoder_QueueAudio parameter.
References es_format_t::audio, block_Alloc(), decoder_t::fmt_out, audio_format_t::i_bytes_per_frame, audio_format_t::i_frame_length, block_t::i_length, block_t::i_nb_samples, block_t::i_pts, and likely.
Referenced by decoder_UpdateAudioFormat().
|
static |
References block_Duplicate(), block_FifoPut(), block_Release(), decoder_owner::cc, dec_get_owner(), decoder_owner::desc, decoder_cc_desc_t::i_608_channels, decoder_cc_desc_t::i_708_channels, decoder_owner::lock, decoder_owner::p_fifo, decoder_owner::pp_decoder, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by ModuleThread_QueueCc(), and PacketizerGetCc().
|
static |
The decoding main loop.
p_dec | the decoder |
References aout_DecDrain(), AUDIO_ES, decoder_owner::b_draining, decoder_owner::b_idle, decoder_owner::dec, DecoderThread_ChangeDelay(), DecoderThread_ChangePause(), DecoderThread_ChangeRate(), DecoderThread_Flush(), DecoderThread_ProcessInput(), decoder_owner::delay, decoder_owner::drained, decoder_owner::flushing, decoder_t::fmt_out, decoder_owner::frames_countdown, es_format_t::i_cat, likely, decoder_owner::lock, decoder_owner::p_aout, decoder_owner::p_fifo, decoder_owner::pause_date, decoder_owner::paused, decoder_owner::request_rate, decoder_owner::reset_out_state, 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(), decoder_owner::wait_acknowledge, and decoder_owner::wait_fifo.
Referenced by decoder_New().
|
static |
|
static |
References aout_DecChangeDelay(), AUDIO_ES, decoder_owner::dec, decoder_t::fmt_out, es_format_t::i_cat, decoder_owner::i_spu_channel, decoder_owner::lock, msg_Dbg, decoder_owner::p_aout, decoder_owner::p_vout, SPU_ES, VIDEO_ES, vlc_assert_unreachable, vlc_mutex_lock(), vlc_mutex_unlock(), vout_ChangeDelay(), vout_ChangeSpuDelay(), and VOUT_SPU_CHANNEL_INVALID.
Referenced by DecoderThread().
|
static |
References aout_DecChangePause(), AUDIO_ES, decoder_owner::dec, decoder_t::fmt_out, es_format_t::i_cat, decoder_owner::lock, msg_Dbg, decoder_owner::p_aout, decoder_owner::p_vout, SPU_ES, VIDEO_ES, vlc_assert_unreachable, vlc_mutex_lock(), vlc_mutex_unlock(), and vout_ChangePause().
Referenced by DecoderThread().
|
static |
References aout_DecChangeRate(), AUDIO_ES, decoder_owner::dec, decoder_t::fmt_out, es_format_t::i_cat, decoder_owner::i_spu_channel, decoder_owner::lock, msg_Dbg, decoder_owner::output_rate, decoder_owner::p_aout, decoder_owner::p_vout, SPU_ES, VIDEO_ES, vlc_assert_unreachable, vlc_mutex_lock(), vlc_mutex_unlock(), vout_ChangeRate(), vout_ChangeSpuRate(), and VOUT_SPU_CHANNEL_INVALID.
Referenced by DecoderThread().
|
static |
References BLOCK_FLAG_CORE_PRIVATE_RELOADED, block_Release(), decoder_owner::dec, DecoderThread_ProcessInput(), decoder_owner::error, block_t::i_flags, decoder_t::pf_decode, RequestReload(), unlikely, vlc_assert_unreachable, VLCDEC_ECRITICAL, VLCDEC_RELOAD, and VLCDEC_SUCCESS.
Referenced by DecoderThread_ProcessInput().
|
static |
References aout_DecFlush(), AUDIO_ES, decoder_owner::b_supported, decoder_owner::cc, decoder_owner::dec, decoder_owner::error, decoder_t::fmt_out, es_format_t::i_cat, decoder_owner::i_preroll_end, decoder_owner::i_spu_channel, decoder_owner::lock, MAX_CC_DECODERS, decoder_owner::p_aout, decoder_owner::p_packetizer, decoder_owner::p_sout_input, decoder_owner::p_vout, decoder_t::pf_flush, decoder_owner::pp_decoder, PREROLL_NONE, sout_InputFlush(), SPU_ES, VIDEO_ES, vlc_mutex_lock(), vlc_mutex_unlock(), vout_FlushAll, vout_FlushSubpictureChannel(), and VOUT_SPU_CHANNEL_INVALID.
Referenced by DecoderThread().
|
static |
Decode a block.
p_dec | the decoder object |
p_block | the block to decode |
References block_ChainRelease(), BLOCK_FLAG_CORE_PRIVATE_RELOADED, block_Release(), decoder_owner::dec, DecoderThread_DecodeBlock(), DecoderThread_Reload(), DecoderUpdatePreroll(), decoder_owner::error, es_format_IsSimilar(), decoder_t::fmt_in, decoder_t::fmt_out, block_t::i_buffer, block_t::i_flags, decoder_owner::i_preroll_end, decoder_owner::lock, msg_Dbg, msg_Warn, block_t::p_next, decoder_owner::p_packetizer, decoder_owner::p_sout, PacketizerGetCc(), decoder_t::pf_get_cc, decoder_t::pf_packetize, decoder_owner::reload, RELOAD_DECODER, RELOAD_DECODER_AOUT, RELOAD_NO_REQUEST, unlikely, vlc_mutex_lock(), vlc_mutex_unlock(), and VLC_SUCCESS.
Referenced by DecoderThread(), DecoderThread_DecodeBlock(), and ModuleThread_QueueSpu().
|
static |
References aout_DecDelete(), AUDIO_ES, decoder_owner::dec, decoder_Clean(), decoder_owner::error, es_format_Clean(), es_format_Copy(), decoder_owner::fmt, es_format_t::i_cat, input_resource_PutAout(), LoadDecoder(), decoder_owner::p_aout, decoder_owner::p_resource, RELOAD_DECODER_AOUT, VLC_EGENERIC, and VLC_SUCCESS.
Referenced by DecoderThread_ProcessInput().
|
static |
References _, decoder_owner::desc, 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(), and input_DecoderSetCcState().
|
static |
References decoder_owner::b_fmt_description, decoder_owner::dec, es_format_Clean(), es_format_Copy(), decoder_owner::fmt, decoder_t::fmt_out, decoder_owner::lock, decoder_owner::p_description, decoder_t::p_description, vlc_meta_Delete(), and vlc_mutex_assert.
Referenced by CreateVoutIfNeeded(), DecoderUpdatePreroll(), ModuleThread_GetDecoderDevice(), and ModuleThread_UpdateAudioFormat().
|
inlinestatic |
References decoder_owner::b_has_data, decoder_owner::b_sout_created, decoder_owner::b_waiting, sout_instance_t::b_wants_substreams, block_ChainRelease(), BLOCK_FLAG_CORRUPTED, BLOCK_FLAG_DISCONTINUITY, BLOCK_FLAG_PREROLL, block_Release(), decoder_owner::cc, subs_format_t::cc, decoder_owner::dec, DecoderUpdateFormatLocked(), DecoderWaitUnblock(), decoder_owner::desc, decoder_owner::error, es_format_Clean(), es_format_Init(), decoder_owner::fmt, decoder_t::fmt_in, block_t::i_buffer, es_format_t::i_codec, block_t::i_dts, block_t::i_flags, es_format_t::i_group, es_format_t::i_id, block_t::i_pts, decoder_cc_desc_t::i_reorder_depth, subs_format_t::i_reorder_depth, decoder_owner::lock, msg_Err, block_t::p_next, decoder_owner::p_sout, decoder_owner::p_sout_input, decoder_t::pf_get_cc, decoder_t::pf_packetize, PREROLL_FORCED, es_format_t::psz_language, sout_InputNew(), sout_InputSendBuffer(), SPU_ES, strdup(), es_format_t::subs, VLC_CODEC_CEA608, vlc_cond_signal(), VLC_EGENERIC, vlc_mutex_lock(), vlc_mutex_unlock(), VLC_TICK_INVALID, and decoder_owner::wait_acknowledge.
Referenced by DecoderThread_ProcessInput().
|
static |
|
static |
Destroys a decoder object.
p_dec | the decoder object |
References aout_DecDelete(), AUDIO_ES, block_FifoRelease(), decoder_owner::cc, DATA_ES, decoder_owner::dec, dec_get_owner(), decoder_Clean(), decoder_Destroy(), decoder_Notify, es_format_Clean(), decoder_owner::fmt, decoder_t::fmt_in, es_format_t::i_cat, es_format_t::i_codec, decoder_owner::i_spu_channel, input_resource_PutAout(), input_resource_PutVout(), decoder_owner::lock, decoder_owner::mouse_lock, msg_Dbg, decoder_owner::out_pool, decoder_owner::p_aout, decoder_owner::p_description, decoder_owner::p_fifo, decoder_owner::p_packetizer, decoder_owner::p_resource, decoder_owner::p_sout_input, decoder_owner::p_vout, picture_pool_Cancel(), picture_pool_Release(), sout_InputDelete(), SPU_ES, UNKNOWN_ES, decoder_owner::vctx, VIDEO_ES, vlc_assert_unreachable, vlc_cond_destroy(), vlc_meta_Delete(), vlc_mutex_destroy(), vlc_video_context_Release(), vout_Release(), VOUT_SPU_CHANNEL_INVALID, vout_StopDisplay(), decoder_owner::vout_thread_started, vout_UnregisterSubpictureChannel(), decoder_owner::wait_acknowledge, decoder_owner::wait_fifo, and decoder_owner::wait_request.
Referenced by decoder_New(), and input_DecoderDelete().
int input_DecoderAddVoutOverlay | ( | decoder_t * | dec, |
subpicture_t * | sub, | ||
size_t * | channel | ||
) |
References subpicture_t::b_ephemer, dec_get_owner(), decoder_t::fmt_in, es_format_t::i_cat, subpicture_t::i_channel, subpicture_t::i_order, subpicture_t::i_start, subpicture_t::i_stop, decoder_owner::lock, decoder_owner::p_vout, VIDEO_ES, VLC_EGENERIC, vlc_mutex_lock(), vlc_mutex_unlock(), VLC_SUCCESS, vlc_tick_now(), vout_PutSubpicture(), and vout_RegisterSubpictureChannel().
Referenced by EsOutVaControlLocked().
void input_DecoderChangeDelay | ( | decoder_t * | dec, |
vlc_tick_t | delay | ||
) |
This function changes the delay.
References dec_get_owner(), decoder_owner::delay, decoder_owner::p_fifo, vlc_fifo_Lock(), and vlc_fifo_Unlock().
Referenced by EsOutDecoderChangeDelay().
void input_DecoderChangePause | ( | decoder_t * | , |
bool | b_paused, | ||
vlc_tick_t | i_date | ||
) |
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.
References dec_get_owner(), decoder_owner::frames_countdown, decoder_owner::p_fifo, decoder_owner::pause_date, decoder_owner::paused, vlc_fifo_Lock(), vlc_fifo_Signal(), and vlc_fifo_Unlock().
Referenced by EsOutDecodersChangePause().
void input_DecoderChangeRate | ( | decoder_t * | dec, |
float | rate | ||
) |
Changes the decoder rate.
This function changes rate of the intended playback speed to nominal speed.
dec | decoder |
rate | playback rate (default is 1) |
References dec_get_owner(), decoder_owner::p_fifo, decoder_owner::request_rate, vlc_fifo_Lock(), and vlc_fifo_Unlock().
Referenced by EsOutChangeRate(), and EsOutCreateDecoder().
int input_DecoderDelVoutOverlay | ( | decoder_t * | dec, |
size_t | channel | ||
) |
void input_DecoderFrameNext | ( | decoder_t * | p_dec, |
vlc_tick_t * | pi_duration | ||
) |
This function force the display of the next picture and fills the stream time consumed.
References dec_get_owner(), decoder_owner::fmt, decoder_owner::frames_countdown, es_format_t::i_cat, decoder_owner::lock, decoder_owner::p_fifo, decoder_owner::p_vout, decoder_owner::paused, VIDEO_ES, vlc_fifo_Lock(), vlc_fifo_Signal(), vlc_fifo_Unlock(), vlc_mutex_lock(), vlc_mutex_unlock(), and vout_NextPicture().
Referenced by EsOutFrameNext().
void input_DecoderGetCcDesc | ( | decoder_t * | p_dec, |
decoder_cc_desc_t * | p_desc | ||
) |
This function get cc channels descriptions.
References decoder_owner::cc, dec_get_owner(), decoder_owner::desc, decoder_owner::lock, vlc_mutex_lock(), and vlc_mutex_unlock().
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.
References decoder_owner::cc, dec_get_owner(), input_DecoderHasCCChanFlag(), decoder_owner::lock, decoder_owner::pp_decoder, VLC_EGENERIC, vlc_mutex_lock(), vlc_mutex_unlock(), and VLC_SUCCESS.
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(), dec_get_owner(), and decoder_owner::p_fifo.
Referenced by EsOutIsExtraBufferingAllowed().
|
static |
References decoder_owner::cc, decoder_owner::desc, decoder_cc_desc_t::i_608_channels, decoder_cc_desc_t::i_708_channels, VLC_CODEC_CEA608, and VLC_CODEC_CEA708.
Referenced by input_DecoderGetCcState(), and input_DecoderSetCcState().
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::b_fmt_description, dec_get_owner(), es_format_Copy(), decoder_owner::fmt, decoder_owner::lock, decoder_owner::p_description, vlc_meta_Merge(), vlc_meta_New(), 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 AUDIO_ES, decoder_owner::b_draining, decoder_owner::b_waiting, dec_get_owner(), decoder_owner::drained, decoder_owner::fmt, es_format_t::i_cat, decoder_owner::lock, decoder_owner::p_fifo, decoder_owner::p_sout_input, decoder_owner::p_vout, sout_InputIsEmpty(), VIDEO_ES, vlc_fifo_IsEmpty(), vlc_fifo_Lock(), vlc_fifo_Unlock(), vlc_mutex_lock(), vlc_mutex_unlock(), and vout_IsEmpty().
Referenced by EsOutDecodersIsEmpty(), and EsOutDrainDecoder().
decoder_t* input_DecoderNew | ( | vlc_object_t * | parent, |
es_format_t * | fmt, | ||
vlc_clock_t * | p_clock, | ||
input_resource_t * | resource, | ||
sout_instance_t * | p_sout, | ||
bool | thumbnailing, | ||
const struct input_decoder_callbacks * | cbs, | ||
void * | cbs_userdata | ||
) |
Spawns a new decoder thread from the input thread.
p_input | the input thread |
p_es | the es descriptor |
References decoder_New().
Referenced by EsOutCreateDecoder(), EsOutSetRecord(), and input_DecoderSetCcState().
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.
References _, decoder_owner::cc, subs_format_t::cc, dec_get_owner(), DecoderUnsupportedCodec(), decoder_owner::desc, es_format_Init(), decoder_owner::fmt, subs_format_t::i_channel, decoder_cc_desc_t::i_reorder_depth, subs_format_t::i_reorder_depth, input_DecoderDelete(), input_DecoderHasCCChanFlag(), input_DecoderNew(), decoder_owner::lock, msg_Err, decoder_owner::p_clock, decoder_t::p_module, decoder_owner::p_resource, decoder_owner::p_sout, decoder_owner::pp_decoder, SPU_ES, es_format_t::subs, vlc_dialog_display_error, VLC_EGENERIC, vlc_mutex_lock(), vlc_mutex_unlock(), VLC_OBJECT, and VLC_SUCCESS.
Referenced by EsOutSelectEs(), EsOutUnselectEs(), and input_DecoderDelete().
void input_DecoderSetVoutMouseEvent | ( | decoder_t * | dec, |
vlc_mouse_event | mouse_event, | ||
void * | user_data | ||
) |
References dec_get_owner(), decoder_t::fmt_in, es_format_t::i_cat, decoder_owner::mouse_event, decoder_owner::mouse_lock, decoder_owner::mouse_opaque, VIDEO_ES, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by EsOutCreateDecoder(), and EsOutVaControlLocked().
void input_DecoderStartWait | ( | decoder_t * | p_dec | ) |
This function makes the decoder start waiting for a valid data block from its fifo.
References decoder_owner::b_first, decoder_owner::b_has_data, decoder_owner::b_waiting, dec_get_owner(), decoder_owner::lock, vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), and decoder_owner::wait_request.
Referenced by EsOutChangePosition(), EsOutCreateDecoder(), and EsOutSetRecord().
void input_DecoderStopWait | ( | decoder_t * | p_dec | ) |
This function exits the waiting mode of the decoder.
References decoder_owner::b_waiting, dec_get_owner(), decoder_owner::lock, vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), and decoder_owner::wait_request.
Referenced by EsOutDecodersStopBuffering().
void input_DecoderWait | ( | decoder_t * | p_dec | ) |
This function waits for the decoder to actually receive data.
References decoder_owner::b_has_data, decoder_owner::b_idle, decoder_owner::b_waiting, dec_get_owner(), decoder_owner::lock, msg_Err, decoder_owner::p_fifo, decoder_owner::paused, vlc_cond_wait(), vlc_fifo_IsEmpty(), vlc_fifo_Lock(), vlc_fifo_Unlock(), vlc_mutex_lock(), vlc_mutex_unlock(), and decoder_owner::wait_acknowledge.
Referenced by EsOutDecodersStopBuffering().
|
static |
|
static |
Load a decoder module.
References AUDIO_ES, decoder_t::b_frame_drop_allowed, decoder_Clean(), decoder_Init(), ES_CATEGORY_COUNT, decoder_t::fmt_in, es_format_t::i_cat, module_need_var, decoder_t::p_module, SPU_ES, and VIDEO_ES.
Referenced by CreateDecoder(), and DecoderThread_Reload().
|
static |
References CreateVoutIfNeeded(), dec_get_owner(), DecoderUpdateFormatLocked(), decoder_owner::fmt, decoder_t::fmt_out, video_format_t::lighting, decoder_owner::lock, video_format_t::mastering, video_format_t::MaxCLL, video_format_t::MaxFALL, msg_Dbg, es_format_t::video, vlc_decoder_device_Release(), vlc_mutex_lock(), vlc_mutex_unlock(), and decoder_owner::vout_order.
|
static |
|
static |
|
static |
References subpicture_t::b_subtitle, dec_get_owner(), decoder_Notify, DECODER_SPU_VOUT_WAIT_DURATION, decoder_owner::error, subpicture_t::i_channel, subpicture_t::i_order, decoder_owner::i_spu_channel, decoder_owner::i_spu_order, input_resource_HoldVout(), decoder_owner::lock, msg_Warn, decoder_owner::p_clock, decoder_owner::p_resource, decoder_owner::p_vout, subpicture_New(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_tick_sleep, VLC_VOUT_ORDER_NONE, decoder_owner::vout_order, vout_RegisterSubpictureChannelInternal(), vout_Release(), VOUT_SPU_CHANNEL_INVALID, decoder_owner::vout_thread_started, and vout_UnregisterSubpictureChannel().
References dec_get_owner(), decoder_owner::out_pool, decoder_owner::p_vout, picture_pool_Wait(), and picture_Reset().
|
static |
References AOUT_DEC_CHANGED, AOUT_DEC_FAILED, aout_DecFlush(), aout_DecPlay(), decoder_owner::b_has_data, decoder_owner::b_waiting, block_Release(), decoder_owner::dec, DecoderWaitUnblock(), decoder_owner::i_preroll_end, block_t::i_pts, decoder_owner::lock, msg_Dbg, msg_Warn, decoder_owner::p_aout, PREROLL_NONE, decoder_owner::reload, RELOAD_DECODER_AOUT, RequestReload(), unlikely, vlc_cond_signal(), VLC_EGENERIC, vlc_mutex_lock(), vlc_mutex_unlock(), VLC_SUCCESS, VLC_TICK_INVALID, and decoder_owner::wait_acknowledge.
Referenced by ModuleThread_QueueAudio().
|
static |
References decoder_owner::b_has_data, decoder_owner::b_waiting, decoder_owner::dec, DecoderWaitUnblock(), subpicture_t::i_start, decoder_owner::lock, msg_Warn, decoder_owner::p_vout, subpicture_Delete(), vlc_cond_signal(), vlc_mutex_lock(), vlc_mutex_unlock(), VLC_TICK_INVALID, vout_PutSubpicture(), and decoder_owner::wait_acknowledge.
Referenced by ModuleThread_QueueSpu().
|
static |
References decoder_owner::b_first, picture_t::b_force, decoder_owner::b_has_data, picture_t::b_still, decoder_owner::b_waiting, picture_t::date, decoder_owner::dec, DecoderWaitUnblock(), decoder_owner::frames_countdown, decoder_owner::i_preroll_end, likely, decoder_owner::lock, msg_Dbg, msg_Warn, decoder_owner::p_fifo, decoder_owner::p_vout, decoder_owner::paused, picture_Release(), PREROLL_NONE, unlikely, vlc_cond_signal(), VLC_EGENERIC, vlc_fifo_Lock(), vlc_fifo_Unlock(), vlc_mutex_lock(), vlc_mutex_unlock(), VLC_SUCCESS, VLC_TICK_INVALID, vout_Flush(), vout_FlushAll, vout_PutPicture(), and decoder_owner::wait_acknowledge.
Referenced by ModuleThread_QueueVideo().
References dec_get_owner(), ModuleThread_PlayAudio(), ModuleThread_UpdateStatAudio(), and VLC_SUCCESS.
|
static |
|
static |
References dec_get_owner(), ModuleThread_PlayVideo(), ModuleThread_UpdateStatVideo(), and VLC_SUCCESS.
|
static |
References AOUT_CHAN_LEFT, AOUT_CHAN_RIGHT, AOUT_CHANMODE_DOLBYSTEREO, aout_DecDelete(), aout_DecNew(), AOUT_FMTS_IDENTICAL, aout_FormatPrepare(), aout_replaygain_changed(), es_format_t::audio, es_format_t::audio_replay_gain, CreateVoutIfNeeded(), dec_get_owner(), DecoderUpdateFormatLocked(), decoder_owner::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(), decoder_owner::lock, msg_Err, decoder_owner::p_aout, decoder_owner::p_clock, decoder_owner::p_fifo, decoder_owner::p_resource, decoder_owner::reset_out_state, var_InheritInteger(), var_TriggerCallback(), vlc_fifo_Lock(), vlc_fifo_Unlock(), vlc_mutex_lock(), and vlc_mutex_unlock().
|
static |
References aout_DecGetResetStats(), decoder_Notify, and decoder_owner::p_aout.
Referenced by ModuleThread_QueueAudio().
|
static |
References decoder_Notify, decoder_owner::p_vout, and vout_GetResetStatistic().
Referenced by ModuleThread_QueueVideo().
|
static |
References CreateVoutIfNeeded(), dec_get_owner(), decoder_Notify, decoder_t::fmt_in, decoder_t::fmt_out, es_format_t::i_codec, decoder_t::i_extra_picture_buffers, input_resource_StartVout(), MouseEvent(), decoder_owner::out_pool, decoder_owner::p_clock, decoder_owner::p_resource, decoder_owner::p_vout, picture_pool_NewFromFormat(), decoder_owner::vctx, es_format_t::video, VLC_CODEC_AV1, VLC_CODEC_DIRAC, VLC_CODEC_H264, VLC_CODEC_HEVC, VLC_CODEC_VP5, VLC_CODEC_VP6, VLC_CODEC_VP6F, VLC_CODEC_VP8, vlc_video_context_Hold(), vlc_video_context_Release(), vout_configuration_t::vout, vout_ChangeSource(), decoder_owner::vout_order, and decoder_owner::vout_thread_started.
|
static |
|
static |
References decoder_owner::b_supported, decoder_owner::cc, DecoderPlayCc(), decoder_owner::desc, and decoder_t::pf_get_cc.
Referenced by DecoderThread_ProcessInput().
|
static |
References decoder_owner::reload, RELOAD_DECODER, and RELOAD_NO_REQUEST.
Referenced by DecoderThread_DecodeBlock(), and ModuleThread_PlayAudio().
|
static |
References VLC_UNUSED.
|
static |
Referenced by CreateDecoder().
|
static |
Referenced by CreateDecoder().
|
static |
Referenced by CreateDecoder().
|
static |
Referenced by CreateDecoder().