OpenBoard-org / OpenBoard

OpenBoard is a cross-platform interactive whiteboard application intended for use in a classroom setting.
https://openboard.ch/
GNU General Public License v3.0
2.34k stars 423 forks source link

Building with FFmpeg 7.0 fails #1002

Closed Vekhir closed 1 month ago

Vekhir commented 3 months ago

Describe the problem FFmpeg 7.0 has been released. Building openboard against FFmpeg 7.0 fails with this error message:

/build/openboard-git/src/OpenBoard/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp: In member function ‘bool UBFFmpegVideoEncoder::init()’:
/build/openboard-git/src/OpenBoard/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp:523:65: error: ‘AVCodecContext’ {aka ‘struct AVCodecContext’} has no member named ‘channels’
  523 |         mAudioOutBuffer = av_audio_fifo_alloc(c->sample_fmt, c->channels, c->frame_size);
      |                                                                 ^~~~~~~~
/build/openboard-git/src/OpenBoard/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp: In member function ‘void UBFFmpegVideoEncoder::processAudio(QByteArray&)’:
/build/openboard-git/src/OpenBoard/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp:643:60: error: ‘AVCodecContext’ {aka ‘struct AVCodecContext’} has no member named ‘channels’
  643 |                                              codecContext->channels, outSamplesCount,
      |                                                            ^~~~~~~~
/build/openboard-git/src/OpenBoard/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp: In member function ‘void UBFFmpegVideoEncoder::finishEncoding()’:
/build/openboard-git/src/OpenBoard/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp:739:18: warning: ‘int avcodec_close(AVCodecContext*)’ is deprecated [-Wdeprecated-declarations]
  739 |     avcodec_close(mVideoCodecContext);
      |     ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /build/openboard-git/src/OpenBoard/src/podcast/ffmpeg/UBFFmpegVideoEncoder.h:26,
                 from /build/openboard-git/src/OpenBoard/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp:22:
/usr/include/libavcodec/avcodec.h:2387:5: note: declared here
 2387 | int avcodec_close(AVCodecContext *avctx);
      |     ^~~~~~~~~~~~~
/build/openboard-git/src/OpenBoard/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp:743:22: warning: ‘int avcodec_close(AVCodecContext*)’ is deprecated [-Wdeprecated-declarations]
  743 |         avcodec_close(mAudioCodecContext);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/usr/include/libavcodec/avcodec.h:2387:5: note: declared here
 2387 | int avcodec_close(AVCodecContext *avctx);
      |     ^~~~~~~~~~~~~

Versions OS: Arch Linux openboard: 1.7.1 and 753eadad57b92ce510b80f07775f20818d5f3201 (current dev) GCC: 14.1.1+r58+gfc9fb69ad62-1 qt6-base: 6.7.1-4 ffmpeg: 2:7.0-3

Built against extra-staging on Arch Linux, i.e. not yet generally available (preview version).

Build commands Built using the CMake community build. Full instructions: PKGBUILD

Suggestions, solutions From what I can tell, it's not as big a jump as from 4.4 to 5.0 - The error above can likely be fixed by changing codecContext->channels to codecContext->ch_layout->nb_channels. There might be more errors afterwards. I'll look into it later.