Re: [mpg123-users] mpg123 1.23.0 released
Brought to you by:
sobukus
From: Thomas O. <tho...@or...> - 2016-01-31 11:37:08
|
Am Sun, 31 Jan 2016 06:12:36 +0200 schrieb Nikos Chantziaras <re...@gm...>: > Talking about re-inventing things, didn't you just re-invent libao? Yes. Well, sort of. I'm not exactly sure how old libao is, but since I repackaged the existing audio driver code in mpg123, it doesn't feel so much like reinventing the wheel. In fact, we used to have a libao output module, too, but that was removed later because it did not add anything once we got a proper ALSA output from Clemens Ladisch. Truth being told, one factor indeed was that libao is GPL-only, while mpg123 is an LGPL project. You cannot use libao from a program that is not GPL-compatible. This restricts the freedom to write programs using the lib under your conditions (note: I do support Free Software; just noting the fact that your choices are limited when you are forced to use GPL). Weren't it for the license difference, one might have contributed any appropriate bits from mpg123 and replaced the internal code totally with libao. But even then, I would be torn between relying on an existing libao or shipping a copy … as mpg123 used to be a software package without any further requirements. You just get the source, have your compiler and system API present, build, and get your fully-functional MP3 player. Having a list of mandatory prerequisites (even if it's only one), just isn't that sexy. It is conceivable to add optional dependencies to support additional features, though. Also, the individual audio output drivers are not the hardest part. That is the separate shared-memory buffer process (--buffer parameter) that I extracted from the mpg123 sources to include in libout123. Though, I really only did that because it was already there. Lots of headache could have been avoided;-) The act of formalising the API between the application and the audio output also helped to improve the code structure, I think. It showed that functionality has been added ad-hoc over time, hacks here or there (p.ex. with the buffer communication). When you don't care about the buffer or the license compatibility, libao can be all you want from an output library. It might even be better than libout123 in its current state, as I didn't really test the more exotic modules (the list of libao and libout123 platform outputs looks suspiciously similar … not sure how recent the last test of libao on sgi IRIX was done;-). They should be easy to fix up, though, should you feel the need. Hm, I don't see JACK on the list of libao outputs. But they do have RoarAudio in turn. Hm, a module for it's I/O driven API should be trivial, though. Plus: You can use the good old OSS output and wrap it with Roar, apparently. Anyway: Yes, libao and libout123 do very similar things with a similar set of output drivers. Personally, I think it's not that bad to have more than a single implementation of a concept. Dozens of them is perhaps a problem, if developer time is constrained. But, I'm saying that as a user/developer of a GNU/Linux distro with perhaps a dozen users in the world … Alrighty then, Thomas |