## OpenGL Miscellaneous Utilities

OpenGL Miscellaneous Utilities

## Functions

void | (*GLCB) ()
void | (*GLCB_V2) ()
gboolean | (*CDCB) ()
gboolean | gst_gl_handle_set_context ()
gboolean | gst_gl_handle_context_query ()
void | gst_gl_context_gen_texture ()
void | gst_gl_context_del_texture ()
gboolean | gst_gl_context_gen_fbo ()
void | gst_gl_context_del_fbo ()
gboolean | gst_gl_context_use_fbo_v2 ()
gboolean | gst_gl_context_gen_shader ()
void | gst_gl_context_del_shader ()
gboolean | gst_gl_context_check_framebuffer_status ()
void | gst_gl_context_set_error ()
gchar * | gst_gl_context_get_error ()
void | gst_gl_context_clear_shader ()
void | gst_gl_generate_texture_full ()
GstCaps * | gst_gl_caps_replace_all_caps_features ()
gboolean | gst_gl_ensure_element_data ()
gsize | gst_gl_get_plane_data_size ()
gsize | gst_gl_get_plane_start ()
gboolean | gst_gl_run_query ()
GstGLTextureTarget | gst_gl_value_get_texture_target_mask ()
gboolean | gst_gl_value_set_texture_target ()
gboolean | gst_gl_value_set_texture_target_from_mask ()

## Types and Values

enum | GstGLDisplayProjection

## Description

## Functions

### GLCB ()

    void
    (*GLCB) (gint Param1,
             gint Param2,
             guint Param3,
             gpointer stuff);

callback definition for operating on textures

#### Parameters

width | the width |
height | the height |
texture | texture |
stuff | user data |

### GLCB_V2 ()

    void
    (*GLCB_V2) (gpointer stuff);

callback definition for operating through a Framebuffer object

#### Parameters

stuff | user data |

### CDCB ()

    gboolean
    (*CDCB) (GLuint texture,
             GLuint width,
             GLuint height,
             gpointer data);

client draw callback

#### Parameters

texture | texture to draw |
width | new width |
height | new height: |
data | user data |

### gst_gl_handle_set_context ()

    gboolean
    gst_gl_handle_set_context (GstElement *element,
                               GstContext *context,
                               GstGLDisplay **display,
                               GstGLContext **other_context);

### gst_gl_handle_context_query ()

    gboolean
    gst_gl_handle_context_query (GstElement *element,
                                 GstQuery *query,
                                 GstGLDisplay **display,
                                 GstGLContext **other_context);

### gst_gl_context_gen_texture ()

    void
    gst_gl_context_gen_texture (GstGLContext *context,
                                GLuint *pTexture,
                                GstVideoFormat v_format,
                                GLint width,
                                GLint height);

### gst_gl_context_del_texture ()

    void
    gst_gl_context_del_texture (GstGLContext *context,
                                GLuint *pTexture);

### gst_gl_context_gen_fbo ()

    gboolean
    gst_gl_context_gen_fbo (GstGLContext *context,
                            gint width,
                            gint height,
                            GLuint *fbo,
                            GLuint *depthbuffer);

### gst_gl_context_del_fbo ()

    void
    gst_gl_context_del_fbo (GstGLContext *context,
                            GLuint fbo,
                            GLuint depth_buffer);

### gst_gl_context_use_fbo_v2 ()

    gboolean
    gst_gl_context_use_fbo_v2 (GstGLContext *context,
                               gint texture_fbo_width,
                               gint texture_fbo_height,
                               GLuint fbo,
                               GLuint depth_buffer,
                               GLuint texture_fbo,
                               GLCB_V2 cb,
                               gpointer stuff);

### gst_gl_context_gen_shader ()

    gboolean
    gst_gl_context_gen_shader (GstGLContext *context,
                               const gchar *shader_vertex_source,
                               const gchar *shader_fragment_source,
                               GstGLShader **shader);

### gst_gl_context_del_shader ()

    void
    gst_gl_context_del_shader (GstGLContext *context,
                               GstGLShader *shader);

### gst_gl_context_check_framebuffer_status ()

    gboolean
    gst_gl_context_check_framebuffer_status
                                   (GstGLContext *context);

### gst_gl_context_set_error ()

    void
    gst_gl_context_set_error (GstGLContext *context,
                              const char *format,
                              ...);

### gst_gl_context_get_error ()

    gchar *
    gst_gl_context_get_error (void);

### gst_gl_context_clear_shader ()

    void
    gst_gl_context_clear_shader (GstGLContext *context);

Clear's the currently set shader from the GL state machine.

Note: must be called in the GL thread.

#### Parameters

context | a GstGLContext |

### gst_gl_generate_texture_full ()

    void
    gst_gl_generate_texture_full (GstGLContext *context,
                                  const GstVideoInfo *info,
                                  const guint comp,
                                  gint stride[],
                                  gsize offset[],
                                  gsize size[],
                                  GLuint *pTexture);

### gst_gl_caps_replace_all_caps_features ()

    GstCaps *
    gst_gl_caps_replace_all_caps_features (const GstCaps *caps,
                                           const gchar *feature_name);

### gst_gl_ensure_element_data ()

    gboolean
    gst_gl_ensure_element_data (gpointer element,
                                GstGLDisplay **display_ptr,
                                GstGLContext **other_context_ptr);

### gst_gl_get_plane_data_size ()

    gsize
    gst_gl_get_plane_data_size (GstVideoInfo *info,
                                GstVideoAlignment *align,
                                guint plane);

### gst_gl_get_plane_start ()

    gsize
    gst_gl_get_plane_start (GstVideoInfo *info,
                            GstVideoAlignment *valign,
                            guint plane);

### gst_gl_run_query ()

    gboolean
    gst_gl_run_query (GstElement *element,
                      GstQuery *query,
                      GstPadDirection direction);

### gst_gl_value_get_texture_target_mask ()

    GstGLTextureTarget
    gst_gl_value_get_texture_target_mask (const GValue *value);

See `gst_gl_value_set_texture_target_from_mask()` for what entails a mask

#### Parameters

value | an initialized GValue of type G_TYPE_STRING |

#### Returns

the mask of GstGLTextureTarget's in `value`

### gst_gl_value_set_texture_target ()

    gboolean
    gst_gl_value_set_texture_target (GValue *value,
                                     GstGLTextureTarget target);

#### Parameters

value | an initialized GValue of type G_TYPE_STRING |
target | a GstGLTextureTarget's |

#### Returns

whether the `target` could be set on `value`

### gst_gl_value_set_texture_target_from_mask ()

    gboolean
    gst_gl_value_set_texture_target_from_mask
                                   (GValue *value,
                                    GstGLTextureTarget target_mask);

A mask is a bitwise OR of (1 << target) where target is a valid GstGLTextureTarget

#### Parameters

value | an uninitialized GValue |
target_mask | a bitwise mask of GstGLTextureTarget's |

#### Returns

whether the `target_mask` could be set on `value`

## Types and Values

### enum GstGLDisplayProjection

#### Members

GST_GL_DISPLAY_PROJECTION_ORTHO2D |  |
GST_GL_DISPLAY_PROJECTION_PERSPECTIVE |  |