mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 08:46:40 +00:00
82769bcae9
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. :( )
150 lines
2.9 KiB
C
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");
|
|
}
|