От good_enc
функция в format.c
файл в исходном коде libmpg123.
Он используется для проверки, поддерживается ли указанная кодировка в текущей сборке.
Следующее изображение взято из сеанса отладки, во время которого он проверяет, является ли (enc == 512, эквивалентно MPG123_ENC_FLOAT_32
) 32-битное кодирование с плавающей запятой поддерживается.
Как видно на рисунке, моя сборка по какой-то причине не поддерживает 32-битное кодирование с плавающей запятой.
Я запускаю это на Windows 7 x64 Home Premium с исходными кодами, загруженными и скомпилированными как есть.
Есть ли какие-то конфигурации, которые я пропустил? Из документации на сайте кажется, что
32-битное плавание будет обычным, начиная с mpg123-1.7.0
Я использую версию 1.14.4
Я не знаю, поддерживает ли ваша версия 1.14.4 числа с плавающей запятой — в прошлый раз, когда я знал, что она была поддержана последним svn trunk «only».
Так что, может быть, вытащить оттуда и скомпилировать снова.
Во всяком случае, в исходных кодах по умолчанию есть «дешевый хак», чтобы принудительно включить ваши плавающие точки.
/* Simple hack to enable floating point output. */
if(argc >= 4 && !strcmp(argv[3], "f32")) mpg123_param(mh, MPG123_ADD_FLAGS, MPG123_FORCE_FLOAT, 0.);
Как видно здесь: http://www.mpg123.de/api/mpg123_в_wav_8c_source.shtml
Других решений пока нет …