acoustid / chromaprint

C library for generating audio fingerprints used by AcoustID
Other
969 stars 132 forks source link

libchromaprint circle dependency with ffmpeg #129

Closed kwizart closed 1 year ago

kwizart commented 1 year ago

This is Fedora/RPM Fusion package maintainer advice request.

In Fedora, chromaprint now is build with ffmpeg enabled. On the other hand, ffmpeg also has libchromaprint enabled. This lead to a circle dependency.

Nothing that cannot be workaround on the packaging side but still annoying to deal with... (At least until libchromaprint is not used in a process built with a different ffmpeg version)...

I wonder if it can be possible to fix the issue by moving the few functions using libavcodec/libavutils from the library to the binary using it ?

lalinsky commented 1 year ago

@kwizart This is an unfortunate situation. Using the ffmpeg binary from chromaprint is not an option.

There are two uses of FFmpeg:

If the circular dependency is a problem, I'd suggest disabling the chromaprint filter in FFmpeg. It's not a commonly used feature and people who really need it can build FFmpeg themselves. It's far more common for applications to use the fpcalc binary to generate audio fingerprints.

If you want to resolve it, you would need to split the chromaprint package into two internally.

The first one only builds libchromaprint with fftw as the FFT library. It will not link to FFmpeg at all in that case.

Then you can build FFmpeg against libchromaprint.

And then you can build fpcalc against libchromaprint and libav* libraries.