| Top |  |  |  |  | 
Transforms video on the GPU.
| 1 | gst-launch-1.0 gltestsrc ! gltransformation rotation-z=45 ! glimagesink | 
A pipeline to rotate by 45 degrees
| 1 | gst-launch-1.0 gltestsrc ! gltransformation translation-x=0.5 ! glimagesink | 
Translate the video by 0.5
| 1 | gst-launch-1.0 gltestsrc ! gltransformation scale-y=0.5 scale-x=0.5 ! glimagesink | 
Resize the video by 0.5
| 1 | gst-launch-1.0 gltestsrc ! gltransformation rotation-x=-45 ortho=True ! glimagesink | 
Rotate the video around the X-Axis by -45° with an orthographic projection
struct GstGLTransformation {
    GstGLFilter filter;
    GstGLShader *shader;
    GLuint       vao;
    GLuint       vbo_indices;
    GLuint       vertex_buffer;
    GLint        attr_position;
    GLint        attr_texture;
    GstGLMemory *in_tex;
    GstGLMemory *out_tex;
    gfloat xrotation;
    gfloat yrotation;
    gfloat zrotation;
    gfloat xscale;
    gfloat yscale;
    gfloat xtranslation;
    gfloat ytranslation;
    gfloat ztranslation;
    gfloat xpivot;
    gfloat ypivot;
    gfloat zpivot;
    /* perspective */
    gfloat fov;
    gfloat aspect;
    gfloat znear;
    gfloat zfar;
    gboolean ortho;
    graphene_matrix_t model_matrix;
    graphene_matrix_t view_matrix;
    graphene_matrix_t projection_matrix;
    graphene_matrix_t inv_model_matrix;
    graphene_matrix_t inv_view_matrix;
    graphene_matrix_t inv_projection_matrix;
    graphene_matrix_t mvp_matrix;
    graphene_vec3_t camera_position;
    gboolean downstream_supports_affine_meta;
    gboolean caps_change;
};