gstreamer/tests/registry.c

151 lines
2.9 KiB
C
Raw Normal View History

#include <gst/gst.h>
static void
dump_plugins (void)
{
GList *plugins;
plugins = gst_plugin_get_list ();
while (plugins) {
GstPlugin *plugin = (GstPlugin *)plugins->data;
g_print ("plugin: %s, loaded %d\n", plugin->name, plugin->loaded);
plugins = g_list_next (plugins);
}
}
static void
dump_factories (void)
{
GList *factories;
factories = gst_elementfactory_get_list ();
while (factories) {
GstElementFactory *factory = (GstElementFactory *)factories->data;
g_print ("factory: %s %d\n", factory->name, factory->type);
factories = g_list_next (factories);
}
}
static void
dump_factory (gchar *name)
{
GstElementFactory *factory;
factory = gst_elementfactory_find (name);
if (factory) {
GList *padtemplates = factory->padtemplates;
xmlDocPtr doc;
doc = xmlNewDoc ("1.0");
doc->xmlRootNode = xmlNewDocNode (doc, NULL, "templates", NULL);
while (padtemplates) {
xmlNodePtr parent;
GstPadTemplate *template = (GstPadTemplate *) padtemplates->data;
parent = xmlNewChild (doc->xmlRootNode, NULL, "template", NULL);
gst_padtemplate_save_thyself (template, parent);
padtemplates = g_list_next (padtemplates);
}
xmlDocDump(stdout, doc);
}
}
static void
dump_types (void)
{
GList *types;
types = gst_type_get_list ();
while (types) {
GstType *factory = (GstType *)types->data;
g_print ("type: %s %d\n", factory->mime, factory->id);
types = g_list_next (types);
}
}
static void
load_something (gchar *name)
{
GstElementFactory *factory;
GstElement *element;
//factory = gst_elementfactory_find ("foo");
//g_print ("factory \"foo\" %s\n", (factory?"found":"not found"));
factory = gst_elementfactory_find (name);
g_print ("factory \"%s\" %s\n", name, (factory?"found":"not found"));
element = gst_elementfactory_create (factory, "test");
g_print ("element \"%s\" %s\n", name, (element?"found":"not found"));
}
static void
print_some_providers (gchar *mime)
{
guint16 type;
GList *srcs, *sinks;
type = gst_type_find_by_mime (mime);
/*
srcs = gst_type_get_srcs (type);
while (srcs) {
GstElementFactory *factory;
factory = (GstElementFactory *) srcs->data;
g_print ("factory src: \"%s\"\n", factory->name);
srcs = g_list_next (srcs);
}
sinks = gst_type_get_sinks (type);
while (sinks) {
GstElementFactory *factory;
factory = (GstElementFactory *) sinks->data;
g_print ("factory sink: \"%s\"\n", factory->name);
sinks = g_list_next (sinks);
}
*/
}
int main(int argc,char *argv[])
{
gst_init(&argc,&argv);
//dump_plugins ();
//dump_factories ();
//dump_types ();
//print_some_providers ("audio/mp3");
load_something ("fdsink");
print_some_providers ("audio/mp3");
load_something ("mpg123");
dump_plugins ();
dump_factories ();
dump_types ();
dump_factory ("lame");
dump_factory ("mpeg_play");
}