Go to the documentation of this file.
25 #ifndef LIBVLC_INPUT_DECODER_H
26 #define LIBVLC_INPUT_DECODER_H 1
#define ARRAY_VAL(array, pos)
Definition: vlc_arrays.h:222
#define VLC_CODEC_UNKNOWN
Definition: vlc_fourcc.h:27
void input_SendEventBookmark(input_thread_t *p_input)
Definition: event.c:287
int(* pf_vout_format_update)(decoder_t *)
Definition: vlc_codec.h:150
Structure containing information about the playlist.
Definition: vlc_playlist.h:151
No arg.
Definition: vlc_playlist.h:228
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.
Definition: decoder.c:2375
#define AOUT_CHAN_RIGHT
Definition: vlc_es.h:120
size_t count
Definition: core.c:461
static void DecoderUpdateFormatLocked(decoder_t *p_dec)
Definition: decoder.c:256
#define TAB_CLEAN(count, tab)
Definition: vlc_arrays.h:46
int integer
Definition: control.h:75
#define VLC_THREAD_PRIORITY_AUDIO
Definition: vlc_threads.h:323
vlc_cond_t wait_request
Definition: decoder.c:102
mtime_t i_ts_delay
Definition: decoder.c:143
Definition: vlc_memstream.h:27
playlist_item_t * get_current_status_node(playlist_t *p_playlist)
Definition: engine.c:403
picture_t *(* pf_vout_buffer_new)(decoder_t *)
Definition: vlc_codec.h:151
static void block_ChainRelease(block_t *p_block)
Definition: vlc_block.h:337
sout_instance_t * p_sout
Definition: decoder.c:78
audio_output_t * p_aout
Definition: decoder.c:108
void vlc_restorecancel(int state)
Restores the cancellation state.
Definition: thread.c:323
#define VLC_VAR_CLEARCHOICES
Definition: vlc_variables.h:98
static int vout_update_format(decoder_t *p_dec)
Definition: decoder.c:413
#define AUDIO_REPLAY_GAIN_MAX
audio replay gain description
Definition: vlc_es.h:53
static void DecoderUpdateStatSpu(decoder_owner_sys_t *p_owner, unsigned decoded, unsigned lost)
Definition: decoder.c:1285
#define var_SetBool(a, b, c)
Definition: vlc_variables.h:257
#define var_CreateGetBool(a, b)
Definition: vlc_variables.h:493
void input_DecoderDrain(decoder_t *p_dec)
Signals that there are no further blocks to decode, and requests that the decoder drain all pending b...
Definition: decoder.c:2100
#define VOUT_SPU_CHANNEL_OSD
Definition: vlc_vout.h:156
arg1=int, res=can fail
Definition: vlc_playlist.h:227
bool flushing
Definition: decoder.c:128
void input_DecoderStopWait(decoder_t *p_dec)
This function exits the waiting mode of the decoder.
Definition: decoder.c:2281
static subpicture_t * spu_new_buffer(decoder_t *p_dec, const subpicture_updater_t *p_updater)
Definition: decoder.c:567
#define ARRAY_APPEND(array, elem)
Definition: vlc_arrays.h:187
int(* pf_get_display_rate)(decoder_t *)
Definition: vlc_codec.h:176
decoder_owner_sys_t * p_owner
Definition: vlc_codec.h:189
arg1= playlist_item_t*,
Definition: vlc_playlist.h:223
bool paused
Definition: decoder.c:118
void input_DecoderStartWait(decoder_t *p_dec)
This function makes the decoder start waiting for a valid data block from its fifo.
Definition: decoder.c:2267
char * ptr
Definition: vlc_memstream.h:51
int aout_DecNew(audio_output_t *, const audio_sample_format_t *, const audio_replay_gain_t *, const aout_request_vout_t *)
Creates an audio output.
Definition: dec.c:43
static vout_thread_t * aout_request_vout(void *p_private, vout_thread_t *p_vout, const video_format_t *p_fmt, bool b_recyle)
Definition: decoder.c:279
void vout_OSDMessage(vout_thread_t *vout, int channel, const char *format,...)
Write an informative message at the default location, for the default duration and only if the OSD op...
Definition: video_text.c:141
vout_thread_t * p_spu_vout
Definition: decoder.c:74
int input_DecoderSetCcState(decoder_t *, vlc_fourcc_t, int i_channel, bool b_decode)
This function activates the request closed caption channel.
Definition: decoder.c:2174
Definition: vlc_subpicture.h:122
playlist item / node
Definition: vlc_playlist.h:126
static bool input_DecoderHasCCChanFlag(decoder_t *p_dec, vlc_fourcc_t codec, int i_channel)
Definition: decoder.c:2151
mtime_t pause_date
Definition: decoder.c:116
uint8_t i_608_channels
Definition: vlc_codec.h:196
static int DecoderPlayAudio(decoder_t *p_dec, block_t *p_audio, unsigned *restrict pi_lost_sum)
Definition: decoder.c:1128
void input_SendEventAout(input_thread_t *p_input)
Definition: event.c:280
void vout_FlushSubpictureChannel(vout_thread_t *vout, int channel)
Definition: video_output.c:389
void playlist_Lock(playlist_t *pl)
Locks the playlist.
Definition: control.c:35
#define BLOCK_FLAG_CORRUPTED
This block is corrupted and/or there is data loss
Definition: vlc_block.h:86
#define VLC_CODEC_H264
Definition: vlc_fourcc.h:37
#define AOUT_DEC_CHANGED
Definition: aout_internal.h:149
void input_DecoderChangeDelay(decoder_t *p_dec, mtime_t i_delay)
This function changes the delay.
Definition: decoder.c:2258
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.
Definition: decoder.c:2319
#define var_TriggerCallback(a, b)
Definition: vlc_variables.h:166
mtime_t time
Definition: control.h:72
#define BLOCK_FLAG_PREROLL
This block has to be decoded but not be displayed.
Definition: vlc_block.h:84
vlc_rational_t w
Definition: vlc_fourcc.h:677
size_t i_buffer
Payload length.
Definition: vlc_block.h:116
reload
Definition: decoder.c:60
int(* pf_aout_format_update)(decoder_t *)
Definition: vlc_codec.h:160
vlc_meta_t * p_description
Definition: decoder.c:94
#define var_InheritInteger(o, n)
Definition: vlc_variables.h:612
void stats_Update(counter_t *p_counter, uint64_t val, uint64_t *new_val)
Update a counter element with new values.
Definition: stats.c:157
playlist_item_t * get_current_status_item(playlist_t *p_playlist)
Accessor for status item and status nodes.
Definition: engine.c:396
mtime_t i_dts
Definition: vlc_block.h:124
int(* pf_decode)(decoder_t *, block_t *p_block)
Definition: vlc_codec.h:96
Definition: vlc_codec.h:194
static void DecoderProcess(decoder_t *p_dec, block_t *p_block)
Decode a block.
Definition: decoder.c:1370
#define VLC_VAR_ADDCHOICE
Definition: vlc_variables.h:96
bool b_waiting
Definition: decoder.c:123
void vlc_fifo_WaitCond(vlc_fifo_t *fifo, vlc_cond_t *condvar)
Definition: fifo.c:68
void aout_FormatPrepare(audio_sample_format_t *p_format)
Definition: common.c:86
Definition: aout_internal.h:39
#define VLC_CODEC_HEVC
Definition: vlc_fourcc.h:140
void(* pf_update_stat)(decoder_owner_sys_t *, unsigned decoded, unsigned lost)
Definition: decoder.c:83
int(* pf_queue_audio)(decoder_t *, block_t *)
Definition: vlc_codec.h:181
#define VLC_CODEC_VP6F
Definition: vlc_fourcc.h:68
int64_t i_preroll_end
Definition: decoder.c:114
static void DecoderWaitUnblock(decoder_t *p_dec)
Definition: decoder.c:729
void vout_Flush(vout_thread_t *vout, mtime_t date)
This function will ensure that all ready/displayed pictures have at most the provided date.
Definition: video_output.c:328
es_format_t fmt
Definition: decoder.c:90
#define VLCDEC_ECRITICAL
Definition: vlc_codec.h:73
int type
Definition: control.h:68
No arg.
Definition: vlc_playlist.h:229
int i_reorder_depth
Definition: vlc_codec.h:198
void vout_control_WaitEmpty(vout_control_t *ctrl)
Definition: control.c:93
void * p_address
Definition: vlc_common.h:331
union vout_control_cmd_t::@77 u
const char * vlc_fourcc_GetDescription(int cat, vlc_fourcc_t fourcc)
It returns the description of the given fourcc or NULL if not found.
Definition: fourcc.c:198
char * psz_name
Definition: vlc_input.h:52
decoder_t * input_DecoderNew(input_thread_t *, es_format_t *, input_clock_t *, sout_instance_t *)
Spawns a new decoder thread from the input thread.
Definition: decoder.c:1955
static int DecoderQueueVideo(decoder_t *p_dec, picture_t *p_pic)
Definition: decoder.c:1116
void vlc_fifo_Wait(vlc_fifo_t *fifo)
Waits on the FIFO.
Definition: fifo.c:63
int64_t i_spu_order
Definition: decoder.c:76
Definition: vlc_input.h:48
Definition: vlc_input_item.h:48
static void playlist_vaControl(playlist_t *p_playlist, int i_query, bool locked, va_list args)
Definition: control.c:50
int i_last_rate
Definition: decoder.c:72
#define msleep(d)
Definition: vlc_threads.h:878
void input_DecoderChangePause(decoder_t *p_dec, bool b_paused, mtime_t i_date)
This function changes the pause state.
Definition: decoder.c:2243
float pf_peak[(2)]
Definition: vlc_es.h:61
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:86
Definition: vlc_codec.h:55
#define _(str)
Definition: vlc_fixups.h:371
size_t vlc_fifo_GetCount(const vlc_fifo_t *fifo)
Counts blocks in a FIFO.
Definition: fifo.c:78
static int DecoderQueueSpu(decoder_t *p_dec, subpicture_t *p_spu)
Definition: decoder.c:1291
unsigned den
Definition: fourcc_gen.c:33
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)
Definition: decoder.c:1901
void vlc_fifo_QueueUnlocked(block_fifo_t *fifo, block_t *block)
Queues a linked-list of blocks into a locked FIFO.
Definition: fifo.c:88
decoder_cc_desc_t desc
Definition: decoder.c:138
sout_packetizer_input_t * p_sout_input
Definition: decoder.c:79
void vlc_cond_broadcast(vlc_cond_t *p_condvar)
Wakes up all threads waiting on a condition variable.
Definition: thread.c:262
static void DecoderPlaySpu(decoder_t *p_dec, subpicture_t *p_subpic)
Definition: decoder.c:1248
Viewpoints.
Definition: vlc_viewpoint.h:44
Internal state for block queues.
Definition: fifo.c:37
bool b_packetizer
Definition: decoder.c:87
#define MAX_CC_DECODERS
Definition: decoder.c:134
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.
Definition: decoder.c:2319
int aout_DecPlay(audio_output_t *, block_t *, int i_input_rate)
Definition: dec.c:356
#define ARRAY_REMOVE(array, pos)
Definition: vlc_arrays.h:211
#define VLC_EGENERIC
Unspecified error.
Definition: vlc_common.h:350
void input_DecoderWait(decoder_t *p_dec)
This function waits for the decoder to actually receive data.
Definition: decoder.c:2293
void input_DecoderDelete(decoder_t *p_dec)
Kills a decoder thread and waits until it's finished.
Definition: decoder.c:1980
int vlc_clone(vlc_thread_t *th, void *(*entry)(void *), void *data, int priority)
Creates and starts a new thread.
Definition: thread.c:263
vlc_cond_t wait_acknowledge
Definition: decoder.c:103
#define vlc_dialog_display_error(a, b, c,...)
Definition: vlc_dialog.h:72
#define AOUT_DEC_FAILED
Definition: aout_internal.h:150
static int DecoderGetDisplayRate(decoder_t *p_dec)
Definition: decoder.c:645
vlc_renderer_item_t * vlc_renderer_item_hold(vlc_renderer_item_t *p_item)
Hold a renderer item, i.e.
Definition: renderer_discovery.c:157
void picture_Release(picture_t *p_picture)
This function will release a picture.
Definition: picture.c:300
static int DecoderPlayVideo(decoder_t *p_dec, picture_t *p_picture, unsigned *restrict pi_lost_sum)
Definition: decoder.c:993
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)
Definition: decoder.c:775
static void video_format_AdjustColorSpace(video_format_t *p_fmt)
Definition: vlc_es.h:405
void vlc_cond_signal(vlc_cond_t *p_condvar)
Wakes up one thread waiting on a condition variable.
Definition: thread.c:256
#define ARRAY_RESET(array)
Definition: vlc_arrays.h:180
pthread_cond_t vlc_cond_t
Condition variable.
Definition: vlc_threads.h:279
Video picture.
Definition: vlc_picture.h:68
char * vlc_gettext(const char *msgid)
In-tree plugins share their gettext domain with LibVLC.
Definition: textdomain.c:89
int asprintf(char **, const char *,...)
int vlc_fifo_TimedWaitCond(vlc_fifo_t *fifo, vlc_cond_t *condvar, mtime_t deadline)
Timed variant of vlc_fifo_WaitCond().
Definition: fifo.c:73
void vout_control_PushVoid(vout_control_t *ctrl, int type)
Definition: control.c:121
static void DecoderUpdateStatVideo(decoder_owner_sys_t *p_owner, unsigned decoded, unsigned lost)
Definition: decoder.c:1091
mtime_t i_pts
Definition: vlc_block.h:123
int(* pf_queue_cc)(decoder_t *, block_t *, const decoder_cc_desc_t *)
Definition: vlc_codec.h:183
int64_t i_int
Definition: vlc_common.h:327
static void DeleteDecoder(decoder_t *p_dec)
Destroys a decoder object.
Definition: decoder.c:1808
vlc_cond_t wait_request
Definition: control.h:112
void aout_DecGetResetStats(audio_output_t *, unsigned *, unsigned *)
block_t * vlc_fifo_DequeueUnlocked(block_fifo_t *fifo)
Dequeues the first block from a locked FIFO, if any.
Definition: fifo.c:107
#define VLCDEC_SUCCESS
Definition: vlc_codec.h:72
void vout_control_Dead(vout_control_t *ctrl)
Definition: control.c:84
void block_FifoRelease(block_fifo_t *p_fifo)
Destroys a FIFO created by block_FifoNew().
Definition: fifo.c:158
int vlc_memstream_open(struct vlc_memstream *ms)
Definition: memstream.c:104
void vout_control_Push(vout_control_t *ctrl, vout_control_cmd_t *cmd)
Definition: control.c:101
int i_channel
subpicture channel ID
Definition: vlc_subpicture.h:157
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 chann...
Definition: decoder.c:2229
block_t * vlc_fifo_DequeueAllUnlocked(block_fifo_t *fifo)
Dequeues the all blocks from a locked FIFO.
Definition: fifo.c:129
block_t *(* pf_packetize)(decoder_t *, block_t **pp_block)
Definition: vlc_codec.h:125
picture_t * vout_GetPicture(vout_thread_t *vout)
Allocates a video output picture buffer.
Definition: video_output.c:404
void playlist_Control(playlist_t *p_playlist, int query, int locked,...)
Do a playlist action.
Definition: control.c:139
mtime_t i_length
Definition: vlc_block.h:125
unsigned frames_countdown
Definition: decoder.c:117
Definition: control.h:110
#define var_GetFloat(a, b)
Definition: vlc_variables.h:657
void vlc_fifo_Unlock(vlc_fifo_t *fifo)
Unlocks a block FIFO.
Definition: fifo.c:53
static mtime_t DecoderGetDisplayDate(decoder_t *p_dec, mtime_t i_ts)
Definition: decoder.c:625
#define VLC_CODEC_VP5
Definition: vlc_fourcc.h:66
#define vlc_object_hold(a)
Definition: vlc_objects.h:60
#define CLOCK_FREQ
Definition: vlc_config.h:45
static vlc_mutex_t lock
Definition: interface.c:62
#define msg_Warn(p_this,...)
Definition: vlc_messages.h:84
#define DECODER_BOGUS_VIDEO_DELAY
Definition: decoder.c:148
Audio output object.
Definition: vlc_aout.h:114
vlc_cond_t wait_timed
Definition: decoder.c:105
static void DecoderUpdatePreroll(int64_t *pi_preroll, const block_t *p)
Definition: decoder.c:761
int i_size
Definition: control.h:119
module_t * p_module
Definition: vlc_codec.h:60
void subpicture_Delete(subpicture_t *p_subpic)
This function delete a subpicture created by subpicture_New.
Definition: subpicture.c:83
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().
Definition: decoder.c:702
#define vlc_object_release(a)
Definition: vlc_objects.h:63
void input_DecoderStartWait(decoder_t *)
This function makes the decoder start waiting for a valid data block from its fifo.
Definition: decoder.c:2267
subpicture_t * subpicture
Definition: control.h:102
block_t * p_next
Definition: vlc_block.h:113
#define AOUT_FMTS_IDENTICAL(p_first, p_second)
Definition: vlc_aout.h:62
static void UnloadDecoder(decoder_t *p_dec)
Unload a decoder module.
Definition: decoder.c:197
No arg res=can fail.
Definition: vlc_playlist.h:226
bool can_sleep
Definition: control.h:117
void input_DecoderGetCcDesc(decoder_t *p_dec, decoder_cc_desc_t *p_desc)
This function get cc channels descriptions.
Definition: decoder.c:2142
struct vlc_chroma_description_t::@178 p[4]
void vout_control_Clean(vout_control_t *ctrl)
Definition: control.c:70
static int es_out_Control(es_out_t *out, int i_query,...)
Definition: vlc_es_out.h:144
vlc_mutex_t lock
Definition: decoder.c:101
#define AOUT_CHANMODE_DOLBYSTEREO
Definition: vlc_es.h:160
void vlc_testcancel(void)
Issues an explicit deferred cancellation point.
Definition: thread.c:331
void vout_control_cmd_Init(vout_control_cmd_t *cmd, int type)
Definition: control.c:33
const vlc_chroma_description_t * vlc_fourcc_GetChromaDescription(vlc_fourcc_t i_fourcc)
It returns a vlc_chroma_description_t describing the requested fourcc or NULL if not found.
Definition: fourcc.c:779
decoder_t * p_packetizer
Definition: decoder.c:86
struct vout_thread_t *(* pf_request_vout)(void *, struct vout_thread_t *, const video_format_t *, bool)
Definition: aout_internal.h:41
#define VLC_TS_INVALID
Definition: vlc_config.h:42
void vlc_fifo_Lock(vlc_fifo_t *fifo)
Locks a block FIFO.
Definition: fifo.c:48
static void * DecoderThread(void *p_data)
The decoding main loop.
Definition: decoder.c:1534
#define ARRAY_INIT(array)
Definition: vlc_arrays.h:173
input_clock_t * p_clock
Definition: decoder.c:71
bool pb_peak[(2)]
Definition: vlc_es.h:59
void(* pf_flush)(decoder_t *)
Definition: vlc_codec.h:127
#define AOUT_MAX_ADVANCE_TIME
Definition: vlc_aout.h:38
arg2 = playlist_item_t* , res=can fail
Definition: vlc_playlist.h:225
void vout_control_PushInteger(vout_control_t *ctrl, int type, int integer)
Definition: control.c:136
uint32_t i_flags
Definition: vlc_block.h:120
void vout_control_cmd_Clean(vout_control_cmd_t *cmd)
Definition: control.c:39
Video subtitle.
Definition: vlc_subpicture.h:153
void vlc_assert_locked(vlc_mutex_t *p_mutex)
Definition: thread.c:117
#define VLC_CODEC_VP6
Definition: vlc_fourcc.h:67
void vlc_fifo_Signal(vlc_fifo_t *fifo)
Wakes up one thread waiting on the FIFO, if any.
Definition: fifo.c:58
int input_clock_GetRate(input_clock_t *cl)
This function returns the current rate.
Definition: clock.c:455
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.
Definition: decoder.c:1966
#define var_SetFloat(a, b, c)
Definition: vlc_variables.h:258
es_format_t fmt_in
Definition: vlc_codec.h:64
unsigned i_nb_samples
Definition: vlc_block.h:121
int decoder_GetDisplayRate(decoder_t *p_dec)
This function returns the current input rate.
Definition: decoder.c:711
static void block_Release(block_t *block)
Releases a block.
Definition: vlc_block.h:181
bool b_has_data
Definition: decoder.c:125
vlc_rational_t h
Definition: vlc_fourcc.h:678
#define PL_LOCK_IF(cond)
Definition: playlist_internal.h:181
#define TAB_APPEND(count, tab, p)
Definition: vlc_arrays.h:64
#define PL_UNLOCK_IF(cond)
Definition: playlist_internal.h:187
block_t *(* pf_get_cc)(decoder_t *, decoder_cc_desc_t *)
Definition: vlc_codec.h:135
static int es_out_ControlModifyPcrSystem(es_out_t *out, bool b_absolute, mtime_t i_system)
Definition: vlc_es_out.h:174
block_fifo_t * block_FifoNew(void)
Creates a thread-safe FIFO queue of blocks.
Definition: fifo.c:143
bool b_force
Definition: vlc_picture.h:83
const char * psz_name
Definition: vlc_codecs.h:315
void input_SendEventMetaInfo(input_thread_t *p_input)
Definition: event.c:194
#define AOUT_MAX_INPUT_RATE
Definition: aout_internal.h:31
static bool vlc_fifo_IsEmpty(const vlc_fifo_t *fifo)
Definition: vlc_block.h:609
int(* pf_queue_video)(decoder_t *, picture_t *)
Definition: vlc_codec.h:179
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.
Definition: decoder.c:1955
Thread handle.
Definition: vlc_threads.h:252
static void DecoderPlayCc(decoder_t *p_dec, block_t *p_cc, const decoder_cc_desc_t *p_desc)
Definition: decoder.c:922
void vlc_mutex_init(vlc_mutex_t *p_mutex)
Initializes a fast mutex.
Definition: thread.c:85
#define AOUT_MAX_PREPARE_TIME
Definition: vlc_aout.h:42
float pf_gain[(2)]
Definition: vlc_es.h:66
#define DECODER_SPU_VOUT_WAIT_DURATION
Definition: decoder.c:151
static void PacketizerGetCc(decoder_t *p_dec, decoder_t *p_dec_cc)
Definition: decoder.c:959
#define var_GetInteger(a, b)
Definition: vlc_variables.h:655
void vout_NextPicture(vout_thread_t *vout, mtime_t *duration)
This function will force to display the next picture while paused.
Definition: video_output.c:343
int(* pf_queue_sub)(decoder_t *, subpicture_t *)
Definition: vlc_codec.h:185
void input_DecoderChangeDelay(decoder_t *, mtime_t i_delay)
This function changes the delay.
Definition: decoder.c:2258
#define vlc_cleanup_pop()
Unregisters the last cancellation handler.
Definition: vlc_threads.h:983
int decoder_GetInputAttachments(decoder_t *p_dec, input_attachment_t ***ppp_attachment, int *pi_attachment)
This function gives all input attachments at once.
Definition: decoder.c:691
struct vout_control_cmd_t::@77::@80 message
bool input_DecoderIsEmpty(decoder_t *)
This function returns true if the decoder fifo is empty and false otherwise.
Definition: decoder.c:2059
#define var_SetInteger(a, b, c)
Definition: vlc_variables.h:256
void block_FifoPut(block_fifo_t *fifo, block_t *block)
Immediately queue one block at the end of a FIFO.
Definition: fifo.c:176
int(* pf_get_attachments)(decoder_t *p_dec, input_attachment_t ***ppp_attachment, int *pi_attachment)
Definition: vlc_codec.h:168
void vout_PutSubpicture(vout_thread_t *vout, subpicture_t *subpic)
Definition: video_output.c:370
static void DecoderUnsupportedCodec(decoder_t *p_dec, const es_format_t *fmt, bool b_decoding)
Definition: decoder.c:1883
#define VLC_ENOOBJ
Object not found.
Definition: vlc_common.h:354
int vout_control_Pop(vout_control_t *ctrl, vout_control_cmd_t *cmd, mtime_t deadline)
Definition: control.c:179
static int LoadDecoder(decoder_t *p_dec, bool b_packetizer, const es_format_t *restrict p_fmt)
Load a decoder module.
Definition: decoder.c:157
void input_DecoderGetCcDesc(decoder_t *, decoder_cc_desc_t *)
This function get cc channels descriptions.
Definition: decoder.c:2142
#define VLC_CODEC_DTS
Definition: vlc_fourcc.h:410
bool b_subtitle
the picture is a movie subtitle
Definition: vlc_subpicture.h:183
#define AOUT_CHAN_LEFT
Definition: vlc_es.h:119
bool vlc_fourcc_IsYUV(vlc_fourcc_t fcc)
It returns true if the given fourcc is YUV and false otherwise.
Definition: fourcc.c:643
void input_DecoderWait(decoder_t *)
This function waits for the decoder to actually receive data.
Definition: decoder.c:2293
decoder_t * pp_decoder[64]
Definition: decoder.c:139
mtime_t i_stop
end of display date
Definition: vlc_subpicture.h:172
bool boolean
Definition: control.h:71
bool b_idle
Definition: decoder.c:131
bool input_DecoderIsEmpty(decoder_t *p_dec)
This function returns true if the decoder fifo is empty and false otherwise.
Definition: decoder.c:2059
es_format_t fmt_out
Definition: vlc_codec.h:67
void input_SendEventVout(input_thread_t *p_input)
Definition: event.c:275
void playlist_AssertLocked(playlist_t *pl)
Definition: control.c:45
vlc_thread_t thread
Definition: decoder.c:81
static int ReloadDecoder(decoder_t *p_dec, bool b_packetizer, const es_format_t *restrict p_fmt, enum reload reload)
Definition: decoder.c:215
static void DecoderDecode(decoder_t *p_dec, block_t *p_block)
Definition: decoder.c:1334
size_t vlc_fifo_GetBytes(const vlc_fifo_t *fifo)
Counts bytes in a FIFO.
Definition: fifo.c:83
#define likely(p)
Definition: vlc_common.h:113
int sout_InputSendBuffer(sout_packetizer_input_t *p_input, block_t *p_buffer)
Definition: stream_output.c:221
bool error
Definition: decoder.c:120
static int aout_update_format(decoder_t *p_dec)
Definition: decoder.c:317
static int DecoderQueueCc(decoder_t *p_videodec, block_t *p_cc, const decoder_cc_desc_t *p_desc)
Definition: decoder.c:977
int i_spu_channel
Definition: decoder.c:75
The main vlc_object_t structure.
Definition: vlc_objects.h:39
int vlc_savecancel(void)
Disables thread cancellation.
Definition: thread.c:313
#define VLC_ENOMEM
Not enough memory.
Definition: vlc_common.h:351
void input_DecoderDecode(decoder_t *p_dec, block_t *p_block, bool b_do_pace)
Put a block_t in the decoder's fifo.
Definition: decoder.c:2028
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.
Definition: decoder.c:2174
bool is_processing
Definition: control.h:118
pthread_mutex_t vlc_mutex_t
Mutex.
Definition: vlc_threads.h:267
size_t input_DecoderGetFifoSize(decoder_t *p_dec)
This function returns the current size in bytes of the decoder fifo.
Definition: decoder.c:2368
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:349
int input_clock_ConvertTS(vlc_object_t *p_object, input_clock_t *cl, int *pi_rate, mtime_t *pi_ts0, mtime_t *pi_ts1, mtime_t i_ts_bound)
This function converts a pair of timestamp from stream clock to system clock.
Definition: clock.c:397
#define VLC_THREAD_PRIORITY_VIDEO
Definition: vlc_threads.h:324
static int es_out_ControlGetPcrSystem(es_out_t *out, mtime_t *pi_system, mtime_t *pi_delay)
Definition: vlc_es_out.h:170
void vout_Cancel(vout_thread_t *vout, bool canceled)
Definition: video_output.c:305
char * strdup(const char *)
const char * module_get_name(const module_t *m, bool long_name)
Get the human-friendly name of a module.
Definition: modules.c:77
int input_DecoderGetCcState(decoder_t *, vlc_fourcc_t, int i_channel, bool *pb_decode)
This function returns an error if the requested channel does not exist and set pb_decode to the chann...
Definition: decoder.c:2229
uint64_t i_708_channels
Definition: vlc_codec.h:197
#define VLCDEC_RELOAD
Definition: vlc_codec.h:74
#define VLC_USED
Definition: fourcc_gen.c:31
char psz_value[8]
Definition: vout_intf.c:91
void vout_PutPicture(vout_thread_t *vout, picture_t *picture)
It gives to the vout a picture to be displayed.
Definition: video_output.c:422
input_resource_t * p_resource
Definition: decoder.c:70
void vout_control_Wake(vout_control_t *ctrl)
Definition: control.c:113
sout_packetizer_input_t * sout_InputNew(sout_instance_t *p_sout, const es_format_t *p_fmt)
Definition: stream_output.c:150
#define vlc_custom_create(o, s, n)
Definition: libvlc.h:108
int() vlc_memstream_puts(struct vlc_memstream *ms, const char *str)
Definition: memstream.c:149
bool sout_InputIsEmpty(sout_packetizer_input_t *p_input)
Definition: stream_output.c:198
size_t input_DecoderGetFifoSize(decoder_t *p_dec)
This function returns the current size in bytes of the decoder fifo.
Definition: decoder.c:2368
void vout_control_PushBool(vout_control_t *ctrl, int type, bool boolean)
Definition: control.c:128
void vlc_cond_destroy(vlc_cond_t *p_condvar)
Deinitializes a condition variable.
Definition: thread.c:228
Definition: renderer_discovery.c:33
int vout_RegisterSubpictureChannel(vout_thread_t *vout)
Definition: video_output.c:378
void vlc_cond_init(vlc_cond_t *p_condvar)
Initializes a condition variable.
Definition: thread.c:216
void vout_ChangePause(vout_thread_t *vout, bool is_paused, mtime_t date)
This function will (un)pause the display of pictures.
Definition: video_output.c:311
void vlc_cond_wait(vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex)
Waits on a condition variable.
Definition: thread.c:267
int sout_InputDelete(sout_packetizer_input_t *p_input)
Definition: stream_output.c:182
#define N_(str)
Definition: vlc_fixups.h:372
subpicture_t *(* pf_spu_buffer_new)(decoder_t *, const subpicture_updater_t *)
Definition: vlc_codec.h:164
struct decoder_owner_sys_t::@12 cc
#define TAB_REMOVE(count, tab, p)
Definition: vlc_arrays.h:91
void input_DecoderFlush(decoder_t *p_dec)
Requests that the decoder immediately discard all pending buffers.
Definition: decoder.c:2114
bool vout_IsEmpty(vout_thread_t *vout)
This function will return true if no more pictures are to be displayed.
Definition: video_output.c:334
char * string
Definition: control.h:74
bool b_draining
Definition: decoder.c:129
void vlc_mutex_destroy(vlc_mutex_t *p_mutex)
Deinitializes a mutex.
Definition: thread.c:110
static block_t * block_Duplicate(block_t *p_block)
Duplicates a block.
Definition: vlc_block.h:203
#define VLC_CODEC_DIRAC
Definition: vlc_fourcc.h:56
void sout_InputFlush(sout_packetizer_input_t *p_input)
Definition: stream_output.c:210
static picture_t * vout_new_buffer(decoder_t *p_dec)
Definition: decoder.c:559
bool b_fmt_description
Definition: decoder.c:93
void input_DecoderChangePause(decoder_t *, bool b_paused, mtime_t i_date)
This function changes the pause state.
Definition: decoder.c:2243
void vlc_mutex_unlock(vlc_mutex_t *p_mutex)
Releases a mutex.
Definition: thread.c:138
#define unlikely(p)
Definition: vlc_common.h:114
int vlc_memstream_printf(struct vlc_memstream *ms, const char *fmt,...)
Definition: memstream.c:184
static int DecoderTimedWait(decoder_t *p_dec, mtime_t deadline)
Definition: decoder.c:745
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.
Definition: decoder.c:2340
#define pl_priv(pl)
Definition: playlist_internal.h:95
mtime_t i_start
beginning of display date
Definition: vlc_subpicture.h:171
#define ES_CATEGORY_COUNT
Definition: vlc_es.h:571
static void RequestReload(decoder_t *p_dec)
Definition: decoder.c:681
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.
Definition: decoder.c:672
vlc_mutex_t lock
Definition: control.h:111
block_t * block_Alloc(size_t size)
Allocates a block.
Definition: block.c:119
bool vlc_ureduce(unsigned *, unsigned *, uint64_t, uint64_t, uint64_t)
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.
Definition: decoder.c:656
void vout_control_PushPair(vout_control_t *ctrl, int type, int a, int b)
Definition: control.c:161
vlc_cond_t wait_fifo
Definition: decoder.c:104
int i_extra_picture_buffers
Number of extra (ie in addition to the DPB) picture buffers needed for decoding.
Definition: vlc_codec.h:157
mtime_t(* pf_get_display_date)(decoder_t *, mtime_t)
Definition: vlc_codec.h:172
void vout_GetResetStatistic(vout_thread_t *vout, unsigned *restrict displayed, unsigned *restrict lost)
Definition: video_output.c:322
bool b_frame_drop_allowed
Definition: vlc_codec.h:70
#define vlc_assert_unreachable()
Definition: vlc_common.h:118
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.
Definition: decoder.c:2340
void vlc_cancel(vlc_thread_t thread_id)
Marks a thread as cancelled.
Definition: thread.c:297
int64_t mtime_t
High precision date or time interval.
Definition: vlc_common.h:150
int64_t i_time_offset
Definition: vlc_input.h:51
subpicture_t * subpicture_New(const subpicture_updater_t *p_upd)
This function create a new empty subpicture.
Definition: subpicture.c:44
struct vout_control_cmd_t::@77::@78 pair
void input_DecoderStopWait(decoder_t *)
This function exits the waiting mode of the decoder.
Definition: decoder.c:2281
int vlc_cond_timedwait(vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex, mtime_t deadline)
Waits on a condition variable up to a certain date.
Definition: thread.c:273
void vout_control_PushMessage(vout_control_t *ctrl, int type, int channel, const char *string)
Definition: control.c:152
void playlist_Unlock(playlist_t *pl)
Unlocks the playlist.
Definition: control.c:40
atomic_bool drained
Definition: decoder.c:130
#define BLOCK_FLAG_CORE_PRIVATE_RELOADED
Definition: decoder.c:152
Chroma related information.
Definition: vlc_fourcc.h:674
Video output thread descriptor.
Definition: vlc_vout.h:70
void decoder_AbortPictures(decoder_t *p_dec, bool b_abort)
Abort any calls of decoder_NewPicture.
Definition: decoder.c:719
static bool aout_replaygain_changed(const audio_replay_gain_t *a, const audio_replay_gain_t *b)
Definition: decoder.c:303
void aout_DecChangePause(audio_output_t *, bool b_paused, mtime_t i_date)
Definition: dec.c:431
#define BLOCK_FLAG_DISCONTINUITY
The content doesn't follow the last block, possible some blocks in between have been lost.
Definition: vlc_block.h:66
#define VLC_OBJECT(x)
Type-safe vlc_object_t cast.
Definition: vlc_common.h:464
No arg.
Definition: vlc_playlist.h:222
static int DecoderGetInputAttachments(decoder_t *p_dec, input_attachment_t ***ppp_attachment, int *pi_attachment)
Definition: decoder.c:613
vlc_cond_t wait_acknowledge
Definition: control.h:113
vout_thread_t * p_vout
Definition: decoder.c:110
bool b_supported
Definition: decoder.c:137
static void * vlc_alloc(size_t count, size_t size)
Definition: vlc_common.h:948
mtime_t mdate(void)
Precision monotonic clock.
Definition: thread.c:406
#define vlc_fifo_CleanupPush(fifo)
Definition: vlc_block.h:618
#define module_unneed(a, b)
Definition: vlc_modules.h:49
bool b_first
Definition: decoder.c:124
struct vout_control_t::@83 cmd
VLC value structure.
Definition: vlc_common.h:325
Stream output instance (FIXME: should be private to src/ to avoid invalid unsynchronized access)
Definition: vlc_sout.h:48
static void DecoderProcessFlush(decoder_t *p_dec)
Definition: decoder.c:1469
input_thread_t * p_input
Definition: decoder.c:69
void aout_DecFlush(audio_output_t *, bool wait)
Definition: dec.c:448
void vlc_mutex_lock(vlc_mutex_t *p_mutex)
Acquires a mutex.
Definition: thread.c:123
Definition: vlc_block.h:111
static int DecoderQueueAudio(decoder_t *p_dec, block_t *p_aout_buf)
Definition: decoder.c:1236
mtime_t date
display date
Definition: vlc_picture.h:82
#define msg_Err(p_this,...)
Definition: vlc_messages.h:82
bool pb_gain[(2)]
Definition: vlc_es.h:64
bool is_dead
Definition: control.h:116
int vlc_memstream_close(struct vlc_memstream *ms)
Definition: memstream.c:119
block_fifo_t * p_fifo
Definition: decoder.c:98
int vasprintf(char **, const char *, va_list)
size_t block_FifoSize(block_fifo_t *fifo)
Definition: fifo.c:215
int64_t i_order
Definition: vlc_subpicture.h:163
#define VLC_CODEC_VP8
Definition: vlc_fourcc.h:121
#define VLC_CODEC_CEA708
Definition: vlc_fourcc.h:551
#define SPU_MAX_PREPARE_TIME
Definition: vlc_config.h:72
#define var_GetBool(a, b)
Definition: vlc_variables.h:656
atomic_int reload
Definition: decoder.c:95
void vout_control_Init(vout_control_t *ctrl)
Definition: control.c:58
void vlc_join(vlc_thread_t handle, void **result)
Waits for a thread to complete (if needed), then destroys it.
Definition: thread.c:270
void aout_DecDelete(audio_output_t *)
Stops all plugins involved in the audio output.
Definition: dec.c:124
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.
Definition: decoder.c:1650
#define module_need(a, b, c, d)
Definition: vlc_modules.h:47
void vout_control_PushString(vout_control_t *ctrl, int type, const char *string)
Definition: control.c:170
void vout_control_PushTime(vout_control_t *ctrl, int type, mtime_t time)
Definition: control.c:144
uint32_t vlc_fourcc_t
Definition: fourcc_gen.c:32
static void DecoderUpdateStatAudio(decoder_owner_sys_t *p_owner, unsigned decoded, unsigned lost)
Definition: decoder.c:1211
void input_DecoderGetObjects(decoder_t *, vout_thread_t **, audio_output_t **)
This function returns the objects associated to a decoder.
Definition: decoder.c:2375
#define VLC_CODEC_CEA608
Definition: vlc_fourcc.h:550
unsigned plane_count
Definition: vlc_fourcc.h:675
vlc_meta_t * p_description
Definition: vlc_codec.h:141
#define var_Change(a, b, c, d, e)
Definition: vlc_variables.h:127