[vlc-commits] d3d9_fmt: create a simpler D3D9Device for empty output
Steve Lhomme
git at videolan.org
Mon Nov 20 19:00:04 CET 2017
vlc | branch: master | Steve Lhomme <robUx4 at videolabs.io> | Sat Nov 18 14:26:40 2017 +0100| [12c630d074f2b903c4f6adf98903dfeb3ea0918f] | committer: Jean-Baptiste Kempf
d3d9_fmt: create a simpler D3D9Device for empty output
Suitable just for decoding.
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=12c630d074f2b903c4f6adf98903dfeb3ea0918f
---
modules/video_chroma/d3d9_fmt.c | 37 +++++++++++++++++++++++++------------
1 file changed, 25 insertions(+), 12 deletions(-)
diff --git a/modules/video_chroma/d3d9_fmt.c b/modules/video_chroma/d3d9_fmt.c
index f2a5505a54..cb63a79bab 100644
--- a/modules/video_chroma/d3d9_fmt.c
+++ b/modules/video_chroma/d3d9_fmt.c
@@ -146,10 +146,13 @@ int D3D9_FillPresentationParameters(vlc_object_t *o, d3d9_handle_t *hd3d, UINT A
** buffer of the same format
*/
D3DDISPLAYMODE d3ddm;
- HRESULT hr = IDirect3D9_GetAdapterDisplayMode(hd3d->obj, AdapterToUse, &d3ddm);
- if (FAILED(hr)) {
- msg_Err(o, "Could not read adapter display mode. (hr=0x%0lx)", hr);
- return VLC_EGENERIC;
+ if (source->i_width)
+ {
+ HRESULT hr = IDirect3D9_GetAdapterDisplayMode(hd3d->obj, AdapterToUse, &d3ddm);
+ if (FAILED(hr)) {
+ msg_Err(o, "Could not read adapter display mode. (hr=0x%0lx)", hr);
+ return VLC_EGENERIC;
+ }
}
/* Set up the structure used to create the D3DDevice. */
@@ -157,17 +160,27 @@ int D3D9_FillPresentationParameters(vlc_object_t *o, d3d9_handle_t *hd3d, UINT A
ZeroMemory(d3dpp, sizeof(D3DPRESENT_PARAMETERS));
d3dpp->Flags = D3DPRESENTFLAG_VIDEO;
d3dpp->Windowed = TRUE;
- d3dpp->hDeviceWindow = hwnd;
- d3dpp->BackBufferWidth = __MAX((unsigned int)GetSystemMetrics(SM_CXVIRTUALSCREEN),
- source->i_width);
- d3dpp->BackBufferHeight = __MAX((unsigned int)GetSystemMetrics(SM_CYVIRTUALSCREEN),
- source->i_height);
- d3dpp->SwapEffect = D3DSWAPEFFECT_COPY;
d3dpp->MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp->PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
- d3dpp->BackBufferFormat = d3ddm.Format;
- d3dpp->BackBufferCount = 1;
d3dpp->EnableAutoDepthStencil = FALSE;
+ if (source->i_width)
+ {
+ d3dpp->hDeviceWindow = hwnd;
+ d3dpp->SwapEffect = D3DSWAPEFFECT_COPY;
+ d3dpp->BackBufferFormat = d3ddm.Format;
+ d3dpp->BackBufferCount = 1;
+ d3dpp->BackBufferWidth = __MAX((unsigned int)GetSystemMetrics(SM_CXVIRTUALSCREEN),
+ source->i_width);
+ d3dpp->BackBufferHeight = __MAX((unsigned int)GetSystemMetrics(SM_CYVIRTUALSCREEN),
+ source->i_height);
+ }
+ else
+ {
+ d3dpp->hDeviceWindow = NULL;
+ d3dpp->SwapEffect = D3DSWAPEFFECT_DISCARD;
+ d3dpp->BackBufferCount = 0;
+ d3dpp->BackBufferFormat = D3DFMT_X8R8G8B8; /* FIXME what to put here */
+ }
return VLC_SUCCESS;
}
More information about the vlc-commits
mailing list