You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm happily using chromaprint as a depency of essentia for a long time. Since FFmpeg has become too modern I'm compiling against a separate ffmpeg4.4 with such a patch:
Now I'm on a new system and have to recompile everything and the compilation of fpcalc fails:
[ 95%] Building CXX object src/cmd/CMakeFiles/fpcalc.dir/fpcalc.cpp.o
In file included from ./src/audio/ffmpeg_audio_reader.h:24,
from ./src/cmd/fpcalc.cpp:7:
./src/audio/ffmpeg_audio_processor.h:14:2: error: #error "no audio processing library"
14 | #error "no audio processing library"
| ^~~~~
./src/audio/ffmpeg_audio_reader.h:73:25: error: 'FFmpegAudioProcessor' was not declared in this scope; did you mean 'FFmpegAudioReader'?
73 | std::unique_ptr<FFmpegAudioProcessor> m_converter;
| ^~~~~~~~~~~~~~~~~~~~
| FFmpegAudioReader
./src/audio/ffmpeg_audio_reader.h:73:45: error: template argument 1 is invalid
73 | std::unique_ptr<FFmpegAudioProcessor> m_converter;
| ^
./src/audio/ffmpeg_audio_reader.h:73:45: error: template argument 2 is invalid
./src/audio/ffmpeg_audio_reader.h: In member function 'bool chromaprint::FFmpegAudioReader::Open(const std::string&)':
./src/audio/ffmpeg_audio_reader.h:182:9: error: 'AVChannelLayout' was not declared in this scope
182 | AVChannelLayout output_channel_layout;
| ^~~~~~~~~~~~~~~
./src/audio/ffmpeg_audio_reader.h:184:44: error: 'output_channel_layout' was not declared in this scope; did you mean 'av_get_channel_layout'?
184 | av_channel_layout_default(&output_channel_layout, m_output_channels);
| ^~~~~~~~~~~~~~~~~~~~~
| av_get_channel_layout
./src/audio/ffmpeg_audio_reader.h:184:17: error: 'av_channel_layout_default' was not declared in this scope
184 | av_channel_layout_default(&output_channel_layout, m_output_channels);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
./src/audio/ffmpeg_audio_reader.h:186:50: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'?
186 | m_output_channels = m_codec_ctx->ch_layout.nb_channels;
| ^~~~~~~~~
| channel_layout
./src/audio/ffmpeg_audio_reader.h:187:44: error: 'output_channel_layout' was not declared in this scope; did you mean 'av_get_channel_layout'?
187 | av_channel_layout_default(&output_channel_layout, m_output_channels);
| ^~~~~~~~~~~~~~~~~~~~~
| av_get_channel_layout
./src/audio/ffmpeg_audio_reader.h:187:17: error: 'av_channel_layout_default' was not declared in this scope
187 | av_channel_layout_default(&output_channel_layout, m_output_channels);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
./src/audio/ffmpeg_audio_reader.h:190:74: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'?
190 | if (m_codec_ctx->sample_fmt != AV_SAMPLE_FMT_S16 || m_codec_ctx->ch_layout.nb_channels != m_output_channels || m_codec_ctx->sample_rate != m_output_sample_rate) {
| ^~~~~~~~~
| channel_layout
./src/audio/ffmpeg_audio_reader.h:191:29: error: request for member 'reset' in '((chromaprint::FFmpegAudioReader*)this)->chromaprint::FFmpegAudioReader::m_converter', which is of non-class type 'int'
191 | m_converter.reset(new FFmpegAudioProcessor());
| ^~~~~
./src/audio/ffmpeg_audio_reader.h:191:39: error: expected type-specifier before 'FFmpegAudioProcessor'
191 | m_converter.reset(new FFmpegAudioProcessor());
| ^~~~~~~~~~~~~~~~~~~~
./src/audio/ffmpeg_audio_reader.h:192:28: error: base operand of '->' is not a pointer
192 | m_converter->SetCompatibleMode();
| ^~
./src/audio/ffmpeg_audio_reader.h:193:28: error: base operand of '->' is not a pointer
193 | m_converter->SetInputSampleFormat(m_codec_ctx->sample_fmt);
| ^~
./src/audio/ffmpeg_audio_reader.h:194:28: error: base operand of '->' is not a pointer
194 | m_converter->SetInputSampleRate(m_codec_ctx->sample_rate);
| ^~
./src/audio/ffmpeg_audio_reader.h:195:28: error: base operand of '->' is not a pointer
195 | m_converter->SetInputChannelLayout(&(m_codec_ctx->ch_layout));
| ^~
./src/audio/ffmpeg_audio_reader.h:195:67: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'?
195 | m_converter->SetInputChannelLayout(&(m_codec_ctx->ch_layout));
| ^~~~~~~~~
| channel_layout
./src/audio/ffmpeg_audio_reader.h:196:28: error: base operand of '->' is not a pointer
196 | m_converter->SetOutputSampleFormat(AV_SAMPLE_FMT_S16);
| ^~
./src/audio/ffmpeg_audio_reader.h:197:28: error: base operand of '->' is not a pointer
197 | m_converter->SetOutputSampleRate(m_output_sample_rate);
| ^~
./src/audio/ffmpeg_audio_reader.h:198:28: error: base operand of '->' is not a pointer
198 | m_converter->SetOutputChannelLayout(&output_channel_layout);
| ^~
./src/audio/ffmpeg_audio_reader.h:198:54: error: 'output_channel_layout' was not declared in this scope; did you mean 'av_get_channel_layout'?
198 | m_converter->SetOutputChannelLayout(&output_channel_layout);
| ^~~~~~~~~~~~~~~~~~~~~
| av_get_channel_layout
./src/audio/ffmpeg_audio_reader.h:199:39: error: base operand of '->' is not a pointer
199 | auto ret = m_converter->Init();
| ^~
./src/audio/ffmpeg_audio_reader.h:206:35: error: 'output_channel_layout' was not declared in this scope; did you mean 'av_get_channel_layout'?
206 | av_channel_layout_uninit(&output_channel_layout);
| ^~~~~~~~~~~~~~~~~~~~~
| av_get_channel_layout
./src/audio/ffmpeg_audio_reader.h:206:9: error: 'av_channel_layout_uninit' was not declared in this scope; did you mean 'av_get_channel_layout_string'?
206 | av_channel_layout_uninit(&output_channel_layout);
| ^~~~~~~~~~~~~~~~~~~~~~~~
| av_get_channel_layout_string
./src/audio/ffmpeg_audio_reader.h: In member function 'bool chromaprint::FFmpegAudioReader::Read(const int16_t**, size_t*)':
./src/audio/ffmpeg_audio_reader.h:316:105: error: 'AVCodecContext' {aka 'struct AVCodecContext'} has no member named 'ch_layout'; did you mean 'channel_layout'?
316 | ret = av_samples_alloc(m_convert_buffer, &linsize, m_codec_ctx->ch_layout.nb_channels, m_convert_buffer_nb_samples, AV_SAMPLE_FMT_S16, 1);
| ^~~~~~~~~
| channel_layout
./src/audio/ffmpeg_audio_reader.h:322:62: error: base operand of '->' is not a pointer
322 | auto nb_samples = m_converter->Convert(m_convert_buffer, m_convert_buffer_nb_samples, (const uint8_t **) m_frame->data, m_frame->nb_samples);
| ^~
./src/audio/ffmpeg_audio_reader.h:336:70: error: base operand of '->' is not a pointer
336 | auto nb_samples = m_converter->Flush(m_convert_buffer, m_convert_buffer_nb_samples);
| ^~
./src/cmd/fpcalc.cpp: In function 'void ParseOptions(int&, char**)':
./src/cmd/fpcalc.cpp:132:34: error: 'LIBAVRESAMPLE_IDENT' was not declared in this scope; did you mean 'LIBAVUTIL_IDENT'?
132 | #define RESAMPLE_LIB_IDENT_IDENT LIBAVRESAMPLE_IDENT
| ^~~~~~~~~~~~~~~~~~~
./src/cmd/fpcalc.cpp:134:146: note: in expansion of macro 'RESAMPLE_LIB_IDENT_IDENT'
134 | fprintf(stdout, "fpcalc version %s (FFmpeg %s %s %s)\n", chromaprint_get_version(), LIBAVCODEC_IDENT, LIBAVFORMAT_IDENT, RESAMPLE_LIB_IDENT_IDENT);
| ^~~~~~~~~~~~~~~~~~~~~~~~
How is this possible? I thought that chromaprint would be too old and need a patch for ffmpeg 5.
The text was updated successfully, but these errors were encountered:
I'm happily using chromaprint as a depency of essentia for a long time. Since FFmpeg has become too modern I'm compiling against a separate ffmpeg4.4 with such a patch:
Now I'm on a new system and have to recompile everything and the compilation of fpcalc fails:
How is this possible? I thought that chromaprint would be too old and need a patch for ffmpeg 5.
The text was updated successfully, but these errors were encountered: