gstreamer/tests/registry.c
Richard Boulton 82769bcae9 Some more fixes for libxml.
Original commit message from CVS:
Some more fixes for libxml.
Also, some code formatting changes in esdsink, some further fixes to
vumeter, and some work on synaesthesia to make it closer to working
(it doesn't fully work yet, though. :( )
2001-01-18 15:29:46 +00:00

150 lines
2.9 KiB
C

#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");
}