vlc | branch: master | Steve Lhomme <[email protected]> | 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 <[email protected]> > 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; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
