Commit a0c65067 authored by Thibault Saunier's avatar Thibault Saunier

Port to hotdoc

parent 781ad55f
This diff is collapsed.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright © 2018 Thibault Saunier <tsaunier@igalia.com>
#
# This library is free software; you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 2.1 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 Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this library. If not, see <http://www.gnu.org/licenses/>.
import argparse
import json
import os
import sys
import subprocess
from collections import OrderedDict
try:
from collections.abc import Mapping
except ImportError: # python <3.3
from collections import Mapping
# Marks values in the json file as "unstable" so that they are
# not updated automatically, this aims at making the cache file
# stable and handle corner cases were we can't automatically
# make it happen. For properties, the best way is to use th
# GST_PARAM_DOC_SHOW_DEFAULT flag.
UNSTABLE_VALUE = "unstable-values"
def dict_recursive_update(d, u):
unstable_values = d.get(UNSTABLE_VALUE, [])
if not isinstance(unstable_values, list):
unstable_values = [unstable_values]
for k, v in u.items():
if isinstance(v, Mapping):
r = dict_recursive_update(d.get(k, {}), v)
d[k] = r
elif k not in unstable_values:
d[k] = u[k]
return d
def test_unstable_values():
current_cache = { "v1": "yes", "unstable-values": "v1"}
new_cache = { "v1": "no" }
assert(dict_recursive_update(current_cache, new_cache) == current_cache)
new_cache = { "v1": "no", "unstable-values": "v2" }
assert(dict_recursive_update(current_cache, new_cache) == new_cache)
current_cache = { "v1": "yes", "v2": "yay", "unstable-values": "v1",}
new_cache = { "v1": "no" }
assert(dict_recursive_update(current_cache, new_cache) == current_cache)
current_cache = { "v1": "yes", "v2": "yay", "unstable-values": "v2"}
new_cache = { "v1": "no", "v2": "unstable" }
assert(dict_recursive_update(current_cache, new_cache) == { "v1": "no", "v2": "yay", "unstable-values": "v2" })
if __name__ == "__main__":
cache_filename = sys.argv[1]
output_filename = sys.argv[2]
subenv = os.environ.copy()
cache = {}
try:
with open(cache_filename) as f:
cache = json.load(f)
except FileNotFoundError:
pass
cmd = [os.path.join(os.path.dirname(os.path.realpath(__file__)), 'gst-hotdoc-plugins-scanner')]
gst_plugins_paths = []
for plugin_path in sys.argv[3:]:
cmd.append(plugin_path)
gst_plugins_paths.append(os.path.dirname(plugin_path))
if subenv.get('GST_REGISTRY_UPDATE') != 'no' and len(cmd) >= 2:
data = subprocess.check_output(cmd, env=subenv)
try:
plugins = json.loads(data.decode(), object_pairs_hook=OrderedDict)
except json.decoder.JSONDecodeError:
print("Could not decode:\n%s" % data.decode(), file=sys.stderr)
raise
new_cache = dict_recursive_update(cache, plugins)
with open(output_filename, 'w') as f:
json.dump(cache, f, indent=4, sort_keys=True)
if new_cache != cache:
with open(cache_filename, 'w') as f:
json.dump(cache, f, indent=4, sort_keys=True)
\ No newline at end of file
---
title: Building GStreamer and GStreamer Applications
short-description: How to build the GStreamer framework and applications using it.
...
# Building GStreamer on UNIX
On UNIX, GStreamer uses the standard GNU build system, using autoconf
for package configuration and resolving portability issues, automake for
building makefiles that comply with the GNU Coding Standards, and
libtool for building shared libraries on multiple platforms. The normal
sequence for compiling and installing the GStreamer library is thus:
`./configure` `make` `make install`
The standard options provided by GNU autoconf may be passed to the
`configure` script. Please see the autoconf documentation or run
`./configure --help` for information about the standard options.
In addition there are several options to activate or deactivate
features. E.g. passing `--disable-gst-debug` to `configure` will turn
the debugging subsystem into a non-functional stub and remove all macro
based invocations from within the library (and anything compiled against
the library afterwards.)
If library size matters and one builds in a controlled environment, it
is also possible to totally remove subsystem code. This is intentionally
not offered as a configure option as it causes an ABI break. Code built
against a version of GStreamer without these modifications needs to be
recompiled.
`make CFLAGS="-DGST_REMOVE_DEPRECATED -DGST_REMOVE_DISABLED"`
- `GST_REMOVE_DEPRECATED` - Omit deprecated functions from the
library.
- `GST_REMOVE_DISABLED` - Omit stubs for disabled subsystems from the
library.
# Building GStreamer Applications
Applications and libraries can use `pkg-config` to get all the needed
compiler and linker flags to build against GStreamer. Please note that
GStreamer is split into several libraries itself.
`pkg-config --list-all | grep gstreamer` will list the available
libraries.
# Core Library
libgstreamer-{{ gst_api_version.md }}.so provides all the core GStreamer
services, including initialization, plugin management and types, as well
as the object hierarchy that defines elements and bins, along with some
more specialized elements.
# Core Library
libgstreamer-{{ gst_api_version.md }}.so provides all the core GStreamer
services, including initialization, plugin management and types, as well
as the object hierarchy that defines elements and bins, along with some
more specialized elements.
---
title: GStreamer Overview
short-description: A simple overview of the GStreamer framework
...
# GStreamer Overview
GStreamer is a streaming media framework. It uses graphs of elements which operate on data. The functionality to process media is provided by plug-ins which provide features like elements, typefinding, and so on. This allows new functionality to be added simply by installing new plug-ins.
GStreamer is cross-platform and works on most UNIX-like platforms as well as Windows. It is released under the GNU Library General Public License (GNU LGPL).
Relation between gstreamer core objects:
![GStreamer universe](images/gst-universe.svg)
\ No newline at end of file
This diff is collapsed.
gi-index
running.md
gst.h
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# Base and Utility classes
`gstreamer-base` provides some base classes to be extended by elements and utility classes that are most useful for plugin developers.
gi-index
gstbitreader.h
gstbytereader.h
gstbytewriter.h
# Check Unit Testing
`gstreamer-check` provides functionality for writing unit tests that use the check framework.
# Dynamic Parameter Control
`gstreamer-controller` provides functionality to animate element properties over time.
# GStreamer core libraries API
# Network Classes
`gstreamer-net-1.0` provides network elements and objects.
build_hotdoc = false
if meson.is_cross_build()
if get_option('doc').enabled()
error('Documentation enabled but building the doc while cross building is not supported yet.')
endif
message('Documentation not built as building it while cross building is not supported yet.')
subdir_done()
endif
hotdoc_plugin_scanner = executable('gst-hotdoc-plugins-scanner',
'gst-hotdoc-plugins-scanner.c',
c_args : gst_c_args,
include_directories : [configinc],
dependencies : [gobject_dep, gmodule_dep, glib_dep, gst_dep],
install_dir : helpers_install_dir,
link_with: [printf_lib],
install: true,
)
configure_file(
input: 'gst-plugins-doc-cache-generator.py',
output: 'gst-plugins-doc-cache-generator',
copy: true,
install_dir : helpers_install_dir,
)
plugins_cache_generator = find_program(join_paths(meson.current_build_dir(), 'gst-plugins-doc-cache-generator'))
plugins_cache = join_paths(meson.current_source_dir(), 'plugins', 'gst_plugins_cache.json')
plugins_doc_dep = custom_target('build-doc-cache',
build_by_default: true,
command: [plugins_cache_generator, plugins_cache, '@OUTPUT@', '@INPUT@'],
input: plugins,
output: 'gst_plugins_cache.json',
depends: [hotdoc_plugin_scanner],
)
hotdoc_p = find_program('hotdoc', required: get_option('doc'))
if not hotdoc_p.found()
message('Hotdoc not found, not building the documentation')
subdir_done()
endif
hotdoc = import('hotdoc')
required_hotdoc_extensions = ['gi-extension', 'gst-extension']
foreach extension: required_hotdoc_extensions
if not hotdoc.has_extensions(extension)
if get_option('doc').enabled()
error('Documentation enabled but @0@ missing'.format(extension))
endif
message('@0@ extension not found, not building documentation'.format(extension))
subdir_done()
endif
endforeach
if not build_gir
if get_option('doc').enabled()
error('Documentation enabled but introspection not built.')
endif
message('Introspection not built, can\'t build the documentation')
subdir_done()
endif
all_plugins_paths = []
foreach l: plugins
all_plugins_paths += l.full_path()
endforeach
build_hotdoc = true
docconf = configuration_data()
docconf.set('GST_API_VERSION', apiversion)
version_entities = configure_file(input : 'version.in',
output : 'gst_api_version.md',
configuration : docconf)
gst_excludes = []
foreach h: ['gettext.h', 'glib-compat-private.h', 'glib-compat.h',
'gst-i18n-app.h', 'gst-i18n-lib.h', 'gst_private.h',
'gstelementdetails.h', 'gstmacros.h', 'gstmarshal.h',
'math-compat.h', 'parse/grammar.tab.h',
'../libs/gst/base/gstindex.h',
'../libs/gst/base/gstindex.c',
'parser/grammar.tab.pre.h', 'parse/parse_lex.h', 'types.h',
'gst-printf.h', 'printf-args.h', 'printf-extension.h',
'printf-parse.h', 'vasnprintf.h', 'gstregistrybinary.c',
'gstregistrybinary.h', 'gstpluginloader.h', 'gstpluginloader.c']
gst_excludes += [join_paths(meson.current_source_dir(), '..', 'gst', h)]
endforeach
libs_doc = [hotdoc.generate_doc('gstreamer',
project_version: apiversion,
gi_c_sources: '../gst/*.[hc]',
gi_sources: [gst_gir[0].full_path()],
gi_c_source_filters: gst_excludes,
sitemap: 'gst/sitemap.txt',
index: 'gst/index.md',
gi_index: 'gst/gi-index.md',
gi_smart_index: true,
gi_c_source_roots: [join_paths(meson.current_source_dir(), '../gst/'), ],
dependencies: [gst_dep, glib_dep, gobject_dep, gmodule_dep, hotdoc_plugin_scanner],
extra_assets: [join_paths(meson.current_source_dir(), 'images')],
)]
libs = [
['base', gst_base_gir, gst_base_dep],
['controller', gst_controller_gir, gst_controller_dep,],
['net', gst_net_gir, gst_net_dep],
['check', gst_check_gir, gst_check_dep],
]
foreach lib: libs
name = lib[0]
gir = lib[1]
deps = [lib[2], gir]
libs_doc += [hotdoc.generate_doc('gstreamer-' + name,
project_version: apiversion,
gi_c_sources: ['../libs/gst/' + name + '/*.[hc]'],
gi_c_source_filters: gst_excludes,
gi_sources: gir[0].full_path(),
gi_c_source_roots: [join_paths(meson.current_source_dir(), '../libs/gst/' + name), ],
sitemap: join_paths('libs', name, 'sitemap.txt'),
index: join_paths('libs/', name, 'index.md'),
gi_index: join_paths('libs/', name, 'index.md'),
gi_smart_index: true,
gi_order_generated_subpages: true,
dependencies: deps + [hotdoc_plugin_scanner],
install: false,
)]
endforeach
plugins_doc = [hotdoc.generate_doc('GStreamer-core-plugins',
project_version: apiversion,
sitemap: 'plugins/sitemap.txt',
index: 'plugins/index.md',
gst_index: 'plugins/index.md',
gst_smart_index: true,
gst_c_sources: ['../plugins/elements/*.c', '../plugins/elements/*.h'],
dependencies: [plugins_doc_dep],
gst_cache_file: plugins_cache,
)]
\ No newline at end of file
GST_DOC_SCANOBJ = $(top_srcdir)/common/gstdoc-scangobj
## Process this file with automake to produce Makefile.in
# The name of the module, e.g. 'glib'.
#DOC_MODULE=gst-plugins-libs-@GST_API_VERSION@
MODULE=gstreamer
DOC_MODULE=$(MODULE)-plugins
# for upload-doc.mak
DOC=$(MODULE)-plugins
FORMATS=html
html: html-build.stamp
include $(top_srcdir)/common/upload-doc.mak
# Extra environment needed for Core only...
INSPECT_EXTRA_ENVIRONMENT= \
GST_PLUGIN_SCANNER_1_0=$(top_builddir)/libs/gst/helpers/gst-plugin-scanner
# The top-level SGML file. Change it if you want.
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
# The directory containing the source code.
# gtk-doc will search all .c & .h files beneath here for inline comments
# documenting functions and macros.
DOC_SOURCE_DIR = $(top_srcdir)/plugins/elements $(top_srcdir)/plugins/tracers
# Extra options to supply to gtkdoc-scan.
SCAN_OPTIONS=
# Extra options to supply to gtkdoc-mkdb.
MKDB_OPTIONS=--sgml-mode
# Extra options to supply to gtkdoc-fixref.
FIXXREF_OPTIONS=--extra-dir=$(top_builddir)/docs/gst/html \
--extra-dir=$(top_builddir)/docs/libs/html \
--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html \
--extra-dir=$(datadir)/gtk-doc/html
# Used for dependencies.
HFILE_GLOB=$(top_srcdir)/plugins/elements/*.h $(top_srcdir)/plugins/tracers/*.h
CFILE_GLOB=$(top_srcdir)/plugins/elements/*.c $(top_srcdir)/plugins/tracers/*.c
# Header files to ignore when scanning.
IGNORE_HFILES =
IGNORE_CFILES =
# we add all .h files of elements that have signals/args we want
# sadly this also pulls in the private methods - maybe we should
# move those around in the source ?
# also, we should add some stuff here conditionally based on whether
# or not the plugin will actually build
# but I'm not sure about that - it might be this Just Works given that
# the registry won't have the element
EXTRA_HFILES = \
$(top_srcdir)/plugins/elements/gstcapsfilter.h \
$(top_srcdir)/plugins/elements/gstdataurisrc.h \
$(top_srcdir)/plugins/elements/gstdownloadbuffer.h \
$(top_srcdir)/plugins/elements/gstfakesrc.h \
$(top_srcdir)/plugins/elements/gstfakesink.h \
$(top_srcdir)/plugins/elements/gstfdsink.h \
$(top_srcdir)/plugins/elements/gstfdsrc.h \
$(top_srcdir)/plugins/elements/gstfilesrc.h \
$(top_srcdir)/plugins/elements/gstfilesink.h \
$(top_srcdir)/plugins/elements/gstidentity.h \
$(top_srcdir)/plugins/elements/gstinputselector.h \
$(top_srcdir)/plugins/elements/gstmultiqueue.h \
$(top_srcdir)/plugins/elements/gstoutputselector.h \
$(top_srcdir)/plugins/elements/gstqueue.h \
$(top_srcdir)/plugins/elements/gstqueue2.h \
$(top_srcdir)/plugins/elements/gsttypefindelement.h \
$(top_srcdir)/plugins/elements/gsttee.h \
$(top_srcdir)/plugins/elements/gstvalve.h
# Images to copy into HTML directory.
HTML_IMAGES =
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
content_files =
# Other files to distribute.
extra_files =
# CFLAGS and LDFLAGS for compiling scan program. Only needed if your app/lib
# contains GtkObjects/GObjects and you want to document signals and properties.
GTKDOC_CFLAGS = $(GST_OBJ_CFLAGS) -I$(top_builddir) -I$(top_builddir)/libs
GTKDOC_LIBS = $(GST_OBJ_LIBS)
# If you need to override some of the declarations, place them in this file
# and uncomment this line.
#DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
DOC_OVERRIDES =
include $(top_srcdir)/common/gtk-doc-plugins.mak
This diff is collapsed.
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY % version-entities SYSTEM "version.entities">
%version-entities;
]>
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
<bookinfo>
<title>GStreamer Core Plugins &GST_API_VERSION; Plugins Reference Manual</title>
<releaseinfo>
for GStreamer Core Plugins &GST_API_VERSION; (&GST_VERSION;)
The latest version of this documentation can be found on-line at
<ulink role="online-location" url="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/</ulink>.
</releaseinfo>
</bookinfo>
<chapter>
<title>gstreamer Elements</title>
<xi:include href="xml/element-capsfilter.xml" />
<xi:include href="xml/element-concat.xml" />
<xi:include href="xml/element-dataurisrc.xml" />
<xi:include href="xml/element-downloadbuffer.xml" />
<xi:include href="xml/element-fakesink.xml" />
<xi:include href="xml/element-fakesrc.xml" />
<xi:include href="xml/element-fdsink.xml" />
<xi:include href="xml/element-fdsrc.xml" />
<xi:include href="xml/element-filesink.xml" />
<xi:include href="xml/element-filesrc.xml" />
<xi:include href="xml/element-funnel.xml" />
<xi:include href="xml/element-identity.xml" />
<xi:include href="xml/element-input-selector.xml" />
<xi:include href="xml/element-multiqueue.xml" />
<xi:include href="xml/element-output-selector.xml" />
<xi:include href="xml/element-queue2.xml" />
<xi:include href="xml/element-queue.xml" />
<xi:include href="xml/element-streamiddemux.xml" />
<xi:include href="xml/element-tee.xml" />
<xi:include href="xml/element-typefind.xml" />
<xi:include href="xml/element-valve.xml" />
</chapter>
<chapter>
<title>gstreamer Tracers</title>
<xi:include href="xml/element-latencytracer.xml" />
<xi:include href="xml/element-leakstracer.xml" />
<xi:include href="xml/element-logtracer.xml" />
<xi:include href="xml/element-rusagetracer.xml" />
<xi:include href="xml/element-statstracer.xml" />
</chapter>
<chapter>
<title>gstreamer Plugins</title>
<xi:include href="xml/plugin-coreelements.xml" />
<xi:include href="xml/plugin-coretracers.xml" />
</chapter>
</book>
<
<SECTION>
<FILE>element-capsfilter</FILE>
<TITLE>capsfilter</TITLE>
GstCapsFilter
GstCapsFilterCapsChangeMode
<SUBSECTION Standard>
GstCapsFilterClass
GST_CAPS_FILTER
GST_CAPS_FILTER_CAST
GST_IS_CAPS_FILTER
GST_CAPS_FILTER_CLASS
GST_IS_CAPS_FILTER_CLASS
GST_TYPE_CAPS_FILTER
<SUBSECTION Private>
gst_caps_filter_get_type
</SECTION>
<SECTION>
<FILE>element-concat</FILE>
<TITLE>concat</TITLE>
GstConcat
<SUBSECTION Standard>
GstConcatClass
GST_CONCAT
GST_CONCAT_CAST
GST_IS_CONCAT
GST_CONCAT_CLASS
GST_IS_CONCAT_CLASS
GST_TYPE_CONCAT
<SUBSECTION Private>
gst_concat_get_type
</SECTION>
<SECTION>
<FILE>element-dataurisrc</FILE>
<TITLE>dataurisrc</TITLE>
GstDataURISrc
<SUBSECTION Standard>
GstDataURISrcClass
GST_DATA_URI_SRC
GST_DATA_URI_SRC_CAST
GST_IS_DATA_URI_SRC
GST_DATA_URI_SRC_CLASS
GST_IS_DATA_URI_SRC_CLASS
GST_TYPE_DATA_URI_SRC
<SUBSECTION Private>
gst_data_uri_src_get_type
</SECTION>
<SECTION>
<FILE>element-downloadbuffer</FILE>
<TITLE>downloadbuffer</TITLE>
GstDownloadBuffer
<SUBSECTION Standard>
GstDownloadBufferSize
GstDownloadBufferClass
GST_DOWNLOAD_BUFFER
GST_DOWNLOAD_BUFFER_CAST
GST_IS_DOWNLOAD_BUFFER
GST_DOWNLOAD_BUFFER_CLASS
GST_IS_DOWNLOAD_BUFFER_CLASS
GST_TYPE_DOWNLOAD_BUFFER
<SUBSECTION Private>
gst_download_buffer_get_type
</SECTION>
<SECTION>
<FILE>element-fakesink</FILE>
<TITLE>fakesink</TITLE>
GstFakeSink
GstFakeSinkStateError
<SUBSECTION Standard>
GstFakeSinkClass
GST_FAKE_SINK
GST_FAKE_SINK_CAST
GST_IS_FAKE_SINK
GST_FAKE_SINK_CLASS
GST_IS_FAKE_SINK_CLASS
GST_TYPE_FAKE_SINK
<SUBSECTION Private>
gst_fake_sink_get_type
</SECTION>
<SECTION>
<FILE>element-fakesrc</FILE>
<TITLE>fakesrc</TITLE>
GstFakeSrc
GstFakeSrcDataType
GstFakeSrcFillType
GstFakeSrcOutputType
GstFakeSrcSizeType
<SUBSECTION Standard>
GstFakeSrcClass
GST_FAKE_SRC
GST_IS_FAKE_SRC
GST_FAKE_SRC_CLASS
GST_IS_FAKE_SRC_CLASS
GST_TYPE_FAKE_SRC
<SUBSECTION Private>
gst_fake_src_get_type
</SECTION>
<SECTION>
<FILE>element-fdsink</FILE>
<TITLE>fdsink</TITLE>
GstFdSink
<SUBSECTION Standard>
GstFdSinkClass
GST_FD_SINK
GST_FD_SINK_CAST
GST_IS_FD_SINK
GST_FD_SINK_CLASS
GST_IS_FD_SINK_CLASS
GST_TYPE_FD_SINK
<SUBSECTION Private>
gst_fd_sink_get_type
</SECTION>
<SECTION>
<FILE>element-fdsrc</FILE>
<TITLE>fdsrc</TITLE>
GstFdSrc
<SUBSECTION Standard>
GstFdSrcClass
GST_FD_SRC
GST_IS_FD_SRC
GST_FD_SRC_CLASS
GST_IS_FD_SRC_CLASS
GST_TYPE_FD_SRC
<SUBSECTION Private>
gst_fd_src_get_type
</SECTION>
<SECTION>
<FILE>element-filesink</FILE>
<TITLE>filesink</TITLE>
GstFileSink
GstFileSinkBufferMode
<SUBSECTION Standard>
GstFileSinkClass
GST_FILE_SINK
GST_FILE_SINK_CAST
GST_IS_FILE_SINK
GST_FILE_SINK_CLASS
GST_IS_FILE_SINK_CLASS
GST_TYPE_FILE_SINK
GST_TYPE_FILE_SINK_BUFFER_MODE
<SUBSECTION Private>
gst_file_sink_get_type
</SECTION>
<SECTION>
<FILE>element-filesrc</FILE>
<TITLE>filesrc</TITLE>
GstFileSrc
<SUBSECTION Standard>
GstFileSrcClass
GST_FILE_SRC
GST_FILE_SRC_CAST
GST_IS_FILE_SRC
GST_FILE_SRC_CLASS
GST_IS_FILE_SRC_CLASS
GST_TYPE_FILE_SRC
<SUBSECTION Private>
gst_file_src_get_type
</SECTION>
<SECTION>
<FILE>element-funnel</FILE>
<TITLE>funnel</TITLE>
GstFunnel
<SUBSECTION Standard>
GstFunnelClass
GST_FUNNEL
GST_IS_FUNNEL
GST_FUNNEL_CLASS
GST_IS_FUNNEL_CLASS
GST_TYPE_FUNNEL
<SUBSECTION Private>
gst_funnel_get_type
</SECTION>
<SECTION>
<FILE>element-identity</FILE>
<TITLE>identity</TITLE>
GstIdentity
<SUBSECTION Standard>
GstIdentityClass
GST_IDENTITY
GST_IS_IDENTITY
GST_IDENTITY_CLASS
GST_IS_IDENTITY_CLASS
GST_TYPE_IDENTITY
<SUBSECTION Private>
gst_identity_get_type
</SECTION>
<SECTION>
<FILE>element-input-selector</FILE>
<TITLE>input-selector</TITLE>
GstInputSelector
GstInputSelectorSyncMode
<SUBSECTION Standard>
GstInputSelectorClass
GST_INPUT_SELECTOR
GST_IS_INPUT_SELECTOR
GST_INPUT_SELECTOR_CLASS
GST_IS_INPUT_SELECTOR_CLASS
GST_TYPE_INPUT_SELECTOR