Новый выпуск FreshPlayer, прослойки для запуска PPAPI-плагинов в Firefox

15.01.2015 08:43

Ринат Ибрагимов представил обновление проекта freshplayerplugin v0.2.2, в рамках которого развивается прослойка, позволяющая использовать в Firefox плагины, построенные на основе интерфейса PPAPI (Pepper Plugin API). Прослойка решает проблему с использованием в Linux актуальных выпусков плагина Adobe Flash, которые поставляются в форме PPAPI-плагина для браузера Chrome, но недоступны для браузеров с интерфейсом NPAPI. Код проекта распространяется под лицензией MIT.

Интерфейс PPAPI был разработан компанией Google для замены ранее широко используемого для плагинов интерфейса NPAPI, архитектура которого устарела и не соответствует современным реалиям. В PPAPI устранены свойственные NPAPI проблемы с переносимостью, безопасностью и производительностью, а также значительно упрощен процесс создания плагинов, работающих в виде отдельных процессов. PPAPI предоставляет ряд расширенных интерфейсов, связанных с обеспечением работы в плагинах сетевых, вычислительных, аудио- и графических функций, доступом к OpenGL ES, рендерингом шрифтов и другими операциями.

В настоящее время насчитывается 107 групп функций, которые браузер Chrome/Chromium предоставляет через PPAPI. Программный интерфейс PPAPI существенно отличается от NPAPI, что требует значительной переработки плагина, при желании его перевода с NPAPI на PPAPI. Разработчики Firefox пока не планируют реализацию поддержки PPAPI, так как данный API ещё не стабилизирован и находится в процессе постоянных изменений.

Для решения проблемы с использованием PPAPI-плагинов в Firefox, FreshPlayer предоставляет NPAPI-плагин, который позволяет загружать плагины PPAPI, симулируя интерфейс PPAPI и транслируя вызовы в обращения к API вышестоящего браузера. Таким образом, для PPAPI-плагина FreshPlayer выглядит как браузер с поддержкой PPAPI, а для Firefox как обычный плагин NPAPI. При этом, FreshPlayer не предоставляет механизмов sandbox-изоляции плагинов, что снижает уровень безопасности до обычных не изолированных плагинов NPAPI. Из зависимостей, для работы FreshPlayer требуются пакеты glib, libasound (опционально поддерживается PulseAudio) и libpango, для сборки также требуются libgl1-mesa-dev, libevent-dev, libgtk+2.0-dev и libgles2-mesa-dev.

В новой версии:

  • Реализована поддержка интерфейса Flash DRM для доступа к защищённому контенту;
  • Добавлен диалог выбора файлов;
  • Переработан код для взаимодействия со звуковой подсистемой ALSA;
  • Добавлена опциональная поддержка PulseAudio;
  • Реализован интерфейс для отключения вызова хранителя экрана;
  • Для создания GL-контекста задействован GLX, который используется как для OpenGL, так и для OpenGL ES;
  • Решены проблемы со вложенными меню и переходом в полноэкранный режим.