[FFmpeg-devel] [PATCH 09/12] swscale/internal: constify SwsFunc

Martin Storsjö martin at martin.st
Tue Oct 8 09:10:05 EEST 2024


On Tue, 8 Oct 2024, Niklas Haas wrote:

>> Sorry for not checking this earlier, but PowerPC 32- and 64-bit builds
>> with AltiVec enabled now fail with:
>> 
>> src/libswscale/ppc/yuv2yuv_altivec.c: In function ‘ff_get_unscaled_swscale_ppc’:
>> src/libswscale/ppc/yuv2yuv_altivec.c:199:33: error: assignment to
>> ‘SwsFunc’ {aka ‘int (*)(SwsContext *, const unsigned char * const*,
>> const int *, int,  int,  unsigned char * const*, const int *)’} from
>> incompatible pointer type ‘int (*)(SwsContext *, const uint8_t **, int
>> *, int,  int,  uint8_t **, int *)’ {aka ‘int (*)(SwsContext *, const
>> unsigned char **, int *, int,  int,  unsigned char **, int *)’}
>> [-Wincompatible-pointer-types]
>>   199 |             c->convert_unscaled = yv12toyuy2_unscaled_altivec;
>>       |                                 ^
>> src/libswscale/ppc/yuv2yuv_altivec.c:201:33: error: assignment to
>> ‘SwsFunc’ {aka ‘int (*)(SwsContext *, const unsigned char * const*,
>> const int *, int,  int,  unsigned char * const*, const int *)’} from
>> incompatible pointer type ‘int (*)(SwsContext *, const uint8_t **, int
>> *, int,  int,  uint8_t **, int *)’ {aka ‘int (*)(SwsContext *, const
>> unsigned char **, int *, int,  int,  unsigned char **, int *)’}
>> [-Wincompatible-pointer-types]
>>   201 |             c->convert_unscaled = yv12touyvy_unscaled_altivec;
>>       |                                 ^
>> make: *** [src/ffbuild/common.mak:81: libswscale/ppc/yuv2yuv_altivec.o] Error 1
>
> My bad for missing this one. Is there a public way I can test build on different
> platforms before submitting series? I would have thought that posting it on the
> ML is enough to trigger FATE runs on all platforms, but I didn't get any email
> reply to the series.

No, there's no such infrastructure for running FATE across the various 
(individually driven) instances that voluntarily run tests more or less 
frequently, unfortunately. There is some minimal testing hooked up via 
patchwork though.

In this case, also, the issue is that older compilers treat this issue as 
a warning, while newer compilers are more strict and make it an error - 
see 
http://fate.ffmpeg.org/log.cgi?log=compile&slot=aarch64-linux-clang-10&time=20241008042010 
vs 
http://fate.ffmpeg.org/log.cgi?time=20241008032612&log=compile&slot=aarch64-linux-clang-trunk

In my testing, I ran into similar issues on both aarch64 and i686, while 
x86_64 and armv7 seem to be fine. I'll push fixes for those architectures.

// Martin


More information about the ffmpeg-devel mailing list