gl: update docs for mixer move

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4608>
This commit is contained in:
Matthew Waters 2023-05-18 16:55:27 +10:00 committed by GStreamer Marge Bot
parent e9bf1c79cc
commit 8003acf5bb
7 changed files with 654 additions and 83 deletions

View file

@ -1049,6 +1049,137 @@ function to allocate and OpenGL resources needed for your application</doc>
to the texture</doc>
</member>
</bitfield>
<class name="GLBaseMixer" c:symbol-prefix="gl_base_mixer" c:type="GstGLBaseMixer" version="1.24" parent="GstVideo.VideoAggregator" abstract="1" glib:type-name="GstGLBaseMixer" glib:get-type="gst_gl_base_mixer_get_type" glib:type-struct="GLBaseMixerClass">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.c">#GstGLBaseMixer handles the nitty gritty details of retrieving an OpenGL
context. It provides some virtual methods to know when the OpenGL context
is available and is not available within this element.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<virtual-method name="gl_start" version="1.24">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h">called in the GL thread to setup the element GL state.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h">whether the start was successful</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="mix" transfer-ownership="none">
<type name="GLBaseMixer" c:type="GstGLBaseMixer*"/>
</instance-parameter>
</parameters>
</virtual-method>
<virtual-method name="gl_stop" version="1.24">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h">called in the GL thread to setup the element GL state.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="mix" transfer-ownership="none">
<type name="GLBaseMixer" c:type="GstGLBaseMixer*"/>
</instance-parameter>
</parameters>
</virtual-method>
<method name="get_gl_context" c:identifier="gst_gl_base_mixer_get_gl_context" version="1.24">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<return-value transfer-ownership="full" nullable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.c">the #GstGLContext found by @mix</doc>
<type name="GLContext" c:type="GstGLContext*"/>
</return-value>
<parameters>
<instance-parameter name="mix" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.c">a #GstGLBaseMixer</doc>
<type name="GLBaseMixer" c:type="GstGLBaseMixer*"/>
</instance-parameter>
</parameters>
</method>
<property name="context" version="1.24" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.c">The #GstGLContext in use by this #GstGLBaseMixer</doc>
<type name="GLContext"/>
</property>
<field name="parent">
<type name="GstVideo.VideoAggregator" c:type="GstVideoAggregator"/>
</field>
<field name="display">
<type name="GLDisplay" c:type="GstGLDisplay*"/>
</field>
<field name="context">
<type name="GLContext" c:type="GstGLContext*"/>
</field>
<field name="_padding" readable="0" private="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
<field name="priv" readable="0" private="1">
<type name="GLBaseMixerPrivate" c:type="GstGLBaseMixerPrivate*"/>
</field>
</class>
<record name="GLBaseMixerClass" c:type="GstGLBaseMixerClass" glib:is-gtype-struct-for="GLBaseMixer" version="1.24">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<field name="parent_class">
<type name="GstVideo.VideoAggregatorClass" c:type="GstVideoAggregatorClass"/>
</field>
<field name="supported_gl_api">
<type name="GLAPI" c:type="GstGLAPI"/>
</field>
<field name="gl_start">
<callback name="gl_start">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h">whether the start was successful</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="mix" transfer-ownership="none">
<type name="GLBaseMixer" c:type="GstGLBaseMixer*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="gl_stop">
<callback name="gl_stop">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="mix" transfer-ownership="none">
<type name="GLBaseMixer" c:type="GstGLBaseMixer*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="_padding" readable="0" private="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</record>
<class name="GLBaseMixerPad" c:symbol-prefix="gl_base_mixer_pad" c:type="GstGLBaseMixerPad" version="1.24" parent="GstVideo.VideoAggregatorPad" glib:type-name="GstGLBaseMixerPad" glib:get-type="gst_gl_base_mixer_pad_get_type" glib:type-struct="GLBaseMixerPadClass">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<field name="parent">
<type name="GstVideo.VideoAggregatorPad" c:type="GstVideoAggregatorPad"/>
</field>
<field name="_padding" readable="0" private="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</class>
<record name="GLBaseMixerPadClass" c:type="GstGLBaseMixerPadClass" glib:is-gtype-struct-for="GLBaseMixerPad" version="1.24">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<field name="parent_class">
<type name="GstVideo.VideoAggregatorPadClass" c:type="GstVideoAggregatorPadClass"/>
</field>
<field name="_padding" readable="0" private="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</record>
<record name="GLBaseMixerPrivate" c:type="GstGLBaseMixerPrivate" disguised="1">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
</record>
<class name="GLBaseSrc" c:symbol-prefix="gl_base_src" c:type="GstGLBaseSrc" version="1.18" parent="GstBase.PushSrc" abstract="1" glib:type-name="GstGLBaseSrc" glib:get-type="gst_gl_base_src_get_type" glib:type-struct="GLBaseSrcClass">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasesrc.c">#GstGLBaseSrc handles the nitty gritty details of retrieving an OpenGL
context. It also provided some wrappers around #GstBaseSrc's `start()` and
@ -4563,6 +4694,181 @@ mappings between texture formats.</doc>
</array>
</field>
</record>
<class name="GLMixer" c:symbol-prefix="gl_mixer" c:type="GstGLMixer" version="1.24" parent="GLBaseMixer" abstract="1" glib:type-name="GstGLMixer" glib:get-type="gst_gl_mixer_get_type" glib:type-struct="GLMixerClass">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">#GstGLMixer helps implement an element that operates on RGBA textures.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<virtual-method name="process_buffers" version="1.24">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h">Perform operations on the input buffers to produce an
output buffer.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="mix" transfer-ownership="none">
<type name="GLMixer" c:type="GstGLMixer*"/>
</instance-parameter>
<parameter name="outbuf" transfer-ownership="none">
<type name="Gst.Buffer" c:type="GstBuffer*"/>
</parameter>
</parameters>
</virtual-method>
<virtual-method name="process_textures" invoker="process_textures" version="1.24">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">Perform processing required and call #GstGLMixerClass::process_textures().
Intended for use within implementations of
#GstGLMixerClass::process_buffers().</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">whether processing of textures succeeded</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="mix" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">the #GstGLMixer</doc>
<type name="GLMixer" c:type="GstGLMixer*"/>
</instance-parameter>
<parameter name="out_tex" transfer-ownership="none">
<type name="GLMemory" c:type="GstGLMemory*"/>
</parameter>
</parameters>
</virtual-method>
<method name="get_framebuffer" c:identifier="gst_gl_mixer_get_framebuffer" version="1.24">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">(nullable): The #GstGLFramebuffer in use by this @mix</doc>
<type name="GLFramebuffer" c:type="GstGLFramebuffer*"/>
</return-value>
<parameters>
<instance-parameter name="mix" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">the #GstGLMixer</doc>
<type name="GLMixer" c:type="GstGLMixer*"/>
</instance-parameter>
</parameters>
</method>
<method name="process_textures" c:identifier="gst_gl_mixer_process_textures" version="1.24">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">Perform processing required and call #GstGLMixerClass::process_textures().
Intended for use within implementations of
#GstGLMixerClass::process_buffers().</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">whether processing of textures succeeded</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="mix" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">the #GstGLMixer</doc>
<type name="GLMixer" c:type="GstGLMixer*"/>
</instance-parameter>
<parameter name="outbuf" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">output @GstBuffer</doc>
<type name="Gst.Buffer" c:type="GstBuffer*"/>
</parameter>
</parameters>
</method>
<field name="parent">
<type name="GLBaseMixer" c:type="GstGLBaseMixer"/>
</field>
<field name="out_caps">
<type name="Gst.Caps" c:type="GstCaps*"/>
</field>
<field name="priv" readable="0" private="1">
<type name="GLMixerPrivate" c:type="GstGLMixerPrivate*"/>
</field>
<field name="_padding" readable="0" private="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</class>
<record name="GLMixerClass" c:type="GstGLMixerClass" glib:is-gtype-struct-for="GLMixer" version="1.24">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<field name="parent_class">
<type name="GLBaseMixerClass" c:type="GstGLBaseMixerClass"/>
</field>
<field name="process_buffers">
<callback name="process_buffers">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="mix" transfer-ownership="none">
<type name="GLMixer" c:type="GstGLMixer*"/>
</parameter>
<parameter name="outbuf" transfer-ownership="none">
<type name="Gst.Buffer" c:type="GstBuffer*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="process_textures">
<callback name="process_textures">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">whether processing of textures succeeded</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="mix" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">the #GstGLMixer</doc>
<type name="GLMixer" c:type="GstGLMixer*"/>
</parameter>
<parameter name="out_tex" transfer-ownership="none">
<type name="GLMemory" c:type="GstGLMemory*"/>
</parameter>
</parameters>
</callback>
</field>
<field name="_padding" readable="0" private="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
<method name="add_rgba_pad_templates" c:identifier="gst_gl_mixer_class_add_rgba_pad_templates" version="1.24">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">Adds the default RGBA pad templates to this class. If you have any special
template requirements like a different pad subclass or different supported
caps, you should not call this function and add the pad templates yourself
manually.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="klass" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.c">the #GstGLMixerClass</doc>
<type name="GLMixerClass" c:type="GstGLMixerClass*"/>
</instance-parameter>
</parameters>
</method>
</record>
<class name="GLMixerPad" c:symbol-prefix="gl_mixer_pad" c:type="GstGLMixerPad" version="1.24" parent="GLBaseMixerPad" glib:type-name="GstGLMixerPad" glib:get-type="gst_gl_mixer_pad_get_type" glib:type-struct="GLMixerPadClass">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<field name="parent">
<type name="GLBaseMixerPad" c:type="GstGLBaseMixerPad"/>
</field>
<field name="current_texture">
<type name="guint" c:type="guint"/>
</field>
<field name="_padding" readable="0" private="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</class>
<record name="GLMixerPadClass" c:type="GstGLMixerPadClass" glib:is-gtype-struct-for="GLMixerPad" version="1.24">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<field name="parent_class">
<type name="GLBaseMixerPadClass" c:type="GstGLBaseMixerPadClass"/>
</field>
<field name="_padding" readable="0" private="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</record>
<record name="GLMixerPrivate" c:type="GstGLMixerPrivate" disguised="1">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
</record>
<class name="GLOverlayCompositor" c:symbol-prefix="gl_overlay_compositor" c:type="GstGLOverlayCompositor" parent="Gst.Object" glib:type-name="GstGLOverlayCompositor" glib:get-type="gst_gl_overlay_compositor_get_type" glib:type-struct="GLOverlayCompositorClass">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstgloverlaycompositor.h">Opaque #GstGLOverlayCompositor object</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstgloverlaycompositor.h"/>
@ -9162,6 +9468,48 @@ user-defined purposes.</doc>
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_BASE_MIXER" c:identifier="GST_GL_BASE_MIXER" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_BASE_MIXER_CLASS" c:identifier="GST_GL_BASE_MIXER_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_BASE_MIXER_GET_CLASS" c:identifier="GST_GL_BASE_MIXER_GET_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_BASE_MIXER_PAD" c:identifier="GST_GL_BASE_MIXER_PAD" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_BASE_MIXER_PAD_CLASS" c:identifier="GST_GL_BASE_MIXER_PAD_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_BASE_MIXER_PAD_GET_CLASS" c:identifier="GST_GL_BASE_MIXER_PAD_GET_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_BASE_SRC" c:identifier="GST_GL_BASE_SRC" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasesrc.h"/>
<parameters>
@ -9507,6 +9855,48 @@ e.g. for `CONFIG_ID`: `GST_GL_CONFIG_ATTRIB_NAME (CONFIG_ID)`</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmemory.h"/>
<type name="utf8" c:type="gchar*"/>
</constant>
<function-macro name="GL_MIXER" c:identifier="GST_GL_MIXER" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_MIXER_CLASS" c:identifier="GST_GL_MIXER_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_MIXER_GET_CLASS" c:identifier="GST_GL_MIXER_GET_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_MIXER_PAD" c:identifier="GST_GL_MIXER_PAD" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_MIXER_PAD_CLASS" c:identifier="GST_GL_MIXER_PAD_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_MIXER_PAD_GET_CLASS" c:identifier="GST_GL_MIXER_PAD_GET_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="GL_OVERLAY_COMPOSITOR" c:identifier="GST_GL_OVERLAY_COMPOSITOR" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstgloverlaycompositor.h"/>
<parameters>
@ -9748,6 +10138,34 @@ e.g. for `CONFIG_ID`: `GST_GL_CONFIG_ATTRIB_NAME (CONFIG_ID)`</doc>
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_GL_BASE_MIXER" c:identifier="GST_IS_GL_BASE_MIXER" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_GL_BASE_MIXER_CLASS" c:identifier="GST_IS_GL_BASE_MIXER_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_GL_BASE_MIXER_PAD" c:identifier="GST_IS_GL_BASE_MIXER_PAD" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_GL_BASE_MIXER_PAD_CLASS" c:identifier="GST_IS_GL_BASE_MIXER_PAD_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasemixer.h"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_GL_BASE_SRC" c:identifier="GST_IS_GL_BASE_SRC" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasesrc.h"/>
<parameters>
@ -9881,6 +10299,34 @@ e.g. for `CONFIG_ID`: `GST_GL_CONFIG_ATTRIB_NAME (CONFIG_ID)`</doc>
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_GL_MIXER" c:identifier="GST_IS_GL_MIXER" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_GL_MIXER_CLASS" c:identifier="GST_IS_GL_MIXER_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_GL_MIXER_PAD" c:identifier="GST_IS_GL_MIXER_PAD" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<parameters>
<parameter name="obj">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_GL_MIXER_PAD_CLASS" c:identifier="GST_IS_GL_MIXER_PAD_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmixer.h"/>
<parameters>
<parameter name="klass">
</parameter>
</parameters>
</function-macro>
<function-macro name="IS_GL_OVERLAY_COMPOSITOR" c:identifier="GST_IS_GL_OVERLAY_COMPOSITOR" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstgloverlaycompositor.h"/>
<parameters>

View file

@ -10041,7 +10041,7 @@
"GstGLBaseMemoryError",
"GstGLBaseMemoryTransfer",
"GstGLBaseMixer",
"GstGLBaseMixer:context",
"GstGLBaseMixerClass",
"GstGLBaseMixerPad",
"GstGLBaseSrc",
"GstGLBaseSrc.context",
@ -10311,7 +10311,9 @@
"GstGLMixerBinStartTimeSelection::first",
"GstGLMixerBinStartTimeSelection::set",
"GstGLMixerBinStartTimeSelection::zero",
"GstGLMixerClass",
"GstGLMixerPad",
"GstGLMixerPadClass",
"GstGLMosaic",
"GstGLMosaic!sink_%u",
"GstGLMosaic!src",

View file

@ -6882,43 +6882,6 @@
}
]
},
"GstGLBaseMixer": {
"hierarchy": [
"GstGLBaseMixer",
"GstVideoAggregator",
"GstAggregator",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"kind": "object",
"properties": {
"context": {
"blurb": "Get OpenGL context",
"conditionally-available": false,
"construct": false,
"construct-only": false,
"controllable": false,
"mutable": "null",
"readable": true,
"type": "GstGLContext",
"writable": false
}
}
},
"GstGLBaseMixerPad": {
"hierarchy": [
"GstGLBaseMixerPad",
"GstVideoAggregatorPad",
"GstAggregatorPad",
"GstPad",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"kind": "object"
},
"GstGLDeinterlaceMethod": {
"kind": "enum",
"values": [
@ -7047,19 +7010,6 @@
}
]
},
"GstGLMixer": {
"hierarchy": [
"GstGLMixer",
"GstGLBaseMixer",
"GstVideoAggregator",
"GstAggregator",
"GstElement",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"kind": "object"
},
"GstGLMixerBinStartTimeSelection": {
"kind": "enum",
"values": [
@ -7080,21 +7030,6 @@
}
]
},
"GstGLMixerPad": {
"hierarchy": [
"GstGLMixerPad",
"GstGLBaseMixerPad",
"GstVideoAggregatorPad",
"GstAggregatorPad",
"GstPad",
"GstObject",
"GInitiallyUnowned",
"GObject"
],
"kind": "object",
"properties": {},
"signals": {}
},
"GstGLRotateMethod": {
"kind": "enum",
"values": [

View file

@ -88,8 +88,6 @@ gst_gl_base_mixer_pad_class_init (GstGLBaseMixerPadClass * klass)
vaggpad_class->prepare_frame = NULL;
vaggpad_class->clean_frame = NULL;
gst_type_mark_as_plugin_api (GST_TYPE_GL_BASE_MIXER_PAD, 0);
}
static void
@ -385,6 +383,13 @@ gst_gl_base_mixer_class_init (GstGLBaseMixerClass * klass)
klass->gl_start = gst_gl_base_mixer_default_gl_start;
klass->gl_stop = gst_gl_base_mixer_default_gl_stop;
/**
* GstGLBaseMixer:context:
*
* The #GstGLContext in use by this #GstGLBaseMixer
*
* Since: 1.24
*/
g_object_class_install_property (gobject_class, PROP_CONTEXT,
g_param_spec_object ("context",
"OpenGL context",
@ -395,8 +400,6 @@ gst_gl_base_mixer_class_init (GstGLBaseMixerClass * klass)
g_type_class_ref (GST_TYPE_GL_BASE_MIXER_PAD);
klass->supported_gl_api = GST_GL_API_ANY;
gst_type_mark_as_plugin_api (GST_TYPE_GL_BASE_MIXER, 0);
}
static void

View file

@ -43,15 +43,44 @@ G_BEGIN_DECLS
typedef struct _GstGLBaseMixerPad GstGLBaseMixerPad;
typedef struct _GstGLBaseMixerPadClass GstGLBaseMixerPadClass;
/* all information needed for one video stream */
/**
* GstGLBaseMixerPad:
*
* Since: 1.24
*/
struct _GstGLBaseMixerPad
{
GstVideoAggregatorPad parent; /* subclass the pad */
/**
* GstGLBaseMixerPad.parent:
*
* parent #GstVideoAggregatorPad
*
* Since: 1.24
*/
GstVideoAggregatorPad parent;
/*< private >*/
gpointer _padding[GST_PADDING];
};
/**
* GstGLBaseMixerPadClass:
*
* Since: 1.24
*/
struct _GstGLBaseMixerPadClass
{
/**
* GstGLBaseMixerPadClass.parent_class:
*
* parent #GstVideoAggregatorPadClass
*
* Since: 1.24
*/
GstVideoAggregatorPadClass parent_class;
/*< private >*/
gpointer _padding[GST_PADDING];
};
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstGLBaseMixerPad, gst_object_unref);
@ -75,26 +104,89 @@ typedef struct _GstGLBaseMixer GstGLBaseMixer;
typedef struct _GstGLBaseMixerClass GstGLBaseMixerClass;
typedef struct _GstGLBaseMixerPrivate GstGLBaseMixerPrivate;
/**
* GstGLBaseMixer:
*
* Since: 1.24
*/
struct _GstGLBaseMixer
{
GstVideoAggregator vaggregator;
/**
* GstGLBaseMixer.parent:
*
* parent #GstVideoAggregator
*
* Since: 1.24
*/
GstVideoAggregator parent;
/**
* GstGLBaseMixer.display:
*
* the currently configured #GstGLDisplay
*
* Since: 1.24
*/
GstGLDisplay *display;
/**
* GstGLBaseMixer.context:
*
* the currently configured #GstGLContext
*
* Since: 1.24
*/
GstGLContext *context;
/*< private >*/
gpointer _padding[GST_PADDING];
GstGLBaseMixerPrivate *priv;
};
/**
* GstGLBaseMixerClass:
*
* Since: 1.24
*/
struct _GstGLBaseMixerClass
{
/**
* GstGLBaseMixerClass.parent_class:
*
* the parent #GstVideoAggregatorClass
*
* Since: 1.24
*/
GstVideoAggregatorClass parent_class;
/**
* GstGLBaseMixerClass.supported_gl_api:
*
* the logical-OR of #GstGLAPI's supported by this element
*
* Since: 1.24
*/
GstGLAPI supported_gl_api;
/**
* GstGLBaseMixerClass::gl_start:
*
* called in the GL thread to setup the element GL state.
*
* Returns: whether the start was successful
*
* Since: 1.24
*/
gboolean (*gl_start) (GstGLBaseMixer * mix);
/**
* GstGLBaseMixerClass::gl_stop:
*
* called in the GL thread to setup the element GL state.
*
* Since: 1.24
*/
void (*gl_stop) (GstGLBaseMixer * mix);
/*< private >*/
gpointer _padding[GST_PADDING];
};

View file

@ -466,9 +466,6 @@ gst_gl_mixer_class_init (GstGLMixerClass * klass)
/* Register the pad class */
g_type_class_ref (GST_TYPE_GL_MIXER_PAD);
gst_type_mark_as_plugin_api (GST_TYPE_GL_MIXER_PAD, 0);
gst_type_mark_as_plugin_api (GST_TYPE_GL_MIXER, 0);
}
static void
@ -673,6 +670,19 @@ context_error:
}
}
/**
* gst_gl_mixer_process_textures:
* @mix: the #GstGLMixer
* @outbuf: output @GstBuffer
*
* Perform processing required and call #GstGLMixerClass::process_textures().
* Intended for use within implementations of
* #GstGLMixerClass::process_buffers().
*
* Returns: whether processing of textures succeeded
*
* Since: 1.24
*/
gboolean
gst_gl_mixer_process_textures (GstGLMixer * mix, GstBuffer * outbuf)
{

View file

@ -46,17 +46,53 @@ typedef struct _GstGLMixerPrivate GstGLMixerPrivate;
typedef struct _GstGLMixerPad GstGLMixerPad;
typedef struct _GstGLMixerPadClass GstGLMixerPadClass;
/* all information needed for one video stream */
/**
* GstGLMixerPad:
*
* Since: 1.24
*/
struct _GstGLMixerPad
{
/**
* GstGLMixerPad.parent:
*
* parent #GstGLBaseMixerPad
*
* Since: 1.24
*/
GstGLBaseMixerPad parent;
/**
* GstGLMixerPad.current_texture:
*
* the current input texture for this pad
*
* Since: 1.24
*/
guint current_texture;
/*< private >*/
gpointer _padding[GST_PADDING];
};
/**
* GstGLMixerPadClass:
*
* Since: 1.24
*/
struct _GstGLMixerPadClass
{
/**
* GstGLMixerPadClass.parent_class:
*
* parent #GstGLBaseMixerPadClass
*
* Since: 1.24
*/
GstGLBaseMixerPadClass parent_class;
/*< private >*/
gpointer _padding[GST_PADDING];
};
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstGLMixerPad, gst_object_unref);
@ -76,24 +112,71 @@ GType gst_gl_mixer_pad_get_type (void);
#define GST_GL_MIXER_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS((obj),GST_TYPE_GL_MIXER,GstGLMixerClass))
typedef gboolean (*GstGLMixerProcessFunc) (GstGLMixer *mix, GstBuffer *outbuf);
typedef gboolean (*GstGLMixerProcessTextures) (GstGLMixer *mix, GstGLMemory *out_tex);
/**
* GstGLMixer:
*
* Since: 1.24
*/
struct _GstGLMixer
{
GstGLBaseMixer vaggregator;
/**
* GstGLMixer.parent:
*
* Since: 1.24
*/
GstGLBaseMixer parent;
/**
* GstGLMixer.out_caps:
*
* the configured output #GstCaps
*
* Since: 1.24
*/
GstCaps *out_caps;
/*< private >*/
GstGLMixerPrivate *priv;
/*< private >*/
gpointer _padding[GST_PADDING];
};
/**
* GstGLMixerClass:
*
* Since: 1.24
*/
struct _GstGLMixerClass
{
/**
* GstGLMixerClass.parent_class:
*
* Since: 1.24
*/
GstGLBaseMixerClass parent_class;
GstGLMixerProcessFunc process_buffers;
GstGLMixerProcessTextures process_textures;
/**
* GstGLMixerClass::process_buffers:
*
* Perform operations on the input buffers to produce an
* output buffer.
*
* Since: 1.24
*/
gboolean (*process_buffers) (GstGLMixer * mix, GstBuffer *outbuf);
/**
* GstGLMixerClass::process_textures:
*
* perform operations with the input and output buffers mapped
* as textures. Will not be called if @process_buffers is overriden.
*
* Since: 1.24
*/
gboolean (*process_textures) (GstGLMixer * mix, GstGLMemory *out_tex);
/*< private >*/
gpointer _padding[GST_PADDING];
};
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstGLMixer, gst_object_unref);