Как диагностировать проблемы с загрузкой плагина gstreamer? - PullRequest
1 голос
/ 21 июня 2010

Я создал плагин gstreamer с элементом внутри, который генерировал бы некоторые данные при помещении в конвейер (следуя Руководству по написанию плагинов GStreamer ).

Моя проблема в том, что Я не могу загрузить свой плагин в тестовое приложение .Когда я вызываю gst_element_factory_make("myextractor", NULL), результат всегда равен NULL.

Дополнительные данные (я не уверен, что это связано):

Когда я запускаю gst-inspect на моей dll, я получаю неполный вывод(вывод генерируется с помощью cygwin):

beq11049@beqleuleu1nb028 /cygdrive/c/work
$ /cygdrive/c/OSSBuild/GStreamer/v0.10.6/bin/gst-inspect.exe MyProject/Release/gstxyzlibrary.dll
Plugin Details:
  Name:                 myextractor
  Description:          XYZ Library
  Filename:             MyProject/Release/gstxyzlibrary.dll
  Version:              1.0
  License:              LGPL
  Source module:        myextractor
  Binary package:       MyProject
  Origin URL:           http://www.example.com/

  myextractor: XYZExtractor

  1 features:
  +-- 1 elements

Если я сравню это с аддоном avisubtitle (из пакета GStreamer Good Plug-ins), я получу намного меньше информации для моего.

Например,мой плагин говорит:

  1 features:
  +-- 1 elements

Плагин avisubtitle говорит (генерируется с использованием $ /cygdrive/c/OSSBuild/GStreamer/v0.10.6/bin/gst-inspect.exe avisubtitle):

GObject
 +----GstObject
       +----GstElement
             +----GstAviSubtitle

Мой вопрос : Мне нужен совет по отладкеэто / определить, что мне не хватает (включить отладку вывода, настройки и пути для проверки и т. д.).Мой тестовый код (вызов gst_element_factory_make) записан в приложении Songbird Adon, но я получаю те же результаты, если помещаю свой код в отдельный исполняемый файл.

Ответы [ 2 ]

2 голосов
/ 26 июня 2010

Это может быть из-за того, что загрузчик не может найти ваш плагин, вы должны проверить, что ваш плагин находится в пути к общей библиотеке:

Убедитесь, что вы установили переменную окружения LD_LIBRARY_PATH в каталог, содержащий ваш скомпилированный плагин.

В cygwin добавьте это к вашему .profile или запустите его перед запуском вашей программы:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/cygdrive/c/path/to/your/plugin/"

Вы также можете использовать опцию компоновщика -L, чтобы указать путь поиска во время компиляции.

0 голосов
/ 29 июня 2010

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

Однако я просто хочу прояснить одну вещь: GStreamer имеет «плагины» (или динамически загружаемую библиотеку), которые могут содержать один или несколько элементов. Когда вы gst-introspect для плагина или элемента, вы получите разные результаты! В случае «avisubtitle» это элемент, и вы можете прочитать иерархию классов. Если вы анализируете плагин (или библиотеку) «avi» или «/usr/lib/gstreamer-0.10/libgstavi.so» (в Unixes), вы получаете список элементов, которые он содержит, и некоторые общие свойства (версия, проект и т. Д.) ..).

Например, gst-introspect XYZ (XYZ библиотека или путь к библиотеке) отличается от gst-introspect XYZ (XYZ - имя элемента в библиотеке XYZ)

Возможно, это поможет вам. удачи! О, и ошибки / предупреждения могут отображаться с помощью переменной среды GST_DEBUG=*:2

...