## GstGLFilter

GstGLFilter

## Functions

void | gst_gl_filter_draw_texture ()
void | gst_gl_filter_render_to_target ()
void | gst_gl_filter_render_to_target_with_shader ()
gboolean | gst_gl_filter_filter_texture ()

## Properties

GstGLContext * | other-context | Read / Write

## Types and Values

struct | GstGLFilter
struct | GstGLFilterClass

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GstObject
                ╰── GstElement
                    ╰── GstBaseTransform
                        ╰── GstGLFilter

## Description

## Functions

### gst_gl_filter_draw_texture ()

    void
    gst_gl_filter_draw_texture (GstGLFilter *filter,
                                GLuint texture,
                                guint width,
                                guint height);

Draws `texture` into the OpenGL scene at the specified `width` and `height` .

#### Parameters

filter | a GstGLFilter |
texture | the texture to draw |
width | width of `texture` |
height | height of texture |

### gst_gl_filter_render_to_target ()

    void
    gst_gl_filter_render_to_target (GstGLFilter *filter,
                                    gboolean resize,
                                    GLuint input,
                                    GLuint target,
                                    GLCB func,
                                    gpointer data);

Transforms `input` into `output` using `func` on through FBO. `resize` should only ever be `TRUE` whenever `input` is the input texture of `filter` .

#### Parameters

filter | a GstGLFilter |
resize | whether to automatically resize the texture between the input size and the output size |
input | the input texture |
target | the output texture |
func | the function to transform `input` into `output` . called with `data` |
data | the data associated with `func` |

### gst_gl_filter_render_to_target_with_shader ()

    void
    gst_gl_filter_render_to_target_with_shader
                                   (GstGLFilter *filter,
                                    gboolean resize,
                                    GLuint input,
                                    GLuint target,
                                    GstGLShader *shader);

Transforms `input` into `output` using `shader` on FBO. `resize` should only ever be `TRUE` whenever `input` is the input texture of `filter` .

See also: `gst_gl_filter_render_to_target()`

#### Parameters

filter | a GstGLFilter |
resize | whether to automatically resize the texture between the input size and the output size |
input | the input texture |
target | the output texture |
shader | the shader to use. |

### gst_gl_filter_filter_texture ()

    gboolean
    gst_gl_filter_filter_texture (GstGLFilter *filter,
                                  GstBuffer *inbuf,
                                  GstBuffer *outbuf);

Perform automatic upload if needed, call filter_texture vfunc and then an automatic download if needed.

#### Parameters

filter | a GstGLFilter |
inbuf | an input buffer |
outbuf | an output buffer |

#### Returns

whether the transformation succeeded

## Types and Values

### struct GstGLFilter

    struct GstGLFilter;

GstGLFilter is a base class that provides the logic of getting the GL context from downstream and automatic upload/download for non-GstGLMemory GstBuffers.

#### Members

### struct GstGLFilterClass

    struct GstGLFilterClass {
      GstBaseTransformClass base_transform_class;

      gboolean (*set_caps)          (GstGLFilter* filter, GstCaps* incaps, GstCaps* outcaps);
      gboolean (*filter)            (GstGLFilter *filter, GstBuffer *inbuf, GstBuffer *outbuf);
      gboolean (*filter_texture)    (GstGLFilter *filter, guint in_tex, guint out_tex);
      gboolean (*onInitFBO)         (GstGLFilter *filter);

      void (*onStart)               (GstGLFilter *filter);
      void (*onStop)                (GstGLFilter *filter);
      void (*onReset)               (GstGLFilter *filter);

      /* useful to init and cleanup custom gl resources */
      void (*display_init_cb)       (GstGLFilter *filter);
      void (*display_reset_cb)      (GstGLFilter *filter);
    };

#### Members

GstBaseTransformClass `base_transform_class`; | parent class |
`set_caps` () | mirror from GstBaseTransform |
`filter` () | perform operations on the input and output buffers. In general, you should avoid using this method if at all possible. One valid use-case for using this is keeping previous buffers for future calculations. Note: If `filter` exists, then `filter_texture` is not run |
`filter_texture` () | given `in_tex` , transform it into `out_tex` . Not used if `filter` exists |
`onInitFBO` () | perform initialization when the Framebuffer object is created |
`onStart` () | called when element activates see also GstBaseTransform |
`onStop` () | called when the element deactivates e also GstBaseTransform |
`onReset` () | called on inizialation and after `onStop` |
`display_init_cb` () | execute arbitrary gl code on start |
`display_reset_cb` () | execute arbitrary gl code at stop |

## Property Details

### The `“other-context”` property

      “other-context”            GstGLContext *

Give an external OpenGL context with which to share textures.

Flags: Read / Write