mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 03:31:05 +00:00
- Add more --disable options
Original commit message from CVS: - Add more --disable options - fix makefiles to only compile non-disabled features - some compile fixes. - removed extratypes, added gsturitype - make get/set clock on a bin overridable - some portability fixes for GUINT64 - separate pools from gstregistry.[ch] into gstregistrypool.[ch] - make gstobject size fixed, even if we disabled load/save - don't use 'new' as a variable as it is not a valib C++ variable
This commit is contained in:
parent
136e5d254e
commit
b030b5cef2
39 changed files with 766 additions and 431 deletions
|
@ -327,6 +327,14 @@ translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
|
||||||
GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
|
GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
|
||||||
translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
|
translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
|
||||||
GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
|
GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
|
||||||
|
translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_ENUMTYPES, true)
|
||||||
|
GST_SUBSYSTEM_DISABLE(ENUMTYPES,[enum types])
|
||||||
|
translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_INDEX, true)
|
||||||
|
GST_SUBSYSTEM_DISABLE(INDEX,[index])
|
||||||
|
translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PLUGIN, true)
|
||||||
|
GST_SUBSYSTEM_DISABLE(PLUGIN,[plugin])
|
||||||
|
translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_URI, true)
|
||||||
|
GST_SUBSYSTEM_DISABLE(URI,[uri handlers])
|
||||||
|
|
||||||
GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
|
GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
|
||||||
|
|
||||||
|
|
|
@ -4,17 +4,26 @@ Howto strip gstreamer
|
||||||
|
|
||||||
subsystems that can disabled:
|
subsystems that can disabled:
|
||||||
|
|
||||||
|
* load/save (gstxml.h, various other files)
|
||||||
|
- no object serialisation to XML
|
||||||
|
|
||||||
|
* typefind (gsttypefind.h)
|
||||||
|
- typefind element is not compiled in the core
|
||||||
|
|
||||||
* autoplugging (gstautoplug.h)
|
* autoplugging (gstautoplug.h)
|
||||||
- autoplugging functions not available
|
- autoplugging functions not available
|
||||||
|
|
||||||
|
* parse (gstparse.h)
|
||||||
|
- no parsing can be done
|
||||||
|
|
||||||
|
* trace (gsttrace.h)
|
||||||
|
- no tracing features
|
||||||
|
|
||||||
* registry (gstregistry.h)
|
* registry (gstregistry.h)
|
||||||
- can't instantiate registry objects
|
- can't instantiate registry objects
|
||||||
- registry pool only contains statically
|
- registry pool only contains statically
|
||||||
registered plugins
|
registered plugins
|
||||||
|
|
||||||
* typefind (gsttypefind.h)
|
|
||||||
- typefind element is not compiled in the core
|
|
||||||
|
|
||||||
* enumtypes (gstenumtypes.h)
|
* enumtypes (gstenumtypes.h)
|
||||||
- code not linked into the core
|
- code not linked into the core
|
||||||
|
|
||||||
|
@ -29,7 +38,4 @@ subsystems that can disabled:
|
||||||
* URI (gsturi.h)
|
* URI (gsturi.h)
|
||||||
- no urihandler pluginfeature
|
- no urihandler pluginfeature
|
||||||
|
|
||||||
* load/save (gstxml.h, various other files)
|
|
||||||
- no object serialisation to XML
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,14 @@ else
|
||||||
GST_LOADSAVE_DIRS = xml typefind
|
GST_LOADSAVE_DIRS = xml typefind
|
||||||
endif
|
endif
|
||||||
|
|
||||||
SUBDIRS = autoplug $(GST_LOADSAVE_DIRS) \
|
if GST_DISABLE_AUTOPLUG
|
||||||
helloworld helloworld2 \
|
GST_AUTOPLUG_DIRS =
|
||||||
|
else
|
||||||
|
GST_AUTOPLUG_DIRS = autoplug helloworld2
|
||||||
|
endif
|
||||||
|
|
||||||
|
SUBDIRS = $(GST_AUTOPLUG_DIRS) $(GST_LOADSAVE_DIRS) \
|
||||||
|
helloworld \
|
||||||
queue queue2 queue3 queue4 \
|
queue queue2 queue3 queue4 \
|
||||||
launch thread plugins mixer cutter pingpong manual
|
launch thread plugins mixer cutter pingpong manual
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#include <stdlib.h>
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -4,7 +4,19 @@ else
|
||||||
GNOME=
|
GNOME=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
EXAMPLES = dynamic $(GNOME) helloworld helloworld2 queue threads xml-mp3
|
if GST_DISABLE_AUTOPLUG
|
||||||
|
GST_AUTOPLUG_SRC =
|
||||||
|
else
|
||||||
|
GST_AUTOPLUG_SRC = helloworld2
|
||||||
|
endif
|
||||||
|
|
||||||
|
if GST_DISABLE_LOADSAVE
|
||||||
|
GST_LOADSAVE_SRC =
|
||||||
|
else
|
||||||
|
GST_LOADSAVE_SRC = xml-mp3
|
||||||
|
endif
|
||||||
|
|
||||||
|
EXAMPLES = dynamic $(GNOME) helloworld $(GST_AUTOPLUG_SRC) queue threads $(GST_LOADSAVE_SRC)
|
||||||
noinst_PROGRAMS = $(EXAMPLES)
|
noinst_PROGRAMS = $(EXAMPLES)
|
||||||
|
|
||||||
LDADD = $(GST_LIBS)
|
LDADD = $(GST_LIBS)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#include <stdlib.h>
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
|
|
||||||
/* eos will be called when the src element has an end of stream */
|
/* eos will be called when the src element has an end of stream */
|
||||||
|
|
|
@ -21,12 +21,6 @@ else
|
||||||
GST_TYPEFIND_SRC = gsttypefind.c
|
GST_TYPEFIND_SRC = gsttypefind.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if GST_DISABLE_PARSE
|
|
||||||
GST_PARSE_SRC =
|
|
||||||
else
|
|
||||||
GST_PARSE_SRC = gstparse.c
|
|
||||||
endif
|
|
||||||
|
|
||||||
if GST_DISABLE_AUTOPLUG
|
if GST_DISABLE_AUTOPLUG
|
||||||
GST_AUTOPLUG_SRC =
|
GST_AUTOPLUG_SRC =
|
||||||
GST_AUTOPLUG_DIRS =
|
GST_AUTOPLUG_DIRS =
|
||||||
|
@ -35,21 +29,67 @@ GST_AUTOPLUG_SRC = gstautoplug.c
|
||||||
GST_AUTOPLUG_DIRS = autoplug
|
GST_AUTOPLUG_DIRS = autoplug
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if GST_DISABLE_PARSE
|
||||||
|
GST_PARSE_SRC =
|
||||||
|
GST_PARSE_DIRS =
|
||||||
|
GST_PARSE_LIBADD =
|
||||||
|
else
|
||||||
|
GST_PARSE_SRC = gstparse.c
|
||||||
|
GST_PARSE_DIRS = parse
|
||||||
|
GST_PARSE_LIBADD = parse/libgstparse.la
|
||||||
|
endif
|
||||||
|
|
||||||
if GST_DISABLE_TRACE
|
if GST_DISABLE_TRACE
|
||||||
GST_TRACE_SRC =
|
GST_TRACE_SRC =
|
||||||
else
|
else
|
||||||
GST_TRACE_SRC = gsttrace.c
|
GST_TRACE_SRC = gsttrace.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if GST_DISABLE_REGISTRY
|
||||||
|
GST_REGISTRY_SRC =
|
||||||
|
GST_REGISTRY_DIRS =
|
||||||
|
GST_REGISTRY_LIBADD =
|
||||||
|
else
|
||||||
|
GST_REGISTRY_SRC = gstregistry.c
|
||||||
|
GST_REGISTRY_DIRS = registries
|
||||||
|
GST_REGISTRY_LIBADD = registries/libgstxmlregistry.la
|
||||||
|
endif
|
||||||
|
|
||||||
|
if GST_DISABLE_ENUMTYPES
|
||||||
|
GST_ENUMTYPES_SRC =
|
||||||
|
else
|
||||||
|
GST_ENUMTYPES_SRC = gstenumtypes.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
if GST_DISABLE_INDEX
|
||||||
|
GST_INDEX_SRC =
|
||||||
|
GST_INDEX_DIRS =
|
||||||
|
else
|
||||||
|
GST_INDEX_SRC = gstindex.c
|
||||||
|
GST_INDEX_DIRS = indexers
|
||||||
|
endif
|
||||||
|
|
||||||
|
if GST_DISABLE_PLUGIN
|
||||||
|
GST_PLUGIN_SRC =
|
||||||
|
else
|
||||||
|
GST_PLUGIN_SRC = gstplugin.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
if GST_DISABLE_URI
|
||||||
|
GST_URI_SRC =
|
||||||
|
else
|
||||||
|
GST_URI_SRC = gsturi.c
|
||||||
|
endif
|
||||||
|
|
||||||
EXTRA_libgstreamer_@GST_MAJORMINOR@_la_SOURCES = gstcpuid_i386.s gstmarshal.list gstxml.c gsttypefind.c gstparse.c gstautoplug.c gsttrace.c
|
EXTRA_libgstreamer_@GST_MAJORMINOR@_la_SOURCES = gstcpuid_i386.s gstmarshal.list gstxml.c gsttypefind.c gstparse.c gstautoplug.c gsttrace.c
|
||||||
|
|
||||||
SUBDIRS = parse registries . $(GST_AUTOPLUG_DIRS) elements schedulers types indexers
|
SUBDIRS = $(GST_PARSE_DIRS) $(GST_REGISTRY_DIRS) . $(GST_AUTOPLUG_DIRS) elements schedulers types $(GST_INDEX_DIRS)
|
||||||
DIST_SUBDIRS = autoplug elements parse registries schedulers types indexers
|
DIST_SUBDIRS = autoplug elements parse registries schedulers types indexers
|
||||||
|
|
||||||
libgstreamer_@GST_MAJORMINOR@_la_SOURCES = \
|
libgstreamer_@GST_MAJORMINOR@_la_SOURCES = \
|
||||||
gst.c \
|
gst.c \
|
||||||
gstmarshal.c \
|
gstmarshal.c \
|
||||||
gstenumtypes.c \
|
$(GST_ENUMTYPES_SRC) \
|
||||||
gstobject.c \
|
gstobject.c \
|
||||||
$(GST_AUTOPLUG_SRC) \
|
$(GST_AUTOPLUG_SRC) \
|
||||||
gstatomic.c \
|
gstatomic.c \
|
||||||
|
@ -63,9 +103,8 @@ libgstreamer_@GST_MAJORMINOR@_la_SOURCES = \
|
||||||
gstelement.c \
|
gstelement.c \
|
||||||
gstelementfactory.c \
|
gstelementfactory.c \
|
||||||
gstevent.c \
|
gstevent.c \
|
||||||
gstextratypes.c \
|
|
||||||
gstformat.c \
|
gstformat.c \
|
||||||
gstindex.c \
|
$(GST_INDEX_SRC) \
|
||||||
gstinfo.c \
|
gstinfo.c \
|
||||||
gstmemchunk.c \
|
gstmemchunk.c \
|
||||||
gstpad.c \
|
gstpad.c \
|
||||||
|
@ -84,21 +123,23 @@ libgstreamer_@GST_MAJORMINOR@_la_SOURCES = \
|
||||||
gsttrashstack.c \
|
gsttrashstack.c \
|
||||||
gsttype.c \
|
gsttype.c \
|
||||||
$(GST_TYPEFIND_SRC) \
|
$(GST_TYPEFIND_SRC) \
|
||||||
gsturi.c \
|
$(GST_URI_SRC) \
|
||||||
|
gsturitype.c \
|
||||||
gstutils.c \
|
gstutils.c \
|
||||||
gstregistry.c \
|
$(GST_REGISTRY_SRC) \
|
||||||
|
gstregistrypool.c \
|
||||||
$(GST_PARSE_SRC) \
|
$(GST_PARSE_SRC) \
|
||||||
$(GSTARCH_SRCS) \
|
$(GSTARCH_SRCS) \
|
||||||
$(GST_LOADSAVE_SRC)
|
$(GST_LOADSAVE_SRC)
|
||||||
|
|
||||||
|
|
||||||
BUILT_SOURCES = gstmarshal.h gstmarshal.c gstenumtypes.h gstenumtypes.c
|
BUILT_SOURCES = gstmarshal.h gstmarshal.c gstenumtypes.h $(GST_ENUMTYPES_SRC)
|
||||||
|
|
||||||
libgstreamer_@GST_MAJORMINOR@_la_CFLAGS = -D_GNU_SOURCE \
|
libgstreamer_@GST_MAJORMINOR@_la_CFLAGS = -D_GNU_SOURCE \
|
||||||
$(GST_CFLAGS) \
|
$(GST_CFLAGS) \
|
||||||
-DG_LOG_DOMAIN=g_log_domain_gstreamer \
|
-DG_LOG_DOMAIN=g_log_domain_gstreamer \
|
||||||
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
||||||
libgstreamer_@GST_MAJORMINOR@_la_LIBADD = $(LIBGST_LIBS) parse/libgstparse.la registries/libgstxmlregistry.la
|
libgstreamer_@GST_MAJORMINOR@_la_LIBADD = $(LIBGST_LIBS) $(GST_PARSE_LIBADD) $(GST_REGISTRY_LIBADD)
|
||||||
libgstreamer_@GST_MAJORMINOR@_la_LDFLAGS = @GST_LT_LDFLAGS@ -version-info @GST_LIBVERSION@
|
libgstreamer_@GST_MAJORMINOR@_la_LDFLAGS = @GST_LT_LDFLAGS@ -version-info @GST_LIBVERSION@
|
||||||
|
|
||||||
|
|
||||||
|
@ -122,7 +163,6 @@ gst_headers = \
|
||||||
gstdata.h \
|
gstdata.h \
|
||||||
gstelement.h \
|
gstelement.h \
|
||||||
gstevent.h \
|
gstevent.h \
|
||||||
gstextratypes.h \
|
|
||||||
gstformat.h \
|
gstformat.h \
|
||||||
gstindex.h \
|
gstindex.h \
|
||||||
gstinfo.h \
|
gstinfo.h \
|
||||||
|
@ -145,8 +185,10 @@ gst_headers = \
|
||||||
gsttype.h \
|
gsttype.h \
|
||||||
gsttypefind.h \
|
gsttypefind.h \
|
||||||
gsturi.h \
|
gsturi.h \
|
||||||
|
gsturitype.h \
|
||||||
gstutils.h \
|
gstutils.h \
|
||||||
gstregistry.h \
|
gstregistry.h \
|
||||||
|
gstregistrypool.h \
|
||||||
gstparse.h \
|
gstparse.h \
|
||||||
gstxml.h
|
gstxml.h
|
||||||
|
|
||||||
|
|
114
gst/gst.c
114
gst/gst.c
|
@ -27,20 +27,26 @@
|
||||||
|
|
||||||
#include "gst.h"
|
#include "gst.h"
|
||||||
#include "gstqueue.h"
|
#include "gstqueue.h"
|
||||||
#ifndef GST_DISABLE_TYPE_FIND
|
#ifndef GST_DISABLE_TYPEFIND
|
||||||
#include "gsttypefind.h"
|
#include "gsttypefind.h"
|
||||||
#endif
|
#endif /* GST_DISABLE_TYPEFIND */
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
#include "registries/gstxmlregistry.h"
|
#include "registries/gstxmlregistry.h"
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
|
#include "gstregistrypool.h"
|
||||||
|
|
||||||
#define MAX_PATH_SPLIT 16
|
#define MAX_PATH_SPLIT 16
|
||||||
#define GST_PLUGIN_SEPARATOR ","
|
#define GST_PLUGIN_SEPARATOR ","
|
||||||
|
|
||||||
gchar *_gst_progname;
|
gchar *_gst_progname;
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
gboolean _gst_registry_auto_load = TRUE;
|
gboolean _gst_registry_auto_load = TRUE;
|
||||||
static GstRegistry *_global_registry;
|
static GstRegistry *_global_registry;
|
||||||
static GstRegistry *_user_registry;
|
static GstRegistry *_user_registry;
|
||||||
static gboolean _gst_registry_fixed = FALSE;
|
static gboolean _gst_registry_fixed = FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
static gboolean _gst_use_threads = TRUE;
|
static gboolean _gst_use_threads = TRUE;
|
||||||
|
|
||||||
static gboolean gst_initialized = FALSE;
|
static gboolean gst_initialized = FALSE;
|
||||||
|
@ -303,6 +309,7 @@ gst_init_with_popt_table (int *argc, char **argv[],
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
static void
|
static void
|
||||||
add_path_func (gpointer data, gpointer user_data)
|
add_path_func (gpointer data, gpointer user_data)
|
||||||
{
|
{
|
||||||
|
@ -311,6 +318,7 @@ add_path_func (gpointer data, gpointer user_data)
|
||||||
GST_INFO (GST_CAT_GST_INIT, "Adding plugin path: \"%s\"", (gchar *)data);
|
GST_INFO (GST_CAT_GST_INIT, "Adding plugin path: \"%s\"", (gchar *)data);
|
||||||
gst_registry_add_path (registry, (gchar *)data);
|
gst_registry_add_path (registry, (gchar *)data);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
prepare_for_load_plugin_func (gpointer data, gpointer user_data)
|
prepare_for_load_plugin_func (gpointer data, gpointer user_data)
|
||||||
|
@ -322,13 +330,21 @@ static void
|
||||||
load_plugin_func (gpointer data, gpointer user_data)
|
load_plugin_func (gpointer data, gpointer user_data)
|
||||||
{
|
{
|
||||||
gboolean ret;
|
gboolean ret;
|
||||||
//ret = gst_plugin_load ((gchar *)data);
|
GstPlugin *plugin;
|
||||||
ret = FALSE;
|
const gchar *filename;
|
||||||
|
|
||||||
if (ret)
|
filename = (const gchar *) data;
|
||||||
GST_INFO (GST_CAT_GST_INIT, "Loaded plugin: \"%s\"", (gchar *)data);
|
|
||||||
|
plugin = gst_plugin_new (filename);
|
||||||
|
ret = gst_plugin_load_plugin (plugin, NULL);
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
GST_INFO (GST_CAT_GST_INIT, "Loaded plugin: \"%s\"", filename);
|
||||||
|
|
||||||
|
gst_registry_pool_add_plugin (plugin);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
GST_INFO (GST_CAT_GST_INIT, "Failed to load plugin: \"%s\"", (gchar *)data);
|
GST_INFO (GST_CAT_GST_INIT, "Failed to load plugin: \"%s\"", filename);
|
||||||
|
|
||||||
g_free (data);
|
g_free (data);
|
||||||
}
|
}
|
||||||
|
@ -372,47 +388,48 @@ split_and_iterate (const gchar *stringlist, gchar *separator, GFunc iterator, gp
|
||||||
static gboolean
|
static gboolean
|
||||||
init_pre (void)
|
init_pre (void)
|
||||||
{
|
{
|
||||||
const gchar *homedir;
|
|
||||||
gchar *user_reg;
|
|
||||||
|
|
||||||
g_type_init ();
|
g_type_init ();
|
||||||
|
|
||||||
_global_registry = gst_xml_registry_new ("global_registry", GLOBAL_REGISTRY_FILE);
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
|
{
|
||||||
|
gchar *user_reg;
|
||||||
|
const gchar *homedir;
|
||||||
|
|
||||||
|
_global_registry = gst_xml_registry_new ("global_registry", GLOBAL_REGISTRY_FILE);
|
||||||
|
|
||||||
#ifdef PLUGINS_USE_BUILDDIR
|
#ifdef PLUGINS_USE_BUILDDIR
|
||||||
/* location libgstelements.so */
|
/* location libgstelements.so */
|
||||||
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/libs/gst");
|
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/libs/gst");
|
||||||
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/gst/elements");
|
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/gst/elements");
|
||||||
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/gst/types");
|
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/gst/types");
|
||||||
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/gst/autoplug");
|
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/gst/autoplug");
|
||||||
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/gst/schedulers");
|
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/gst/schedulers");
|
||||||
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/gst/indexers");
|
gst_registry_add_path (_global_registry, PLUGINS_BUILDDIR "/gst/indexers");
|
||||||
#else
|
#else
|
||||||
/* add the main (installed) library path */
|
/* add the main (installed) library path */
|
||||||
gst_registry_add_path (_global_registry, PLUGINS_DIR);
|
gst_registry_add_path (_global_registry, PLUGINS_DIR);
|
||||||
#endif /* PLUGINS_USE_BUILDDIR */
|
#endif /* PLUGINS_USE_BUILDDIR */
|
||||||
|
|
||||||
homedir = g_get_home_dir ();
|
homedir = g_get_home_dir ();
|
||||||
user_reg = g_strjoin ("/", homedir, LOCAL_REGISTRY_FILE, NULL);
|
user_reg = g_strjoin ("/", homedir, LOCAL_REGISTRY_FILE, NULL);
|
||||||
_user_registry = gst_xml_registry_new ("user_registry", user_reg);
|
_user_registry = gst_xml_registry_new ("user_registry", user_reg);
|
||||||
|
|
||||||
#ifndef GST_DISABLE_REGISTRY
|
/* this test is a hack; gst-register sets this to false
|
||||||
/* this test is a hack; gst-register sets this to false
|
* so this is a test for the current instance being gst-register */
|
||||||
* so this is a test for the current instance being gst-register */
|
if (_gst_registry_auto_load == TRUE) {
|
||||||
if (_gst_registry_auto_load == TRUE)
|
/* do a sanity check here; either one of the two registries should exist */
|
||||||
{
|
if (!g_file_test (user_reg, G_FILE_TEST_IS_REGULAR)) {
|
||||||
/* do a sanity check here; either one of the two registries should exist */
|
if (!g_file_test (GLOBAL_REGISTRY_FILE, G_FILE_TEST_IS_REGULAR))
|
||||||
if (!g_file_test (user_reg, G_FILE_TEST_IS_REGULAR))
|
{
|
||||||
if (!g_file_test (GLOBAL_REGISTRY_FILE, G_FILE_TEST_IS_REGULAR))
|
g_print ("Couldn't find user registry %s or global registry %s\n",
|
||||||
{
|
user_reg, GLOBAL_REGISTRY_FILE);
|
||||||
g_print ("Couldn't find user registry %s or global registry %s\n",
|
g_error ("Please run gst-register either as root or user");
|
||||||
user_reg, GLOBAL_REGISTRY_FILE);
|
}
|
||||||
g_error ("Please run gst-register either as root or user");
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
g_free (user_reg);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
|
|
||||||
g_free (user_reg);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -431,10 +448,10 @@ gst_register_core_elements (GModule *module, GstPlugin *plugin)
|
||||||
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
|
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
|
||||||
factory = gst_element_factory_new ("queue", gst_queue_get_type (), &gst_queue_details);
|
factory = gst_element_factory_new ("queue", gst_queue_get_type (), &gst_queue_details);
|
||||||
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
|
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
|
||||||
#ifndef GST_DISABLE_TYPE_FIND
|
#ifndef GST_DISABLE_TYPEFIND
|
||||||
factory = gst_element_factory_new ("typefind", gst_type_find_get_type (), &gst_type_find_details);
|
factory = gst_element_factory_new ("typefind", gst_type_find_get_type (), &gst_type_find_details);
|
||||||
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
|
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
|
||||||
#endif
|
#endif /* GST_DISABLE_TYPEFIND */
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -464,7 +481,7 @@ init_post (void)
|
||||||
const gchar *plugin_path;
|
const gchar *plugin_path;
|
||||||
#ifndef GST_DISABLE_TRACE
|
#ifndef GST_DISABLE_TRACE
|
||||||
GstTrace *gst_trace;
|
GstTrace *gst_trace;
|
||||||
#endif
|
#endif /* GST_DISABLE_TRACE */
|
||||||
|
|
||||||
if (!g_thread_supported ()) {
|
if (!g_thread_supported ()) {
|
||||||
if (_gst_use_threads)
|
if (_gst_use_threads)
|
||||||
|
@ -493,13 +510,18 @@ init_post (void)
|
||||||
gst_bin_get_type ();
|
gst_bin_get_type ();
|
||||||
#ifndef GST_DISABLE_AUTOPLUG
|
#ifndef GST_DISABLE_AUTOPLUG
|
||||||
gst_autoplug_factory_get_type ();
|
gst_autoplug_factory_get_type ();
|
||||||
#endif
|
#endif /* GST_DISABLE_AUTOPLUG */
|
||||||
|
#ifndef GST_DISABLE_INDEX
|
||||||
gst_index_factory_get_type ();
|
gst_index_factory_get_type ();
|
||||||
|
#endif /* GST_DISABLE_INDEX */
|
||||||
|
#ifndef GST_DISABLE_URI
|
||||||
gst_uri_handler_get_type ();
|
gst_uri_handler_get_type ();
|
||||||
|
#endif /* GST_DISABLE_URI */
|
||||||
|
|
||||||
plugin_path = g_getenv ("GST_PLUGIN_PATH");
|
plugin_path = g_getenv ("GST_PLUGIN_PATH");
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
split_and_iterate (plugin_path, G_SEARCHPATH_SEPARATOR_S, add_path_func, _user_registry);
|
split_and_iterate (plugin_path, G_SEARCHPATH_SEPARATOR_S, add_path_func, _user_registry);
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
|
|
||||||
/* register core plugins */
|
/* register core plugins */
|
||||||
_gst_plugin_register_static (&plugin_desc);
|
_gst_plugin_register_static (&plugin_desc);
|
||||||
|
@ -511,6 +533,7 @@ init_post (void)
|
||||||
_gst_event_initialize ();
|
_gst_event_initialize ();
|
||||||
_gst_buffer_initialize ();
|
_gst_buffer_initialize ();
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
if (!_gst_registry_fixed) {
|
if (!_gst_registry_fixed) {
|
||||||
/* don't override command-line options */
|
/* don't override command-line options */
|
||||||
if (g_getenv ("GST_REGISTRY")) {
|
if (g_getenv ("GST_REGISTRY")) {
|
||||||
|
@ -529,6 +552,7 @@ init_post (void)
|
||||||
if (_gst_registry_auto_load) {
|
if (_gst_registry_auto_load) {
|
||||||
gst_registry_pool_load_all ();
|
gst_registry_pool_load_all ();
|
||||||
}
|
}
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
|
|
||||||
/* if we need to preload plugins */
|
/* if we need to preload plugins */
|
||||||
if (preload_plugins) {
|
if (preload_plugins) {
|
||||||
|
@ -620,7 +644,9 @@ init_popt_callback (poptContext context, enum poptCallbackReason reason,
|
||||||
case ARG_PLUGIN_SPEW:
|
case ARG_PLUGIN_SPEW:
|
||||||
break;
|
break;
|
||||||
case ARG_PLUGIN_PATH:
|
case ARG_PLUGIN_PATH:
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
split_and_iterate (arg, G_SEARCHPATH_SEPARATOR_S, add_path_func, _user_registry);
|
split_and_iterate (arg, G_SEARCHPATH_SEPARATOR_S, add_path_func, _user_registry);
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
break;
|
break;
|
||||||
case ARG_PLUGIN_LOAD:
|
case ARG_PLUGIN_LOAD:
|
||||||
split_and_iterate (arg, ",", prepare_for_load_plugin_func, NULL);
|
split_and_iterate (arg, ",", prepare_for_load_plugin_func, NULL);
|
||||||
|
@ -632,8 +658,10 @@ init_popt_callback (poptContext context, enum poptCallbackReason reason,
|
||||||
gst_use_threads (FALSE);
|
gst_use_threads (FALSE);
|
||||||
break;
|
break;
|
||||||
case ARG_REGISTRY:
|
case ARG_REGISTRY:
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
g_object_set (G_OBJECT (_user_registry), "location", arg, NULL);
|
g_object_set (G_OBJECT (_user_registry), "location", arg, NULL);
|
||||||
_gst_registry_fixed = TRUE;
|
_gst_registry_fixed = TRUE;
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
g_warning ("option %d not recognized", option->val);
|
g_warning ("option %d not recognized", option->val);
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
#include <gst/gstprops.h>
|
#include <gst/gstprops.h>
|
||||||
#include <gst/gstplugin.h>
|
#include <gst/gstplugin.h>
|
||||||
#include <gst/gsturi.h>
|
#include <gst/gsturi.h>
|
||||||
|
#include <gst/gsturitype.h>
|
||||||
#include <gst/gstutils.h>
|
#include <gst/gstutils.h>
|
||||||
#include <gst/gsttrace.h>
|
#include <gst/gsttrace.h>
|
||||||
#include <gst/gstxml.h>
|
#include <gst/gstxml.h>
|
||||||
|
@ -57,7 +58,7 @@
|
||||||
|
|
||||||
#include <gst/gstparse.h>
|
#include <gst/gstparse.h>
|
||||||
#include <gst/gstregistry.h>
|
#include <gst/gstregistry.h>
|
||||||
#include <gst/gstextratypes.h>
|
#include <gst/gstregistrypool.h>
|
||||||
#include <gst/gstenumtypes.h>
|
#include <gst/gstenumtypes.h>
|
||||||
|
|
||||||
/* API compatibility stuff */
|
/* API compatibility stuff */
|
||||||
|
|
37
gst/gstbin.c
37
gst/gstbin.c
|
@ -49,12 +49,17 @@ static void gst_bin_dispose (GObject * object);
|
||||||
static GstElementStateReturn gst_bin_change_state (GstElement *element);
|
static GstElementStateReturn gst_bin_change_state (GstElement *element);
|
||||||
static GstElementStateReturn gst_bin_change_state_norecurse (GstBin *bin);
|
static GstElementStateReturn gst_bin_change_state_norecurse (GstBin *bin);
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_INDEX
|
||||||
static void gst_bin_set_index (GstElement *element, GstIndex *index);
|
static void gst_bin_set_index (GstElement *element, GstIndex *index);
|
||||||
|
#endif
|
||||||
|
|
||||||
static void gst_bin_add_func (GstBin *bin, GstElement *element);
|
static void gst_bin_add_func (GstBin *bin, GstElement *element);
|
||||||
static void gst_bin_remove_func (GstBin *bin, GstElement *element);
|
static void gst_bin_remove_func (GstBin *bin, GstElement *element);
|
||||||
|
|
||||||
static gboolean gst_bin_iterate_func (GstBin * bin);
|
static GstClock* gst_bin_get_clock_func (GstBin *bin);
|
||||||
|
static void gst_bin_set_clock_func (GstBin *bin, GstClock *clock);
|
||||||
|
|
||||||
|
static gboolean gst_bin_iterate_func (GstBin *bin);
|
||||||
|
|
||||||
#ifndef GST_DISABLE_LOADSAVE
|
#ifndef GST_DISABLE_LOADSAVE
|
||||||
static xmlNodePtr gst_bin_save_thyself (GstObject * object, xmlNodePtr parent);
|
static xmlNodePtr gst_bin_save_thyself (GstObject * object, xmlNodePtr parent);
|
||||||
|
@ -133,7 +138,11 @@ gst_bin_class_init (GstBinClass * klass)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_bin_change_state);
|
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_bin_change_state);
|
||||||
|
#ifndef GST_DISABLE_INDEX
|
||||||
gstelement_class->set_index = GST_DEBUG_FUNCPTR (gst_bin_set_index);
|
gstelement_class->set_index = GST_DEBUG_FUNCPTR (gst_bin_set_index);
|
||||||
|
#endif
|
||||||
|
gstelement_class->set_clock = GST_DEBUG_FUNCPTR (gst_bin_set_clock_func);
|
||||||
|
gstelement_class->get_clock = GST_DEBUG_FUNCPTR (gst_bin_get_clock_func);
|
||||||
|
|
||||||
klass->add_element = GST_DEBUG_FUNCPTR (gst_bin_add_func);
|
klass->add_element = GST_DEBUG_FUNCPTR (gst_bin_add_func);
|
||||||
klass->remove_element = GST_DEBUG_FUNCPTR (gst_bin_remove_func);
|
klass->remove_element = GST_DEBUG_FUNCPTR (gst_bin_remove_func);
|
||||||
|
@ -169,6 +178,22 @@ gst_bin_new (const gchar * name)
|
||||||
return gst_element_factory_make ("bin", name);
|
return gst_element_factory_make ("bin", name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GstClock*
|
||||||
|
gst_bin_get_clock_func (GstBin *bin)
|
||||||
|
{
|
||||||
|
if (GST_ELEMENT_SCHED (bin))
|
||||||
|
return gst_scheduler_get_clock (GST_ELEMENT_SCHED (bin));
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_bin_set_clock_func (GstBin *bin, GstClock *clock)
|
||||||
|
{
|
||||||
|
if (GST_ELEMENT_SCHED (bin))
|
||||||
|
gst_scheduler_use_clock (GST_ELEMENT_SCHED (bin), clock);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_bin_get_clock:
|
* gst_bin_get_clock:
|
||||||
* @bin: a #GstBin to get the clock of
|
* @bin: a #GstBin to get the clock of
|
||||||
|
@ -183,10 +208,7 @@ gst_bin_get_clock (GstBin *bin)
|
||||||
g_return_val_if_fail (bin != NULL, NULL);
|
g_return_val_if_fail (bin != NULL, NULL);
|
||||||
g_return_val_if_fail (GST_IS_BIN (bin), NULL);
|
g_return_val_if_fail (GST_IS_BIN (bin), NULL);
|
||||||
|
|
||||||
if (GST_ELEMENT_SCHED (bin))
|
return gst_bin_get_clock_func (bin);
|
||||||
return gst_scheduler_get_clock (GST_ELEMENT_SCHED (bin));
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -203,8 +225,7 @@ gst_bin_use_clock (GstBin *bin, GstClock *clock)
|
||||||
g_return_if_fail (bin != NULL);
|
g_return_if_fail (bin != NULL);
|
||||||
g_return_if_fail (GST_IS_BIN (bin));
|
g_return_if_fail (GST_IS_BIN (bin));
|
||||||
|
|
||||||
if (GST_ELEMENT_SCHED (bin))
|
return gst_bin_set_clock_func (bin, clock);
|
||||||
gst_scheduler_use_clock (GST_ELEMENT_SCHED (bin), clock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -223,6 +244,7 @@ gst_bin_auto_clock (GstBin *bin)
|
||||||
gst_scheduler_auto_clock (GST_ELEMENT_SCHED (bin));
|
gst_scheduler_auto_clock (GST_ELEMENT_SCHED (bin));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_INDEX
|
||||||
static void
|
static void
|
||||||
gst_bin_set_index (GstElement *element, GstIndex *index)
|
gst_bin_set_index (GstElement *element, GstIndex *index)
|
||||||
{
|
{
|
||||||
|
@ -239,6 +261,7 @@ gst_bin_set_index (GstElement *element, GstIndex *index)
|
||||||
gst_element_set_index (child, index);
|
gst_element_set_index (child, index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_bin_set_element_sched (GstElement *element, GstScheduler *sched)
|
gst_bin_set_element_sched (GstElement *element, GstScheduler *sched)
|
||||||
|
|
|
@ -31,14 +31,16 @@
|
||||||
#include "gstlog.h"
|
#include "gstlog.h"
|
||||||
#include "gstbufferpool-default.h"
|
#include "gstbufferpool-default.h"
|
||||||
|
|
||||||
/* #define GST_WITH_ALLOC_TRACE */
|
|
||||||
#include "gsttrace.h"
|
|
||||||
|
|
||||||
GType _gst_buffer_type;
|
GType _gst_buffer_type;
|
||||||
GType _gst_buffer_pool_type;
|
GType _gst_buffer_pool_type;
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
|
/* #define GST_WITH_ALLOC_TRACE */
|
||||||
|
#include "gsttrace.h"
|
||||||
|
|
||||||
static GstAllocTrace *_gst_buffer_trace;
|
static GstAllocTrace *_gst_buffer_trace;
|
||||||
static GstAllocTrace *_gst_buffer_pool_trace;
|
static GstAllocTrace *_gst_buffer_pool_trace;
|
||||||
|
#endif
|
||||||
|
|
||||||
static GstMemChunk *chunk;
|
static GstMemChunk *chunk;
|
||||||
|
|
||||||
|
@ -53,8 +55,10 @@ _gst_buffer_initialize (void)
|
||||||
(GBoxedCopyFunc) gst_data_ref,
|
(GBoxedCopyFunc) gst_data_ref,
|
||||||
(GBoxedFreeFunc) gst_data_unref);
|
(GBoxedFreeFunc) gst_data_unref);
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
_gst_buffer_trace = gst_alloc_trace_register (GST_BUFFER_TRACE_NAME);
|
_gst_buffer_trace = gst_alloc_trace_register (GST_BUFFER_TRACE_NAME);
|
||||||
_gst_buffer_pool_trace = gst_alloc_trace_register (GST_BUFFER_POOL_TRACE_NAME);
|
_gst_buffer_pool_trace = gst_alloc_trace_register (GST_BUFFER_POOL_TRACE_NAME);
|
||||||
|
#endif
|
||||||
|
|
||||||
chunk = gst_mem_chunk_new ("GstBufferChunk", sizeof (GstBuffer),
|
chunk = gst_mem_chunk_new ("GstBufferChunk", sizeof (GstBuffer),
|
||||||
sizeof (GstBuffer) * 200, 0);
|
sizeof (GstBuffer) * 200, 0);
|
||||||
|
@ -83,7 +87,9 @@ _gst_buffer_sub_free (GstBuffer *buffer)
|
||||||
_GST_DATA_DISPOSE (GST_DATA (buffer));
|
_GST_DATA_DISPOSE (GST_DATA (buffer));
|
||||||
|
|
||||||
gst_mem_chunk_free (chunk, GST_DATA (buffer));
|
gst_mem_chunk_free (chunk, GST_DATA (buffer));
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_free (_gst_buffer_trace, buffer);
|
gst_alloc_trace_free (_gst_buffer_trace, buffer);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -110,7 +116,9 @@ gst_buffer_default_free (GstBuffer *buffer)
|
||||||
_GST_DATA_DISPOSE (GST_DATA (buffer));
|
_GST_DATA_DISPOSE (GST_DATA (buffer));
|
||||||
|
|
||||||
gst_mem_chunk_free (chunk, GST_DATA (buffer));
|
gst_mem_chunk_free (chunk, GST_DATA (buffer));
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_free (_gst_buffer_trace, buffer);
|
gst_alloc_trace_free (_gst_buffer_trace, buffer);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstBuffer*
|
static GstBuffer*
|
||||||
|
@ -162,7 +170,11 @@ gst_buffer_new (void)
|
||||||
GstBuffer *buf;
|
GstBuffer *buf;
|
||||||
|
|
||||||
buf = gst_mem_chunk_alloc0 (chunk);
|
buf = gst_mem_chunk_alloc0 (chunk);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_new (_gst_buffer_trace, buf);
|
gst_alloc_trace_new (_gst_buffer_trace, buf);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
GST_DEBUG (GST_CAT_BUFFER, "new %p", buf);
|
||||||
|
|
||||||
_GST_DATA_INIT (GST_DATA (buf),
|
_GST_DATA_INIT (GST_DATA (buf),
|
||||||
_gst_buffer_type,
|
_gst_buffer_type,
|
||||||
|
@ -270,7 +282,11 @@ gst_buffer_create_sub (GstBuffer *parent, guint offset, guint size)
|
||||||
|
|
||||||
/* create the new buffer */
|
/* create the new buffer */
|
||||||
buffer = gst_mem_chunk_alloc0 (chunk);
|
buffer = gst_mem_chunk_alloc0 (chunk);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_new (_gst_buffer_trace, buffer);
|
gst_alloc_trace_new (_gst_buffer_trace, buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
GST_DEBUG (GST_CAT_BUFFER, "new %p", buf);
|
||||||
|
|
||||||
/* make sure nobody overwrites data in the new buffer
|
/* make sure nobody overwrites data in the new buffer
|
||||||
* by setting the READONLY flag */
|
* by setting the READONLY flag */
|
||||||
|
@ -416,7 +432,9 @@ gst_buffer_pool_default_free (GstBufferPool *pool)
|
||||||
|
|
||||||
_GST_DATA_DISPOSE (GST_DATA (pool));
|
_GST_DATA_DISPOSE (GST_DATA (pool));
|
||||||
g_free (pool);
|
g_free (pool);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_free (_gst_buffer_pool_trace, pool);
|
gst_alloc_trace_free (_gst_buffer_pool_trace, pool);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -449,7 +467,9 @@ gst_buffer_pool_new (GstDataFreeFunction free,
|
||||||
g_return_val_if_fail (buffer_new != NULL, NULL);
|
g_return_val_if_fail (buffer_new != NULL, NULL);
|
||||||
|
|
||||||
pool = g_new0 (GstBufferPool, 1);
|
pool = g_new0 (GstBufferPool, 1);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_new (_gst_buffer_pool_trace, pool);
|
gst_alloc_trace_new (_gst_buffer_pool_trace, pool);
|
||||||
|
#endif
|
||||||
|
|
||||||
GST_DEBUG (GST_CAT_BUFFER, "allocating new buffer pool %p\n", pool);
|
GST_DEBUG (GST_CAT_BUFFER, "allocating new buffer pool %p\n", pool);
|
||||||
|
|
||||||
|
|
|
@ -28,12 +28,14 @@
|
||||||
#include "gstmemchunk.h"
|
#include "gstmemchunk.h"
|
||||||
#include "gstlog.h"
|
#include "gstlog.h"
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
/* #define GST_WITH_ALLOC_TRACE */
|
/* #define GST_WITH_ALLOC_TRACE */
|
||||||
#include "gsttrace.h"
|
#include "gsttrace.h"
|
||||||
|
|
||||||
static GstMemChunk *_gst_caps_chunk;
|
|
||||||
|
|
||||||
static GstAllocTrace *_gst_caps_trace;
|
static GstAllocTrace *_gst_caps_trace;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static GstMemChunk *_gst_caps_chunk;
|
||||||
|
|
||||||
GType _gst_caps_type;
|
GType _gst_caps_type;
|
||||||
|
|
||||||
|
@ -83,7 +85,9 @@ _gst_caps_initialize (void)
|
||||||
G_TYPE_STRING,
|
G_TYPE_STRING,
|
||||||
transform_func);
|
transform_func);
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
_gst_caps_trace = gst_alloc_trace_register (GST_CAPS_TRACE_NAME);
|
_gst_caps_trace = gst_alloc_trace_register (GST_CAPS_TRACE_NAME);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static guint16
|
static guint16
|
||||||
|
@ -142,7 +146,9 @@ gst_caps_new_id (const gchar *name, const guint16 id, GstProps *props)
|
||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
|
|
||||||
caps = gst_mem_chunk_alloc (_gst_caps_chunk);
|
caps = gst_mem_chunk_alloc (_gst_caps_chunk);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_new (_gst_caps_trace, caps);
|
gst_alloc_trace_new (_gst_caps_trace, caps);
|
||||||
|
#endif
|
||||||
|
|
||||||
GST_DEBUG (GST_CAT_CAPS, "new %p", caps);
|
GST_DEBUG (GST_CAT_CAPS, "new %p", caps);
|
||||||
|
|
||||||
|
@ -219,7 +225,9 @@ gst_caps_destroy (GstCaps *caps)
|
||||||
gst_props_unref (caps->properties);
|
gst_props_unref (caps->properties);
|
||||||
g_free (caps->name);
|
g_free (caps->name);
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_free (_gst_caps_trace, caps);
|
gst_alloc_trace_free (_gst_caps_trace, caps);
|
||||||
|
#endif
|
||||||
gst_mem_chunk_free (_gst_caps_chunk, caps);
|
gst_mem_chunk_free (_gst_caps_chunk, caps);
|
||||||
|
|
||||||
if (next)
|
if (next)
|
||||||
|
@ -956,7 +964,9 @@ gst_caps_load_thyself (xmlNodePtr parent)
|
||||||
GstCapsFlags fixed = GST_CAPS_FIXED;
|
GstCapsFlags fixed = GST_CAPS_FIXED;
|
||||||
|
|
||||||
caps = gst_mem_chunk_alloc0 (_gst_caps_chunk);
|
caps = gst_mem_chunk_alloc0 (_gst_caps_chunk);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_new (_gst_caps_trace, caps);
|
gst_alloc_trace_new (_gst_caps_trace, caps);
|
||||||
|
#endif
|
||||||
|
|
||||||
caps->refcount = 1;
|
caps->refcount = 1;
|
||||||
GST_CAPS_FLAG_SET (caps, GST_CAPS_FLOATING);
|
GST_CAPS_FLAG_SET (caps, GST_CAPS_FLOATING);
|
||||||
|
|
|
@ -27,8 +27,11 @@
|
||||||
#include "gstlog.h"
|
#include "gstlog.h"
|
||||||
#include "gstmemchunk.h"
|
#include "gstmemchunk.h"
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
/* #define GST_WITH_ALLOC_TRACE */
|
/* #define GST_WITH_ALLOC_TRACE */
|
||||||
#include "gstmemchunk.h"
|
#include "gsttrace.h"
|
||||||
|
static GstAllocTrace *_gst_clock_entry_trace;
|
||||||
|
#endif
|
||||||
|
|
||||||
#define DEFAULT_MAX_DIFF (2 * GST_SECOND)
|
#define DEFAULT_MAX_DIFF (2 * GST_SECOND)
|
||||||
|
|
||||||
|
@ -39,7 +42,6 @@ enum {
|
||||||
};
|
};
|
||||||
|
|
||||||
static GstMemChunk *_gst_clock_entries_chunk;
|
static GstMemChunk *_gst_clock_entries_chunk;
|
||||||
static GstAllocTrace *_gst_clock_entry_trace;
|
|
||||||
|
|
||||||
static void gst_clock_class_init (GstClockClass *klass);
|
static void gst_clock_class_init (GstClockClass *klass);
|
||||||
static void gst_clock_init (GstClock *clock);
|
static void gst_clock_init (GstClock *clock);
|
||||||
|
@ -62,7 +64,9 @@ gst_clock_entry_new (GstClock *clock, GstClockTime time,
|
||||||
GstClockEntry *entry;
|
GstClockEntry *entry;
|
||||||
|
|
||||||
entry = gst_mem_chunk_alloc (_gst_clock_entries_chunk);
|
entry = gst_mem_chunk_alloc (_gst_clock_entries_chunk);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_new (_gst_clock_entry_trace, entry);
|
gst_alloc_trace_new (_gst_clock_entry_trace, entry);
|
||||||
|
#endif
|
||||||
|
|
||||||
entry->clock = clock;
|
entry->clock = clock;
|
||||||
entry->time = time;
|
entry->time = time;
|
||||||
|
@ -283,7 +287,9 @@ gst_clock_id_free (GstClockID id)
|
||||||
{
|
{
|
||||||
g_return_if_fail (id != NULL);
|
g_return_if_fail (id != NULL);
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_free (_gst_clock_entry_trace, id);
|
gst_alloc_trace_free (_gst_clock_entry_trace, id);
|
||||||
|
#endif
|
||||||
gst_mem_chunk_free (_gst_clock_entries_chunk, id);
|
gst_mem_chunk_free (_gst_clock_entries_chunk, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -357,7 +363,9 @@ gst_clock_class_init (GstClockClass *klass)
|
||||||
sizeof (GstClockEntry), sizeof (GstClockEntry) * 32,
|
sizeof (GstClockEntry), sizeof (GstClockEntry) * 32,
|
||||||
G_ALLOC_AND_FREE);
|
G_ALLOC_AND_FREE);
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
_gst_clock_entry_trace = gst_alloc_trace_register (GST_CLOCK_ENTRY_TRACE_NAME);
|
_gst_clock_entry_trace = gst_alloc_trace_register (GST_CLOCK_ENTRY_TRACE_NAME);
|
||||||
|
#endif
|
||||||
|
|
||||||
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_clock_dispose);
|
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_clock_dispose);
|
||||||
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_clock_set_property);
|
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_clock_set_property);
|
||||||
|
@ -454,8 +462,8 @@ gst_clock_set_resolution (GstClock *clock, guint64 resolution)
|
||||||
{
|
{
|
||||||
GstClockClass *cclass;
|
GstClockClass *cclass;
|
||||||
|
|
||||||
g_return_val_if_fail (GST_IS_CLOCK (clock), 0LL);
|
g_return_val_if_fail (GST_IS_CLOCK (clock), G_GINT64_CONSTANT (0));
|
||||||
g_return_val_if_fail (resolution != 0, 0LL);
|
g_return_val_if_fail (resolution != 0, G_GINT64_CONSTANT (0));
|
||||||
|
|
||||||
cclass = GST_CLOCK_GET_CLASS (clock);
|
cclass = GST_CLOCK_GET_CLASS (clock);
|
||||||
|
|
||||||
|
@ -478,14 +486,14 @@ gst_clock_get_resolution (GstClock *clock)
|
||||||
{
|
{
|
||||||
GstClockClass *cclass;
|
GstClockClass *cclass;
|
||||||
|
|
||||||
g_return_val_if_fail (GST_IS_CLOCK (clock), 0LL);
|
g_return_val_if_fail (GST_IS_CLOCK (clock), G_GINT64_CONSTANT (0));
|
||||||
|
|
||||||
cclass = GST_CLOCK_GET_CLASS (clock);
|
cclass = GST_CLOCK_GET_CLASS (clock);
|
||||||
|
|
||||||
if (cclass->get_resolution)
|
if (cclass->get_resolution)
|
||||||
return cclass->get_resolution (clock);
|
return cclass->get_resolution (clock);
|
||||||
|
|
||||||
return 1LL;
|
return G_GINT64_CONSTANT (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -499,7 +507,7 @@ gst_clock_get_resolution (GstClock *clock)
|
||||||
void
|
void
|
||||||
gst_clock_set_active (GstClock *clock, gboolean active)
|
gst_clock_set_active (GstClock *clock, gboolean active)
|
||||||
{
|
{
|
||||||
GstClockTime time = 0LL;
|
GstClockTime time = G_GINT64_CONSTANT (0);
|
||||||
GstClockClass *cclass;
|
GstClockClass *cclass;
|
||||||
|
|
||||||
g_return_if_fail (GST_IS_CLOCK (clock));
|
g_return_if_fail (GST_IS_CLOCK (clock));
|
||||||
|
@ -554,7 +562,7 @@ gst_clock_is_active (GstClock *clock)
|
||||||
void
|
void
|
||||||
gst_clock_reset (GstClock *clock)
|
gst_clock_reset (GstClock *clock)
|
||||||
{
|
{
|
||||||
GstClockTime time = 0LL;
|
GstClockTime time = G_GINT64_CONSTANT (0);
|
||||||
GstClockClass *cclass;
|
GstClockClass *cclass;
|
||||||
|
|
||||||
g_return_if_fail (GST_IS_CLOCK (clock));
|
g_return_if_fail (GST_IS_CLOCK (clock));
|
||||||
|
@ -568,7 +576,7 @@ gst_clock_reset (GstClock *clock)
|
||||||
GST_LOCK (clock);
|
GST_LOCK (clock);
|
||||||
clock->active = FALSE;
|
clock->active = FALSE;
|
||||||
clock->start_time = time;
|
clock->start_time = time;
|
||||||
clock->last_time = 0LL;
|
clock->last_time = G_GINT64_CONSTANT (0);
|
||||||
g_list_foreach (clock->entries, (GFunc) gst_clock_reschedule_func, NULL);
|
g_list_foreach (clock->entries, (GFunc) gst_clock_reschedule_func, NULL);
|
||||||
GST_UNLOCK (clock);
|
GST_UNLOCK (clock);
|
||||||
}
|
}
|
||||||
|
@ -587,7 +595,7 @@ gst_clock_reset (GstClock *clock)
|
||||||
gboolean
|
gboolean
|
||||||
gst_clock_handle_discont (GstClock *clock, guint64 time)
|
gst_clock_handle_discont (GstClock *clock, guint64 time)
|
||||||
{
|
{
|
||||||
GstClockTime itime = 0LL;
|
GstClockTime itime = G_GINT64_CONSTANT (0);
|
||||||
|
|
||||||
GST_DEBUG (GST_CAT_CLOCK, "clock discont %" G_GUINT64_FORMAT
|
GST_DEBUG (GST_CAT_CLOCK, "clock discont %" G_GUINT64_FORMAT
|
||||||
" %" G_GUINT64_FORMAT " %d",
|
" %" G_GUINT64_FORMAT " %d",
|
||||||
|
@ -642,9 +650,9 @@ gst_clock_handle_discont (GstClock *clock, guint64 time)
|
||||||
GstClockTime
|
GstClockTime
|
||||||
gst_clock_get_time (GstClock *clock)
|
gst_clock_get_time (GstClock *clock)
|
||||||
{
|
{
|
||||||
GstClockTime ret = 0LL;
|
GstClockTime ret = G_GINT64_CONSTANT (0);
|
||||||
|
|
||||||
g_return_val_if_fail (GST_IS_CLOCK (clock), 0LL);
|
g_return_val_if_fail (GST_IS_CLOCK (clock), G_GINT64_CONSTANT (0));
|
||||||
|
|
||||||
if (!clock->active) {
|
if (!clock->active) {
|
||||||
/* clock is not active return previous time */
|
/* clock is not active return previous time */
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
#include "gst_private.h"
|
#include "gst_private.h"
|
||||||
|
|
||||||
#include "gstelement.h"
|
#include "gstelement.h"
|
||||||
#include "gstextratypes.h"
|
|
||||||
#include "gstbin.h"
|
#include "gstbin.h"
|
||||||
#include "gstscheduler.h"
|
#include "gstscheduler.h"
|
||||||
#include "gstevent.h"
|
#include "gstevent.h"
|
||||||
|
@ -766,6 +765,7 @@ gst_element_clock_wait (GstElement *element, GstClockID id, GstClockTimeDiff *ji
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_INDEX
|
||||||
/**
|
/**
|
||||||
* gst_element_is_indexable:
|
* gst_element_is_indexable:
|
||||||
* @element: a #GstElement.
|
* @element: a #GstElement.
|
||||||
|
@ -826,6 +826,7 @@ gst_element_get_index (GstElement *element)
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_element_release_locks:
|
* gst_element_release_locks:
|
||||||
|
|
|
@ -258,6 +258,7 @@ GstClock* gst_element_get_clock (GstElement *element);
|
||||||
void gst_element_set_clock (GstElement *element, GstClock *clock);
|
void gst_element_set_clock (GstElement *element, GstClock *clock);
|
||||||
GstClockReturn gst_element_clock_wait (GstElement *element,
|
GstClockReturn gst_element_clock_wait (GstElement *element,
|
||||||
GstClockID id, GstClockTimeDiff *jitter);
|
GstClockID id, GstClockTimeDiff *jitter);
|
||||||
|
|
||||||
/* indexs */
|
/* indexs */
|
||||||
gboolean gst_element_is_indexable (GstElement *element);
|
gboolean gst_element_is_indexable (GstElement *element);
|
||||||
void gst_element_set_index (GstElement *element, GstIndex *index);
|
void gst_element_set_index (GstElement *element, GstIndex *index);
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#include "gst_private.h"
|
#include "gst_private.h"
|
||||||
|
|
||||||
#include "gstelement.h"
|
#include "gstelement.h"
|
||||||
#include "gstregistry.h"
|
#include "gstregistrypool.h"
|
||||||
#include "gstlog.h"
|
#include "gstlog.h"
|
||||||
|
|
||||||
static void gst_element_factory_class_init (GstElementFactoryClass *klass);
|
static void gst_element_factory_class_init (GstElementFactoryClass *klass);
|
||||||
|
|
|
@ -27,15 +27,16 @@
|
||||||
#include "gstevent.h"
|
#include "gstevent.h"
|
||||||
#include "gstlog.h"
|
#include "gstlog.h"
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
/* #define GST_WITH_ALLOC_TRACE */
|
/* #define GST_WITH_ALLOC_TRACE */
|
||||||
#include "gsttrace.h"
|
#include "gsttrace.h"
|
||||||
|
static GstAllocTrace *_event_trace;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* #define MEMPROF */
|
/* #define MEMPROF */
|
||||||
|
|
||||||
GType _gst_event_type;
|
GType _gst_event_type;
|
||||||
|
|
||||||
static GstAllocTrace *_event_trace;
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_gst_event_initialize (void)
|
_gst_event_initialize (void)
|
||||||
{
|
{
|
||||||
|
@ -44,7 +45,9 @@ _gst_event_initialize (void)
|
||||||
(GBoxedCopyFunc) gst_data_ref,
|
(GBoxedCopyFunc) gst_data_ref,
|
||||||
(GBoxedFreeFunc) gst_data_unref);
|
(GBoxedFreeFunc) gst_data_unref);
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
_event_trace = gst_alloc_trace_register (GST_EVENT_TRACE_NAME);
|
_event_trace = gst_alloc_trace_register (GST_EVENT_TRACE_NAME);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstEvent*
|
static GstEvent*
|
||||||
|
@ -53,7 +56,9 @@ _gst_event_copy (GstEvent *event)
|
||||||
GstEvent *copy;
|
GstEvent *copy;
|
||||||
|
|
||||||
copy = g_new0(GstEvent, 1);
|
copy = g_new0(GstEvent, 1);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_new (_event_trace, copy);
|
gst_alloc_trace_new (_event_trace, copy);
|
||||||
|
#endif
|
||||||
|
|
||||||
memcpy (copy, event, sizeof (GstEvent));
|
memcpy (copy, event, sizeof (GstEvent));
|
||||||
|
|
||||||
|
@ -75,7 +80,9 @@ _gst_event_free (GstEvent* event)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
_GST_DATA_DISPOSE (GST_DATA (event));
|
_GST_DATA_DISPOSE (GST_DATA (event));
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_free (_event_trace, event);
|
gst_alloc_trace_free (_event_trace, event);
|
||||||
|
#endif
|
||||||
|
|
||||||
g_free (event);
|
g_free (event);
|
||||||
}
|
}
|
||||||
|
@ -122,7 +129,9 @@ gst_event_new (GstEventType type)
|
||||||
GstEvent *event;
|
GstEvent *event;
|
||||||
|
|
||||||
event = g_new0(GstEvent, 1);
|
event = g_new0(GstEvent, 1);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_new (_event_trace, event);
|
gst_alloc_trace_new (_event_trace, event);
|
||||||
|
#endif
|
||||||
|
|
||||||
GST_INFO (GST_CAT_EVENT, "creating new event %p %d", event, type);
|
GST_INFO (GST_CAT_EVENT, "creating new event %p %d", event, type);
|
||||||
|
|
||||||
|
@ -133,7 +142,7 @@ gst_event_new (GstEventType type)
|
||||||
(GstDataCopyFunction) _gst_event_copy);
|
(GstDataCopyFunction) _gst_event_copy);
|
||||||
|
|
||||||
GST_EVENT_TYPE (event) = type;
|
GST_EVENT_TYPE (event) = type;
|
||||||
GST_EVENT_TIMESTAMP (event) = 0LL;
|
GST_EVENT_TIMESTAMP (event) = G_GINT64_CONSTANT (0);
|
||||||
GST_EVENT_SRC (event) = NULL;
|
GST_EVENT_SRC (event) = NULL;
|
||||||
|
|
||||||
return event;
|
return event;
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
#include <glib-object.h> /* note that this gets wrapped in __GST_OBJECT_H__ */
|
#include <glib-object.h> /* note that this gets wrapped in __GST_OBJECT_H__ */
|
||||||
#include <gst/gstmarshal.h>
|
#include <gst/gstmarshal.h>
|
||||||
|
|
||||||
#include <gst/gsttrace.h>
|
|
||||||
#include <gst/gsttypes.h>
|
#include <gst/gsttypes.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
@ -52,6 +51,12 @@ extern GType _gst_object_type;
|
||||||
# define GST_OBJECT_CLASS GST_OBJECT_CLASS_CAST
|
# define GST_OBJECT_CLASS GST_OBJECT_CLASS_CAST
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* make sure we don't change the object size but stil make it compile
|
||||||
|
* without libxml */
|
||||||
|
#ifdef GST_DISABLE_LOADSAVE_REGISTRY
|
||||||
|
#define xmlNodePtr gpointer
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
GST_DESTROYED = 0,
|
GST_DESTROYED = 0,
|
||||||
|
@ -83,18 +88,14 @@ struct _GstObjectClass {
|
||||||
/* signals */
|
/* signals */
|
||||||
void (*parent_set) (GstObject *object, GstObject *parent);
|
void (*parent_set) (GstObject *object, GstObject *parent);
|
||||||
void (*parent_unset) (GstObject *object, GstObject *parent);
|
void (*parent_unset) (GstObject *object, GstObject *parent);
|
||||||
#ifndef GST_DISABLE_LOADSAVE_REGISTRY
|
|
||||||
void (*object_saved) (GstObject *object, xmlNodePtr parent);
|
void (*object_saved) (GstObject *object, xmlNodePtr parent);
|
||||||
#endif
|
|
||||||
void (*deep_notify) (GstObject *object, GstObject *orig, GParamSpec *pspec);
|
void (*deep_notify) (GstObject *object, GstObject *orig, GParamSpec *pspec);
|
||||||
|
|
||||||
/* functions go here */
|
/* functions go here */
|
||||||
void (*destroy) (GstObject *object);
|
void (*destroy) (GstObject *object);
|
||||||
|
|
||||||
#ifndef GST_DISABLE_LOADSAVE_REGISTRY
|
|
||||||
xmlNodePtr (*save_thyself) (GstObject *object, xmlNodePtr parent);
|
xmlNodePtr (*save_thyself) (GstObject *object, xmlNodePtr parent);
|
||||||
void (*restore_thyself) (GstObject *object, xmlNodePtr self);
|
void (*restore_thyself) (GstObject *object, xmlNodePtr self);
|
||||||
#endif
|
|
||||||
|
|
||||||
gpointer dummy[4];
|
gpointer dummy[4];
|
||||||
};
|
};
|
||||||
|
@ -156,13 +157,13 @@ gchar * gst_object_get_path_string (GstObject *object);
|
||||||
|
|
||||||
guint gst_class_signal_connect (GstObjectClass *klass,
|
guint gst_class_signal_connect (GstObjectClass *klass,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
gpointer func,
|
gpointer func,
|
||||||
gpointer func_data);
|
gpointer func_data);
|
||||||
|
|
||||||
#ifndef GST_DISABLE_LOADSAVE_REGISTRY
|
#ifndef GST_DISABLE_LOADSAVE_REGISTRY
|
||||||
void gst_class_signal_emit_by_name (GstObject *object,
|
void gst_class_signal_emit_by_name (GstObject *object,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
xmlNodePtr self);
|
xmlNodePtr self);
|
||||||
#else
|
#else
|
||||||
#pragma GCC poison gst_class_signal_emit_by_name
|
#pragma GCC poison gst_class_signal_emit_by_name
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -511,8 +511,10 @@ GstPadTemplate* gst_pad_template_new (const gchar *name_template,
|
||||||
GstCaps* gst_pad_template_get_caps (GstPadTemplate *templ);
|
GstCaps* gst_pad_template_get_caps (GstPadTemplate *templ);
|
||||||
GstCaps* gst_pad_template_get_caps_by_name (GstPadTemplate *templ, const gchar *name);
|
GstCaps* gst_pad_template_get_caps_by_name (GstPadTemplate *templ, const gchar *name);
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_LOADSAVE
|
||||||
xmlNodePtr gst_ghost_pad_save_thyself (GstPad *pad,
|
xmlNodePtr gst_ghost_pad_save_thyself (GstPad *pad,
|
||||||
xmlNodePtr parent);
|
xmlNodePtr parent);
|
||||||
|
#endif
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include "gst_private.h"
|
#include "gst_private.h"
|
||||||
#include "gstplugin.h"
|
#include "gstplugin.h"
|
||||||
#include "gstversion.h"
|
#include "gstversion.h"
|
||||||
#include "gstregistry.h"
|
#include "gstregistrypool.h"
|
||||||
#include "gstlog.h"
|
#include "gstlog.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,7 @@ gst_plugin_feature_ensure_loaded (GstPluginFeature *feature)
|
||||||
plugin = (GstPlugin *) (feature->manager);
|
plugin = (GstPlugin *) (feature->manager);
|
||||||
|
|
||||||
if (plugin && !gst_plugin_is_loaded (plugin)) {
|
if (plugin && !gst_plugin_is_loaded (plugin)) {
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
if (GST_IS_REGISTRY (plugin->manager)) {
|
if (GST_IS_REGISTRY (plugin->manager)) {
|
||||||
GST_DEBUG (GST_CAT_PLUGIN_LOADING,
|
GST_DEBUG (GST_CAT_PLUGIN_LOADING,
|
||||||
"loading plugin %s for feature", plugin->name);
|
"loading plugin %s for feature", plugin->name);
|
||||||
|
@ -100,6 +101,7 @@ gst_plugin_feature_ensure_loaded (GstPluginFeature *feature)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
|
@ -27,15 +27,16 @@
|
||||||
#include "gstprops.h"
|
#include "gstprops.h"
|
||||||
#include "gstmemchunk.h"
|
#include "gstmemchunk.h"
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
/* #define GST_WITH_ALLOC_TRACE */
|
/* #define GST_WITH_ALLOC_TRACE */
|
||||||
#include "gsttrace.h"
|
#include "gsttrace.h"
|
||||||
|
static GstAllocTrace *_props_trace;
|
||||||
|
static GstAllocTrace *_entries_trace;
|
||||||
|
#endif
|
||||||
|
|
||||||
GType _gst_props_type;
|
GType _gst_props_type;
|
||||||
GType _gst_props_entry_type;
|
GType _gst_props_entry_type;
|
||||||
|
|
||||||
static GstAllocTrace *_props_trace;
|
|
||||||
static GstAllocTrace *_entries_trace;
|
|
||||||
|
|
||||||
#define GST_PROPS_ENTRY_IS_VARIABLE(a) (((GstPropsEntry*)(a))->propstype > GST_PROPS_VAR_TYPE)
|
#define GST_PROPS_ENTRY_IS_VARIABLE(a) (((GstPropsEntry*)(a))->propstype > GST_PROPS_VAR_TYPE)
|
||||||
|
|
||||||
struct _GstPropsEntry {
|
struct _GstPropsEntry {
|
||||||
|
@ -142,8 +143,10 @@ _gst_props_initialize (void)
|
||||||
(GBoxedCopyFunc) gst_props_entry_copy,
|
(GBoxedCopyFunc) gst_props_entry_copy,
|
||||||
(GBoxedFreeFunc) gst_props_entry_destroy);
|
(GBoxedFreeFunc) gst_props_entry_destroy);
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
_props_trace = gst_alloc_trace_register (GST_PROPS_TRACE_NAME);
|
_props_trace = gst_alloc_trace_register (GST_PROPS_TRACE_NAME);
|
||||||
_entries_trace = gst_alloc_trace_register (GST_PROPS_ENTRY_TRACE_NAME);
|
_entries_trace = gst_alloc_trace_register (GST_PROPS_ENTRY_TRACE_NAME);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -309,7 +312,9 @@ gst_props_alloc_entry (void)
|
||||||
GstPropsEntry *entry;
|
GstPropsEntry *entry;
|
||||||
|
|
||||||
entry = gst_mem_chunk_alloc (_gst_props_entries_chunk);
|
entry = gst_mem_chunk_alloc (_gst_props_entries_chunk);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_new (_entries_trace, entry);
|
gst_alloc_trace_new (_entries_trace, entry);
|
||||||
|
#endif
|
||||||
|
|
||||||
GST_DEBUG (GST_CAT_PROPERTIES, "new entry %p", entry);
|
GST_DEBUG (GST_CAT_PROPERTIES, "new entry %p", entry);
|
||||||
|
|
||||||
|
@ -347,7 +352,9 @@ gst_props_entry_destroy (GstPropsEntry *entry)
|
||||||
gst_props_entry_clean (entry);
|
gst_props_entry_clean (entry);
|
||||||
|
|
||||||
gst_mem_chunk_free (_gst_props_entries_chunk, entry);
|
gst_mem_chunk_free (_gst_props_entries_chunk, entry);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_free (_entries_trace, entry);
|
gst_alloc_trace_free (_entries_trace, entry);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -363,7 +370,9 @@ gst_props_empty_new (void)
|
||||||
GstProps *props;
|
GstProps *props;
|
||||||
|
|
||||||
props = gst_mem_chunk_alloc (_gst_props_chunk);
|
props = gst_mem_chunk_alloc (_gst_props_chunk);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_new (_props_trace, props);
|
gst_alloc_trace_new (_props_trace, props);
|
||||||
|
#endif
|
||||||
|
|
||||||
GST_DEBUG (GST_CAT_PROPERTIES, "new %p", props);
|
GST_DEBUG (GST_CAT_PROPERTIES, "new %p", props);
|
||||||
|
|
||||||
|
@ -915,7 +924,9 @@ gst_props_destroy (GstProps *props)
|
||||||
g_list_free (props->properties);
|
g_list_free (props->properties);
|
||||||
|
|
||||||
gst_mem_chunk_free (_gst_props_chunk, props);
|
gst_mem_chunk_free (_gst_props_chunk, props);
|
||||||
|
#ifndef GST_DISABLE_TRACE
|
||||||
gst_alloc_trace_free (_props_trace, props);
|
gst_alloc_trace_free (_props_trace, props);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -39,10 +39,6 @@ enum {
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static GList *_gst_registry_pool = NULL;
|
|
||||||
static GList *_gst_registry_pool_plugins = NULL;
|
|
||||||
|
|
||||||
static void gst_registry_class_init (GstRegistryClass *klass);
|
static void gst_registry_class_init (GstRegistryClass *klass);
|
||||||
static void gst_registry_init (GstRegistry *registry);
|
static void gst_registry_init (GstRegistry *registry);
|
||||||
|
|
||||||
|
@ -313,37 +309,6 @@ gst_registry_remove_plugin (GstRegistry *registry, GstPlugin *plugin)
|
||||||
registry->plugins = g_list_remove (registry->plugins, plugin);
|
registry->plugins = g_list_remove (registry->plugins, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstPluginFeature*
|
|
||||||
gst_plugin_list_find_feature (GList *plugins, const gchar *name, GType type)
|
|
||||||
{
|
|
||||||
GstPluginFeature *feature = NULL;
|
|
||||||
|
|
||||||
while (plugins) {
|
|
||||||
GstPlugin *plugin = (GstPlugin *) (plugins->data);
|
|
||||||
|
|
||||||
feature = gst_plugin_find_feature (plugin, name, type);
|
|
||||||
if (feature)
|
|
||||||
return feature;
|
|
||||||
|
|
||||||
plugins = g_list_next (plugins);
|
|
||||||
}
|
|
||||||
return feature;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GstPlugin*
|
|
||||||
gst_plugin_list_find_plugin (GList *plugins, const gchar *name)
|
|
||||||
{
|
|
||||||
while (plugins) {
|
|
||||||
GstPlugin *plugin = (GstPlugin *) (plugins->data);
|
|
||||||
|
|
||||||
if (plugin->name && !strcmp (plugin->name, name))
|
|
||||||
return plugin;
|
|
||||||
|
|
||||||
plugins = g_list_next (plugins);
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_registry_find_plugin:
|
* gst_registry_find_plugin:
|
||||||
* @registry: the registry to search
|
* @registry: the registry to search
|
||||||
|
@ -356,10 +321,22 @@ gst_plugin_list_find_plugin (GList *plugins, const gchar *name)
|
||||||
GstPlugin*
|
GstPlugin*
|
||||||
gst_registry_find_plugin (GstRegistry *registry, const gchar *name)
|
gst_registry_find_plugin (GstRegistry *registry, const gchar *name)
|
||||||
{
|
{
|
||||||
|
GList *plugins;
|
||||||
|
|
||||||
g_return_val_if_fail (GST_IS_REGISTRY (registry), NULL);
|
g_return_val_if_fail (GST_IS_REGISTRY (registry), NULL);
|
||||||
g_return_val_if_fail (name != NULL, NULL);
|
g_return_val_if_fail (name != NULL, NULL);
|
||||||
|
|
||||||
|
plugins = registry->plugins;
|
||||||
|
|
||||||
return gst_plugin_list_find_plugin (registry->plugins, name);
|
while (plugins) {
|
||||||
|
GstPlugin *plugin = (GstPlugin *) (plugins->data);
|
||||||
|
|
||||||
|
if (plugin->name && !strcmp (plugin->name, name))
|
||||||
|
return plugin;
|
||||||
|
|
||||||
|
plugins = g_list_next (plugins);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -376,10 +353,24 @@ gst_registry_find_plugin (GstRegistry *registry, const gchar *name)
|
||||||
GstPluginFeature*
|
GstPluginFeature*
|
||||||
gst_registry_find_feature (GstRegistry *registry, const gchar *name, GType type)
|
gst_registry_find_feature (GstRegistry *registry, const gchar *name, GType type)
|
||||||
{
|
{
|
||||||
|
GstPluginFeature *feature = NULL;
|
||||||
|
GList *plugins;
|
||||||
|
|
||||||
g_return_val_if_fail (GST_IS_REGISTRY (registry), NULL);
|
g_return_val_if_fail (GST_IS_REGISTRY (registry), NULL);
|
||||||
g_return_val_if_fail (name != NULL, NULL);
|
g_return_val_if_fail (name != NULL, NULL);
|
||||||
|
|
||||||
return gst_plugin_list_find_feature (registry->plugins, name, type);
|
plugins = registry->plugins;
|
||||||
|
|
||||||
|
while (plugins) {
|
||||||
|
GstPlugin *plugin = (GstPlugin *) (plugins->data);
|
||||||
|
|
||||||
|
feature = gst_plugin_find_feature (plugin, name, type);
|
||||||
|
if (feature)
|
||||||
|
return feature;
|
||||||
|
|
||||||
|
plugins = g_list_next (plugins);
|
||||||
|
}
|
||||||
|
return feature;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -455,241 +446,3 @@ gst_registry_update_plugin (GstRegistry *registry, GstPlugin *plugin)
|
||||||
return GST_REGISTRY_PLUGIN_LOAD_ERROR;
|
return GST_REGISTRY_PLUGIN_LOAD_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_registry_pool_list:
|
|
||||||
*
|
|
||||||
* Get a list of all registries in the pool
|
|
||||||
*
|
|
||||||
* Returns: a Glist of GstRegistries, g_list_free after use.
|
|
||||||
*/
|
|
||||||
GList*
|
|
||||||
gst_registry_pool_list (void)
|
|
||||||
{
|
|
||||||
return g_list_copy (_gst_registry_pool);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gint
|
|
||||||
gst_registry_compare_func (gconstpointer a, gconstpointer b)
|
|
||||||
{
|
|
||||||
return GST_REGISTRY (a)->priority - GST_REGISTRY (b)->priority;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_registry_pool_add:
|
|
||||||
* @registry: the registry to add
|
|
||||||
* @priority: the priority of the registry
|
|
||||||
*
|
|
||||||
* Add the registry to the pool with the given priority.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gst_registry_pool_add (GstRegistry *registry, guint priority)
|
|
||||||
{
|
|
||||||
g_return_if_fail (GST_IS_REGISTRY (registry));
|
|
||||||
|
|
||||||
registry->priority = priority;
|
|
||||||
|
|
||||||
_gst_registry_pool = g_list_insert_sorted (_gst_registry_pool, registry, gst_registry_compare_func);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_registry_pool_remove:
|
|
||||||
* @registry: the registry to remove
|
|
||||||
*
|
|
||||||
* Remove the registry from the pool.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gst_registry_pool_remove (GstRegistry *registry)
|
|
||||||
{
|
|
||||||
g_return_if_fail (GST_IS_REGISTRY (registry));
|
|
||||||
|
|
||||||
_gst_registry_pool = g_list_remove (_gst_registry_pool, registry);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_registry_pool_add_plugin:
|
|
||||||
* @plugin: the plugin to add
|
|
||||||
*
|
|
||||||
* Add the plugin to the global pool of plugins.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gst_registry_pool_add_plugin (GstPlugin *plugin)
|
|
||||||
{
|
|
||||||
_gst_registry_pool_plugins = g_list_prepend (_gst_registry_pool_plugins, plugin);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_registry_pool_load_all:
|
|
||||||
*
|
|
||||||
* Load all the registries in the pool. Registries with the
|
|
||||||
* GST_REGISTRY_DELAYED_LOADING will not be loaded.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gst_registry_pool_load_all (void)
|
|
||||||
{
|
|
||||||
GList *walk = _gst_registry_pool;
|
|
||||||
|
|
||||||
while (walk) {
|
|
||||||
GstRegistry *registry = GST_REGISTRY (walk->data);
|
|
||||||
|
|
||||||
if (registry->flags & GST_REGISTRY_READABLE &&
|
|
||||||
!(registry->flags & GST_REGISTRY_DELAYED_LOADING)) {
|
|
||||||
gst_registry_load (registry);
|
|
||||||
}
|
|
||||||
|
|
||||||
walk = g_list_next (walk);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_registry_pool_plugin_list:
|
|
||||||
*
|
|
||||||
* Get a list of all plugins in the pool.
|
|
||||||
*
|
|
||||||
* Returns: a GList of plugins, g_list_free after use.
|
|
||||||
*/
|
|
||||||
GList*
|
|
||||||
gst_registry_pool_plugin_list (void)
|
|
||||||
{
|
|
||||||
GList *result = NULL;
|
|
||||||
GList *walk = _gst_registry_pool;
|
|
||||||
|
|
||||||
while (walk) {
|
|
||||||
GstRegistry *registry = GST_REGISTRY (walk->data);
|
|
||||||
|
|
||||||
/* FIXME only include highest priority plugins */
|
|
||||||
result = g_list_concat (result, g_list_copy (registry->plugins));
|
|
||||||
|
|
||||||
walk = g_list_next (walk);
|
|
||||||
}
|
|
||||||
|
|
||||||
return g_list_concat (_gst_registry_pool_plugins, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_registry_pool_feature_list:
|
|
||||||
* @type: the type of the features to list.
|
|
||||||
*
|
|
||||||
* Get a list of all pluginfeatures of the given type in the pool.
|
|
||||||
*
|
|
||||||
* Returns: a GList of pluginfeatures, g_list_free after use.
|
|
||||||
*/
|
|
||||||
GList*
|
|
||||||
gst_registry_pool_feature_list (GType type)
|
|
||||||
{
|
|
||||||
GList *result = NULL;
|
|
||||||
GList *plugins = gst_registry_pool_plugin_list ();
|
|
||||||
|
|
||||||
while (plugins) {
|
|
||||||
GstPlugin *plugin = GST_PLUGIN (plugins->data);
|
|
||||||
GList *features = plugin->features;
|
|
||||||
|
|
||||||
while (features) {
|
|
||||||
GstPluginFeature *feature = GST_PLUGIN_FEATURE (features->data);
|
|
||||||
|
|
||||||
if (type == 0 || G_OBJECT_TYPE (feature) == type) {
|
|
||||||
result = g_list_prepend (result, feature);
|
|
||||||
}
|
|
||||||
features = g_list_next (features);
|
|
||||||
}
|
|
||||||
plugins = g_list_next (plugins);
|
|
||||||
}
|
|
||||||
result = g_list_reverse (result);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_registry_pool_find_plugin:
|
|
||||||
* @name: the name of the plugin to find
|
|
||||||
*
|
|
||||||
* Get the named plugin from the registry pool
|
|
||||||
*
|
|
||||||
* Returns: The plugin with the given name or NULL if the plugin
|
|
||||||
* was not found.
|
|
||||||
*/
|
|
||||||
GstPlugin*
|
|
||||||
gst_registry_pool_find_plugin (const gchar *name)
|
|
||||||
{
|
|
||||||
GstPlugin *result = NULL;
|
|
||||||
GList *walk;
|
|
||||||
|
|
||||||
result = gst_plugin_list_find_plugin (_gst_registry_pool_plugins, name);
|
|
||||||
if (result)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
walk = _gst_registry_pool;
|
|
||||||
|
|
||||||
while (walk) {
|
|
||||||
GstRegistry *registry = GST_REGISTRY (walk->data);
|
|
||||||
|
|
||||||
/* FIXME only include highest priority plugins */
|
|
||||||
result = gst_registry_find_plugin (registry, name);
|
|
||||||
if (result)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
walk = g_list_next (walk);
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_registry_pool_find_feature:
|
|
||||||
* @name: the name of the pluginfeature to find
|
|
||||||
* @type: the type of the pluginfeature to find
|
|
||||||
*
|
|
||||||
* Get the pluginfeature with the given name and type from the pool of
|
|
||||||
* registries.
|
|
||||||
*
|
|
||||||
* Returns: A pluginfeature with the given name and type or NULL if the feature
|
|
||||||
* was not found.
|
|
||||||
*/
|
|
||||||
GstPluginFeature*
|
|
||||||
gst_registry_pool_find_feature (const gchar *name, GType type)
|
|
||||||
{
|
|
||||||
GstPluginFeature *result = NULL;
|
|
||||||
GList *walk;
|
|
||||||
|
|
||||||
result = gst_plugin_list_find_feature (_gst_registry_pool_plugins, name, type);
|
|
||||||
if (result)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
walk = _gst_registry_pool;
|
|
||||||
|
|
||||||
while (walk) {
|
|
||||||
GstRegistry *registry = GST_REGISTRY (walk->data);
|
|
||||||
|
|
||||||
/* FIXME only include highest priority plugins */
|
|
||||||
result = gst_registry_find_feature (registry, name, type);
|
|
||||||
if (result)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
walk = g_list_next (walk);
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gst_registry_pool_get_prefered:
|
|
||||||
* @flags: The flags for the prefered registry
|
|
||||||
*
|
|
||||||
* Get the prefered registry with the given flags
|
|
||||||
*
|
|
||||||
* Returns: The registry with the flags.
|
|
||||||
*/
|
|
||||||
GstRegistry*
|
|
||||||
gst_registry_pool_get_prefered (GstRegistryFlags flags)
|
|
||||||
{
|
|
||||||
GList *walk = _gst_registry_pool;
|
|
||||||
|
|
||||||
while (walk) {
|
|
||||||
GstRegistry *registry = GST_REGISTRY (walk->data);
|
|
||||||
|
|
||||||
if (registry->flags & flags)
|
|
||||||
return registry;
|
|
||||||
|
|
||||||
walk = g_list_next (walk);
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -132,23 +132,6 @@ GstRegistryReturn gst_registry_load_plugin (GstRegistry *registry, GstPlugin *pl
|
||||||
GstRegistryReturn gst_registry_unload_plugin (GstRegistry *registry, GstPlugin *plugin);
|
GstRegistryReturn gst_registry_unload_plugin (GstRegistry *registry, GstPlugin *plugin);
|
||||||
GstRegistryReturn gst_registry_update_plugin (GstRegistry *registry, GstPlugin *plugin);
|
GstRegistryReturn gst_registry_update_plugin (GstRegistry *registry, GstPlugin *plugin);
|
||||||
|
|
||||||
/* the pool of registries */
|
|
||||||
GList* gst_registry_pool_list (void);
|
|
||||||
void gst_registry_pool_add (GstRegistry *registry, guint priority);
|
|
||||||
void gst_registry_pool_remove (GstRegistry *registry);
|
|
||||||
|
|
||||||
void gst_registry_pool_add_plugin (GstPlugin *plugin);
|
|
||||||
|
|
||||||
void gst_registry_pool_load_all (void);
|
|
||||||
|
|
||||||
GList* gst_registry_pool_plugin_list (void);
|
|
||||||
GList* gst_registry_pool_feature_list (GType type);
|
|
||||||
|
|
||||||
GstPlugin* gst_registry_pool_find_plugin (const gchar *name);
|
|
||||||
GstPluginFeature* gst_registry_pool_find_feature (const gchar *name, GType type);
|
|
||||||
|
|
||||||
GstRegistry* gst_registry_pool_get_prefered (GstRegistryFlags flags);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GST_REGISTRY_H__ */
|
#endif /* __GST_REGISTRY_H__ */
|
||||||
|
|
296
gst/gstregistrypool.c
Normal file
296
gst/gstregistrypool.c
Normal file
|
@ -0,0 +1,296 @@
|
||||||
|
/* GStreamer
|
||||||
|
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
|
||||||
|
* 2000 Wim Taymans <wtay@chello.be>
|
||||||
|
*
|
||||||
|
* gstregistry.c: handle registry
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Library General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Library General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "gstinfo.h"
|
||||||
|
#include "gstregistrypool.h"
|
||||||
|
#include "gstlog.h"
|
||||||
|
|
||||||
|
static GList *_gst_registry_pool = NULL;
|
||||||
|
static GList *_gst_registry_pool_plugins = NULL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_registry_pool_list:
|
||||||
|
*
|
||||||
|
* Get a list of all registries in the pool
|
||||||
|
*
|
||||||
|
* Returns: a Glist of GstRegistries, g_list_free after use.
|
||||||
|
*/
|
||||||
|
GList*
|
||||||
|
gst_registry_pool_list (void)
|
||||||
|
{
|
||||||
|
return g_list_copy (_gst_registry_pool);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
|
static gint
|
||||||
|
gst_registry_compare_func (gconstpointer a, gconstpointer b)
|
||||||
|
{
|
||||||
|
return GST_REGISTRY (a)->priority - GST_REGISTRY (b)->priority;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_registry_pool_add:
|
||||||
|
* @registry: the registry to add
|
||||||
|
* @priority: the priority of the registry
|
||||||
|
*
|
||||||
|
* Add the registry to the pool with the given priority.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gst_registry_pool_add (GstRegistry *registry, guint priority)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GST_IS_REGISTRY (registry));
|
||||||
|
|
||||||
|
registry->priority = priority;
|
||||||
|
|
||||||
|
_gst_registry_pool = g_list_insert_sorted (_gst_registry_pool, registry, gst_registry_compare_func);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_registry_pool_remove:
|
||||||
|
* @registry: the registry to remove
|
||||||
|
*
|
||||||
|
* Remove the registry from the pool.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gst_registry_pool_remove (GstRegistry *registry)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GST_IS_REGISTRY (registry));
|
||||||
|
|
||||||
|
_gst_registry_pool = g_list_remove (_gst_registry_pool, registry);
|
||||||
|
}
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_registry_pool_add_plugin:
|
||||||
|
* @plugin: the plugin to add
|
||||||
|
*
|
||||||
|
* Add the plugin to the global pool of plugins.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gst_registry_pool_add_plugin (GstPlugin *plugin)
|
||||||
|
{
|
||||||
|
_gst_registry_pool_plugins = g_list_prepend (_gst_registry_pool_plugins, plugin);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_registry_pool_load_all:
|
||||||
|
*
|
||||||
|
* Load all the registries in the pool. Registries with the
|
||||||
|
* GST_REGISTRY_DELAYED_LOADING will not be loaded.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gst_registry_pool_load_all (void)
|
||||||
|
{
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
|
GList *walk = _gst_registry_pool;
|
||||||
|
|
||||||
|
while (walk) {
|
||||||
|
GstRegistry *registry = GST_REGISTRY (walk->data);
|
||||||
|
|
||||||
|
if (registry->flags & GST_REGISTRY_READABLE &&
|
||||||
|
!(registry->flags & GST_REGISTRY_DELAYED_LOADING)) {
|
||||||
|
gst_registry_load (registry);
|
||||||
|
}
|
||||||
|
|
||||||
|
walk = g_list_next (walk);
|
||||||
|
}
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_registry_pool_plugin_list:
|
||||||
|
*
|
||||||
|
* Get a list of all plugins in the pool.
|
||||||
|
*
|
||||||
|
* Returns: a GList of plugins, g_list_free after use.
|
||||||
|
*/
|
||||||
|
GList*
|
||||||
|
gst_registry_pool_plugin_list (void)
|
||||||
|
{
|
||||||
|
GList *result = NULL;
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
|
GList *walk = _gst_registry_pool;
|
||||||
|
|
||||||
|
while (walk) {
|
||||||
|
GstRegistry *registry = GST_REGISTRY (walk->data);
|
||||||
|
|
||||||
|
/* FIXME only include highest priority plugins */
|
||||||
|
result = g_list_concat (result, g_list_copy (registry->plugins));
|
||||||
|
|
||||||
|
walk = g_list_next (walk);
|
||||||
|
}
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
|
|
||||||
|
return g_list_concat (_gst_registry_pool_plugins, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_registry_pool_feature_list:
|
||||||
|
* @type: the type of the features to list.
|
||||||
|
*
|
||||||
|
* Get a list of all pluginfeatures of the given type in the pool.
|
||||||
|
*
|
||||||
|
* Returns: a GList of pluginfeatures, g_list_free after use.
|
||||||
|
*/
|
||||||
|
GList*
|
||||||
|
gst_registry_pool_feature_list (GType type)
|
||||||
|
{
|
||||||
|
GList *result = NULL;
|
||||||
|
GList *plugins = gst_registry_pool_plugin_list ();
|
||||||
|
|
||||||
|
while (plugins) {
|
||||||
|
GstPlugin *plugin = GST_PLUGIN (plugins->data);
|
||||||
|
GList *features = plugin->features;
|
||||||
|
|
||||||
|
while (features) {
|
||||||
|
GstPluginFeature *feature = GST_PLUGIN_FEATURE (features->data);
|
||||||
|
|
||||||
|
if (type == 0 || G_OBJECT_TYPE (feature) == type) {
|
||||||
|
result = g_list_prepend (result, feature);
|
||||||
|
}
|
||||||
|
features = g_list_next (features);
|
||||||
|
}
|
||||||
|
plugins = g_list_next (plugins);
|
||||||
|
}
|
||||||
|
result = g_list_reverse (result);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_registry_pool_find_plugin:
|
||||||
|
* @name: the name of the plugin to find
|
||||||
|
*
|
||||||
|
* Get the named plugin from the registry pool
|
||||||
|
*
|
||||||
|
* Returns: The plugin with the given name or NULL if the plugin
|
||||||
|
* was not found.
|
||||||
|
*/
|
||||||
|
GstPlugin*
|
||||||
|
gst_registry_pool_find_plugin (const gchar *name)
|
||||||
|
{
|
||||||
|
GstPlugin *result = NULL;
|
||||||
|
GList *walk;
|
||||||
|
|
||||||
|
g_return_val_if_fail (name != NULL, NULL);
|
||||||
|
|
||||||
|
walk = _gst_registry_pool_plugins;
|
||||||
|
while (walk) {
|
||||||
|
result = (GstPlugin *) (walk->data);
|
||||||
|
|
||||||
|
if (result->name && !strcmp (result->name, name))
|
||||||
|
return result;
|
||||||
|
|
||||||
|
walk = g_list_next (walk);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
|
walk = _gst_registry_pool;
|
||||||
|
while (walk) {
|
||||||
|
GstRegistry *registry = GST_REGISTRY (walk->data);
|
||||||
|
|
||||||
|
/* FIXME only include highest priority plugins */
|
||||||
|
result = gst_registry_find_plugin (registry, name);
|
||||||
|
if (result)
|
||||||
|
return result;
|
||||||
|
|
||||||
|
walk = g_list_next (walk);
|
||||||
|
}
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_registry_pool_find_feature:
|
||||||
|
* @name: the name of the pluginfeature to find
|
||||||
|
* @type: the type of the pluginfeature to find
|
||||||
|
*
|
||||||
|
* Get the pluginfeature with the given name and type from the pool of
|
||||||
|
* registries.
|
||||||
|
*
|
||||||
|
* Returns: A pluginfeature with the given name and type or NULL if the feature
|
||||||
|
* was not found.
|
||||||
|
*/
|
||||||
|
GstPluginFeature*
|
||||||
|
gst_registry_pool_find_feature (const gchar *name, GType type)
|
||||||
|
{
|
||||||
|
GstPluginFeature *result = NULL;
|
||||||
|
GList *walk;
|
||||||
|
|
||||||
|
g_return_val_if_fail (name != NULL, NULL);
|
||||||
|
|
||||||
|
walk = _gst_registry_pool_plugins;
|
||||||
|
while (walk) {
|
||||||
|
GstPlugin *plugin = (GstPlugin *) (walk->data);
|
||||||
|
|
||||||
|
result = gst_plugin_find_feature (plugin, name, type);
|
||||||
|
if (result)
|
||||||
|
return result;
|
||||||
|
|
||||||
|
walk = g_list_next (walk);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
|
walk = _gst_registry_pool;
|
||||||
|
while (walk) {
|
||||||
|
GstRegistry *registry = GST_REGISTRY (walk->data);
|
||||||
|
|
||||||
|
/* FIXME only include highest priority plugins */
|
||||||
|
result = gst_registry_find_feature (registry, name, type);
|
||||||
|
if (result)
|
||||||
|
return result;
|
||||||
|
|
||||||
|
walk = g_list_next (walk);
|
||||||
|
}
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_registry_pool_get_prefered:
|
||||||
|
* @flags: The flags for the prefered registry
|
||||||
|
*
|
||||||
|
* Get the prefered registry with the given flags
|
||||||
|
*
|
||||||
|
* Returns: The registry with the flags.
|
||||||
|
*/
|
||||||
|
GstRegistry*
|
||||||
|
gst_registry_pool_get_prefered (GstRegistryFlags flags)
|
||||||
|
{
|
||||||
|
#ifndef GST_DISABLE_REGISTRY
|
||||||
|
GList *walk = _gst_registry_pool;
|
||||||
|
|
||||||
|
while (walk) {
|
||||||
|
GstRegistry *registry = GST_REGISTRY (walk->data);
|
||||||
|
|
||||||
|
if (registry->flags & flags)
|
||||||
|
return registry;
|
||||||
|
|
||||||
|
walk = g_list_next (walk);
|
||||||
|
}
|
||||||
|
#endif /* GST_DISABLE_REGISTRY */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
48
gst/gstregistrypool.h
Normal file
48
gst/gstregistrypool.h
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
/* GStreamer
|
||||||
|
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
|
||||||
|
* 2000 Wim Taymans <wim.taymans@chello.be>
|
||||||
|
*
|
||||||
|
* gstregistrypool.h: maintain list of registries and plugins
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Library General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Library General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __GST_REGISTRY_POOL_H__
|
||||||
|
#define __GST_REGISTRY_POOL_H__
|
||||||
|
|
||||||
|
#include <gst/gstregistry.h>
|
||||||
|
|
||||||
|
/* the pool of registries */
|
||||||
|
GList* gst_registry_pool_list (void);
|
||||||
|
void gst_registry_pool_add (GstRegistry *registry, guint priority);
|
||||||
|
void gst_registry_pool_remove (GstRegistry *registry);
|
||||||
|
|
||||||
|
void gst_registry_pool_add_plugin (GstPlugin *plugin);
|
||||||
|
|
||||||
|
void gst_registry_pool_load_all (void);
|
||||||
|
|
||||||
|
GList* gst_registry_pool_plugin_list (void);
|
||||||
|
GList* gst_registry_pool_feature_list (GType type);
|
||||||
|
|
||||||
|
GstPlugin* gst_registry_pool_find_plugin (const gchar *name);
|
||||||
|
GstPluginFeature* gst_registry_pool_find_feature (const gchar *name, GType type);
|
||||||
|
|
||||||
|
GstRegistry* gst_registry_pool_get_prefered (GstRegistryFlags flags);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif /* __GST_REGISTRY_POOL_H__ */
|
|
@ -25,7 +25,7 @@
|
||||||
#include "gstsystemclock.h"
|
#include "gstsystemclock.h"
|
||||||
#include "gstscheduler.h"
|
#include "gstscheduler.h"
|
||||||
#include "gstlog.h"
|
#include "gstlog.h"
|
||||||
#include "gstregistry.h"
|
#include "gstregistrypool.h"
|
||||||
|
|
||||||
static void gst_scheduler_class_init (GstSchedulerClass *klass);
|
static void gst_scheduler_class_init (GstSchedulerClass *klass);
|
||||||
static void gst_scheduler_init (GstScheduler *sched);
|
static void gst_scheduler_init (GstScheduler *sched);
|
||||||
|
@ -897,26 +897,25 @@ gst_scheduler_factory_find (const gchar *name)
|
||||||
GstScheduler*
|
GstScheduler*
|
||||||
gst_scheduler_factory_create (GstSchedulerFactory *factory, GstElement *parent)
|
gst_scheduler_factory_create (GstSchedulerFactory *factory, GstElement *parent)
|
||||||
{
|
{
|
||||||
GstScheduler *new = NULL;
|
GstScheduler *sched = NULL;
|
||||||
|
|
||||||
g_return_val_if_fail (factory != NULL, NULL);
|
g_return_val_if_fail (factory != NULL, NULL);
|
||||||
g_return_val_if_fail (GST_IS_ELEMENT (parent), NULL);
|
g_return_val_if_fail (GST_IS_ELEMENT (parent), NULL);
|
||||||
g_return_val_if_fail (GST_ELEMENT_SCHED (parent) == NULL, NULL);
|
|
||||||
|
|
||||||
if (gst_plugin_feature_ensure_loaded (GST_PLUGIN_FEATURE (factory))) {
|
if (gst_plugin_feature_ensure_loaded (GST_PLUGIN_FEATURE (factory))) {
|
||||||
g_return_val_if_fail (factory->type != 0, NULL);
|
g_return_val_if_fail (factory->type != 0, NULL);
|
||||||
|
|
||||||
new = GST_SCHEDULER (g_object_new (factory->type, NULL));
|
sched = GST_SCHEDULER (g_object_new (factory->type, NULL));
|
||||||
new->parent = parent;
|
sched->parent = parent;
|
||||||
|
|
||||||
GST_ELEMENT_SCHED (parent) = new;
|
GST_ELEMENT_SCHED (parent) = sched;
|
||||||
|
|
||||||
/* let's refcount the scheduler */
|
/* let's refcount the scheduler */
|
||||||
gst_object_ref (GST_OBJECT (new));
|
gst_object_ref (GST_OBJECT (sched));
|
||||||
gst_object_sink (GST_OBJECT (new));
|
gst_object_sink (GST_OBJECT (sched));
|
||||||
}
|
}
|
||||||
|
|
||||||
return new;
|
return sched;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -252,6 +252,7 @@ gst_alloc_trace_set_flags_all (GstAllocTraceFlags flags)
|
||||||
while (walk) {
|
while (walk) {
|
||||||
GstAllocTrace *trace = (GstAllocTrace *) walk->data;
|
GstAllocTrace *trace = (GstAllocTrace *) walk->data;
|
||||||
|
|
||||||
|
g_print ("set flags on %p\n", trace);
|
||||||
gst_alloc_trace_set_flags (trace, flags);
|
gst_alloc_trace_set_flags (trace, flags);
|
||||||
|
|
||||||
walk = g_list_next (walk);
|
walk = g_list_next (walk);
|
||||||
|
@ -299,7 +300,7 @@ gst_alloc_trace_print (const GstAllocTrace *trace)
|
||||||
|
|
||||||
g_return_if_fail (trace != NULL);
|
g_return_if_fail (trace != NULL);
|
||||||
|
|
||||||
g_print ("%s: flags %d", trace->name, trace->flags);
|
g_print ("%s (%p): flags %d", trace->name, trace, trace->flags);
|
||||||
|
|
||||||
if (trace->flags & GST_ALLOC_TRACE_LIVE) {
|
if (trace->flags & GST_ALLOC_TRACE_LIVE) {
|
||||||
g_print (", live %d", trace->live);
|
g_print (", live %d", trace->live);
|
||||||
|
|
|
@ -148,6 +148,22 @@ extern gint _gst_trace_on;
|
||||||
#pragma GCC poison gst_trace_read_tsc
|
#pragma GCC poison gst_trace_read_tsc
|
||||||
#pragma GCC poison gst_trace_add_entry
|
#pragma GCC poison gst_trace_add_entry
|
||||||
|
|
||||||
|
#define gst_alloc_trace_register(name)
|
||||||
|
#define gst_alloc_trace_new(trace, mem)
|
||||||
|
#define gst_alloc_trace_free(trace, mem)
|
||||||
|
|
||||||
|
#define gst_alloc_trace_available() FALSE
|
||||||
|
#define gst_alloc_trace_list() NULL
|
||||||
|
#define _gst_alloc_trace_register(name) NULL
|
||||||
|
|
||||||
|
#define gst_alloc_trace_print_all()
|
||||||
|
#define gst_alloc_trace_set_flags_all(flags)
|
||||||
|
|
||||||
|
#define gst_alloc_trace_get(name) NULL
|
||||||
|
#define gst_alloc_trace_print(trace)
|
||||||
|
#define gst_alloc_trace_set_flags(trace,flags)
|
||||||
|
|
||||||
|
|
||||||
#endif /* GST_DISABLE_TRACE */
|
#endif /* GST_DISABLE_TRACE */
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include "gst_private.h"
|
#include "gst_private.h"
|
||||||
|
|
||||||
#include "gsttype.h"
|
#include "gsttype.h"
|
||||||
#include "gstregistry.h"
|
#include "gstregistrypool.h"
|
||||||
#include "gstobject.h"
|
#include "gstobject.h"
|
||||||
#include "gstlog.h"
|
#include "gstlog.h"
|
||||||
|
|
||||||
|
|
|
@ -26,10 +26,9 @@
|
||||||
|
|
||||||
#include "gst_private.h"
|
#include "gst_private.h"
|
||||||
#include "gstutils.h"
|
#include "gstutils.h"
|
||||||
|
#include "gsturitype.h"
|
||||||
#include "gstlog.h"
|
#include "gstlog.h"
|
||||||
|
|
||||||
#include "gstextratypes.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_util_dump_mem:
|
* gst_util_dump_mem:
|
||||||
* @mem: a pointer to the memory to dump
|
* @mem: a pointer to the memory to dump
|
||||||
|
@ -254,7 +253,7 @@ gst_util_set_object_arg (GObject * object, const gchar * name, const gchar * val
|
||||||
sscanf (value, "%d", &i);
|
sscanf (value, "%d", &i);
|
||||||
g_object_set (G_OBJECT (object), name, i, NULL);
|
g_object_set (G_OBJECT (object), name, i, NULL);
|
||||||
}
|
}
|
||||||
else if (paramspec->value_type == GST_TYPE_FILENAME) {
|
else if (paramspec->value_type == GST_TYPE_URI) {
|
||||||
g_object_set (G_OBJECT (object), name, value, NULL);
|
g_object_set (G_OBJECT (object), name, value, NULL);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
#include "bytestream.h"
|
#include "bytestream.h"
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,14 @@ else
|
||||||
GST_LOADSAVE_DIRS = xml typefind
|
GST_LOADSAVE_DIRS = xml typefind
|
||||||
endif
|
endif
|
||||||
|
|
||||||
SUBDIRS = autoplug $(GST_LOADSAVE_DIRS) \
|
if GST_DISABLE_AUTOPLUG
|
||||||
helloworld helloworld2 \
|
GST_AUTOPLUG_DIRS =
|
||||||
|
else
|
||||||
|
GST_AUTOPLUG_DIRS = autoplug helloworld2
|
||||||
|
endif
|
||||||
|
|
||||||
|
SUBDIRS = $(GST_AUTOPLUG_DIRS) $(GST_LOADSAVE_DIRS) \
|
||||||
|
helloworld \
|
||||||
queue queue2 queue3 queue4 \
|
queue queue2 queue3 queue4 \
|
||||||
launch thread plugins mixer cutter pingpong manual
|
launch thread plugins mixer cutter pingpong manual
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#include <stdlib.h>
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -4,7 +4,19 @@ else
|
||||||
GNOME=
|
GNOME=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
EXAMPLES = dynamic $(GNOME) helloworld helloworld2 queue threads xml-mp3
|
if GST_DISABLE_AUTOPLUG
|
||||||
|
GST_AUTOPLUG_SRC =
|
||||||
|
else
|
||||||
|
GST_AUTOPLUG_SRC = helloworld2
|
||||||
|
endif
|
||||||
|
|
||||||
|
if GST_DISABLE_LOADSAVE
|
||||||
|
GST_LOADSAVE_SRC =
|
||||||
|
else
|
||||||
|
GST_LOADSAVE_SRC = xml-mp3
|
||||||
|
endif
|
||||||
|
|
||||||
|
EXAMPLES = dynamic $(GNOME) helloworld $(GST_AUTOPLUG_SRC) queue threads $(GST_LOADSAVE_SRC)
|
||||||
noinst_PROGRAMS = $(EXAMPLES)
|
noinst_PROGRAMS = $(EXAMPLES)
|
||||||
|
|
||||||
LDADD = $(GST_LIBS)
|
LDADD = $(GST_LIBS)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#include <stdlib.h>
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
|
|
||||||
/* eos will be called when the src element has an end of stream */
|
/* eos will be called when the src element has an end of stream */
|
||||||
|
|
|
@ -7,15 +7,15 @@ endif
|
||||||
if GST_DISABLE_LOADSAVE
|
if GST_DISABLE_LOADSAVE
|
||||||
GST_LOADSAVE_SRC =
|
GST_LOADSAVE_SRC =
|
||||||
else
|
else
|
||||||
GST_LOADSAVE_SRC = gst-compprep gst-xmllaunch
|
GST_LOADSAVE_SRC = gst-compprep gst-xmllaunch gst-complete
|
||||||
endif
|
endif
|
||||||
|
|
||||||
bin_PROGRAMS = gst-launch \
|
bin_PROGRAMS = gst-launch \
|
||||||
$(GST_REGISTRY_SRC) \
|
$(GST_REGISTRY_SRC) \
|
||||||
gst-inspect \
|
gst-inspect \
|
||||||
$(GST_LOADSAVE_SRC) \
|
$(GST_LOADSAVE_SRC) \
|
||||||
gst-md5sum \
|
gst-md5sum
|
||||||
gst-complete
|
|
||||||
bin_SCRIPTS = gst-feedback
|
bin_SCRIPTS = gst-feedback
|
||||||
|
|
||||||
man_MANS = gst-launch.1 gst-md5sum.1 gst-register.1 gst-inspect.1 \
|
man_MANS = gst-launch.1 gst-md5sum.1 gst-register.1 gst-inspect.1 \
|
||||||
|
@ -30,21 +30,19 @@ gst_md5sum_LDADD = $(GST_LIBS) #-lefence
|
||||||
gst_md5sum_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
|
gst_md5sum_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
|
||||||
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
||||||
|
|
||||||
|
gst_inspect_LDADD = $(GST_LIBS) ../libs/gst/control/libgstcontrol-@GST_MAJORMINOR@.la
|
||||||
|
gst_inspect_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
|
||||||
|
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
||||||
|
|
||||||
if !GST_DISABLE_REGISTRY
|
if !GST_DISABLE_REGISTRY
|
||||||
gst_register_LDADD = $(GST_LIBS)
|
gst_register_LDADD = $(GST_LIBS)
|
||||||
gst_register_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
|
gst_register_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
|
||||||
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
||||||
endif
|
|
||||||
|
|
||||||
gst_inspect_LDADD = $(GST_LIBS) ../libs/gst/control/libgstcontrol-@GST_MAJORMINOR@.la
|
|
||||||
gst_inspect_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
|
|
||||||
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
|
||||||
|
|
||||||
gst_complete_LDADD = $(GST_LIBS)
|
gst_complete_LDADD = $(GST_LIBS)
|
||||||
gst_complete_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
|
gst_complete_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
|
||||||
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
||||||
|
|
||||||
if !GST_DISABLE_LOADSAVE
|
|
||||||
gst_compprep_LDADD = $(GST_LIBS)
|
gst_compprep_LDADD = $(GST_LIBS)
|
||||||
gst_compprep_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
|
gst_compprep_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
|
||||||
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
|
||||||
|
|
|
@ -170,6 +170,7 @@ print_query_types (const GstQueryType *types)
|
||||||
static void
|
static void
|
||||||
print_event_masks (const GstEventMask *masks)
|
print_event_masks (const GstEventMask *masks)
|
||||||
{
|
{
|
||||||
|
#ifndef GST_DISABLE_ENUMTYPES
|
||||||
GType event_type;
|
GType event_type;
|
||||||
GEnumClass *klass;
|
GEnumClass *klass;
|
||||||
GType event_flags;
|
GType event_flags;
|
||||||
|
@ -213,6 +214,7 @@ print_event_masks (const GstEventMask *masks)
|
||||||
|
|
||||||
masks++;
|
masks++;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -342,8 +344,8 @@ print_element_properties (GstElement *element)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
if (param->value_type == GST_TYPE_FILENAME) {
|
if (param->value_type == GST_TYPE_URI) {
|
||||||
g_print("%-23.23s Filename", "");
|
g_print("%-23.23s URI", "");
|
||||||
}
|
}
|
||||||
if (param->value_type == GST_TYPE_CAPS) {
|
if (param->value_type == GST_TYPE_CAPS) {
|
||||||
GstCaps *caps = g_value_peek_pointer (&value);
|
GstCaps *caps = g_value_peek_pointer (&value);
|
||||||
|
@ -586,6 +588,7 @@ print_element_info (GstElementFactory *factory)
|
||||||
g_print (" none\n");
|
g_print (" none\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_INDEX
|
||||||
g_print ("\nIndexing capabilities:\n");
|
g_print ("\nIndexing capabilities:\n");
|
||||||
if (gst_element_is_indexable (element)) {
|
if (gst_element_is_indexable (element)) {
|
||||||
g_print (" element can do indexing\n");
|
g_print (" element can do indexing\n");
|
||||||
|
@ -593,6 +596,7 @@ print_element_info (GstElementFactory *factory)
|
||||||
else {
|
else {
|
||||||
g_print (" none\n");
|
g_print (" none\n");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
g_print ("\nPads:\n");
|
g_print ("\nPads:\n");
|
||||||
if (element->numpads) {
|
if (element->numpads) {
|
||||||
|
@ -807,6 +811,7 @@ print_element_list (void)
|
||||||
g_print ("%s: %s: %s\n", plugin->name,
|
g_print ("%s: %s: %s\n", plugin->name,
|
||||||
GST_PLUGIN_FEATURE_NAME (factory) ,factory->details->longname);
|
GST_PLUGIN_FEATURE_NAME (factory) ,factory->details->longname);
|
||||||
}
|
}
|
||||||
|
#ifndef GST_DISABLE_AUTOPLUG
|
||||||
else if (GST_IS_AUTOPLUG_FACTORY (feature)) {
|
else if (GST_IS_AUTOPLUG_FACTORY (feature)) {
|
||||||
GstAutoplugFactory *factory;
|
GstAutoplugFactory *factory;
|
||||||
|
|
||||||
|
@ -814,6 +819,8 @@ print_element_list (void)
|
||||||
g_print ("%s: %s: %s\n", plugin->name,
|
g_print ("%s: %s: %s\n", plugin->name,
|
||||||
GST_PLUGIN_FEATURE_NAME (factory), factory->longdesc);
|
GST_PLUGIN_FEATURE_NAME (factory), factory->longdesc);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#ifndef GST_DISABLE_INDEX
|
||||||
else if (GST_IS_INDEX_FACTORY (feature)) {
|
else if (GST_IS_INDEX_FACTORY (feature)) {
|
||||||
GstIndexFactory *factory;
|
GstIndexFactory *factory;
|
||||||
|
|
||||||
|
@ -821,6 +828,7 @@ print_element_list (void)
|
||||||
g_print ("%s: %s: %s\n", plugin->name,
|
g_print ("%s: %s: %s\n", plugin->name,
|
||||||
GST_PLUGIN_FEATURE_NAME (factory), factory->longdesc);
|
GST_PLUGIN_FEATURE_NAME (factory), factory->longdesc);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
else if (GST_IS_TYPE_FACTORY (feature)) {
|
else if (GST_IS_TYPE_FACTORY (feature)) {
|
||||||
GstTypeFactory *factory;
|
GstTypeFactory *factory;
|
||||||
|
|
||||||
|
@ -839,6 +847,7 @@ print_element_list (void)
|
||||||
g_print ("%s: %s: %s\n", plugin->name,
|
g_print ("%s: %s: %s\n", plugin->name,
|
||||||
GST_PLUGIN_FEATURE_NAME (factory), factory->longdesc);
|
GST_PLUGIN_FEATURE_NAME (factory), factory->longdesc);
|
||||||
}
|
}
|
||||||
|
#ifndef GST_DISABLE_URI
|
||||||
else if (GST_IS_URI_HANDLER (feature)) {
|
else if (GST_IS_URI_HANDLER (feature)) {
|
||||||
GstURIHandler *handler;
|
GstURIHandler *handler;
|
||||||
|
|
||||||
|
@ -847,6 +856,7 @@ print_element_list (void)
|
||||||
GST_PLUGIN_FEATURE_NAME (handler), handler->uri, handler->longdesc,
|
GST_PLUGIN_FEATURE_NAME (handler), handler->uri, handler->longdesc,
|
||||||
handler->element, handler->property);
|
handler->element, handler->property);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
else {
|
else {
|
||||||
g_print ("%s: %s (%s)\n", plugin->name,
|
g_print ("%s: %s (%s)\n", plugin->name,
|
||||||
GST_PLUGIN_FEATURE_NAME (feature),
|
GST_PLUGIN_FEATURE_NAME (feature),
|
||||||
|
@ -891,6 +901,7 @@ print_plugin_info (GstPlugin *plugin)
|
||||||
factory->details->longname);
|
factory->details->longname);
|
||||||
num_elements++;
|
num_elements++;
|
||||||
}
|
}
|
||||||
|
#ifndef GST_DISABLE_AUTOPLUG
|
||||||
else if (GST_IS_AUTOPLUG_FACTORY (feature)) {
|
else if (GST_IS_AUTOPLUG_FACTORY (feature)) {
|
||||||
GstAutoplugFactory *factory;
|
GstAutoplugFactory *factory;
|
||||||
|
|
||||||
|
@ -898,6 +909,8 @@ print_plugin_info (GstPlugin *plugin)
|
||||||
g_print (" %s: %s\n", GST_OBJECT_NAME (factory), factory->longdesc);
|
g_print (" %s: %s\n", GST_OBJECT_NAME (factory), factory->longdesc);
|
||||||
num_autoplug++;
|
num_autoplug++;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#ifndef GST_DISABLE_INDEX
|
||||||
else if (GST_IS_INDEX_FACTORY (feature)) {
|
else if (GST_IS_INDEX_FACTORY (feature)) {
|
||||||
GstIndexFactory *factory;
|
GstIndexFactory *factory;
|
||||||
|
|
||||||
|
@ -905,6 +918,7 @@ print_plugin_info (GstPlugin *plugin)
|
||||||
g_print (" %s: %s\n", GST_OBJECT_NAME (factory), factory->longdesc);
|
g_print (" %s: %s\n", GST_OBJECT_NAME (factory), factory->longdesc);
|
||||||
num_indexes++;
|
num_indexes++;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
else if (GST_IS_TYPE_FACTORY (feature)) {
|
else if (GST_IS_TYPE_FACTORY (feature)) {
|
||||||
GstTypeFactory *factory;
|
GstTypeFactory *factory;
|
||||||
|
|
||||||
|
@ -997,26 +1011,32 @@ main (int argc, char *argv[])
|
||||||
g_print ("%s: a scheduler\n", argv[1]);
|
g_print ("%s: a scheduler\n", argv[1]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#ifndef GST_DISABLE_INDEX
|
||||||
feature = gst_registry_pool_find_feature (argv[1], GST_TYPE_INDEX_FACTORY);
|
feature = gst_registry_pool_find_feature (argv[1], GST_TYPE_INDEX_FACTORY);
|
||||||
if (feature) {
|
if (feature) {
|
||||||
g_print ("%s: an index\n", argv[1]);
|
g_print ("%s: an index\n", argv[1]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#ifndef GST_DISABLE_AUTOPLUG
|
||||||
feature = gst_registry_pool_find_feature (argv[1], GST_TYPE_AUTOPLUG_FACTORY);
|
feature = gst_registry_pool_find_feature (argv[1], GST_TYPE_AUTOPLUG_FACTORY);
|
||||||
if (feature) {
|
if (feature) {
|
||||||
g_print ("%s: an autoplugger\n", argv[1]);
|
g_print ("%s: an autoplugger\n", argv[1]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
feature = gst_registry_pool_find_feature (argv[1], GST_TYPE_TYPE_FACTORY);
|
feature = gst_registry_pool_find_feature (argv[1], GST_TYPE_TYPE_FACTORY);
|
||||||
if (feature) {
|
if (feature) {
|
||||||
g_print ("%s: an type\n", argv[1]);
|
g_print ("%s: an type\n", argv[1]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#ifndef GST_DISABLE_URI
|
||||||
feature = gst_registry_pool_find_feature (argv[1], GST_TYPE_URI_HANDLER);
|
feature = gst_registry_pool_find_feature (argv[1], GST_TYPE_URI_HANDLER);
|
||||||
if (feature) {
|
if (feature) {
|
||||||
g_print ("%s: an uri handler\n", argv[1]);
|
g_print ("%s: an uri handler\n", argv[1]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* strip the .so */
|
/* strip the .so */
|
||||||
|
|
|
@ -42,6 +42,7 @@ idle_func (gpointer data)
|
||||||
return busy;
|
return busy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef GST_DISABLE_LOADSAVE
|
||||||
static GstElement*
|
static GstElement*
|
||||||
xmllaunch_parse_cmdline (const gchar **argv)
|
xmllaunch_parse_cmdline (const gchar **argv)
|
||||||
{
|
{
|
||||||
|
@ -105,6 +106,7 @@ xmllaunch_parse_cmdline (const gchar **argv)
|
||||||
else
|
else
|
||||||
return l->data;
|
return l->data;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
extern volatile gboolean glib_on_error_halt;
|
extern volatile gboolean glib_on_error_halt;
|
||||||
static void fault_restore(void);
|
static void fault_restore(void);
|
||||||
|
@ -191,8 +193,10 @@ main(int argc, char *argv[])
|
||||||
"output status information and property notifications", NULL},
|
"output status information and property notifications", NULL},
|
||||||
{"exclude", 'X', POPT_ARG_STRING|POPT_ARGFLAG_STRIP, &exclude_args, 0,
|
{"exclude", 'X', POPT_ARG_STRING|POPT_ARGFLAG_STRIP, &exclude_args, 0,
|
||||||
"do not output status information of TYPE", "TYPE1,TYPE2,..."},
|
"do not output status information of TYPE", "TYPE1,TYPE2,..."},
|
||||||
|
#ifndef GST_DISABLE_LOADSAVE
|
||||||
{"output", 'o', POPT_ARG_STRING|POPT_ARGFLAG_STRIP, &savefile, 0,
|
{"output", 'o', POPT_ARG_STRING|POPT_ARGFLAG_STRIP, &savefile, 0,
|
||||||
"save xml representation of pipeline to FILE and exit", "FILE"},
|
"save xml representation of pipeline to FILE and exit", "FILE"},
|
||||||
|
#endif
|
||||||
{"no_fault", 'f', POPT_ARG_NONE|POPT_ARGFLAG_STRIP, &no_fault, 0,
|
{"no_fault", 'f', POPT_ARG_NONE|POPT_ARGFLAG_STRIP, &no_fault, 0,
|
||||||
"Do not install a fault handler", NULL},
|
"Do not install a fault handler", NULL},
|
||||||
{"trace", 't', POPT_ARG_NONE|POPT_ARGFLAG_STRIP, &trace, 0,
|
{"trace", 't', POPT_ARG_NONE|POPT_ARGFLAG_STRIP, &trace, 0,
|
||||||
|
@ -224,9 +228,13 @@ main(int argc, char *argv[])
|
||||||
/* make a null-terminated version of argv */
|
/* make a null-terminated version of argv */
|
||||||
argvn = g_new0 (char*, argc);
|
argvn = g_new0 (char*, argc);
|
||||||
memcpy (argvn, argv+1, sizeof (char*) * (argc-1));
|
memcpy (argvn, argv+1, sizeof (char*) * (argc-1));
|
||||||
|
#ifndef GST_DISABLE_LOADSAVE
|
||||||
if (strstr (argv[0], "gst-xmllaunch")) {
|
if (strstr (argv[0], "gst-xmllaunch")) {
|
||||||
pipeline = xmllaunch_parse_cmdline ((const gchar**)argvn);
|
pipeline = xmllaunch_parse_cmdline ((const gchar**)argvn);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
pipeline = (GstElement*) gst_parse_launchv ((const gchar**)argvn, &error);
|
pipeline = (GstElement*) gst_parse_launchv ((const gchar**)argvn, &error);
|
||||||
}
|
}
|
||||||
g_free (argvn);
|
g_free (argvn);
|
||||||
|
|
Loading…
Reference in a new issue