[vlc-commits] direct3d11: use the full window size for the rendering area
Steve Lhomme
git at videolan.org
Tue Apr 30 11:13:44 CEST 2019
vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Wed Apr 17 08:22:16 2019 +0200| [f9ae0e5703282523bca5c9101ec9e07cb3deff61] | committer: Steve Lhomme
direct3d11: use the full window size for the rendering area
We cannot rely on the output always having the exact aspect ratio of the video.
So we draw on the whole window area and place the video accordingly.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f9ae0e5703282523bca5c9101ec9e07cb3deff61
---
modules/video_output/win32/direct3d11.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index 0ad8942f3d..848593eb52 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -183,8 +183,8 @@ static HRESULT UpdateBackBuffer(vout_display_t *vd)
{
vout_display_sys_t *sys = vd->sys;
UINT i_width, i_height;
- i_width = sys->area.place.width;
- i_height = sys->area.place.height;
+ i_width = sys->area.vdcfg.display.width;
+ i_height = sys->area.vdcfg.display.height;
if (!sys->resizeCb(sys->outside_opaque, i_width, i_height))
return E_FAIL;
@@ -476,7 +476,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
if (d3d11_ctx == NULL)
{
if (CommonInit(VLC_OBJECT(vd), &sys->area, &sys->sys,
- vd->source.projection_mode != PROJECTION_MODE_RECTANGULAR, false))
+ vd->source.projection_mode != PROJECTION_MODE_RECTANGULAR, true))
goto error;
}
#else /* !VLC_WINSTORE_APP */
@@ -1357,10 +1357,10 @@ static void UpdatePicQuadPosition(vout_display_t *vd)
vout_display_sys_t *sys = vd->sys;
RECT rect_dst = {
- .left = 0,
- .right = sys->area.place.width,
- .top = 0,
- .bottom = sys->area.place.height
+ .left = sys->area.place.x,
+ .right = sys->area.place.x + sys->area.place.width,
+ .top = sys->area.place.y,
+ .bottom = sys->area.place.y + sys->area.place.height
};
D3D11_UpdateViewport( &sys->picQuad, &rect_dst, sys->display.pixelFormat );
@@ -1821,6 +1821,12 @@ static int Direct3D11MapSubpicture(vout_display_t *vd, int *subpicture_region_co
spuViewport.bottom = (FLOAT) spuViewport.bottom * r->zoom_v.num / r->zoom_v.den;
}
+ /* move the SPU inside the video area */
+ spuViewport.left += sys->area.place.x;
+ spuViewport.right += sys->area.place.x;
+ spuViewport.top += sys->area.place.y;
+ spuViewport.bottom += sys->area.place.y;
+
D3D11_UpdateViewport( quad, &spuViewport, sys->display.pixelFormat );
D3D11_UpdateQuadOpacity(vd, &sys->d3d_dev, quad, r->i_alpha / 255.0f );
More information about the vlc-commits
mailing list