В последнее время скорость выполнения JavaScript в новейших веб-браузерах стала настолько высокой, что на основе этого языка программирования стали появляться проекты мало связанные с разработкой веб-приложений. Самым заметным из таких проектов стал написанный на языке JavaScript эмулятор x86 компьютера, созданный талантливым французским исследователем Фабрисом Белларом (Fabrice Bellard). В рамках проекта JSMad предпринят ещё один эксперимент, в результате которого на языке JavaScript был написан декодер для файлов MP3.

JSMad позволяет веб-браузеру Mozilla Firefox 4 проигрывать файлы MP3 без использования Adobe Flash. Код также работает и в Google Chrome, начиная с 13 версии, но для работы нужно обязательно включить поддержку Web Audio API. Производительности JavaScript-движка хватает для беспроблемного проигрывания MP3-файлов с битрейтом вплоть до 320KBit/sec. На основе JSMad можно легко создать основанную исключительно на веб-браузере программу по проигрыванию библиотеки музыки в стиле JukeBox.

Исходные тексты проекта размещены на сайте GitHub под лицензией GPLv2. Оценить JSMad в действии можно на сайте jsmad.org. Разработка была выполнена путем портирования MP3-декодера libmad, написанного на языке Си, в представление на языке JavaScript (около 15 тысяч строк кода). Поддержка ID3 была написана с нуля. Проект создан разработчиками в составе Amos Wenger, Antoine Marguerie, Matthias Georgi и Jens Nockert.

Как отмечает один из разработчиков - самой сложной проблемой в написании JSMad стала отладка, которая мешала формированию звукового потока. Для решения этой задачи было использовано приложение GNUPlot. Остальные комментарии разработчиков по поводу проекта можно прочитать здесь (искать по имени nddrylliog).

Из планов на будущее отмечается проведение оптимизации производительности, использование вместо строк бинарных массивов Uint8Arrays, создание более оптимальной стратегии буферизации потока, обеспечение поддержки MPEG 2.5 (поддерживается только MPEG Layer III, смысла в поддержке MPEG Layer I и II нет), обеспечение поддержки потоков со свободным битрейтом (переменный битрейт (VBR) поддерживается), реализация поддержки некоторых расширенных тегов ID3v2.2 и ID3v2.3.

Дополнение: Разработчики Mozilla представили проект pdf-js с реализацией web-приложения для просмотра PDF-файлов, написанного целиком на JavaScript с использованием технологий HTML5 (SVG API). Код распространяется под лицензией BSD. Демонстрацию нового приложения можно посмотреть здесь.

Источник: http://www.opennet.ru/opennews/art.shtml?num=30921