#11004: libavutil/hwcontext_qsv.c does not compile with GCC 14 (MinGW)
--------------------------------------+----------------------------------
             Reporter:  Marcos Mello  |                     Type:  defect
               Status:  new           |                 Priority:  normal
            Component:  avutil        |                  Version:  7.0
             Keywords:                |               Blocked By:
             Blocking:                |  Reproduced by developer:  0
Analyzed by developer:  0             |
--------------------------------------+----------------------------------
 Summary of the bug:

 `-Wincompatible-pointer-types` now errors out on GCC 14:

 https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types

 How to reproduce:

 {{{
 $ x86_64-w64-mingw32-gcc --version
 x86_64-w64-mingw32-gcc (GCC) 14.0.1 20240127 (Fedora MinGW 14.0.1-1.fc40)
 Copyright (C) 2024 Free Software Foundation, Inc.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
 PURPOSE.

 $ PKG_CONFIG_PATH="$(pwd)/3rd-party/lib/pkgconfig"
 PKG_CONFIG_SYSROOT_DIR="$(pwd)" ./configure --target-os=mingw32
 --arch=x86_64 --cross-prefix=x86_64-w64-mingw32- --disable-everything
 --enable-libvpl --enable-filter=vpp_qsv

 $ make
 [...]
 CC      libavutil/hwcontext_qsv.o
 libavutil/hwcontext_qsv.c: In function 'qsv_d3d11_update_config':
 libavutil/hwcontext_qsv.c:696:70: warning: format '%d' expects argument of
 type 'int', but argument 4 has type 'HRESULT' {aka 'long int'} [-Wformat=]
   696 |             av_log(ctx, AV_LOG_ERROR, "Error
 IDXGIDevice_GetAdapter %d\n", hr);
       |
 ~^     ~~
       |
 |     |
       |
 int   HRESULT {aka long int}
       |
 %ld
 libavutil/hwcontext_qsv.c:703:68: warning: format '%d' expects argument of
 type 'int', but argument 4 has type 'HRESULT' {aka 'long int'} [-Wformat=]
   703 |             av_log(ctx, AV_LOG_ERROR, "Error IDXGIAdapter_GetDesc
 %d\n", hr);
       |
 ~^     ~~
       |
 |     |
       |
 int   HRESULT {aka long int}
       |
 %ld
 libavutil/hwcontext_qsv.c:707:71: warning: format '%d' expects argument of
 type 'int', but argument 4 has type 'HRESULT' {aka 'long int'} [-Wformat=]
   707 |         av_log(ctx, AV_LOG_ERROR, "Error
 ID3D11Device_QueryInterface %d\n", hr);
       |
 ~^     ~~
       |
 |     |
       |
 int   HRESULT {aka long int}
       |
 %ld
 libavutil/hwcontext_qsv.c: In function 'qsv_d3d9_update_config':
 libavutil/hwcontext_qsv.c:766:60: warning: format '%d' expects argument of
 type 'int', but argument 4 has type 'HRESULT' {aka 'long int'} [-Wformat=]
   766 |         av_log(ctx, AV_LOG_ERROR, "Error OpenDeviceHandle %d\n",
 hr);
       |                                                           ~^
 ~~
       |                                                            |     |
       |                                                            int
 HRESULT {aka long int}
       |                                                           %ld
 In file included from libavutil/hwcontext_dxva2.h:34,
                  from libavutil/hwcontext_qsv.c:39:
 libavutil/hwcontext_qsv.c:770:68: error: passing argument 3 of
 'devmgr->lpVtbl->LockDevice' from incompatible pointer type
 [-Wincompatible-pointer-types]
   770 |     hr = IDirect3DDeviceManager9_LockDevice(devmgr, device_handle,
 &device, TRUE);
       |
 ^~~~~~~
       |
 |
       |
 IDirect3DDevice9Ex **
 libavutil/hwcontext_qsv.c:770:68: note: expected 'IDirect3DDevice9 **' but
 argument is of type 'IDirect3DDevice9Ex **'
 libavutil/hwcontext_qsv.c:772:54: warning: format '%d' expects argument of
 type 'int', but argument 4 has type 'HRESULT' {aka 'long int'} [-Wformat=]
   772 |         av_log(ctx, AV_LOG_ERROR, "Error LockDevice %d\n", hr);
       |                                                     ~^     ~~
       |                                                      |     |
       |                                                      int   HRESULT
 {aka long int}
       |                                                     %ld
 libavutil/hwcontext_qsv.c:779:82: warning: format '%d' expects argument of
 type 'int', but argument 4 has type 'HRESULT' {aka 'long int'} [-Wformat=]
   779 |         av_log(ctx, AV_LOG_ERROR, "Error
 IDirect3DDevice9_GetCreationParameters %d\n", hr);
       |
 ~^     ~~
       |
 |     |
       |
 int   HRESULT {aka long int}
       |
 %ld
 In file included from libavutil/hwcontext_dxva2.h:33:
 libavutil/hwcontext_qsv.c:784:49: error: passing argument 2 of
 'device->lpVtbl->GetDirect3D' from incompatible pointer type
 [-Wincompatible-pointer-types]
   784 |     hr = IDirect3DDevice9Ex_GetDirect3D(device, &d3d9ex);
       |                                                 ^~~~~~~
       |                                                 |
       |                                                 IDirect3D9Ex **
 libavutil/hwcontext_qsv.c:784:49: note: expected 'IDirect3D9 **' but
 argument is of type 'IDirect3D9Ex **'
 libavutil/hwcontext_qsv.c:786:77: warning: format '%d' expects argument of
 type 'int', but argument 4 has type 'HRESULT' {aka 'long int'} [-Wformat=]
   786 |         av_log(ctx, AV_LOG_ERROR, "Error
 IDirect3DDevice9Ex_GetAdapterLUID %d\n", hr);
       |
 ~^     ~~
       |
 |     |
       |
 int   HRESULT {aka long int}
       |
 %ld
 libavutil/hwcontext_qsv.c:793:77: warning: format '%d' expects argument of
 type 'int', but argument 4 has type 'HRESULT' {aka 'long int'} [-Wformat=]
   793 |         av_log(ctx, AV_LOG_ERROR, "Error
 IDirect3DDevice9Ex_GetAdapterLUID %d\n", hr);
       |
 ~^     ~~
       |
 |     |
       |
 int   HRESULT {aka long int}
       |
 %ld
 libavutil/hwcontext_qsv.c: In function 'qsv_frames_derive_from':
 libavutil/hwcontext_qsv.c:1372:13: warning: ISO C90 forbids mixed
 declarations and code [-Wdeclaration-after-statement]
  1372 |             AVD3D11VAFramesContext *dst_hwctx = dst_ctx->hwctx;
       |             ^~~~~~~~~~~~~~~~~~~~~~
 make: *** [ffbuild/common.mak:81: libavutil/hwcontext_qsv.o] Error 1
 }}}
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11004>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac

To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to