chromaprint icon indicating copy to clipboard operation
chromaprint copied to clipboard

Latest fpcalc utility doesn't compile against current FFmpeg

Open Warblefly opened this issue 2 years ago • 3 comments

Thank you for recent changes.

Against current FFmpeg, the fpcalc utility does not compile. Could there be an API difference? Here is the compile log.

In summary:

In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:164:55: error: ‘AVStream’ {aka ‘struct AVStream’} has no member named ‘codec’
  164 |  m_codec_ctx = m_format_ctx->streams[m_stream_index]->codec;
      |                                                       ^~~~~
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:281:9: error: ‘avcodec_decode_audio4’ was not declared in this scope; did you mean ‘avcodec_decode_subtitle2’?
  281 |   ret = avcodec_decode_audio4(m_codec_ctx, m_frame, &m_got_frame, &m_packet);
      |         ^~~~~~~~~~~~~~~~~~~~~
      |         avcodec_decode_subtitle2
make[2]: *** [src/cmd/CMakeFiles/fpcalc.dir/build.make:85: src/cmd/CMakeFiles/fpcalc.dir/fpcalc.cpp.o] Error 1
make[2]: Leaving directory '/home/john/src/chromaprint'
make[1]: *** [CMakeFiles/Makefile2:248: src/cmd/CMakeFiles/fpcalc.dir/all] Error 2
make[1]: Leaving directory '/home/john/src/chromaprint'
make: *** [Makefile:152: all] Error 2

Now, here is the full log:

[ 95%] Building CXX object src/cmd/CMakeFiles/fpcalc.dir/fpcalc.cpp.o
cd /home/john/src/chromaprint/src/cmd && /usr/bin/c++ -DHAVE_CONFIG_H -D_GLIBCXX_DEBUG -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/home/john/src/chromaprint -I/home/john/src/chromaprint/src -fpermissive -Wall -g -fvisibility=hidden -fvisibility-inlines-hidden -std=gnu++11 -o CMakeFiles/fpcalc.dir/fpcalc.cpp.o -c /home/john/src/chromaprint/src/cmd/fpcalc.cpp
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h: In constructor ‘chromaprint::FFmpegAudioReader::FFmpegAudioReader()’:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:102:26: warning: ‘void av_init_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
  102 |  av_init_packet(&m_packet);
      |                          ^
In file included from /usr/local/include/libavcodec/avcodec.h:45,
                 from /home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:18,
                 from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/usr/local/include/libavcodec/packet.h:506:6: note: declared here
  506 | void av_init_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h: In member function ‘bool chromaprint::FFmpegAudioReader::SetInputFormat(const char*)’:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:117:36: warning: invalid conversion from ‘const AVInputFormat*’ to ‘AVInputFormat*’ [-fpermissive]
  117 |  m_input_fmt = av_find_input_format(name);
      |                ~~~~~~~~~~~~~~~~~~~~^~~~~~
      |                                    |
      |                                    const AVInputFormat*
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h: In member function ‘bool chromaprint::FFmpegAudioReader::Open(const string&)’:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:138:29: warning: ‘void av_init_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
  138 |     av_init_packet(&m_packet);
      |                             ^
In file included from /usr/local/include/libavcodec/avcodec.h:45,
                 from /home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:18,
                 from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/usr/local/include/libavcodec/packet.h:506:6: note: declared here
  506 | void av_init_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:157:70: warning: invalid conversion from ‘AVCodec**’ to ‘const AVCodec**’ [-fpermissive]
  157 |  ret = av_find_best_stream(m_format_ctx, AVMEDIA_TYPE_AUDIO, -1, -1, &codec, 0);
      |                                                                      ^~~~~~
      |                                                                      |
      |                                                                      AVCodec**
In file included from /home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:19,
                 from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/usr/local/include/libavformat/avformat.h:2162:41: note:   initializing argument 5 of ‘int av_find_best_stream(AVFormatContext*, AVMediaType, int, int, const AVCodec**, int)’
 2162 |                         const AVCodec **decoder_ret,
      |                         ~~~~~~~~~~~~~~~~^~~~~~~~~~~
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:164:55: error: ‘AVStream’ {aka ‘struct AVStream’} has no member named ‘codec’
  164 |  m_codec_ctx = m_format_ctx->streams[m_stream_index]->codec;
      |                                                       ^~~~~
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h: In member function ‘bool chromaprint::FFmpegAudioReader::Read(const int16_t**, size_t*)’:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:259:28: warning: ‘void av_init_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
  259 |    av_init_packet(&m_packet);
      |                            ^
In file included from /usr/local/include/libavcodec/avcodec.h:45,
                 from /home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:18,
                 from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/usr/local/include/libavcodec/packet.h:506:6: note: declared here
  506 | void av_init_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:281:9: error: ‘avcodec_decode_audio4’ was not declared in this scope; did you mean ‘avcodec_decode_subtitle2’?
  281 |   ret = avcodec_decode_audio4(m_codec_ctx, m_frame, &m_got_frame, &m_packet);
      |         ^~~~~~~~~~~~~~~~~~~~~
      |         avcodec_decode_subtitle2
make[2]: *** [src/cmd/CMakeFiles/fpcalc.dir/build.make:85: src/cmd/CMakeFiles/fpcalc.dir/fpcalc.cpp.o] Error 1
make[2]: Leaving directory '/home/john/src/chromaprint'
make[1]: *** [CMakeFiles/Makefile2:248: src/cmd/CMakeFiles/fpcalc.dir/all] Error 2
make[1]: Leaving directory '/home/john/src/chromaprint'
make: *** [Makefile:152: all] Error 2
/usr/bin/cmake -S/home/john/src/chromaprint -B/home/john/src/chromaprint --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/john/src/chromaprint/CMakeFiles /home/john/src/chromaprint//CMakeFiles/progress.marks
make  -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/home/john/src/chromaprint'
make  -f src/CMakeFiles/chromaprint_objs.dir/build.make src/CMakeFiles/chromaprint_objs.dir/depend
make[2]: Entering directory '/home/john/src/chromaprint'
cd /home/john/src/chromaprint && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/john/src/chromaprint /home/john/src/chromaprint/src /home/john/src/chromaprint /home/john/src/chromaprint/src /home/john/src/chromaprint/src/CMakeFiles/chromaprint_objs.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/home/john/src/chromaprint'
make  -f src/CMakeFiles/chromaprint_objs.dir/build.make src/CMakeFiles/chromaprint_objs.dir/build
make[2]: Entering directory '/home/john/src/chromaprint'
make[2]: Nothing to be done for 'src/CMakeFiles/chromaprint_objs.dir/build'.
make[2]: Leaving directory '/home/john/src/chromaprint'
[ 81%] Built target chromaprint_objs
make  -f src/CMakeFiles/chromaprint.dir/build.make src/CMakeFiles/chromaprint.dir/depend
make[2]: Entering directory '/home/john/src/chromaprint'
cd /home/john/src/chromaprint && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/john/src/chromaprint /home/john/src/chromaprint/src /home/john/src/chromaprint /home/john/src/chromaprint/src /home/john/src/chromaprint/src/CMakeFiles/chromaprint.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/home/john/src/chromaprint'
make  -f src/CMakeFiles/chromaprint.dir/build.make src/CMakeFiles/chromaprint.dir/build
make[2]: Entering directory '/home/john/src/chromaprint'
make[2]: Nothing to be done for 'src/CMakeFiles/chromaprint.dir/build'.
make[2]: Leaving directory '/home/john/src/chromaprint'
[ 90%] Built target chromaprint
make  -f src/cmd/CMakeFiles/fpcalc.dir/build.make src/cmd/CMakeFiles/fpcalc.dir/depend
make[2]: Entering directory '/home/john/src/chromaprint'
cd /home/john/src/chromaprint && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/john/src/chromaprint /home/john/src/chromaprint/src/cmd /home/john/src/chromaprint /home/john/src/chromaprint/src/cmd /home/john/src/chromaprint/src/cmd/CMakeFiles/fpcalc.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/home/john/src/chromaprint'
make  -f src/cmd/CMakeFiles/fpcalc.dir/build.make src/cmd/CMakeFiles/fpcalc.dir/build
make[2]: Entering directory '/home/john/src/chromaprint'
[ 95%] Building CXX object src/cmd/CMakeFiles/fpcalc.dir/fpcalc.cpp.o
cd /home/john/src/chromaprint/src/cmd && /usr/bin/c++ -DHAVE_CONFIG_H -D_GLIBCXX_DEBUG -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/home/john/src/chromaprint -I/home/john/src/chromaprint/src -fpermissive -Wall -g -fvisibility=hidden -fvisibility-inlines-hidden -std=gnu++11 -o CMakeFiles/fpcalc.dir/fpcalc.cpp.o -c /home/john/src/chromaprint/src/cmd/fpcalc.cpp
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h: In constructor ‘chromaprint::FFmpegAudioReader::FFmpegAudioReader()’:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:102:26: warning: ‘void av_init_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
  102 |  av_init_packet(&m_packet);
      |                          ^
In file included from /usr/local/include/libavcodec/avcodec.h:45,
                 from /home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:18,
                 from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/usr/local/include/libavcodec/packet.h:506:6: note: declared here
  506 | void av_init_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h: In member function ‘bool chromaprint::FFmpegAudioReader::SetInputFormat(const char*)’:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:117:36: warning: invalid conversion from ‘const AVInputFormat*’ to ‘AVInputFormat*’ [-fpermissive]
  117 |  m_input_fmt = av_find_input_format(name);
      |                ~~~~~~~~~~~~~~~~~~~~^~~~~~
      |                                    |
      |                                    const AVInputFormat*
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h: In member function ‘bool chromaprint::FFmpegAudioReader::Open(const string&)’:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:138:29: warning: ‘void av_init_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
  138 |     av_init_packet(&m_packet);
      |                             ^
In file included from /usr/local/include/libavcodec/avcodec.h:45,
                 from /home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:18,
                 from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/usr/local/include/libavcodec/packet.h:506:6: note: declared here
  506 | void av_init_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:157:70: warning: invalid conversion from ‘AVCodec**’ to ‘const AVCodec**’ [-fpermissive]
  157 |  ret = av_find_best_stream(m_format_ctx, AVMEDIA_TYPE_AUDIO, -1, -1, &codec, 0);
      |                                                                      ^~~~~~
      |                                                                      |
      |                                                                      AVCodec**
In file included from /home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:19,
                 from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/usr/local/include/libavformat/avformat.h:2162:41: note:   initializing argument 5 of ‘int av_find_best_stream(AVFormatContext*, AVMediaType, int, int, const AVCodec**, int)’
 2162 |                         const AVCodec **decoder_ret,
      |                         ~~~~~~~~~~~~~~~~^~~~~~~~~~~
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:164:55: error: ‘AVStream’ {aka ‘struct AVStream’} has no member named ‘codec’
  164 |  m_codec_ctx = m_format_ctx->streams[m_stream_index]->codec;
      |                                                       ^~~~~
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h: In member function ‘bool chromaprint::FFmpegAudioReader::Read(const int16_t**, size_t*)’:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:259:28: warning: ‘void av_init_packet(AVPacket*)’ is deprecated [-Wdeprecated-declarations]
  259 |    av_init_packet(&m_packet);
      |                            ^
In file included from /usr/local/include/libavcodec/avcodec.h:45,
                 from /home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:18,
                 from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/usr/local/include/libavcodec/packet.h:506:6: note: declared here
  506 | void av_init_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
In file included from /home/john/src/chromaprint/src/cmd/fpcalc.cpp:7:
/home/john/src/chromaprint/src/audio/ffmpeg_audio_reader.h:281:9: error: ‘avcodec_decode_audio4’ was not declared in this scope; did you mean ‘avcodec_decode_subtitle2’?
  281 |   ret = avcodec_decode_audio4(m_codec_ctx, m_frame, &m_got_frame, &m_packet);
      |         ^~~~~~~~~~~~~~~~~~~~~
      |         avcodec_decode_subtitle2
make[2]: *** [src/cmd/CMakeFiles/fpcalc.dir/build.make:85: src/cmd/CMakeFiles/fpcalc.dir/fpcalc.cpp.o] Error 1
make[2]: Leaving directory '/home/john/src/chromaprint'
make[1]: *** [CMakeFiles/Makefile2:248: src/cmd/CMakeFiles/fpcalc.dir/all] Error 2
make[1]: Leaving directory '/home/john/src/chromaprint'
make: *** [Makefile:152: all] Error 2

Warblefly avatar Jan 26 '22 22:01 Warblefly

Same error in my Gentoo: chromaprint 1.5.1 fails with ffmpeg 5.0 release.

Iade

iadegesso avatar Jan 30 '22 15:01 iadegesso

Here the root cause... https://github.com/acoustid/chromaprint/issues/33

It's an announced ignored issue...

iadegesso avatar Jan 30 '22 17:01 iadegesso

ok these deprecated things since ffmpeg 3.1, seems to me, that aren't difficult to fix ...

sergiomb2 avatar Mar 12 '22 22:03 sergiomb2

Will be fixed in https://github.com/acoustid/chromaprint/pull/120

lalinsky avatar Nov 04 '22 20:11 lalinsky