withmorten / spek-alternative

Acoustic spectrum analyser
Other
314 stars 18 forks source link

Fails to build against ffmpeg-5.0 #15

Open tibequadorian opened 2 years ago

tibequadorian commented 2 years ago

This code uses a deprecated ffmpeg API which results in errors when compiling against ffmpeg>=5.0.

spek-audio.cc: In constructor 'Audio::Audio()':
spek-audio.cc:63:5: error: 'av_register_all' was not declared in this scope
   63 |     av_register_all();
      |     ^~~~~~~~~~~~~~~
spek-audio.cc: In destructor 'Audio::~Audio()':
spek-audio.cc:69:5: error: 'av_lockmgr_register' was not declared in this scope
   69 |     av_lockmgr_register(nullptr);
      |     ^~~~~~~~~~~~~~~~~~~
  CXX      libspek_a-spek-utils.o
spek-audio.cc: In member function 'std::unique_ptr<AudioFile> Audio::open(const string&, int)':
spek-audio.cc:114:49: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  114 |             codec = avcodec_find_decoder_by_name("mp1float");
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
      |                                                 |
      |                                                 const AVCodec*
spek-audio.cc:117:49: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  117 |             codec = avcodec_find_decoder_by_name("mp2float");
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
      |                                                 |
      |                                                 const AVCodec*
spek-audio.cc:120:49: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  120 |             codec = avcodec_find_decoder_by_name("mp3float");
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
      |                                                 |
      |                                                 const AVCodec*
spek-audio.cc:123:49: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  123 |             codec = avcodec_find_decoder_by_name("mp3adufloat");
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
      |                                                 |
      |                                                 const AVCodec*
spek-audio.cc:126:49: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  126 |             codec = avcodec_find_decoder_by_name("mp3on4float");
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
      |                                                 |
      |                                                 const AVCodec*
spek-audio.cc:129:41: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  129 |             codec = avcodec_find_decoder(codecpar->codec_id);
      |                     ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         const AVCodec*
spek-audio.cc: In constructor 'AudioFileImpl::AudioFileImpl(AudioError, AVFormatContext*, AVCodecContext*, int, const string&, int, int, int, int, int, double)':
spek-audio.cc:222:33: warning: 'void av_init_packet(AVPacket*)' is deprecated [-Wdeprecated-declarations]
  222 |     av_init_packet(&this->packet);
      |                                 ^
In file included from /usr/include/libavformat/avformat.h:316,
                 from spek-audio.cc:4:
/usr/include/libavcodec/packet.h:506:6: note: declared here
  506 | void av_init_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
--
spek-audio.cc: In member function 'virtual int AudioFileImpl::read()':
spek-audio.cc:273:23: error: 'avcodec_decode_audio4' was not declared in this scope; did you mean 'avcodec_decode_subtitle2'?
  273 |             int len = avcodec_decode_audio4(
      |                       ^~~~~~~~~~~~~~~~~~~~~
      |                       avcodec_decode_subtitle2