acoustid / chromaprint Goto Github PK
View Code? Open in Web Editor NEWC library for generating audio fingerprints used by AcoustID
License: Other
C library for generating audio fingerprints used by AcoustID
License: Other
I am trying to compile chromaprint and I am getting this error.
Scanning dependencies of target chromaprint_objs
[ 86%] Building CXX object src/CMakeFiles/chromaprint_objs.dir/fft_lib_avfft.cpp.o
[ 86%] Building CXX object src/CMakeFiles/chromaprint_objs.dir/fft.cpp.o
[ 86%] Built target chromaprint_objs
[ 86%] Linking CXX shared library libchromaprint.so
/usr/bin/ld: /usr/local/lib/libavcodec.a(fft.o): relocation R_X86_64_PC32 against symbol `ff_cos_32' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
src/CMakeFiles/chromaprint.dir/build.make:132: recipe for target 'src/libchromaprint.so.1.4.4' failed
make[2]: *** [src/libchromaprint.so.1.4.4] Error 1
CMakeFiles/Makefile2:153: recipe for target 'src/CMakeFiles/chromaprint.dir/all' failed
make[1]: *** [src/CMakeFiles/chromaprint.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2
I tried using an older version of FFmpeg still the problem persists.
Any help would be appreciated.
It appears the cross-compilation instructions for Windows are outdated: the toolchain i586-mingw32msvc
is not available on newer platforms, at least on Ubuntu 19.04.
It should be possible to build using the current toolchains available in mingw-w64
package, which is what is available on Ubuntu.
Trying to build with i686-w64-mingw32-gcc
/ i686-w64-mingw32-g++
fails with compilation errors. I haven't found any other appropriate alternative in that package... Or am I doing something wrong?
Some tests have been failing on Debian's big endian architectures:
[==========] 90 tests from 25 test cases ran. (85 ms total)
[ PASSED ] 84 tests.
[ FAILED ] 6 tests, listed below:
[ FAILED ] API.TestFp
[ FAILED ] AudioProcessor.StereoToMono
[ FAILED ] AudioProcessor.ResampleMono
[ FAILED ] AudioProcessor.ResampleMonoNonInteger
[ FAILED ] AudioProcessor.StereoToMonoAndResample
[ FAILED ] Chromaprint.BasicImage
For a full log, see for example
https://buildd.debian.org/status/fetch.php?pkg=chromaprint&arch=s390x&ver=1.4.2-2&stamp=1517997275&raw=0.
The Python bindings should support encoding a fingerprint. There already is decode_fingerprint
. Adding decode_fingerprint
should be very similar.
Accessing the API using the key shown on http://acoustid.org/api-key returns an error {"status": "error", "error": {"message": "invalid API key", "code": 4}}
Using the example API key shown in the documentation works fine.
I've tried generating a new key, but that didn't work either.
As of commit 21b2442 (chromaprint lib) calling chromaprint from ffmpeg with CHROMAPRINT_ALGORITHM_TEST3
causes a seg fault. To reproduce:
$ ffmpeg -f lavfi -i sine=d=20,asetnsamples=n=1000 -f chromaprint -algorithm 2 -
...
[1] 3691 segmentation fault (core dumped) ./ffmpeg -f lavfi -i sine=d=20,asetnsamples=n=1000 -f chromaprint -algorithm
AFAICT this is because FFT frame is set to zero in the configuration of the algorithm. Setting frame size to a reasonable value will probably solve the issue. Let me know if you agree and I can submit a pull request.
$ cmake .
$ make
[ 2%] Building CXX object src/CMakeFiles/chromaprint.dir/fft_lib_vdsp.cpp.o
In file included from /Users/phil/Downloads/chromaprint-1.0/chromaprint-1.0/src/fft_lib_vdsp.cpp:21:
/Users/phil/Downloads/chromaprint-1.0/chromaprint-1.0/src/utils.h:101:9: error: no member named 'fill' in namespace
'std'
std::fill(first, last, 0.0);
Hi,
While reviewing my packaging, someone noticed that your copyright notices are not up to date.
Would you be so kind as to update them, since you are still actively developing libchromaprint ?
Regards,
Simon
PS: How do one mark one's issues "minor" or "nitpick" on this tracker ?
In ffmpeg-0.11, several API calls which were previously deprecated have been entirely removed; to get fpcalc.c to build against it, one needs to replace calls to avformat_open_input
by avformat_open_input
, to av_get_bits_per_sample_format
by av_get_bytes_per_sample
, and SAMPLE_FMT_S16
by AV_SAMPLE_FMT_S16
.
The FFmpegAudioReader::Read method raises an AccessViolationException, after calling the swr_convert function with FFmpeg 4.0 on the following MP3:
https://www.dropbox.com/s/gmw3lc8z67n63aw/access_violation_exception.mp3?dl=0
On previous version of FFmpeg, fpcalc simply returns ERROR: Error decoding audio frame (Invalid data found when processing input)
.
Any help would be appreciated.
Thanks.
The tools included in chromaprint currently reject anything that's not in the 16-bit signed format. It should try to convert other formats, such as 24-bit which is used for some FLAC files. There is some commented out code that uses av_audio_convert
, but doesn't seem to be a public API, so we need to use something else.
Would be useful if fpcollect supported files without extensions in names and possibly ignored extensions altogether.
As the title says, I get configuration error while try to cmake
.
filippo@filippo-VirtualBox:~/Scrivania/chromaprint$ cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TOOLS=ON .
FFTW3 lib not found. Set FFTW3_DIR to find it.
-- Using kissfft for FFT calculations
-- Building without audio conversion support, please install FFmpeg with libswresample
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
FFMPEG_LIBAVCODEC_INCLUDE_DIRS
used as include directory in directory /home/filippo/Scrivania/chromaprint/src/cmd
used as include directory in directory /home/filippo/Scrivania/chromaprint/src/cmd
FFMPEG_LIBAVFORMAT_INCLUDE_DIRS
used as include directory in directory /home/filippo/Scrivania/chromaprint/src/cmd
used as include directory in directory /home/filippo/Scrivania/chromaprint/src/cmd
FFMPEG_LIBAVUTIL_INCLUDE_DIRS
used as include directory in directory /home/filippo/Scrivania/chromaprint/src/cmd
used as include directory in directory /home/filippo/Scrivania/chromaprint/src/cmd-- Configuring incomplete, errors occurred!
However I installed ffmpeg 0.8.17 (in its default location) on my machine and it's working correctly.
I'm running Ubuntu 12.04.
If "goto done" is called in decode_audio_file after codec_ctx is initialised (line 31) but before avcodec_open() is called (line 52), then avcodec_close() gets called on the unopened codec_ctx (line 140) causing a segmentation fault.
I found that fpcalc exits in an error status if there's problems in the stream. In my case with live streams, it seemed like discontinuity errors or etc could cause the problem.
I suggest adding an option to ignore these errors and output whatever fingerprint data is available. I implemented it where it's needed, but this bool could be tested throughout:
ignore_errors.txt
Ideally if we have an "install" target we should have an "uninstall" one, no?
Thanks
First of all thanks for the amazing project.
Currently, we are using fpcal
to detect near-identical duplicates in a database of high quality music files. However, we were not successful to use it in order to detect musics recorded by low quality mobile microphones. Any help on how should we approach this problem?
Thanks.
The example Json on the webservice page shows release having a "name" attribute
(/pages/webservice.md:123)
however, the API returns a "title" attribute
(/acoustid/api/v2.py:147)
Please resolve a question about Chromaprint.
A developer has suggested that Chromaprint is capable of comparing a set of song recordings and determining:
(1) That two different recordings are different renditions of the same song, and
(2) That two different recordings of different songs "sound similar" due to acoustic similarities - presumably properties like similar tempo, similar pitch, shared musical features, similar voice / lyrics / instruments, playing technique, etc.
The developer believes that Chromaprint has these capabilities because it incorporates "perceptual hashing," and that Chromaprint "makes some assumptions about content of the audio - that it will be a song, or some tune, etc." The developer wishes to use it to analyze the developer's own recordings over a span of several years to detect "similarities" among the recordings.
Another developer believes that Chromaprint is limited to detecting similar (but non-identical) binary representations of identical content, such as would be useful for de-duplication - but that recordings of different songs, or of different renditions of the same song, would generate completely dissimilar fingerprints even though they "sound similar" or are perceived similarly by humans.
Can you please comment?
It would be nice if fpcalc could fingerprint multi-channel audio (e.g. wav). Currently it’s necessary to downmix to stereo and work from there, but it would be better if fpcalc would do this for itself (it’s ultimately downmixing to mono anyway, right?)
Chromaprint now is part of Fedora: https://admin.fedoraproject.org/pkgdb/acls/name/chromaprint
Packages are not available because a some server maintenance thing, but it's a matter of time.
FYI.
I am building Chromaprint 1.4.2 as Synology package for SynoCommunity but compilation fails with DSM 5.2 qoriq
toolchain (qoriq-gcc4374_eglibc2874_qoriq-GPL.txz
):
make -f src/CMakeFiles/chromaprint_objs.dir/build.make src/CMakeFiles/chromaprint_objs.dir/build
make[5]: Entering directory '/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2'
/usr/bin/cmake -E cmake_progress_report /spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/CMakeFiles 2
[ 5%] Building CXX object src/CMakeFiles/chromaprint_objs.dir/fft_lib_avfft.cpp.o
cd /spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src && /spksrc/toolchains/syno-qoriq-5.2/work/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-g++ -DCHROMAPRINT_NODLL -DHAVE_CONFIG_H -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/spksrc/toolchains/syno-qoriq-5.2/work/powerpc-none-linux-gnuspe/powerpc-none-linux-gnuspe/include -mcpu=8548 -mhard-float -mfloat-gprs=double -I/spksrc/spk/chromaprint/work-qoriq-5.2/install//usr/local/chromaprint/include -Wall -O3 -DNDEBUG -I/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2 -I/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src -I/spksrc/spk/chromaprint/work-qoriq-5.2/install/usr/local/chromaprint/include -o CMakeFiles/chromaprint_objs.dir/fft_lib_avfft.cpp.o -c /spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp
In file included from /spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.h:14,
from /spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:4:
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/utils.h: In function 'void chromaprint::PrepareHammingWindow(RandomAccessIterator, RandomAccessIterator, double)':
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/utils.h:40: error: ISO C++ forbids declaration of 'size' with no type
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/utils.h: In function 'void chromaprint::ApplyWindow(InputIt, InputIt, WindowIt&, OutputIt&)':
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/utils.h:49: error: ISO C++ forbids declaration of 'input' with no type
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/utils.h:51: error: invalid type argument of 'unary *'
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp: In member function 'void chromaprint::FFTLib::Load(const int16_t*, const int16_t*, const int16_t*, const int16_t*)':
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:27: error: ISO C++ forbids declaration of 'window' with no type
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:27: error: invalid conversion from 'FFTSample*' to 'int'
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:28: error: ISO C++ forbids declaration of 'output' with no type
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:28: error: invalid conversion from 'FFTSample*' to 'int'
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp: In member function 'void chromaprint::FFTLib::Compute(chromaprint::FFTFrame&)':
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:35: error: ISO C++ forbids declaration of 'input' with no type
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:35: error: invalid conversion from 'FFTSample*' to 'int'
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:36: error: ISO C++ forbids declaration of 'output' with no type
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:36: error: cannot convert '__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >' to 'int' in initialization
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:37: error: invalid types 'int[int]' for array subscript
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:37: error: invalid types 'int[int]' for array subscript
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:37: error: invalid types 'int[int]' for array subscript
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:38: error: invalid types 'int[unsigned int]' for array subscript
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:38: error: invalid types 'int[int]' for array subscript
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:38: error: invalid types 'int[int]' for array subscript
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:42: error: invalid type argument of 'unary *'
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:42: error: invalid types 'int[int]' for array subscript
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:42: error: invalid types 'int[int]' for array subscript
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:42: error: invalid types 'int[int]' for array subscript
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:42: error: invalid types 'int[int]' for array subscript
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/utils.h: In function 'void chromaprint::ApplyWindow(InputIt, InputIt, WindowIt&, OutputIt&) [with InputIt = const int16_t*, WindowIt = int, OutputIt = int]':
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/fft_lib_avfft.cpp:29: instantiated from here
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/utils.h:49: error: invalid conversion from 'const int16_t*' to 'int'
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/utils.h:50: error: ISO C++ forbids comparison between pointer and integer
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/utils.h:51: error: invalid type argument of 'unary *'
/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2/src/utils.h:51: error: invalid type argument of 'unary *'
src/CMakeFiles/chromaprint_objs.dir/build.make:54: recipe for target 'src/CMakeFiles/chromaprint_objs.dir/fft_lib_avfft.cpp.o' failed
make[5]: *** [src/CMakeFiles/chromaprint_objs.dir/fft_lib_avfft.cpp.o] Error 1
make[5]: Leaving directory '/spksrc/spk/chromaprint/work-qoriq-5.2/chromaprint-1.4.2'
Do you have any suggestion how to get chromaprint built with GCC 4.7 for ppc ?
It would be great if there were a convenient way to get an acoustID (or acoustID scores) from a fingerprinted file. Taking the output of fpcalc and plugging it into the web API is doable but annoying, and it would be nice if fpcalc (optionally) did that.
how to enable hardened runtime for Chromaprint. when we notarized build it will give error.Any solution for hardened runtime enable. can you please tell me source code of chromaprint.
Since Apple decided to make Notarization extra strict this month, we can't bundle fpcalc
anymore due to:
The binary uses an SDK older than the 10.9 SDK.
Resolving Common Notarization Issues has a section on this issue, but their help is limited to Xcode GUI clickly-clicky. Haven't had much luck fixing this via cmake
options.
Building chromaprint-1.4.2 fails with the following message:
-- Using swresample for audio conversion
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/SBo/chromaprint-1.4.2/build
Scanning dependencies of target chromaprint_objs
[ 4%] Building CXX object src/CMakeFiles/chromaprint_objs.dir/fft_lib_avfft.cpp.o
In file included from /tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.h:14:0,
from /tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:4:
/tmp/SBo/chromaprint-1.4.2/src/utils.h: In function ‘void chromaprint::PrepareHammingWindow(RandomAccessIterator, RandomAccessIterator, double)’:
/tmp/SBo/chromaprint-1.4.2/src/utils.h:40:8: warning: ‘auto’ will change meaning in C++0x; please remove it
/tmp/SBo/chromaprint-1.4.2/src/utils.h:40:13: error: ‘size’ does not name a type
/tmp/SBo/chromaprint-1.4.2/src/utils.h:42:61: error: ‘size’ was not declared in this scope
/tmp/SBo/chromaprint-1.4.2/src/utils.h: In function ‘void chromaprint::ApplyWindow(InputIt, InputIt, WindowIt&, OutputIt&)’:
/tmp/SBo/chromaprint-1.4.2/src/utils.h:49:2: warning: ‘auto’ will change meaning in C++0x; please remove it
/tmp/SBo/chromaprint-1.4.2/src/utils.h:49:7: error: ‘input’ does not name a type
/tmp/SBo/chromaprint-1.4.2/src/utils.h:50:9: error: ‘input’ was not declared in this scope
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp: In member function ‘void chromaprint::FFTLib::Load(const int16_t*, const int16_t*, const int16_t*, const int16_t*)’:
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:27:2: warning: ‘auto’ will change meaning in C++0x; please remove it
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:27:7: error: ‘window’ does not name a type
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:28:2: warning: ‘auto’ will change meaning in C++0x; please remove it
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:28:7: error: ‘output’ does not name a type
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:29:22: error: ‘window’ was not declared in this scope
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:29:30: error: ‘output’ was not declared in this scope
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp: In member function ‘void chromaprint::FFTLib::Compute(chromaprint::FFTFrame&)’:
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:35:2: warning: ‘auto’ will change meaning in C++0x; please remove it
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:35:7: error: ‘input’ does not name a type
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:36:2: warning: ‘auto’ will change meaning in C++0x; please remove it
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:36:7: error: ‘output’ does not name a type
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:37:2: error: ‘output’ was not declared in this scope
/tmp/SBo/chromaprint-1.4.2/src/fft_lib_avfft.cpp:37:14: error: ‘input’ was not declared in this scope
make[2]: *** [src/CMakeFiles/chromaprint_objs.dir/fft_lib_avfft.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/chromaprint_objs.dir/all] Error 2
make: *** [all] Error 2
root@stinkpad:/home/ftp/MIX/chromaprint#
I'm building in my custom Slackware 13.37 x86_64 with GCC 4.5.2 against ffmpeg 3.0.7, FFTW 3.3.4 and cmake 3.5.2. I'm not a programmer but I can build my own packages, let me know what I may try to help debug this issue. Cheers, t0mg
You're missing a file called "chromaprint-0.6.tar.gz" on this Github download list.
The Chromaprint "Source code tarball" link is broken here: http://acoustid.org/chromaprint
Hi Lukas,
I'm trying to use the chromaprint_decode_fingerprint function but I get the following error message at runtime:
Debug Assertion Failed!
Program: MSVCP140D.DLL
File: VC\include\xstring
Line: 106
Expression: string iterator not incrementable
Do you know why?
Thanks.
You will find below a sample repro:
uint32_t *fp;
int length, algorithm;
char *encoded = "AQABz9GSJEkkKYmS4Tp6xvjx-tBpXMfRpUP1w3yGHmUPcWTwhnhgiYNeeBcu5HhbxA2PZuEFnSd-9FECq-gJPbtQ_fiLfkf3wvnRl9AO__jxCj7-QjzyoFek4xcmPnA2-qjUDz9yTsR56PFRJp4GP8ePLj2qY-NRfkL2oXEx6cFThPCh7_iRVnzQbX9wHc0UT0I_5Duao1KVGOsPlpdQLcqFHxf5oqfRFVpySvjR_Ch7_NCO87h05ChL7Do65vDIFC2H8zhyKnhqXJ6GdsuLw4c276h-TGEcfAfjmWgeYzy6HT6u5UhvhCceZSp0PD5iZzka9Zh05NOEZmsgxZTx50ifa8hxpRv0E1vHKciFHk0cFY0moRKzabgbDb3gH_2RH8k3lGuEKc_x3_hRPehX5ODRfDX6JCtOIVyOMFyP-4XyHWkaF9fRt0VzD7sOJlUkHX2Q9Ed-9PnR8EpwijfCJJFi9PmhLySPhmOC-sIZiI8m_ML3INJ3pI6UknCNnkHzyNDEpchz400d9IN99PiSo9kyDf0xXTrS_HCC79D64Tx4o1YSIReeCKH84Q0ORT7CNMKPmQma62inD7xoodlEJNOJXEHzo3qCMEn4omWg_UPKqBN69EYz5kPyDrkeCb2OKd2i4RJ6PB3CQ5Wo5shTMUH7Hf6IHsd5NNcQnjFGo8oP__DJQz8OJk9s5BROotERSmSOjyaUv0LqsziV4zmaK5jIFLXAxEk0xIfeIcyFqiEVXL_hGLnQUOXRJ8SHSLnRr_jx5IU35CH0N0gfHtdQ_Wj0ZniT7ENZXPDRrijZIMxn7Dkqo0nIoG_QVDsO_mi6yOibDJqyHf6DSiX2fdAyVEyCXDyqhD2aRyf2H09EMJkchE-g60GYK3grNHHwHE9I9DrSMoJ2ZMd7_Ch7WEftI24DqTrCEteio9ePLxIVIj-uW1CjK6goVoYnhYZuuElwNDfyIT4e4lGWKWhEyUF5XKic47xQ0ZygO0XXhAgTMzP-FN_x4_lQiynCxBlxPgivIEyNL0e64zu-hCR-fMzBieLxIzy0MEZ-MNcc-Bqc53gYUfCPh0c6MmFI6DWaijk-K8g_PNXRhKjTD72UBSXzgT_-YIx27EsUJ6iThkJTZUd-aM_R03iaCk-CUwITPUcPVVfwLA8m0UbTrLgSHR3-Y8-DUsKVB6EkJWh-_HgPTv3AZs_R23CcBfWRM1B1hB1K63iipLg9XETcZ0I3jynO8PiF64YtH1klhDvxhThXzFex3kG1HPZu9Dmu47mh5UGtHKp1POjyUMWfDJo6of8Gtgvy5EDfo1bgnWiX6wCGhEEAKADJIUAbILJzTAgDBDBCAgQQMEQQJABBwgJgBBMAAGaEAMwAh5wAikDkhQBGCIGkAgQASghihAmlEBDEMCOUAYYJ4pRVwhAEAiXEYWAUMchQBpQVhkwhgDUMAQAoMkgxJRUwjgFBBRBCEGM0BgBAAIhQRBJkkALCCAUMQIAIIQBQRDGDBAECAAGY4MYQIhSgBCEkKAHEggG8cAIYJIgUwJAHpCHAMAaEQEYo6IgAADgEAUIIBAQcMEIgYBkECEABCEYKAYYcA4oowBBABAAvBJJKMGIAEAYwA5QADAAGCINMaAKQJcQYjCCzxBBACAcGMM4II8IQKIghgFgABTOEUAegMQQ4wYCBSjgAiAFCEGCAYwZIIAA0QChAhBROUAQAEo4YR4AQhhhliAAMEAQUBtooAg5xjCADgCGAOCQIQgQghigwQAikBBAEAA";
chromaprint_decode_fingerprint(encoded, strlen(encoded), &fp, &length, &algorithm, 1); // string iterator not incrementable
Hi Lukas,
I try to compute fingerprint the following MP3 file with fpcalc but without success (rename ZIP to MP3):
chromaprint_issue.mp3.zip
fpcalc returns nothing in the console. And the chromaprint library fails after calling the avcodec_decode_audio4 function.
However, the file seems to be perfectly playable and ffprobe doesn't report any issue.
Do you know why the file cannot be fingerprinted by chromaprint?
Thanks.
Hi Lukáš,
I've been experimenting with compiling fpcalc for different platforms myself. Which scripts or compiler options are you using to create the release packages?
The official (release binaries)[https://acoustid.org/chromaprint] are all a few MB large. But when I compile myself with the instructions on the README.md
it's barely 100 KB so I'm probably missing some static dependencies but I'm not sure which compiler options I need to include all of those in the binary.
Cheers, Reinhard
→ cat ~/Downloads/01.mp3 | fpcalc -
DURATION=0
→ fpcalc ~/Downloads/01.mp3
DURATION=227
→ fpcalc -version
fpcalc version 1.4.3
Reproducible with every file I tried.
Hi,
The file Disc_6_-3-_First_Date.flac is Blink's "First Date", but it's being recognized as Queen's "Somebody to Love".
The generated fingerprint is:
DURATION=171
FINGERPRINT=AQADtImiZMkkJYmEQ2uIhzHiLSmaPULX486B5kyRJ8IbOYK-wyPRZj808oErom9YnNKP_ENI8oT5Q3um4z9iGs-HS8fHdIgvD030Q3vz4JlRi0Fz4Tx6ZRAPL8dMWiny1kHz4_pxXAd3_PiOfHkxSeMhMi92HSfe4_jR4-EIPuSBY3qOxlkufLtQPSma449y3PiC6YPWY0fI-3AcwkevC5M45WiOI-8j45cD_TY0tnBHhKOO7kfz4xuI-0IbRZmDzyouabDEIRZ58CiPP8Z1PTjxG1O-5KhkHc1yaD_eoAmPDuWPhsQZHQ26480RVkauo9Qh2w3yDz-6M3B_VE1RK0d66EhPCpMevJGL--CzI38F6S_CbAlqGj8eHf9xdXiUzGjeIvzxSYccMkX-4JISHdWqDM1z5L2Cfmj4QzGl4Eeq5YilMdh96NahB__BiyPUmhHKP0QzGT-G5oGfHJULfdnxJpiZWcajPiiR6UF_9MePHjfCEz88HT8ehUePL3iQIzx-lBqk32jkKAiN68G5H0eWVNKFqtnRdNFKoTP4C3kO5viSHA51Dj_SI2H-oheJ49KSB0_yoVWCKQpx4QjfBk2H9Tk8KSH2D_oOXWHRLB-mHTcePId1KH_Q5SvC8Pjh3TiXB6eQL4d65PjxksL_EFPccMgV44d6_GB0vNCBdw_ovDKeQaOUo7khHxcaMeHQI7wPPzEo80JY6PLxXLDmB_-iIR9LNEt4hM-hI1-U4BSDJzp-UI915A-ebcWNPh9ST1FxCuEy7B_66RCfowhPHY8UHU8SRHoOPcaH8KlxJdIOuz9c4ZnxOPnhF1VK41eYDnkiHrqCvPAf4RWupbgiWGOO2JmO5JPwg809fDEaH_3Bv8iT8KgsBeuPv_hxXAyeFH1MqH9QizkaJZJGXMqHvkPz4dCTPMFJDoXjieiTZ5gffD8OqReYXKVR6R0O5sF94oZ2euisET6DLJr6odcNTz8uNcR3MM9Bx0GDnpqR45BCOM-RPfgGfw_eLNVwHk-S48rRHD924cuT4BdCJsejxEjOE81z_PjwRdnRnNGwH_miQC-qo9ZkiMnxnMiJHz8-XBvco5VRkYJv9EuOvMSL6w56aInD4xTxJ9AWMscTBb-hWdmGM_hxnrhMIc8xpRT6HPmPB9clHM354oTIjEf147qQ9zhu_MlxnUIO7T_8HCdcSUGvHBf6w9Ft6LmH8Q9-_AiPm7iP87iCsrrwPvgy5IfDpfjFQ6GJnsehS8V_tM-QHq7j40ef4oh3PIKsKDveVMM_1PAkBp8fWCzOw1eOYvo8-DrKXoaU5EKLpxXC9Db64zucHzlxHpeOqkoeXBfxw-vi4ujyBZkfHpcuRMdxHVrX4ol24YLO4SNyHteNMlxCxOLxYzvkSccVoUmnoD-0HD0z4TGTII9Q-EfV8LhyIZ-xNoZeHnd0_MZk0vD-YGqEd4em17C2_XhDG_WRU2h-1F_xffjiweeDh8XzIycPPaiO7aSIVOGD1vgPy7h8jDW-SOtxNUaeHvqNfEUfCu6DOmGK6dmHH-Et6AN5nMSPF9TTDXp0BU-y4ymHKcp39MlT9PAZ1ArK6MOUPngi5GoSnDny4zzeLB2aHdpzvDdifPhRijsuBTXxH_klSOxT5BGDpi6Y18cVHi8L5kiP52hk7MoDxWSOJwr043vA5OiO4z6RJzu-CPURRj92c1B1HT8m5sdXVMeOaZ6PJ7iRfuj04z-O9wg5RdB05GeC90EeCdNN4MoCUUuOa9CEPMSNizbWW0H4Hm6ga3DkoVJGQ1eOvjbCHN9wwSUe8UYsXVAd-AeXKUyR5xGe9EkRkkkhJUe-4AvT4MlwLWhOhHPS4ZOh-IH22kjvwX6F7_Bx_cidQz_iR0b_CFcQMtHRPIdCnMWVJY6Rj3lQP3iQ7uh15P3wMjy-LDnyRdCFME-JPrjKE3PyBl9-YkoeInwCPQvy7Dg_XCmaEz1RHQ8jlGPyImoufMKnodtd_PhOXLixD0_y4v2gyw9qBx-ePHif4EEzZtAsHX-KGzsqy4J4fNuww4e_iNBj3DrSxEefCT1h8sNZmA_yF5eO9IEnSTr6ZMefIVePS0f9gknELNB5PB24c7j04UmE7j7Eh0ODixaeXLh4oeGOM4vRYw909cLPIc889DCPPbhz5DdeQszRRyyRoz1-3BP84ywuPIevI3yHF_ldnAfzoDlT_MyEZ1bwMniSkwgXKQ_0I0d_PLNwJk-CC-2y4Ep2pJeDPsePF_TQ5TryoyeCBy-k46GQk8bHozkq4zl6HWHa45oIt3iO0ZIV_IGlZceJ2niP0J-C_EGDycaVBz-h_kejH1UlFceV6QJr-dCMf0VxZXiOU8ehHT2OC1cmgYyqCVry4dkLH_mRC-_hJkF__IXiK3h5ob0hR7B148ePRsfV4xkRd3nw46QxnYaP_MJ_oT_-FPxxHccVHEIjNhr6o97Q5NCPayXig5_S4xPCRA_6PHiCy9HQwJdyMM-F-Ecz5jHaF5dyoTHC5_hx4jyO50RJJR5MRcJzjDz8LDV2HoAYBQYoZAwBBgADIBCCKAGEocIAYwQAigHnBFBAECQIU8Aj4ZwRxChhBLJcCCMQWUIhQDAACBnGuBBAMEicEIIIQYwREBFBiHLMAKAAUgwIxRRQVgjDFAIOSCWoMAoY6AEQxBBCBGCWMcCEQIQhYIQygAAIhAXCEQUcMBAAAAhwBAGBgDAACAQMUgIKCZhihmEnRTaCASAMAMQIgiSQQgJGlAFCEKAAV4IAwAwhTFLKIDRGCEcIgMoI44UUCADDjGdECkYEUIYYpAQDgAAGAABCCcUlEJIYQaAQTBAwiCDACCAUEQBCAYQAjAAAAREEMCIsAZJIxACBBACgEAGIAE8RQwgAAixhhCAhGBBCKECQAsYKIAwAgDgCFJHQIMIIEMQQhAiyyiGhkGLAIEAsCAAYRqQiDkkElEJcCAGIBUIhRgEgSjGggVICCaMMkYKQABwzgAmFHACGAMEWAIAwApkgBgBgkFLWCQCZUsAYx5gwQAlkqQAGAA0UBFQpgxwAgDgBEDECAIQAMowpZAgxgjABCDAoAgkMWMwIhIQglDhhkGAcEoOAQwAIZoQgDgEAkAIYKYEAYEQAQZQghhBHFBAUKCSkIsIIZBAgRjAgjGKGGCEEEIoBggBkQFCBhDGUMQUAYQRIABATFDhlCCCGImEhRwIwooQwAEABALQKgCIEA0JAJJQxAkmFqJWAEYEIMUAhUIwCBhFCEHYEMCUIEgRTBAAQSBKhiDCAIQGQIxYAQQggggALABEEAIOEIQhBIolwhgABGIBaEEQAA0whBCgxAHmLnAAQCKmwcoABwhAAAhAghFJIUUMQIQAgZYgwxDoAAFNMQkCIEJKgxpBCxECKBAHWAGIIAIwJgggCkiEGDGGEKIUsEAopZxUiQhDEjHFCMUScIgABRZWRBBBBADEIMAEEBEYuRhVQjiDlDAbCAOaEEQYp5gxCjEBDiBIKASQIMJQQS45cRgCBlCBYAMIIAMIYIRgRgmjjGBIMMaSAAQA
Not sure if this is the correct place to report this issue, I apologize if not.
Thanks!
It would be nice if fpcalc could generate fingerprints for raw AC-3 audio. Currently it is necessary to convert them to wav and scan that.
Hi Lukas,
It seems that MSVC doesn't define the NDEBUG macro under Release mode, so the preprocessor condition in the src/debug.h and src/image.h is always false:
#ifdef(NDEBUG)
#endif
Perhaps we could use #ifndef(_DEBUG) instead of #ifdef(NDEBUG), at least when the compiler is MSVC?
Regards,
Cyber Sinh
I've found an issue where fpcalc will output different fingerprints for the SAME file and the SAME algorithm on DIFFERENT operating systems.
The operating systems I've tested are two computers with Windows 10 and two different versions of Ubuntu (14.04.5 LTS and 16.04.1 LTS.)
I've tested this with both the default algorithm and the "test1" algo (could not find any documentation on any other algorithms to try.)
This is a problem for me because I have files that I want to compare on my Ubuntu servers but can't because I can't match them with the IDs I've verified on my Windows computers.
The avcodec_decode_audio2
was removed in FFmpeg/FFmpeg@9b4f1cdb, which makes Chromaprint fail to build when BUILD_TOOLS
is ON
. We will have to switch to avcodec_decode_audio3
. It probably doesn't make sense to support both.
Hi Lukas,
The matcher API has been removed 12 days ago because it has needed a better design.
The release of chromaprint v1.4 seems to be imminent.
When can we expect a return of the matcher API? In the 1.4? 2.0?
Thank you very much.
Hi,
There was no release pinned for 1.4.4, can you do it please?
Probably because of that, it looks like various vendors are not aware that this version exists (FreeBSD, Debian and others).
Thanks in advance!
It needs to use the wide-char APIs to properly support Unicode filenames on Windows. A hacky way of integrating this into FFmpeg can be found in Picard.
The audio processing code is currently fully streamable, but in order to generate the fingerprint we buffer the results and process them at the end. This is not necessary, it was just easier to do it that way. It would be nice to change this, so that the library can start providing fingerprint data as soon as possible.
Hi Lukas,
I tried to compile chromaprint 1.4 with MSVC 2015 and the compilation failed because __builtin_popcount, a GCC specific function, is missing.
I had to add this code to allow MSVC to compile the library:
#ifdef _MSC_VER
#include <intrin.h>
#define __builtin_popcount __popcnt
#define __builtin_popcountll __popcnt64
#endif
I don't know if adding that is sufficient to get robust code. According to the MSDN documentation, the hardware support should be checked before using _popcount.
To determine hardware support for the popcnt instruction, call the __cpuid intrinsic with InfoType=0x00000001 and check bit 23 of CPUInfo[2] (ECX). This bit is 1 if the instruction is supported, and 0 otherwise.
If you run code that uses this intrinsic on hardware that does not support the popcnt instruction,
the results are unpredictable.
To determine hardware support for the popcnt instruction, call the __cpuid intrinsic with InfoType=0x00000001 and check bit 23 of CPUInfo[2] (ECX).
This bit is 1 if the instruction is supported, and 0 otherwise.
If you run code that uses this intrinsic on hardware that does not support the popcnt instruction,
the results are unpredictable.
It seems GCC use a fallback implementation if __builtin_popcount is called on a system without popcount CPU support.
Hi!
I'm trying to build under CentOS 7 x86_64 cmake version 2.8.12.2 and following error is accured:
cmake -DFFTW3_DIR=xxxxxxxxxx -DCMAKE_BUILD_TYPE=Release -DBUILD_TOOLS=ON
-- Using avfft for FFT calculations
-- Using swresample for audio conversion
-- Configuring done
**CMake Error at src/cmd/CMakeLists.txt:27 (add_library):**
Cannot find source file:
**INTERFACE**
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
What am I doing wrong?
When upgrading SynoCommunity Chromaprint from 1.3.1 to 1.4.2, I faced troubles because of find_package(FFmpeg)
failing to find stdint.h
with enlisted path. I wonder if this issue may be generic in any cross-compilation context.
As a work-around, I have commented last condition AND FFMPEG_STDINT_INCLUDE_DIR
at https://github.com/acoustid/chromaprint/blob/master/cmake/modules/FindFFmpeg.cmake#L111
Original makefile for Chromaprint 1.3.1: https://github.com/SynoCommunity/spksrc/blob/master/cross/chromaprint/Makefile
Patch I applied to get Chromaprint 1.4.2 configured properly: cross/chromaprint/patches/002-cmake-find-ffmpeg.patch
--- cmake/modules/FindFFmpeg.cmake.orig 2017-07-30 09:38:01.979775537 +0200
+++ cmake/modules/FindFFmpeg.cmake 2017-07-30 09:51:43.141003104 +0200
@@ -108,7 +108,7 @@
SET(FFMPEG_FOUND "NO")
# Note we don't check FFMPEG_LIBSWSCALE_FOUND here, it's optional.
-IF (FFMPEG_LIBAVFORMAT_FOUND AND FFMPEG_LIBAVCODEC_FOUND AND FFMPEG_LIBAVUTIL_FOUND AND FFMPEG_STDINT_INCLUDE_DIR)
+IF (FFMPEG_LIBAVFORMAT_FOUND AND FFMPEG_LIBAVCODEC_FOUND AND FFMPEG_LIBAVUTIL_FOUND)
SET(FFMPEG_FOUND "YES")
Is there better option to support cross-compiling toolchains which provides their own stdint.h
and so not found in usual system locations ?
Thank you in advance for your help
I would like to leverage the chroma feature functionality described at https://oxygene.sk/2011/01/how-does-chromaprint-work/ but am not sure where to look in the repository.
Specifically, I would like to access the array/pointer or whatever structure this is being held in when chromaprint runs. Any guidance as to where to find this would be appreciated.
Hi,
I'm trying to install chromaprint on Ubuntu 16.04 but CMake keeps telling me that FFmpeg can't be found.
I'm certain ffmpeg is installed andwhich ffmpeg
returns /usr/local/bin/ffmpeg
Any solution ?
Thanks.
Hi Lukas,
The FFmpegAudioReader class uses two FFmpeg deprecated API:
'AVStream::codec': was declared deprecated in chromaprint\src\audio\ffmpeg_audio_reader.h 179
'avcodec_decode_audio4': was declared deprecated in chromaprint\src\audio\ffmpeg_audio_reader.h 295
More info at:
https://ffmpeg.org/doxygen/3.1/group__lavc__encdec.html
Regards
Hi Lukas,
I understand that the maximum size in bytes of a one-second footprint of audio data is 32 (8 * sizeof(uint)
). So, I can easily calculate the size in bytes for a buffer that may contain the whole fingerprint.
But, when I request a fingerprint for the first 120 seconds of an audio file, its size is 3792 bytes (uint[948]
) and not 3840 (120x8x4). If I request a fingerprint for the first 60 seconds, its size is 1852 bytes (uint[462]
) and not 1920 (60x8x4).
How can I calculate the minimum size in bytes that the fingerprint should have based on a given duration?
Thank you.
Hi, Trying to build on OS X 10.13.6 fails on linking the fpcalc lib
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TOOLS=ON -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 -DCMAKE_OSX_ARCHITECTURES="x86_64" -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/ -DFFT_LIB=vdsp . make
Output:
[ 81%] Built target chromaprint_objs [ 90%] Built target chromaprint [ 95%] Linking CXX executable fpcalc Undefined symbols for architecture x86_64: "_AudioConverterDispose", referenced from: _ffat_close_decoder in libavcodec.a(audiotoolboxdec.o) _ffat_close_encoder in libavcodec.a(audiotoolboxenc.o) "_AudioConverterFillComplexBuffer", referenced from: _ffat_decode in libavcodec.a(audiotoolboxdec.o) _ffat_encode in libavcodec.a(audiotoolboxenc.o) "_AudioConverterGetProperty", referenced from: _ffat_create_decoder in libavcodec.a(audiotoolboxdec.o) _ffat_init_encoder in libavcodec.a(audiotoolboxenc.o) "_AudioConverterGetPropertyInfo", referenced from: _ffat_create_decoder in libavcodec.a(audiotoolboxdec.o) _ffat_init_encoder in libavcodec.a(audiotoolboxenc.o) "_AudioConverterNew", referenced from: _ffat_create_decoder in libavcodec.a(audiotoolboxdec.o) _ffat_init_encoder in libavcodec.a(audiotoolboxenc.o) "_AudioConverterReset", referenced from: _ffat_decode_flush in libavcodec.a(audiotoolboxdec.o) _ffat_encode_flush in libavcodec.a(audiotoolboxenc.o) "_AudioConverterSetProperty", referenced from: _ffat_create_decoder in libavcodec.a(audiotoolboxdec.o) _ffat_init_encoder in libavcodec.a(audiotoolboxenc.o) "_AudioFormatGetProperty", referenced from: _ffat_create_decoder in libavcodec.a(audiotoolboxdec.o) "_AudioFormatGetPropertyInfo", referenced from: _ffat_create_decoder in libavcodec.a(audiotoolboxdec.o) "_BZ2_bzDecompress", referenced from: _matroska_decode_buffer in libavformat.a(matroskadec.o) "_BZ2_bzDecompressEnd", referenced from: _matroska_decode_buffer in libavformat.a(matroskadec.o) "_BZ2_bzDecompressInit", referenced from: _matroska_decode_buffer in libavformat.a(matroskadec.o) "_CFArrayCreate", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_CFArrayCreateMutableCopy", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_CFArrayGetCount", referenced from: _vtenc_frame in libavcodec.a(videotoolboxenc.o) _import_pem in libavformat.a(tls_securetransport.o) "_CFArrayGetValueAtIndex", referenced from: _vtenc_frame in libavcodec.a(videotoolboxenc.o) _tls_open in libavformat.a(tls_securetransport.o) "_CFArraySetValueAtIndex", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_CFBooleanGetValue", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_frame in libavcodec.a(videotoolboxenc.o) "_CFDataCreate", referenced from: _ff_videotoolbox_avcc_extradata_create in libavcodec.a(videotoolbox.o) _ff_videotoolbox_hvcc_extradata_create in libavcodec.a(videotoolbox.o) _videotoolbox_start in libavcodec.a(videotoolbox.o) _import_pem in libavformat.a(tls_securetransport.o) "_CFDictionaryCreate", referenced from: _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) "_CFDictionaryCreateMutable", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) _videotoolbox_start in libavcodec.a(videotoolbox.o) "_CFDictionaryGetValueIfPresent", referenced from: _vtenc_frame in libavcodec.a(videotoolboxenc.o) "_CFDictionarySetValue", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) _videotoolbox_start in libavcodec.a(videotoolbox.o) "_CFNumberCreate", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) _videotoolbox_start in libavcodec.a(videotoolbox.o) "_CFRelease", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_frame in libavcodec.a(videotoolboxenc.o) _vtenc_close in libavcodec.a(videotoolboxenc.o) _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) _vtenc_output_callback in libavcodec.a(videotoolboxenc.o) _videotoolbox_uninit in libavcodec.a(videotoolbox.o) ... "_CFRetain", referenced from: _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) _vtenc_output_callback in libavcodec.a(videotoolboxenc.o) _tls_open in libavformat.a(tls_securetransport.o) "_CFStringCreateWithCString", referenced from: _import_pem in libavformat.a(tls_securetransport.o) "_CMBlockBufferCopyDataBytes", referenced from: _vtenc_frame in libavcodec.a(videotoolboxenc.o) "_CMBlockBufferCreateWithMemoryBlock", referenced from: _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o) "_CMSampleBufferCreate", referenced from: _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o) "_CMSampleBufferGetDataBuffer", referenced from: _vtenc_frame in libavcodec.a(videotoolboxenc.o) "_CMSampleBufferGetDecodeTimeStamp", referenced from: _vtenc_frame in libavcodec.a(videotoolboxenc.o) "_CMSampleBufferGetFormatDescription", referenced from: _vtenc_frame in libavcodec.a(videotoolboxenc.o) _vtenc_output_callback in libavcodec.a(videotoolboxenc.o) "_CMSampleBufferGetPresentationTimeStamp", referenced from: _vtenc_frame in libavcodec.a(videotoolboxenc.o) "_CMSampleBufferGetSampleAttachmentsArray", referenced from: _vtenc_frame in libavcodec.a(videotoolboxenc.o) "_CMSampleBufferGetTotalSampleSize", referenced from: _vtenc_frame in libavcodec.a(videotoolboxenc.o) "_CMTimeMake", referenced from: _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) "_CMVideoFormatDescriptionCreate", referenced from: _videotoolbox_start in libavcodec.a(videotoolbox.o) "_CMVideoFormatDescriptionGetH264ParameterSetAtIndex", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_CVBufferSetAttachments", referenced from: _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) "_CVPixelBufferCreateWithPlanarBytes", referenced from: _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) "_CVPixelBufferGetBaseAddress", referenced from: _vt_map_frame in libavutil.a(hwcontext_videotoolbox.o) "_CVPixelBufferGetBaseAddressOfPlane", referenced from: _vt_map_frame in libavutil.a(hwcontext_videotoolbox.o) "_CVPixelBufferGetBytesPerRow", referenced from: _vt_map_frame in libavutil.a(hwcontext_videotoolbox.o) "_CVPixelBufferGetBytesPerRowOfPlane", referenced from: _vt_map_frame in libavutil.a(hwcontext_videotoolbox.o) "_CVPixelBufferGetHeight", referenced from: _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o) _vt_map_frame in libavutil.a(hwcontext_videotoolbox.o) "_CVPixelBufferGetPixelFormatType", referenced from: _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o) _vt_map_frame in libavutil.a(hwcontext_videotoolbox.o) "_CVPixelBufferGetPlaneCount", referenced from: _vt_map_frame in libavutil.a(hwcontext_videotoolbox.o) "_CVPixelBufferGetWidth", referenced from: _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o) _vt_map_frame in libavutil.a(hwcontext_videotoolbox.o) "_CVPixelBufferIsPlanar", referenced from: _vt_map_frame in libavutil.a(hwcontext_videotoolbox.o) "_CVPixelBufferLockBaseAddress", referenced from: _vt_map_frame in libavutil.a(hwcontext_videotoolbox.o) "_CVPixelBufferRelease", referenced from: _videotoolbox_buffer_release in libavcodec.a(videotoolbox.o) _ff_videotoolbox_uninit in libavcodec.a(videotoolbox.o) _videotoolbox_uninit in libavcodec.a(videotoolbox.o) _videotoolbox_decoder_callback in libavcodec.a(videotoolbox.o) _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o) "_CVPixelBufferRetain", referenced from: _videotoolbox_decoder_callback in libavcodec.a(videotoolbox.o) "_CVPixelBufferUnlockBaseAddress", referenced from: _vt_map_frame in libavutil.a(hwcontext_videotoolbox.o) _vt_unmap in libavutil.a(hwcontext_videotoolbox.o) "_SSLClose", referenced from: _tls_open in libavformat.a(tls_securetransport.o) _tls_close in libavformat.a(tls_securetransport.o) "_SSLCopyPeerTrust", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_SSLCreateContext", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_SSLGetBufferedReadSize", referenced from: _tls_read in libavformat.a(tls_securetransport.o) "_SSLHandshake", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_SSLRead", referenced from: _tls_read in libavformat.a(tls_securetransport.o) "_SSLSetCertificate", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_SSLSetConnection", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_SSLSetIOFuncs", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_SSLSetPeerDomainName", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_SSLSetSessionOption", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_SSLWrite", referenced from: _tls_write in libavformat.a(tls_securetransport.o) "_SecIdentityCreate", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_SecItemImport", referenced from: _import_pem in libavformat.a(tls_securetransport.o) "_SecTrustEvaluate", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_SecTrustSetAnchorCertificates", referenced from: _tls_open in libavformat.a(tls_securetransport.o) "_VTCompressionSessionCompleteFrames", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_frame in libavcodec.a(videotoolboxenc.o) _vtenc_close in libavcodec.a(videotoolboxenc.o) "_VTCompressionSessionCreate", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_VTCompressionSessionEncodeFrame", referenced from: _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) "_VTCompressionSessionPrepareToEncodeFrames", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_VTDecompressionSessionCreate", referenced from: _videotoolbox_start in libavcodec.a(videotoolbox.o) "_VTDecompressionSessionDecodeFrame", referenced from: _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o) "_VTDecompressionSessionInvalidate", referenced from: _videotoolbox_uninit in libavcodec.a(videotoolbox.o) _av_videotoolbox_default_free in libavcodec.a(videotoolbox.o) _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o) "_VTDecompressionSessionWaitForAsynchronousFrames", referenced from: _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o) "_VTSessionCopyProperty", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_VTSessionSetProperty", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "___CFConstantStringClassReference", referenced from: CFString in libavcodec.a(videotoolboxenc.o) CFString in libavcodec.a(videotoolboxenc.o) CFString in libavcodec.a(videotoolboxenc.o) CFString in libavcodec.a(videotoolboxenc.o) CFString in libavcodec.a(videotoolboxenc.o) CFString in libavcodec.a(videotoolboxenc.o) CFString in libavcodec.a(videotoolboxenc.o) ... "_iconv", referenced from: _avcodec_decode_subtitle2 in libavcodec.a(decode.o) "_iconv_close", referenced from: _avcodec_open2 in libavcodec.a(utils.o) _avcodec_decode_subtitle2 in libavcodec.a(decode.o) "_iconv_open", referenced from: _avcodec_open2 in libavcodec.a(utils.o) _avcodec_decode_subtitle2 in libavcodec.a(decode.o) "_kCFAllocatorDefault", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) _ff_videotoolbox_avcc_extradata_create in libavcodec.a(videotoolbox.o) _ff_videotoolbox_hvcc_extradata_create in libavcodec.a(videotoolbox.o) _videotoolbox_start in libavcodec.a(videotoolbox.o) _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o) ... "_kCFAllocatorNull", referenced from: _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o) "_kCFBooleanFalse", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kCFBooleanTrue", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) _videotoolbox_start in libavcodec.a(videotoolbox.o) "_kCFCopyStringDictionaryKeyCallBacks", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) "_kCFTypeArrayCallBacks", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kCFTypeDictionaryKeyCallBacks", referenced from: _videotoolbox_start in libavcodec.a(videotoolbox.o) "_kCFTypeDictionaryValueCallBacks", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) _videotoolbox_start in libavcodec.a(videotoolbox.o) "_kCMFormatDescriptionExtension_SampleDescriptionExtensionAtoms", referenced from: _videotoolbox_start in libavcodec.a(videotoolbox.o) "_kCMSampleAttachmentKey_NotSync", referenced from: _vtenc_frame in libavcodec.a(videotoolboxenc.o) "_kCMTimeIndefinite", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_frame in libavcodec.a(videotoolboxenc.o) _vtenc_close in libavcodec.a(videotoolboxenc.o) "_kCMTimeInvalid", referenced from: _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferColorPrimariesKey", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferColorPrimaries_ITU_R_709_2", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferGammaLevelKey", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferPixelAspectRatioHorizontalSpacingKey", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferPixelAspectRatioVerticalSpacingKey", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferTransferFunctionKey", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferTransferFunction_ITU_R_709_2", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferTransferFunction_SMPTE_240M_1995", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferTransferFunction_UseGamma", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferYCbCrMatrixKey", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferYCbCrMatrix_ITU_R_601_4", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferYCbCrMatrix_ITU_R_709_2", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kCVImageBufferYCbCrMatrix_SMPTE_240M_1995", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kCVPixelBufferHeightKey", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _videotoolbox_start in libavcodec.a(videotoolbox.o) "_kCVPixelBufferIOSurfaceOpenGLTextureCompatibilityKey", referenced from: _videotoolbox_start in libavcodec.a(videotoolbox.o) "_kCVPixelBufferIOSurfacePropertiesKey", referenced from: _videotoolbox_start in libavcodec.a(videotoolbox.o) "_kCVPixelBufferPixelFormatTypeKey", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _videotoolbox_start in libavcodec.a(videotoolbox.o) "_kCVPixelBufferWidthKey", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _videotoolbox_start in libavcodec.a(videotoolbox.o) "_kVTCompressionPropertyKey_AllowFrameReordering", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kVTCompressionPropertyKey_AverageBitRate", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kVTCompressionPropertyKey_ColorPrimaries", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kVTCompressionPropertyKey_DataRateLimits", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kVTCompressionPropertyKey_MaxKeyFrameInterval", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kVTCompressionPropertyKey_MoreFramesAfterEnd", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kVTCompressionPropertyKey_MoreFramesBeforeStart", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kVTCompressionPropertyKey_PixelAspectRatio", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kVTCompressionPropertyKey_ProfileLevel", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kVTCompressionPropertyKey_TransferFunction", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kVTCompressionPropertyKey_YCbCrMatrix", referenced from: _vtenc_create_encoder in libavcodec.a(videotoolboxenc.o) "_kVTEncodeFrameOptionKey_ForceKeyFrame", referenced from: _vtenc_send_frame in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_Baseline_1_3", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_Baseline_3_0", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_Baseline_3_1", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_Baseline_3_2", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_Baseline_4_1", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_High_5_0", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_Main_3_0", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_Main_3_1", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_Main_3_2", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_Main_4_0", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_Main_4_1", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_kVTProfileLevel_H264_Main_5_0", referenced from: _vtenc_init in libavcodec.a(videotoolboxenc.o) "_lzma_code", referenced from: _decode_frame in libavcodec.a(tiff.o) "_lzma_end", referenced from: _decode_frame in libavcodec.a(tiff.o) "_lzma_stream_decoder", referenced from: _decode_frame in libavcodec.a(tiff.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [src/cmd/fpcalc] Error 1 make[1]: *** [src/cmd/CMakeFiles/fpcalc.dir/all] Error 2 make: *** [all] Error 2
Does it require the CoreAudio framework to be passed as a library/framework to ld? If so can you provide example how to do that.?
Thanks,
In https://github.com/metabrainz/picard/blob/master/picard/acoustid.py#L204-L205, DURATION=xxx is parsed as an integer by casting with Pythons int
constructor. This doesn't support any kind of decimal specifiers and doesn't automatically floor or ceil the value. https://github.com/acoustid/chromaprint/blob/master/src/cmd/fpcalc.cpp#L195 however now prints the duration with a minimum of 2 digits after the decimal point.
You can probably guess the error message by now, but here it is for search engines :):
Traceback (most recent call last):
File "./picard/acoustid.py", line 205, in _on_fpcalc_finished
duration = int(parts[1])
ValueError: invalid literal for int() with base 10: '280.49'
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.