VLC  2.1.0-git
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
display.c File Reference
Include dependency graph for display.c:

Data Structures

struct  vout_display_owner_sys_t
struct  vout_display_sys_t
struct  video_splitter_owner_t

Macros

#define ALLOW_DUMMY_VOUT

Functions

static void SplitterClose (vout_display_t *vd)
static picture_tVideoBufferNew (filter_t *filter)
static void VideoBufferDelete (filter_t *filter, picture_t *picture)
static int FilterAllocationInit (filter_t *filter, void *vd)
static void FilterAllocationClean (filter_t *filter)
static vout_display_tvout_display_New (vlc_object_t *obj, const char *module, bool load_module, const video_format_t *fmt, const vout_display_cfg_t *cfg, vout_display_owner_t *owner)
 It creates a new vout_display_t using the given configuration.
static void vout_display_Delete (vout_display_t *vd)
 It deletes a vout_display_t.
static int vout_display_Control (vout_display_t *vd, int query,...)
 It controls a vout_display_t.
static void vout_display_Manage (vout_display_t *vd)
void vout_display_GetDefaultDisplaySize (unsigned *width, unsigned *height, const video_format_t *source, const vout_display_cfg_t *cfg)
 Computes the default display size given the source and the display configuration.
void vout_display_PlacePicture (vout_display_place_t *place, const video_format_t *source, const vout_display_cfg_t *cfg, bool do_clipping)
 Computes how to place a picture inside the display to respect the given parameters.
static void DummyVoutSendDisplayEventMouse (vout_thread_t *, vlc_mouse_t *fallback, const vlc_mouse_t *m)
static void VoutDisplayCreateRender (vout_display_t *vd)
static void VoutDisplayDestroyRender (vout_display_t *vd)
static void VoutDisplayResetRender (vout_display_t *vd)
static void VoutDisplayEventMouse (vout_display_t *vd, int event, va_list args)
static void * VoutDisplayEventKeyDispatch (void *data)
static void VoutDisplayEventKey (vout_display_t *vd, int key)
static void VoutDisplayEvent (vout_display_t *vd, int event, va_list args)
static vout_window_tVoutDisplayNewWindow (vout_display_t *vd, const vout_window_cfg_t *cfg)
static void VoutDisplayDelWindow (vout_display_t *vd, vout_window_t *window)
static void VoutDisplayFitWindow (vout_display_t *vd, bool default_size)
static void VoutDisplayCropRatio (int *left, int *top, int *right, int *bottom, const video_format_t *source, unsigned num, unsigned den)
void vout_ManageDisplay (vout_display_t *vd, bool allow_reset_pictures)
bool vout_AreDisplayPicturesInvalid (vout_display_t *vd)
bool vout_IsDisplayFiltered (vout_display_t *vd)
picture_tvout_FilterDisplay (vout_display_t *vd, picture_t *picture)
void vout_UpdateDisplaySourceProperties (vout_display_t *vd, const video_format_t *source)
void vout_SetDisplayFullscreen (vout_display_t *vd, bool is_fullscreen)
void vout_SetDisplayFilled (vout_display_t *vd, bool is_filled)
void vout_SetDisplayZoom (vout_display_t *vd, int num, int den)
void vout_SetWindowState (vout_display_t *vd, unsigned state)
void vout_SetDisplayAspect (vout_display_t *vd, unsigned dar_num, unsigned dar_den)
void vout_SetDisplayCrop (vout_display_t *vd, unsigned crop_num, unsigned crop_den, unsigned left, unsigned top, int right, int bottom)
struct vlc_gl_tvout_GetDisplayOpengl (vout_display_t *vd)
static vout_display_tDisplayNew (vout_thread_t *vout, const video_format_t *source_org, const vout_display_state_t *state, const char *module, bool is_wrapper, vout_display_t *wrapper, mtime_t double_click_timeout, mtime_t hide_timeout, const vout_display_owner_t *owner_ptr)
void vout_DeleteDisplay (vout_display_t *vd, vout_display_state_t *state)
 It destroy a vout managed display.
vout_display_tvout_NewDisplay (vout_thread_t *vout, const video_format_t *source, const vout_display_state_t *state, const char *module, mtime_t double_click_timeout, mtime_t hide_timeout)
 It creates a vout managed display.
static vout_window_tSplitterNewWindow (vout_display_t *vd, const vout_window_cfg_t *cfg_ptr)
static void SplitterDelWindow (vout_display_t *vd, vout_window_t *window)
static void SplitterEvent (vout_display_t *vd, int event, va_list args)
static picture_pool_tSplitterPool (vout_display_t *vd, unsigned count)
static void SplitterPrepare (vout_display_t *vd, picture_t *picture, subpicture_t *subpicture)
static void SplitterDisplay (vout_display_t *vd, picture_t *picture, subpicture_t *subpicture)
static int SplitterControl (vout_display_t *vd, int query, va_list args)
static void SplitterManage (vout_display_t *vd)
static int SplitterPictureNew (video_splitter_t *splitter, picture_t *picture[])
static void SplitterPictureDel (video_splitter_t *splitter, picture_t *picture[])
vout_display_tvout_NewSplitter (vout_thread_t *vout, const video_format_t *source, const vout_display_state_t *state, const char *module, const char *splitter_module, mtime_t double_click_timeout, mtime_t hide_timeout)
void vout_SendDisplayEventMouse (vout_thread_t *vout, const vlc_mouse_t *m)

Macro Definition Documentation

#define ALLOW_DUMMY_VOUT

Function Documentation

static vout_display_t* DisplayNew ( vout_thread_t vout,
const video_format_t source_org,
const vout_display_state_t state,
const char *  module,
bool  is_wrapper,
vout_display_t wrapper,
mtime_t  double_click_timeout,
mtime_t  hide_timeout,
const vout_display_owner_t owner_ptr 
)
static

References vout_display_owner_sys_t::bottom, vout_display_state_t::cfg, vout_display_owner_sys_t::cfg, vout_display_owner_sys_t::ch_crop, vout_display_owner_sys_t::ch_sar, vout_display_owner_sys_t::ch_wm_state, vout_display_owner_sys_t::crop, vout_display_owner_sys_t::crop_saved, vout_display_state_t::den, vout_display_cfg_t::den, vout_display_owner_sys_t::den, vout_display_cfg_t::display, vout_display_owner_sys_t::display_height, vout_display_owner_sys_t::display_width, vout_display_owner_sys_t::double_click_timeout, vout_display_owner_t::event, vout_display_owner_sys_t::event, vout_display_owner_sys_t::fifo, vout_display_owner_sys_t::fit_window, vout_display_cfg_t::height, vout_display_owner_sys_t::height_saved, vout_display_owner_sys_t::hide_timeout, 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_cfg_t::is_display_filled, vout_display_owner_sys_t::is_display_filled, vout_display_cfg_t::is_fullscreen, vout_display_owner_sys_t::is_fullscreen, vout_display_owner_sys_t::is_wrapper, vout_display_owner_sys_t::last_moved, vout_display_owner_sys_t::left, vout_display_owner_sys_t::lock, mdate(), vout_display_owner_sys_t::mouse, vout_display_state_t::num, vout_display_cfg_t::num, vout_display_owner_sys_t::num, vout_display_owner_sys_t::right, vout_display_state_t::sar, vout_display_owner_sys_t::sar, vout_display_owner_sys_t::sar_initial, vout_display_owner_sys_t::source, vout_display_owner_sys_t::state, vout_display_owner_t::sys, vout_display_owner_sys_t::top, vlc_mouse_Init(), vlc_mutex_init(), VLC_OBJECT, vout_display_owner_sys_t::vout, vout_display_GetDefaultDisplaySize(), vout_display_New(), vout_display_owner_sys_t::vout_mouse, VoutDisplayCreateRender(), VoutDisplayDelWindow(), VoutDisplayEvent(), VoutDisplayNewWindow(), vout_display_cfg_t::width, vout_display_owner_sys_t::width_saved, vout_display_owner_t::window_del, vout_display_owner_t::window_new, vout_display_state_t::wm_state, vout_display_owner_sys_t::wm_state, vout_display_owner_sys_t::wm_state_initial, vout_display_owner_sys_t::wrapper, vout_display_cfg_t::zoom, and vout_display_owner_sys_t::zoom.

Referenced by vout_NewDisplay(), and vout_NewSplitter().

static void DummyVoutSendDisplayEventMouse ( vout_thread_t vout,
vlc_mouse_t fallback,
const vlc_mouse_t m 
)
static
static void FilterAllocationClean ( filter_t filter)
static

References filter_t::p_owner.

Referenced by VoutDisplayCreateRender().

static int FilterAllocationInit ( filter_t filter,
void *  vd 
)
static
static void SplitterClose ( vout_display_t vd)
static
static int SplitterControl ( vout_display_t vd,
int  query,
va_list  args 
)
static

< Unspecified error

References VLC_EGENERIC.

Referenced by vout_NewSplitter().

static void SplitterDelWindow ( vout_display_t vd,
vout_window_t window 
)
static
static void SplitterDisplay ( vout_display_t vd,
picture_t picture,
subpicture_t subpicture 
)
static
static void SplitterEvent ( vout_display_t vd,
int  event,
va_list  args 
)
static
static void SplitterManage ( vout_display_t vd)
static
static vout_window_t* SplitterNewWindow ( vout_display_t vd,
const vout_window_cfg_t cfg_ptr 
)
static
static void SplitterPictureDel ( video_splitter_t splitter,
picture_t picture[] 
)
static
static int SplitterPictureNew ( video_splitter_t splitter,
picture_t picture[] 
)
static
static picture_pool_t* SplitterPool ( vout_display_t vd,
unsigned  count 
)
static
static void SplitterPrepare ( vout_display_t vd,
picture_t picture,
subpicture_t subpicture 
)
static
static void VideoBufferDelete ( filter_t filter,
picture_t picture 
)
static

References picture_Release(), and VLC_UNUSED.

Referenced by FilterAllocationInit().

static picture_t* VideoBufferNew ( filter_t filter)
static
bool vout_AreDisplayPicturesInvalid ( vout_display_t vd)
void vout_DeleteDisplay ( vout_display_t vd,
vout_display_state_t state 
)
static int vout_display_Control ( vout_display_t vd,
int  query,
  ... 
)
static
static void vout_display_Delete ( vout_display_t vd)
static
void vout_display_GetDefaultDisplaySize ( unsigned *  width,
unsigned *  height,
const video_format_t source,
const vout_display_cfg_t  
)
static void vout_display_Manage ( vout_display_t vd)
static

References vout_display_t::manage.

Referenced by vout_ManageDisplay().

static vout_display_t* vout_display_New ( vlc_object_t obj,
const char *  module,
bool  load_module,
const video_format_t fmt,
const vout_display_cfg_t cfg,
vout_display_owner_t owner 
)
static
void vout_display_PlacePicture ( vout_display_place_t place,
const video_format_t source,
const vout_display_cfg_t cfg,
bool  do_clipping 
)

Computes how to place a picture inside the display to respect the given parameters.

This assumes that cropping is done by an external mean.

Parameters
p_placePlace inside the window (window pixel unit)
p_sourceVideo source format
p_cfgDisplay configuration
b_clipIf true, prevent the video to go outside the display (break zoom).

References vout_display_cfg_t::align, vout_display_cfg_t::display, vout_display_cfg_t::height, vout_display_place_t::height, vout_display_cfg_t::horizontal, video_format_t::i_sar_den, video_format_t::i_sar_num, video_format_t::i_visible_height, video_format_t::i_visible_width, vout_display_cfg_t::is_display_filled, vout_display_cfg_t::sar, vout_display_cfg_t::vertical, VOUT_DISPLAY_ALIGN_BOTTOM, VOUT_DISPLAY_ALIGN_LEFT, VOUT_DISPLAY_ALIGN_RIGHT, VOUT_DISPLAY_ALIGN_TOP, vout_display_GetDefaultDisplaySize(), vout_display_cfg_t::width, vout_display_place_t::width, vout_display_place_t::x, and vout_display_place_t::y.

Referenced by ThreadDisplayRenderPicture().

picture_t* vout_FilterDisplay ( vout_display_t vd,
picture_t picture 
)
struct vlc_gl_t* vout_GetDisplayOpengl ( vout_display_t vd)
read
bool vout_IsDisplayFiltered ( vout_display_t vd)
void vout_ManageDisplay ( vout_display_t vd,
bool  allow_reset_pictures 
)

References vout_display_owner_sys_t::bottom, vout_display_owner_sys_t::cfg, vout_display_owner_sys_t::ch_activity, vout_display_owner_sys_t::ch_crop, vout_display_owner_sys_t::ch_display_filled, vout_display_owner_sys_t::ch_display_size, vout_display_owner_sys_t::ch_fullscreen, vout_display_owner_sys_t::ch_sar, vout_display_owner_sys_t::ch_wm_state, vout_display_owner_sys_t::ch_zoom, vout_display_owner_sys_t::crop, vout_display_owner_sys_t::crop_saved, vout_display_cfg_t::den, vout_display_owner_sys_t::den, vout_display_cfg_t::display, vout_display_owner_sys_t::display_height, vout_display_owner_sys_t::display_is_forced, vout_display_owner_sys_t::display_is_fullscreen, vout_display_owner_sys_t::display_width, vout_display_owner_sys_t::fit_window, vout_display_info_t::has_hide_mouse, vout_display_cfg_t::height, vout_display_owner_sys_t::height_saved, vout_display_owner_sys_t::hide_timeout, 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_x_offset, video_format_t::i_y_offset, vout_display_t::info, vout_display_cfg_t::is_display_filled, vout_display_owner_sys_t::is_display_filled, vout_display_cfg_t::is_fullscreen, vout_display_owner_sys_t::is_fullscreen, vout_display_owner_sys_t::is_hidden, vout_display_owner_sys_t::last_moved, vout_display_owner_sys_t::left, vout_display_owner_sys_t::lock, mdate(), vout_display_owner_sys_t::mouse, msg_Dbg, msg_Err, vout_display_cfg_t::num, vout_display_owner_sys_t::num, vout_display_t::owner, vout_display_owner_sys_t::reset_pictures, vout_display_owner_sys_t::right, vout_display_owner_sys_t::sar, vout_display_t::source, vout_display_owner_sys_t::source, vout_display_owner_t::sys, vout_display_owner_sys_t::top, video_format_Print(), VLC_CLIP, vlc_mutex_lock(), vlc_mutex_unlock(), VLC_OBJECT, vlc_ureduce(), vout_display_owner_sys_t::vout, VOUT_DISPLAY_CHANGE_DISPLAY_FILLED, VOUT_DISPLAY_CHANGE_DISPLAY_SIZE, VOUT_DISPLAY_CHANGE_FULLSCREEN, VOUT_DISPLAY_CHANGE_SOURCE_ASPECT, VOUT_DISPLAY_CHANGE_SOURCE_CROP, VOUT_DISPLAY_CHANGE_WINDOW_STATE, VOUT_DISPLAY_CHANGE_ZOOM, vout_display_Control(), VOUT_DISPLAY_HIDE_MOUSE, vout_display_Manage(), VOUT_DISPLAY_RESET_PICTURES, vout_SendEventDisplayFilled(), vout_SendEventFullscreen(), vout_SendEventMouseHidden(), vout_SendEventOnTop(), vout_SendEventSourceAspect(), vout_SendEventSourceCrop(), vout_SendEventZoom(), VoutDisplayCropRatio(), VoutDisplayFitWindow(), VoutDisplayResetRender(), vout_display_cfg_t::width, vout_display_owner_sys_t::width_saved, vout_display_owner_sys_t::wm_state, vout_display_owner_sys_t::wm_state_initial, vout_display_cfg_t::zoom, and vout_display_owner_sys_t::zoom.

Referenced by SplitterManage(), and vout_ManageWrapper().

vout_display_t* vout_NewDisplay ( vout_thread_t vout,
const video_format_t source,
const vout_display_state_t state,
const char *  module,
mtime_t  double_click_timeout,
mtime_t  hide_timeout 
)

It creates a vout managed display.

References DisplayNew().

Referenced by vout_OpenWrapper().

vout_display_t* vout_NewSplitter ( vout_thread_t vout,
const video_format_t source,
const vout_display_state_t state,
const char *  module,
const char *  splitter_module,
mtime_t  double_click_timeout,
mtime_t  hide_timeout 
)
void vout_SendDisplayEventMouse ( vout_thread_t vout,
const vlc_mouse_t m 
)
void vout_SetDisplayAspect ( vout_display_t vd,
unsigned  dar_num,
unsigned  dar_den 
)
void vout_SetDisplayCrop ( vout_display_t vd,
unsigned  crop_num,
unsigned  crop_den,
unsigned  left,
unsigned  top,
int  right,
int  bottom 
)
void vout_SetDisplayFilled ( vout_display_t vd,
bool  is_filled 
)
void vout_SetDisplayFullscreen ( vout_display_t vd,
bool  is_fullscreen 
)
void vout_SetDisplayZoom ( vout_display_t vd,
int  num,
int  den 
)
void vout_SetWindowState ( vout_display_t vd,
unsigned  state 
)
void vout_UpdateDisplaySourceProperties ( vout_display_t vd,
const video_format_t source 
)
static void VoutDisplayCreateRender ( vout_display_t vd)
static
static void VoutDisplayCropRatio ( int *  left,
int *  top,
int *  right,
int *  bottom,
const video_format_t source,
unsigned  num,
unsigned  den 
)
static
static void VoutDisplayDelWindow ( vout_display_t vd,
vout_window_t window 
)
static
static void VoutDisplayDestroyRender ( vout_display_t vd)
static
static void VoutDisplayEvent ( vout_display_t vd,
int  event,
va_list  args 
)
static
static void VoutDisplayEventKey ( vout_display_t vd,
int  key 
)
static
static void* VoutDisplayEventKeyDispatch ( void *  data)
static
static void VoutDisplayEventMouse ( vout_display_t vd,
int  event,
va_list  args 
)
static
static void VoutDisplayFitWindow ( vout_display_t vd,
bool  default_size 
)
static
static vout_window_t* VoutDisplayNewWindow ( vout_display_t vd,
const vout_window_cfg_t cfg 
)
static
static void VoutDisplayResetRender ( vout_display_t vd)
static