alsa-plugins-1.2.7.1 fails to compile against latest ffmpeg git
libtool: compile: x86_64-pc-linux-gnu-gcc -m32 -mfpmath=sse -DHAVE_CONFIG_H -I. -I/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52 -I.. -DNDEBUG -Wall -g -march=native -mtune=native -O2 -pipe -c /var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c -fPIC -DPIC -o .libs/pcm_a52.o
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c: In function 'a52_free':
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:631:17: warning: 'avcodec_close' is deprecated [-Wdeprecated-declarations]
631 | avcodec_close(rec->avctx);
| ^~~~~~~~~~~~~
In file included from /var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:28:
/usr/include/libavcodec/avcodec.h:2374:5: note: declared here
2374 | int avcodec_close(AVCodecContext *avctx);
| ^~~~~~~~~~~~~
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c: In function 'set_channel_layout':
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:672:29: error: 'AVCodecContext' has no member named 'channel_layout'; did you mean 'ch_layout'?
672 | rec->avctx->channel_layout = AV_CH_LAYOUT_STEREO;
| ^~~~~~~~~~~~~~
| ch_layout
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:675:29: error: 'AVCodecContext' has no member named 'channel_layout'; did you mean 'ch_layout'?
675 | rec->avctx->channel_layout = AV_CH_LAYOUT_QUAD;
| ^~~~~~~~~~~~~~
| ch_layout
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:678:29: error: 'AVCodecContext' has no member named 'channel_layout'; did you mean 'ch_layout'?
678 | rec->avctx->channel_layout = AV_CH_LAYOUT_5POINT1;
| ^~~~~~~~~~~~~~
| ch_layout
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c: In function 'alloc_input_buffer':
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:698:19: error: 'AVFrame' has no member named 'channels'
698 | rec->frame->channels = rec->avctx->channels;
| ^~
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:698:42: error: 'AVCodecContext' has no member named 'channels'
698 | rec->frame->channels = rec->avctx->channels;
| ^~
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:699:21: error: 'AVFrame' has no member named 'channel_layout'; did you mean 'ch_layout'?
699 | rec->frame->channel_layout = rec->avctx->channel_layout;
| ^~~~~~~~~~~~~~
| ch_layout
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:699:50: error: 'AVCodecContext' has no member named 'channel_layout'; did you mean 'ch_layout'?
699 | rec->frame->channel_layout = rec->avctx->channel_layout;
| ^~~~~~~~~~~~~~
| ch_layout
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c: In function 'a52_prepare':
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:734:19: error: 'AVCodecContext' has no member named 'channels'
734 | rec->avctx->channels = io->channels;
| ^~
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c: In function '_snd_pcm_a52_open':
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:1124:28: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
1124 | rec->codec = avcodec_find_encoder_by_name(avcodec);
| ^
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:1126:28: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
1126 | rec->codec = avcodec_find_encoder_by_name("ac3_fixed");
| ^
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:1128:36: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
1128 | rec->codec = avcodec_find_encoder_by_name("ac3");
| ^
/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1/a52/pcm_a52.c:1131:28: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
1131 | rec->codec = avcodec_find_encoder(AV_CODEC_ID_AC3);
| ^
make[2]: *** [Makefile:469: pcm_a52.lo] Error 1
make[2]: Leaving directory '/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1-abi_x86_32.x86/a52'
make[1]: *** [Makefile:445: all-recursive] Error 1
make[1]: Leaving directory '/var/tmp/portage/media-plugins/alsa-plugins-1.2.7.1-r1/work/alsa-plugins-1.2.7.1-abi_x86_32.x86'
make: *** [Makefile:377: all] Error 2
* ERROR: media-plugins/alsa-plugins-1.2.7.1-r1::gentoo failed (compile phase):
* emake failed
Also fail to build with latest ffmpeg 7.0
https://github.com/OpenMandrivaAssociation/alsa-plugins/blob/master/alsa-plugins-ffmpeg-7.0.patch makes it compile. Not yet tested at runtime though (will send a pull request if and when it passes runtime tests, but since I'm currently at a conference, someone else may beat me to testing it.
https://github.com/OpenMandrivaAssociation/alsa-plugins/blob/master/alsa-plugins-ffmpeg-7.0.patch makes it compile. Not yet tested at runtime though (will send a pull request if and when it passes runtime tests, but since I'm currently at a conference, someone else may beat me to testing it.
Thanks for the patch, note that in its current form this only works for compiling against FFmpeg >= 5 since the changes are not ifdeffed.