Bug#1072413: freerdp2: FTBFS with ffmpeg 7.0: dsp_ffmpeg.c:239:18: error: implicit declaration of function ‘av_get_default_channel_layout’ [-Werror=implicit-function-declaration]
Source: freerdp2
Version: 2.11.5+dfsg1-1
Severity: important
Tags: trixie sid ftbfs
Usertags: ffmpeg-7.0
Hi,
during a rebuild of the reverse dependencies for the transition to
ffmpeg 7.0, your package failed to build
Relevant part (hopefully):
> cd /<<PKGBUILDDIR>>/obj-aarch64-linux-gnu/libfreerdp && /usr/bin/cc -DCMAKE_BUILD_TYPE=RelWithDebInfo -DEXT_PATH=\"/usr/lib/aarch64-linux-gnu/freerdp2/extensions\" -DFREERDP_EXPORTS -DHAVE_CONFIG_H -DSWSCALE_FOUND=1 -DWINPR_EXPORTS -DWITH_OPENSSL -DWITH_WAYLAND -DWITH_X11 -DWITH_XKBFILE -D_FILE_OFFSET_BITS=64 -Dfreerdp_EXPORTS -I/<<PKGBUILDDIR>>/obj-aarch64-linux-gnu -I/<<PKGBUILDDIR>>/obj-aarch64-linux-gnu/include -I/<<PKGBUILDDIR>>/include -I/<<PKGBUILDDIR>>/winpr/include -I/<<PKGBUILDDIR>>/obj-aarch64-linux-gnu/winpr/include -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Wno-unused-result -Wno-unused-but-set-variable -Wno-deprecated-declarations -fvisibility=hidden -Wimplicit-function-declaration -Wredundant-decls -g -fno-omit-frame-pointer -DWINPR_DLL -O2 -g -DNDEBUG -Wno-builtin-macro-redefined -D__FILE__='"obj-aarch64-linux-gnu/libfreerdp/CMakeFiles/freerdp.dir/compiler_depend.ts"' -fPIC -MD -MT libfreerdp/CMakeFiles/freerdp.dir/codec/h264_ffmpeg.c.o -MF CMakeFiles/freerdp.dir/codec/h264_ffmpeg.c.o.d -o CMakeFiles/freerdp.dir/codec/h264_ffmpeg.c.o -c /<<PKGBUILDDIR>>/libfreerdp/codec/h264_ffmpeg.c
> /<<PKGBUILDDIR>>/libfreerdp/codec/h264_ffmpeg.c: In function ‘libavcodec_create_encoder’:
> /<<PKGBUILDDIR>>/libfreerdp/codec/h264_ffmpeg.c:140:27: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
> 140 | sys->codecEncoder = avcodec_find_encoder(AV_CODEC_ID_H264);
> | ^
> /<<PKGBUILDDIR>>/libfreerdp/codec/h264_ffmpeg.c: In function ‘libavcodec_init’:
> /<<PKGBUILDDIR>>/libfreerdp/codec/h264_ffmpeg.c:516:35: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
> 516 | sys->codecDecoder = avcodec_find_decoder(AV_CODEC_ID_H264);
> | ^
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c: In function ‘ffmpeg_open_context’:
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:239:18: error: implicit declaration of function ‘av_get_default_channel_layout’ [-Werror=implicit-function-declaration]
> 239 | layout = av_get_default_channel_layout(format->nChannels);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:246:32: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
> 246 | context->codec = avcodec_find_encoder(context->id);
> | ^
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:248:32: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
> 248 | context->codec = avcodec_find_decoder(context->id);
> | ^
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:273:25: error: ‘AVCodecContext’ has no member named ‘channels’
> 273 | context->context->channels = format->nChannels;
> | ^~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:274:27: error: ‘AVCodecContext’ has no member named ‘channel_layout’; did you mean ‘ch_layout’?
> 274 | context->context->channel_layout = layout;
> | ^~~~~~~~~~~~~~
> | ch_layout
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:317:25: error: ‘AVFrame’ has no member named ‘channel_layout’; did you mean ‘ch_layout’?
> 317 | context->frame->channel_layout = layout;
> | ^~~~~~~~~~~~~~
> | ch_layout
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:318:23: error: ‘AVFrame’ has no member named ‘channels’
> 318 | context->frame->channels = format->nChannels;
> | ^~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:333:29: error: ‘AVFrame’ has no member named ‘channel_layout’; did you mean ‘ch_layout’?
> 333 | context->resampled->channel_layout = layout;
> | ^~~~~~~~~~~~~~
> | ch_layout
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:334:27: error: ‘AVFrame’ has no member named ‘channels’
> 334 | context->resampled->channels = format->nChannels;
> | ^~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:338:36: error: ‘AVFrame’ has no member named ‘channel_layout’; did you mean ‘ch_layout’?
> 338 | context->buffered->channel_layout = context->resampled->channel_layout;
> | ^~~~~~~~~~~~~~
> | ch_layout
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:338:73: error: ‘AVFrame’ has no member named ‘channel_layout’; did you mean ‘ch_layout’?
> 338 | context->buffered->channel_layout = context->resampled->channel_layout;
> | ^~~~~~~~~~~~~~
> | ch_layout
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:339:34: error: ‘AVFrame’ has no member named ‘channels’
> 339 | context->buffered->channels = context->resampled->channels;
> | ^~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:339:65: error: ‘AVFrame’ has no member named ‘channels’
> 339 | context->buffered->channels = context->resampled->channels;
> | ^~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c: In function ‘ffmpeg_encode_frame’:
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:424:39: error: ‘AVFrame’ has no member named ‘channels’
> 424 | for (int y = 0; y < in->channels; y++)
> | ^~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:426:39: warning: initialization of ‘float *’ from incompatible pointer type ‘uint8_t *’ {aka ‘unsigned char *’} [-Wincompatible-pointer-types]
> 426 | float* data = pp[y];
> | ^~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c: In function ‘ffmpeg_fill_frame’:
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:480:14: error: ‘AVFrame’ has no member named ‘channels’
> 480 | frame->channels = inputFormat->nChannels;
> | ^~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:483:16: error: ‘AVFrame’ has no member named ‘channel_layout’; did you mean ‘ch_layout’?
> 483 | frame->channel_layout = av_get_default_channel_layout(frame->channels);
> | ^~~~~~~~~~~~~~
> | ch_layout
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:483:68: error: ‘AVFrame’ has no member named ‘channels’
> 483 | frame->channel_layout = av_get_default_channel_layout(frame->channels);
> | ^~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:487:57: error: ‘AVFrame’ has no member named ‘channels’
> 487 | if ((ret = avcodec_fill_audio_frame(frame, frame->channels, frame->format, data, size, 1)) < 0)
> | ^~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c: In function ‘ffmpeg_decode’:
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:569:59: error: ‘AVFrame’ has no member named ‘channels’
> 569 | const size_t data_size = resampled->channels * resampled->nb_samples * 2;
> | ^~
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c: In function ‘freerdp_dsp_ffmpeg_encode’:
> /<<PKGBUILDDIR>>/libfreerdp/codec/dsp_ffmpeg.c:667:61: error: ‘AVCodecContext’ has no member named ‘channels’
> 667 | context->context->channels, context->context->sample_fmt);
> | ^~
> cc1: some warnings being treated as errors
> make[3]: *** [libfreerdp/CMakeFiles/freerdp.dir/build.make:1885: libfreerdp/CMakeFiles/freerdp.dir/codec/dsp_ffmpeg.c.o] Error 1
The full build log is available from:
https://people.debian.org/~sramacher/ffmpeg-7.0/freerdp2_arm64.build
ffmpeg 7.0 is available in experimental.
Cheers
--
Sebastian Ramacher
Reply to: