VLC  4.0.0-dev
Data Structures | Macros | Typedefs | Enumerations | Functions
vout_internal.h File Reference
Include dependency graph for vout_internal.h:

Go to the source code of this file.

Data Structures

struct  vout_configuration_t
 Vout configuration. More...
struct  vout_crop


#define VOUT_MAX_PICTURES   (20)


typedef struct input_thread_t input_thread_t
typedef struct vlc_clock_t vlc_clock_t




vout_thread_tvout_Create (vlc_object_t *obj)
 Creates a video output. More...
vout_thread_tvout_CreateDummy (vlc_object_t *obj)
vlc_decoder_devicevout_GetDevice (vout_thread_t *vout)
 Setup the vout for the given configuration and get an associated decoder device. More...
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. More...
void vout_Stop (vout_thread_t *)
 Disables a vout. More...
void vout_StopDisplay (vout_thread_t *)
 Stop the display plugin, but keep its window plugin for later reuse. More...
int vout_ChangeSource (vout_thread_t *p_vout, const video_format_t *fmt)
 Set the new source format for a started vout. More...
static bool vout_CropEqual (const struct vout_crop *a, const struct vout_crop *b)
bool vout_ParseCrop (struct vout_crop *, const char *crop_str)
bool GetAspectRatio (const char *ar_str, unsigned *num, unsigned *den)
void vout_ChangeFullscreen (vout_thread_t *, const char *id)
void vout_ChangeWindowed (vout_thread_t *)
void vout_ChangeWindowState (vout_thread_t *, unsigned state)
void vout_ChangeDisplaySize (vout_thread_t *, unsigned width, unsigned height, void(*ack_cb)(void *), void *opaque)
void vout_ChangeDisplayFilled (vout_thread_t *, bool is_filled)
void vout_ChangeZoom (vout_thread_t *, unsigned num, unsigned den)
void vout_ChangeDisplayAspectRatio (vout_thread_t *, unsigned num, unsigned den)
void vout_ChangeCrop (vout_thread_t *, const struct vout_crop *)
void vout_ControlChangeFilters (vout_thread_t *, const char *)
void vout_ControlChangeInterlacing (vout_thread_t *, bool)
void vout_ControlChangeSubSources (vout_thread_t *, const char *)
void vout_ControlChangeSubFilters (vout_thread_t *, const char *)
void vout_ChangeSpuChannelMargin (vout_thread_t *, enum vlc_vout_order order, int)
void vout_ChangeViewpoint (vout_thread_t *, const vlc_viewpoint_t *)
void vout_CreateVars (vout_thread_t *)
void vout_IntfInit (vout_thread_t *)
void vout_IntfReinit (vout_thread_t *)
void vout_IntfDeinit (vlc_object_t *)
ssize_t vout_RegisterSubpictureChannelInternal (vout_thread_t *, vlc_clock_t *clock, enum vlc_vout_order *out_order)
ssize_t spu_RegisterChannelInternal (spu_t *, vlc_clock_t *, enum vlc_vout_order *)
void spu_Attach (spu_t *, input_thread_t *input)
 Attach the SPU to an input. More...
void spu_Detach (spu_t *)
 Detach the SPU from its attached input. More...
void spu_SetClockDelay (spu_t *spu, size_t channel_id, vlc_tick_t delay)
void spu_SetClockRate (spu_t *spu, size_t channel_id, float rate)
void spu_ChangeChannelOrderMargin (spu_t *, enum vlc_vout_order, int)
void spu_SetHighlight (spu_t *, const vlc_spu_highlight_t *)
void vout_ChangePause (vout_thread_t *, bool b_paused, vlc_tick_t i_date)
 This function will (un)pause the display of pictures. More...
void vout_ChangeRate (vout_thread_t *, float rate)
 This function will change the rate of the vout It is thread safe. More...
void vout_ChangeDelay (vout_thread_t *, vlc_tick_t delay)
 This function will change the delay of the vout It is thread safe. More...
void vout_ChangeSpuRate (vout_thread_t *, size_t channel_id, float rate)
 This function will change the rate of the spu channel It is thread safe. More...
void vout_ChangeSpuDelay (vout_thread_t *, size_t channel_id, vlc_tick_t delay)
 This function will change the delay of the spu channel It is thread safe. More...
void vout_MouseState (vout_thread_t *, const vlc_mouse_t *)
 Updates the pointing device state. More...
void vout_GetResetStatistic (vout_thread_t *p_vout, unsigned *pi_displayed, unsigned *pi_lost, unsigned *pi_late)
 This function will return and reset internal statistics. More...
void vout_NextPicture (vout_thread_t *p_vout, vlc_tick_t *pi_duration)
 This function will force to display the next picture while paused. More...
void vout_DisplayTitle (vout_thread_t *p_vout, const char *psz_title)
 This function will ask the display of the input title. More...
bool vout_IsEmpty (vout_thread_t *p_vout)
 This function will return true if no more pictures are to be displayed. More...
void vout_SetSpuHighlight (vout_thread_t *p_vout, const vlc_spu_highlight_t *)

Macro Definition Documentation


#define VOUT_MAX_PICTURES   (20)

Typedef Documentation

◆ input_thread_t

◆ vlc_clock_t

typedef struct vlc_clock_t vlc_clock_t

Enumeration Type Documentation

◆ vout_crop_mode


Function Documentation

◆ GetAspectRatio()

bool GetAspectRatio ( const char *  ar_str,
unsigned *  num,
unsigned *  den 

Referenced by AspectCallback(), and vout_InitSource().

◆ spu_Attach()

void spu_Attach ( spu_t ,
input_thread_t input 

◆ spu_ChangeChannelOrderMargin()

void spu_ChangeChannelOrderMargin ( spu_t ,
enum  vlc_vout_order,

◆ spu_Detach()

void spu_Detach ( spu_t )

Detach the SPU from its attached input.

References spu_private_t::input, spu_private_t::lock, spu_t::p, spu_PrerenderPause(), vlc_mutex_lock(), and vlc_mutex_unlock().

Referenced by vout_ReleaseDisplay().

◆ spu_RegisterChannelInternal()

ssize_t spu_RegisterChannelInternal ( spu_t ,
vlc_clock_t ,
enum vlc_vout_order  

◆ spu_SetClockDelay()

void spu_SetClockDelay ( spu_t spu,
size_t  channel_id,
vlc_tick_t  delay 

◆ spu_SetClockRate()

void spu_SetClockRate ( spu_t spu,
size_t  channel_id,
float  rate 

◆ spu_SetHighlight()

void spu_SetHighlight ( spu_t ,
const vlc_spu_highlight_t  

◆ vout_ChangeCrop()

void vout_ChangeCrop ( vout_thread_t ,
const struct vout_crop  

◆ vout_ChangeDelay()

void vout_ChangeDelay ( vout_thread_t ,
vlc_tick_t  delay 

◆ vout_ChangeDisplayAspectRatio()

void vout_ChangeDisplayAspectRatio ( vout_thread_t ,
unsigned  num,
unsigned  den 

◆ vout_ChangeDisplayFilled()

void vout_ChangeDisplayFilled ( vout_thread_t ,
bool  is_filled 

◆ vout_ChangeDisplaySize()

void vout_ChangeDisplaySize ( vout_thread_t ,
unsigned  width,
unsigned  height,
void(*)(void *)  ack_cb,
void *  opaque 

◆ vout_ChangeFullscreen()

void vout_ChangeFullscreen ( vout_thread_t ,
const char *  id 

◆ vout_ChangePause()

void vout_ChangePause ( vout_thread_t ,
bool  b_paused,
vlc_tick_t  i_date 

◆ vout_ChangeRate()

void vout_ChangeRate ( vout_thread_t ,
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 DecoderThread_ChangeRate().

◆ vout_ChangeSource()

int vout_ChangeSource ( vout_thread_t p_vout,
const video_format_t fmt 

Set the new source format for a started vout.

Return values
0on success
-1on error, the vout needs to be restarted to handle the format

References vout_thread_sys_t::original, video_format_IsSimilar(), and VOUT_THREAD_TO_SYS.

Referenced by input_resource_RequestVout(), and vout_Request().

◆ vout_ChangeSpuChannelMargin()

void vout_ChangeSpuChannelMargin ( vout_thread_t ,
enum vlc_vout_order  order,

◆ vout_ChangeSpuDelay()

void vout_ChangeSpuDelay ( vout_thread_t ,
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 DecoderThread_ChangeDelay().

◆ vout_ChangeSpuRate()

void vout_ChangeSpuRate ( vout_thread_t ,
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 DecoderThread_ChangeRate().

◆ vout_ChangeViewpoint()

void vout_ChangeViewpoint ( vout_thread_t ,
const vlc_viewpoint_t  

◆ vout_ChangeWindowed()

void vout_ChangeWindowed ( vout_thread_t )

◆ vout_ChangeWindowState()

void vout_ChangeWindowState ( vout_thread_t ,
unsigned  state 

◆ vout_ChangeZoom()

void vout_ChangeZoom ( vout_thread_t ,
unsigned  num,
unsigned  den 

◆ vout_ControlChangeFilters()

void vout_ControlChangeFilters ( vout_thread_t ,
const char *   

◆ vout_ControlChangeInterlacing()

void vout_ControlChangeInterlacing ( vout_thread_t ,

◆ vout_ControlChangeSubFilters()

void vout_ControlChangeSubFilters ( vout_thread_t ,
const char *   

◆ vout_ControlChangeSubSources()

void vout_ControlChangeSubSources ( vout_thread_t ,
const char *   

◆ vout_Create()

vout_thread_t* vout_Create ( vlc_object_t obj)

Creates a video output.

References config_GetType(), vout_thread_sys_t::control, vout_thread_sys_t::control_is_terminated, vout_thread_sys_t::crop, vout_thread_sys_t::dar, vlc_rational_t::den, 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, video_format_t::i_chroma, vout_thread_sys_t::is_late_dropped, vout_thread_sys_t::lock, vout_crop::mode, vlc_rational_t::num, vout_thread_sys_t::obj, vout_thread_sys_t::original, vout_thread_sys_t::position, vout_thread_sys_t::private, vout_thread_sys_t::render, 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::static_filter, vout_thread_sys_t::statistic, vout_thread_sys_t::timeout, vout_thread_sys_t::title, var_Create(), var_Destroy(), var_InheritBool(), var_InheritInteger(), var_InheritString(), var_SetString(), vlc_mutex_init(), vlc_object_delete, VLC_TICK_FROM_MS, VLC_VAR_STRING, vout_chrono_Init(), vout_control_Init(), vout_CreateCommon(), VOUT_CROP_NONE, vout_display_window_New(), vout_InitInterlacingSupport(), vout_IntfInit(), vout_snapshot_New(), vout_statistic_Init(), vout_window_SetState(), VOUT_WINDOW_STATE_ABOVE, VOUT_WINDOW_STATE_BELOW, 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().

◆ vout_CreateDummy()

vout_thread_t* vout_CreateDummy ( vlc_object_t obj)

◆ vout_CreateVars()

void vout_CreateVars ( vout_thread_t )

◆ vout_CropEqual()

static bool vout_CropEqual ( const struct vout_crop a,
const struct vout_crop b 

◆ vout_DisplayTitle()

void vout_DisplayTitle ( vout_thread_t p_vout,
const char *  psz_title 

◆ vout_GetDevice()

vlc_decoder_device* vout_GetDevice ( vout_thread_t vout)

Setup the vout for the given configuration and get an associated decoder device.

voutthe video configuration requested.
pointer to a decoder device reference to use with the vout or NULL

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().

◆ vout_GetResetStatistic()

void vout_GetResetStatistic ( vout_thread_t p_vout,
unsigned *  pi_displayed,
unsigned *  pi_lost,
unsigned *  pi_late 

This function will return and reset internal statistics.

◆ vout_IntfDeinit()

void vout_IntfDeinit ( vlc_object_t )

◆ vout_IntfInit()

void vout_IntfInit ( vout_thread_t )

◆ vout_IntfReinit()

void vout_IntfReinit ( vout_thread_t )

References var_TriggerCallback().

Referenced by vout_Request().

◆ vout_IsEmpty()

bool vout_IsEmpty ( vout_thread_t p_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().

◆ vout_MouseState()

void vout_MouseState ( vout_thread_t ,
const vlc_mouse_t  

◆ vout_NextPicture()

void vout_NextPicture ( vout_thread_t p_vout,
vlc_tick_t pi_duration 

◆ vout_ParseCrop()

bool vout_ParseCrop ( struct vout_crop ,
const char *  crop_str 

Referenced by vout_InitSource().

◆ vout_RegisterSubpictureChannelInternal()

ssize_t vout_RegisterSubpictureChannelInternal ( vout_thread_t ,
vlc_clock_t clock,
enum vlc_vout_order out_order 

◆ vout_Request()

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().

cfgthe video configuration requested.
inputused to get attachments for spu filters
vctxpointer to the video context to use with the vout or NULL
Return values
0on success
-1on error

References vout_configuration_t::clock, vout_thread_sys_t::clock, vout_thread_sys_t::control_is_terminated, vout_thread_sys_t::delay, vout_thread_sys_t::display, EnableWindowLocked(), vout_configuration_t::fmt, msg_Err, vout_thread_sys_t::original, vout_thread_sys_t::private, vout_thread_sys_t::rate, vout_thread_sys_t::spu, spu_Attach(), vout_thread_sys_t::thread, Thread(), video_format_Clean(), vlc_clone(), vlc_mutex_lock(), vlc_mutex_unlock(), VLC_THREAD_PRIORITY_OUTPUT, 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().

◆ vout_SetSpuHighlight()

void vout_SetSpuHighlight ( vout_thread_t p_vout,
const vlc_spu_highlight_t  

◆ vout_Stop()

void vout_Stop ( vout_thread_t )

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().

◆ vout_StopDisplay()

void vout_StopDisplay ( vout_thread_t )