Разработка KDE4 до выхода 4.0 заняла довольно много времени, я же за ней начал внимательно следить только в январе этого года. А потому иногда открываю довольно интересные исторические пласты. На пример, однажды разработчики приняли решение написать свою звуковую систему — Phonon, которая со временем даже стала частью Qt (хотя и продолжает разрабатываться разработчиками KDE и под копирайтом KDE, а не Trolltech/Nokia). В результате на разработчиков KDE страшно обиделись разработчики GStreamer, и до сих пор периодически поливают их не очень хорошо пахнущими жидкостями (недавний пример).
Напомню, что Phonon является прослойкой для различных звуковых систем: на Linux он может использовать для воспроизведения звука тот же GStreamer или Xine, на Windows — DirectShow, на Mac OS X — QuickTime. Таким образом Phonon предоставляет возможность с лёгкостью писать кроссплатформенные приложения с возможностью воспроизведения звука. В то же время GStreamer также является кроссплатформенным, и его разработчики не понимают, зачем понадобилось создавать практически аналог их библиотеке.
В своё время KDE уже использовал стороннюю звуковую подсистему. Её была aRts. Закончилось это тем, что разработчик aRts забросил проект, и со временем aRts была отнесена на обочину истории. К выходу KDE 3.5 поддержка aRts является опциональной, и в том же Gentoo можно с лёгкостью собрать KDE без aRts.
Но GStreamer — это ведь не какой-то aRts! По крайней мере, с точки зрения разработчиков GStreamer. Разработчики различных KDE-проектов на самом деле ранее работали с GStreamer (как же вы думали Amarok 1.x работает без aRts?), и у них есть одна проблема с этой библиотекой: бинарная совместимость. Политика разработчиков такова, что приложение, скомпилированное в KDE 4.0 должно работать и в KDE 4.1, и в KDE 4.2. GStreamer же не чурается ломать бинарную совместимость при выходе новых релизов библиотеки — вот здесь это объясняет разработчик JuK. Ещё 2 года назад.
Кроме того, разработчики Qt/KDE-приложений не привыкли к зоопарку библиотек. В Gnome есть куча компонентов от разных разработчиков, с различными стилями и подходами к созданию API. Phonon — это API такого же стиля, как и другие предлагаемые в Qt. Это облегчает изучение и использование новых компонентов Qt — будь это поддержка баз данных, XML или WebKit. GStreamer написан на C, а разработчики Qt привыкли к объектно-ориентированным компонентам.
GStreamer имеет гораздо более богатые возможности обработки звука. В то же время, если всё что вам нужно — это сказать “играй это”, то с Phonon’ом это можно сделать в несколько строк кода. Это и добивались разработчики Phonon — простой минималистичный кроссплатформенный API.
One Response to “Phonon vs GStreamer”
Оставить комментарий:


сентября 29, 2008 at 1:35
Они там всё подряд таким делают. )) “Напиши почтовый клиент за 5 минут с помощью Akonadi” и прочее. ))