В связи с некоторыми трудностями, приложение не может распространяться под GPL, поэтому максимум «свободы» - LGPL. Вопрос сам по себе дебилен, т.к. ответ простой - берём libFLAC, libVorbis, libmpg123, libmad, liblame - и всё супер. Но я просто хочу написать уже случившуюся историю и почитать комментарии.
Для чтения/записи .wav, .flac, .voc и неск. других «простых» форматов испольнована libsndfile (LGPL). Там есть поддержка .ogg, но при чтении она жрёт столько проца, что не хватает даже на риалтайм воспроизведение. Видимо нужно брать libVorbis. Стоило ли использовать для FLAC отдельный-кошерный libFLAC или libsndfile включает в себя libFLAC (или FLAC в libsndfile реализован с нуля o_O)?
Для поддержки mp3 применяется mpg123 (LGPL) - всё прекрасно работает. Есть варианты лучше? Почему-то некоторые плееры неадекватно реализуют перемотку для VBR mp3 - то время звучания меньше покажут, чем есть, то «ползунок» прыгает неравномерно. У меня почему-то всё хорошо с mpg123 на любом VBR... И от других библиотек хочется адекватности.
О кодировании - нужно кодировать в flac, mp3, ogg. Не помешает aac и даже создание .avi / .mkv - контейнера со одинокой звуковой дорожкой (на ютуб выкладывать). Сейчас в FLAC пишет та же libsndfile, правда я не увидел там регулировки степени сжатия. Использовать ли liblame для кодирования mp3 или что-то другое? libvorbis? libogg?
Пытался осилить libavcodec/libavformat (ffmpeg, libav) - ниасилил, есть проблемы: Вопрос по libavcodec.
Вопросы:
1) Как сделана поддержка FLAC в libsndfile? Линковкой libFLAC или реализацией с нуля?
2) libmpg123 VS libmad? (mp3)