ddiakopoulos / libnyquist

:microphone: Cross platform C++11 library for decoding audio (mp3, wav, ogg, opus, flac, etc)
BSD 2-Clause "Simplified" License
534 stars 64 forks source link

On MP3 decoding #34

Closed raub closed 5 years ago

raub commented 6 years ago

There's no need to justify for this feature. Also I think in 2k18 the technology has already come to a point where MP3 is available for ordinary mortals. Whatever people say against it.

So there is libmpg123, and as I see it's LGPLv2, so it can be used commercially and requires dynamic linking. But libnyquist is built as a staticlib. Btw, why exactly libnyquist (and LabSound) only support staticlib build?

May be we could arrange it the other way around. Currently, your AudioDecoder is very rigid. If it allowed some external tampering, I could simply add my own decoder in the middle of runtime.

Taking the "external" approach even further, I could send the decoded MP3 data in some intermediate format... For example with ".mp3dec" extension, and there will be the decoded data and metadata in a specified format. But this is the least desired way.

ddiakopoulos commented 6 years ago

Hi @raub - some people (like myself) prefer static linkage models -- less dynamic libraries to copy around. libnyquist was created out of frustration with the LGPL'd libsndfile to start with. Runtime extensibility is a nice feature but beyond the scope of what I had intended to provide here.

If I add MP3, it would be through this library in the public domain: https://github.com/lieff/minimp3

raub commented 6 years ago

I'm ok with pretty much any. It all comes down to the fact that the demos, I'm trying to port from web, all use mp3 resources. And currently LabSound (using libnyquist decoders) is incapable of mp3, so for me anything is better then nothing.

ddiakopoulos commented 5 years ago

Hi @raub - implemented in acaf19d97e028fc499a316942bfa62c5934bc957