Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

unnecessary and problematic dependency on C++ #140

Open
andrewrk opened this issue Apr 2, 2024 · 1 comment
Open

unnecessary and problematic dependency on C++ #140

andrewrk opened this issue Apr 2, 2024 · 1 comment

Comments

@andrewrk
Copy link

andrewrk commented Apr 2, 2024

This project depends on C++ but it doesn't need to. In a music player project with otherwise a lot of C dependencies, this is the only C++ dependency and the only thing that makes my music player need to link against libc++, which brings a lot of problems.

FFmpeg for example is a large C project that does not have a libc++ dependency. It also has support for chromaprint integration, but if you enable that integration, it makes FFmpeg depend on libc++.

It also seems like this project implements a lot of FFmpeg internally. Filtering, resampling, normalizing, fft, etc.

Would you consider some of these things?

  1. Convert to plain C to offer a library that avoids requiring users bring an unwanted C++ dependency.
  2. Directly maintain an implementation of the chromaprint algorithm upstream in FFmpeg so that it has chromaprint support without integrating with an external library. It looks like a lot of boilerplate/wrapping code could be deleted.

Such things would make my music player:

  • easier for contributors to build from source
  • build from source faster
  • smaller binary size
  • more portable (libc++ is less portable than libc)
@lalinsky
Copy link
Member

lalinsky commented Apr 5, 2024

I'm not really planning to do conversion to C. If you really want it and are willing to implement it yourself, I'm open to review the code and help with testing the compatibility.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants