mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-14 13:21:28 +00:00
bbb9799996
Original commit message from CVS: Cleanup in gsttypes.c: removed the crazy GList of GHashTables, since the autoplugger will use the GstCaps and elementfactories instead of the type system. We don't maintain a list anymore of the elements for the specific removed unused code in XML loading/saving. Cleanup in gstelementfactory: removed the register/unregister methods, register is now implicit when gst_elementfactory_new is called. _unregister is now _destroy. Removed logic to register/unregister the types in gsttypes. added methods to query if the factory can src/sink a GstCaps Make sure the elementfactory is set in the element_class when a new element is registered with gst_elementfactory_new. gst.c: properly register the basic bins gst_pipeline: use new gstautoplug (next checkin) gstprops: fixed an error in compatibility check registry test program changes plugins: misc changes for the new caps system.
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\n", factory->name);
|
|
|
|
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->root = xmlNewDocNode (doc, NULL, "templates", NULL);
|
|
|
|
while (padtemplates) {
|
|
xmlNodePtr parent;
|
|
GstPadTemplate *template = (GstPadTemplate *) padtemplates->data;
|
|
|
|
parent = xmlNewChild (doc->root, 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 ("mpg123");
|
|
|
|
print_some_providers ("audio/mp3");
|
|
|
|
load_something ("mpg123");
|
|
|
|
dump_plugins ();
|
|
dump_factories ();
|
|
dump_types ();
|
|
|
|
dump_factory ("lame");
|
|
dump_factory ("mpeg_play");
|
|
}
|