В чем преимущества использования gstreamer над stagefright? Может ли кто-нибудь указать на разницу.Stagefright vs Gstreamer
ответ
В начале один очень общий комментарий. Это очень спорно, если 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.
В то время как список может продолжаться, существует много сходства между двумя рамами. Например,
Обе структуры создают компоненты, такие как
parsers
илиcodecs
черезFactory Methods
т.е. они используютFactory
картину.В обеих средах используется интерфейс
plugin
для интеграции более новых компонентов, например,parsers
.
Спасибо, лот. Это действительно помогло. :) – Ruchi
Отличный ответ. Вот мой личный взгляд: i) GStreamer очень похож на устаревшие фильтры Microsoft DirectShow, я не уверен, чье влияние на них; ii) Stagefright движется к асинхронной модели (ACodec заменяет OMXCodec, ALooper и AHandler - простые в использовании библиотеки); iii) GStreamer более зрелый и общий в своем заявлении о проблемах, цель Stagefright заключается в том, чтобы разрешить воспроизведение Android, и есть особые особенности, связанные с продавцом, похороненные в разных libstagefright.so. – leesei
@leesei .. У меня немного отличается вид на последнюю часть. 'Stagefright' становится гораздо более общим, когда все блоки становятся видимыми на уровне' Java'. Хотя это не так, как функция, богатая как «GStreamer», она обеспечивает увеличение охвата основных возможностей HW для конечного пользователя. Следовательно, структура гораздо более общая, чем решение только проблемы с воспроизведением. Мне бы очень хотелось услышать ваше мнение по этой теме. – Ganesh
Я не знаком с StageFright, но я хотел бы отметить, что GStreamer предлагает некоторые очень зрелые возможности отладки, включая демпинг GraphViz («точка») данные, которые могут быть использованы для построения литеральных, визуальные график вашего графические графики воспроизведения, в том числе во время строительства, даже после определенных видов частичного отказа. Доступны несколько уровней отладки, а также некоторые виды фильтрации.
Я бы определенно рекомендовал, чтобы кто-либо выбирал между этими двумя библиотеками в целях развития, сравнивал их возможности отладки и устранения неполадок, особенно в отношении устранения неполадок, связанных с голодом и синхронизацией трубопроводов.
(О, а самая way-- лучший формат, чтобы преобразовать эти точки отвалов в это SVG. Я обычно их открыть в Firefox.)
@Ruchi .. Я попытался ответить на ваш вопрос. Прошу прокомментировать, если вы искали что-то более конкретное, поскольку вопрос немного открыт. – Ganesh