2000-12-28 22:12:02 +00:00
|
|
|
/* GStreamer
|
|
|
|
* Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
|
|
|
|
* 2000 Wim Taymans <wtay@chello.be>
|
|
|
|
*
|
|
|
|
* gst_private.h: Private header for within libgst
|
|
|
|
*
|
|
|
|
* 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
|
2012-11-03 20:44:48 +00:00
|
|
|
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
|
|
|
* Boston, MA 02110-1301, USA.
|
2000-12-28 22:12:02 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __GST_PRIVATE_H__
|
|
|
|
#define __GST_PRIVATE_H__
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
2009-06-10 19:29:41 +00:00
|
|
|
# ifndef GST_LICENSE /* don't include config.h twice, it has no guards */
|
2003-06-29 14:05:49 +00:00
|
|
|
# include "config.h"
|
2009-06-10 19:29:41 +00:00
|
|
|
# endif
|
2003-06-29 14:05:49 +00:00
|
|
|
#endif
|
2001-01-14 21:55:41 +00:00
|
|
|
|
2004-05-07 02:36:28 +00:00
|
|
|
/* This needs to be before glib.h, since it might be used in inline
|
|
|
|
* functions */
|
2005-12-16 21:59:12 +00:00
|
|
|
extern const char g_log_domain_gstreamer[];
|
2004-05-07 02:36:28 +00:00
|
|
|
|
2004-04-05 21:42:07 +00:00
|
|
|
#include <glib.h>
|
|
|
|
|
2000-12-30 02:41:15 +00:00
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
2018-03-12 23:03:26 +00:00
|
|
|
/* Needed for GST_API */
|
2016-05-25 13:30:21 +00:00
|
|
|
#include "gst/gstconfig.h"
|
2016-05-25 09:48:05 +00:00
|
|
|
|
gst/: Re-commit the registry changes, along with an extra fix:
Original commit message from CVS:
* gst/gst.c: (init_pre), (scan_and_update_registry),
(ensure_current_registry_nonforking),
(ensure_current_registry_forking), (ensure_current_registry),
(init_post), (gst_debug_help), (gst_deinit):
* gst/gst_private.h:
* gst/gstregistry.c: (gst_registry_finalize),
(gst_registry_remove_features_for_plugin_unlocked),
(gst_registry_remove_plugin), (gst_registry_scan_path_level),
(gst_registry_scan_path),
(_priv_gst_registry_remove_cache_plugins),
(_priv_gst_registry_cleanup):
* gst/gstregistry.h:
Re-commit the registry changes, along with an extra fix:
When a cached plugin is encountered at a different file path,
update the stored path in the registry cache so that the parent
process knows where it actually is now when it re-reads the registry
cache. Fixes the thing that broke distcheck with the previous commit.
* tests/check/Makefile.am:
Clean up files named 'core' too when running make clean.
* tests/examples/manual/Makefile.am:
Set up a registry path for running these tests, and clean it properly
for distcheck.
2006-09-28 14:00:43 +00:00
|
|
|
/* Needed for GstRegistry * */
|
|
|
|
#include "gstregistry.h"
|
2008-01-09 16:36:34 +00:00
|
|
|
#include "gststructure.h"
|
gst/: Re-commit the registry changes, along with an extra fix:
Original commit message from CVS:
* gst/gst.c: (init_pre), (scan_and_update_registry),
(ensure_current_registry_nonforking),
(ensure_current_registry_forking), (ensure_current_registry),
(init_post), (gst_debug_help), (gst_deinit):
* gst/gst_private.h:
* gst/gstregistry.c: (gst_registry_finalize),
(gst_registry_remove_features_for_plugin_unlocked),
(gst_registry_remove_plugin), (gst_registry_scan_path_level),
(gst_registry_scan_path),
(_priv_gst_registry_remove_cache_plugins),
(_priv_gst_registry_cleanup):
* gst/gstregistry.h:
Re-commit the registry changes, along with an extra fix:
When a cached plugin is encountered at a different file path,
update the stored path in the registry cache so that the parent
process knows where it actually is now when it re-reads the registry
cache. Fixes the thing that broke distcheck with the previous commit.
* tests/check/Makefile.am:
Clean up files named 'core' too when running make clean.
* tests/examples/manual/Makefile.am:
Set up a registry path for running these tests, and clean it properly
for distcheck.
2006-09-28 14:00:43 +00:00
|
|
|
|
2008-08-29 14:12:02 +00:00
|
|
|
/* we need this in pretty much all files */
|
|
|
|
#include "gstinfo.h"
|
|
|
|
|
Add API for making a GStreamer plugin 'dependent' on external files, directories or environment variables, so that GS...
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt::
* gst/gst_private.h: (GstPluginDep), (_GstPluginPrivate):
* gst/gstplugin.c: (gst_plugin_init), (gst_plugin_finalize),
(gst_plugin_class_init), (gst_plugin_list_free),
(gst_plugin_ext_dep_get_env_vars_hash),
(_priv_plugin_deps_env_vars_changed),
(gst_plugin_ext_dep_extract_env_vars_paths),
(gst_plugin_ext_dep_get_hash_from_stat_entry),
(gst_plugin_ext_dep_direntry_matches),
(gst_plugin_ext_dep_scan_dir_and_match_names),
(gst_plugin_ext_dep_scan_path_with_filenames),
(gst_plugin_ext_dep_get_stat_hash),
(_priv_plugin_deps_files_changed), (gst_plugin_ext_dep_free),
(gst_plugin_ext_dep_strv_equal), (gst_plugin_ext_dep_equals),
(gst_plugin_add_dependency), (gst_plugin_add_dependency_simple):
* gst/gstplugin.h: (GstPluginPrivate), (GstPluginFlags),
(GST_PLUGIN_DEPENDENCY_FLAG_NONE),
(GST_PLUGIN_DEPENDENCY_FLAG_RECURSE),
(GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY),
(GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX),
(GstPluginDependencyFlags), (GstPluginFilter):
* gst/gstregistry.c: (gst_registry_scan_path_level):
* gst/gstregistrybinary.c: (gst_registry_binary_save_feature),
(gst_registry_binary_save_plugin_dep),
(gst_registry_binary_save_plugin),
(gst_registry_binary_load_feature),
(gst_registry_binary_load_plugin_dep_strv),
(gst_registry_binary_load_plugin_dep),
(gst_registry_binary_load_plugin):
* gst/gstregistrybinary.h: (GST_MAGIC_BINARY_VERSION_STR),
(GstBinaryPluginElement), (_GstBinaryDep), (GstBinaryDep):
* gst/gstregistryxml.c: (gst_registry_xml_save_plugin):
Add API for making a GStreamer plugin 'dependent' on external files,
directories or environment variables, so that GStreamer knows when
it needs to re-load GStreamer plugins that wrap other plugin systems.
Fixes bug #350477.
API: add gst_plugin_add_dependency()
API: add gst_plugin_add_dependency_simple()
2009-01-06 17:58:59 +00:00
|
|
|
/* for the flags in the GstPluginDep structure below */
|
|
|
|
#include "gstplugin.h"
|
|
|
|
|
2010-12-03 09:52:39 +00:00
|
|
|
/* for the pad cache */
|
|
|
|
#include "gstpad.h"
|
|
|
|
|
2011-05-10 14:37:44 +00:00
|
|
|
/* for GstElement */
|
|
|
|
#include "gstelement.h"
|
|
|
|
|
2014-06-26 18:28:09 +00:00
|
|
|
/* for GstDeviceProvider */
|
|
|
|
#include "gstdeviceprovider.h"
|
2012-10-16 16:27:04 +00:00
|
|
|
|
2012-03-14 16:01:51 +00:00
|
|
|
/* for GstToc */
|
|
|
|
#include "gsttoc.h"
|
|
|
|
|
2012-06-27 12:16:07 +00:00
|
|
|
#include "gstdatetime.h"
|
|
|
|
|
2014-07-18 05:49:38 +00:00
|
|
|
#include "gsttracerutils.h"
|
|
|
|
|
2005-11-20 17:12:49 +00:00
|
|
|
G_BEGIN_DECLS
|
|
|
|
|
API: gst_parse_launch_full()
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gst.c: (init_post):
* gst/gst_private.h: (_GstParseContext):
* gst/gstparse.c: (gst_parse_error_quark), (gst_parse_context_new),
(gst_parse_context_free), (gst_parse_context_get_missing_elements),
(gst_parse_launchv), (gst_parse_launchv_full), (gst_parse_launch),
(gst_parse_launch_full):
* gst/gstparse.h: (GST_PARSE_FLAG_NONE), (GST_PARSE_FLAG_FATAL_ERRORS),
(GstParseFlags), (GstParseContext):
* gst/gstutils.c: (gst_parse_bin_from_description),
(gst_parse_bin_from_description_full):
* gst/gstutils.h:
* gst/parse/grammar.y:
* gst/parse/types.h:
* win32/common/libgstreamer.def:
Add new gst_parse_*_full API (#528178):
API: gst_parse_launch_full()
API: gst_parse_launchv_full()
API: gst_parse_bin_from_description_full()
API: gst_parse_context_new()
API: gst_parse_context_free()
API: gst_parse_context_get_missing_elements()
2008-05-24 15:33:53 +00:00
|
|
|
/* used by gstparse.c and grammar.y */
|
|
|
|
struct _GstParseContext {
|
|
|
|
GList * missing_elements;
|
|
|
|
};
|
|
|
|
|
Add API for making a GStreamer plugin 'dependent' on external files, directories or environment variables, so that GS...
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt::
* gst/gst_private.h: (GstPluginDep), (_GstPluginPrivate):
* gst/gstplugin.c: (gst_plugin_init), (gst_plugin_finalize),
(gst_plugin_class_init), (gst_plugin_list_free),
(gst_plugin_ext_dep_get_env_vars_hash),
(_priv_plugin_deps_env_vars_changed),
(gst_plugin_ext_dep_extract_env_vars_paths),
(gst_plugin_ext_dep_get_hash_from_stat_entry),
(gst_plugin_ext_dep_direntry_matches),
(gst_plugin_ext_dep_scan_dir_and_match_names),
(gst_plugin_ext_dep_scan_path_with_filenames),
(gst_plugin_ext_dep_get_stat_hash),
(_priv_plugin_deps_files_changed), (gst_plugin_ext_dep_free),
(gst_plugin_ext_dep_strv_equal), (gst_plugin_ext_dep_equals),
(gst_plugin_add_dependency), (gst_plugin_add_dependency_simple):
* gst/gstplugin.h: (GstPluginPrivate), (GstPluginFlags),
(GST_PLUGIN_DEPENDENCY_FLAG_NONE),
(GST_PLUGIN_DEPENDENCY_FLAG_RECURSE),
(GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY),
(GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX),
(GstPluginDependencyFlags), (GstPluginFilter):
* gst/gstregistry.c: (gst_registry_scan_path_level):
* gst/gstregistrybinary.c: (gst_registry_binary_save_feature),
(gst_registry_binary_save_plugin_dep),
(gst_registry_binary_save_plugin),
(gst_registry_binary_load_feature),
(gst_registry_binary_load_plugin_dep_strv),
(gst_registry_binary_load_plugin_dep),
(gst_registry_binary_load_plugin):
* gst/gstregistrybinary.h: (GST_MAGIC_BINARY_VERSION_STR),
(GstBinaryPluginElement), (_GstBinaryDep), (GstBinaryDep):
* gst/gstregistryxml.c: (gst_registry_xml_save_plugin):
Add API for making a GStreamer plugin 'dependent' on external files,
directories or environment variables, so that GStreamer knows when
it needs to re-load GStreamer plugins that wrap other plugin systems.
Fixes bug #350477.
API: add gst_plugin_add_dependency()
API: add gst_plugin_add_dependency_simple()
2009-01-06 17:58:59 +00:00
|
|
|
/* used by gstplugin.c and gstregistrybinary.c */
|
|
|
|
typedef struct {
|
|
|
|
/* details registered via gst_plugin_add_dependency() */
|
|
|
|
GstPluginDependencyFlags flags;
|
|
|
|
gchar **env_vars;
|
|
|
|
gchar **paths;
|
|
|
|
gchar **names;
|
|
|
|
|
|
|
|
/* information saved from the last time the plugin was loaded (-1 = unset) */
|
|
|
|
guint env_hash; /* hash of content of environment variables in env_vars */
|
|
|
|
guint stat_hash; /* hash of stat() on all relevant files and directories */
|
|
|
|
} GstPluginDep;
|
|
|
|
|
|
|
|
struct _GstPluginPrivate {
|
|
|
|
GList *deps; /* list of GstPluginDep structures */
|
2009-06-07 20:46:54 +00:00
|
|
|
GstStructure *cache_data;
|
Add API for making a GStreamer plugin 'dependent' on external files, directories or environment variables, so that GS...
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt::
* gst/gst_private.h: (GstPluginDep), (_GstPluginPrivate):
* gst/gstplugin.c: (gst_plugin_init), (gst_plugin_finalize),
(gst_plugin_class_init), (gst_plugin_list_free),
(gst_plugin_ext_dep_get_env_vars_hash),
(_priv_plugin_deps_env_vars_changed),
(gst_plugin_ext_dep_extract_env_vars_paths),
(gst_plugin_ext_dep_get_hash_from_stat_entry),
(gst_plugin_ext_dep_direntry_matches),
(gst_plugin_ext_dep_scan_dir_and_match_names),
(gst_plugin_ext_dep_scan_path_with_filenames),
(gst_plugin_ext_dep_get_stat_hash),
(_priv_plugin_deps_files_changed), (gst_plugin_ext_dep_free),
(gst_plugin_ext_dep_strv_equal), (gst_plugin_ext_dep_equals),
(gst_plugin_add_dependency), (gst_plugin_add_dependency_simple):
* gst/gstplugin.h: (GstPluginPrivate), (GstPluginFlags),
(GST_PLUGIN_DEPENDENCY_FLAG_NONE),
(GST_PLUGIN_DEPENDENCY_FLAG_RECURSE),
(GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY),
(GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX),
(GstPluginDependencyFlags), (GstPluginFilter):
* gst/gstregistry.c: (gst_registry_scan_path_level):
* gst/gstregistrybinary.c: (gst_registry_binary_save_feature),
(gst_registry_binary_save_plugin_dep),
(gst_registry_binary_save_plugin),
(gst_registry_binary_load_feature),
(gst_registry_binary_load_plugin_dep_strv),
(gst_registry_binary_load_plugin_dep),
(gst_registry_binary_load_plugin):
* gst/gstregistrybinary.h: (GST_MAGIC_BINARY_VERSION_STR),
(GstBinaryPluginElement), (_GstBinaryDep), (GstBinaryDep):
* gst/gstregistryxml.c: (gst_registry_xml_save_plugin):
Add API for making a GStreamer plugin 'dependent' on external files,
directories or environment variables, so that GStreamer knows when
it needs to re-load GStreamer plugins that wrap other plugin systems.
Fixes bug #350477.
API: add gst_plugin_add_dependency()
API: add gst_plugin_add_dependency_simple()
2009-01-06 17:58:59 +00:00
|
|
|
};
|
|
|
|
|
2020-05-05 08:47:07 +00:00
|
|
|
/* Private function for getting plugin features directly */
|
|
|
|
GList *
|
|
|
|
_priv_plugin_get_features(GstRegistry *registry, GstPlugin *plugin);
|
|
|
|
|
2016-12-02 17:56:59 +00:00
|
|
|
/* Needed by GstMeta (to access meta seq) and GstBuffer (create/free/iterate) */
|
|
|
|
typedef struct _GstMetaItem GstMetaItem;
|
|
|
|
struct _GstMetaItem {
|
|
|
|
GstMetaItem *next;
|
|
|
|
guint64 seq_num;
|
|
|
|
GstMeta meta;
|
|
|
|
};
|
|
|
|
|
2011-10-08 19:15:46 +00:00
|
|
|
/* FIXME: could rename all priv_gst_* functions to __gst_* now */
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL gboolean priv_gst_plugin_loading_have_whitelist (void);
|
pluginloading: add support for whitelisting based on plugin or source module name and path
This feature is primarily intended for use in plugin modules' unit tests.
Consider the following situation: gst-plugins-good is built against an
installed GStreamer core. An older version of gst-plugins-good is also
installed in that prefix, along with random other plugin modules. Now,
when doing 'make check' in the just-built gst-plugins-good tree, we
want to only load plugins from GStreamer core, gst-plugins-base, and
gst-plugins-good, but not random other modules (we don't want any unit
tests to fail just because some module in gst-plugins-bad has a broken
plugin_init, for example). Also, we want to only load gst-plugins-good
modules from the locally-built source tree, but not any of the older
gst-plugins-good modules installed. This is usually assured by loading
the ones in the source tree first (by adding that path first to the
right environment variables), but it gets tricky when plugins are
moved, removed, merged, or renamed, or the plugin filename changes.
Note that 'make check' should really work right without doing
'make install' or uninstalling the old gst-plugins-good package (or
any other gst-plugins-foo package) first.
Enter GST_PLUGIN_LOADING_WHITELIST. This environment variable may
contain source-package@path-prefix pairs separated by the platform
search path separator (G_SEARCHPATH_SEPARATOR_S). The source package
and path prefix are separated by the '@' character. The path prefix is
entirely optional, as is the '@' separator if no path is given.
It is also possible to filter based on plugin names instead of the name
of the source-package by specifying one or more plugin names separated
by commas before the optional path prefix.
In short, the following match patterns are possible:
plugin1,plugin2@pathprefix or
plugin1,plugin2@* or just
plugin1,plugin2 or
source-package@pathprefix or
source-package@* or just
source-package
So for our gst-plugins-good unit test example above, we would set the
environment variable on *nix to something like this (will likely be a
relative path in practice):
gstreamer:gst-plugins-base:gst-plugins-good@/path/to/src/gst-plugins-good
Fixes #619815 and #619717.
2010-05-27 11:36:10 +00:00
|
|
|
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL guint32 priv_gst_plugin_loading_get_whitelist_hash (void);
|
2010-06-23 10:02:16 +00:00
|
|
|
|
2017-02-28 02:38:11 +00:00
|
|
|
G_GNUC_INTERNAL gboolean priv_gst_plugin_desc_is_whitelisted (const GstPluginDesc * desc,
|
2012-07-09 19:48:56 +00:00
|
|
|
const gchar * filename);
|
pluginloading: add support for whitelisting based on plugin or source module name and path
This feature is primarily intended for use in plugin modules' unit tests.
Consider the following situation: gst-plugins-good is built against an
installed GStreamer core. An older version of gst-plugins-good is also
installed in that prefix, along with random other plugin modules. Now,
when doing 'make check' in the just-built gst-plugins-good tree, we
want to only load plugins from GStreamer core, gst-plugins-base, and
gst-plugins-good, but not random other modules (we don't want any unit
tests to fail just because some module in gst-plugins-bad has a broken
plugin_init, for example). Also, we want to only load gst-plugins-good
modules from the locally-built source tree, but not any of the older
gst-plugins-good modules installed. This is usually assured by loading
the ones in the source tree first (by adding that path first to the
right environment variables), but it gets tricky when plugins are
moved, removed, merged, or renamed, or the plugin filename changes.
Note that 'make check' should really work right without doing
'make install' or uninstalling the old gst-plugins-good package (or
any other gst-plugins-foo package) first.
Enter GST_PLUGIN_LOADING_WHITELIST. This environment variable may
contain source-package@path-prefix pairs separated by the platform
search path separator (G_SEARCHPATH_SEPARATOR_S). The source package
and path prefix are separated by the '@' character. The path prefix is
entirely optional, as is the '@' separator if no path is given.
It is also possible to filter based on plugin names instead of the name
of the source-package by specifying one or more plugin names separated
by commas before the optional path prefix.
In short, the following match patterns are possible:
plugin1,plugin2@pathprefix or
plugin1,plugin2@* or just
plugin1,plugin2 or
source-package@pathprefix or
source-package@* or just
source-package
So for our gst-plugins-good unit test example above, we would set the
environment variable on *nix to something like this (will likely be a
relative path in practice):
gstreamer:gst-plugins-base:gst-plugins-good@/path/to/src/gst-plugins-good
Fixes #619815 and #619717.
2010-05-27 11:36:10 +00:00
|
|
|
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL gboolean _priv_plugin_deps_env_vars_changed (GstPlugin * plugin);
|
Add API for making a GStreamer plugin 'dependent' on external files, directories or environment variables, so that GS...
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt::
* gst/gst_private.h: (GstPluginDep), (_GstPluginPrivate):
* gst/gstplugin.c: (gst_plugin_init), (gst_plugin_finalize),
(gst_plugin_class_init), (gst_plugin_list_free),
(gst_plugin_ext_dep_get_env_vars_hash),
(_priv_plugin_deps_env_vars_changed),
(gst_plugin_ext_dep_extract_env_vars_paths),
(gst_plugin_ext_dep_get_hash_from_stat_entry),
(gst_plugin_ext_dep_direntry_matches),
(gst_plugin_ext_dep_scan_dir_and_match_names),
(gst_plugin_ext_dep_scan_path_with_filenames),
(gst_plugin_ext_dep_get_stat_hash),
(_priv_plugin_deps_files_changed), (gst_plugin_ext_dep_free),
(gst_plugin_ext_dep_strv_equal), (gst_plugin_ext_dep_equals),
(gst_plugin_add_dependency), (gst_plugin_add_dependency_simple):
* gst/gstplugin.h: (GstPluginPrivate), (GstPluginFlags),
(GST_PLUGIN_DEPENDENCY_FLAG_NONE),
(GST_PLUGIN_DEPENDENCY_FLAG_RECURSE),
(GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY),
(GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX),
(GstPluginDependencyFlags), (GstPluginFilter):
* gst/gstregistry.c: (gst_registry_scan_path_level):
* gst/gstregistrybinary.c: (gst_registry_binary_save_feature),
(gst_registry_binary_save_plugin_dep),
(gst_registry_binary_save_plugin),
(gst_registry_binary_load_feature),
(gst_registry_binary_load_plugin_dep_strv),
(gst_registry_binary_load_plugin_dep),
(gst_registry_binary_load_plugin):
* gst/gstregistrybinary.h: (GST_MAGIC_BINARY_VERSION_STR),
(GstBinaryPluginElement), (_GstBinaryDep), (GstBinaryDep):
* gst/gstregistryxml.c: (gst_registry_xml_save_plugin):
Add API for making a GStreamer plugin 'dependent' on external files,
directories or environment variables, so that GStreamer knows when
it needs to re-load GStreamer plugins that wrap other plugin systems.
Fixes bug #350477.
API: add gst_plugin_add_dependency()
API: add gst_plugin_add_dependency_simple()
2009-01-06 17:58:59 +00:00
|
|
|
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL gboolean _priv_plugin_deps_files_changed (GstPlugin * plugin);
|
|
|
|
|
2011-08-29 11:27:26 +00:00
|
|
|
/* init functions called from gst_init(). */
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_quarks_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_mini_object_initialize (void);
|
2014-06-19 06:05:03 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_memory_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_allocator_initialize (void);
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_buffer_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_buffer_list_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_structure_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_caps_initialize (void);
|
2013-03-30 14:35:19 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_caps_features_initialize (void);
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_event_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_format_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_message_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_meta_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_plugin_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_query_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_sample_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_tag_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_value_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_debug_init (void);
|
2013-03-28 14:35:13 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_context_initialize (void);
|
2014-06-19 06:05:03 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_toc_initialize (void);
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_date_time_initialize (void);
|
pluginfeature: Allow updating initial rank of plugin feature
Introducing "GST_PLUGIN_FEATURE_RANK" environment variable in order for users
to adjust rank of plugin(s) via environment.
A "feature" and "rank" key-value pair should be separable by ":",
and each key-value pair is recognized per "," delimiters. The rank
can be a numerical value or one of pre-defined rank values
such as "NONE", "MARGINAL", "SECONDARY", and "PRIMARY" in case-insensitive manner.
In addition to pre-defined { NONE, MARGINAL, SECONDARY, PRIMARY },
"MAX" can be passed to key value used to ensure having a higher rank
than other plugin features.
Example)
- GST_PLUGIN_FEATURE_RANK=qtdemux:256,h264parse:NONE
Set rank of qtdemux plugin to 256 (primary) and 0 (none) for h264parse.
2019-08-15 11:56:40 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_plugin_feature_rank_initialize (void);
|
2012-03-14 16:01:51 +00:00
|
|
|
|
2016-04-18 10:05:40 +00:00
|
|
|
/* cleanup functions called from gst_deinit(). */
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_allocator_cleanup (void);
|
2016-04-26 13:02:14 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_caps_features_cleanup (void);
|
2016-04-26 13:02:14 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_caps_cleanup (void);
|
2019-04-16 11:29:00 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_debug_cleanup (void);
|
2020-09-01 21:03:18 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_meta_cleanup (void);
|
2016-04-18 10:05:40 +00:00
|
|
|
|
2016-07-08 14:36:01 +00:00
|
|
|
/* called from gst_task_cleanup_all(). */
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_element_cleanup (void);
|
|
|
|
|
gst/: Re-commit the registry changes, along with an extra fix:
Original commit message from CVS:
* gst/gst.c: (init_pre), (scan_and_update_registry),
(ensure_current_registry_nonforking),
(ensure_current_registry_forking), (ensure_current_registry),
(init_post), (gst_debug_help), (gst_deinit):
* gst/gst_private.h:
* gst/gstregistry.c: (gst_registry_finalize),
(gst_registry_remove_features_for_plugin_unlocked),
(gst_registry_remove_plugin), (gst_registry_scan_path_level),
(gst_registry_scan_path),
(_priv_gst_registry_remove_cache_plugins),
(_priv_gst_registry_cleanup):
* gst/gstregistry.h:
Re-commit the registry changes, along with an extra fix:
When a cached plugin is encountered at a different file path,
update the stored path in the registry cache so that the parent
process knows where it actually is now when it re-reads the registry
cache. Fixes the thing that broke distcheck with the previous commit.
* tests/check/Makefile.am:
Clean up files named 'core' too when running make clean.
* tests/examples/manual/Makefile.am:
Set up a registry path for running these tests, and clean it properly
for distcheck.
2006-09-28 14:00:43 +00:00
|
|
|
/* Private registry functions */
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL
|
gst/: Re-commit the registry changes, along with an extra fix:
Original commit message from CVS:
* gst/gst.c: (init_pre), (scan_and_update_registry),
(ensure_current_registry_nonforking),
(ensure_current_registry_forking), (ensure_current_registry),
(init_post), (gst_debug_help), (gst_deinit):
* gst/gst_private.h:
* gst/gstregistry.c: (gst_registry_finalize),
(gst_registry_remove_features_for_plugin_unlocked),
(gst_registry_remove_plugin), (gst_registry_scan_path_level),
(gst_registry_scan_path),
(_priv_gst_registry_remove_cache_plugins),
(_priv_gst_registry_cleanup):
* gst/gstregistry.h:
Re-commit the registry changes, along with an extra fix:
When a cached plugin is encountered at a different file path,
update the stored path in the registry cache so that the parent
process knows where it actually is now when it re-reads the registry
cache. Fixes the thing that broke distcheck with the previous commit.
* tests/check/Makefile.am:
Clean up files named 'core' too when running make clean.
* tests/examples/manual/Makefile.am:
Set up a registry path for running these tests, and clean it properly
for distcheck.
2006-09-28 14:00:43 +00:00
|
|
|
gboolean _priv_gst_registry_remove_cache_plugins (GstRegistry *registry);
|
2012-07-09 19:48:56 +00:00
|
|
|
|
|
|
|
G_GNUC_INTERNAL void _priv_gst_registry_cleanup (void);
|
|
|
|
|
2018-03-12 23:03:26 +00:00
|
|
|
GST_API
|
2009-03-14 23:07:40 +00:00
|
|
|
gboolean _gst_plugin_loader_client_run (void);
|
gst/: Re-commit the registry changes, along with an extra fix:
Original commit message from CVS:
* gst/gst.c: (init_pre), (scan_and_update_registry),
(ensure_current_registry_nonforking),
(ensure_current_registry_forking), (ensure_current_registry),
(init_post), (gst_debug_help), (gst_deinit):
* gst/gst_private.h:
* gst/gstregistry.c: (gst_registry_finalize),
(gst_registry_remove_features_for_plugin_unlocked),
(gst_registry_remove_plugin), (gst_registry_scan_path_level),
(gst_registry_scan_path),
(_priv_gst_registry_remove_cache_plugins),
(_priv_gst_registry_cleanup):
* gst/gstregistry.h:
Re-commit the registry changes, along with an extra fix:
When a cached plugin is encountered at a different file path,
update the stored path in the registry cache so that the parent
process knows where it actually is now when it re-reads the registry
cache. Fixes the thing that broke distcheck with the previous commit.
* tests/check/Makefile.am:
Clean up files named 'core' too when running make clean.
* tests/examples/manual/Makefile.am:
Set up a registry path for running these tests, and clean it properly
for distcheck.
2006-09-28 14:00:43 +00:00
|
|
|
|
2015-07-21 11:35:33 +00:00
|
|
|
G_GNUC_INTERNAL GstPlugin * _priv_gst_plugin_load_file_for_registry (const gchar *filename,
|
|
|
|
GstRegistry * registry,
|
|
|
|
GError** error);
|
|
|
|
|
2017-02-23 18:22:03 +00:00
|
|
|
/* GValue serialization/deserialization */
|
|
|
|
|
|
|
|
G_GNUC_INTERNAL const char * _priv_gst_value_gtype_to_abbr (GType type);
|
|
|
|
|
|
|
|
G_GNUC_INTERNAL gboolean _priv_gst_value_parse_string (gchar * s, gchar ** end, gchar ** next, gboolean unescape);
|
|
|
|
G_GNUC_INTERNAL gboolean _priv_gst_value_parse_simple_string (gchar * str, gchar ** end);
|
2020-09-17 18:44:43 +00:00
|
|
|
G_GNUC_INTERNAL gboolean _priv_gst_value_parse_value (gchar * str, gchar ** after, GValue * value, GType default_type, GParamSpec *pspec);
|
2017-02-23 18:47:30 +00:00
|
|
|
G_GNUC_INTERNAL gchar * _priv_gst_value_serialize_any_list (const GValue * value, const gchar * begin, const gchar * end, gboolean print_type);
|
2017-02-23 18:22:03 +00:00
|
|
|
|
2011-05-10 14:37:44 +00:00
|
|
|
/* Used in GstBin for manual state handling */
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL void _priv_gst_element_state_changed (GstElement *element,
|
|
|
|
GstState oldstate, GstState newstate, GstState pending);
|
2011-05-10 14:37:44 +00:00
|
|
|
|
2008-01-09 16:36:34 +00:00
|
|
|
/* used in both gststructure.c and gstcaps.c; numbers are completely made up */
|
2011-05-11 16:17:45 +00:00
|
|
|
#define STRUCTURE_ESTIMATED_STRING_LEN(s) (16 + gst_structure_n_fields(s) * 22)
|
2013-03-30 14:35:19 +00:00
|
|
|
#define FEATURES_ESTIMATED_STRING_LEN(s) (16 + gst_caps_features_get_size(s) * 14)
|
2008-01-09 16:36:34 +00:00
|
|
|
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL
|
2008-01-09 16:36:34 +00:00
|
|
|
gboolean priv_gst_structure_append_to_gstring (const GstStructure * structure,
|
|
|
|
GString * s);
|
2013-03-30 14:35:19 +00:00
|
|
|
G_GNUC_INTERNAL
|
2016-01-12 13:59:04 +00:00
|
|
|
gboolean priv__gst_structure_append_template_to_gstring (GQuark field_id,
|
|
|
|
const GValue *value,
|
|
|
|
gpointer user_data);
|
|
|
|
|
|
|
|
G_GNUC_INTERNAL
|
2013-03-30 14:35:19 +00:00
|
|
|
void priv_gst_caps_features_append_to_gstring (const GstCapsFeatures * features, GString *s);
|
|
|
|
|
|
|
|
G_GNUC_INTERNAL
|
|
|
|
gboolean priv_gst_structure_parse_name (gchar * str, gchar **start, gchar ** end, gchar ** next);
|
|
|
|
G_GNUC_INTERNAL
|
|
|
|
gboolean priv_gst_structure_parse_fields (gchar *str, gchar ** end, GstStructure *structure);
|
|
|
|
|
2016-01-18 20:12:53 +00:00
|
|
|
/* used in gstvalue.c and gststructure.c */
|
|
|
|
|
|
|
|
#define GST_WRAPPED_PTR_FORMAT "p\aa"
|
|
|
|
|
|
|
|
G_GNUC_INTERNAL
|
|
|
|
gchar *priv_gst_string_take_and_wrap (gchar * s);
|
|
|
|
|
2008-03-07 11:12:59 +00:00
|
|
|
/* registry cache backends */
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL
|
2011-08-29 11:27:26 +00:00
|
|
|
gboolean priv_gst_registry_binary_read_cache (GstRegistry * registry, const char *location);
|
2012-07-09 19:48:56 +00:00
|
|
|
|
|
|
|
G_GNUC_INTERNAL
|
2011-12-26 18:41:13 +00:00
|
|
|
gboolean priv_gst_registry_binary_write_cache (GstRegistry * registry, GList * plugins, const char *location);
|
2008-01-09 16:36:34 +00:00
|
|
|
|
2012-07-09 19:48:56 +00:00
|
|
|
|
|
|
|
G_GNUC_INTERNAL
|
2011-10-29 18:59:05 +00:00
|
|
|
void __gst_element_factory_add_static_pad_template (GstElementFactory * elementfactory,
|
|
|
|
GstStaticPadTemplate * templ);
|
|
|
|
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL
|
2011-10-29 18:59:05 +00:00
|
|
|
void __gst_element_factory_add_interface (GstElementFactory * elementfactory,
|
|
|
|
const gchar * interfacename);
|
|
|
|
|
2009-06-02 15:36:10 +00:00
|
|
|
/* used in gstvalue.c and gststructure.c */
|
|
|
|
#define GST_ASCII_IS_STRING(c) (g_ascii_isalnum((c)) || ((c) == '_') || \
|
|
|
|
((c) == '-') || ((c) == '+') || ((c) == '/') || ((c) == ':') || \
|
|
|
|
((c) == '.'))
|
|
|
|
|
2010-07-22 01:04:23 +00:00
|
|
|
/* This is only meant for internal uses */
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL
|
2012-06-27 12:16:07 +00:00
|
|
|
gint __gst_date_time_compare (const GstDateTime * dt1, const GstDateTime * dt2);
|
2010-07-22 01:04:23 +00:00
|
|
|
|
2012-07-09 19:48:56 +00:00
|
|
|
G_GNUC_INTERNAL
|
2012-07-07 21:46:00 +00:00
|
|
|
gchar * __gst_date_time_serialize (GstDateTime * datetime, gboolean with_usecs);
|
|
|
|
|
2015-04-01 11:13:17 +00:00
|
|
|
/* For use in gstdebugutils */
|
|
|
|
G_GNUC_INTERNAL
|
|
|
|
GstCapsFeatures * __gst_caps_get_features_unchecked (const GstCaps * caps, guint idx);
|
|
|
|
|
2009-03-14 23:07:40 +00:00
|
|
|
#ifndef GST_DISABLE_REGISTRY
|
|
|
|
/* Secret variable to initialise gst without registry cache */
|
2017-05-10 09:56:16 +00:00
|
|
|
|
2018-03-12 23:03:26 +00:00
|
|
|
GST_API gboolean _gst_disable_registry_cache;
|
2009-03-14 23:07:40 +00:00
|
|
|
#endif
|
|
|
|
|
2017-09-25 18:35:59 +00:00
|
|
|
/* Secret variable to let the plugin scanner use the same base path
|
|
|
|
* as the main application in order to determine dependencies */
|
2018-03-12 23:03:26 +00:00
|
|
|
GST_API gchar *_gst_executable_path;
|
2017-09-25 18:35:59 +00:00
|
|
|
|
2009-12-17 19:45:31 +00:00
|
|
|
/* provide inline gst_g_value_get_foo_unchecked(), used in gststructure.c */
|
|
|
|
#define DEFINE_INLINE_G_VALUE_GET_UNCHECKED(ret_type,name_type,v_field) \
|
|
|
|
static inline ret_type \
|
|
|
|
gst_g_value_get_##name_type##_unchecked (const GValue *value) \
|
|
|
|
{ \
|
|
|
|
return value->data[0].v_field; \
|
|
|
|
}
|
|
|
|
|
|
|
|
DEFINE_INLINE_G_VALUE_GET_UNCHECKED(gboolean,boolean,v_int)
|
|
|
|
DEFINE_INLINE_G_VALUE_GET_UNCHECKED(gint,int,v_int)
|
|
|
|
DEFINE_INLINE_G_VALUE_GET_UNCHECKED(guint,uint,v_uint)
|
|
|
|
DEFINE_INLINE_G_VALUE_GET_UNCHECKED(gint64,int64,v_int64)
|
|
|
|
DEFINE_INLINE_G_VALUE_GET_UNCHECKED(guint64,uint64,v_uint64)
|
|
|
|
DEFINE_INLINE_G_VALUE_GET_UNCHECKED(gfloat,float,v_float)
|
|
|
|
DEFINE_INLINE_G_VALUE_GET_UNCHECKED(gdouble,double,v_double)
|
|
|
|
DEFINE_INLINE_G_VALUE_GET_UNCHECKED(const gchar *,string,v_pointer)
|
|
|
|
|
|
|
|
|
2003-06-29 14:05:49 +00:00
|
|
|
/*** debugging categories *****************************************************/
|
|
|
|
|
2009-04-17 14:59:38 +00:00
|
|
|
#ifndef GST_REMOVE_GST_DEBUG
|
2003-06-29 14:05:49 +00:00
|
|
|
|
2018-03-12 23:03:26 +00:00
|
|
|
GST_API GstDebugCategory *GST_CAT_GST_INIT;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_MEMORY;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_PARENTAGE;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_STATES;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_SCHEDULING;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_BUFFER;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_BUFFER_LIST;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_BUS;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_CAPS;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_CLOCK;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_ELEMENT_PADS;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_PADS;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_PERFORMANCE;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_PIPELINE;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_PLUGIN_LOADING;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_PLUGIN_INFO;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_PROPERTIES;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_NEGOTIATION;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_REFCOUNTING;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_ERROR_SYSTEM;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_EVENT;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_MESSAGE;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_PARAMS;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_CALL_TRACE;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_SIGNAL;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_PROBE;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_REGISTRY;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_QOS;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_META;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_LOCKING;
|
|
|
|
GST_API GstDebugCategory *GST_CAT_CONTEXT;
|
2009-10-12 13:24:04 +00:00
|
|
|
|
|
|
|
/* Categories that should be completely private to
|
|
|
|
* libgstreamer should be done like this: */
|
|
|
|
#define GST_CAT_POLL _priv_GST_CAT_POLL
|
2009-10-12 13:57:35 +00:00
|
|
|
extern GstDebugCategory *_priv_GST_CAT_POLL;
|
2003-06-29 14:05:49 +00:00
|
|
|
|
2015-04-15 14:33:31 +00:00
|
|
|
#define GST_CAT_PROTECTION _priv_GST_CAT_PROTECTION
|
|
|
|
extern GstDebugCategory *_priv_GST_CAT_PROTECTION;
|
|
|
|
|
2016-01-07 16:41:25 +00:00
|
|
|
extern GstClockTime _priv_gst_start_time;
|
2014-07-23 19:27:48 +00:00
|
|
|
|
2004-05-07 02:36:28 +00:00
|
|
|
#else
|
|
|
|
|
|
|
|
#define GST_CAT_GST_INIT NULL
|
|
|
|
#define GST_CAT_AUTOPLUG NULL
|
|
|
|
#define GST_CAT_AUTOPLUG_ATTEMPT NULL
|
|
|
|
#define GST_CAT_PARENTAGE NULL
|
|
|
|
#define GST_CAT_STATES NULL
|
|
|
|
#define GST_CAT_SCHEDULING NULL
|
|
|
|
#define GST_CAT_DATAFLOW NULL
|
|
|
|
#define GST_CAT_BUFFER NULL
|
2009-05-12 10:08:56 +00:00
|
|
|
#define GST_CAT_BUFFER_LIST NULL
|
2005-10-06 09:49:42 +00:00
|
|
|
#define GST_CAT_BUS NULL
|
2004-05-07 02:36:28 +00:00
|
|
|
#define GST_CAT_CAPS NULL
|
|
|
|
#define GST_CAT_CLOCK NULL
|
|
|
|
#define GST_CAT_ELEMENT_PADS NULL
|
|
|
|
#define GST_CAT_PADS NULL
|
2009-06-29 08:24:04 +00:00
|
|
|
#define GST_CAT_PERFORMANCE NULL
|
2004-05-07 02:36:28 +00:00
|
|
|
#define GST_CAT_PIPELINE NULL
|
|
|
|
#define GST_CAT_PLUGIN_LOADING NULL
|
|
|
|
#define GST_CAT_PLUGIN_INFO NULL
|
|
|
|
#define GST_CAT_PROPERTIES NULL
|
|
|
|
#define GST_CAT_NEGOTIATION NULL
|
|
|
|
#define GST_CAT_REFCOUNTING NULL
|
|
|
|
#define GST_CAT_ERROR_SYSTEM NULL
|
|
|
|
#define GST_CAT_EVENT NULL
|
Bump version number, we're now 0.9.0
Original commit message from CVS:
* configure.ac:
* gst/gst_private.h:
* gst/gstbin.c: (gst_bin_add_func), (gst_bin_add),
(gst_bin_remove_func), (gst_bin_remove),
(gst_bin_get_by_name_recurse_up):
* gst/gstclock.c: (gst_clock_id_ref), (gst_clock_id_unref),
(gst_clock_id_compare_func), (gst_clock_id_wait),
(gst_clock_id_wait_async), (gst_clock_init),
(gst_clock_adjust_unlocked), (gst_clock_get_time):
* gst/gstelement.h:
* gst/gstinfo.c: (_gst_debug_init):
* gst/gstobject.h:
* gst/gstpad.c: (_gst_pad_default_fixate_foreach),
(gst_pad_collectv), (gst_pad_collect_valist), (gst_pad_query):
* gst/gstpad.h:
Bump version number, we're now 0.9.0
Add future debugging category.
Fix NULL _unref() in _get_by_name_recurse_up
Rearrange gstpad.h.
Update some docs.
2005-03-09 11:08:18 +00:00
|
|
|
#define GST_CAT_MESSAGE NULL
|
2004-05-07 02:36:28 +00:00
|
|
|
#define GST_CAT_PARAMS NULL
|
|
|
|
#define GST_CAT_CALL_TRACE NULL
|
2005-01-10 17:23:42 +00:00
|
|
|
#define GST_CAT_SIGNAL NULL
|
2005-01-13 16:50:49 +00:00
|
|
|
#define GST_CAT_PROBE NULL
|
2005-09-15 00:13:26 +00:00
|
|
|
#define GST_CAT_REGISTRY NULL
|
2006-03-13 11:08:28 +00:00
|
|
|
#define GST_CAT_QOS NULL
|
2008-01-10 15:55:32 +00:00
|
|
|
#define GST_CAT_TYPES NULL
|
2009-10-12 07:50:00 +00:00
|
|
|
#define GST_CAT_POLL NULL
|
2012-03-01 16:39:17 +00:00
|
|
|
#define GST_CAT_META NULL
|
2012-07-04 14:04:28 +00:00
|
|
|
#define GST_CAT_LOCKING NULL
|
2013-03-28 14:35:13 +00:00
|
|
|
#define GST_CAT_CONTEXT NULL
|
2015-04-15 14:33:31 +00:00
|
|
|
#define GST_CAT_PROTECTION NULL
|
2004-05-07 02:36:28 +00:00
|
|
|
|
2003-06-29 14:05:49 +00:00
|
|
|
#endif
|
|
|
|
|
2013-04-12 22:58:52 +00:00
|
|
|
#ifdef GST_DISABLE_GST_DEBUG
|
|
|
|
/* for _gst_element_error_printf */
|
|
|
|
#define __gst_vasprintf __gst_info_fallback_vasprintf
|
|
|
|
int __gst_vasprintf (char **result, char const *format, va_list args);
|
|
|
|
#endif
|
2011-05-02 12:36:14 +00:00
|
|
|
|
2012-04-29 16:03:32 +00:00
|
|
|
/**** objects made opaque until the private bits have been made private ****/
|
|
|
|
|
|
|
|
#include <gmodule.h>
|
|
|
|
#include <time.h> /* time_t */
|
|
|
|
#include <sys/types.h> /* off_t */
|
|
|
|
#include <sys/stat.h> /* off_t */
|
|
|
|
|
|
|
|
typedef struct _GstPluginPrivate GstPluginPrivate;
|
|
|
|
|
|
|
|
struct _GstPlugin {
|
|
|
|
GstObject object;
|
|
|
|
|
|
|
|
/*< private >*/
|
|
|
|
GstPluginDesc desc;
|
|
|
|
|
|
|
|
gchar * filename;
|
|
|
|
gchar * basename; /* base name (non-dir part) of plugin path */
|
|
|
|
|
|
|
|
GModule * module; /* contains the module if plugin is loaded */
|
|
|
|
|
|
|
|
off_t file_size;
|
|
|
|
time_t file_mtime;
|
|
|
|
gboolean registered; /* TRUE when the registry has seen a filename
|
|
|
|
* that matches the plugin's basename */
|
|
|
|
|
|
|
|
GstPluginPrivate *priv;
|
|
|
|
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _GstPluginClass {
|
|
|
|
GstObjectClass object_class;
|
|
|
|
|
|
|
|
/*< private >*/
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
|
|
|
|
2012-05-19 16:24:52 +00:00
|
|
|
struct _GstPluginFeature {
|
|
|
|
GstObject object;
|
|
|
|
|
|
|
|
/*< private >*/
|
|
|
|
gboolean loaded;
|
|
|
|
guint rank;
|
|
|
|
|
|
|
|
const gchar *plugin_name;
|
|
|
|
GstPlugin *plugin; /* weak ref */
|
|
|
|
|
|
|
|
/*< private >*/
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _GstPluginFeatureClass {
|
|
|
|
GstObjectClass parent_class;
|
|
|
|
|
|
|
|
/*< private >*/
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
|
|
|
|
2012-05-01 21:35:38 +00:00
|
|
|
#include "gsttypefind.h"
|
|
|
|
|
|
|
|
struct _GstTypeFindFactory {
|
|
|
|
GstPluginFeature feature;
|
|
|
|
/* <private> */
|
|
|
|
|
|
|
|
GstTypeFindFunction function;
|
|
|
|
gchar ** extensions;
|
2013-10-25 19:28:30 +00:00
|
|
|
GstCaps * caps;
|
2012-05-01 21:35:38 +00:00
|
|
|
|
|
|
|
gpointer user_data;
|
|
|
|
GDestroyNotify user_data_notify;
|
|
|
|
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _GstTypeFindFactoryClass {
|
|
|
|
GstPluginFeatureClass parent;
|
|
|
|
/* <private> */
|
|
|
|
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
|
|
|
|
2013-10-24 12:47:48 +00:00
|
|
|
struct _GstTracerFactory {
|
|
|
|
GstPluginFeature feature;
|
|
|
|
/* <private> */
|
|
|
|
|
|
|
|
GType type;
|
|
|
|
|
|
|
|
/*
|
|
|
|
gpointer user_data;
|
|
|
|
GDestroyNotify user_data_notify;
|
|
|
|
*/
|
|
|
|
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _GstTracerFactoryClass {
|
|
|
|
GstPluginFeatureClass parent;
|
|
|
|
/* <private> */
|
|
|
|
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
|
|
|
|
2012-05-19 14:51:53 +00:00
|
|
|
struct _GstElementFactory {
|
|
|
|
GstPluginFeature parent;
|
|
|
|
|
|
|
|
GType type; /* unique GType of element or 0 if not loaded */
|
|
|
|
|
|
|
|
gpointer metadata;
|
|
|
|
|
|
|
|
GList * staticpadtemplates; /* GstStaticPadTemplate list */
|
|
|
|
guint numpadtemplates;
|
|
|
|
|
|
|
|
/* URI interface stuff */
|
|
|
|
GstURIType uri_type;
|
|
|
|
gchar ** uri_protocols;
|
|
|
|
|
|
|
|
GList * interfaces; /* interface type names this element implements */
|
|
|
|
|
|
|
|
/*< private >*/
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _GstElementFactoryClass {
|
|
|
|
GstPluginFeatureClass parent_class;
|
|
|
|
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
2012-04-29 16:03:32 +00:00
|
|
|
|
2014-06-26 18:28:09 +00:00
|
|
|
struct _GstDeviceProviderFactory {
|
2012-10-16 16:27:04 +00:00
|
|
|
GstPluginFeature feature;
|
|
|
|
/* <private> */
|
|
|
|
|
|
|
|
GType type; /* unique GType the device factory or 0 if not loaded */
|
|
|
|
|
2020-03-23 11:36:01 +00:00
|
|
|
GstDeviceProvider *provider;
|
2012-10-16 16:27:04 +00:00
|
|
|
gpointer metadata;
|
|
|
|
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
|
|
|
|
2014-06-26 18:28:09 +00:00
|
|
|
struct _GstDeviceProviderFactoryClass {
|
2012-10-16 16:27:04 +00:00
|
|
|
GstPluginFeatureClass parent;
|
|
|
|
/* <private> */
|
|
|
|
|
|
|
|
gpointer _gst_reserved[GST_PADDING];
|
|
|
|
};
|
|
|
|
|
2015-05-13 14:25:21 +00:00
|
|
|
struct _GstDynamicTypeFactory {
|
|
|
|
GstPluginFeature feature;
|
|
|
|
|
|
|
|
GType type; /* GType of the type, when loaded. 0 if not */
|
|
|
|
};
|
|
|
|
|
|
|
|
struct _GstDynamicTypeFactoryClass {
|
|
|
|
GstPluginFeatureClass parent;
|
|
|
|
};
|
|
|
|
|
2015-02-16 22:39:42 +00:00
|
|
|
/* privat flag used by GstBus / GstMessage */
|
|
|
|
#define GST_MESSAGE_FLAG_ASYNC_DELIVERY (GST_MINI_OBJECT_FLAG_LAST << 0)
|
|
|
|
|
2020-04-15 07:54:21 +00:00
|
|
|
/* private struct used by GstClock and GstSystemClock */
|
|
|
|
struct _GstClockEntryImpl
|
|
|
|
{
|
|
|
|
GstClockEntry entry;
|
|
|
|
GWeakRef clock;
|
|
|
|
GDestroyNotify destroy_entry;
|
2020-06-08 20:47:56 +00:00
|
|
|
gpointer padding[19]; /* padding for allowing e.g. systemclock
|
2020-04-15 07:54:21 +00:00
|
|
|
* to add data in lieu of overridable
|
|
|
|
* virtual functions on the clock */
|
|
|
|
};
|
|
|
|
|
2005-11-20 17:12:49 +00:00
|
|
|
G_END_DECLS
|
2000-12-28 22:12:02 +00:00
|
|
|
#endif /* __GST_PRIVATE_H__ */
|