2013-04-04 4 views
5

В чем преимущества использования gstreamer над stagefright? Может ли кто-нибудь указать на разницу.Stagefright vs Gstreamer

+0

@Ruchi .. Я попытался ответить на ваш вопрос. Прошу прокомментировать, если вы искали что-то более конкретное, поскольку вопрос немного открыт. – Ganesh

ответ

15

В начале один очень общий комментарий. Это очень спорно, если GStreamer имеет преимущество перед Stagefright или нет. Однако некоторые вопросы, чтобы ответить на ваш вопрос, приведены ниже.

Stagefright полагается только на OMX/OpenMax интерфейс для всех кодеков, в то время как GStreamer кодек плагин может быть записан поверх non-OMX интерфейсов. Например, даже программные кодеки инкапсулированы в SoftOMXComponent в фреймворк Stagefright, тогда как то же самое можно легко преобразовать в GstElement, не обязательно имея интерфейс OMX.

В Stagefright интерфейс связи между двумя компонентами является очень общим и обычно равен MediaBuffer. Это не связывание hard, но более облегченное с помощью слоя клея т. Е. Реализация OMXCodec или MediaExtractor или AwesomePlayer.

В GStreamer типичный интерфейс связи осуществляется через Pads, которые имеют конкретные GstCaps. Прокладки двух компонентов взаимосвязаны через gst_pad_link.

GStreamer обеспечивает стандартный шаблон bins как CameraBin или PlayerBin, тогда как в Stagefright у вас есть cameraHal реализацию camera. Для игроков есть 2 возможных варианта реализации игрового движка, например StagefrightPlayer или NuPlayer.

В Stagefright, обработка данных приводится в действие sink (вниз по течению) PULL -ную данные из source. В GStreamer обработка данных может быть инициирована с помощью source, создавая буфер, и PUSH -в его в нисходящий поток (ссылка: here).

Последний пункт, Gstreamer широко используется по сравнению с Stagefright, который в настоящее время является специфичным для Android.

В то время как список может продолжаться, существует много сходства между двумя рамами. Например,

  1. Обе структуры создают компоненты, такие как parsers или codecs через Factory Methods т.е. они используют Factory картину.

  2. В обеих средах используется интерфейс plugin для интеграции более новых компонентов, например, parsers.

+0

Спасибо, лот. Это действительно помогло. :) – Ruchi

+1

Отличный ответ. Вот мой личный взгляд: i) GStreamer очень похож на устаревшие фильтры Microsoft DirectShow, я не уверен, чье влияние на них; ii) Stagefright движется к асинхронной модели (ACodec заменяет OMXCodec, ALooper и AHandler - простые в использовании библиотеки); iii) GStreamer более зрелый и общий в своем заявлении о проблемах, цель Stagefright заключается в том, чтобы разрешить воспроизведение Android, и есть особые особенности, связанные с продавцом, похороненные в разных libstagefright.so. – leesei

+0

@leesei .. У меня немного отличается вид на последнюю часть. 'Stagefright' становится гораздо более общим, когда все блоки становятся видимыми на уровне' Java'. Хотя это не так, как функция, богатая как «GStreamer», она обеспечивает увеличение охвата основных возможностей HW для конечного пользователя. Следовательно, структура гораздо более общая, чем решение только проблемы с воспроизведением. Мне бы очень хотелось услышать ваше мнение по этой теме. – Ganesh

0

Я не знаком с StageFright, но я хотел бы отметить, что GStreamer предлагает некоторые очень зрелые возможности отладки, включая демпинг GraphViz («точка») данные, которые могут быть использованы для построения литеральных, визуальные график вашего графические графики воспроизведения, в том числе во время строительства, даже после определенных видов частичного отказа. Доступны несколько уровней отладки, а также некоторые виды фильтрации.

Я бы определенно рекомендовал, чтобы кто-либо выбирал между этими двумя библиотеками в целях развития, сравнивал их возможности отладки и устранения неполадок, особенно в отношении устранения неполадок, связанных с голодом и синхронизацией трубопроводов.

(О, а самая way-- лучший формат, чтобы преобразовать эти точки отвалов в это SVG. Я обычно их открыть в Firefox.)