On 29.07.24 23:41, Jeremy Bícha wrote:
Source: ffmpeg
Version: 7:7.0.1-4
Severity: serious
Tags: ftbfs sid trixie
User: debian-...@lists.debian.org
Usertags: ftbfs-gcc-14
User: debian-s...@lists.debian.org
Usertags: s390x
X-Debbugs-CC: locutusofb...@debian.org, debian-s...@lists.debian.org

ffmpeg fails to build on s390x (and several other big endian
architectures) after the switch to gcc-14. This is blocking the
completion of the ongoing ffmpeg 7 transition.

https://buildd.debian.org/status/package.php?p=ffmpeg

Build log excerpt
=============
src/libavcodec/pcm-bluray.c: In function ‘pcm_bluray_decode_frame’:
src/libavcodec/pcm-bluray.c:170:45: error: passing argument 2 of
‘bytestream2_get_buffer’ from incompatible pointer type
[-Wincompatible-pointer-types]
   170 |                 bytestream2_get_buffer(&gb, dst16, buf_size);
       |                                             ^~~~~
       |                                             |
       |                                             int16_t * {aka short int *}
In file included from src/libavcodec/pcm-bluray.c:29:
src/libavcodec/bytestream.h:268:70: note: expected ‘uint8_t *’ {aka
‘unsigned char *’} but argument is of type ‘int16_t *’ {aka ‘short int
*’}
   268 |
uint8_t *dst,
       |                                                             
~~~~~~~~~^~~
src/libavcodec/pcm-bluray.c:190:49: error: passing argument 2 of
‘bytestream2_get_buffer’ from incompatible pointer type
[-Wincompatible-pointer-types]
   190 |                     bytestream2_get_buffer(&gb, dst16,
avctx->ch_layout.nb_channels * 2);
       |                                                 ^~~~~
       |                                                 |
       |                                                 int16_t * {aka
short int *}
src/libavcodec/bytestream.h:268:70: note: expected ‘uint8_t *’ {aka
‘unsigned char *’} but argument is of type ‘int16_t *’ {aka ‘short int
*’}
   268 |
uint8_t *dst,
       |                                                             
~~~~~~~~~^~~


TBH the conditional AV_HAVE_BIGENDIAN code just looks wrong. Optimally get_be* would DTRT on big-endian?

Kind regards
Philipp Kern

Reply via email to