VLC  4.0.0-dev
display.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * display.h: "vout display" management
3  *****************************************************************************
4  * Copyright (C) 2009 Laurent Aimar
5  *
6  * Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU Lesser General Public License as published by
10  * the Free Software Foundation; either version 2.1 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21  *****************************************************************************/
22 
23 #include "vout_wrapper.h"
24 
VOUT_CROP_NONE
@ VOUT_CROP_NONE
Definition: vout_internal.h:104
vlc_video_align::vertical
char vertical
Vectical alignment.
Definition: vlc_vout_display.h:79
vlc_mouse_t
Mouse state.
Definition: vlc_mouse.h:45
vout_display_t::sys
vout_display_sys_t * sys
Private data for the display module.
Definition: vlc_vout_display.h:369
vout_wrapper.h
vlc_video_context_HoldDevice
vlc_decoder_device * vlc_video_context_HoldDevice(vlc_video_context *vctx)
Get the decoder device used by the device context.
Definition: decoder_helpers.c:287
count
size_t count
Definition: core.c:401
vout_CropEqual
static bool vout_CropEqual(const struct vout_crop *a, const struct vout_crop *b)
Definition: vout_internal.h:126
picture_pool_Get
picture_t * picture_pool_Get(picture_pool_t *pool)
Obtains a picture from a pool if any is immediately available.
Definition: picture_pool.c:175
vout_display_SetSize
void vout_display_SetSize(vout_display_t *vd, unsigned width, unsigned height)
Definition: display.c:578
es_format_t::video
video_format_t video
description of video format
Definition: vlc_es.h:646
filter_video_callbacks
Definition: vlc_filter.h:45
vout_display_cfg::display
struct vout_display_cfg::@275 display
Display properties.
video_format_Copy
static int video_format_Copy(video_format_t *p_dst, const video_format_t *p_src)
Copy video_format_t including the palette.
Definition: vlc_es.h:415
vout_display_place_t::width
unsigned width
Definition: vlc_vout_display.h:483
unlikely
#define unlikely(p)
Predicted false condition.
Definition: vlc_common.h:227
vlc_common.h
vout_display_t::obj
struct vlc_object_t obj
Definition: vlc_vout_display.h:317
vout_display_PlacePicture
void vout_display_PlacePicture(vout_display_place_t *place, const video_format_t *source, const vout_display_cfg_t *cfg)
Computes the intended picture placement inside the display.
Definition: display.c:122
video_format_t::i_y_offset
unsigned int i_y_offset
start offset of visible area
Definition: vlc_es.h:357
VOUT_CROP_RATIO
@ VOUT_CROP_RATIO
Definition: vout_internal.h:104
vlc_vout.h
vout_SetDisplayViewpoint
void vout_SetDisplayViewpoint(vout_display_t *vd, const vlc_viewpoint_t *p_viewpoint)
Definition: display.c:645
vlc_mouse_t::b_double_click
bool b_double_click
Definition: vlc_mouse.h:53
VLC_CLIP
#define VLC_CLIP(v, min, max)
Definition: vlc_common.h:551
video_format_t::i_sar_num
unsigned int i_sar_num
sample/pixel aspect ratio
Definition: vlc_es.h:363
video_format_Clean
static void video_format_Clean(video_format_t *p_src)
Cleanup and free palette of this video_format_t.
Definition: vlc_es.h:469
vlc_display_operations::close
void(* close)(vout_display_t *)
Destroys the display.
Definition: vlc_vout_display.h:237
filter_chain_VideoFilter
picture_t * filter_chain_VideoFilter(filter_chain_t *p_chain, picture_t *p_pic)
Apply the filter chain to a video picture.
Definition: filter_chain.c:443
VOUT_DISPLAY_CHANGE_SOURCE_CROP
@ VOUT_DISPLAY_CHANGE_SOURCE_CROP
Notifies a change of the source cropping.
Definition: vlc_vout_display.h:185
vout_display_cfg::align
vlc_video_align_t align
Alignment of the video within the window.
Definition: vlc_vout_display.h:117
vlc_module_load
#define vlc_module_load(ctx, cap, name, strict,...)
Definition: vlc_modules.h:99
picture_Release
static void picture_Release(picture_t *picture)
Decrements the picture reference count.
Definition: vlc_picture.h:368
vout_display_priv_t::source
video_format_t source
Definition: display.c:273
video_format_t
video format description
Definition: vlc_es.h:350
vout_crop::mode
enum vout_crop_mode mode
Definition: vout_internal.h:108
vout_display_t::owner
vout_display_owner_t owner
Definition: vlc_vout_display.h:362
msg_Dbg
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:106
vout_display_t::cfg
const vout_display_cfg_t * cfg
User configuration.
Definition: vlc_vout_display.h:324
es_format_Clean
void es_format_Clean(es_format_t *fmt)
This function will clean up a es_format_t and release all associated resources.
Definition: es_format.c:509
vout_SetDisplayFilled
void vout_SetDisplayFilled(vout_display_t *vd, bool is_filled)
Definition: display.c:588
vout_display_TranslateMouseState
void vout_display_TranslateMouseState(vout_display_t *vd, vlc_mouse_t *video, const vlc_mouse_t *window)
Translates mouse state.
Definition: display.c:204
PROJECTION_MODE_RECTANGULAR
@ PROJECTION_MODE_RECTANGULAR
Definition: vlc_es.h:257
vlc_rational_t::den
unsigned den
Definition: fourcc_gen.c:34
vout_display_owner_t
Vout owner structures.
Definition: vlc_vout_display.h:191
vlc_viewpoint_t
Viewpoints.
Definition: vlc_viewpoint.h:41
picture_pool_Release
void picture_pool_Release(picture_pool_t *pool)
Releases a pool created by picture_pool_New() or picture_pool_NewFromFormat().
Definition: picture_pool.c:61
vlc_picture_pool.h
vlc_display_operations::set_viewpoint
int(* set_viewpoint)(vout_display_t *, const vlc_viewpoint_t *vp)
Notifies a change of VR/360° viewpoint.
Definition: vlc_vout_display.h:313
vout_display_GetDefaultDisplaySize
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.
Definition: display.c:75
vout_ConvertForDisplay
picture_t * vout_ConvertForDisplay(vout_display_t *vd, picture_t *picture)
Definition: display.c:401
vlc_video_context_Hold
vlc_video_context * vlc_video_context_Hold(vlc_video_context *vctx)
Definition: decoder_helpers.c:269
vout_display_priv_t
Definition: display.c:265
vlc_ureduce
VLC_EXPORT bool vlc_ureduce(unsigned *, unsigned *, uint64_t, uint64_t, uint64_t)
vout_display_Reset
static void vout_display_Reset(vout_display_t *vd)
Definition: display.c:432
es_format_InitFromVideo
void es_format_InitFromVideo(es_format_t *p_es, const video_format_t *p_fmt)
This function will initialize a es_format_t structure from a video_format_t.
Definition: es_format.c:430
picture_t
Video picture.
Definition: vlc_picture.h:120
vout_display_t::info
vout_display_info_t info
Definition: vlc_vout_display.h:356
vout_FilterFlush
void vout_FilterFlush(vout_display_t *vd)
Definition: display.c:424
vout_display_place_t::y
int y
Definition: vlc_vout_display.h:482
VOUT_DISPLAY_CHANGE_DISPLAY_FILLED
@ VOUT_DISPLAY_CHANGE_DISPLAY_FILLED
Notifies a change of the display fill display flag by the user.
Definition: vlc_vout_display.h:158
video_format_ApplyRotation
void video_format_ApplyRotation(video_format_t *restrict out, const video_format_t *restrict in)
Definition: es_format.c:330
VideoBufferNew
static picture_t * VideoBufferNew(filter_t *filter)
Definition: display.c:50
video_format_CopyCrop
void video_format_CopyCrop(video_format_t *p_dst, const video_format_t *p_src)
It will copy the crop properties from a video_format_t to another.
Definition: es_format.c:182
video_format_t::projection_mode
video_projection_mode_t projection_mode
Multiview left or right eye first.
Definition: vlc_es.h:381
filter_t::fmt_out
es_format_t fmt_out
Definition: vlc_filter.h:228
ORIENT_BOTTOM_RIGHT
@ ORIENT_BOTTOM_RIGHT
Rotated 180 degrees.
Definition: vlc_es.h:183
ORIENT_LEFT_TOP
@ ORIENT_LEFT_TOP
Transposed.
Definition: vlc_es.h:184
vout_display_place_t::height
unsigned height
Definition: vlc_vout_display.h:484
vout_display_open_cb
int(* vout_display_open_cb)(vout_display_t *vd, const vout_display_cfg_t *cfg, video_format_t *fmtp, vlc_video_context *context)
"vout display" open callback
Definition: vlc_vout_display.h:219
ORIENT_TOP_RIGHT
@ ORIENT_TOP_RIGHT
Flipped horizontally.
Definition: vlc_es.h:181
vlc_assert_unreachable
#define vlc_assert_unreachable()
Impossible branch assertion.
Definition: vlc_common.h:253
vout_display_place_t
Video placement.
Definition: vlc_vout_display.h:480
filter_chain_NewVideo
#define filter_chain_NewVideo(a, b, c)
Definition: vlc_filter.h:492
vout_SetDisplayZoom
void vout_SetDisplayZoom(vout_display_t *vd, unsigned num, unsigned den)
Definition: display.c:600
vout_display_cfg::viewpoint
vlc_viewpoint_t viewpoint
Definition: vlc_vout_display.h:125
filter_owner_t
Definition: vlc_filter.h:65
video_format_t::i_width
unsigned int i_width
picture width
Definition: vlc_es.h:354
vout_display_priv_t::src_vctx
vlc_video_context * src_vctx
Definition: display.c:275
picture_pool_t
Definition: picture_pool.c:42
VLC_VIDEO_ALIGN_TOP
#define VLC_VIDEO_ALIGN_TOP
Definition: vlc_vout_display.h:58
vout_UpdateSourceCrop
static int vout_UpdateSourceCrop(vout_display_t *vd)
Definition: display.c:452
VOUT_DISPLAY_CHANGE_DISPLAY_SIZE
@ VOUT_DISPLAY_CHANGE_DISPLAY_SIZE
Notifies a change in display size.
Definition: vlc_vout_display.h:150
vlc_display_operations::reset_pictures
int(* reset_pictures)(vout_display_t *, video_format_t *fmtp)
Reset the picture format handled by the module.
Definition: vlc_vout_display.h:304
video_format_t::i_x_offset
unsigned int i_x_offset
start offset of visible area
Definition: vlc_es.h:356
vout_display_t::source
const video_format_t * source
Source video format.
Definition: vlc_vout_display.h:335
filter_t
Structure describing a filter.
Definition: vlc_filter.h:215
es_format_t
Definition: vlc_es.h:617
vlc_tick_t
int64_t vlc_tick_t
High precision date or time interval.
Definition: vlc_tick.h:45
ORIENT_LEFT_BOTTOM
@ ORIENT_LEFT_BOTTOM
Rotated 90 degrees anti-clockwise.
Definition: vlc_es.h:185
vout_display_info_t
Information from a vout_display_t to configure the core behaviour.
Definition: vlc_vout_display.h:135
filter_owner_t::sys
void * sys
Definition: vlc_filter.h:78
subpicture_t
Video subtitle.
Definition: vlc_subpicture.h:166
vout_display_cfg
User configuration for a video output display (vout_display_t)
Definition: vlc_vout_display.h:94
filter_chain_VideoFlush
void filter_chain_VideoFlush(filter_chain_t *p_chain)
Flush a video filter chain.
Definition: filter_chain.c:464
vlc_filter.h
vlc_viewpoint_t::yaw
float yaw
Definition: vlc_viewpoint.h:42
vlc_decoder_device
Decoder context struct.
Definition: vlc_codec.h:566
vout_SetDisplayAspect
void vout_SetDisplayAspect(vout_display_t *vd, unsigned dar_num, unsigned dar_den)
Definition: display.c:614
vout_display_t::ops
const struct vlc_display_operations * ops
Callbacks the display module must set on Open.
Definition: vlc_vout_display.h:374
vlc_viewpoint_t::roll
float roll
Definition: vlc_viewpoint.h:44
vlc_vout_display.h
vlc_objres_clear
void vlc_objres_clear(vlc_object_t *obj)
Releases all resources of an object.
Definition: objres.c:84
ORIENT_RIGHT_TOP
@ ORIENT_RIGHT_TOP
Rotated 90 degrees clockwise.
Definition: vlc_es.h:186
vout_display_cfg::zoom
vlc_rational_t zoom
Zoom ratio.
Definition: vlc_vout_display.h:123
vout_display_New
vout_display_t * vout_display_New(vlc_object_t *parent, const video_format_t *source, vlc_video_context *vctx, const vout_display_cfg_t *cfg, const char *module, const vout_display_owner_t *owner)
Creates video output display.
Definition: display.c:668
ORIENT_TOP_LEFT
@ ORIENT_TOP_LEFT
Top line represents top, left column left.
Definition: vlc_es.h:180
vlc_mouse_t::i_y
int i_y
Definition: vlc_mouse.h:49
vout_display_cfg::height
unsigned height
Requested display pixel height (0 by default).
Definition: vlc_vout_display.h:100
vout_UpdateDisplaySourceProperties
void vout_UpdateDisplaySourceProperties(vout_display_t *vd, const video_format_t *, const vlc_rational_t *forced_dar)
Definition: display.c:544
vout_display_cfg::is_display_filled
bool is_display_filled
Automatic scaling/fitting flag.
Definition: vlc_vout_display.h:120
VoutDisplayCropRatio
static void VoutDisplayCropRatio(int *left, int *top, int *right, int *bottom, const video_format_t *source, unsigned num, unsigned den)
Definition: display.c:362
vlc_video_align::horizontal
char horizontal
Horizontal alignment.
Definition: vlc_vout_display.h:71
vout_display_priv_t::crop
struct vout_crop crop
Definition: display.c:270
vout_SetDisplayCrop
void vout_SetDisplayCrop(vout_display_t *vd, const struct vout_crop *restrict crop)
Definition: display.c:632
video_format_t::i_visible_height
unsigned int i_visible_height
height of visible area
Definition: vlc_es.h:359
vlc_rational_t
Definition: fourcc_gen.c:34
vout_GetPool
picture_pool_t * vout_GetPool(vout_display_t *vd, unsigned count)
It retreives a picture pool from the display.
Definition: display.c:385
filter_owner_t::video
const struct filter_video_callbacks * video
Definition: vlc_filter.h:69
container_of
#define container_of(ptr, type, member)
Definition: vlc_common.h:1140
DisplayHoldDecoderDevice
static vlc_decoder_device * DisplayHoldDecoderDevice(vlc_object_t *o, void *sys)
Definition: display.c:302
vout_crop
Definition: vout_internal.h:107
video_format_t::i_sar_den
unsigned int i_sar_den
Definition: vlc_es.h:364
filter_chain_IsEmpty
bool filter_chain_IsEmpty(const filter_chain_t *chain)
Checks if the filter chain is empty.
Definition: filter_chain.c:401
vlc_video_context
Definition: decoder_helpers.c:228
vlc_display_operations::control
int(* control)(vout_display_t *, int query)
Performs a control request (mandatory).
Definition: vlc_vout_display.h:290
vlc_object_t
VLC object common members.
Definition: vlc_objects.h:43
vout_UpdateDisplaySourceProperties
void vout_UpdateDisplaySourceProperties(vout_display_t *vd, const video_format_t *source, const vlc_rational_t *forced_dar)
Definition: display.c:544
vout_display_Control
static int vout_display_Control(vout_display_t *vd, int query)
Definition: display.c:65
vlc_rational_t::num
unsigned num
Definition: fourcc_gen.c:34
vout_SetSourceAspect
static int vout_SetSourceAspect(vout_display_t *vd, unsigned sar_num, unsigned sar_den)
Definition: display.c:513
VLC_UNUSED
#define VLC_UNUSED(x)
Definition: vlc_common.h:1105
VLC_SUCCESS
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:472
video_format_t::i_visible_width
unsigned int i_visible_width
width of visible area
Definition: vlc_es.h:358
filter_chain_t
Definition: filter_chain.c:46
filter_chain_AppendConverter
int filter_chain_AppendConverter(filter_chain_t *chain, const es_format_t *fmt_out)
Append a conversion to the chain.
Definition: filter_chain.c:303
video_format_Print
void video_format_Print(vlc_object_t *p_this, const char *psz_text, const video_format_t *fmt)
It prints details about the given video_format_t.
Definition: es_format.c:390
display.h
vout_IsDisplayFiltered
bool vout_IsDisplayFiltered(vout_display_t *vd)
Definition: display.c:394
vlc_custom_create
#define vlc_custom_create(o, s, n)
Definition: libvlc.h:117
ORIENT_IS_SWAP
#define ORIENT_IS_SWAP(orient)
If the orientation swaps dimensions.
Definition: vlc_es.h:206
vlc_block.h
vout_display_priv_t::converters
filter_chain_t * converters
Definition: display.c:278
VoutFixFormatAR
void VoutFixFormatAR(video_format_t *fmt)
Definition: display.c:534
VLC_VIDEO_ALIGN_RIGHT
#define VLC_VIDEO_ALIGN_RIGHT
Definition: vlc_vout_display.h:57
vout_crop::border
struct vout_crop::@121::@124 border
VoutDisplayCreateRender
static int VoutDisplayCreateRender(vout_display_t *vd)
Definition: display.c:314
ORIENT_RIGHT_BOTTOM
@ ORIENT_RIGHT_BOTTOM
Anti-transposed.
Definition: vlc_es.h:187
window.h
vlc_display_operations::prepare
void(* prepare)(vout_display_t *, picture_t *pic, subpicture_t *subpic, vlc_tick_t date)
Prepares a picture and an optional subpicture for display (optional).
Definition: vlc_vout_display.h:265
filter_chain_Reset
void filter_chain_Reset(filter_chain_t *p_chain, const es_format_t *p_fmt_in, vlc_video_context *vctx_in, const es_format_t *p_fmt_out)
Filter chain reinitialisation.
Definition: filter_chain.c:188
video_format_t::i_height
unsigned int i_height
picture height
Definition: vlc_es.h:355
vout_display_Delete
void vout_display_Delete(vout_display_t *vd)
Destroys a video output display.
Definition: display.c:727
vlc_object_t::force
bool force
Module probe flag.
Definition: vlc_objects.h:58
vout_display_filter_cbs
static const struct filter_video_callbacks vout_display_filter_cbs
Definition: display.c:310
vout_display_priv_t::display
vout_display_t display
Definition: display.c:266
VLC_VIDEO_ALIGN_LEFT
#define VLC_VIDEO_ALIGN_LEFT
Definition: vlc_vout_display.h:56
vlc_mouse_t::i_x
int i_x
Definition: vlc_mouse.h:48
vout_display_t::fmt
const video_format_t * fmt
Picture format.
Definition: vlc_vout_display.h:350
libvlc.h
vout_display_start
static int vout_display_start(void *func, bool forced, va_list ap)
Definition: display.c:282
picture_pool_NewFromFormat
picture_pool_t * picture_pool_NewFromFormat(const video_format_t *fmt, unsigned count)
Allocates pictures from the heap and creates a picture pool with them.
Definition: picture_pool.c:128
vlc_object_delete
#define vlc_object_delete(obj)
Definition: vlc_objects.h:136
VOUT_DISPLAY_CHANGE_ZOOM
@ VOUT_DISPLAY_CHANGE_ZOOM
Notifies a change of the user zoom factor.
Definition: vlc_vout_display.h:166
vout_display_priv_t::display_fmt
video_format_t display_fmt
Definition: display.c:274
VLC_OBJECT
#define VLC_OBJECT(x)
Type-safe vlc_object_t cast.
Definition: vlc_objects.h:70
video_format_t::i_chroma
vlc_fourcc_t i_chroma
picture chroma
Definition: vlc_es.h:352
vlc_codec.h
vout_display_t
Definition: vlc_vout_display.h:316
VOUT_CROP_BORDER
@ VOUT_CROP_BORDER
Definition: vout_internal.h:104
vout_internal.h
vout_display_priv_t::cfg
vout_display_cfg_t cfg
Definition: display.c:269
vout_display_cfg::window_props
struct vout_display_cfg::@276 window_props
Window properties.
vout_display_place_t::x
int x
Definition: vlc_vout_display.h:481
vout_crop::ratio
vlc_rational_t ratio
Definition: vout_internal.h:110
vout_crop::window
struct vout_crop::@121::@123 window
video_format_t::orientation
video_orientation_t orientation
picture orientation
Definition: vlc_es.h:371
VLC_VIDEO_ALIGN_BOTTOM
#define VLC_VIDEO_ALIGN_BOTTOM
Definition: vlc_vout_display.h:59
VoutFixFormatAR
void VoutFixFormatAR(video_format_t *)
Definition: display.c:534
msg_Err
#define msg_Err(p_this,...)
Definition: vlc_messages.h:102
VOUT_DISPLAY_CHANGE_SOURCE_ASPECT
@ VOUT_DISPLAY_CHANGE_SOURCE_ASPECT
Notifies a change of the sample aspect ratio.
Definition: vlc_vout_display.h:174
vlc_video_context_Release
void vlc_video_context_Release(vlc_video_context *vctx)
Definition: decoder_helpers.c:275
vlc_mouse_t::i_pressed
int i_pressed
Definition: vlc_mouse.h:51
ORIENT_BOTTOM_LEFT
@ ORIENT_BOTTOM_LEFT
Flipped vertically.
Definition: vlc_es.h:182
vout_display_cfg::sar
vlc_rational_t sar
Requested sample aspect ratio.
Definition: vlc_vout_display.h:101
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.
Definition: display.c:413
vout_display_cfg::width
unsigned width
Requested display pixel width (0 by default).
Definition: vlc_vout_display.h:99
filter_chain_Delete
void filter_chain_Delete(filter_chain_t *p_chain)
Filter chain destruction.
Definition: filter_chain.c:174
vlc_viewpoint_t::pitch
float pitch
Definition: vlc_viewpoint.h:43
vout_display_priv_t::pool
picture_pool_t * pool
Definition: display.c:279
VOUT_CROP_WINDOW
@ VOUT_CROP_WINDOW
Definition: vout_internal.h:104
vlc_modules.h
vlc_viewpoint_t::fov
float fov
Definition: vlc_viewpoint.h:45
filter_t::owner
filter_owner_t owner
Private structure for the owner of the filter.
Definition: vlc_filter.h:241