vlc | branch: master | Steve Lhomme <[email protected]> | Thu Mar 12 08:22:35 2020 +0100| [15db7dfc6c6115868dd5223805ec4e7d24f36819] | committer: Steve Lhomme
direct3d9: add more logs about possible format selection issues > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=15db7dfc6c6115868dd5223805ec4e7d24f36819 --- modules/video_output/win32/direct3d9.c | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/modules/video_output/win32/direct3d9.c b/modules/video_output/win32/direct3d9.c index 63ef60b311..a66c442375 100644 --- a/modules/video_output/win32/direct3d9.c +++ b/modules/video_output/win32/direct3d9.c @@ -366,6 +366,15 @@ static int Direct3D9ImportPicture(vout_display_t *vd, inputStream.Enable = TRUE; inputStream.pInputSurface = source; hr = IDXVAHD_VideoProcessor_VideoProcessBltHD( sys->processor.proc, destination, 0, 1, &inputStream ); + if (FAILED(hr)) { + D3DSURFACE_DESC srcDesc, dstDesc; + IDirect3DSurface9_GetDesc(source, &srcDesc); + IDirect3DSurface9_GetDesc(destination, &dstDesc); + + msg_Dbg(vd, "Failed VideoProcessBltHD src:%4.4s (%d) dst:%4.4s (%d) (hr=0x%lX)", + (const char*)&srcDesc.Format, srcDesc.Format, + (const char*)&dstDesc.Format, dstDesc.Format, hr); + } } else { @@ -400,13 +409,14 @@ static int Direct3D9ImportPicture(vout_display_t *vd, hr = IDirect3DDevice9_StretchRect(sys->d3d9_device->d3ddev.dev, source, &source_visible_rect, destination, &texture_visible_rect, D3DTEXF_NONE); + if (FAILED(hr)) { + msg_Dbg(vd, "Failed StretchRect: source 0x%p. (hr=0x%lX)", + (LPVOID)source, hr); + } } IDirect3DSurface9_Release(destination); - if (FAILED(hr)) { - msg_Dbg(vd, "Failed StretchRect: source 0x%p 0x%lX", - (LPVOID)source, hr); + if (FAILED(hr)) return VLC_EGENERIC; - } /* */ region->texture = sys->sceneTexture; @@ -1480,8 +1490,11 @@ static int InitRangeProcessor(vout_display_t *vd, const d3d9_format_t *d3dfmt, HRESULT hr; sys->processor.dll = LoadLibrary(TEXT("DXVA2.DLL")); - if (!sys->processor.dll) + if (unlikely(!sys->processor.dll)) + { + msg_Err(vd, "Failed to load DXVA2.DLL"); return VLC_EGENERIC; + } D3DFORMAT *formatsList = NULL; DXVAHD_VPCAPS *capsList = NULL; @@ -1526,7 +1539,10 @@ static int InitRangeProcessor(vout_display_t *vd, const d3d9_format_t *d3dfmt, formatsList = malloc(devcaps.InputFormatCount * sizeof(*formatsList)); if (unlikely(formatsList == NULL)) + { + msg_Dbg(vd, "Failed to allocate %u input formats", devcaps.InputFormatCount); goto error; + } hr = IDXVAHD_Device_GetVideoProcessorInputFormats( hd_device, devcaps.InputFormatCount, formatsList); UINT i; @@ -1544,7 +1560,10 @@ static int InitRangeProcessor(vout_display_t *vd, const d3d9_format_t *d3dfmt, free(formatsList); formatsList = malloc(devcaps.OutputFormatCount * sizeof(*formatsList)); if (unlikely(formatsList == NULL)) + { + msg_Dbg(vd, "Failed to allocate %u output formats", devcaps.OutputFormatCount); goto error; + } hr = IDXVAHD_Device_GetVideoProcessorOutputFormats( hd_device, devcaps.OutputFormatCount, formatsList); for (i=0; i<devcaps.OutputFormatCount; i++) @@ -1560,7 +1579,10 @@ static int InitRangeProcessor(vout_display_t *vd, const d3d9_format_t *d3dfmt, capsList = malloc(devcaps.VideoProcessorCount * sizeof(*capsList)); if (unlikely(capsList == NULL)) + { + msg_Dbg(vd, "Failed to allocate %u video processors", devcaps.VideoProcessorCount); goto error; + } hr = IDXVAHD_Device_GetVideoProcessorCaps( hd_device, devcaps.VideoProcessorCount, capsList); if (FAILED(hr)) { @@ -1625,6 +1647,7 @@ static int Direct3D9Open(vout_display_t *vd, video_format_t *fmt, vlc_video_cont sys->d3d9_device->d3ddev.identifier.VendorId == GPU_MANUFACTURER_NVIDIA) { // NVIDIA bug, YUV to RGB internal conversion in StretchRect always converts from limited to limited range + msg_Dbg(vd, "Try to init DXVA-HD processor from %s to %s", d3dfmt->name, dst_format->name); InitRangeProcessor( vd, d3dfmt, &render_out ); } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
