Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (13)
......@@ -325,6 +325,18 @@ struct vlc_display_operations
vlc_video_context *ctx);
};
/**
* Video placement.
*
* This structure stores the result of a vout_display_PlacePicture() call.
*/
typedef struct vout_display_place_t {
int x; /*< Relative pixel offset from the display left edge */
int y; /*< Relative pixel offset from the display top edge */
unsigned width; /*< Picture pixel width */
unsigned height; /*< Picture pixel height */
} vout_display_place_t;
struct vout_display_t {
struct vlc_object_t obj;
......@@ -346,6 +358,14 @@ struct vout_display_t {
*/
const video_format_t *source;
/**
* Placement of the source picture in the display. (cannot be NULL)
*
* This cannot be modified directly and cannot be NULL.
* It reflects the current values.
*/
const vout_display_place_t *place;
/**
* Picture format.
*
......@@ -483,18 +503,6 @@ void vout_display_GetDefaultDisplaySize(unsigned *width, unsigned *height,
const video_format_t *source,
const struct vout_display_placement *);
/**
* Video placement.
*
* This structure stores the result of a vout_display_PlacePicture() call.
*/
typedef struct vout_display_place_t {
int x; /*< Relative pixel offset from the display left edge */
int y; /*< Relative pixel offset from the display top edge */
unsigned width; /*< Picture pixel width */
unsigned height; /*< Picture pixel height */
} vout_display_place_t;
/**
* Compares two \ref vout_display_place_t.
*/
......
......@@ -488,11 +488,7 @@ static void
place_dest(vout_display_t *vd)
{
vout_display_sys_t * const sys = vd->sys;
vout_display_place_t place;
vout_display_PlacePicture(&place, vd->source, &vd->cfg->display);
sys->dest_rect = place_to_mmal_rect(place);
sys->dest_rect = place_to_mmal_rect(*vd->place);
}
static int configure_display(vout_display_t *vd)
......
......@@ -745,9 +745,7 @@ shouldInheritContentsScale:(CGFloat)newScale
[displayView setFrame:[window bounds]];
[spuView setFrame:[window bounds]];
vout_display_PlacePicture(
&sys->place, sys.vd->source, &sys.vd->cfg->display
);
sys->place = *sys.vd->place;
sys.displayView = displayView;
sys.spuView = spuView;
......
......@@ -102,18 +102,15 @@ static void Display(vout_display_t *vd, picture_t *picture)
vlc_window_t *wnd = vd->cfg->window;
const video_format_t *fmt = vd->fmt;
picture_t *pic = sys->buffers[sys->front_buf];
vout_display_place_t place;
vout_display_PlacePicture(&place, vd->source, &vd->cfg->display);
struct drm_mode_set_plane sp = {
.plane_id = sys->plane_id,
.crtc_id = wnd->handle.crtc,
.fb_id = vlc_drm_dumb_get_fb_id(pic),
.crtc_x = place.x,
.crtc_y = place.y,
.crtc_w = place.width,
.crtc_h = place.height,
.crtc_x = vd->place->x,
.crtc_y = vd->place->y,
.crtc_w = vd->place->width,
.crtc_h = vd->place->height,
/* Source values as U16.16 fixed point */
.src_x = fmt->i_x_offset << 16,
.src_y = fmt->i_y_offset << 16,
......
......@@ -409,11 +409,8 @@ static int Control( vout_display_t *vd, int query )
case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT:
case VOUT_DISPLAY_CHANGE_SOURCE_PLACE:
{
vout_display_place_t place;
vout_display_PlacePicture(&place, vd->source, &vd->cfg->display);
sys->kvas.ulAspectWidth = place.width;
sys->kvas.ulAspectHeight = place.height;
sys->kvas.ulAspectWidth = vd->place->width;
sys->kvas.ulAspectHeight = vd->place->height;
kvaSetup( &sys->kvas );
return VLC_SUCCESS;
}
......
......@@ -296,8 +296,7 @@ static void PictureRender(vout_display_t *vd, picture_t *pic,
}
// Set the target crop dynamically based on the swapchain flip state
vout_display_place_t place;
vout_display_PlacePicture(&place, vd->source, &vd->cfg->display);
vout_display_place_t place = *vd->place;
if (need_vflip)
{
place.y = place.height + place.y;
......
......@@ -152,27 +152,46 @@ static void Display(vout_display_t *vd, picture_t *pic)
static int ResetPictures(vout_display_t *vd, video_format_t *fmt)
{
vout_display_place_t place;
video_format_t src;
vout_display_sys_t *sys = vd->sys;
assert(sys->viewport == NULL);
vout_display_PlacePicture(&place, vd->source, &vd->cfg->display);
video_format_ApplyRotation(&src, vd->source);
fmt->i_width = src.i_width * place.width
fmt->i_width = src.i_width * vd->place->width
/ src.i_visible_width;
fmt->i_height = src.i_height * place.height
fmt->i_height = src.i_height * vd->place->height
/ src.i_visible_height;
fmt->i_visible_width = place.width;
fmt->i_visible_height = place.height;
fmt->i_x_offset = src.i_x_offset * place.width
fmt->i_visible_width = vd->place->width;
fmt->i_visible_height = vd->place->height;
fmt->i_x_offset = src.i_x_offset * vd->place->width
/ src.i_visible_width;
fmt->i_y_offset = src.i_y_offset * place.height
fmt->i_y_offset = src.i_y_offset * vd->place->height
/ src.i_visible_height;
return VLC_SUCCESS;
}
static int UpdateViewport(vout_display_t *vd)
{
vout_display_sys_t *sys = vd->sys;
if (sys->viewport == NULL)
return VLC_EGENERIC;
video_format_t fmt;
video_format_ApplyRotation(&fmt, vd->source);
wp_viewport_set_source(sys->viewport,
wl_fixed_from_int(fmt.i_x_offset),
wl_fixed_from_int(fmt.i_y_offset),
wl_fixed_from_int(fmt.i_visible_width),
wl_fixed_from_int(fmt.i_visible_height));
wp_viewport_set_destination(sys->viewport,
vd->place->width, vd->place->height);
return VLC_SUCCESS;
}
static int Control(vout_display_t *vd, int query)
{
vout_display_sys_t *sys = vd->sys;
......@@ -183,28 +202,7 @@ static int Control(vout_display_t *vd, int query)
case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT:
case VOUT_DISPLAY_CHANGE_SOURCE_CROP:
case VOUT_DISPLAY_CHANGE_SOURCE_PLACE:
{
if (sys->viewport != NULL)
{
video_format_t fmt;
vout_display_place_t place;
video_format_ApplyRotation(&fmt, vd->source);
vout_display_PlacePicture(&place, vd->source,
&vd->cfg->display);
wp_viewport_set_source(sys->viewport,
wl_fixed_from_int(fmt.i_x_offset),
wl_fixed_from_int(fmt.i_y_offset),
wl_fixed_from_int(fmt.i_visible_width),
wl_fixed_from_int(fmt.i_visible_height));
wp_viewport_set_destination(sys->viewport,
place.width, place.height);
}
else
return VLC_EGENERIC;
break;
}
return UpdateViewport(vd);
default:
msg_Err(vd, "unknown request %d", query);
return VLC_EGENERIC;
......
......@@ -245,9 +245,8 @@ static void Prepare(vout_display_t *vd, picture_t *picture,
return;
if (sys->area.place_changed)
{
vout_display_place_t place;
vout_display_place_t place = *vd->place;
vout_display_PlacePicture(&place, vd->source, &vd->cfg->display);
/* Reverse vertical alignment as the GL tex are Y inverted */
place.y = vd->cfg->display.height - (place.y + place.height);
......
......@@ -75,7 +75,6 @@ typedef struct vout_display_sys_t {
xcb_window_t root;
char *filter;
vout_display_place_t place;
int32_t src_x;
int32_t src_y;
vlc_fourcc_t spu_chromas[2];
......@@ -220,6 +219,7 @@ static void Prepare(vout_display_t *vd, picture_t *pic,
vlc_tick_t date)
{
const video_format_t *fmt = vd->source;
const vout_display_place_t *place = vd->place;
vout_display_sys_t *sys = vd->sys;
xcb_connection_t *conn = sys->conn;
......@@ -259,8 +259,8 @@ static void Prepare(vout_display_t *vd, picture_t *pic,
xcb_render_composite(conn, XCB_RENDER_PICT_OP_SRC,
sys->picture.crop, XCB_RENDER_PICTURE_NONE,
sys->picture.scale, sys->src_x, sys->src_y, 0, 0,
sys->place.x, sys->place.y,
sys->place.width, sys->place.height);
place->x, place->y,
place->width, place->height);
if (offset != (size_t)-1)
PictureDetach(vd);
......@@ -318,8 +318,7 @@ static void CreateBuffers(vout_display_t *vd)
xcb_render_create_picture(conn, sys->picture.scale, sys->drawable.scale,
sys->format.argb, 0, NULL);
vout_display_place_t *place = &sys->place;
vout_display_PlacePicture(place, vd->source, &vd->cfg->display);
const vout_display_place_t *place = vd->place;
/* Homogeneous coordinates transform from destination(place)
* to source(fmt) */
......@@ -388,6 +387,23 @@ static void DeleteBuffers(vout_display_t *vd)
xcb_free_pixmap(conn, sys->drawable.crop);
}
static int UpdateOutput(vout_display_t *vd)
{
vout_display_sys_t *sys = vd->sys;
/* Update the window size */
uint32_t mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT;
const uint32_t values[] = {
vd->cfg->display.width, vd->cfg->display.height
};
xcb_configure_window(sys->conn, sys->drawable.dest, mask, values);
DeleteBuffers(vd);
CreateBuffers(vd);
xcb_flush(sys->conn);
return VLC_SUCCESS;
}
static int Control(vout_display_t *vd, int query)
{
vout_display_sys_t *sys = vd->sys;
......@@ -397,19 +413,7 @@ static int Control(vout_display_t *vd, int query)
case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT:
case VOUT_DISPLAY_CHANGE_SOURCE_CROP:
case VOUT_DISPLAY_CHANGE_SOURCE_PLACE:
{
/* Update the window size */
uint32_t mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT;
const uint32_t values[] = {
vd->cfg->display.width, vd->cfg->display.height
};
xcb_configure_window(sys->conn, sys->drawable.dest, mask, values);
DeleteBuffers(vd);
CreateBuffers(vd);
xcb_flush(sys->conn);
return VLC_SUCCESS;
}
return UpdateOutput(vd);
default:
msg_Err(vd, "Unknown request in XCB RENDER display");
......
......@@ -48,7 +48,6 @@ typedef struct vout_display_sys_t
bool attached;
uint8_t depth; /* useful bits per pixel */
video_format_t fmt;
vout_display_place_t place;
} vout_display_sys_t;
static void Prepare(vout_display_t *vd, picture_t *pic,
......@@ -99,32 +98,32 @@ static void Display (vout_display_t *vd, picture_t *pic)
xcb_rectangle_t rectv[4], *rect;
unsigned int rectc = 0;
if (sys->place.x > 0) {
if (vd->place->x > 0) {
rect = &rectv[rectc++];
rect->x = 0;
rect->y = 0;
rect->width = sys->place.x;
rect->width = vd->place->x;
rect->height = vd->cfg->display.height;
}
if (sys->place.x + sys->place.width < vd->cfg->display.width) {
if (vd->place->x + vd->place->width < vd->cfg->display.width) {
rect = &rectv[rectc++];
rect->x = sys->place.x + sys->place.width;
rect->x = vd->place->x + vd->place->width;
rect->y = 0;
rect->width = vd->cfg->display.width - rect->x;
rect->height = vd->cfg->display.height;
}
if (sys->place.y > 0) {
if (vd->place->y > 0) {
rect = &rectv[rectc++];
rect->x = sys->place.x;
rect->x = vd->place->x;
rect->y = 0;
rect->width = sys->place.width;
rect->height = sys->place.y;
rect->width = vd->place->width;
rect->height = vd->place->y;
}
if (sys->place.y + sys->place.height < vd->cfg->display.height) {
if (vd->place->y + vd->place->height < vd->cfg->display.height) {
rect = &rectv[rectc++];
rect->x = sys->place.x;
rect->y = sys->place.y + sys->place.height;
rect->width = sys->place.width;
rect->x = vd->place->x;
rect->y = vd->place->y + vd->place->height;
rect->width = vd->place->width;
rect->height = vd->cfg->display.height - rect->y;
}
......@@ -139,7 +138,7 @@ static void Display (vout_display_t *vd, picture_t *pic)
/* y */ sys->fmt.i_y_offset,
/* width */ sys->fmt.i_visible_width,
/* height */ sys->fmt.i_visible_height,
sys->place.x, sys->place.y, sys->depth,
vd->place->x, vd->place->y, sys->depth,
XCB_IMAGE_FORMAT_Z_PIXMAP, 0,
segment, buf->offset);
else {
......@@ -155,7 +154,7 @@ static void Display (vout_display_t *vd, picture_t *pic)
lines--;
xcb_put_image(conn, XCB_IMAGE_FORMAT_Z_PIXMAP, sys->window,
sys->gc, pic->p->i_visible_pitch, 1,
sys->place.x, sys->place.y + sys->place.height - 1,
vd->place->x, vd->place->y + vd->place->height - 1,
0, sys->depth, pic->p->i_visible_pitch,
pic->p->p_pixels + offset + lines * pic->p->i_pitch);
}
......@@ -163,7 +162,7 @@ static void Display (vout_display_t *vd, picture_t *pic)
ck = xcb_put_image_checked(conn, XCB_IMAGE_FORMAT_Z_PIXMAP,
sys->window, sys->gc,
pic->p->i_pitch / pic->p->i_pixel_pitch,
lines, sys->place.x, sys->place.y,
lines, vd->place->x, vd->place->y,
0, sys->depth, pic->p->i_pitch * lines,
pic->p->p_pixels + offset);
......@@ -193,16 +192,14 @@ static int ResetPictures(vout_display_t *vd, video_format_t *fmt)
vout_display_sys_t *sys = vd->sys;
video_format_t src;
vout_display_PlacePicture(&sys->place, vd->source, &vd->cfg->display);
video_format_ApplyRotation(&src, vd->source);
sys->fmt.i_width = src.i_width * sys->place.width / src.i_visible_width;
sys->fmt.i_height = src.i_height * sys->place.height / src.i_visible_height;
sys->fmt.i_width = src.i_width * vd->place->width / src.i_visible_width;
sys->fmt.i_height = src.i_height * vd->place->height / src.i_visible_height;
sys->fmt.i_visible_width = sys->place.width;
sys->fmt.i_visible_height = sys->place.height;
sys->fmt.i_x_offset = src.i_x_offset * sys->place.width / src.i_visible_width;
sys->fmt.i_y_offset = src.i_y_offset * sys->place.height / src.i_visible_height;
sys->fmt.i_visible_width = vd->place->width;
sys->fmt.i_visible_height = vd->place->height;
sys->fmt.i_x_offset = src.i_x_offset * vd->place->width / src.i_visible_width;
sys->fmt.i_y_offset = src.i_y_offset * vd->place->height / src.i_visible_height;
*fmt = sys->fmt;
return VLC_SUCCESS;
......@@ -226,12 +223,8 @@ static int Control(vout_display_t *vd, int query)
case VOUT_DISPLAY_CHANGE_SOURCE_CROP:
case VOUT_DISPLAY_CHANGE_SOURCE_PLACE:
{
vout_display_place_t place;
vout_display_PlacePicture(&place, vd->source, &vd->cfg->display);
if (place.width != sys->fmt.i_visible_width
|| place.height != sys->fmt.i_visible_height)
if (vd->place->width != sys->fmt.i_visible_width
|| vd->place->height != sys->fmt.i_visible_height)
return VLC_EGENERIC;
return VLC_SUCCESS;
......@@ -376,9 +369,7 @@ static int Open (vout_display_t *vd,
/* XCB_CW_COLORMAP */
cmap,
};
vout_display_place_t *place = &sys->place;
vout_display_PlacePicture(place, vd->source, &vd->cfg->display);
sys->window = xcb_generate_id (conn);
sys->gc = xcb_generate_id (conn);
xcb_create_window(conn, sys->depth, sys->window,
......
......@@ -810,6 +810,7 @@ vout_display_t *vout_display_New(vlc_object_t *parent,
vd->owner = *owner;
PlaceVideoInDisplay(osys);
vd->place = &osys->src_place;
if (module == NULL || module[0] == '\0')
module = "any";
......
......@@ -1210,12 +1210,10 @@ static int PrerenderPicture(vout_thread_sys_t *sys, picture_t *filtered,
// otherwise it's done in the display chroma
const bool blending_before_converter = vd->source->orientation == ORIENT_NORMAL;
vout_display_place_t place;
const vout_display_place_t *video_place = NULL; // default to fit the video
video_format_t fmt_spu;
if (vd_does_blending) {
video_place = &place;
vout_display_PlacePicture(&place, vd->source, &vd->cfg->display);
video_place = vd->place;
fmt_spu = *vd->source;
fmt_spu.i_sar_num = vd->cfg->display.sar.num;
......