GStreamermm: создание нового типа элемента (в плагине) на основе Gst::Element

Стандартный метод создания нового типа элемента в плагине — это «производное» в стиле gobject от типа GstElement со всей этой магией gobject, например это.

Я пишу проект на C++, который использует GStreamer с некоторыми элементами, специально предназначенными для моей цели. Я написал несколько плагинов указанным выше образом, но я не удовлетворен кодом, так как слишком много его предназначено только для удовлетворения требований объекта.

Я рассматриваю возможность использования gstreamermm. Можно ли создать новый тип элементов, производный от Gst::Element в стиле C++? Я имею в виду что-то вроде:

class MyElement: public Gst::Element
{
  ...
}

Это было бы намного красивее (при условии, что я уже использую gstreamermm и C++ в плагине). Конечно, нам нужен реальный тип объекта, который имеет уникальный идентификатор типа и так далее.


person peper0    schedule 07.03.2012    source источник
comment
Я использовал несколько оберток мм, но не gstreamer. Я бы посчитал оболочку бесполезной, если вы не можете использовать ее объекты в качестве базового класса, поэтому я бы посоветовал попробовать ее с помощью небольшой тестовой программы.   -  person ergosys    schedule 08.03.2012


Ответы (1)


Поскольку ничего подходящего я не нашел, я пропатчил gstreamermm, чтобы он позволял регистрировать такие элементы. См. https://github.com/peper0/gstreamermm-plugins. сейчас, но, кажется, работает в нескольких основных случаях. Сообщения об ошибках и запросы функций будут оценены.

Примечание: мой патч никоим образом не авторизован разработчиками gstreamer или gstreamermm, поэтому он может нарушить некоторые допущения, сделанные в этих проектах.

person peper0    schedule 24.02.2013
comment
Меня это очень интересует, буду тестировать (когда найду время). У вас есть какие-нибудь плагины в качестве примера того, как писать плагины с помощью gstreamermm? Хорошо бы иметь такой функционал в gstreamermm. Вы связались с разработчиками gstreamermm по этому поводу? - person vhdirk; 27.02.2013
comment
См. пример здесь: здесь - person peper0; 02.03.2013
comment
(Я не могу редактировать свой предыдущий комментарий) В настоящее время есть только простой, но я работаю над использованием GstPushSrc и других базовых классов для элементов. Я собираюсь связаться с разработчиками gstreamermm, но пока этого не сделал. - person peper0; 02.03.2013
comment
Как человеку, рассматривающему возможность использования gstreamermm, мне любопытно, объединялось ли это когда-либо с gstreamermm или заменялось аналогичной функциональностью? - person Bruce Adams; 10.04.2018
comment
@BruceAdams: он уже давно объединен с gstreamermm: github .com/GNOME/gstreamermm/blob/master/gstreamer/gstreamermm/ - person peper0; 19.04.2018