## GstGLDisplay GstGLDisplay |

## Synopsis

    enum                GstGLDisplayConversion;
    enum                GstGLDisplayProjection;
    void                (*CRCB)                             (GLuint Param1,
                                                             GLuint Param2,
                                                             gpointer Param3);
    gboolean            (*CDCB)                             (GLuint Param1,
                                                             GLuint Param2,
                                                             GLuint Param3,
                                                             gpointer Param4);
    void                (*GstGLDisplayThreadFunc)           (GstGLDisplay *display,
                                                             gpointer data);
    void                (*GLCB)                             (gint Param1,
                                                             gint Param2,
                                                             guint Param3,
                                                             gpointer stuff);
    struct              GstGLDisplay;
    GstGLDisplay *      gst_gl_display_new                  (void);
    gboolean            gst_gl_display_create_context       (GstGLDisplay *display,
                                                             gulong external_gl_context);
    gboolean            gst_gl_display_redisplay            (GstGLDisplay *display,
                                                             GLuint texture,
                                                             gint gl_width,
                                                             gint gl_height,
                                                             gint window_width,
                                                             gint window_height,
                                                             gboolean keep_aspect_ratio);
    void                gst_gl_display_thread_add           (GstGLDisplay *display,
                                                             GstGLDisplayThreadFunc func,
                                                             gpointer data);
    void                gst_gl_display_gen_texture          (GstGLDisplay *display,
                                                             GLuint *pTexture,
                                                             GLint width,
                                                             GLint height);
    void                gst_gl_display_del_texture          (GstGLDisplay *display,
                                                             GLuint texture,
                                                             GLint width,
                                                             GLint height);
    gboolean            gst_gl_display_init_upload          (GstGLDisplay *display,
                                                             GstVideoFormat video_format,
                                                             guint gl_width,
                                                             guint gl_height,
                                                             gint video_width,
                                                             gint video_height);
    gboolean            gst_gl_display_do_upload            (GstGLDisplay *display,
                                                             GLuint texture,
                                                             gint data_width,
                                                             gint data_height,
                                                             gpointer data);
    gboolean            gst_gl_display_init_download        (GstGLDisplay *display,
                                                             GstVideoFormat video_format,
                                                             gint width,
                                                             gint height);
    gboolean            gst_gl_display_do_download          (GstGLDisplay *display,
                                                             GLuint texture,
                                                             gint width,
                                                             gint height,
                                                             gpointer data);
    gboolean            gst_gl_display_gen_fbo              (GstGLDisplay *display,
                                                             gint width,
                                                             gint height,
                                                             GLuint *fbo,
                                                             GLuint *depthbuffer);
    gboolean            gst_gl_display_use_fbo              (GstGLDisplay *display,
                                                             gint texture_fbo_width,
                                                             gint texture_fbo_height,
                                                             GLuint fbo,
                                                             GLuint depth_buffer,
                                                             GLuint texture_fbo,
                                                             GLCB cb,
                                                             gint input_texture_width,
                                                             gint input_texture_height,
                                                             GLuint input_texture,
                                                             gdouble proj_param1,
                                                             gdouble proj_param2,
                                                             gdouble proj_param3,
                                                             gdouble proj_param4,
                                                             GstGLDisplayProjection projection,
                                                             gpointer *stuff);
    void                gst_gl_display_del_fbo              (GstGLDisplay *display,
                                                             GLuint fbo,
                                                             GLuint depth_buffer);
    gboolean            gst_gl_display_gen_shader           (GstGLDisplay *display,
                                                             const gchar *shader_vertex_source,
                                                             const gchar *shader_fragment_source,
                                                             GstGLShader **shader);
    void                gst_gl_display_del_shader           (GstGLDisplay *display,
                                                             GstGLShader *shader);
    void                gst_gl_display_set_window_id        (GstGLDisplay *display,
                                                             gulong window_id);
    void                gst_gl_display_set_client_reshape_callback
                                                            (GstGLDisplay *display,
                                                             CRCB cb);
    void                gst_gl_display_set_client_draw_callback
                                                            (GstGLDisplay *display,
                                                             CDCB cb);

## Object Hierarchy

      GObject
       +----GstGLDisplay

## Description

## Details

### enum GstGLDisplayConversion

    typedef enum {
      GST_GL_DISPLAY_CONVERSION_GLSL,       //ARB_fragment_shade
      GST_GL_DISPLAY_CONVERSION_MATRIX,     //ARB_imaging
      GST_GL_DISPLAY_CONVERSION_MESA,       //MESA_ycbcr_texture
    } GstGLDisplayConversion;

### enum GstGLDisplayProjection

    typedef enum {
      GST_GL_DISPLAY_PROJECTION_ORTHO2D,
      GST_GL_DISPLAY_PROJECTION_PERSPECTIVE
    } GstGLDisplayProjection;

### CRCB ()

    void                (*CRCB)                             (GLuint Param1,
                                                             GLuint Param2,
                                                             gpointer Param3);

### CDCB ()

    gboolean            (*CDCB)                             (GLuint Param1,
                                                             GLuint Param2,
                                                             GLuint Param3,
                                                             gpointer Param4);

### GstGLDisplayThreadFunc ()

    void                (*GstGLDisplayThreadFunc)           (GstGLDisplay *display,
                                                             gpointer data);

### GLCB ()

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

### struct GstGLDisplay

    struct GstGLDisplay;

### gst_gl_display_new ()

    GstGLDisplay *      gst_gl_display_new                  (void);

### gst_gl_display_create_context ()

    gboolean            gst_gl_display_create_context       (GstGLDisplay *display,
                                                             gulong external_gl_context);

### gst_gl_display_redisplay ()

    gboolean            gst_gl_display_redisplay            (GstGLDisplay *display,
                                                             GLuint texture,
                                                             gint gl_width,
                                                             gint gl_height,
                                                             gint window_width,
                                                             gint window_height,
                                                             gboolean keep_aspect_ratio);

### gst_gl_display_thread_add ()

    void                gst_gl_display_thread_add           (GstGLDisplay *display,
                                                             GstGLDisplayThreadFunc func,
                                                             gpointer data);

### gst_gl_display_gen_texture ()

    void                gst_gl_display_gen_texture          (GstGLDisplay *display,
                                                             GLuint *pTexture,
                                                             GLint width,
                                                             GLint height);

### gst_gl_display_del_texture ()

    void                gst_gl_display_del_texture          (GstGLDisplay *display,
                                                             GLuint texture,
                                                             GLint width,
                                                             GLint height);

### gst_gl_display_init_upload ()

    gboolean            gst_gl_display_init_upload          (GstGLDisplay *display,
                                                             GstVideoFormat video_format,
                                                             guint gl_width,
                                                             guint gl_height,
                                                             gint video_width,
                                                             gint video_height);

### gst_gl_display_do_upload ()

    gboolean            gst_gl_display_do_upload            (GstGLDisplay *display,
                                                             GLuint texture,
                                                             gint data_width,
                                                             gint data_height,
                                                             gpointer data);

### gst_gl_display_init_download ()

    gboolean            gst_gl_display_init_download        (GstGLDisplay *display,
                                                             GstVideoFormat video_format,
                                                             gint width,
                                                             gint height);

### gst_gl_display_do_download ()

    gboolean            gst_gl_display_do_download          (GstGLDisplay *display,
                                                             GLuint texture,
                                                             gint width,
                                                             gint height,
                                                             gpointer data);

### gst_gl_display_gen_fbo ()

    gboolean            gst_gl_display_gen_fbo              (GstGLDisplay *display,
                                                             gint width,
                                                             gint height,
                                                             GLuint *fbo,
                                                             GLuint *depthbuffer);

### gst_gl_display_use_fbo ()

    gboolean            gst_gl_display_use_fbo              (GstGLDisplay *display,
                                                             gint texture_fbo_width,
                                                             gint texture_fbo_height,
                                                             GLuint fbo,
                                                             GLuint depth_buffer,
                                                             GLuint texture_fbo,
                                                             GLCB cb,
                                                             gint input_texture_width,
                                                             gint input_texture_height,
                                                             GLuint input_texture,
                                                             gdouble proj_param1,
                                                             gdouble proj_param2,
                                                             gdouble proj_param3,
                                                             gdouble proj_param4,
                                                             GstGLDisplayProjection projection,
                                                             gpointer *stuff);

### gst_gl_display_del_fbo ()

    void                gst_gl_display_del_fbo              (GstGLDisplay *display,
                                                             GLuint fbo,
                                                             GLuint depth_buffer);

### gst_gl_display_gen_shader ()

    gboolean            gst_gl_display_gen_shader           (GstGLDisplay *display,
                                                             const gchar *shader_vertex_source,
                                                             const gchar *shader_fragment_source,
                                                             GstGLShader **shader);

### gst_gl_display_del_shader ()

    void                gst_gl_display_del_shader           (GstGLDisplay *display,
                                                             GstGLShader *shader);

### gst_gl_display_set_window_id ()

    void                gst_gl_display_set_window_id        (GstGLDisplay *display,
                                                             gulong window_id);

### gst_gl_display_set_client_reshape_callback ()

    void                gst_gl_display_set_client_reshape_callback
                                                            (GstGLDisplay *display,
                                                             CRCB cb);

### gst_gl_display_set_client_draw_callback ()

    void                gst_gl_display_set_client_draw_callback
                                                            (GstGLDisplay *display,
                                                             CDCB cb);