Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FFMpeg < 7 compatibility broken in 3.0.3? error: 'AVChannelLayout' does not name a type #690

Open
barracuda156 opened this issue Jul 6, 2024 · 3 comments

Comments

@barracuda156
Copy link
Contributor

Apparently FFMpeg 4.4.4 compatibility has been broken in 3.0.3?

:info:build [ 15%] Building CXX object src/plugins/server/CMakeFiles/server.dir/HttpServer.cpp.o
:info:build cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/build/src/plugins/server && /opt/local/bin/g++-mp-14 -DASIO_STANDALONE -DBOOST_DATE_TIME_NO_LIB -DBOOST_REGEX_NO_LIB -DDISABLE_UPDATE_CHECK -D_WEBSOCKETPP_CPP11_RANDOM_DEVICE_ -D_WEBSOCKETPP_CPP11_TYPE_TRAITS_ -Dserver_EXPORTS -I/include -I/opt/openssl/include -I/opt/ncurses/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/server/3rdparty/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/musikcore -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/musikcube -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/musikcube/cursespp -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/3rdparty/include -pipe -I/opt/local/libexec/openssl3/include -O0 -g -DNDEBUG -I/opt/local/libexec/openssl3/include -isystem/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++17 -Wno-unused-result -Wno-deprecated-declarations -arch ppc -mmacosx-version-min=10.6 -fPIC -MD -MT src/plugins/server/CMakeFiles/server.dir/HttpServer.cpp.o -MF CMakeFiles/server.dir/HttpServer.cpp.o.d -o CMakeFiles/server.dir/HttpServer.cpp.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/server/HttpServer.cpp
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:87:8: error: 'AVChannelLayout' does not name a type
:info:build    87 | static AVChannelLayout resolveChannelLayout(size_t channelCount) {
:info:build       |        ^~~~~~~~~~~~~~~
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp: In member function 'bool FfmpegDecoder::InitializeResampler()':
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:291:30: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'?
:info:build   291 |         &this->codecContext->ch_layout,
:info:build       |                              ^~~~~~~~~
:info:build       |                              channel_layout
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:294:30: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'?
:info:build   294 |         &this->codecContext->ch_layout,
:info:build       |                              ^~~~~~~~~
:info:build       |                              channel_layout
:info:build [ 15%] Building C object src/plugins/macosmediakeys/CMakeFiles/macosmediakeys.dir/NSObject+SPInvocationGrabbing.m.o
:info:build cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/build/src/plugins/macosmediakeys && /opt/local/bin/gcc-mp-14 -DASIO_STANDALONE -DBOOST_DATE_TIME_NO_LIB -DBOOST_REGEX_NO_LIB -DDISABLE_UPDATE_CHECK -D_WEBSOCKETPP_CPP11_RANDOM_DEVICE_ -D_WEBSOCKETPP_CPP11_TYPE_TRAITS_ -Dmacosmediakeys_EXPORTS -I/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/musikcore -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/musikcube -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/musikcube/cursespp -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/3rdparty/include -F//System/Library/Frameworks -pipe -I/opt/local/libexec/openssl3/include -Os -std=c99 -fobjc-exceptions -DNDEBUG -I/opt/local/libexec/openssl3/include -isystem/opt/local/include -arch ppc -mmacosx-version-min=10.6 -fPIC -MD -MT src/plugins/macosmediakeys/CMakeFiles/macosmediakeys.dir/NSObject+SPInvocationGrabbing.m.o -MF CMakeFiles/macosmediakeys.dir/NSObject+SPInvocationGrabbing.m.o.d -o CMakeFiles/macosmediakeys.dir/NSObject+SPInvocationGrabbing.m.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/macosmediakeys/NSObject+SPInvocationGrabbing.m
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:289:17: error: 'swr_alloc_set_opts2' was not declared in this scope; did you mean 'swr_alloc_set_opts'?
:info:build   289 |     int error = swr_alloc_set_opts2(
:info:build       |                 ^~~~~~~~~~~~~~~~~~~
:info:build       |                 swr_alloc_set_opts
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp: In member function 'virtual bool FfmpegDecoder::Open(musik::core::sdk::IDataStream*)':
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:328:13: error: invalid conversion from 'int (*)(void*, const uint8_t*, int)' {aka 'int (*)(void*, const unsigned char*, int)'} to 'int (*)(void*, uint8_t*, int)' {aka 'int (*)(void*, unsigned char*, int)'} [-fpermissive]
:info:build   328 |             writeCallback,
:info:build       |             ^~~~~~~~~~~~~
:info:build       |             |
:info:build       |             int (*)(void*, const uint8_t*, int) {aka int (*)(void*, const unsigned char*, int)}
:info:build In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.h:43,
:info:build                  from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:35:
:info:build /opt/local/include/libavformat/avio.h:468:25: note:   initializing argument 6 of 'AVIOContext* avio_alloc_context(unsigned char*, int, int, void*, int (*)(void*, uint8_t*, int), int (*)(void*, uint8_t*, int), int64_t (*)(void*, int64_t, int))'
:info:build   468 |                   int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
:info:build       |                   ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:392:53: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'?
:info:build   392 |                             if (this->codecContext->ch_layout.nb_channels == 0) {
:info:build       |                                                     ^~~~~~~~~
:info:build       |                                                     channel_layout
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:393:53: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'?
:info:build   393 |                                 this->codecContext->ch_layout =
:info:build       |                                                     ^~~~~~~~~
:info:build       |                                                     channel_layout
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:394:78: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'?
:info:build   394 |                                     resolveChannelLayout(this->codecContext->ch_layout.nb_channels);
:info:build       |                                                                              ^~~~~~~~~
:info:build       |                                                                              channel_layout
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:394:37: error: 'resolveChannelLayout' was not declared in this scope
:info:build   394 |                                     resolveChannelLayout(this->codecContext->ch_layout.nb_channels);
:info:build       |                                     ^~~~~~~~~~~~~~~~~~~~
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:408:60: error: 'AVCodecParameters' {aka 'struct AVCodecParameters'} has no member named 'ch_layout'; did you mean 'channel_layout'?
:info:build   408 |                         this->channels = stream->codecpar->ch_layout.nb_channels;
:info:build       |                                                            ^~~~~~~~~
:info:build       |                                                            channel_layout
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp: In member function 'AVFrame* FfmpegDecoder::AllocFrame(AVFrame*, AVSampleFormat, int, int)':
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:619:15: error: 'AVChannelLayout' does not name a type
:info:build   619 |         const AVChannelLayout channelLayout = this->codecContext->ch_layout.nb_channels == 0
:info:build       |               ^~~~~~~~~~~~~~~
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:623:19: error: 'AVFrame' {aka 'struct AVFrame'} has no member named 'ch_layout'; did you mean 'channel_layout'?
:info:build   623 |         original->ch_layout = channelLayout;
:info:build       |                   ^~~~~~~~~
:info:build       |                   channel_layout
:info:build /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/musikcube-3.0.3/src/plugins/ffmpegdecoder/FfmpegDecoder.cpp:623:31: error: 'channelLayout' was not declared in this scope
:info:build   623 |         original->ch_layout = channelLayout;
:info:build       |                               ^~~~~~~~~~~~~
:info:build make[2]: *** [src/plugins/ffmpegdecoder/CMakeFiles/ffmpegdecoder.dir/FfmpegDecoder.cpp.o] Error 1
:info:build make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_multimedia_musikcube/musikcube/work/build'
:info:build make[1]: *** [src/plugins/ffmpegdecoder/CMakeFiles/ffmpegdecoder.dir/all] Error 2
:info:build make[1]: *** Waiting for unfinished jobs....

If so, the build should require FFMpeg 6 to be present and either disable the module otherwise (preferably) or fail at configure.

@barracuda156
Copy link
Contributor Author

@clangen It also fails with FFMpeg 6, looks like it is just broken now.

@barracuda156
Copy link
Contributor Author

Broken by fdacf36

@barracuda156 barracuda156 changed the title FFMpeg 4.x compatibility broken in 3.0.3? error: 'AVChannelLayout' does not name a type FFMpeg < 7 compatibility broken in 3.0.3? error: 'AVChannelLayout' does not name a type Jul 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant