Декодирование Ogg/Vorbis в rust

В продолжение направления обозначенного в прошлой статье, а именно игрового движка на rust, выяснилось что в ресурсах игры S.T.A.L.K.E.R. находятся звуковые файлы формата Ogg/Vorbis. Один из самых распространенных декодеров Ogg/Vorbis: lewton - падает с ошибкой разбора заголовка. Небольшое исследование показало что системные утилиты навроде ogg123 или плеер vlc проигрывают эти файлы игнорируя ошибку.

Лучше было конечно ситуацию исправить или разобраться как её обойти. Причина оказалась простой: в комментариях ogg спецификация требует присутствия строки UTF-8, а в файлах игры в коментариях явно не строки UTF-8. Однако эта же спецификация предлагает игнорировать неправильно созданные комментарии, а декодер считает весь файл неправильным. Ради пары строчек кода пришлось делать копию всей библиотеки и компилировать как самостоятельную библиотеку. Файлы из игры стали разбираться.

Я написал автору декодера об этом и он оперативно ответил! Согласился что декодеру следует соответствовать спецификации и выпустил коммит https://github.com/RustAudio/lewton/commit/4b9e704e5ddff1a55b304623492d5080fa17b3b7. В итоге звуковые ресурсы из S.T.A.L.K.E.R. теперь разбираются из rust как и должно было быть.


2018-11-11