Коллеги у меня возникла проблема при написании плагина для GStreamer. Проблема следующего характера. Я создал шаблон плагина, взяв его отсюда http://anongit.freedesktop.org/git/gstreamer/gst-template.git. Собрал это дело, и начал править. После исправлений пере собираю и смотрю на него gst-inspect:
$gst-inspect-1.0 --gst-plugin-path=$PWD watersign
(gst-plugin-scanner:3048): GStreamer-WARNING **: Failed to load plugin '/home/kozev/workspace/gst-template/gst-plugin/src/.libs/libgstplugin.so': /home/kozev/workspace/gst-template/gst-plugin/src/.libs/libgstplugin.so: undefined symbol: gst_watersign_get_type
No such element or plugin 'watersign'
static void gst_my_filter_some_interface_init (GstSomeInterface *iface);
GType
gst_my_filter_get_type (void)
{
static GType my_filter_type = 0;
if (!my_filter_type) {
static const GTypeInfo my_filter_info = {
sizeof (GstMyFilterClass),
NULL,
NULL,
(GClassInitFunc) gst_my_filter_class_init,
NULL,
NULL,
sizeof (GstMyFilter),
0,
(GInstanceInitFunc) gst_my_filter_init
};
static const GInterfaceInfo some_interface_info = {
(GInterfaceInitFunc) gst_my_filter_some_interface_init,
NULL,
NULL
};
my_filter_type =
g_type_register_static (GST_TYPE_ELEMENT,
"GstMyFilter",
&my_filter_info, 0);
g_type_add_interface_static (my_filter_type,
GST_TYPE_SOME_INTERFACE,
&some_interface_info);
}
return my_filter_type;
}
static void
gst_my_filter_some_interface_init (GstSomeInterface *iface)
{
/* here, you would set virtual function pointers in the interface */
}
Кто может помочь и разъяснить концепцию интерфейсов для GStreamer? Желательно с примером.