mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-22 01:31:03 +00:00
gst-full: register full features in a plugin
To offer the possibility to get information at plugin level and get it from the registry, all the full features are now registered in 'fullstaticfeatures' meta plugin instead of NULL plugin. In the case of gst-inspect, the features were not displayed at plugin level because it was a NULL plugin. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5421>
This commit is contained in:
parent
aeef97d81b
commit
bdbf6e1c17
5 changed files with 37 additions and 11 deletions
|
@ -342,8 +342,10 @@ if building_full
|
|||
cdata = configuration_data()
|
||||
cdata.set_quoted('GST_API_VERSION', apiversion)
|
||||
cdata.set_quoted('GETTEXT_PACKAGE', 'gstreamer-full-1.0')
|
||||
cdata.set_quoted('PACKAGE_VERSION', gst_version)
|
||||
cdata.set_quoted('PACKAGE_VERSION', meson.project_version())
|
||||
cdata.set_quoted('GST_PACKAGE_ORIGIN', get_option('package-origin'))
|
||||
cdata.set_quoted('GST_FULL_LICENSE', get_option('gstreamer-full-license'))
|
||||
cdata.set_quoted('GST_PLUGIN_FULL_FEATURES_NAME', 'fullstaticfeatures')
|
||||
configure_file(output : 'config.h', configuration : cdata)
|
||||
configinc = include_directories('.')
|
||||
gst_c_args = ['-DHAVE_CONFIG_H']
|
||||
|
@ -441,7 +443,7 @@ if building_full
|
|||
# Build shared library
|
||||
gstfull = build_target('gstreamer-full-1.0',
|
||||
init_static_plugins_c,
|
||||
c_args: ['-DBUILDING_GST'],
|
||||
c_args: ['-DBUILDING_GST'] + gst_c_args,
|
||||
target_type: get_option('gst-full-target-type'),
|
||||
link_args: gstfull_link_args,
|
||||
link_whole : exposed_libs,
|
||||
|
|
|
@ -70,3 +70,5 @@ option('glib-checks', type : 'feature', value : 'enabled', yield : true,
|
|||
|
||||
option('package-name', type : 'string', yield : true,
|
||||
description : 'package name to use in plugins')
|
||||
option('gstreamer-full-license', type : 'string', value : 'unknown',
|
||||
description : 'gstreamer-full license (default unknown)')
|
|
@ -6,6 +6,9 @@ from string import Template
|
|||
|
||||
TEMPLATE = Template('''
|
||||
#include <gst/gst.h>
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
$elements_declaration
|
||||
$typefind_funcs_declaration
|
||||
|
@ -14,16 +17,28 @@ $dynamic_types_declaration
|
|||
$plugins_declaration
|
||||
$giomodules_declaration
|
||||
|
||||
static
|
||||
gboolean register_features_full (GstPlugin* plugin)
|
||||
{
|
||||
$elements_registration
|
||||
$typefind_funcs_registration
|
||||
$device_providers_registration
|
||||
$dynamic_types_registration
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
_GST_EXPORT
|
||||
void
|
||||
gst_init_static_plugins (void)
|
||||
{
|
||||
static gsize initialization_value = 0;
|
||||
if (g_once_init_enter (&initialization_value)) {
|
||||
$elements_registration
|
||||
$typefind_funcs_registration
|
||||
$device_providers_registration
|
||||
$dynamic_types_registration
|
||||
|
||||
gst_plugin_register_static (GST_VERSION_MAJOR, GST_VERSION_MINOR,
|
||||
GST_PLUGIN_FULL_FEATURES_NAME, "features linked into the gstreamer-full library", register_features_full, PACKAGE_VERSION, GST_FULL_LICENSE,
|
||||
"gstreamer-full", GETTEXT_PACKAGE, GST_PACKAGE_ORIGIN);
|
||||
|
||||
$plugins_registration
|
||||
$giomodules_registration
|
||||
|
||||
|
@ -57,7 +72,7 @@ def process_features(features_list, plugins, feature_prefix):
|
|||
for feature in features:
|
||||
feature = feature.replace("-", "_")
|
||||
feature_declaration += ['%s_REGISTER_DECLARE(%s);' % (feature_prefix, feature)]
|
||||
feature_registration += ['%s_REGISTER(%s, NULL);' % (feature_prefix, feature)]
|
||||
feature_registration += ['%s_REGISTER(%s, plugin);' % (feature_prefix, feature)]
|
||||
return (plugins_list, feature_declaration, feature_registration)
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
|
||||
dep = dependency('gstreamer-full-1.0', required: get_option('default_library') == 'static')
|
||||
if dep.found()
|
||||
test_gst_full_features = executable('test-gst-full-features', 'test-gst-full-features.c', dependencies : gst_full_dep)
|
||||
test_gst_full_features = executable('test-gst-full-features', 'test-gst-full-features.c', dependencies : gst_full_dep, c_args: ['-DHAVE_CONFIG_H'])
|
||||
test('test-gst-full-features', test_gst_full_features)
|
||||
test_gst_full = executable('test-gst-full', 'test-gst-full.c', dependencies : gst_full_dep)
|
||||
test_gst_full = executable('test-gst-full', 'test-gst-full.c', dependencies : gst_full_dep, c_args: ['-DHAVE_CONFIG_H'])
|
||||
test('test-gst-full', test_gst_full)
|
||||
endif
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
#include <gst/gst.h>
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
|
||||
void
|
||||
|
@ -14,10 +17,14 @@ assert_feature_names (gchar * names, GType feature_type, gboolean spook)
|
|||
for (i = 0; split[i]; i++) {
|
||||
feature = gst_registry_find_feature (gst_registry_get (),
|
||||
split[i], feature_type);
|
||||
if (spook)
|
||||
if (spook) {
|
||||
g_assert_null (feature);
|
||||
else
|
||||
} else {
|
||||
g_assert_nonnull (feature);
|
||||
g_assert_cmpstr (gst_plugin_feature_get_plugin_name (feature), ==,
|
||||
GST_PLUGIN_FULL_FEATURES_NAME);
|
||||
}
|
||||
|
||||
if (feature)
|
||||
gst_object_unref (feature);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue