VLC 4.0.0-dev
|
Data Structures | |
struct | vout_thread_sys_t |
struct | vout_filter_t |
Macros | |
#define | VOUT_THREAD_TO_SYS(vout) container_of(vout, vout_thread_sys_t, obj.obj) |
#define | FILTER_POOL_SIZE (3+1+1) |
#define | VOUT_REDISPLAY_DELAY VLC_TICK_FROM_MS(80) |
#define | VOUT_DISPLAY_LATE_THRESHOLD VLC_TICK_FROM_MS(20) |
Late pictures having a delay higher than this value are thrashed. | |
#define | VOUT_MWAIT_TOLERANCE VLC_TICK_FROM_MS(4) |
Typedefs | |
typedef struct vout_thread_sys_t | vout_thread_sys_t |
Functions | |
static struct vlc_tracer * | GetTracer (vout_thread_sys_t *sys) |
static void | VoutResetChronoLocked (vout_thread_sys_t *sys) |
static bool | VoutCheckFormat (const video_format_t *src) |
static void | VoutFixFormat (video_format_t *dst, const video_format_t *src) |
static void | VoutRenderWakeUpUrgent (vout_thread_sys_t *sys) |
static bool | VideoFormatIsCropArEqual (video_format_t *dst, const video_format_t *src) |
static void | vout_UpdateWindowSizeLocked (vout_thread_sys_t *vout) |
void | vout_GetResetStatistic (vout_thread_t *vout, unsigned *restrict displayed, unsigned *restrict lost, unsigned *restrict late) |
bool | vout_IsEmpty (vout_thread_t *vout) |
This function will return true if no more pictures are to be displayed. | |
void | vout_DisplayTitle (vout_thread_t *vout, const char *title) |
This function will ask the display of the input title. | |
void | vout_FilterMouse (vout_thread_t *vout, vlc_mouse_t *mouse) |
void | vout_PutSubpicture (vout_thread_t *vout, subpicture_t *subpic) |
ssize_t | vout_RegisterSubpictureChannel (vout_thread_t *vout) |
ssize_t | vout_RegisterSubpictureChannelInternal (vout_thread_t *vout, vlc_clock_t *clock, enum vlc_vout_order *out_order) |
void | vout_UnregisterSubpictureChannel (vout_thread_t *vout, size_t channel) |
void | vout_FlushSubpictureChannel (vout_thread_t *vout, size_t channel) |
void | vout_SetSpuHighlight (vout_thread_t *vout, const vlc_spu_highlight_t *spu_hl) |
void | vout_PutPicture (vout_thread_t *vout, picture_t *picture) |
It gives to the vout a picture to be displayed. | |
int | vout_GetSnapshot (vout_thread_t *vout, block_t **image_dst, picture_t **picture_dst, video_format_t *fmt, const char *type, vlc_tick_t timeout) |
This function will handle a snapshot request. | |
void | vout_ChangeFullscreen (vout_thread_t *vout, const char *id) |
void | vout_ChangeWindowed (vout_thread_t *vout) |
void | vout_ChangeWindowState (vout_thread_t *vout, unsigned st) |
void | vout_ChangeDisplaySize (vout_thread_t *vout, unsigned width, unsigned height, void(*cb)(void *), void *opaque) |
void | vout_ChangeDisplayFitting (vout_thread_t *vout, enum vlc_video_fitting fit) |
void | vout_ChangeZoom (vout_thread_t *vout, unsigned num, unsigned den) |
static void | vout_SetAspectRatio (vout_thread_sys_t *sys, unsigned dar_num, unsigned dar_den) |
void | vout_ChangeDisplayAspectRatio (vout_thread_t *vout, unsigned dar_num, unsigned dar_den) |
void | vout_ChangeCrop (vout_thread_t *vout, const struct vout_crop *restrict crop) |
void | vout_ControlChangeFilters (vout_thread_t *vout, const char *filters) |
void | vout_ControlChangeInterlacing (vout_thread_t *vout, bool set) |
void | vout_ControlChangeSubSources (vout_thread_t *vout, const char *filters) |
void | vout_ControlChangeSubFilters (vout_thread_t *vout, const char *filters) |
void | vout_ChangeSpuChannelMargin (vout_thread_t *vout, enum vlc_vout_order order, int margin) |
void | vout_ChangeViewpoint (vout_thread_t *vout, const vlc_viewpoint_t *p_viewpoint) |
void | vout_ChangeIccProfile (vout_thread_t *vout, vlc_icc_profile_t *profile) |
static void | VoutGetDisplayCfg (vout_thread_sys_t *p_vout, const video_format_t *fmt, vout_display_cfg_t *cfg) |
static int | FilterRestartCallback (vlc_object_t *p_this, char const *psz_var, vlc_value_t oldval, vlc_value_t newval, void *p_data) |
static int | DelFilterCallbacks (filter_t *filter, void *opaque) |
static void | DelAllFilterCallbacks (vout_thread_sys_t *vout) |
static picture_t * | VoutVideoFilterInteractiveNewPicture (filter_t *filter) |
static picture_t * | VoutVideoFilterStaticNewPicture (filter_t *filter) |
static void | FilterFlush (vout_thread_sys_t *sys, bool is_locked) |
static void | ChangeFilters (vout_thread_sys_t *vout) |
static bool | IsPictureLateToProcess (vout_thread_sys_t *vout, const video_format_t *fmt, vlc_tick_t time_until_display, vlc_tick_t process_duration) |
static vlc_tick_t | GetRenderDelay (vout_thread_sys_t *sys) |
static bool | IsPictureLateToStaticFilter (vout_thread_sys_t *vout, vlc_tick_t time_until_display) |
static picture_t * | PreparePicture (vout_thread_sys_t *vout, bool reuse_decoded, bool frame_by_frame) |
static vlc_decoder_device * | VoutHoldDecoderDevice (vlc_object_t *o, void *opaque) |
static picture_t * | ConvertRGBAAndBlend (vout_thread_sys_t *vout, picture_t *pic, vlc_render_subpicture *subpic) |
static picture_t * | FilterPictureInteractive (vout_thread_sys_t *sys) |
static vlc_render_subpicture * | RenderSPUs (vout_thread_sys_t *sys, const vlc_fourcc_t *subpicture_chromas, const video_format_t *spu_frame, vlc_tick_t system_now, vlc_tick_t render_subtitle_date, bool ignore_osd, bool spu_in_full_window, const vout_display_place_t *video_position) |
static int | PrerenderPicture (vout_thread_sys_t *sys, picture_t *filtered, picture_t **out_pic, vlc_render_subpicture **out_subpic) |
static int | RenderPicture (vout_thread_sys_t *sys, bool render_now) |
static void | UpdateDeinterlaceFilter (vout_thread_sys_t *sys) |
static int | DisplayNextFrame (vout_thread_sys_t *sys) |
static bool | UpdateCurrentPicture (vout_thread_sys_t *sys) |
static vlc_tick_t | DisplayPicture (vout_thread_sys_t *vout) |
void | vout_ChangePause (vout_thread_t *vout, bool is_paused, vlc_tick_t date) |
This function will (un)pause the display of pictures. | |
static void | vout_FlushUnlocked (vout_thread_sys_t *vout, bool below, vlc_tick_t date) |
void | vout_Flush (vout_thread_t *vout, vlc_tick_t date) |
This function will ensure that all ready/displayed pictures have at most the provided date. | |
void | vout_NextPicture (vout_thread_t *vout) |
This function will force to display the next picture while paused. | |
void | vout_ChangeDelay (vout_thread_t *vout, vlc_tick_t delay) |
This function will change the delay of the vout It is thread safe. | |
void | vout_ChangeRate (vout_thread_t *vout, float rate) |
This function will change the rate of the vout It is thread safe. | |
void | vout_ChangeSpuDelay (vout_thread_t *vout, size_t channel_id, vlc_tick_t delay) |
This function will change the delay of the spu channel It is thread safe. | |
void | vout_ChangeSpuRate (vout_thread_t *vout, size_t channel_id, float rate) |
This function will change the rate of the spu channel It is thread safe. | |
static int | vout_Start (vout_thread_sys_t *vout, vlc_video_context *vctx, const vout_configuration_t *cfg) |
static void * | Thread (void *object) |
static void | vout_ReleaseDisplay (vout_thread_sys_t *vout) |
void | vout_StopDisplay (vout_thread_t *vout) |
Stop the display plugin, but keep its window plugin for later reuse. | |
static void | vout_DisableWindow (vout_thread_sys_t *sys) |
void | vout_Stop (vout_thread_t *vout) |
Disables a vout. | |
void | vout_Close (vout_thread_t *vout) |
Destroys a vout. | |
void | vout_Release (vout_thread_t *vout) |
static vout_thread_sys_t * | vout_CreateCommon (vlc_object_t *object) |
vout_thread_t * | vout_CreateDummy (vlc_object_t *object) |
vout_thread_t * | vout_Create (vlc_object_t *object) |
Creates a video output. | |
vout_thread_t * | vout_Hold (vout_thread_t *vout) |
int | vout_ChangeSource (vout_thread_t *vout, const video_format_t *original, const vlc_video_context *vctx) |
Set the new source format for a started vout. | |
static int | EnableWindowLocked (vout_thread_sys_t *vout, const video_format_t *original) |
static void | vout_InitSource (vout_thread_sys_t *vout) |
static void | clock_event_OnDiscontinuity (void *data) |
int | vout_Request (const vout_configuration_t *cfg, vlc_video_context *vctx, input_thread_t *input) |
Returns a suitable vout or release the given one. | |
vlc_decoder_device * | vout_GetDevice (vout_thread_t *vout) |
Setup the vout for the given configuration and get an associated decoder device. | |
Variables | |
static const struct filter_video_callbacks | vout_video_cbs |
#define FILTER_POOL_SIZE (3+1+1) |
#define VOUT_DISPLAY_LATE_THRESHOLD VLC_TICK_FROM_MS(20) |
Late pictures having a delay higher than this value are thrashed.
#define VOUT_MWAIT_TOLERANCE VLC_TICK_FROM_MS(4) |
#define VOUT_REDISPLAY_DELAY VLC_TICK_FROM_MS(80) |
#define VOUT_THREAD_TO_SYS | ( | vout | ) | container_of(vout, vout_thread_sys_t, obj.obj) |
typedef struct vout_thread_sys_t vout_thread_sys_t |
|
static |
References vout_filter_t::cfg, vout_thread_sys_t::chain_interactive, vout_thread_sys_t::chain_static, vout_thread_sys_t::changed, config_ChainCreate(), config_ChainDestroy(), vout_thread_sys_t::configuration, current, DelAllFilterCallbacks(), vout_thread_sys_t::display, es_format_Clean(), es_format_InitFromVideo(), es_format_IsSimilar(), es_format_LogDifferences(), vout_thread_sys_t::filter, filter_AddProxyCallbacks, filter_chain_AppendConverter(), filter_chain_AppendFilter(), filter_chain_GetFmtOut(), filter_chain_GetVideoCtxOut(), filter_chain_IsEmpty(), filter_chain_Reset(), FILTER_POOL_SIZE, FilterFlush(), FilterRestartCallback(), vout_interlacing_state_t::has_deint, video_format_t::i_chroma, es_format_t::i_codec, vout_thread_sys_t::interlacing, likely, msg_Dbg, msg_Err, name, vout_filter_t::name, vout_thread_sys_t::obj, picture_pool_NewFromFormat(), picture_pool_Release(), vout_thread_sys_t::private_pool, vout_thread_sys_t::src_fmt, vout_thread_sys_t::src_vctx, strdup(), var_InheritString(), es_format_t::video, vlc_array_append_or_abort(), vlc_array_clear(), vlc_array_count(), vlc_array_init(), vlc_array_item_at_index, VLC_EGENERIC, vlc_object_logger, VLC_SUCCESS, and vout_SetDisplayFormat().
Referenced by PreparePicture(), and UpdateDeinterlaceFilter().
|
static |
References vout_thread_sys_t::control, and vout_control_Wake().
Referenced by vout_Request().
|
static |
References filter_chain_AppendConverter(), filter_chain_Delete(), filter_chain_NewVideo, filter_chain_Reset(), filter_chain_VideoFilter(), filter_DeleteBlend(), filter_NewBlend(), filter_t::fmt_out, video_format_t::i_chroma, vout_thread_sys_t::obj, picture_BlendSubpicture(), picture_Hold(), picture_Release(), vout_thread_sys_t::spu_blend, es_format_t::video, filter_owner_t::video, VLC_CODEC_RGBA, VLC_OBJECT, VLC_SUCCESS, and vout_video_cbs.
Referenced by PrerenderPicture().
|
static |
References vout_thread_sys_t::chain_interactive, DelFilterCallbacks(), vout_thread_sys_t::filter, and filter_chain_ForEach().
Referenced by ChangeFilters(), vout_ReleaseDisplay(), and vout_Start().
|
static |
References filter_DelProxyCallbacks, FilterRestartCallback(), vout_thread_sys_t::obj, VLC_OBJECT, and VLC_SUCCESS.
Referenced by DelAllFilterCallbacks().
|
static |
References vout_thread_sys_t::current, vout_thread_sys_t::displayed, likely, picture_Release(), PreparePicture(), RenderPicture(), UpdateDeinterlaceFilter(), and VLC_EGENERIC.
Referenced by UpdateCurrentPicture().
|
static |
References picture_t::b_force, vout_thread_sys_t::clock, vout_thread_sys_t::current, vout_thread_sys_t::date, vout_thread_sys_t::displayed, GetRenderDelay(), likely, RenderPicture(), UpdateCurrentPicture(), UpdateDeinterlaceFilter(), VLC_TICK_INVALID, vlc_tick_now(), VOUT_REDISPLAY_DELAY, and vout_thread_sys_t::wait_interrupted.
Referenced by Thread().
|
static |
References vout_thread_sys_t::display_cfg, vout_thread_sys_t::dummy, msg_Err, vout_thread_sys_t::obj, vlc_mutex_assert, vlc_window_Enable(), vout_UpdateWindowSizeLocked(), VoutGetDisplayCfg(), vout_display_cfg::window, vout_thread_sys_t::window_enabled, and vout_thread_sys_t::window_lock.
Referenced by vout_Request().
|
static |
References vout_thread_sys_t::chain_interactive, vout_thread_sys_t::chain_static, vout_thread_sys_t::current, vout_thread_sys_t::date, vout_thread_sys_t::displayed, vout_thread_sys_t::filter, filter_chain_VideoFlush(), vout_thread_sys_t::lock, picture_Release(), vlc_mutex_lock(), vlc_mutex_unlock(), and VLC_TICK_INVALID.
Referenced by ChangeFilters(), vout_ChangePause(), and vout_FlushUnlocked().
|
static |
References vout_thread_sys_t::chain_interactive, vout_thread_sys_t::current, picture_t::date, vout_thread_sys_t::displayed, vout_thread_sys_t::filter, filter_chain_VideoFilter(), vout_thread_sys_t::lock, msg_Warn, vout_thread_sys_t::obj, picture_Hold(), vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by RenderPicture().
|
static |
References vout_ControlChangeFilters().
Referenced by ChangeFilters(), and DelFilterCallbacks().
|
inlinestatic |
References vout_thread_sys_t::chrono, vout_thread_sys_t::render, vout_chrono_GetHigh(), and VOUT_MWAIT_TOLERANCE.
Referenced by DisplayPicture(), and UpdateCurrentPicture().
|
inlinestatic |
References vout_thread_sys_t::obj, vout_thread_sys_t::str_id, VLC_OBJECT, and vlc_object_get_tracer().
Referenced by IsPictureLateToProcess(), RenderPicture(), vout_ChangePause(), and vout_Flush().
|
static |
|
static |
|
static |
References picture_t::b_force, picture_t::b_progressive, vout_thread_sys_t::chain_static, ChangeFilters(), vout_thread_sys_t::chrono, vout_thread_sys_t::clock, vout_thread_sys_t::clock_id, picture_t::date, vout_thread_sys_t::decoded, vout_thread_sys_t::decoder_fifo, vout_thread_sys_t::displayed, vout_thread_sys_t::filter, filter_chain_VideoFilter(), filter_chain_VideoFlush(), picture_t::format, vout_thread_sys_t::is_interlaced, vout_thread_sys_t::is_late_dropped, IsPictureLateToStaticFilter(), vout_thread_sys_t::lock, msg_Dbg, vout_thread_sys_t::obj, picture_fifo_Pop(), picture_GetVideoContext(), picture_Hold(), picture_Release(), vout_thread_sys_t::rate, vout_thread_sys_t::src_fmt, vout_thread_sys_t::src_vctx, vout_thread_sys_t::static_filter, vout_thread_sys_t::statistic, vout_thread_sys_t::timestamp, unlikely, video_format_Clean(), video_format_Copy(), VideoFormatIsCropArEqual(), vlc_clock_ConvertToSystem(), vlc_clock_Lock(), vlc_clock_Unlock(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_tick_now(), vlc_video_context_Hold(), vlc_video_context_Release(), vout_chrono_Start(), vout_chrono_Stop(), and vout_statistic_AddLost().
Referenced by DisplayNextFrame(), and UpdateCurrentPicture().
|
static |
References picture_t::b_force, vout_display_t::cfg, vout_thread_sys_t::clock, ConvertRGBAAndBlend(), picture_t::date, vout_thread_sys_t::date, vlc_rational_t::den, vout_display_cfg::display, vout_thread_sys_t::display, filter_DeleteBlend(), filter_NewBlend(), vout_display_t::fmt, filter_t::fmt_out, picture_t::format, vout_display_placement::full_fill, vout_display_placement::height, 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, vout_display_t::info, vout_thread_sys_t::is_on, msg_Err, vlc_rational_t::num, vout_thread_sys_t::obj, ORIENT_NORMAL, video_format_t::orientation, vout_thread_sys_t::pause, picture_BlendSubpicture(), picture_Copy(), picture_pool_Get(), picture_Release(), vout_display_t::place, vout_thread_sys_t::private_pool, vout_thread_sys_t::rate, RenderSPUs(), vout_display_placement::sar, vout_thread_sys_t::snapshot, vout_display_t::source, vout_thread_sys_t::spu_blend, vout_display_info_t::subpicture_chromas, unlikely, es_format_t::video, video_format_ApplyRotation(), video_format_CopyCropAr(), video_format_IsSameChroma(), vlc_clock_ConvertToSystem(), vlc_clock_Lock(), vlc_clock_Unlock(), VLC_EGENERIC, VLC_OBJECT, vlc_render_subpicture_Delete(), VLC_SUCCESS, VLC_TICK_0, vlc_tick_now(), vout_ConvertForDisplay(), vout_snapshot_IsRequested(), vout_snapshot_Set(), vout_UpdateDisplaySourceProperties(), and vout_display_placement::width.
Referenced by RenderPicture().
|
static |
References picture_t::b_force, vout_thread_sys_t::chrono, vout_thread_sys_t::clock, vout_thread_sys_t::clock_nowait, vout_thread_sys_t::current, picture_t::date, vout_thread_sys_t::date, vlc_display_operations::display, vout_thread_sys_t::display, vout_thread_sys_t::display_lock, vout_thread_sys_t::displayed, FilterPictureInteractive(), picture_t::format, GetTracer(), video_format_t::i_frame_rate, video_format_t::i_frame_rate_base, MS_FROM_VLC_TICK, msg_Dbg, vout_display_t::ops, picture_Release(), vlc_display_operations::prepare, PrerenderPicture(), vout_thread_sys_t::rate, vout_thread_sys_t::render, vout_thread_sys_t::statistic, vout_thread_sys_t::str_id, unlikely, vlc_clock_ConvertToSystem(), vlc_clock_IsPaused(), vlc_clock_Lock(), vlc_clock_Unlock(), vlc_clock_UpdateVideo(), vlc_clock_Wait(), VLC_EGENERIC, vlc_queuedmutex_lock(), vlc_queuedmutex_unlock(), vlc_render_subpicture_Delete(), VLC_SUCCESS, VLC_TICK_MAX, vlc_tick_now(), VLC_TRACE, VLC_TRACE_END, VLC_TRACE_TICK_NS, vlc_tracer_TraceEvent(), vlc_tracer_TraceWithTs, vout_chrono_Start(), vout_chrono_Stop(), vout_display_Display(), VOUT_REDISPLAY_DELAY, vout_statistic_AddDisplayed(), vout_statistic_AddLate(), and vout_thread_sys_t::wait_interrupted.
Referenced by DisplayNextFrame(), and DisplayPicture().
|
static |
References vout_thread_sys_t::display, vout_display_t::source, vout_thread_sys_t::spu, spu_Render(), and unlikely.
Referenced by PrerenderPicture().
|
static |
References vout_thread_sys_t::control, vout_thread_sys_t::control_is_terminated, vout_thread_sys_t::displayed, DisplayPicture(), vout_thread_sys_t::interlacing, vout_thread_sys_t::is_interlaced, vout_thread_sys_t::obj, vlc_thread_set_name(), VLC_TICK_INVALID, vlc_tick_now(), vout_control_Wait(), VOUT_REDISPLAY_DELAY, and vout_SetInterlacingState().
Referenced by vout_Request().
|
static |
References vout_thread_sys_t::clock, vout_thread_sys_t::current, picture_t::date, vout_thread_sys_t::decoder_fifo, vout_thread_sys_t::displayed, DisplayNextFrame(), vout_thread_sys_t::first_picture, vout_thread_sys_t::frame_next_count, GetRenderDelay(), vout_thread_sys_t::is_on, vout_thread_sys_t::pause, picture_fifo_IsEmpty(), picture_Release(), PreparePicture(), vout_thread_sys_t::rate, unlikely, vlc_clock_ConvertToSystem(), vlc_clock_Lock(), vlc_clock_Unlock(), VLC_SUCCESS, vlc_tick_now(), and vout_thread_sys_t::wait_interrupted.
Referenced by DisplayPicture().
|
static |
References vout_thread_sys_t::changed, ChangeFilters(), vout_thread_sys_t::filter, vout_interlacing_state_t::has_deint, vout_thread_sys_t::interlacing, vout_thread_sys_t::lock, vout_thread_sys_t::new_interlaced, vlc_mutex_lock(), and vlc_mutex_unlock().
Referenced by DisplayNextFrame(), and DisplayPicture().
|
static |
void vout_ChangeCrop | ( | vout_thread_t * | vout, |
const struct vout_crop *restrict | crop | ||
) |
References vout_thread_sys_t::crop, vout_thread_sys_t::display, vout_thread_sys_t::display_lock, vout_thread_sys_t::dummy, vout_thread_sys_t::source, vlc_mutex_lock(), vlc_mutex_unlock(), vlc_queuedmutex_lock(), vlc_queuedmutex_unlock(), vout_SetDisplayCrop(), VOUT_THREAD_TO_SYS, vout_UpdateWindowSizeLocked(), and vout_thread_sys_t::window_lock.
Referenced by CropCallback().
void vout_ChangeDelay | ( | vout_thread_t * | vout, |
vlc_tick_t | delay | ||
) |
This function will change the delay of the vout It is thread safe.
References vout_thread_sys_t::clock, vout_thread_sys_t::control, vout_thread_sys_t::delay, vout_thread_sys_t::display, vout_thread_sys_t::dummy, vlc_clock_Lock(), vlc_clock_SetDelay(), vlc_clock_Unlock(), vout_control_Hold(), vout_control_Release(), and VOUT_THREAD_TO_SYS.
Referenced by Decoder_ChangeOutputDelay().
void vout_ChangeDisplayAspectRatio | ( | vout_thread_t * | vout, |
unsigned | dar_num, | ||
unsigned | dar_den | ||
) |
References vout_thread_sys_t::display, vout_thread_sys_t::display_lock, vout_thread_sys_t::dummy, vlc_mutex_lock(), vlc_mutex_unlock(), vlc_queuedmutex_lock(), vlc_queuedmutex_unlock(), vout_SetAspectRatio(), vout_SetDisplayAspect(), VOUT_THREAD_TO_SYS, vout_UpdateWindowSizeLocked(), and vout_thread_sys_t::window_lock.
Referenced by AspectCallback().
void vout_ChangeDisplayFitting | ( | vout_thread_t * | vout, |
enum vlc_video_fitting | fit | ||
) |
References vout_display_cfg::display, vout_thread_sys_t::display, vout_thread_sys_t::display_cfg, vout_thread_sys_t::display_lock, vout_thread_sys_t::dummy, fit, vout_display_placement::fitting, vlc_mutex_lock(), vlc_mutex_unlock(), vlc_queuedmutex_lock(), vlc_queuedmutex_unlock(), vout_SetDisplayFitting(), VOUT_THREAD_TO_SYS, and vout_thread_sys_t::window_lock.
Referenced by AutoScaleCallback(), and FitCallback().
void vout_ChangeDisplaySize | ( | vout_thread_t * | vout, |
unsigned | width, | ||
unsigned | height, | ||
void(*)(void *) | cb, | ||
void * | opaque | ||
) |
References vout_thread_sys_t::display, vout_thread_sys_t::display_lock, vout_thread_sys_t::dummy, vlc_queuedmutex_lock(), vlc_queuedmutex_unlock(), vout_display_SetSize(), VOUT_THREAD_TO_SYS, VoutRenderWakeUpUrgent(), vout_thread_sys_t::window_height, and vout_thread_sys_t::window_width.
Referenced by vout_display_window_ResizeNotify().
void vout_ChangeFullscreen | ( | vout_thread_t * | vout, |
const char * | id | ||
) |
void vout_ChangeIccProfile | ( | vout_thread_t * | vout, |
vlc_icc_profile_t * | profile | ||
) |
References vout_thread_sys_t::display, vout_thread_sys_t::display_cfg, vout_thread_sys_t::display_lock, vout_thread_sys_t::dummy, vout_display_cfg::icc_profile, vlc_queuedmutex_lock(), vlc_queuedmutex_unlock(), vout_SetDisplayIccProfile(), and VOUT_THREAD_TO_SYS.
Referenced by vout_display_window_IccEvent().
void vout_ChangePause | ( | vout_thread_t * | vout, |
bool | b_paused, | ||
vlc_tick_t | i_date | ||
) |
This function will (un)pause the display of pictures.
It is thread safe
References vout_thread_sys_t::control, vout_thread_sys_t::date, vout_thread_sys_t::display_cfg, vout_thread_sys_t::dummy, FilterFlush(), GetTracer(), vout_thread_sys_t::is_on, vout_thread_sys_t::pause, vout_thread_sys_t::str_id, vlc_mutex_lock(), vlc_mutex_unlock(), vlc_tracer_TraceEvent(), vlc_window_SetInhibition(), vout_control_Hold(), vout_control_Release(), VOUT_THREAD_TO_SYS, vout_display_cfg::window, and vout_thread_sys_t::window_lock.
Referenced by Decoder_ChangeOutputPause().
void vout_ChangeRate | ( | vout_thread_t * | vout, |
float | rate | ||
) |
This function will change the rate of the vout It is thread safe.
References vout_thread_sys_t::control, vout_thread_sys_t::dummy, vout_thread_sys_t::rate, vout_control_Hold(), vout_control_Release(), and VOUT_THREAD_TO_SYS.
Referenced by Decoder_ChangeOutputRate().
int vout_ChangeSource | ( | vout_thread_t * | p_vout, |
const video_format_t * | fmt, | ||
const vlc_video_context * | vctx | ||
) |
Set the new source format for a started vout.
0 | on success |
-1 | on error, the vout needs to be restarted to handle the format |
References vout_thread_sys_t::display, vout_thread_sys_t::filter, msg_Dbg, vout_thread_t::obj, vout_thread_sys_t::original, vout_thread_sys_t::src_vctx, video_format_IsSimilar(), video_format_LogDifferences(), vlc_object_logger, and VOUT_THREAD_TO_SYS.
Referenced by vout_Request().
void vout_ChangeSpuChannelMargin | ( | vout_thread_t * | vout, |
enum vlc_vout_order | order, | ||
int | margin | ||
) |
References vout_thread_sys_t::dummy, likely, vout_thread_sys_t::spu, spu_ChangeChannelOrderMargin(), and VOUT_THREAD_TO_SYS.
Referenced by SecondarySubMarginCallback(), and SubMarginCallback().
void vout_ChangeSpuDelay | ( | vout_thread_t * | vout, |
size_t | channel_id, | ||
vlc_tick_t | delay | ||
) |
This function will change the delay of the spu channel It is thread safe.
References vout_thread_sys_t::dummy, vout_thread_sys_t::spu, spu_SetClockDelay(), and VOUT_THREAD_TO_SYS.
Referenced by Decoder_ChangeOutputDelay().
void vout_ChangeSpuRate | ( | vout_thread_t * | vout, |
size_t | channel_id, | ||
float | rate | ||
) |
This function will change the rate of the spu channel It is thread safe.
References vout_thread_sys_t::dummy, vout_thread_sys_t::spu, spu_SetClockRate(), and VOUT_THREAD_TO_SYS.
Referenced by Decoder_ChangeOutputRate().
void vout_ChangeViewpoint | ( | vout_thread_t * | vout, |
const vlc_viewpoint_t * | p_viewpoint | ||
) |
References vout_thread_sys_t::display, vout_thread_sys_t::display_cfg, vout_thread_sys_t::display_lock, vout_thread_sys_t::dummy, vout_display_cfg::viewpoint, vlc_mutex_lock(), vlc_mutex_unlock(), vlc_queuedmutex_lock(), vlc_queuedmutex_unlock(), vout_SetDisplayViewpoint(), VOUT_THREAD_TO_SYS, VoutRenderWakeUpUrgent(), and vout_thread_sys_t::window_lock.
Referenced by ViewpointCallback().
void vout_ChangeWindowed | ( | vout_thread_t * | vout | ) |
void vout_ChangeWindowState | ( | vout_thread_t * | vout, |
unsigned | st | ||
) |
void vout_ChangeZoom | ( | vout_thread_t * | vout, |
unsigned | num, | ||
unsigned | den | ||
) |
References vlc_rational_t::den, vout_display_cfg::display, vout_thread_sys_t::display, vout_thread_sys_t::display_cfg, vout_thread_sys_t::display_lock, vout_thread_sys_t::dummy, vlc_rational_t::num, vlc_mutex_lock(), vlc_mutex_unlock(), vlc_queuedmutex_lock(), vlc_queuedmutex_unlock(), vlc_ureduce(), vout_SetDisplayZoom(), VOUT_THREAD_TO_SYS, vout_UpdateWindowSizeLocked(), vout_thread_sys_t::window_lock, and vout_display_placement::zoom.
Referenced by ZoomCallback().
void vout_ControlChangeFilters | ( | vout_thread_t * | vout, |
const char * | filters | ||
) |
void vout_ControlChangeInterlacing | ( | vout_thread_t * | vout, |
bool | set | ||
) |
void vout_ControlChangeSubFilters | ( | vout_thread_t * | vout, |
const char * | filters | ||
) |
References vout_thread_sys_t::dummy, likely, vout_thread_sys_t::spu, spu_ChangeFilters(), and VOUT_THREAD_TO_SYS.
Referenced by RestartSubFilterCallback(), and SubFilterCallback().
void vout_ControlChangeSubSources | ( | vout_thread_t * | vout, |
const char * | filters | ||
) |
References vout_thread_sys_t::dummy, likely, vout_thread_sys_t::spu, spu_ChangeSources(), and VOUT_THREAD_TO_SYS.
Referenced by RestartSubSourceCallback(), and SubSourceCallback().
vout_thread_t * vout_Create | ( | vlc_object_t * | object | ) |
Creates a video output.
References vout_thread_sys_t::clock_lock, vout_thread_sys_t::clock_nowait, config_GetType(), vout_thread_sys_t::control, vout_thread_sys_t::control_is_terminated, vout_thread_sys_t::crop, vout_thread_sys_t::dar, vout_thread_sys_t::display, vout_thread_sys_t::display_cfg, vout_thread_sys_t::display_lock, vout_thread_sys_t::dummy, vout_thread_sys_t::filter, vout_thread_sys_t::first_picture, vout_thread_sys_t::frame_next_count, vout_display_cfg::icc_profile, vout_thread_sys_t::interlacing, vout_thread_sys_t::is_late_dropped, vout_thread_sys_t::lock, vout_crop::mode, vout_thread_sys_t::obj, vout_thread_sys_t::original, vout_thread_sys_t::position, vout_thread_sys_t::private_pool, vout_thread_sys_t::show, vout_thread_sys_t::snapshot, vout_thread_sys_t::source, vout_thread_sys_t::splitter_name, vout_thread_sys_t::spu, spu_Create, spu_Destroy(), vout_thread_sys_t::statistic, vout_thread_sys_t::timeout, vout_thread_sys_t::title, unlikely, var_Create(), var_Destroy(), var_InheritBool(), var_InheritInteger(), var_InheritString(), var_SetString(), video_format_Init(), VLC_DAR_FROM_SOURCE, vlc_mutex_init(), vlc_object_delete, vlc_queuedmutex_init(), VLC_VAR_STRING, vlc_window_SetState(), VLC_WINDOW_STATE_ABOVE, VLC_WINDOW_STATE_BELOW, vout_control_Init(), vout_CreateCommon(), VOUT_CROP_NONE, vout_display_window_New(), vout_InitInterlacingSupport(), vout_IntfInit(), vout_snapshot_New(), vout_statistic_Init(), vout_thread_sys_t::wait_interrupted, vout_display_cfg::window, vout_thread_sys_t::window_enabled, vout_thread_sys_t::window_height, vout_thread_sys_t::window_lock, and vout_thread_sys_t::window_width.
Referenced by aout_filter_GetVout(), and RequestVoutRsc().
|
static |
References vout_thread_sys_t::mouse, vout_thread_sys_t::obj, vout_thread_sys_t::rc, vlc_atomic_rc_init(), vlc_custom_create, vlc_mouse_Init(), and vout_CreateVars().
Referenced by vout_Create(), and vout_CreateDummy().
vout_thread_t * vout_CreateDummy | ( | vlc_object_t * | object | ) |
References vout_thread_sys_t::dummy, vout_thread_sys_t::obj, and vout_CreateCommon().
Referenced by input_resource_New().
|
static |
References vout_thread_sys_t::display_cfg, vlc_mutex_lock(), vlc_mutex_unlock(), vlc_window_Disable(), vout_display_cfg::window, vout_thread_sys_t::window_enabled, and vout_thread_sys_t::window_lock.
Referenced by vout_Request(), and vout_Stop().
void vout_DisplayTitle | ( | vout_thread_t * | vout, |
const char * | title | ||
) |
This function will ask the display of the input title.
References vout_thread_sys_t::dummy, vout_thread_sys_t::position, vout_thread_sys_t::show, vout_thread_sys_t::timeout, vout_thread_sys_t::title, VLC_TICK_FROM_MS, vout_OSDText(), VOUT_SPU_CHANNEL_OSD, and VOUT_THREAD_TO_SYS.
Referenced by VoutSetAndDeduplicateTitle().
void vout_FilterMouse | ( | vout_thread_t * | vout, |
vlc_mouse_t * | mouse | ||
) |
|
static |
References vout_thread_sys_t::clock, picture_t::date, vout_thread_sys_t::date, vout_thread_sys_t::decoded, vout_thread_sys_t::decoder_fifo, vout_thread_sys_t::delay, vout_thread_sys_t::display, vout_thread_sys_t::display_lock, vout_thread_sys_t::displayed, FilterFlush(), vout_thread_sys_t::first_picture, picture_fifo_Flush(), picture_Release(), vout_thread_sys_t::timestamp, vlc_clock_Lock(), vlc_clock_Reset(), vlc_clock_SetDelay(), vlc_clock_Unlock(), vlc_queuedmutex_lock(), vlc_queuedmutex_unlock(), VLC_TICK_INVALID, vout_FilterFlush(), and VoutResetChronoLocked().
Referenced by vout_Flush(), and vout_ReleaseDisplay().
vlc_decoder_device * vout_GetDevice | ( | vout_thread_t * | vout | ) |
Setup the vout for the given configuration and get an associated decoder device.
vout | the video configuration requested. |
References vout_thread_sys_t::dec_device, vout_thread_sys_t::display_cfg, vout_thread_t::obj, vlc_decoder_device_Create(), vlc_decoder_device_Hold(), vlc_mutex_lock(), vlc_mutex_unlock(), VOUT_THREAD_TO_SYS, vout_display_cfg::window, and vout_thread_sys_t::window_lock.
Referenced by ModuleThread_GetDecoderDevice().
void vout_GetResetStatistic | ( | vout_thread_t * | vout, |
unsigned *restrict | displayed, | ||
unsigned *restrict | lost, | ||
unsigned *restrict | late | ||
) |
References vout_thread_sys_t::dummy, vout_thread_sys_t::statistic, vout_statistic_GetReset(), and VOUT_THREAD_TO_SYS.
Referenced by ModuleThread_QueueVideo().
|
static |
References vout_thread_sys_t::crop, GetAspectRatio(), vout_crop::mode, vout_thread_sys_t::obj, vout_thread_sys_t::source, var_InheritString(), VOUT_CROP_NONE, vout_ParseCrop(), and vout_SetAspectRatio().
Referenced by vout_Request().
bool vout_IsEmpty | ( | vout_thread_t * | vout | ) |
This function will return true if no more pictures are to be displayed.
References vout_thread_sys_t::decoder_fifo, vout_thread_sys_t::dummy, picture_fifo_IsEmpty(), and VOUT_THREAD_TO_SYS.
Referenced by vlc_input_decoder_IsEmpty().
void vout_NextPicture | ( | vout_thread_t * | vout | ) |
This function will force to display the next picture while paused.
References vout_thread_sys_t::control, vout_thread_sys_t::dummy, vout_thread_sys_t::frame_next_count, vout_control_Hold(), vout_control_ReleaseAndWake(), and VOUT_THREAD_TO_SYS.
Referenced by vlc_input_decoder_FrameNext().
ssize_t vout_RegisterSubpictureChannelInternal | ( | vout_thread_t * | vout, |
vlc_clock_t * | clock, | ||
enum vlc_vout_order * | out_order | ||
) |
References vout_thread_sys_t::dummy, vout_thread_sys_t::spu, spu_RegisterChannelInternal(), VOUT_SPU_CHANNEL_INVALID, and VOUT_THREAD_TO_SYS.
Referenced by ModuleThread_NewSpuBuffer().
|
static |
References vout_thread_sys_t::chain_interactive, vout_thread_sys_t::chain_static, vout_thread_sys_t::clock, vout_thread_sys_t::clock_id, vout_thread_sys_t::clock_listener_id, vout_thread_sys_t::clock_lock, vout_thread_sys_t::configuration, vout_thread_sys_t::decoder_fifo, DelAllFilterCallbacks(), vout_thread_sys_t::display, vout_thread_sys_t::display_cfg, vout_thread_sys_t::display_lock, vout_thread_sys_t::filter, filter_chain_Delete(), filter_DeleteBlend(), vout_thread_sys_t::first_picture, vout_thread_sys_t::lock, vout_thread_sys_t::obj, picture_fifo_Delete(), picture_pool_Release(), vout_thread_sys_t::private_pool, vout_thread_sys_t::spu, vout_thread_sys_t::spu_blend, spu_Detach(), vout_thread_sys_t::src_fmt, vout_thread_sys_t::src_vctx, vout_thread_sys_t::str_id, video_format_Clean(), vlc_clock_Lock(), vlc_clock_RemoveListener(), vlc_clock_Unlock(), vlc_mutex_lock(), vlc_mutex_unlock(), vlc_queuedmutex_lock(), vlc_queuedmutex_unlock(), VLC_TICK_MAX, vlc_video_context_Release(), vout_CloseWrapper(), vout_display_window_SetMouseHandler(), vout_FlushUnlocked(), vout_display_cfg::window, and vout_thread_sys_t::window_lock.
Referenced by vout_Request(), and vout_StopDisplay().
int vout_Request | ( | const vout_configuration_t * | cfg, |
vlc_video_context * | vctx, | ||
input_thread_t * | input | ||
) |
Returns a suitable vout or release the given one.
If cfg->fmt is non NULL and valid, a vout will be returned, reusing cfg->vout is possible, otherwise it returns NULL. If cfg->vout is not used, it will be closed and released.
You can release the returned value either by vout_Request() or vout_Close().
cfg | the video configuration requested. |
input | used to get attachments for spu filters |
vctx | pointer to the video context to use with the vout or NULL |
0 | on success |
-1 | on error |
References vout_thread_sys_t::clock, vout_configuration_t::clock, clock_event_OnDiscontinuity(), vout_thread_sys_t::clock_id, vout_thread_sys_t::clock_listener_id, vout_thread_sys_t::clock_lock, vout_thread_sys_t::control_is_terminated, vout_thread_sys_t::delay, vout_thread_sys_t::display, EnableWindowLocked(), vout_configuration_t::fmt, vout_thread_sys_t::interlacing, msg_Err, vlc_clock_event_cbs::on_discontinuity, vout_thread_sys_t::original, vout_thread_sys_t::rate, vout_thread_sys_t::spu, spu_Attach(), vout_thread_sys_t::str_id, vout_configuration_t::str_id, vout_thread_sys_t::thread, Thread(), video_format_Clean(), vlc_clock_AddListener(), vlc_clock_Lock(), vlc_clock_RemoveListener(), vlc_clock_Unlock(), vlc_clone(), vlc_mutex_lock(), vlc_mutex_unlock(), vout_configuration_t::vout, vout_ChangeSource(), vout_DisableWindow(), vout_InitSource(), vout_IntfReinit(), vout_ReinitInterlacingSupport(), vout_ReleaseDisplay(), vout_Start(), vout_StopDisplay(), VOUT_THREAD_TO_SYS, VoutCheckFormat(), VoutFixFormat(), and vout_thread_sys_t::window_lock.
Referenced by aout_filter_GetVout(), and input_resource_RequestVout().
|
static |
References vout_thread_sys_t::dar, vlc_rational_t::den, vlc_rational_t::num, and vout_thread_sys_t::source.
Referenced by vout_ChangeDisplayAspectRatio(), and vout_InitSource().
void vout_SetSpuHighlight | ( | vout_thread_t * | vout, |
const vlc_spu_highlight_t * | spu_hl | ||
) |
References vout_thread_sys_t::dummy, vout_thread_sys_t::spu, spu_SetHighlight(), and VOUT_THREAD_TO_SYS.
Referenced by vlc_input_decoder_SetSpuHighlight().
|
static |
References vout_thread_sys_t::chain_interactive, vout_thread_sys_t::chain_static, vout_thread_sys_t::configuration, vout_thread_sys_t::crop, vout_thread_sys_t::current, vout_thread_sys_t::dar, vout_thread_sys_t::date, vout_thread_sys_t::dec_device, vout_thread_sys_t::decoded, vout_thread_sys_t::decoder_fifo, DelAllFilterCallbacks(), vlc_rational_t::den, vout_display_cfg::display, vout_thread_sys_t::display, vout_thread_sys_t::display_cfg, vout_thread_sys_t::display_lock, vout_thread_sys_t::displayed, vout_thread_sys_t::dummy, vout_thread_sys_t::filter, filter_chain_Delete(), filter_chain_NewVideo, FILTER_POOL_SIZE, vout_display_placement::height, vout_thread_sys_t::is_interlaced, vout_thread_sys_t::is_on, vout_thread_sys_t::lock, vout_configuration_t::mouse_event, vout_configuration_t::mouse_opaque, vlc_rational_t::num, vout_thread_sys_t::obj, vout_thread_sys_t::original, vout_thread_sys_t::pause, picture_fifo_Delete(), picture_fifo_New(), picture_pool_NewFromFormat(), picture_pool_Release(), vout_thread_sys_t::private_pool, vout_thread_sys_t::source, vout_thread_sys_t::splitter_name, vout_thread_sys_t::spu_blend, vout_thread_sys_t::src_fmt, vout_thread_sys_t::src_vctx, vout_thread_sys_t::timestamp, filter_owner_t::video, video_format_Clean(), video_format_Copy(), video_format_Print(), vlc_decoder_device_Release(), VLC_EGENERIC, vlc_mutex_lock(), vlc_mutex_unlock(), VLC_OBJECT, vlc_queuedmutex_lock(), vlc_queuedmutex_unlock(), VLC_SUCCESS, VLC_TICK_INVALID, vlc_video_context_Hold(), vlc_video_context_HoldDevice(), vlc_video_context_Release(), vout_display_window_SetMouseHandler(), vout_OpenWrapper(), vout_SetDisplayAspect(), vout_SetDisplayCrop(), VoutHoldDecoderDevice(), VoutResetChronoLocked(), VoutVideoFilterInteractiveNewPicture(), VoutVideoFilterStaticNewPicture(), vout_display_placement::width, vout_display_cfg::window, vout_thread_sys_t::window_height, vout_thread_sys_t::window_lock, and vout_thread_sys_t::window_width.
Referenced by vout_Request().
void vout_Stop | ( | vout_thread_t * | vout | ) |
Disables a vout.
This disables a vout, but keeps it for later reuse.
References vout_thread_sys_t::display, vout_thread_sys_t::dummy, vout_DisableWindow(), vout_StopDisplay(), and VOUT_THREAD_TO_SYS.
Referenced by input_resource_PutVoutLocked(), input_resource_StopFreeVout(), and vout_Close().
void vout_StopDisplay | ( | vout_thread_t * | vout | ) |
Stop the display plugin, but keep its window plugin for later reuse.
References vout_thread_sys_t::control, vout_thread_sys_t::control_is_terminated, vout_thread_sys_t::thread, vlc_join(), vout_control_Wake(), vout_ReleaseDisplay(), and VOUT_THREAD_TO_SYS.
Referenced by input_resource_PutVoutLocked(), vout_Request(), and vout_Stop().
|
static |
References vout_thread_sys_t::crop, vout_thread_sys_t::dar, vout_display_cfg::display, vout_thread_sys_t::display_cfg, video_format_t::i_chroma, vout_thread_sys_t::original, vout_thread_sys_t::source, unlikely, vlc_mutex_assert, vout_display_ResizeWindow(), vout_display_cfg::window, and vout_thread_sys_t::window_lock.
Referenced by EnableWindowLocked(), vout_ChangeCrop(), vout_ChangeDisplayAspectRatio(), vout_ChangeWindowed(), and vout_ChangeZoom().
|
static |
References video_format_t::i_height, video_format_t::i_sar_den, video_format_t::i_sar_num, and video_format_t::i_width.
Referenced by vout_Request().
|
static |
References video_format_t::i_chroma, video_format_t::pose, VIDEO_ES, video_format_Copy(), vlc_fourcc_GetCodec(), vlc_viewpoint_clip(), and VoutFixFormatAR().
Referenced by vout_Request().
|
static |
References vout_display_placement::align, vlc_rational_t::den, vout_display_cfg::display, vout_display_placement::fitting, vout_display_placement::full_fill, vout_display_placement::height, vlc_video_align::horizontal, vlc_rational_t::num, vout_thread_sys_t::obj, video_format_t::pose, vout_display_placement::sar, var_GetBool(), var_GetFloat(), var_GetInteger(), var_InheritFit(), var_InheritURational(), vlc_video_align::vertical, vout_display_cfg::viewpoint, VLC_OBJECT, vlc_ureduce(), VLC_VIDEO_ALIGN_BOTTOM, VLC_VIDEO_ALIGN_CENTER, VLC_VIDEO_ALIGN_LEFT, VLC_VIDEO_ALIGN_RIGHT, VLC_VIDEO_ALIGN_TOP, VLC_VIDEO_FIT_NONE, VOUT_ALIGN_BOTTOM, VOUT_ALIGN_LEFT, VOUT_ALIGN_RIGHT, VOUT_ALIGN_TOP, vout_display_placement::width, and vout_display_placement::zoom.
Referenced by EnableWindowLocked().
|
static |
References vout_thread_sys_t::dec_device, vlc_decoder_device_Hold(), and VLC_UNUSED.
Referenced by vout_Start().
|
static |
|
inlinestatic |
References vout_thread_sys_t::chain_interactive, vout_thread_sys_t::filter, filter_chain_IsEmpty(), filter_t::fmt_out, vout_thread_sys_t::lock, filter_t::owner, picture_NewFromFormat(), filter_owner_t::sys, es_format_t::video, vlc_mutex_assert, and VoutVideoFilterInteractiveNewPicture().
Referenced by vout_Start().
|
static |
Referenced by ConvertRGBAAndBlend().