[FFmpeg-devel] [PATCH] Prevents crash from CreateDeviceEx and proper fallback to classic d3d9.

wm4 nfxjfg at googlemail.com
Thu Jan 4 00:18:19 EET 2018


On Wed,  3 Jan 2018 13:59:34 -0800
Humberto Ribeiro <mont3z.claro5 at gmail.com> wrote:

> ---
>  libavutil/hwcontext_dxva2.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/libavutil/hwcontext_dxva2.c b/libavutil/hwcontext_dxva2.c
> index 2ddd4be..44ebdbc 100644
> --- a/libavutil/hwcontext_dxva2.c
> +++ b/libavutil/hwcontext_dxva2.c
> @@ -485,7 +485,11 @@ static int dxva2_device_create9ex(AVHWDeviceContext *ctx, UINT adapter)
>      if (FAILED(hr))
>          return AVERROR_UNKNOWN;
>  
> -    IDirect3D9Ex_GetAdapterDisplayModeEx(d3d9ex, adapter, &modeex, NULL);
> +    hr = IDirect3D9Ex_GetAdapterDisplayModeEx(d3d9ex, adapter, &modeex, NULL);
> +    if (FAILED(hr)) {
> +        IDirect3D9Ex_Release(d3d9ex);
> +        return AVERROR_UNKNOWN;
> +    }
>  
>      d3dpp.BackBufferFormat = modeex.Format;
>  

LGTM, but when does it happen? Why would creation of IDirect3D9Ex
succeed, but this method fail? The strangest thing being that
CreateDeviceEx apparently fails, even though modeex is
zero-initialized and doesn't contain any pointers.

Anyway, please format the commit message according to project
standards, and add anything you might know about this to the commit
message.


More information about the ffmpeg-devel mailing list