#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".