Skip to content

Building with FFmpeg 7.0 fails #1002

@Vekhir

Description

@Vekhir

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 753eada (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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions