VLC 4.0.0-dev

Video output display: output buffers and rendering. More...

Collaboration diagram for Video output display:

Modules

 Video alignment
 

Files

file  vlc_vout_display.h
 Video output display modules interface.
 

Data Structures

struct  vout_display_placement
 Display placement and zoom configuration. More...
 
struct  vout_display_cfg
 User configuration for a video output display (vout_display_t) More...
 
struct  vout_display_info_t
 Information from a vout_display_t to configure the core behaviour. More...
 
struct  vout_display_owner_t
 Vout owner structures. More...
 
struct  vlc_display_operations
 
struct  vout_display_t
 
struct  vout_display_place_t
 Video placement. More...
 

Macros

#define set_callback_display(activate, priority)
 

Typedefs

typedef struct vout_display_t vout_display_t
 
typedef struct vout_display_owner_t vout_display_owner_t
 
typedef struct vout_display_cfg vout_display_cfg_t
 User configuration for a video output display (vout_display_t) More...
 
typedef int(* vout_display_open_cb) (vout_display_t *vd, video_format_t *fmtp, vlc_video_context *context)
 "vout display" open callback More...
 

Enumerations

enum  vlc_video_fitting {
  VLC_VIDEO_FIT_NONE , VLC_VIDEO_FIT_SMALLER , VLC_VIDEO_FIT_LARGER , VLC_VIDEO_FIT_WIDTH ,
  VLC_VIDEO_FIT_HEIGHT
}
 Video automatic scale fitting. More...
 
enum  vout_display_query {
  VOUT_DISPLAY_CHANGE_DISPLAY_SIZE , VOUT_DISPLAY_CHANGE_DISPLAY_FILLED , VOUT_DISPLAY_CHANGE_ZOOM , VOUT_DISPLAY_CHANGE_SOURCE_ASPECT ,
  VOUT_DISPLAY_CHANGE_SOURCE_CROP
}
 Control query for vout_display_t. More...
 

Functions

vout_display_tvout_display_New (vlc_object_t *, const video_format_t *, vlc_video_context *, const vout_display_cfg_t *, const char *module, const vout_display_owner_t *)
 Creates video output display. More...
 
void vout_display_Delete (vout_display_t *)
 Destroys a video output display. More...
 
picture_tvout_display_Prepare (vout_display_t *vd, picture_t *picture, subpicture_t *subpic, vlc_tick_t date)
 Prepares a picture for display. More...
 
static void vout_display_Display (vout_display_t *vd, picture_t *picture)
 Displays a picture. More...
 
void vout_display_SetSize (vout_display_t *vd, unsigned width, unsigned height)
 
static void vout_display_SendEventMousePressed (vout_display_t *vd, int button)
 
static void vout_display_SendEventMouseReleased (vout_display_t *vd, int button)
 
static void vout_display_SendEventViewpointMoved (vout_display_t *vd, const vlc_viewpoint_t *vp)
 
static void vout_display_SendMouseMovedDisplayCoordinates (vout_display_t *vd, int m_x, int m_y)
 Helper function that applies the necessary transforms to the mouse position and then calls vout_display_SendEventMouseMoved. More...
 
static bool vout_display_cfg_IsWindowed (const vout_display_cfg_t *cfg)
 
void vout_display_GetDefaultDisplaySize (unsigned *width, unsigned *height, const video_format_t *source, const struct vout_display_placement *)
 Computes the default display size given the source and the display configuration. More...
 
static bool vout_display_PlaceEquals (const vout_display_place_t *p1, const vout_display_place_t *p2)
 Compares two vout_display_place_t. More...
 
void vout_display_PlacePicture (vout_display_place_t *restrict place, const video_format_t *restrict source, const struct vout_display_placement *cfg)
 Computes the intended picture placement inside the display. More...
 
void vout_display_TranslateCoordinates (int *x, int *y, const video_format_t *fmt, const struct vout_display_placement *dp)
 Translates coordinates. More...
 

Detailed Description

Video output display: output buffers and rendering.

Macro Definition Documentation

◆ set_callback_display

#define set_callback_display (   activate,
  priority 
)
Value:
{ \
vout_display_open_cb open__ = activate; \
(void) open__; \
set_callback(activate) \
} \
set_capability( "vout display", priority )

Typedef Documentation

◆ vout_display_cfg_t

User configuration for a video output display (vout_display_t)

This primarily controls the size of the display area within the video window, as follows:

  • If vout_display_cfg::display::fitting is not disabled, the video size is fitted to the display size.
  • If window size is valid, the video size is set to the window size,
  • Otherwise, the video size is determined from the original video format, multiplied by the zoom factor.

◆ vout_display_open_cb

typedef int(* vout_display_open_cb) (vout_display_t *vd, video_format_t *fmtp, vlc_video_context *context)

"vout display" open callback

Parameters
vdvout display context
fmtpIt can be changed by the module to request a different format.
contextThe video context to configure the display for.
Returns
VLC_SUCCESS or a VLC error code

◆ vout_display_owner_t

◆ vout_display_t

Enumeration Type Documentation

◆ vlc_video_fitting

Video automatic scale fitting.

Enumerator
VLC_VIDEO_FIT_NONE 

No automatic scaling (use explicit zoom ratio)

VLC_VIDEO_FIT_SMALLER 

Fit inside / to smallest dimension.

VLC_VIDEO_FIT_LARGER 

Fit outside / to largest dimension.

VLC_VIDEO_FIT_WIDTH 

Fit to width.

VLC_VIDEO_FIT_HEIGHT 

Fit to height.

◆ vout_display_query

Control query for vout_display_t.

Enumerator
VOUT_DISPLAY_CHANGE_DISPLAY_SIZE 

Notifies a change in display size.

Return values
VLC_SUCCESSif the display handled the change
VLC_EGENERICif a vlc_display_operations::reset_pictures request is necessary
VOUT_DISPLAY_CHANGE_DISPLAY_FILLED 

Notifies a change of the display fitting mode by the user.

Return values
VLC_SUCCESSif the display handled the change
VLC_EGENERICif a vlc_display_operations::reset_pictures request is necessary
VOUT_DISPLAY_CHANGE_ZOOM 

Notifies a change of the user zoom factor.

Return values
VLC_SUCCESSif the display handled the change
VLC_EGENERICif a vlc_display_operations::reset_pictures request is necessary
VOUT_DISPLAY_CHANGE_SOURCE_ASPECT 

Notifies a change of the sample aspect ratio.

Return values
VLC_SUCCESSif the display handled the change
VLC_EGENERICif a vlc_display_operations::reset_pictures request is necessary
VOUT_DISPLAY_CHANGE_SOURCE_CROP 

Notifies a change of the source cropping.

The cropping requested is stored by source video_format_t i_x/y_offset and i_visible_width/height

Return values
VLC_SUCCESSif the display handled the change
VLC_EGENERICif a vlc_display_operations::reset_pictures request is necessary

Function Documentation

◆ vout_display_cfg_IsWindowed()

static bool vout_display_cfg_IsWindowed ( const vout_display_cfg_t cfg)
inlinestatic

◆ vout_display_Delete()

◆ vout_display_Display()

static void vout_display_Display ( vout_display_t vd,
picture_t picture 
)
inlinestatic

Displays a picture.

References vlc_display_operations::display, and vout_display_t::ops.

Referenced by RenderPicture().

◆ vout_display_GetDefaultDisplaySize()

void vout_display_GetDefaultDisplaySize ( unsigned *  width,
unsigned *  height,
const video_format_t source,
const struct vout_display_placement dp 
)

◆ vout_display_New()

◆ vout_display_PlaceEquals()

static bool vout_display_PlaceEquals ( const vout_display_place_t p1,
const vout_display_place_t p2 
)
inlinestatic

◆ vout_display_PlacePicture()

void vout_display_PlacePicture ( vout_display_place_t *restrict  place,
const video_format_t *restrict  source,
const struct vout_display_placement cfg 
)

Computes the intended picture placement inside the display.

This function computes where to show a picture inside the display with respect to the provided parameters, and returns the result in a vout_display_place_t structure.

This assumes that cropping is done by an external mean.

Parameters
placeStorage space for the picture placement [OUT]
sourceVideo source format
cfgDisplay configuration

◆ vout_display_Prepare()

picture_t * vout_display_Prepare ( vout_display_t vd,
picture_t picture,
subpicture_t subpic,
vlc_tick_t  date 
)

Prepares a picture for display.

This renders a picture for subsequent display, with vout_display_Display().

Note
A reference to the input picture is consumed by the function, which returns a reference to an output picture for display. The input and output picture may or may not be equal depending on the underlying display setup.
Bug:
Currently, only one picture can be prepared at a time. It must be displayed with vout_display_Display() before any picture is prepared or before the display is destroyd with vout_display_Delete().

\ bug Rendering subpictures is not supported with this function yet. subpic must be NULL .

Parameters
vddisplay to prepare the picture for
picturepicure to be prepared
subpicreserved, must be NULL
dateintended time to show the picture
Returns
The prepared picture is returned, NULL on error.

References vout_display_t::ops, vlc_display_operations::prepare, and vout_ConvertForDisplay().

◆ vout_display_SendEventMousePressed()

static void vout_display_SendEventMousePressed ( vout_display_t vd,
int  button 
)
inlinestatic

◆ vout_display_SendEventMouseReleased()

static void vout_display_SendEventMouseReleased ( vout_display_t vd,
int  button 
)
inlinestatic

◆ vout_display_SendEventViewpointMoved()

static void vout_display_SendEventViewpointMoved ( vout_display_t vd,
const vlc_viewpoint_t vp 
)
inlinestatic

◆ vout_display_SendMouseMovedDisplayCoordinates()

static void vout_display_SendMouseMovedDisplayCoordinates ( vout_display_t vd,
int  m_x,
int  m_y 
)
inlinestatic

Helper function that applies the necessary transforms to the mouse position and then calls vout_display_SendEventMouseMoved.

Parameters
vdvout_display_t.
m_xMouse x position (relative to place, origin is top left).
m_yMouse y position (relative to place, origin is top left).

References vout_display_t::cfg, vlc_window_ReportMouseMoved(), and vout_display_cfg::window.

◆ vout_display_SetSize()

◆ vout_display_TranslateCoordinates()

void vout_display_TranslateCoordinates ( int *  x,
int *  y,
const video_format_t fmt,
const struct vout_display_placement dp 
)

Translates coordinates.

This translates coordinates from window pixel coordinate space to original video sample coordinate space.

Parameters
xpointer to abscissa to be translated
ypointer to ordinate to be translated
fmtvideo format
dpdisplay configuration