[298/906] Revert "Fix indention"
authorDavid Schleef <ds@schleef.org>
Wed, 11 Feb 2009 05:57:31 +0000 (21:57 -0800)
committerMatthew Waters <ystreet00@gmail.com>
Sat, 15 Mar 2014 17:36:32 +0000 (18:36 +0100)
This reverts commit 96e4ab18c2cf9876f6c031b9aba6282d0bd45a93.

You should have asked first.  And you would have been told "no",
because it causes people on development branches to do a huge
amount of extra work.

42 files changed:
gst-libs/gst/gl/gstglbuffer.c
gst-libs/gst/gl/gstgldisplay.c
gst-libs/gst/gl/gstglfilter.c
gst-libs/gst/gl/gstglshader.c
gst-libs/gst/gl/gstglwindow_win32.c
gst-libs/gst/gl/gstglwindow_x11.c
gst/gl/effects/gstgleffectbulge.c
gst/gl/effects/gstgleffectfisheye.c
gst/gl/effects/gstgleffectglow.c
gst/gl/effects/gstgleffectidentity.c
gst/gl/effects/gstgleffectlumatocurve.c
gst/gl/effects/gstgleffectmirror.c
gst/gl/effects/gstgleffectrgbtocurve.c
gst/gl/effects/gstgleffectsin.c
gst/gl/effects/gstgleffectsquare.c
gst/gl/effects/gstgleffectsqueeze.c
gst/gl/effects/gstgleffectssources.c
gst/gl/effects/gstgleffectstretch.c
gst/gl/effects/gstgleffecttunnel.c
gst/gl/effects/gstgleffecttwirl.c
gst/gl/effects/gstgleffectxray.c
gst/gl/gltestsrc.c
gst/gl/gstglbumper.c
gst/gl/gstglcolorscale.c
gst/gl/gstgldifferencematte.c
gst/gl/gstgldownload.c
gst/gl/gstgleffects.c
gst/gl/gstglfilterapp.c
gst/gl/gstglfilterblur.c
gst/gl/gstglfiltercube.c
gst/gl/gstglfilterglass.c
gst/gl/gstglfilterlaplacian.c
gst/gl/gstglfiltersobel.c
gst/gl/gstglimagesink.c
gst/gl/gstglpixbufoverlay.c
gst/gl/gstgltestsrc.c
gst/gl/gstglupload.c
gst/gl/gstopengl.c
tests/examples/clutter/clutteractor.c
tests/examples/clutter/clutteractortee.c
tests/examples/gtk/fxtest/fxtest.c
tests/examples/gtk/fxtest/pixbufdrop.c

index 8df84bb..31e1456 100644 (file)
 
 #include "gstglbuffer.h"
 
-static GObjectClass *gst_gl_buffer_parent_class;
+static GObjectClassgst_gl_buffer_parent_class;
 
 static void
-gst_gl_buffer_finalize (GstGLBuffer * buffer)
+gst_gl_buffer_finalize (GstGLBuffer* buffer)
 {
-  //blocking call, put the texture in the pool
-  gst_gl_display_del_texture (buffer->display, buffer->texture,
+    //blocking call, put the texture in the pool
+    gst_gl_display_del_texture (buffer->display, buffer->texture,
       buffer->width, buffer->height);
 
-  g_object_unref (buffer->display);
+    g_object_unref (buffer->display);
 
-  GST_MINI_OBJECT_CLASS (gst_gl_buffer_parent_class)->finalize (GST_MINI_OBJECT
-      (buffer));
+    GST_MINI_OBJECT_CLASS (gst_gl_buffer_parent_class)->
+           finalize (GST_MINI_OBJECT (buffer));
 }
 
 static void
-gst_gl_buffer_init (GstGLBuffer * buffer, gpointer g_class)
+gst_gl_buffer_init (GstGLBuffer* buffer, gpointer g_class)
 {
-  buffer->display = NULL;
+    buffer->display = NULL;
 
-  buffer->width = 0;
-  buffer->height = 0;
-  buffer->texture = 0;
+    buffer->width = 0;
+    buffer->height = 0;
+    buffer->texture = 0;
 }
 
 static void
 gst_gl_buffer_class_init (gpointer g_class, gpointer class_data)
 {
-  GstMiniObjectClass *mini_object_class = GST_MINI_OBJECT_CLASS (g_class);
+    GstMiniObjectClass* mini_object_class = GST_MINI_OBJECT_CLASS (g_class);
 
-  gst_gl_buffer_parent_class = g_type_class_peek_parent (g_class);
+    gst_gl_buffer_parent_class = g_type_class_peek_parent (g_class);
 
-  mini_object_class->finalize = (GstMiniObjectFinalizeFunction)
-      gst_gl_buffer_finalize;
+    mini_object_class->finalize = (GstMiniObjectFinalizeFunction)
+        gst_gl_buffer_finalize;
 }
 
 
@@ -87,48 +87,47 @@ gst_gl_buffer_get_type (void)
 }
 
 
-GstGLBuffer *
-gst_gl_buffer_new (GstGLDisplay * display, gint gl_width, gint gl_height)
+GstGLBuffer*
+gst_gl_buffer_new (GstGLDisplay* display,
+    gint gl_width, gint gl_height)
 {
-  GstGLBuffer *gl_buffer =
-      (GstGLBuffer *) gst_mini_object_new (GST_TYPE_GL_BUFFER);
+    GstGLBuffer* gl_buffer = (GstGLBuffer *) gst_mini_object_new (GST_TYPE_GL_BUFFER);
 
-  gl_buffer->display = g_object_ref (display);
-  gl_buffer->width = gl_width;
-  gl_buffer->height = gl_height;
+    gl_buffer->display = g_object_ref (display);
+    gl_buffer->width = gl_width;
+    gl_buffer->height = gl_height;
 
-  //it does not depends on the video format because gl buffer has always one texture.
-  //the one attached to the upload FBO
-  GST_BUFFER_SIZE (gl_buffer) = gst_gl_buffer_get_size (gl_width, gl_height);
+    //it does not depends on the video format because gl buffer has always one texture.
+    //the one attached to the upload FBO
+    GST_BUFFER_SIZE (gl_buffer) = gst_gl_buffer_get_size (gl_width, gl_height);
 
-  //blocking call, generate a texture using the pool
-  gst_gl_display_gen_texture (gl_buffer->display, &gl_buffer->texture, gl_width,
-      gl_height);
+    //blocking call, generate a texture using the pool
+    gst_gl_display_gen_texture (gl_buffer->display, &gl_buffer->texture, gl_width, gl_height) ;
 
-  return gl_buffer;
+    return gl_buffer;
 }
 
 
 gint
 gst_gl_buffer_get_size (gint width, gint height)
 {
-  //this is not strictly true, but it's used for compatibility with
-  //queue and BaseTransform
-  return width * height * 4;
+    //this is not strictly true, but it's used for compatibility with
+    //queue and BaseTransform
+    return width * height * 4;
 }
 
 
 gboolean
-gst_gl_buffer_parse_caps (GstCaps * caps, gint * width, gint * height)
+gst_gl_buffer_parse_caps (GstCaps* caps, gint* width, gint* height)
 {
-  GstStructure *structure = gst_caps_get_structure (caps, 0);
-  gboolean ret = gst_structure_has_name (structure, "video/x-raw-gl");
+    GstStructure* structure = gst_caps_get_structure (caps, 0);
+    gboolean ret = gst_structure_has_name (structure, "video/x-raw-gl");
 
-  if (!ret)
-    return ret;
+    if (!ret)
+        return ret;
 
-  ret = gst_structure_get_int (structure, "width", width);
-  ret &= gst_structure_get_int (structure, "height", height);
+    ret = gst_structure_get_int (structure, "width", width);
+    ret &= gst_structure_get_int (structure, "height", height);
 
-  return ret;
+    return ret;
 }
index ab2a869..e445f49 100644 (file)
@@ -41,48 +41,44 @@ GST_DEBUG_CATEGORY_STATIC (gst_gl_display_debug);
 #define DEBUG_INIT(bla) \
   GST_DEBUG_CATEGORY_INIT (gst_gl_display_debug, "gldisplay", 0, "opengl display");
 
-GST_BOILERPLATE_FULL (GstGLDisplay, gst_gl_display, GObject, G_TYPE_OBJECT,
-    DEBUG_INIT);
-static void gst_gl_display_finalize (GObject * object);
+GST_BOILERPLATE_FULL (GstGLDisplay, gst_gl_display, GObject, G_TYPE_OBJECT, DEBUG_INIT);
+static void gst_gl_display_finalize (GObject* object);
 
 /* Called in the gl thread, protected by lock and unlock */
-gpointer gst_gl_display_thread_create_context (GstGLDisplay * display);
-void gst_gl_display_thread_destroy_context (GstGLDisplay * display);
-void gst_gl_display_thread_run_generic (GstGLDisplay * display);
-void gst_gl_display_thread_gen_texture (GstGLDisplay * display);
-void gst_gl_display_thread_del_texture (GstGLDisplay * display);
-void gst_gl_display_thread_init_upload (GstGLDisplay * display);
-void gst_gl_display_thread_do_upload (GstGLDisplay * display);
-void gst_gl_display_thread_init_download (GstGLDisplay * display);
-void gst_gl_display_thread_do_download (GstGLDisplay * display);
-void gst_gl_display_thread_gen_fbo (GstGLDisplay * display);
-void gst_gl_display_thread_use_fbo (GstGLDisplay * display);
-void gst_gl_display_thread_del_fbo (GstGLDisplay * display);
-void gst_gl_display_thread_gen_shader (GstGLDisplay * display);
-void gst_gl_display_thread_del_shader (GstGLDisplay * display);
+gpointer gst_gl_display_thread_create_context (GstGLDisplay* display);
+void gst_gl_display_thread_destroy_context (GstGLDisplay* display);
+void gst_gl_display_thread_run_generic (GstGLDisplay *display);
+void gst_gl_display_thread_gen_texture (GstGLDisplay* display);
+void gst_gl_display_thread_del_texture (GstGLDisplay* display);
+void gst_gl_display_thread_init_upload (GstGLDisplay* display);
+void gst_gl_display_thread_do_upload (GstGLDisplay* display);
+void gst_gl_display_thread_init_download (GstGLDisplay *display);
+void gst_gl_display_thread_do_download (GstGLDisplay* display);
+void gst_gl_display_thread_gen_fbo (GstGLDisplay *display);
+void gst_gl_display_thread_use_fbo (GstGLDisplay *display);
+void gst_gl_display_thread_del_fbo (GstGLDisplay *display);
+void gst_gl_display_thread_gen_shader (GstGLDisplay *display);
+void gst_gl_display_thread_del_shader (GstGLDisplay *display);
 
 /* private methods */
-void gst_gl_display_lock (GstGLDisplay * display);
-void gst_gl_display_unlock (GstGLDisplay * display);
-void gst_gl_display_on_resize (GstGLDisplay * display, gint width, gint height);
-void gst_gl_display_on_draw (GstGLDisplay * display);
-void gst_gl_display_on_close (GstGLDisplay * display);
-void gst_gl_display_glgen_texture (GstGLDisplay * display, GLuint * pTexture,
-    GLint width, GLint height);
-void gst_gl_display_gldel_texture (GstGLDisplay * display, GLuint * pTexture,
-    GLint width, GLint height);
-gboolean gst_gl_display_texture_pool_func_clean (gpointer key, gpointer value,
-    gpointer data);
+void gst_gl_display_lock (GstGLDisplay* display);
+void gst_gl_display_unlock (GstGLDisplay* display);
+void gst_gl_display_on_resize(GstGLDisplay* display, gint width, gint height);
+void gst_gl_display_on_draw (GstGLDisplay* display);
+void gst_gl_display_on_close (GstGLDisplay* display);
+void gst_gl_display_glgen_texture (GstGLDisplay* display, GLuint* pTexture, GLint width, GLint height);
+void gst_gl_display_gldel_texture (GstGLDisplay* display, GLuint* pTexture, GLint width, GLint height);
+gboolean gst_gl_display_texture_pool_func_clean (gpointer key, gpointer value, gpointer data);
 void gst_gl_display_check_framebuffer_status (void);
 
 /* To not make gst_gl_display_thread_do_upload
  * and gst_gl_display_thread_do_download too big */
-void gst_gl_display_thread_init_upload_fbo (GstGLDisplay * display);
-void gst_gl_display_thread_do_upload_make (GstGLDisplay * display);
-void gst_gl_display_thread_do_upload_fill (GstGLDisplay * display);
-void gst_gl_display_thread_do_upload_draw (GstGLDisplay * display);
-void gst_gl_display_thread_do_download_draw_rgb (GstGLDisplay * display);
-void gst_gl_display_thread_do_download_draw_yuv (GstGLDisplay * display);
+void gst_gl_display_thread_init_upload_fbo (GstGLDisplay *display);
+void gst_gl_display_thread_do_upload_make (GstGLDisplay *display);
+void gst_gl_display_thread_do_upload_fill (GstGLDisplay *display);
+void gst_gl_display_thread_do_upload_draw (GstGLDisplay *display);
+void gst_gl_display_thread_do_download_draw_rgb (GstGLDisplay *display);
+void gst_gl_display_thread_do_download_draw_yuv (GstGLDisplay *display);
 
 
 //------------------------------------------------------------
@@ -102,7 +98,7 @@ gst_gl_display_class_init (GstGLDisplayClass * klass)
 
 
 static void
-gst_gl_display_init (GstGLDisplay * display, GstGLDisplayClass * klass)
+gst_gl_display_init (GstGLDisplay *display, GstGLDisplayClass *klass)
 {
   //thread safe
   display->mutex = g_mutex_new ();
@@ -212,126 +208,139 @@ gst_gl_display_init (GstGLDisplay * display, GstGLDisplayClass * klass)
   //YUY2:r,g,a
   //UYVY:a,b,r
   display->text_shader_upload_YUY2_UYVY =
-      "#extension GL_ARB_texture_rectangle : enable\n"
-      "uniform sampler2DRect Ytex, UVtex;\n"
-      "void main(void) {\n"
-      "  float fx, fy, y, u, v, r, g, b;\n"
-      "  fx   = gl_TexCoord[0].x;\n"
-      "  fy   = gl_TexCoord[0].y;\n"
-      "  y = texture2DRect(Ytex,vec2(fx,fy)).%c;\n"
-      "  u = texture2DRect(UVtex,vec2(fx*0.5,fy)).%c;\n"
-      "  v = texture2DRect(UVtex,vec2(fx*0.5,fy)).%c;\n"
-      "  y=1.164*(y-0.0627);\n"
-      "  u=u-0.5;\n"
-      "  v=v-0.5;\n"
-      "  r = y+1.5958*v;\n"
-      "  g = y-0.39173*u-0.81290*v;\n"
-      "  b = y+2.017*u;\n" "  gl_FragColor = vec4(r, g, b, 1.0);\n" "}\n";
+    "#extension GL_ARB_texture_rectangle : enable\n"
+    "uniform sampler2DRect Ytex, UVtex;\n"
+    "void main(void) {\n"
+    "  float fx, fy, y, u, v, r, g, b;\n"
+    "  fx   = gl_TexCoord[0].x;\n"
+    "  fy   = gl_TexCoord[0].y;\n"
+    "  y = texture2DRect(Ytex,vec2(fx,fy)).%c;\n"
+    "  u = texture2DRect(UVtex,vec2(fx*0.5,fy)).%c;\n"
+    "  v = texture2DRect(UVtex,vec2(fx*0.5,fy)).%c;\n"
+    "  y=1.164*(y-0.0627);\n"
+    "  u=u-0.5;\n"
+    "  v=v-0.5;\n"
+    "  r = y+1.5958*v;\n"
+    "  g = y-0.39173*u-0.81290*v;\n"
+    "  b = y+2.017*u;\n"
+    "  gl_FragColor = vec4(r, g, b, 1.0);\n"
+    "}\n";
 
   //ATI: "*0.5", ""
   //normal: "", "*0.5"
   display->text_shader_upload_I420_YV12 =
-      "#extension GL_ARB_texture_rectangle : enable\n"
-      "uniform sampler2DRect Ytex,Utex,Vtex;\n"
-      "void main(void) {\n"
-      "  float r,g,b,y,u,v;\n"
-      "  vec2 nxy=gl_TexCoord[0].xy;\n"
-      "  y=texture2DRect(Ytex,nxy%s).r;\n"
-      "  u=texture2DRect(Utex,nxy%s).r;\n"
-      "  v=texture2DRect(Vtex,nxy*0.5).r;\n"
-      "  y=1.1643*(y-0.0625);\n"
-      "  u=u-0.5;\n"
-      "  v=v-0.5;\n"
-      "  r=y+1.5958*v;\n"
-      "  g=y-0.39173*u-0.81290*v;\n"
-      "  b=y+2.017*u;\n" "  gl_FragColor=vec4(r,g,b,1.0);\n" "}\n";
+    "#extension GL_ARB_texture_rectangle : enable\n"
+    "uniform sampler2DRect Ytex,Utex,Vtex;\n"
+    "void main(void) {\n"
+    "  float r,g,b,y,u,v;\n"
+    "  vec2 nxy=gl_TexCoord[0].xy;\n"
+    "  y=texture2DRect(Ytex,nxy%s).r;\n"
+    "  u=texture2DRect(Utex,nxy%s).r;\n"
+    "  v=texture2DRect(Vtex,nxy*0.5).r;\n"
+    "  y=1.1643*(y-0.0625);\n"
+    "  u=u-0.5;\n"
+    "  v=v-0.5;\n"
+    "  r=y+1.5958*v;\n"
+    "  g=y-0.39173*u-0.81290*v;\n"
+    "  b=y+2.017*u;\n"
+    "  gl_FragColor=vec4(r,g,b,1.0);\n"
+    "}\n";
 
   display->text_shader_upload_AYUV =
-      "#extension GL_ARB_texture_rectangle : enable\n"
-      "uniform sampler2DRect tex;\n"
-      "void main(void) {\n"
-      "  float r,g,b,y,u,v;\n"
-      "  vec2 nxy=gl_TexCoord[0].xy;\n"
-      "  y=texture2DRect(tex,nxy).r;\n"
-      "  u=texture2DRect(tex,nxy).g;\n"
-      "  v=texture2DRect(tex,nxy).b;\n"
-      "  y=1.1643*(y-0.0625);\n"
-      "  u=u-0.5;\n"
-      "  v=v-0.5;\n"
-      "  r=clamp(y+1.5958*v, 0, 1);\n"
-      "  g=clamp(y-0.39173*u-0.81290*v, 0, 1);\n"
-      "  b=clamp(y+2.017*u, 0, 1);\n" "  gl_FragColor=vec4(r,g,b,1.0);\n" "}\n";
+    "#extension GL_ARB_texture_rectangle : enable\n"
+    "uniform sampler2DRect tex;\n"
+    "void main(void) {\n"
+    "  float r,g,b,y,u,v;\n"
+    "  vec2 nxy=gl_TexCoord[0].xy;\n"
+    "  y=texture2DRect(tex,nxy).r;\n"
+    "  u=texture2DRect(tex,nxy).g;\n"
+    "  v=texture2DRect(tex,nxy).b;\n"
+    "  y=1.1643*(y-0.0625);\n"
+    "  u=u-0.5;\n"
+    "  v=v-0.5;\n"
+    "  r=clamp(y+1.5958*v, 0, 1);\n"
+    "  g=clamp(y-0.39173*u-0.81290*v, 0, 1);\n"
+    "  b=clamp(y+2.017*u, 0, 1);\n"
+    "  gl_FragColor=vec4(r,g,b,1.0);\n"
+    "}\n";
 
   //YUY2:y2,u,y1,v
   //UYVY:v,y1,u,y2
   display->text_shader_download_YUY2_UYVY =
-      "#extension GL_ARB_texture_rectangle : enable\n"
-      "uniform sampler2DRect tex;\n"
-      "void main(void) {\n"
-      "  float fx,fy,r,g,b,r2,g2,b2,y1,y2,u,v;\n"
-      "  fx = gl_TexCoord[0].x;\n"
-      "  fy = gl_TexCoord[0].y;\n"
-      "  r=texture2DRect(tex,vec2(fx*2.0,fy)).r;\n"
-      "  g=texture2DRect(tex,vec2(fx*2.0,fy)).g;\n"
-      "  b=texture2DRect(tex,vec2(fx*2.0,fy)).b;\n"
-      "  r2=texture2DRect(tex,vec2(fx*2.0+1.0,fy)).r;\n"
-      "  g2=texture2DRect(tex,vec2(fx*2.0+1.0,fy)).g;\n"
-      "  b2=texture2DRect(tex,vec2(fx*2.0+1.0,fy)).b;\n"
-      "  y1=0.299011*r + 0.586987*g + 0.114001*b;\n"
-      "  y2=0.299011*r2 + 0.586987*g2 + 0.114001*b2;\n"
-      "  u=-0.148246*r -0.29102*g + 0.439266*b;\n"
-      "  v=0.439271*r - 0.367833*g - 0.071438*b ;\n"
-      "  y1=0.858885*y1 + 0.0625;\n"
-      "  y2=0.858885*y2 + 0.0625;\n"
-      "  u=u + 0.5;\n" "  v=v + 0.5;\n" "  gl_FragColor=vec4(%s);\n" "}\n";
+    "#extension GL_ARB_texture_rectangle : enable\n"
+    "uniform sampler2DRect tex;\n"
+    "void main(void) {\n"
+    "  float fx,fy,r,g,b,r2,g2,b2,y1,y2,u,v;\n"
+    "  fx = gl_TexCoord[0].x;\n"
+    "  fy = gl_TexCoord[0].y;\n"
+    "  r=texture2DRect(tex,vec2(fx*2.0,fy)).r;\n"
+    "  g=texture2DRect(tex,vec2(fx*2.0,fy)).g;\n"
+    "  b=texture2DRect(tex,vec2(fx*2.0,fy)).b;\n"
+    "  r2=texture2DRect(tex,vec2(fx*2.0+1.0,fy)).r;\n"
+    "  g2=texture2DRect(tex,vec2(fx*2.0+1.0,fy)).g;\n"
+    "  b2=texture2DRect(tex,vec2(fx*2.0+1.0,fy)).b;\n"
+    "  y1=0.299011*r + 0.586987*g + 0.114001*b;\n"
+    "  y2=0.299011*r2 + 0.586987*g2 + 0.114001*b2;\n"
+    "  u=-0.148246*r -0.29102*g + 0.439266*b;\n"
+    "  v=0.439271*r - 0.367833*g - 0.071438*b ;\n"
+    "  y1=0.858885*y1 + 0.0625;\n"
+    "  y2=0.858885*y2 + 0.0625;\n"
+    "  u=u + 0.5;\n"
+    "  v=v + 0.5;\n"
+    "  gl_FragColor=vec4(%s);\n"
+    "}\n";
 
   display->text_shader_download_I420_YV12 =
-      "#extension GL_ARB_texture_rectangle : enable\n"
-      "uniform sampler2DRect tex;\n"
-      "uniform float w, h;\n"
-      "void main(void) {\n"
-      "  float r,g,b,r2,b2,g2,y,u,v;\n"
-      "  vec2 nxy=gl_TexCoord[0].xy;\n"
-      "  vec2 nxy2=mod(2.0*nxy, vec2(w, h));\n"
-      "  r=texture2DRect(tex,nxy).r;\n"
-      "  g=texture2DRect(tex,nxy).g;\n"
-      "  b=texture2DRect(tex,nxy).b;\n"
-      "  r2=texture2DRect(tex,nxy2).r;\n"
-      "  g2=texture2DRect(tex,nxy2).g;\n"
-      "  b2=texture2DRect(tex,nxy2).b;\n"
-      "  y=0.299011*r + 0.586987*g + 0.114001*b;\n"
-      "  u=-0.148246*r2 -0.29102*g2 + 0.439266*b2;\n"
-      "  v=0.439271*r2 - 0.367833*g2 - 0.071438*b2 ;\n"
-      "  y=0.858885*y + 0.0625;\n"
-      "  u=u + 0.5;\n"
-      "  v=v + 0.5;\n"
-      "  gl_FragData[0] = vec4(y, 0.0, 0.0, 1.0);\n"
-      "  gl_FragData[1] = vec4(u, 0.0, 0.0, 1.0);\n"
-      "  gl_FragData[2] = vec4(v, 0.0, 0.0, 1.0);\n" "}\n";
+    "#extension GL_ARB_texture_rectangle : enable\n"
+    "uniform sampler2DRect tex;\n"
+    "uniform float w, h;\n"
+    "void main(void) {\n"
+    "  float r,g,b,r2,b2,g2,y,u,v;\n"
+    "  vec2 nxy=gl_TexCoord[0].xy;\n"
+    "  vec2 nxy2=mod(2.0*nxy, vec2(w, h));\n"
+    "  r=texture2DRect(tex,nxy).r;\n"
+    "  g=texture2DRect(tex,nxy).g;\n"
+    "  b=texture2DRect(tex,nxy).b;\n"
+    "  r2=texture2DRect(tex,nxy2).r;\n"
+    "  g2=texture2DRect(tex,nxy2).g;\n"
+    "  b2=texture2DRect(tex,nxy2).b;\n"
+    "  y=0.299011*r + 0.586987*g + 0.114001*b;\n"
+    "  u=-0.148246*r2 -0.29102*g2 + 0.439266*b2;\n"
+    "  v=0.439271*r2 - 0.367833*g2 - 0.071438*b2 ;\n"
+    "  y=0.858885*y + 0.0625;\n"
+    "  u=u + 0.5;\n"
+    "  v=v + 0.5;\n"
+    "  gl_FragData[0] = vec4(y, 0.0, 0.0, 1.0);\n"
+    "  gl_FragData[1] = vec4(u, 0.0, 0.0, 1.0);\n"
+    "  gl_FragData[2] = vec4(v, 0.0, 0.0, 1.0);\n"
+    "}\n";
 
   display->text_shader_download_AYUV =
-      "#extension GL_ARB_texture_rectangle : enable\n"
-      "uniform sampler2DRect tex;\n"
-      "void main(void) {\n"
-      "  float r,g,b,y,u,v;\n"
-      "  vec2 nxy=gl_TexCoord[0].xy;\n"
-      "  r=texture2DRect(tex,nxy).r;\n"
-      "  g=texture2DRect(tex,nxy).g;\n"
-      "  b=texture2DRect(tex,nxy).b;\n"
-      "  y=0.299011*r + 0.586987*g + 0.114001*b;\n"
-      "  u=-0.148246*r -0.29102*g + 0.439266*b;\n"
-      "  v=0.439271*r - 0.367833*g - 0.071438*b ;\n"
-      "  y=0.858885*y + 0.0625;\n"
-      "  u=u + 0.5;\n"
-      "  v=v + 0.5;\n" "  gl_FragColor=vec4(y,u,v,1.0);\n" "}\n";
+    "#extension GL_ARB_texture_rectangle : enable\n"
+    "uniform sampler2DRect tex;\n"
+    "void main(void) {\n"
+    "  float r,g,b,y,u,v;\n"
+    "  vec2 nxy=gl_TexCoord[0].xy;\n"
+    "  r=texture2DRect(tex,nxy).r;\n"
+    "  g=texture2DRect(tex,nxy).g;\n"
+    "  b=texture2DRect(tex,nxy).b;\n"
+    "  y=0.299011*r + 0.586987*g + 0.114001*b;\n"
+    "  u=-0.148246*r -0.29102*g + 0.439266*b;\n"
+    "  v=0.439271*r - 0.367833*g - 0.071438*b ;\n"
+    "  y=0.858885*y + 0.0625;\n"
+    "  u=u + 0.5;\n"
+    "  v=v + 0.5;\n"
+    "  gl_FragColor=vec4(y,u,v,1.0);\n"
+    "}\n";
 }
 
 static void
-gst_gl_display_finalize (GObject * object)
+gst_gl_display_finalize (GObject* object)
 {
-  GstGLDisplay *display = GST_GL_DISPLAY (object);
+  GstGLDisplaydisplay = GST_GL_DISPLAY (object);
 
-  if (display->mutex && display->gl_window) {
+  if (display->mutex && display->gl_window)
+  {
 
     gst_gl_display_lock (display);
 
@@ -341,8 +350,7 @@ gst_gl_display_finalize (GObject * object)
 
     GST_INFO ("send quit gl window loop");
 
-    gst_gl_window_quit_loop (display->gl_window,
-        GST_GL_WINDOW_CB (gst_gl_display_thread_destroy_context), display);
+    gst_gl_window_quit_loop (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_destroy_context), display);
 
     GST_INFO ("quit sent to gl window loop");
 
@@ -351,7 +359,8 @@ gst_gl_display_finalize (GObject * object)
     gst_gl_display_unlock (display);
   }
 
-  if (display->gl_thread) {
+  if (display->gl_thread)
+  {
     gpointer ret = g_thread_join (display->gl_thread);
     GST_INFO ("gl thread joined");
     if (ret != NULL)
@@ -395,14 +404,14 @@ gst_gl_display_finalize (GObject * object)
 
 /* Called in the gl thread */
 gpointer
-gst_gl_display_thread_create_context (GstGLDisplay * display)
+gst_gl_display_thread_create_context (GstGLDisplay *display)
 {
   GLenum err = 0;
 
-  display->gl_window =
-      gst_gl_window_new (display->upload_width, display->upload_height);
+  display->gl_window = gst_gl_window_new (display->upload_width, display->upload_height);
 
-  if (!display->gl_window) {
+  if (!display->gl_window)
+  {
     display->isAlive = FALSE;
     GST_ERROR_OBJECT (display, "Failed to create gl window");
     g_cond_signal (display->cond_create_context);
@@ -412,27 +421,26 @@ gst_gl_display_thread_create_context (GstGLDisplay * display)
   GST_INFO ("gl window created");
 
   //Init glew
-  err = glewInit ();
-  if (err != GLEW_OK) {
+  err = glewInit();
+  if (err != GLEW_OK)
+  {
     GST_ERROR_OBJECT (display, "Failed to init GLEW: %s",
-        glewGetErrorString (err));
+      glewGetErrorString (err));
     display->isAlive = FALSE;
-  } else {
+  }
+  else
+  {
     //OpenGL > 1.2.0 and Glew > 1.4.0
-    GString *opengl_version =
-        g_string_truncate (g_string_new ((gchar *) glGetString (GL_VERSION)),
-        3);
+    GString* opengl_version = g_string_truncate (g_string_new ((gchar*) glGetString (GL_VERSION)), 3);
     gint opengl_version_major = 0;
     gint opengl_version_minor = 0;
 
-    sscanf (opengl_version->str, "%d.%d", &opengl_version_major,
-        &opengl_version_minor);
+    sscanf(opengl_version->str, "%d.%d", &opengl_version_major, &opengl_version_minor);
 
     GST_INFO ("GL_VERSION: %s", glGetString (GL_VERSION));
     GST_INFO ("GLEW_VERSION: %s", glewGetString (GLEW_VERSION));
     if (glGetString (GL_SHADING_LANGUAGE_VERSION))
-      GST_INFO ("GL_SHADING_LANGUAGE_VERSION: %s",
-          glGetString (GL_SHADING_LANGUAGE_VERSION));
+      GST_INFO ("GL_SHADING_LANGUAGE_VERSION: %s", glGetString (GL_SHADING_LANGUAGE_VERSION));
     else
       GST_INFO ("Your driver does not support GLSL (OpenGL Shading Language)");
 
@@ -442,10 +450,10 @@ gst_gl_display_thread_create_context (GstGLDisplay * display)
     g_string_free (opengl_version, TRUE);
 
     if ((opengl_version_major < 1) ||
-        (GLEW_VERSION_MAJOR < 1) ||
-        (opengl_version_major < 2 && opengl_version_major >= 1
-            && opengl_version_minor < 2) || (GLEW_VERSION_MAJOR < 2
-            && GLEW_VERSION_MAJOR >= 1 && GLEW_VERSION_MINOR < 4)) {
+        (GLEW_VERSION_MAJOR   < 1) ||
+        (opengl_version_major < 2 && opengl_version_major >= 1 && opengl_version_minor < 2) ||
+        (GLEW_VERSION_MAJOR   < 2 && GLEW_VERSION_MAJOR   >= 1 && GLEW_VERSION_MINOR   < 4) )
+    {
       //turn off the pipeline, the old drivers are not yet supported
       GST_WARNING ("Required OpenGL >= 1.2.0 and Glew >= 1.4.0");
       display->isAlive = FALSE;
@@ -453,12 +461,9 @@ gst_gl_display_thread_create_context (GstGLDisplay * display)
   }
 
   //setup callbacks
-  gst_gl_window_set_resize_callback (display->gl_window,
-      GST_GL_WINDOW_CB2 (gst_gl_display_on_resize), display);
-  gst_gl_window_set_draw_callback (display->gl_window,
-      GST_GL_WINDOW_CB (gst_gl_display_on_draw), display);
-  gst_gl_window_set_close_callback (display->gl_window,
-      GST_GL_WINDOW_CB (gst_gl_display_on_close), display);
+  gst_gl_window_set_resize_callback (display->gl_window, GST_GL_WINDOW_CB2 (gst_gl_display_on_resize), display);
+  gst_gl_window_set_draw_callback (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_on_draw), display);
+  gst_gl_window_set_close_callback (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_on_close), display);
 
   g_cond_signal (display->cond_create_context);
 
@@ -484,91 +489,110 @@ gst_gl_display_thread_create_context (GstGLDisplay * display)
 
 /* Called in the gl thread */
 void
-gst_gl_display_thread_destroy_context (GstGLDisplay * display)
+gst_gl_display_thread_destroy_context (GstGLDisplay *display)
 {
   //colorspace_conversion specific
-  switch (display->upload_colorspace_conversion) {
-    case GST_GL_DISPLAY_CONVERSION_MESA:
-    case GST_GL_DISPLAY_CONVERSION_MATRIX:
-      break;
-    case GST_GL_DISPLAY_CONVERSION_GLSL:
+  switch (display->upload_colorspace_conversion)
+  {
+  case GST_GL_DISPLAY_CONVERSION_MESA:
+  case GST_GL_DISPLAY_CONVERSION_MATRIX:
+    break;
+  case GST_GL_DISPLAY_CONVERSION_GLSL:
+  {
+    glUseProgramObjectARB (0);
+    if (display->shader_upload_YUY2)
     {
-      glUseProgramObjectARB (0);
-      if (display->shader_upload_YUY2) {
-        g_object_unref (G_OBJECT (display->shader_upload_YUY2));
-        display->shader_upload_YUY2 = NULL;
-      }
-      if (display->shader_upload_UYVY) {
-        g_object_unref (G_OBJECT (display->shader_upload_UYVY));
-        display->shader_upload_UYVY = NULL;
-      }
-      if (display->shader_upload_I420_YV12) {
-        g_object_unref (G_OBJECT (display->shader_upload_I420_YV12));
-        display->shader_upload_I420_YV12 = NULL;
-      }
-      if (display->shader_upload_AYUV) {
-        g_object_unref (G_OBJECT (display->shader_upload_AYUV));
-        display->shader_upload_AYUV = NULL;
-      }
-      if (display->shader_download_YUY2) {
-        g_object_unref (G_OBJECT (display->shader_download_YUY2));
-        display->shader_download_YUY2 = NULL;
-      }
-      if (display->shader_download_UYVY) {
-        g_object_unref (G_OBJECT (display->shader_download_UYVY));
-        display->shader_download_UYVY = NULL;
-      }
-      if (display->shader_download_I420_YV12) {
-        g_object_unref (G_OBJECT (display->shader_download_I420_YV12));
-        display->shader_download_I420_YV12 = NULL;
-      }
-      if (display->shader_download_AYUV) {
-        g_object_unref (G_OBJECT (display->shader_download_AYUV));
-        display->shader_download_AYUV = NULL;
-      }
+      g_object_unref (G_OBJECT (display->shader_upload_YUY2));
+      display->shader_upload_YUY2 = NULL;
     }
-      break;
-    default:
-      g_assert_not_reached ();
+    if (display->shader_upload_UYVY)
+    {
+      g_object_unref (G_OBJECT (display->shader_upload_UYVY));
+      display->shader_upload_UYVY = NULL;
+    }
+    if (display->shader_upload_I420_YV12)
+    {
+      g_object_unref (G_OBJECT (display->shader_upload_I420_YV12));
+      display->shader_upload_I420_YV12 = NULL;
+    }
+    if (display->shader_upload_AYUV)
+    {
+      g_object_unref (G_OBJECT (display->shader_upload_AYUV));
+      display->shader_upload_AYUV = NULL;
+    }
+    if (display->shader_download_YUY2)
+    {
+      g_object_unref (G_OBJECT (display->shader_download_YUY2));
+      display->shader_download_YUY2 = NULL;
+    }
+    if (display->shader_download_UYVY)
+    {
+      g_object_unref (G_OBJECT (display->shader_download_UYVY));
+      display->shader_download_UYVY = NULL;
+    }
+    if (display->shader_download_I420_YV12)
+    {
+      g_object_unref (G_OBJECT (display->shader_download_I420_YV12));
+      display->shader_download_I420_YV12 = NULL;
+    }
+    if (display->shader_download_AYUV)
+    {
+      g_object_unref (G_OBJECT (display->shader_download_AYUV));
+      display->shader_download_AYUV = NULL;
+    }
+  }
+  break;
+  default:
+    g_assert_not_reached ();
   }
 
-  if (display->upload_fbo) {
+  if (display->upload_fbo)
+  {
     glDeleteFramebuffersEXT (1, &display->upload_fbo);
     display->upload_fbo = 0;
   }
-  if (display->upload_depth_buffer) {
-    glDeleteRenderbuffersEXT (1, &display->upload_depth_buffer);
+  if (display->upload_depth_buffer)
+  {
+    glDeleteRenderbuffersEXT(1, &display->upload_depth_buffer);
     display->upload_depth_buffer = 0;
   }
-  if (display->download_fbo) {
+  if (display->download_fbo)
+  {
     glDeleteFramebuffersEXT (1, &display->download_fbo);
     display->download_fbo = 0;
   }
-  if (display->download_depth_buffer) {
-    glDeleteRenderbuffersEXT (1, &display->download_depth_buffer);
+  if (display->download_depth_buffer)
+  {
+    glDeleteRenderbuffersEXT(1, &display->download_depth_buffer);
     display->download_depth_buffer = 0;
   }
-  if (display->download_texture) {
+  if (display->download_texture)
+  {
     glDeleteTextures (1, &display->download_texture);
     display->download_texture = 0;
   }
-  if (display->download_texture_u) {
+  if (display->download_texture_u)
+  {
     glDeleteTextures (1, &display->download_texture_u);
     display->download_texture_u = 0;
   }
-  if (display->download_texture_v) {
+  if (display->download_texture_v)
+  {
     glDeleteTextures (1, &display->download_texture_v);
     display->download_texture_v = 0;
   }
-  if (display->upload_intex != 0) {
+  if (display->upload_intex != 0)
+  {
     glDeleteTextures (1, &display->upload_intex);
     display->upload_intex = 0;
   }
-  if (display->upload_intex_u != 0) {
+  if (display->upload_intex_u != 0)
+  {
     glDeleteTextures (1, &display->upload_intex_u);
     display->upload_intex_u = 0;
   }
-  if (display->upload_intex_v != 0) {
+  if (display->upload_intex_v != 0)
+  {
     glDeleteTextures (1, &display->upload_intex_v);
     display->upload_intex_v = 0;
   }
@@ -576,15 +600,15 @@ gst_gl_display_thread_destroy_context (GstGLDisplay * display)
   GST_INFO ("Cleaning texture pool");
 
   //clean up the texture pool
-  g_hash_table_foreach_remove (display->texture_pool,
-      gst_gl_display_texture_pool_func_clean, NULL);
+  g_hash_table_foreach_remove (display->texture_pool, gst_gl_display_texture_pool_func_clean,
+    NULL);
 
   GST_INFO ("Context destroyed");
 }
 
 
 void
-gst_gl_display_thread_run_generic (GstGLDisplay * display)
+gst_gl_display_thread_run_generic (GstGLDisplay *display)
 {
   display->generic_callback (display, display->data);
 }
@@ -596,476 +620,468 @@ gst_gl_display_thread_gen_texture (GstGLDisplay * display)
 {
   //setup a texture to render to (this one will be in a gl buffer)
   gst_gl_display_glgen_texture (display, &display->gen_texture,
-      display->gen_texture_width, display->gen_texture_height);
+    display->gen_texture_width, display->gen_texture_height);
 }
 
 
 /* Called in the gl thread */
 void
-gst_gl_display_thread_del_texture (GstGLDisplay * display)
+gst_gl_display_thread_del_texture (GstGLDisplay* display)
 {
   gst_gl_display_gldel_texture (display, &display->del_texture,
-      display->del_texture_width, display->del_texture_height);
+    display->del_texture_width, display->del_texture_height);
 }
 
 
 /* Called in the gl thread */
 void
-gst_gl_display_thread_init_upload (GstGLDisplay * display)
+gst_gl_display_thread_init_upload (GstGLDisplay *display)
 {
-  switch (display->upload_video_format) {
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_ARGB:
-    case GST_VIDEO_FORMAT_ABGR:
-    case GST_VIDEO_FORMAT_RGB:
-    case GST_VIDEO_FORMAT_BGR:
-      //color space conversion is not needed
-      //but if the size is different we need to redraw it
-      //using fbo
-      if (display->upload_width != display->upload_data_width ||
-          display->upload_height != display->upload_data_height)
-        gst_gl_display_thread_init_upload_fbo (display);
-      break;
-    case GST_VIDEO_FORMAT_YUY2:
-    case GST_VIDEO_FORMAT_UYVY:
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-    case GST_VIDEO_FORMAT_AYUV:
-      //color space conversion is needed
+  switch (display->upload_video_format)
+  {
+  case GST_VIDEO_FORMAT_RGBx:
+  case GST_VIDEO_FORMAT_BGRx:
+  case GST_VIDEO_FORMAT_xRGB:
+  case GST_VIDEO_FORMAT_xBGR:
+  case GST_VIDEO_FORMAT_RGBA:
+  case GST_VIDEO_FORMAT_BGRA:
+  case GST_VIDEO_FORMAT_ARGB:
+  case GST_VIDEO_FORMAT_ABGR:
+  case GST_VIDEO_FORMAT_RGB:
+  case GST_VIDEO_FORMAT_BGR:
+    //color space conversion is not needed
+    //but if the size is different we need to redraw it
+    //using fbo
+    if (display->upload_width != display->upload_data_width ||
+        display->upload_height != display->upload_data_height)
+      gst_gl_display_thread_init_upload_fbo (display);
+    break;
+  case GST_VIDEO_FORMAT_YUY2:
+  case GST_VIDEO_FORMAT_UYVY:
+  case GST_VIDEO_FORMAT_I420:
+  case GST_VIDEO_FORMAT_YV12:
+  case GST_VIDEO_FORMAT_AYUV:
+    //color space conversion is needed
+  {
+         //check if fragment shader is available, then load them
+    /* shouldn't we require ARB_shading_language_100? --Filippo */
+    if (GLEW_ARB_fragment_shader)
     {
-      //check if fragment shader is available, then load them
-      /* shouldn't we require ARB_shading_language_100? --Filippo */
-      if (GLEW_ARB_fragment_shader) {
-        GST_INFO ("Context, ARB_fragment_shader supported: yes");
+      GST_INFO ("Context, ARB_fragment_shader supported: yes");
 
-        display->upload_colorspace_conversion = GST_GL_DISPLAY_CONVERSION_GLSL;
+      display->upload_colorspace_conversion = GST_GL_DISPLAY_CONVERSION_GLSL;
 
-        gst_gl_display_thread_init_upload_fbo (display);
-        if (!display->isAlive)
-          break;
+      gst_gl_display_thread_init_upload_fbo (display);
+      if (!display->isAlive)
+        break;
+
+      switch (display->upload_video_format)
+      {
+      case GST_VIDEO_FORMAT_YUY2:
+        {
+          gchar text_shader_upload_YUY2[2048];
+          sprintf (text_shader_upload_YUY2, display->text_shader_upload_YUY2_UYVY, 'r', 'g', 'a');
 
-        switch (display->upload_video_format) {
-          case GST_VIDEO_FORMAT_YUY2:
+          display->shader_upload_YUY2 = gst_gl_shader_new ();
+          if(!gst_gl_shader_compile_and_check (display->shader_upload_YUY2,
+                       text_shader_upload_YUY2, GST_GL_SHADER_FRAGMENT_SOURCE))
           {
-            gchar text_shader_upload_YUY2[2048];
-            sprintf (text_shader_upload_YUY2,
-                display->text_shader_upload_YUY2_UYVY, 'r', 'g', 'a');
-
-            display->shader_upload_YUY2 = gst_gl_shader_new ();
-            if (!gst_gl_shader_compile_and_check (display->shader_upload_YUY2,
-                    text_shader_upload_YUY2, GST_GL_SHADER_FRAGMENT_SOURCE)) {
-              display->isAlive = FALSE;
-              g_object_unref (G_OBJECT (display->shader_upload_YUY2));
-              display->shader_upload_YUY2 = NULL;
-            }
+            display->isAlive = FALSE;
+            g_object_unref (G_OBJECT (display->shader_upload_YUY2));
+            display->shader_upload_YUY2 = NULL;
           }
-            break;
-          case GST_VIDEO_FORMAT_UYVY:
+        }
+      break;
+      case GST_VIDEO_FORMAT_UYVY:
+        {
+          gchar text_shader_upload_UYVY[2048];
+          sprintf (text_shader_upload_UYVY, display->text_shader_upload_YUY2_UYVY, 'a', 'b', 'r');
+
+          display->shader_upload_UYVY = gst_gl_shader_new ();
+          if(!gst_gl_shader_compile_and_check (display->shader_upload_UYVY,
+                       text_shader_upload_UYVY, GST_GL_SHADER_FRAGMENT_SOURCE))
           {
-            gchar text_shader_upload_UYVY[2048];
-            sprintf (text_shader_upload_UYVY,
-                display->text_shader_upload_YUY2_UYVY, 'a', 'b', 'r');
-
-            display->shader_upload_UYVY = gst_gl_shader_new ();
-            if (!gst_gl_shader_compile_and_check (display->shader_upload_UYVY,
-                    text_shader_upload_UYVY, GST_GL_SHADER_FRAGMENT_SOURCE)) {
-              display->isAlive = FALSE;
-              g_object_unref (G_OBJECT (display->shader_upload_UYVY));
-              display->shader_upload_UYVY = NULL;
-            }
+            display->isAlive = FALSE;
+            g_object_unref (G_OBJECT (display->shader_upload_UYVY));
+            display->shader_upload_UYVY = NULL;
           }
-            break;
-          case GST_VIDEO_FORMAT_I420:
-          case GST_VIDEO_FORMAT_YV12:
+        }
+        break;
+      case GST_VIDEO_FORMAT_I420:
+      case GST_VIDEO_FORMAT_YV12:
+        {
+          gchar text_shader_upload_I420_YV12[2048];
+          if (g_ascii_strncasecmp ("ATI", (gchar *) glGetString (GL_VENDOR), 3) == 0)
+              sprintf (text_shader_upload_I420_YV12, display->text_shader_upload_I420_YV12, "*0.5", "");
+          else
+              sprintf (text_shader_upload_I420_YV12, display->text_shader_upload_I420_YV12, "", "*0.5");
+
+          display->shader_upload_I420_YV12 = gst_gl_shader_new ();
+          if(!gst_gl_shader_compile_and_check (display->shader_upload_I420_YV12,
+                       text_shader_upload_I420_YV12, GST_GL_SHADER_FRAGMENT_SOURCE))
           {
-            gchar text_shader_upload_I420_YV12[2048];
-            if (g_ascii_strncasecmp ("ATI", (gchar *) glGetString (GL_VENDOR),
-                    3) == 0)
-              sprintf (text_shader_upload_I420_YV12,
-                  display->text_shader_upload_I420_YV12, "*0.5", "");
-            else
-              sprintf (text_shader_upload_I420_YV12,
-                  display->text_shader_upload_I420_YV12, "", "*0.5");
-
-            display->shader_upload_I420_YV12 = gst_gl_shader_new ();
-            if (!gst_gl_shader_compile_and_check
-                (display->shader_upload_I420_YV12, text_shader_upload_I420_YV12,
-                    GST_GL_SHADER_FRAGMENT_SOURCE)) {
-              display->isAlive = FALSE;
-              g_object_unref (G_OBJECT (display->shader_upload_I420_YV12));
-              display->shader_upload_I420_YV12 = NULL;
-            }
+            display->isAlive = FALSE;
+            g_object_unref (G_OBJECT (display->shader_upload_I420_YV12));
+            display->shader_upload_I420_YV12 = NULL;
           }
-            break;
-          case GST_VIDEO_FORMAT_AYUV:
-            display->shader_upload_AYUV = gst_gl_shader_new ();
-            if (!gst_gl_shader_compile_and_check (display->shader_upload_AYUV,
-                    display->text_shader_upload_AYUV,
-                    GST_GL_SHADER_FRAGMENT_SOURCE)) {
-              display->isAlive = FALSE;
-              g_object_unref (G_OBJECT (display->shader_upload_AYUV));
-              display->shader_upload_AYUV = NULL;
-            }
-            break;
-          default:
-            g_assert_not_reached ();
         }
-      }
-      //check if YCBCR MESA is available
-      else if (GLEW_MESA_ycbcr_texture) {
-        //GLSL and Color Matrix are not available on your drivers, switch to YCBCR MESA
-        GST_INFO ("Context, ARB_fragment_shader supported: no");
-        GST_INFO ("Context, GLEW_MESA_ycbcr_texture supported: yes");
-
-        display->upload_colorspace_conversion = GST_GL_DISPLAY_CONVERSION_MESA;
-
-        switch (display->upload_video_format) {
-          case GST_VIDEO_FORMAT_YUY2:
-          case GST_VIDEO_FORMAT_UYVY:
-            //color space conversion is not needed
-            //but if the size is different we need to redraw it
-            //using fbo
-            if (display->upload_width != display->upload_data_width ||
-                display->upload_height != display->upload_data_height)
-              gst_gl_display_thread_init_upload_fbo (display);
-            break;
-          case GST_VIDEO_FORMAT_I420:
-          case GST_VIDEO_FORMAT_YV12:
-          case GST_VIDEO_FORMAT_AYUV:
-            //turn off the pipeline because
-            //MESA only support YUY2 and UYVY
-            GST_WARNING
-                ("Your MESA version only supports YUY2 and UYVY (GLSL is required for others yuv formats");
-            display->isAlive = FALSE;
-            break;
-          default:
-            g_assert_not_reached ();
+        break;
+      case GST_VIDEO_FORMAT_AYUV:
+        display->shader_upload_AYUV = gst_gl_shader_new ();
+        if(!gst_gl_shader_compile_and_check (display->shader_upload_AYUV,
+                     display->text_shader_upload_AYUV, GST_GL_SHADER_FRAGMENT_SOURCE))
+        {
+          display->isAlive = FALSE;
+          g_object_unref (G_OBJECT (display->shader_upload_AYUV));
+          display->shader_upload_AYUV = NULL;
         }
+        break;
+      default:
+        g_assert_not_reached ();
       }
-      //check if color matrix is available
-      else if (GLEW_ARB_imaging) {
-        //GLSL is not available on your drivers, switch to Color Matrix
-        GST_INFO ("Context, ARB_fragment_shader supported: no");
-        GST_INFO ("Context, GLEW_MESA_ycbcr_texture supported: no");
-        GST_INFO ("Context, GLEW_ARB_imaging supported: yes");
-
-        display->upload_colorspace_conversion =
-            GST_GL_DISPLAY_CONVERSION_MATRIX;
-
-        //turn off the pipeline because we do not support it yet
-        GST_WARNING
-            ("Colorspace conversion using Color Matrix is not yet supported");
-        display->isAlive = FALSE;
-      } else {
-        GST_WARNING ("Context, ARB_fragment_shader supported: no");
-        GST_WARNING ("Context, GLEW_ARB_imaging supported: no");
-        GST_WARNING ("Context, GLEW_MESA_ycbcr_texture supported: no");
-
-        //turn off the pipeline because colorspace conversion is not possible
+    }
+    //check if YCBCR MESA is available
+    else if (GLEW_MESA_ycbcr_texture)
+    {
+      //GLSL and Color Matrix are not available on your drivers, switch to YCBCR MESA
+      GST_INFO ("Context, ARB_fragment_shader supported: no");
+      GST_INFO ("Context, GLEW_MESA_ycbcr_texture supported: yes");
+
+      display->upload_colorspace_conversion = GST_GL_DISPLAY_CONVERSION_MESA;
+
+      switch (display->upload_video_format)
+      {
+      case GST_VIDEO_FORMAT_YUY2:
+      case GST_VIDEO_FORMAT_UYVY:
+        //color space conversion is not needed
+        //but if the size is different we need to redraw it
+        //using fbo
+        if (display->upload_width != display->upload_data_width ||
+            display->upload_height != display->upload_data_height)
+          gst_gl_display_thread_init_upload_fbo (display);
+        break;
+      case GST_VIDEO_FORMAT_I420:
+      case GST_VIDEO_FORMAT_YV12:
+      case GST_VIDEO_FORMAT_AYUV:
+        //turn off the pipeline because
+        //MESA only support YUY2 and UYVY
+        GST_WARNING ("Your MESA version only supports YUY2 and UYVY (GLSL is required for others yuv formats");
         display->isAlive = FALSE;
+        break;
+            default:
+        g_assert_not_reached ();
       }
     }
-      break;
-    default:
-      g_assert_not_reached ();
+    //check if color matrix is available
+    else if (GLEW_ARB_imaging)
+    {
+      //GLSL is not available on your drivers, switch to Color Matrix
+      GST_INFO ("Context, ARB_fragment_shader supported: no");
+      GST_INFO ("Context, GLEW_MESA_ycbcr_texture supported: no");
+      GST_INFO ("Context, GLEW_ARB_imaging supported: yes");
+
+      display->upload_colorspace_conversion = GST_GL_DISPLAY_CONVERSION_MATRIX;
+
+      //turn off the pipeline because we do not support it yet
+      GST_WARNING ("Colorspace conversion using Color Matrix is not yet supported");
+      display->isAlive = FALSE;
+    }
+    else
+    {
+      GST_WARNING ("Context, ARB_fragment_shader supported: no");
+      GST_WARNING ("Context, GLEW_ARB_imaging supported: no");
+      GST_WARNING ("Context, GLEW_MESA_ycbcr_texture supported: no");
+
+      //turn off the pipeline because colorspace conversion is not possible
+      display->isAlive = FALSE;
+    }
+  }
+  break;
+  default:
+    g_assert_not_reached ();
   }
 }
 
 
 /* Called by the idle function */
 void
-gst_gl_display_thread_do_upload (GstGLDisplay * display)
+gst_gl_display_thread_do_upload (GstGLDisplay *display)
 {
   gst_gl_display_thread_do_upload_fill (display);
 
-  switch (display->upload_video_format) {
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_ARGB:
-    case GST_VIDEO_FORMAT_ABGR:
-    case GST_VIDEO_FORMAT_RGB:
-    case GST_VIDEO_FORMAT_BGR:
-      //color space conversion is not needed
-      //but if the size is different we need to redraw it
-      //using fbo
-      if (display->upload_width != display->upload_data_width ||
-          display->upload_height != display->upload_data_height)
-        gst_gl_display_thread_do_upload_draw (display);
-      break;
-    case GST_VIDEO_FORMAT_YUY2:
-    case GST_VIDEO_FORMAT_UYVY:
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-    case GST_VIDEO_FORMAT_AYUV:
+  switch (display->upload_video_format)
+  {
+  case GST_VIDEO_FORMAT_RGBx:
+  case GST_VIDEO_FORMAT_BGRx:
+  case GST_VIDEO_FORMAT_xRGB:
+  case GST_VIDEO_FORMAT_xBGR:
+  case GST_VIDEO_FORMAT_RGBA:
+  case GST_VIDEO_FORMAT_BGRA:
+  case GST_VIDEO_FORMAT_ARGB:
+  case GST_VIDEO_FORMAT_ABGR:
+  case GST_VIDEO_FORMAT_RGB:
+  case GST_VIDEO_FORMAT_BGR:
+    //color space conversion is not needed
+    //but if the size is different we need to redraw it
+    //using fbo
+    if (display->upload_width != display->upload_data_width ||
+        display->upload_height != display->upload_data_height)
+      gst_gl_display_thread_do_upload_draw (display);
+    break;
+  case GST_VIDEO_FORMAT_YUY2:
+  case GST_VIDEO_FORMAT_UYVY:
+  case GST_VIDEO_FORMAT_I420:
+  case GST_VIDEO_FORMAT_YV12:
+  case GST_VIDEO_FORMAT_AYUV:
     {
-      switch (display->upload_colorspace_conversion) {
-        case GST_GL_DISPLAY_CONVERSION_GLSL:
-          //color space conversion is needed
+      switch (display->upload_colorspace_conversion)
+      {
+      case GST_GL_DISPLAY_CONVERSION_GLSL:
+        //color space conversion is needed
+        gst_gl_display_thread_do_upload_draw (display);
+        break;
+      case GST_GL_DISPLAY_CONVERSION_MATRIX:
+        //color space conversion is needed
+        //not yet supported
+        break;
+      case GST_GL_DISPLAY_CONVERSION_MESA:
+        //color space conversion is not needed
+        //but if the size is different we need to redraw it
+        //using fbo
+        if (display->upload_width != display->upload_data_width ||
+            display->upload_height != display->upload_data_height)
           gst_gl_display_thread_do_upload_draw (display);
-          break;
-        case GST_GL_DISPLAY_CONVERSION_MATRIX:
-          //color space conversion is needed
-          //not yet supported
-          break;
-        case GST_GL_DISPLAY_CONVERSION_MESA:
-          //color space conversion is not needed
-          //but if the size is different we need to redraw it
-          //using fbo
-          if (display->upload_width != display->upload_data_width ||
-              display->upload_height != display->upload_data_height)
-            gst_gl_display_thread_do_upload_draw (display);
-          break;
-        default:
-          g_assert_not_reached ();
+        break;
+      default:
+             g_assert_not_reached ();
       }
     }
-      break;
-    default:
-      g_assert_not_reached ();
+    break;
+  default:
+         g_assert_not_reached ();
   }
 }
 
 
 /* Called in the gl thread */
 void
-gst_gl_display_thread_init_download (GstGLDisplay * display)
+gst_gl_display_thread_init_download (GstGLDisplay *display)
 {
-  switch (display->download_video_format) {
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_ARGB:
-    case GST_VIDEO_FORMAT_ABGR:
-    case GST_VIDEO_FORMAT_RGB:
-    case GST_VIDEO_FORMAT_BGR:
-      //color space conversion is not needed
-      break;
-    case GST_VIDEO_FORMAT_YUY2:
-    case GST_VIDEO_FORMAT_UYVY:
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-    case GST_VIDEO_FORMAT_AYUV:
-      //color space conversion is needed
+  switch (display->download_video_format)
+  {
+  case GST_VIDEO_FORMAT_RGBx:
+  case GST_VIDEO_FORMAT_BGRx:
+  case GST_VIDEO_FORMAT_xRGB:
+  case GST_VIDEO_FORMAT_xBGR:
+  case GST_VIDEO_FORMAT_RGBA:
+  case GST_VIDEO_FORMAT_BGRA:
+  case GST_VIDEO_FORMAT_ARGB:
+  case GST_VIDEO_FORMAT_ABGR:
+  case GST_VIDEO_FORMAT_RGB:
+  case GST_VIDEO_FORMAT_BGR:
+    //color space conversion is not needed
+    break;
+  case GST_VIDEO_FORMAT_YUY2:
+  case GST_VIDEO_FORMAT_UYVY:
+  case GST_VIDEO_FORMAT_I420:
+  case GST_VIDEO_FORMAT_YV12:
+  case GST_VIDEO_FORMAT_AYUV:
+    //color space conversion is needed
+  {
+
+    if (GLEW_EXT_framebuffer_object)
     {
+      GST_INFO ("Context, EXT_framebuffer_object supported: yes");
+
+      //-- init output frame buffer object (GL -> video)
+
+      //setup FBO
+      glGenFramebuffersEXT (1, &display->download_fbo);
+      glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, display->download_fbo);
+
+      //setup the render buffer for depth
+      glGenRenderbuffersEXT(1, &display->download_depth_buffer);
+      glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, display->download_depth_buffer);
+      glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT,
+                              display->download_width, display->download_height);
+
+      //setup a first texture to render to
+      glGenTextures (1, &display->download_texture);
+      glBindTexture(GL_TEXTURE_RECTANGLE_ARB, display->download_texture);
+      glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+                  display->download_width, display->download_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+      //attach the first texture to the FBO to renderer to
+      glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
+                               GL_TEXTURE_RECTANGLE_ARB, display->download_texture, 0);
+
+      switch (display->download_video_format)
+      {
+      case GST_VIDEO_FORMAT_YUY2:
+      case GST_VIDEO_FORMAT_UYVY:
+      case GST_VIDEO_FORMAT_AYUV:
+        //only one attached texture is needed
+        break;
+
+      case GST_VIDEO_FORMAT_I420:
+      case GST_VIDEO_FORMAT_YV12:
+        //setup a second texture to render to
+        glGenTextures (1, &display->download_texture_u);
+        glBindTexture(GL_TEXTURE_RECTANGLE_ARB, display->download_texture_u);
+        glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+                    display->download_width, display->download_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+        //attach the second texture to the FBO to renderer to
+        glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT,
+                                 GL_TEXTURE_RECTANGLE_ARB, display->download_texture_u, 0);
+
+        //setup a third texture to render to
+        glGenTextures (1, &display->download_texture_v);
+        glBindTexture(GL_TEXTURE_RECTANGLE_ARB, display->download_texture_v);
+        glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+                    display->download_width, display->download_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+        //attach the third texture to the FBO to renderer to
+        glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT2_EXT,
+                                 GL_TEXTURE_RECTANGLE_ARB, display->download_texture_v, 0);
+
+        display->multipleRT[0] = GL_COLOR_ATTACHMENT0_EXT;
+        display->multipleRT[1] = GL_COLOR_ATTACHMENT1_EXT;
+        display->multipleRT[2] = GL_COLOR_ATTACHMENT2_EXT;
+        break;
+      default:
+        g_assert_not_reached ();
+      }
 
-      if (GLEW_EXT_framebuffer_object) {
-        GST_INFO ("Context, EXT_framebuffer_object supported: yes");
-
-        //-- init output frame buffer object (GL -> video)
-
-        //setup FBO
-        glGenFramebuffersEXT (1, &display->download_fbo);
-        glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, display->download_fbo);
-
-        //setup the render buffer for depth
-        glGenRenderbuffersEXT (1, &display->download_depth_buffer);
-        glBindRenderbufferEXT (GL_RENDERBUFFER_EXT,
-            display->download_depth_buffer);
-        glRenderbufferStorageEXT (GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT,
-            display->download_width, display->download_height);
-
-        //setup a first texture to render to
-        glGenTextures (1, &display->download_texture);
-        glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->download_texture);
-        glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-            display->download_width, display->download_height, 0, GL_RGBA,
-            GL_UNSIGNED_BYTE, NULL);
-        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-            GL_LINEAR);
-        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-            GL_LINEAR);
-        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-            GL_CLAMP_TO_EDGE);
-        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-            GL_CLAMP_TO_EDGE);
-
-        //attach the first texture to the FBO to renderer to
-        glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
-            GL_TEXTURE_RECTANGLE_ARB, display->download_texture, 0);
-
-        switch (display->download_video_format) {
-          case GST_VIDEO_FORMAT_YUY2:
-          case GST_VIDEO_FORMAT_UYVY:
-          case GST_VIDEO_FORMAT_AYUV:
-            //only one attached texture is needed
-            break;
-
-          case GST_VIDEO_FORMAT_I420:
-          case GST_VIDEO_FORMAT_YV12:
-            //setup a second texture to render to
-            glGenTextures (1, &display->download_texture_u);
-            glBindTexture (GL_TEXTURE_RECTANGLE_ARB,
-                display->download_texture_u);
-            glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-                display->download_width, display->download_height, 0, GL_RGBA,
-                GL_UNSIGNED_BYTE, NULL);
-            glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-                GL_LINEAR);
-            glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-                GL_LINEAR);
-            glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-                GL_CLAMP_TO_EDGE);
-            glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-                GL_CLAMP_TO_EDGE);
-
-            //attach the second texture to the FBO to renderer to
-            glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,
-                GL_COLOR_ATTACHMENT1_EXT, GL_TEXTURE_RECTANGLE_ARB,
-                display->download_texture_u, 0);
-
-            //setup a third texture to render to
-            glGenTextures (1, &display->download_texture_v);
-            glBindTexture (GL_TEXTURE_RECTANGLE_ARB,
-                display->download_texture_v);
-            glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-                display->download_width, display->download_height, 0, GL_RGBA,
-                GL_UNSIGNED_BYTE, NULL);
-            glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-                GL_LINEAR);
-            glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-                GL_LINEAR);
-            glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-                GL_CLAMP_TO_EDGE);
-            glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-                GL_CLAMP_TO_EDGE);
-
-            //attach the third texture to the FBO to renderer to
-            glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT,
-                GL_COLOR_ATTACHMENT2_EXT, GL_TEXTURE_RECTANGLE_ARB,
-                display->download_texture_v, 0);
-
-            display->multipleRT[0] = GL_COLOR_ATTACHMENT0_EXT;
-            display->multipleRT[1] = GL_COLOR_ATTACHMENT1_EXT;
-            display->multipleRT[2] = GL_COLOR_ATTACHMENT2_EXT;
-            break;
-          default:
-            g_assert_not_reached ();
-        }
-
-        //attach the depth render buffer to the FBO
-        glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT,
-            GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT,
-            display->download_depth_buffer);
+      //attach the depth render buffer to the FBO
+      glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
+                                  GL_RENDERBUFFER_EXT, display->download_depth_buffer);
 
-        gst_gl_display_check_framebuffer_status ();
+      gst_gl_display_check_framebuffer_status();
 
-        g_assert (glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT) ==
-            GL_FRAMEBUFFER_COMPLETE_EXT);
+      g_assert (glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT) ==
+               GL_FRAMEBUFFER_COMPLETE_EXT);
 
-        //unbind the FBO
-        glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0);
-      } else {
+      //unbind the FBO
+      glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+      }
+      else
+      {
         //turn off the pipeline because Frame buffer object is a requirement when using filters
         //or when using GLSL colorspace conversion
         GST_WARNING ("Context, EXT_framebuffer_object supported: no");
         display->isAlive = FALSE;
       }
     }
-      break;
-    default:
-      g_assert_not_reached ();
+    break;
+  default:
+    g_assert_not_reached ();
   }
 
-  switch (display->download_video_format) {
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_ARGB:
-    case GST_VIDEO_FORMAT_ABGR:
-    case GST_VIDEO_FORMAT_RGB:
-    case GST_VIDEO_FORMAT_BGR:
-      //color space conversion is not needed
-      break;
-    case GST_VIDEO_FORMAT_YUY2:
-    case GST_VIDEO_FORMAT_UYVY:
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-    case GST_VIDEO_FORMAT_AYUV:
-      //color space conversion is needed
+  switch (display->download_video_format)
+  {
+  case GST_VIDEO_FORMAT_RGBx:
+  case GST_VIDEO_FORMAT_BGRx:
+  case GST_VIDEO_FORMAT_xRGB:
+  case GST_VIDEO_FORMAT_xBGR:
+  case GST_VIDEO_FORMAT_RGBA:
+  case GST_VIDEO_FORMAT_BGRA:
+  case GST_VIDEO_FORMAT_ARGB:
+  case GST_VIDEO_FORMAT_ABGR:
+  case GST_VIDEO_FORMAT_RGB:
+  case GST_VIDEO_FORMAT_BGR:
+    //color space conversion is not needed
+    break;
+  case GST_VIDEO_FORMAT_YUY2:
+  case GST_VIDEO_FORMAT_UYVY:
+  case GST_VIDEO_FORMAT_I420:
+  case GST_VIDEO_FORMAT_YV12:
+  case GST_VIDEO_FORMAT_AYUV:
+    //color space conversion is needed
+  {
+    //check if fragment shader is available, then load them
+    //GLSL is a requirement for donwload
+    if (GLEW_ARB_fragment_shader)
     {
-      //check if fragment shader is available, then load them
-      //GLSL is a requirement for donwload
-      if (GLEW_ARB_fragment_shader) {
-        switch (display->download_video_format) {
-          case GST_VIDEO_FORMAT_YUY2:
-          {
-            gchar text_shader_download_YUY2[2048];
-            sprintf (text_shader_download_YUY2,
-                display->text_shader_download_YUY2_UYVY, "y2,u,y1,v");
-
-            display->shader_download_YUY2 = gst_gl_shader_new ();
-            if (!gst_gl_shader_compile_and_check (display->shader_download_YUY2,
-                    text_shader_download_YUY2, GST_GL_SHADER_FRAGMENT_SOURCE)) {
-              display->isAlive = FALSE;
-              g_object_unref (G_OBJECT (display->shader_download_YUY2));
-              display->shader_download_YUY2 = NULL;
-            }
-          }
-            break;
-          case GST_VIDEO_FORMAT_UYVY:
-          {
-            gchar text_shader_download_UYVY[2048];
-            sprintf (text_shader_download_UYVY,
-                display->text_shader_download_YUY2_UYVY, "v,y1,u,y2");
-
-            display->shader_download_UYVY = gst_gl_shader_new ();
-            if (!gst_gl_shader_compile_and_check (display->shader_download_UYVY,
-                    text_shader_download_UYVY, GST_GL_SHADER_FRAGMENT_SOURCE)) {
-              display->isAlive = FALSE;
-              g_object_unref (G_OBJECT (display->shader_download_UYVY));
-              display->shader_download_UYVY = NULL;
-            }
-          }
-            break;
-          case GST_VIDEO_FORMAT_I420:
-          case GST_VIDEO_FORMAT_YV12:
-            display->shader_download_I420_YV12 = gst_gl_shader_new ();
-            if (!gst_gl_shader_compile_and_check
-                (display->shader_download_I420_YV12,
-                    display->text_shader_download_I420_YV12,
-                    GST_GL_SHADER_FRAGMENT_SOURCE)) {
-              display->isAlive = FALSE;
-              g_object_unref (G_OBJECT (display->shader_download_I420_YV12));
-              display->shader_download_I420_YV12 = NULL;
-            }
-            break;
-          case GST_VIDEO_FORMAT_AYUV:
-            display->shader_download_AYUV = gst_gl_shader_new ();
-            if (!gst_gl_shader_compile_and_check (display->shader_download_AYUV,
-                    display->text_shader_download_AYUV,
-                    GST_GL_SHADER_FRAGMENT_SOURCE)) {
-              display->isAlive = FALSE;
-              g_object_unref (G_OBJECT (display->shader_download_AYUV));
-              display->shader_download_AYUV = NULL;
-            }
-            break;
-          default:
-            g_assert_not_reached ();
-        }
-      } else {
-        //turn off the pipeline because colorspace conversion is not possible
-        GST_WARNING ("Context, ARB_fragment_shader supported: no");
-        display->isAlive = FALSE;
+      switch (display->download_video_format)
+      {
+      case GST_VIDEO_FORMAT_YUY2:
+      {
+       gchar text_shader_download_YUY2[2048];
+       sprintf (text_shader_download_YUY2, display->text_shader_download_YUY2_UYVY, "y2,u,y1,v");
+
+       display->shader_download_YUY2 = gst_gl_shader_new ();
+       if(!gst_gl_shader_compile_and_check (display->shader_download_YUY2,
+                                            text_shader_download_YUY2, GST_GL_SHADER_FRAGMENT_SOURCE))
+       {
+         display->isAlive = FALSE;
+         g_object_unref (G_OBJECT (display->shader_download_YUY2));
+         display->shader_download_YUY2 = NULL;
+       }
       }
-    }
       break;
-    default:
-      g_assert_not_reached ();
+      case GST_VIDEO_FORMAT_UYVY:
+      {
+       gchar text_shader_download_UYVY[2048];
+       sprintf (text_shader_download_UYVY, display->text_shader_download_YUY2_UYVY, "v,y1,u,y2");
+
+       display->shader_download_UYVY = gst_gl_shader_new ();
+       if(!gst_gl_shader_compile_and_check (display->shader_download_UYVY,
+                                            text_shader_download_UYVY, GST_GL_SHADER_FRAGMENT_SOURCE))
+       {
+         display->isAlive = FALSE;
+         g_object_unref (G_OBJECT (display->shader_download_UYVY));
+         display->shader_download_UYVY = NULL;
+       }
+      }
+      break;
+      case GST_VIDEO_FORMAT_I420:
+      case GST_VIDEO_FORMAT_YV12:
+       display->shader_download_I420_YV12 = gst_gl_shader_new ();
+       if(!gst_gl_shader_compile_and_check (display->shader_download_I420_YV12,
+                                            display->text_shader_download_I420_YV12, GST_GL_SHADER_FRAGMENT_SOURCE))
+       {
+         display->isAlive = FALSE;
+         g_object_unref (G_OBJECT (display->shader_download_I420_YV12));
+         display->shader_download_I420_YV12 = NULL;
+       }
+       break;
+      case GST_VIDEO_FORMAT_AYUV:
+       display->shader_download_AYUV = gst_gl_shader_new ();
+       if(!gst_gl_shader_compile_and_check (display->shader_download_AYUV,
+                                            display->text_shader_download_AYUV, GST_GL_SHADER_FRAGMENT_SOURCE))
+       {
+         display->isAlive = FALSE;
+         g_object_unref (G_OBJECT (display->shader_download_AYUV));
+         display->shader_download_AYUV = NULL;
+       }
+       break;
+      default:
+       g_assert_not_reached ();
+      }
+    }
+    else
+    {
+      //turn off the pipeline because colorspace conversion is not possible
+      GST_WARNING ("Context, ARB_fragment_shader supported: no");
+      display->isAlive = FALSE;
+    }
+  }
+  break;
+  default:
+    g_assert_not_reached ();
   }
 }
 
@@ -1074,37 +1090,38 @@ gst_gl_display_thread_init_download (GstGLDisplay * display)
 void
 gst_gl_display_thread_do_download (GstGLDisplay * display)
 {
-  switch (display->download_video_format) {
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_ARGB:
-    case GST_VIDEO_FORMAT_ABGR:
-    case GST_VIDEO_FORMAT_RGB:
-    case GST_VIDEO_FORMAT_BGR:
-      //color space conversion is not needed
-      gst_gl_display_thread_do_download_draw_rgb (display);
-      break;
-    case GST_VIDEO_FORMAT_YUY2:
-    case GST_VIDEO_FORMAT_UYVY:
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-    case GST_VIDEO_FORMAT_AYUV:
-      //color space conversion is needed
-      gst_gl_display_thread_do_download_draw_yuv (display);
-      break;
-    default:
-      g_assert_not_reached ();
+  switch (display->download_video_format)
+  {
+  case GST_VIDEO_FORMAT_RGBx:
+  case GST_VIDEO_FORMAT_BGRx:
+  case GST_VIDEO_FORMAT_xRGB:
+  case GST_VIDEO_FORMAT_xBGR:
+  case GST_VIDEO_FORMAT_RGBA:
+  case GST_VIDEO_FORMAT_BGRA:
+  case GST_VIDEO_FORMAT_ARGB:
+  case GST_VIDEO_FORMAT_ABGR:
+  case GST_VIDEO_FORMAT_RGB:
+  case GST_VIDEO_FORMAT_BGR:
+    //color space conversion is not needed
+    gst_gl_display_thread_do_download_draw_rgb (display);
+    break;
+  case GST_VIDEO_FORMAT_YUY2:
+  case GST_VIDEO_FORMAT_UYVY:
+  case GST_VIDEO_FORMAT_I420:
+  case GST_VIDEO_FORMAT_YV12:
+  case GST_VIDEO_FORMAT_AYUV:
+    //color space conversion is needed
+    gst_gl_display_thread_do_download_draw_yuv (display);
+    break;
+  default:
+    g_assert_not_reached ();
   }
 }
 
 
 /* Called in the gl thread */
 void
-gst_gl_display_thread_gen_fbo (GstGLDisplay * display)
+gst_gl_display_thread_gen_fbo (GstGLDisplay *display)
 {
   //a texture must be attached to the FBO
   GLuint fake_texture = 0;
@@ -1117,36 +1134,36 @@ gst_gl_display_thread_gen_fbo (GstGLDisplay * display)
     display->isAlive = FALSE;
     return;
   }
+
   //setup FBO
   glGenFramebuffersEXT (1, &display->generated_fbo);
   glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, display->generated_fbo);
 
   //setup the render buffer for depth
-  glGenRenderbuffersEXT (1, &display->generated_depth_buffer);
-  glBindRenderbufferEXT (GL_RENDERBUFFER_EXT, display->generated_depth_buffer);
-  glRenderbufferStorageEXT (GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT,
-      display->gen_fbo_width, display->gen_fbo_height);
+  glGenRenderbuffersEXT(1, &display->generated_depth_buffer);
+  glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, display->generated_depth_buffer);
+  glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT,
+                          display->gen_fbo_width, display->gen_fbo_height);
 
   //setup a texture to render to
   glGenTextures (1, &fake_texture);
-  glBindTexture (GL_TEXTURE_RECTANGLE_ARB, fake_texture);
-  glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-      display->gen_fbo_width, display->gen_fbo_height, 0, GL_RGBA,
-      GL_UNSIGNED_BYTE, NULL);
+  glBindTexture(GL_TEXTURE_RECTANGLE_ARB, fake_texture);
+  glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+              display->gen_fbo_width, display->gen_fbo_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
 
   //attach the texture to the FBO to renderer to
-  glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
-      GL_TEXTURE_RECTANGLE_ARB, fake_texture, 0);
+  glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
+                           GL_TEXTURE_RECTANGLE_ARB, fake_texture, 0);
 
   //attach the depth render buffer to the FBO
-  glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
-      GL_RENDERBUFFER_EXT, display->generated_depth_buffer);
+  glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
+                              GL_RENDERBUFFER_EXT, display->generated_depth_buffer);
 
   g_assert (glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT) ==
-      GL_FRAMEBUFFER_COMPLETE_EXT);
+           GL_FRAMEBUFFER_COMPLETE_EXT);
 
   //unbind the FBO
-  glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0);
+  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
 
   glDeleteTextures (1, &fake_texture);
 }
@@ -1154,78 +1171,79 @@ gst_gl_display_thread_gen_fbo (GstGLDisplay * display)
 
 /* Called in the gl thread */
 void
-gst_gl_display_thread_use_fbo (GstGLDisplay * display)
+gst_gl_display_thread_use_fbo (GstGLDisplay *display)
 {
-  glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, display->use_fbo);
+  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, display->use_fbo);
 
   //setup a texture to render to
-  glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->use_fbo_texture);
+  glBindTexture(GL_TEXTURE_RECTANGLE_ARB, display->use_fbo_texture);
 
   //attach the texture to the FBO to renderer to
-  glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
-      GL_TEXTURE_RECTANGLE_ARB, display->use_fbo_texture, 0);
+  glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
+                           GL_TEXTURE_RECTANGLE_ARB, display->use_fbo_texture, 0);
 
   if (GLEW_ARB_fragment_shader)
     gst_gl_shader_use (NULL);
 
 
-  glPushAttrib (GL_VIEWPORT_BIT);
-
-  glMatrixMode (GL_PROJECTION);
-  glPushMatrix ();
-  glLoadIdentity ();
-
-  switch (display->use_fbo_projection) {
-    case GST_GL_DISPLAY_PROJECTION_ORTHO2D:
-      gluOrtho2D (display->use_fbo_proj_param1, display->use_fbo_proj_param2,
-          display->use_fbo_proj_param3, display->use_fbo_proj_param4);
-      break;
-    case GST_GL_DISPLAY_PROJECTION_PERSPECIVE:
-      gluPerspective (display->use_fbo_proj_param1,
-          display->use_fbo_proj_param2, display->use_fbo_proj_param3,
-          display->use_fbo_proj_param4);
-      break;
-    default:
-      g_assert_not_reached ();
+  glPushAttrib(GL_VIEWPORT_BIT);
+
+  glMatrixMode(GL_PROJECTION);
+  glPushMatrix();
+  glLoadIdentity();
+
+  switch (display->use_fbo_projection)
+  {
+  case GST_GL_DISPLAY_PROJECTION_ORTHO2D:
+    gluOrtho2D(display->use_fbo_proj_param1, display->use_fbo_proj_param2,
+              display->use_fbo_proj_param3, display->use_fbo_proj_param4);
+    break;
+  case GST_GL_DISPLAY_PROJECTION_PERSPECIVE:
+    gluPerspective(display->use_fbo_proj_param1, display->use_fbo_proj_param2,
+                  display->use_fbo_proj_param3, display->use_fbo_proj_param4);
+    break;
+  default:
+    g_assert_not_reached ();
   }
 
-  glMatrixMode (GL_MODELVIEW);
-  glPushMatrix ();
-  glLoadIdentity ();
+  glMatrixMode(GL_MODELVIEW);
+  glPushMatrix();
+  glLoadIdentity();
 
-  glViewport (0, 0, display->use_fbo_width, display->use_fbo_height);
+  glViewport(0, 0, display->use_fbo_width, display->use_fbo_height);
 
-  glDrawBuffer (GL_COLOR_ATTACHMENT0_EXT);
-  glClearColor (0.0, 0.0, 0.0, 0.0);
-  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+  glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
+  glClearColor(0.0, 0.0, 0.0, 0.0);
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   //the opengl scene
-  display->use_fbo_scene_cb (display->input_texture_width,
-      display->input_texture_height, display->input_texture,
-      display->use_fbo_stuff);
+  display->use_fbo_scene_cb (display->input_texture_width, display->input_texture_height,
+                            display->input_texture, display->use_fbo_stuff);
 
-  glDrawBuffer (GL_NONE);
+  glDrawBuffer(GL_NONE);
 
-  glMatrixMode (GL_PROJECTION);
-  glPopMatrix ();
-  glMatrixMode (GL_MODELVIEW);
-  glPopMatrix ();
-  glPopAttrib ();
+  glMatrixMode(GL_PROJECTION);
+  glPopMatrix();
+  glMatrixMode(GL_MODELVIEW);
+  glPopMatrix();
+  glPopAttrib();
 
-  glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0);
+  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
 }
 
 
 /* Called in the gl thread */
 void
-gst_gl_display_thread_del_fbo (GstGLDisplay * display)
+gst_gl_display_thread_del_fbo (GstGLDisplay* display)
 {
-  if (display->del_fbo) {
+  if (display->del_fbo)
+  {
     glDeleteFramebuffersEXT (1, &display->del_fbo);
     display->del_fbo = 0;
   }
-  if (display->del_depth_buffer) {
-    glDeleteRenderbuffersEXT (1, &display->del_depth_buffer);
+  if (display->del_depth_buffer)
+  {
+    glDeleteRenderbuffersEXT(1, &display->del_depth_buffer);
     display->del_depth_buffer = 0;
   }
 }
@@ -1233,26 +1251,27 @@ gst_gl_display_thread_del_fbo (GstGLDisplay * display)
 
 /* Called in the gl thread */
 void
-gst_gl_display_thread_gen_shader (GstGLDisplay * display)
+gst_gl_display_thread_gen_shader (GstGLDisplay* display)
 {
-  if (GLEW_ARB_fragment_shader) {
+  if (GLEW_ARB_fragment_shader)
+  {
     if (display->gen_shader_vertex_source ||
-        display->gen_shader_fragment_source) {
+         display->gen_shader_fragment_source)
+    {
       gboolean isAlive = TRUE;
       GError *error = NULL;
 
       display->gen_shader = gst_gl_shader_new ();
 
       if (display->gen_shader_vertex_source)
-        gst_gl_shader_set_vertex_source (display->gen_shader,
-            display->gen_shader_vertex_source);
+        gst_gl_shader_set_vertex_source(display->gen_shader, display->gen_shader_vertex_source);
 
       if (display->gen_shader_fragment_source)
-        gst_gl_shader_set_fragment_source (display->gen_shader,
-            display->gen_shader_fragment_source);
+        gst_gl_shader_set_fragment_source(display->gen_shader, display->gen_shader_fragment_source);
 
       gst_gl_shader_compile (display->gen_shader, &error);
-      if (error) {
+      if (error)
+      {
         GST_ERROR ("%s", error->message);
         g_error_free (error);
         error = NULL;
@@ -1260,13 +1279,16 @@ gst_gl_display_thread_gen_shader (GstGLDisplay * display)
         isAlive = FALSE;
       }
 
-      if (!isAlive) {
+      if (!isAlive)
+      {
         display->isAlive = FALSE;
         g_object_unref (G_OBJECT (display->gen_shader));
         display->gen_shader = NULL;
       }
     }
-  } else {
+  }
+  else
+  {
     GST_WARNING ("One of the filter required ARB_fragment_shader");
     display->isAlive = FALSE;
     display->gen_shader = NULL;
@@ -1276,9 +1298,10 @@ gst_gl_display_thread_gen_shader (GstGLDisplay * display)
 
 /* Called in the gl thread */
 void
-gst_gl_display_thread_del_shader (GstGLDisplay * display)
+gst_gl_display_thread_del_shader (GstGLDisplay* display)
 {
-  if (display->del_shader) {
+  if (display->del_shader)
+  {
     g_object_unref (G_OBJECT (display->del_shader));
     display->del_shader = NULL;
   }
@@ -1310,25 +1333,25 @@ gst_gl_display_unlock (GstGLDisplay * display)
 
 
 void
-gst_gl_display_on_resize (GstGLDisplay * display, gint width, gint height)
+gst_gl_display_on_resize (GstGLDisplay* display, gint width, gint height)
 {
   //check if a client reshape callback is registered
   if (display->clientReshapeCallback)
-    display->clientReshapeCallback (width, height);
+    display->clientReshapeCallback(width, height);
 
   //default reshape
-  else {
-    glViewport (0, 0, width, height);
-    glMatrixMode (GL_PROJECTION);
-    glLoadIdentity ();
-    gluOrtho2D (0, width, 0, height);
-    glMatrixMode (GL_MODELVIEW);
+  else
+  {
+    glViewport(0, 0, width, height);
+    glMatrixMode(GL_PROJECTION);
+    glLoadIdentity();
+    gluOrtho2D(0, width, 0, height);
+    glMatrixMode(GL_MODELVIEW);
   }
 }
 
 
-void
-gst_gl_display_on_draw (GstGLDisplay * display)
+void gst_gl_display_on_draw(GstGLDisplay* display)
 {
   //check if tecture is ready for being drawn
   if (!display->redisplay_texture)
@@ -1344,18 +1367,20 @@ gst_gl_display_on_draw (GstGLDisplay * display)
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, 0);
 
   //check if a client draw callback is registered
-  if (display->clientDrawCallback) {
+  if (display->clientDrawCallback)
+  {
     gboolean doRedisplay =
-        display->clientDrawCallback (display->redisplay_texture,
-        display->redisplay_texture_width, display->redisplay_texture_height);
+      display->clientDrawCallback (display->redisplay_texture,
+                                 display->redisplay_texture_width, display->redisplay_texture_height);
 
     if (doRedisplay && display->gl_window)
       gst_gl_window_draw_unlocked (display->gl_window);
   }
   //default opengl scene
-  else {
+  else
+  {
 
-    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
     glMatrixMode (GL_PROJECTION);
     glLoadIdentity ();
@@ -1370,18 +1395,16 @@ gst_gl_display_on_draw (GstGLDisplay * display)
     glVertex2f (-1.0f, 1.0f);
     glTexCoord2i (0, display->redisplay_texture_height);
     glVertex2f (-1.0f, -1.0f);
-    glTexCoord2i (display->redisplay_texture_width,
-        display->redisplay_texture_height);
+    glTexCoord2i (display->redisplay_texture_width, display->redisplay_texture_height);
     glVertex2f (1.0f, -1.0f);
     glEnd ();
 
-    glDisable (GL_TEXTURE_RECTANGLE_ARB);
-  }                             //end default opengl scene
+    glDisable(GL_TEXTURE_RECTANGLE_ARB);
+  }//end default opengl scene
 }
 
 
-void
-gst_gl_display_on_close (GstGLDisplay * display)
+void gst_gl_display_on_close (GstGLDisplay* display)
 {
   GST_INFO ("on close");
 
@@ -1392,34 +1415,37 @@ gst_gl_display_on_close (GstGLDisplay * display)
 /* Generate a texture if no one is available in the pool
  * Called in the gl thread */
 void
-gst_gl_display_glgen_texture (GstGLDisplay * display, GLuint * pTexture,
-    GLint width, GLint height)
+gst_gl_display_glgen_texture (GstGLDisplay* display, GLuint* pTexture, GLint width, GLint height)
 {
-  if (display->isAlive) {
-    GQueue *sub_texture_pool = NULL;
+  if (display->isAlive)
+  {
+    GQueue* sub_texture_pool = NULL;
 
     //make a unique key from w and h
     //the key cannot be w*h because (4*6 = 6*4 = 2*12 = 12*2)
-    guint key = (gint) width;
+    guint key = (gint)width;
     key <<= 16;
-    key |= (gint) height;
-    sub_texture_pool =
-        g_hash_table_lookup (display->texture_pool, GUINT_TO_POINTER (key));
+    key |= (gint)height;
+    sub_texture_pool = g_hash_table_lookup (display->texture_pool, GUINT_TO_POINTER (key));
 
     //if there is a sub texture pool associated to th given key
-    if (sub_texture_pool && g_queue_get_length (sub_texture_pool) > 0) {
+    if (sub_texture_pool && g_queue_get_length(sub_texture_pool) > 0)
+    {
       //a texture is available in the pool
-      GstGLDisplayTex *tex = g_queue_pop_head (sub_texture_pool);
+      GstGLDisplayTextex = g_queue_pop_head (sub_texture_pool);
       *pTexture = tex->texture;
       g_free (tex);
       GST_LOG ("get texture id:%d from the sub texture pool: %d",
-          *pTexture, key);
-    } else {
+        *pTexture, key);
+    }
+    else
+    {
       //sub texture pool does not exist yet or empty
       glGenTextures (1, pTexture);
       glBindTexture (GL_TEXTURE_RECTANGLE_ARB, *pTexture);
 
-      switch (display->upload_video_format) {
+      switch (display->upload_video_format)
+      {
         case GST_VIDEO_FORMAT_RGB:
         case GST_VIDEO_FORMAT_BGR:
         case GST_VIDEO_FORMAT_RGBx:
@@ -1430,53 +1456,51 @@ gst_gl_display_glgen_texture (GstGLDisplay * display, GLuint * pTexture,
         case GST_VIDEO_FORMAT_BGRA:
         case GST_VIDEO_FORMAT_ARGB:
         case GST_VIDEO_FORMAT_ABGR:
-          glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-              width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+          glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+            width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
           break;
         case GST_VIDEO_FORMAT_YUY2:
         case GST_VIDEO_FORMAT_UYVY:
-          switch (display->upload_colorspace_conversion) {
-            case GST_GL_DISPLAY_CONVERSION_GLSL:
-            case GST_GL_DISPLAY_CONVERSION_MATRIX:
-              glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-                  width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-              break;
-            case GST_GL_DISPLAY_CONVERSION_MESA:
-              if (display->upload_width != display->upload_data_width ||
-                  display->upload_height != display->upload_data_height)
-                glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-                    width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-              else
-                glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_YCBCR_MESA, width,
-                    height, 0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, NULL);
-              break;
-            default:
-              g_assert_not_reached ();
+          switch (display->upload_colorspace_conversion)
+          {
+          case GST_GL_DISPLAY_CONVERSION_GLSL:
+          case GST_GL_DISPLAY_CONVERSION_MATRIX:
+            glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+              width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+            break;
+          case GST_GL_DISPLAY_CONVERSION_MESA:
+            if (display->upload_width != display->upload_data_width ||
+                display->upload_height != display->upload_data_height)
+              glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+                width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+            else
+              glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_YCBCR_MESA,width, height,
+                0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, NULL);
+            break;
+          default:
+            g_assert_not_reached ();
           }
           break;
         case GST_VIDEO_FORMAT_I420:
         case GST_VIDEO_FORMAT_YV12:
         case GST_VIDEO_FORMAT_AYUV:
-          glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-              width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+          glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+            width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
           break;
         default:
-          g_assert_not_reached ();
+            g_assert_not_reached ();
       }
 
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-          GL_CLAMP_TO_EDGE);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-          GL_CLAMP_TO_EDGE);
+      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
 
       GST_LOG ("generate texture id:%d", *pTexture);
     }
 
-  } else
+  }
+  else
     *pTexture = 0;
 }
 
@@ -1484,33 +1508,31 @@ gst_gl_display_glgen_texture (GstGLDisplay * display, GLuint * pTexture,
 /* Delete a texture, actually the texture is just added to the pool
  * Called in the gl thread */
 void
-gst_gl_display_gldel_texture (GstGLDisplay * display, GLuint * pTexture,
-    GLint width, GLint height)
+gst_gl_display_gldel_texture (GstGLDisplay* display, GLuint* pTexture, GLint width, GLint height)
 {
   //Each existing texture is destroyed only when the pool is destroyed
   //The pool of textures is deleted in the GstGLDisplay destructor
 
-  GQueue *sub_texture_pool = NULL;
-  GstGLDisplayTex *tex = NULL;
+  GQueuesub_texture_pool = NULL;
+  GstGLDisplayTextex = NULL;
 
   //make a unique key from w and h
   //the key cannot be w*h because (4*6 = 6*4 = 2*12 = 12*2)
-  guint key = (gint) width;
+  guint key = (gint)width;
   key <<= 16;
-  key |= (gint) height;
-  sub_texture_pool =
-      g_hash_table_lookup (display->texture_pool, GUINT_TO_POINTER (key));
+  key |= (gint)height;
+  sub_texture_pool = g_hash_table_lookup (display->texture_pool, GUINT_TO_POINTER (key));
 
   //if the size is known
-  if (!sub_texture_pool) {
+  if (!sub_texture_pool)
+  {
     sub_texture_pool = g_queue_new ();
-    g_hash_table_insert (display->texture_pool, GUINT_TO_POINTER (key),
-        sub_texture_pool);
+    g_hash_table_insert (display->texture_pool, GUINT_TO_POINTER (key), sub_texture_pool);
 
     GST_INFO ("one more sub texture pool inserted: %d ", key);
-    GST_INFO ("nb sub texture pools: %d",
-        g_hash_table_size (display->texture_pool));
+    GST_INFO ("nb sub texture pools: %d", g_hash_table_size (display->texture_pool));
   }
+
   //contruct a sub texture pool element
   tex = g_new0 (GstGLDisplayTex, 1);
   tex->texture = *pTexture;
@@ -1519,21 +1541,20 @@ gst_gl_display_gldel_texture (GstGLDisplay * display, GLuint * pTexture,
   //add tex to the pool, it makes texture allocation reusable
   g_queue_push_tail (sub_texture_pool, tex);
   GST_LOG ("texture id:%d added to the sub texture pool: %d",
-      tex->texture, key);
+    tex->texture, key);
   GST_LOG ("%d texture(s) in the sub texture pool: %d",
-      g_queue_get_length (sub_texture_pool), key);
+    g_queue_get_length (sub_texture_pool), key);
 }
 
 
 /* call when a sub texture pool is removed from the texture pool (ghash table) */
-gboolean
-gst_gl_display_texture_pool_func_clean (gpointer key, gpointer value,
-    gpointer data)
+gboolean gst_gl_display_texture_pool_func_clean (gpointer key, gpointer value, gpointer data)
 {
-  GQueue *sub_texture_pool = (GQueue *) value;
+  GQueue* sub_texture_pool = (GQueue*) value;
 
-  while (g_queue_get_length (sub_texture_pool) > 0) {
-    GstGLDisplayTex *tex = g_queue_pop_head (sub_texture_pool);
+  while (g_queue_get_length (sub_texture_pool) > 0)
+  {
+    GstGLDisplayTex* tex = g_queue_pop_head (sub_texture_pool);
     GST_INFO ("trying to delete texture id: %d deleted", tex->texture);
     glDeleteTextures (1, &tex->texture);
     GST_INFO ("texture id: %d deleted", tex->texture);
@@ -1548,20 +1569,21 @@ gst_gl_display_texture_pool_func_clean (gpointer key, gpointer value,
 
 /* called in the gl thread */
 void
-gst_gl_display_check_framebuffer_status (void)
+gst_gl_display_check_framebuffer_status(void)
 {
-  GLenum status = glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT);
+  GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
 
-  switch (status) {
-    case GL_FRAMEBUFFER_COMPLETE_EXT:
-      break;
+  switch(status)
+  {
+  case GL_FRAMEBUFFER_COMPLETE_EXT:
+    break;
 
-    case GL_FRAMEBUFFER_UNSUPPORTED_EXT:
-      GST_ERROR ("GL_FRAMEBUFFER_UNSUPPORTED_EXT");
-      break;
+  case GL_FRAMEBUFFER_UNSUPPORTED_EXT:
+    GST_ERROR ("GL_FRAMEBUFFER_UNSUPPORTED_EXT");
+    break;
 
-    default:
-      GST_ERROR ("General FBO error");
+  default:
+    GST_ERROR ("General FBO error");
   }
 }
 
@@ -1577,7 +1599,7 @@ gst_gl_display_check_framebuffer_status (void)
 
 
 /* Called by the first gl element of a video/x-raw-gl flow */
-GstGLDisplay *
+GstGLDisplay*
 gst_gl_display_new (void)
 {
   return g_object_new (GST_TYPE_GL_DISPLAY, NULL);
@@ -1587,8 +1609,8 @@ gst_gl_display_new (void)
 /* Create an opengl context (one context for one GstGLDisplay)
  * Called by the first gl element of a video/x-raw-gl flow */
 void
-gst_gl_display_create_context (GstGLDisplay * display,
-    GLint width, GLint height)
+gst_gl_display_create_context (GstGLDisplay *display,
+                               GLint width, GLint height)
 {
   gst_gl_display_lock (display);
 
@@ -1596,7 +1618,7 @@ gst_gl_display_create_context (GstGLDisplay * display,
   display->upload_height = height;
 
   display->gl_thread = g_thread_create (
-      (GThreadFunc) gst_gl_display_thread_create_context, display, TRUE, NULL);
+    (GThreadFunc) gst_gl_display_thread_create_context, display, TRUE, NULL);
 
   g_cond_wait (display->cond_create_context, display->mutex);
 
@@ -1608,15 +1630,16 @@ gst_gl_display_create_context (GstGLDisplay * display,
 
 /* Called by the glimagesink element */
 gboolean
-gst_gl_display_redisplay (GstGLDisplay * display, GLuint texture, gint width,
-    gint height)
+gst_gl_display_redisplay (GstGLDisplay* display, GLuint texture, gint width, gint height)
 {
   gboolean isAlive = TRUE;
 
   gst_gl_display_lock (display);
   isAlive = display->isAlive;
-  if (isAlive) {
-    if (texture) {
+  if (isAlive)
+  {
+    if (texture)
+    {
       display->redisplay_texture = texture;
       display->redisplay_texture_width = width;
       display->redisplay_texture_height = height;
@@ -1630,27 +1653,24 @@ gst_gl_display_redisplay (GstGLDisplay * display, GLuint texture, gint width,
 }
 
 void
-gst_gl_display_thread_add (GstGLDisplay * display,
-    GstGLDisplayThreadFunc func, gpointer data)
+gst_gl_display_thread_add (GstGLDisplay *display,
+                          GstGLDisplayThreadFunc func, gpointer data)
 {
   gst_gl_display_lock (display);
   display->data = data;
   display->generic_callback = func;
-  gst_gl_window_send_message (display->gl_window,
-      GST_GL_WINDOW_CB (gst_gl_display_thread_run_generic), display);
+  gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_run_generic), display);
   gst_gl_display_unlock (display);
 }
 
 /* Called by gst_gl_buffer_new */
 void
-gst_gl_display_gen_texture (GstGLDisplay * display, GLuint * pTexture,
-    GLint width, GLint height)
+gst_gl_display_gen_texture (GstGLDisplay* display, GLuint* pTexture, GLint width, GLint height)
 {
   gst_gl_display_lock (display);
   display->gen_texture_width = width;
   display->gen_texture_height = height;
-  gst_gl_window_send_message (display->gl_window,
-      GST_GL_WINDOW_CB (gst_gl_display_thread_gen_texture), display);
+  gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_gen_texture), display);
   *pTexture = display->gen_texture;
   gst_gl_display_unlock (display);
 }
@@ -1658,16 +1678,15 @@ gst_gl_display_gen_texture (GstGLDisplay * display, GLuint * pTexture,
 
 /* Called by gst_gl_buffer_finalize */
 void
-gst_gl_display_del_texture (GstGLDisplay * display, GLuint texture, GLint width,
-    GLint height)
+gst_gl_display_del_texture (GstGLDisplay* display, GLuint texture, GLint width, GLint height)
 {
   gst_gl_display_lock (display);
-  if (texture) {
+  if (texture)
+  {
     display->del_texture = texture;
     display->del_texture_width = width;
     display->del_texture_height = height;
-    gst_gl_window_send_message (display->gl_window,
-        GST_GL_WINDOW_CB (gst_gl_display_thread_del_texture), display);
+    gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_del_texture), display);
   }
   gst_gl_display_unlock (display);
 }
@@ -1675,8 +1694,9 @@ gst_gl_display_del_texture (GstGLDisplay * display, GLuint texture, GLint width,
 
 /* Called by the first gl element of a video/x-raw-gl flow */
 void
-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_init_upload (GstGLDisplay* display, GstVideoFormat video_format,
+                            guint gl_width, guint gl_height,
+                            gint video_width, gint video_height)
 {
   gst_gl_display_lock (display);
   display->upload_video_format = video_format;
@@ -1684,28 +1704,28 @@ gst_gl_display_init_upload (GstGLDisplay * display, GstVideoFormat video_format,
   display->upload_height = gl_height;
   display->upload_data_width = video_width;
   display->upload_data_height = video_height;
-  gst_gl_window_send_message (display->gl_window,
-      GST_GL_WINDOW_CB (gst_gl_display_thread_init_upload), display);
+  gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_init_upload), display);
   gst_gl_display_unlock (display);
 }
 
 
 /* Called by the first gl element of a video/x-raw-gl flow */
 gboolean
-gst_gl_display_do_upload (GstGLDisplay * display, GLuint texture,
-    gint data_width, gint data_height, gpointer data)
+gst_gl_display_do_upload (GstGLDisplay *display, GLuint texture,
+                          gint data_width, gint data_height,
+                          gpointer data)
 {
   gboolean isAlive = TRUE;
 
   gst_gl_display_lock (display);
   isAlive = display->isAlive;
-  if (isAlive) {
+  if (isAlive)
+  {
     display->upload_outtex = texture;
     display->upload_data_width = data_width;
     display->upload_data_height = data_height;
     display->upload_data = data;
-    gst_gl_window_send_message (display->gl_window,
-        GST_GL_WINDOW_CB (gst_gl_display_thread_do_upload), display);
+    gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_do_upload), display);
   }
   gst_gl_display_unlock (display);
 
@@ -1715,36 +1735,36 @@ gst_gl_display_do_upload (GstGLDisplay * display, GLuint texture,
 
 /* Called by the gldownload and glcolorscale element */
 void
-gst_gl_display_init_download (GstGLDisplay * display,
-    GstVideoFormat video_format, gint width, gint height)
+gst_gl_display_init_download (GstGLDisplay* display, GstVideoFormat video_format,
+                              gint width, gint height)
 {
   gst_gl_display_lock (display);
   display->download_video_format = video_format;
   display->download_width = width;
   display->download_height = height;
-  gst_gl_window_send_message (display->gl_window,
-      GST_GL_WINDOW_CB (gst_gl_display_thread_init_download), display);
+  gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_init_download), display);
   gst_gl_display_unlock (display);
 }
 
 
 /* Called by the gldownload and glcolorscale element */
 gboolean
-gst_gl_display_do_download (GstGLDisplay * display, GLuint texture,
-    gint width, gint height, gpointer data)
+gst_gl_display_do_download (GstGLDisplay* display, GLuint texture,
+                            gint width, gint height,
+                            gpointer data)
 {
   gboolean isAlive = TRUE;
 
   gst_gl_display_lock (display);
   isAlive = display->isAlive;
-  if (isAlive) {
+  if (isAlive)
+  {
     //data size is aocciated to the glcontext size
     display->download_data = data;
     display->ouput_texture = texture;
     display->ouput_texture_width = width;
     display->ouput_texture_height = height;
-    gst_gl_window_send_message (display->gl_window,
-        GST_GL_WINDOW_CB (gst_gl_display_thread_do_download), display);
+    gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_do_download), display);
   }
   gst_gl_display_unlock (display);
 
@@ -1754,15 +1774,15 @@ gst_gl_display_do_download (GstGLDisplay * display, GLuint texture,
 
 /* Called by gltestsrc and glfilter */
 void
-gst_gl_display_gen_fbo (GstGLDisplay * display, gint width, gint height,
-    GLuint * fbo, GLuint * depthbuffer)
+gst_gl_display_gen_fbo (GstGLDisplay* display, gint width, gint height,
+                        GLuint* fbo, GLuint* depthbuffer)
 {
   gst_gl_display_lock (display);
-  if (display->isAlive) {
+  if (display->isAlive)
+  {
     display->gen_fbo_width = width;
     display->gen_fbo_height = height;
-    gst_gl_window_send_message (display->gl_window,
-        GST_GL_WINDOW_CB (gst_gl_display_thread_gen_fbo), display);
+    gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_gen_fbo), display);
     *fbo = display->generated_fbo;
     *depthbuffer = display->generated_depth_buffer;
   }
@@ -1779,18 +1799,19 @@ gst_gl_display_gen_fbo (GstGLDisplay * display, gint width, gint height,
  * GstGLDisplay *display and gpointer data, or just gpointer data */
 /* ..everything here has to be simplified! */
 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_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)
 {
   gboolean isAlive = TRUE;
 
   gst_gl_display_lock (display);
   isAlive = display->isAlive;
-  if (isAlive) {
+  if (isAlive)
+  {
     display->use_fbo = fbo;
     display->use_depth_buffer = depth_buffer;
     display->use_fbo_texture = texture_fbo;
@@ -1806,8 +1827,7 @@ gst_gl_display_use_fbo (GstGLDisplay * display, gint texture_fbo_width,
     display->input_texture_width = input_texture_width;
     display->input_texture_height = input_texture_height;
     display->input_texture = input_texture;
-    gst_gl_window_send_message (display->gl_window,
-        GST_GL_WINDOW_CB (gst_gl_display_thread_use_fbo), display);
+    gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_use_fbo), display);
   }
   gst_gl_display_unlock (display);
 
@@ -1817,28 +1837,28 @@ gst_gl_display_use_fbo (GstGLDisplay * display, gint texture_fbo_width,
 
 /* Called by gltestsrc and glfilter */
 void
-gst_gl_display_del_fbo (GstGLDisplay * display, GLuint fbo, GLuint depth_buffer)
+gst_gl_display_del_fbo (GstGLDisplay* display, GLuint fbo,
+                        GLuint depth_buffer)
 {
   gst_gl_display_lock (display);
   display->del_fbo = fbo;
   display->del_depth_buffer = depth_buffer;
-  gst_gl_window_send_message (display->gl_window,
-      GST_GL_WINDOW_CB (gst_gl_display_thread_del_fbo), display);
+  gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_del_fbo), display);
   gst_gl_display_unlock (display);
 }
 
 
 /* Called by glfilter */
 void
-gst_gl_display_gen_shader (GstGLDisplay * display,
-    const gchar * shader_vertex_source,
-    const gchar * shader_fragment_source, GstGLShader ** shader)
+gst_gl_display_gen_shader (GstGLDisplay* display,
+                           const gchar* shader_vertex_source,
+                           const gchar* shader_fragment_source,
+                           GstGLShader** shader)
 {
   gst_gl_display_lock (display);
   display->gen_shader_vertex_source = shader_vertex_source;
   display->gen_shader_fragment_source = shader_fragment_source;
-  gst_gl_window_send_message (display->gl_window,
-      GST_GL_WINDOW_CB (gst_gl_display_thread_gen_shader), display);
+  gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_gen_shader), display);
   if (shader)
     *shader = display->gen_shader;
   display->gen_shader = NULL;
@@ -1850,19 +1870,18 @@ gst_gl_display_gen_shader (GstGLDisplay * display,
 
 /* Called by glfilter */
 void
-gst_gl_display_del_shader (GstGLDisplay * display, GstGLShader * shader)
+gst_gl_display_del_shader (GstGLDisplay* display, GstGLShader* shader)
 {
   gst_gl_display_lock (display);
   display->del_shader = shader;
-  gst_gl_window_send_message (display->gl_window,
-      GST_GL_WINDOW_CB (gst_gl_display_thread_del_shader), display);
+  gst_gl_window_send_message (display->gl_window, GST_GL_WINDOW_CB (gst_gl_display_thread_del_shader), display);
   gst_gl_display_unlock (display);
 }
 
 
 /* Called by the glimagesink */
 void
-gst_gl_display_set_window_id (GstGLDisplay * display, gulong window_id)
+gst_gl_display_set_window_id (GstGLDisplay* display, gulong window_id)
 {
   gst_gl_display_lock (display);
   gst_gl_window_set_external_window_id (display->gl_window, window_id);
@@ -1895,11 +1914,11 @@ gst_gl_display_set_client_draw_callback (GstGLDisplay * display, CDCB cb)
 //------------------------------------------------------------
 
 /* called by gst_gl_display_thread_init_upload (in the gl thread) */
-void
-gst_gl_display_thread_init_upload_fbo (GstGLDisplay * display)
+void gst_gl_display_thread_init_upload_fbo (GstGLDisplay *display)
 {
   //Frame buffer object is a requirement for every cases
-  if (GLEW_EXT_framebuffer_object) {
+  if (GLEW_EXT_framebuffer_object)
+  {
     //a texture must be attached to the FBO
     GLuint fake_texture = 0;
 
@@ -1912,39 +1931,40 @@ gst_gl_display_thread_init_upload_fbo (GstGLDisplay * display)
     glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, display->upload_fbo);
 
     //setup the render buffer for depth
-    glGenRenderbuffersEXT (1, &display->upload_depth_buffer);
-    glBindRenderbufferEXT (GL_RENDERBUFFER_EXT, display->upload_depth_buffer);
-    glRenderbufferStorageEXT (GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT,
-        display->upload_width, display->upload_height);
+    glGenRenderbuffersEXT(1, &display->upload_depth_buffer);
+    glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, display->upload_depth_buffer);
+    glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT,
+                      display->upload_width, display->upload_height);
 
     //a fake texture is attached to the upload FBO (cannot init without it)
     glGenTextures (1, &fake_texture);
-    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, fake_texture);
-    glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-        display->upload_width, display->upload_height, 0, GL_RGBA,
-        GL_UNSIGNED_BYTE, NULL);
+    glBindTexture(GL_TEXTURE_RECTANGLE_ARB, fake_texture);
+    glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+       display->upload_width, display->upload_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
 
     //attach the texture to the FBO to renderer to
-    glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
-        GL_TEXTURE_RECTANGLE_ARB, fake_texture, 0);
+    glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
+                       GL_TEXTURE_RECTANGLE_ARB, fake_texture, 0);
 
     //attach the depth render buffer to the FBO
-    glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
-        GL_RENDERBUFFER_EXT, display->upload_depth_buffer);
+    glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
+                      GL_RENDERBUFFER_EXT, display->upload_depth_buffer);
 
-    gst_gl_display_check_framebuffer_status ();
+    gst_gl_display_check_framebuffer_status();
 
     g_assert (glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT) ==
         GL_FRAMEBUFFER_COMPLETE_EXT);
 
     //unbind the FBO
-    glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0);
+    glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
 
     glDeleteTextures (1, &fake_texture);
 
     //alloc texture (related to upload) memory only on time
     gst_gl_display_thread_do_upload_make (display);
-  } else {
+  }
+  else
+  {
     //turn off the pipeline because Frame buffer object is a not present
     GST_WARNING ("Context, EXT_framebuffer_object supported: no");
     display->isAlive = FALSE;
@@ -1952,8 +1972,7 @@ gst_gl_display_thread_init_upload_fbo (GstGLDisplay * display)
 }
 
 /* called by gst_gl_display_thread_do_upload (in the gl thread) */
-void
-gst_gl_display_thread_do_upload_make (GstGLDisplay * display)
+void gst_gl_display_thread_do_upload_make (GstGLDisplay *display)
 {
   gint width = display->upload_data_width;
   gint height = display->upload_data_height;
@@ -1961,474 +1980,455 @@ gst_gl_display_thread_do_upload_make (GstGLDisplay * display)
   glGenTextures (1, &display->upload_intex);
 
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
-  switch (display->upload_video_format) {
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_ARGB:
-    case GST_VIDEO_FORMAT_ABGR:
-      glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA,
-          width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-      break;
-    case GST_VIDEO_FORMAT_RGB:
-    case GST_VIDEO_FORMAT_BGR:
-      glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGB,
-          width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
-      break;
-    case GST_VIDEO_FORMAT_AYUV:
-      glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA,
-          width, height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, NULL);
-      break;
-    case GST_VIDEO_FORMAT_YUY2:
-      switch (display->upload_colorspace_conversion) {
-        case GST_GL_DISPLAY_CONVERSION_GLSL:
-        case GST_GL_DISPLAY_CONVERSION_MATRIX:
-          glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE_ALPHA,
-              width, height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, NULL);
-          glGenTextures (1, &display->upload_intex_u);
-          glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
-          glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-              width, height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
-          break;
-        case GST_GL_DISPLAY_CONVERSION_MESA:
-          glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_YCBCR_MESA, width,
-              height, 0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, NULL);
-          break;
-        default:
-          g_assert_not_reached ();
+  switch (display->upload_video_format)
+  {
+  case GST_VIDEO_FORMAT_RGBx:
+  case GST_VIDEO_FORMAT_BGRx:
+  case GST_VIDEO_FORMAT_xRGB:
+  case GST_VIDEO_FORMAT_xBGR:
+  case GST_VIDEO_FORMAT_RGBA:
+  case GST_VIDEO_FORMAT_BGRA:
+  case GST_VIDEO_FORMAT_ARGB:
+  case GST_VIDEO_FORMAT_ABGR:
+    glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA,
+           width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+    break;
+  case GST_VIDEO_FORMAT_RGB:
+  case GST_VIDEO_FORMAT_BGR:
+    glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGB,
+           width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
+    break;
+  case GST_VIDEO_FORMAT_AYUV:
+               glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA,
+           width, height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, NULL);
+    break;
+  case GST_VIDEO_FORMAT_YUY2:
+    switch (display->upload_colorspace_conversion)
+      {
+      case GST_GL_DISPLAY_CONVERSION_GLSL:
+      case GST_GL_DISPLAY_CONVERSION_MATRIX:
+        glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE_ALPHA,
+          width, height,
+          0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, NULL);
+        glGenTextures (1, &display->upload_intex_u);
+        glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
+        glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+          width, height,
+          0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
+        break;
+      case GST_GL_DISPLAY_CONVERSION_MESA:
+        glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_YCBCR_MESA, width, height,
+          0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, NULL);
+        break;
+      default:
+        g_assert_not_reached ();
       }
-      break;
-    case GST_VIDEO_FORMAT_UYVY:
-      switch (display->upload_colorspace_conversion) {
-        case GST_GL_DISPLAY_CONVERSION_GLSL:
-        case GST_GL_DISPLAY_CONVERSION_MATRIX:
-          glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE_ALPHA,
-              width, height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, NULL);
-          glGenTextures (1, &display->upload_intex_u);
-          glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
-          glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-              width, height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
-          break;
-        case GST_GL_DISPLAY_CONVERSION_MESA:
-          glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_YCBCR_MESA, width,
-              height, 0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, NULL);
-          break;
-        default:
-          g_assert_not_reached ();
+    break;
+  case GST_VIDEO_FORMAT_UYVY:
+    switch (display->upload_colorspace_conversion)
+      {
+      case GST_GL_DISPLAY_CONVERSION_GLSL:
+      case GST_GL_DISPLAY_CONVERSION_MATRIX:
+        glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE_ALPHA,
+          width, height,
+          0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, NULL);
+        glGenTextures (1, &display->upload_intex_u);
+        glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
+        glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+          width, height,
+          0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL);
+        break;
+      case GST_GL_DISPLAY_CONVERSION_MESA:
+        glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_YCBCR_MESA, width, height,
+          0, GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, NULL);
+        break;
+      default:
+        g_assert_not_reached ();
       }
-      break;
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-      glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
-          width, height, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
-
-      glGenTextures (1, &display->upload_intex_u);
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
-      glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
-          GST_ROUND_UP_2 (width) / 2,
-          GST_ROUND_UP_2 (height) / 2, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
-
-      glGenTextures (1, &display->upload_intex_v);
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_v);
-      glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
-          GST_ROUND_UP_2 (width) / 2,
-          GST_ROUND_UP_2 (height) / 2, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
-      break;
-
-    default:
-      g_assert_not_reached ();
+    break;
+  case GST_VIDEO_FORMAT_I420:
+  case GST_VIDEO_FORMAT_YV12:
+    glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
+      width, height,
+      0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
+
+    glGenTextures (1, &display->upload_intex_u);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
+    glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
+      GST_ROUND_UP_2 (width) / 2,
+      GST_ROUND_UP_2 (height) / 2,
+      0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
+
+    glGenTextures (1, &display->upload_intex_v);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_v);
+    glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_LUMINANCE,
+      GST_ROUND_UP_2 (width) / 2,
+      GST_ROUND_UP_2 (height) / 2,
+      0, GL_LUMINANCE, GL_UNSIGNED_BYTE, NULL);
+    break;
+
+  default:
+    g_assert_not_reached ();
   }
 }
 
 
 /* called by gst_gl_display_thread_do_upload (in the gl thread) */
 void
-gst_gl_display_thread_do_upload_fill (GstGLDisplay * display)
+gst_gl_display_thread_do_upload_fill (GstGLDisplay *display)
 {
   gint width = display->upload_data_width;
   gint height = display->upload_data_height;
   gpointer data = display->upload_data;
 
-  switch (display->upload_video_format) {
-    case GST_VIDEO_FORMAT_RGB:
-    case GST_VIDEO_FORMAT_BGR:
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_ARGB:
-    case GST_VIDEO_FORMAT_ABGR:
-      //color space conversion is not needed
+  switch (display->upload_video_format)
+  {
+  case GST_VIDEO_FORMAT_RGB:
+  case GST_VIDEO_FORMAT_BGR:
+  case GST_VIDEO_FORMAT_RGBx:
+  case GST_VIDEO_FORMAT_BGRx:
+  case GST_VIDEO_FORMAT_xRGB:
+  case GST_VIDEO_FORMAT_xBGR:
+  case GST_VIDEO_FORMAT_RGBA:
+  case GST_VIDEO_FORMAT_BGRA:
+  case GST_VIDEO_FORMAT_ARGB:
+  case GST_VIDEO_FORMAT_ABGR:
+    //color space conversion is not needed
+    if (display->upload_width != display->upload_data_width ||
+        display->upload_height != display->upload_data_height)
+      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
+    else
+      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_outtex);
+    break;
+  case GST_VIDEO_FORMAT_YUY2:
+  case GST_VIDEO_FORMAT_UYVY:
+  case GST_VIDEO_FORMAT_I420:
+  case GST_VIDEO_FORMAT_YV12:
+  case GST_VIDEO_FORMAT_AYUV:
+    switch (display->upload_colorspace_conversion)
+    {
+    case GST_GL_DISPLAY_CONVERSION_GLSL:
+    case GST_GL_DISPLAY_CONVERSION_MATRIX:
+      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
+      break;
+    case GST_GL_DISPLAY_CONVERSION_MESA:
       if (display->upload_width != display->upload_data_width ||
           display->upload_height != display->upload_data_height)
         glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
       else
         glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_outtex);
       break;
-    case GST_VIDEO_FORMAT_YUY2:
-    case GST_VIDEO_FORMAT_UYVY:
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-    case GST_VIDEO_FORMAT_AYUV:
-      switch (display->upload_colorspace_conversion) {
-        case GST_GL_DISPLAY_CONVERSION_GLSL:
-        case GST_GL_DISPLAY_CONVERSION_MATRIX:
-          glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
-          break;
-        case GST_GL_DISPLAY_CONVERSION_MESA:
-          if (display->upload_width != display->upload_data_width ||
-              display->upload_height != display->upload_data_height)
-            glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
-          else
-            glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_outtex);
-          break;
-        default:
-          g_assert_not_reached ();
-      }
-      break;
     default:
-      g_assert_not_reached ();
+      g_assert_not_reached();
+    }
+    break;
+  default:
+         g_assert_not_reached ();
   }
 
   switch (display->upload_video_format) {
-    case GST_VIDEO_FORMAT_RGB:
-      glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
-          GL_RGB, GL_UNSIGNED_BYTE, data);
-      break;
-    case GST_VIDEO_FORMAT_BGR:
-      glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
-          GL_BGR, GL_UNSIGNED_BYTE, data);
-      break;
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_RGBA:
+  case GST_VIDEO_FORMAT_RGB:
+    glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
+                    GL_RGB, GL_UNSIGNED_BYTE, data);
+    break;
+  case GST_VIDEO_FORMAT_BGR:
+    glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
+                    GL_BGR, GL_UNSIGNED_BYTE, data);
+    break;
+  case GST_VIDEO_FORMAT_RGBx:
+  case GST_VIDEO_FORMAT_RGBA:
+    glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
+                    GL_RGBA, GL_UNSIGNED_BYTE, data);
+    break;
+  case GST_VIDEO_FORMAT_BGRx:
+  case GST_VIDEO_FORMAT_BGRA:
+    glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
+                    GL_BGRA, GL_UNSIGNED_BYTE, data);
+    break;
+  case GST_VIDEO_FORMAT_AYUV:
+  case GST_VIDEO_FORMAT_xRGB:
+  case GST_VIDEO_FORMAT_ARGB:
+    glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
+                    GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, data);
+    break;
+  case GST_VIDEO_FORMAT_xBGR:
+  case GST_VIDEO_FORMAT_ABGR:
+    glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
+                    GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, data);
+    break;
+  case GST_VIDEO_FORMAT_YUY2:
+    switch (display->upload_colorspace_conversion)
+    {
+    case GST_GL_DISPLAY_CONVERSION_GLSL:
+    case GST_GL_DISPLAY_CONVERSION_MATRIX:
       glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
-          GL_RGBA, GL_UNSIGNED_BYTE, data);
+                      GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, data);
+
+      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
+      glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0,
+                      GST_ROUND_UP_2 (width) / 2, height,
+                      GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, data);
       break;
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_BGRA:
+    case GST_GL_DISPLAY_CONVERSION_MESA:
       glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
-          GL_BGRA, GL_UNSIGNED_BYTE, data);
+                      GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, data);
       break;
-    case GST_VIDEO_FORMAT_AYUV:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_ARGB:
+    default:
+      g_assert_not_reached ();
+    }
+    break;
+  case GST_VIDEO_FORMAT_UYVY:
+    switch (display->upload_colorspace_conversion)
+    {
+    case GST_GL_DISPLAY_CONVERSION_GLSL:
+    case GST_GL_DISPLAY_CONVERSION_MATRIX:
       glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
-          GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, data);
+                      GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, data);
+
+      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
+      glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0,
+                      GST_ROUND_UP_2 (width) / 2, height,
+                      GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, data);
       break;
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_ABGR:
+    case GST_GL_DISPLAY_CONVERSION_MESA:
       glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
-          GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, data);
-      break;
-    case GST_VIDEO_FORMAT_YUY2:
-      switch (display->upload_colorspace_conversion) {
-        case GST_GL_DISPLAY_CONVERSION_GLSL:
-        case GST_GL_DISPLAY_CONVERSION_MATRIX:
-          glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
-              GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, data);
-
-          glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
-          glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0,
-              GST_ROUND_UP_2 (width) / 2, height,
-              GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, data);
-          break;
-        case GST_GL_DISPLAY_CONVERSION_MESA:
-          glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
-              GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_REV_MESA, data);
-          break;
-        default:
-          g_assert_not_reached ();
-      }
-      break;
-    case GST_VIDEO_FORMAT_UYVY:
-      switch (display->upload_colorspace_conversion) {
-        case GST_GL_DISPLAY_CONVERSION_GLSL:
-        case GST_GL_DISPLAY_CONVERSION_MATRIX:
-          glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
-              GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, data);
-
-          glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
-          glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0,
-              GST_ROUND_UP_2 (width) / 2, height,
-              GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, data);
-          break;
-        case GST_GL_DISPLAY_CONVERSION_MESA:
-          glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
-              GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, data);
-          break;
-        default:
-          g_assert_not_reached ();
-      }
+                      GL_YCBCR_MESA, GL_UNSIGNED_SHORT_8_8_MESA, data);
       break;
+    default:
+      g_assert_not_reached ();
+    }
+    break;
+  case GST_VIDEO_FORMAT_I420:
+  case GST_VIDEO_FORMAT_YV12:
+  {
+    gint offsetU = 0;
+    gint offsetV = 0;
+
+    switch (display->upload_video_format)
+    {
     case GST_VIDEO_FORMAT_I420:
+      offsetU = 1;
+      offsetV = 2;
+      break;
     case GST_VIDEO_FORMAT_YV12:
-    {
-      gint offsetU = 0;
-      gint offsetV = 0;
-
-      switch (display->upload_video_format) {
-        case GST_VIDEO_FORMAT_I420:
-          offsetU = 1;
-          offsetV = 2;
-          break;
-        case GST_VIDEO_FORMAT_YV12:
 
 #if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__)
-          //WIN32
-          offsetU = 2;
-          offsetV = 1;
+      //WIN32
+      offsetU = 2;
+      offsetV = 1;
 #else
-          //LINUX
-          offsetU = 1;
-          offsetV = 2;
+      //LINUX
+      offsetU = 1;
+      offsetV = 2;
 #endif
-          break;
-        default:
-          g_assert_not_reached ();
-      }
-
-      glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
-          GL_LUMINANCE, GL_UNSIGNED_BYTE, data);
-
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
-      glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0,
-          GST_ROUND_UP_2 (width) / 2, GST_ROUND_UP_2 (height) / 2,
-          GL_LUMINANCE, GL_UNSIGNED_BYTE,
-          (guint8 *) data +
-          gst_video_format_get_component_offset (display->upload_video_format,
-              offsetU, width, height));
-
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_v);
-      glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0,
-          GST_ROUND_UP_2 (width) / 2, GST_ROUND_UP_2 (height) / 2,
-          GL_LUMINANCE, GL_UNSIGNED_BYTE,
-          (guint8 *) data +
-          gst_video_format_get_component_offset (display->upload_video_format,
-              offsetV, width, height));
-    }
       break;
     default:
       g_assert_not_reached ();
+    }
+
+    glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, width, height,
+                    GL_LUMINANCE, GL_UNSIGNED_BYTE, data);
+
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
+    glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0,
+                    GST_ROUND_UP_2 (width) / 2, GST_ROUND_UP_2 (height) / 2,
+                    GL_LUMINANCE, GL_UNSIGNED_BYTE,
+                    (guint8 *) data +
+                    gst_video_format_get_component_offset (display->upload_video_format, offsetU, width, height));
+
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_v);
+    glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0,
+                    GST_ROUND_UP_2 (width) / 2, GST_ROUND_UP_2 (height) / 2,
+                    GL_LUMINANCE, GL_UNSIGNED_BYTE,
+                    (guint8 *) data +
+                    gst_video_format_get_component_offset (display->upload_video_format, offsetV, width, height));
+  }
+  break;
+  default:
+    g_assert_not_reached ();
   }
 }
 
 
 /* called by gst_gl_display_thread_do_upload (in the gl thread) */
 void
-gst_gl_display_thread_do_upload_draw (GstGLDisplay * display)
+gst_gl_display_thread_do_upload_draw (GstGLDisplay *display)
 {
-  glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, display->upload_fbo);
+  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, display->upload_fbo);
 
   //setup a texture to render to
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
-  glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_outtex);
+  glBindTexture(GL_TEXTURE_RECTANGLE_ARB, display->upload_outtex);
 
   //attach the texture to the FBO to renderer to
-  glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
-      GL_TEXTURE_RECTANGLE_ARB, display->upload_outtex, 0);
+  glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
+                           GL_TEXTURE_RECTANGLE_ARB, display->upload_outtex, 0);
 
   if (GLEW_ARB_fragment_shader)
     gst_gl_shader_use (NULL);
 
-  glPushAttrib (GL_VIEWPORT_BIT);
-
-  glMatrixMode (GL_PROJECTION);
-  glPushMatrix ();
-  glLoadIdentity ();
-  gluOrtho2D (0.0, display->upload_width, 0.0, display->upload_height);
-
-  glMatrixMode (GL_MODELVIEW);
-  glPushMatrix ();
-  glLoadIdentity ();
-
-  glViewport (0, 0, display->upload_width, display->upload_height);
-
-  glDrawBuffer (GL_COLOR_ATTACHMENT0_EXT);
-  glClearColor (0.0, 0.0, 0.0, 0.0);
-  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-  switch (display->upload_video_format) {
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_ARGB:
-    case GST_VIDEO_FORMAT_ABGR:
-    case GST_VIDEO_FORMAT_RGB:
-    case GST_VIDEO_FORMAT_BGR:
+  glPushAttrib(GL_VIEWPORT_BIT);
+
+  glMatrixMode(GL_PROJECTION);
+  glPushMatrix();
+  glLoadIdentity();
+  gluOrtho2D(0.0, display->upload_width, 0.0, display->upload_height);
+
+  glMatrixMode(GL_MODELVIEW);
+  glPushMatrix();
+  glLoadIdentity();
+
+  glViewport(0, 0, display->upload_width, display->upload_height);
+
+  glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
+  glClearColor(0.0, 0.0, 0.0, 0.0);
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+  switch (display->upload_video_format)
+  {
+  case GST_VIDEO_FORMAT_RGBx:
+  case GST_VIDEO_FORMAT_BGRx:
+  case GST_VIDEO_FORMAT_xRGB:
+  case GST_VIDEO_FORMAT_xBGR:
+  case GST_VIDEO_FORMAT_RGBA:
+  case GST_VIDEO_FORMAT_BGRA:
+  case GST_VIDEO_FORMAT_ARGB:
+  case GST_VIDEO_FORMAT_ABGR:
+  case GST_VIDEO_FORMAT_RGB:
+  case GST_VIDEO_FORMAT_BGR:
+       {
+               glMatrixMode (GL_PROJECTION);
+               glLoadIdentity ();
+
+               glEnable(GL_TEXTURE_RECTANGLE_ARB);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
+               glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+               glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+               glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+               glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+               glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+       }
+       break;
+
+  case GST_VIDEO_FORMAT_YUY2:
+  case GST_VIDEO_FORMAT_UYVY:
+  {
+    switch (display->upload_colorspace_conversion)
     {
-      glMatrixMode (GL_PROJECTION);
-      glLoadIdentity ();
-
-      glEnable (GL_TEXTURE_RECTANGLE_ARB);
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-          GL_CLAMP_TO_EDGE);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-          GL_CLAMP_TO_EDGE);
-      glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-    }
-      break;
-
-    case GST_VIDEO_FORMAT_YUY2:
-    case GST_VIDEO_FORMAT_UYVY:
+    case GST_GL_DISPLAY_CONVERSION_GLSL:
+    case GST_GL_DISPLAY_CONVERSION_MATRIX:
     {
-      switch (display->upload_colorspace_conversion) {
-        case GST_GL_DISPLAY_CONVERSION_GLSL:
-        case GST_GL_DISPLAY_CONVERSION_MATRIX:
-        {
-          GstGLShader *shader_upload_YUY2_UYVY = NULL;
-
-          switch (display->upload_video_format) {
-            case GST_VIDEO_FORMAT_YUY2:
-              shader_upload_YUY2_UYVY = display->shader_upload_YUY2;
-              break;
-            case GST_VIDEO_FORMAT_UYVY:
-              shader_upload_YUY2_UYVY = display->shader_upload_UYVY;
-              break;
-            default:
-              g_assert_not_reached ();
-          }
+        GstGLShader* shader_upload_YUY2_UYVY = NULL;
 
-          gst_gl_shader_use (shader_upload_YUY2_UYVY);
-
-          glMatrixMode (GL_PROJECTION);
-          glLoadIdentity ();
-
-          glActiveTextureARB (GL_TEXTURE1_ARB);
-          gst_gl_shader_set_uniform_1i (shader_upload_YUY2_UYVY, "UVtex", 1);
-          glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-              GL_LINEAR);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-              GL_LINEAR);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-              GL_CLAMP_TO_EDGE);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-              GL_CLAMP_TO_EDGE);
-
-          glActiveTextureARB (GL_TEXTURE0_ARB);
-          gst_gl_shader_set_uniform_1i (shader_upload_YUY2_UYVY, "Ytex", 0);
-          glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-              GL_LINEAR);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-              GL_LINEAR);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-              GL_CLAMP_TO_EDGE);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-              GL_CLAMP_TO_EDGE);
-        }
-          break;
-        case GST_GL_DISPLAY_CONVERSION_MESA:
+        switch (display->upload_video_format)
         {
-          glMatrixMode (GL_PROJECTION);
-          glLoadIdentity ();
-
-          glEnable (GL_TEXTURE_RECTANGLE_ARB);
-          glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-              GL_LINEAR);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-              GL_LINEAR);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-              GL_CLAMP_TO_EDGE);
-          glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-              GL_CLAMP_TO_EDGE);
-          glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-        }
+        case GST_VIDEO_FORMAT_YUY2:
+          shader_upload_YUY2_UYVY = display->shader_upload_YUY2;
+          break;
+        case GST_VIDEO_FORMAT_UYVY:
+          shader_upload_YUY2_UYVY = display->shader_upload_UYVY;
           break;
         default:
           g_assert_not_reached ();
+        }
+
+        gst_gl_shader_use (shader_upload_YUY2_UYVY);
+
+        glMatrixMode (GL_PROJECTION);
+        glLoadIdentity ();
+
+        glActiveTextureARB(GL_TEXTURE1_ARB);
+        gst_gl_shader_set_uniform_1i (shader_upload_YUY2_UYVY, "UVtex", 1);
+        glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+        glActiveTextureARB(GL_TEXTURE0_ARB);
+        gst_gl_shader_set_uniform_1i (shader_upload_YUY2_UYVY, "Ytex", 0);
+        glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
       }
-    }
       break;
+    case GST_GL_DISPLAY_CONVERSION_MESA:
+      {
+        glMatrixMode (GL_PROJECTION);
+        glLoadIdentity ();
 
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-    {
-      gst_gl_shader_use (display->shader_upload_I420_YV12);
+        glEnable(GL_TEXTURE_RECTANGLE_ARB);
+        glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+        glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+        glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+      }
+      break;
+    default:
+      g_assert_not_reached ();
+    }
+  }
+  break;
 
-      glMatrixMode (GL_PROJECTION);
-      glLoadIdentity ();
+  case GST_VIDEO_FORMAT_I420:
+  case GST_VIDEO_FORMAT_YV12:
+  {
+    gst_gl_shader_use (display->shader_upload_I420_YV12);
 
-      glActiveTextureARB (GL_TEXTURE1_ARB);
-      gst_gl_shader_set_uniform_1i (display->shader_upload_I420_YV12, "Utex",
-          1);
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-          GL_CLAMP_TO_EDGE);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-          GL_CLAMP_TO_EDGE);
-
-      glActiveTextureARB (GL_TEXTURE2_ARB);
-      gst_gl_shader_set_uniform_1i (display->shader_upload_I420_YV12, "Vtex",
-          2);
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_v);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-          GL_CLAMP_TO_EDGE);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-          GL_CLAMP_TO_EDGE);
-
-      glActiveTextureARB (GL_TEXTURE0_ARB);
-      gst_gl_shader_set_uniform_1i (display->shader_upload_I420_YV12, "Ytex",
-          0);
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-          GL_CLAMP_TO_EDGE);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-          GL_CLAMP_TO_EDGE);
-    }
-      break;
+    glMatrixMode (GL_PROJECTION);
+    glLoadIdentity ();
 
-    case GST_VIDEO_FORMAT_AYUV:
-    {
-      gst_gl_shader_use (display->shader_upload_AYUV);
+    glActiveTextureARB(GL_TEXTURE1_ARB);
+    gst_gl_shader_set_uniform_1i (display->shader_upload_I420_YV12, "Utex", 1);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_u);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+    glActiveTextureARB(GL_TEXTURE2_ARB);
+    gst_gl_shader_set_uniform_1i (display->shader_upload_I420_YV12, "Vtex", 2);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex_v);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+    glActiveTextureARB(GL_TEXTURE0_ARB);
+    gst_gl_shader_set_uniform_1i (display->shader_upload_I420_YV12, "Ytex", 0);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+  }
+  break;
 
-      glMatrixMode (GL_PROJECTION);
-      glLoadIdentity ();
+  case GST_VIDEO_FORMAT_AYUV:
+  {
+    gst_gl_shader_use (display->shader_upload_AYUV);
 
-      glActiveTextureARB (GL_TEXTURE0_ARB);
-      gst_gl_shader_set_uniform_1i (display->shader_upload_AYUV, "tex", 0);
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-          GL_LINEAR);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-          GL_CLAMP_TO_EDGE);
-      glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-          GL_CLAMP_TO_EDGE);
-    }
-      break;
+    glMatrixMode (GL_PROJECTION);
+    glLoadIdentity ();
 
-    default:
-      g_assert_not_reached ();
+    glActiveTextureARB(GL_TEXTURE0_ARB);
+    gst_gl_shader_set_uniform_1i (display->shader_upload_AYUV, "tex", 0);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->upload_intex);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+  }
+  break;
+
+  default:
+    g_assert_not_reached ();
 
-  }                             //end switch display->currentVideo_format
+  }//end switch display->currentVideo_format
 
   glBegin (GL_QUADS);
   glTexCoord2i (display->upload_data_width, 0);
@@ -2441,29 +2441,29 @@ gst_gl_display_thread_do_upload_draw (GstGLDisplay * display)
   glVertex2f (1.0f, 1.0f);
   glEnd ();
 
-  glDrawBuffer (GL_NONE);
+  glDrawBuffer(GL_NONE);
 
   //we are done with the shader
   if (display->upload_colorspace_conversion == GST_GL_DISPLAY_CONVERSION_GLSL)
     glUseProgramObjectARB (0);
 
-  glDisable (GL_TEXTURE_RECTANGLE_ARB);
+  glDisable(GL_TEXTURE_RECTANGLE_ARB);
 
-  glMatrixMode (GL_PROJECTION);
-  glPopMatrix ();
-  glMatrixMode (GL_MODELVIEW);
-  glPopMatrix ();
-  glPopAttrib ();
+  glMatrixMode(GL_PROJECTION);
+  glPopMatrix();
+  glMatrixMode(GL_MODELVIEW);
+  glPopMatrix();
+  glPopAttrib();
 
-  glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0);
+  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
 
-  gst_gl_display_check_framebuffer_status ();
+  gst_gl_display_check_framebuffer_status();
 }
 
 
 /* called by gst_gl_display_thread_do_download (in the gl thread) */
 void
-gst_gl_display_thread_do_download_draw_rgb (GstGLDisplay * display)
+gst_gl_display_thread_do_download_draw_rgb (GstGLDisplay *display)
 {
   GstVideoFormat video_format = display->download_video_format;
   gpointer data = display->download_data;
@@ -2471,138 +2471,140 @@ gst_gl_display_thread_do_download_draw_rgb (GstGLDisplay * display)
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->ouput_texture);
 
-  switch (video_format) {
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_ARGB:
-      glGetTexImage (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA,
-          GL_UNSIGNED_BYTE, data);
-      break;
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_ABGR:
-      glGetTexImage (GL_TEXTURE_RECTANGLE_ARB, 0, GL_BGRA,
-          GL_UNSIGNED_BYTE, data);
-      break;
-    case GST_VIDEO_FORMAT_RGB:
-      glGetTexImage (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGB,
-          GL_UNSIGNED_BYTE, data);
-      break;
-    case GST_VIDEO_FORMAT_BGR:
-      glGetTexImage (GL_TEXTURE_RECTANGLE_ARB, 0, GL_BGR,
-          GL_UNSIGNED_BYTE, data);
-      break;
-    default:
+  switch (video_format)
+  {
+  case GST_VIDEO_FORMAT_RGBA:
+  case GST_VIDEO_FORMAT_RGBx:
+  case GST_VIDEO_FORMAT_xRGB:
+  case GST_VIDEO_FORMAT_ARGB:
+    glGetTexImage (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA,
+                 GL_UNSIGNED_BYTE, data);
+    break;
+  case GST_VIDEO_FORMAT_BGRx:
+  case GST_VIDEO_FORMAT_BGRA:
+  case GST_VIDEO_FORMAT_xBGR:
+  case GST_VIDEO_FORMAT_ABGR:
+    glGetTexImage (GL_TEXTURE_RECTANGLE_ARB, 0, GL_BGRA,
+                 GL_UNSIGNED_BYTE, data);
+    break;
+  case GST_VIDEO_FORMAT_RGB:
+    glGetTexImage (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGB,
+                 GL_UNSIGNED_BYTE, data);
+    break;
+  case GST_VIDEO_FORMAT_BGR:
+    glGetTexImage (GL_TEXTURE_RECTANGLE_ARB, 0, GL_BGR,
+                 GL_UNSIGNED_BYTE, data);
+    break;
+  default:
       g_assert_not_reached ();
-  }
+    }
 }
 
 
 /* called by gst_gl_display_thread_do_download (in the gl thread) */
 void
-gst_gl_display_thread_do_download_draw_yuv (GstGLDisplay * display)
+gst_gl_display_thread_do_download_draw_yuv (GstGLDisplay *display)
 {
   gint width = display->download_width;
   gint height = display->download_height;
   GstVideoFormat video_format = display->download_video_format;
   gpointer data = display->download_data;
 
-  glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, display->download_fbo);
+  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, display->download_fbo);
+
+  glPushAttrib(GL_VIEWPORT_BIT);
 
-  glPushAttrib (GL_VIEWPORT_BIT);
+  glMatrixMode(GL_PROJECTION);
+  glPushMatrix();
+  glLoadIdentity();
+  gluOrtho2D(0.0, width, 0.0, height);
 
-  glMatrixMode (GL_PROJECTION);
-  glPushMatrix ();
-  glLoadIdentity ();
-  gluOrtho2D (0.0, width, 0.0, height);
+  glMatrixMode(GL_MODELVIEW);
+  glPushMatrix();
+  glLoadIdentity();
 
-  glMatrixMode (GL_MODELVIEW);
-  glPushMatrix ();
-  glLoadIdentity ();
+  glViewport(0, 0, width, height);
 
-  glViewport (0, 0, width, height);
+  switch (video_format)
+  {
+  case GST_VIDEO_FORMAT_YUY2:
+  case GST_VIDEO_FORMAT_UYVY:
+  {
+    GstGLShader* shader_download_YUY2_UYVY = NULL;
 
-  switch (video_format) {
+    switch (video_format)
+    {
     case GST_VIDEO_FORMAT_YUY2:
+      shader_download_YUY2_UYVY = display->shader_download_YUY2;
+      break;
     case GST_VIDEO_FORMAT_UYVY:
-    {
-      GstGLShader *shader_download_YUY2_UYVY = NULL;
-
-      switch (video_format) {
-        case GST_VIDEO_FORMAT_YUY2:
-          shader_download_YUY2_UYVY = display->shader_download_YUY2;
-          break;
-        case GST_VIDEO_FORMAT_UYVY:
-          shader_download_YUY2_UYVY = display->shader_download_UYVY;
-          break;
-        default:
-          g_assert_not_reached ();
-      }
+      shader_download_YUY2_UYVY = display->shader_download_UYVY;
+      break;
+    default:
+      g_assert_not_reached ();
+    }
 
-      glDrawBuffer (GL_COLOR_ATTACHMENT0_EXT);
+    glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
 
-      glClearColor (0.0, 0.0, 0.0, 0.0);
-      glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    glClearColor(0.0, 0.0, 0.0, 0.0);
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
-      gst_gl_shader_use (shader_download_YUY2_UYVY);
+    gst_gl_shader_use (shader_download_YUY2_UYVY);
 
-      glMatrixMode (GL_PROJECTION);
-      glLoadIdentity ();
+    glMatrixMode (GL_PROJECTION);
+    glLoadIdentity ();
 
-      glActiveTextureARB (GL_TEXTURE0_ARB);
-      gst_gl_shader_set_uniform_1i (shader_download_YUY2_UYVY, "tex", 0);
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->ouput_texture);
-    }
-      break;
+    glActiveTextureARB(GL_TEXTURE0_ARB);
+    gst_gl_shader_set_uniform_1i (shader_download_YUY2_UYVY, "tex", 0);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->ouput_texture);
+  }
+  break;
 
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-    {
-      glDrawBuffers (3, display->multipleRT);
+  case GST_VIDEO_FORMAT_I420:
+  case GST_VIDEO_FORMAT_YV12:
+  {
+    glDrawBuffers(3, display->multipleRT);
 
-      glClearColor (0.0, 0.0, 0.0, 0.0);
-      glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    glClearColor(0.0, 0.0, 0.0, 0.0);
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
-      gst_gl_shader_use (display->shader_download_I420_YV12);
+    gst_gl_shader_use (display->shader_download_I420_YV12);
 
-      glMatrixMode (GL_PROJECTION);
-      glLoadIdentity ();
+    glMatrixMode (GL_PROJECTION);
+    glLoadIdentity ();
 
-      glActiveTextureARB (GL_TEXTURE0_ARB);
-      gst_gl_shader_set_uniform_1i (display->shader_download_I420_YV12, "tex",
-          0);
-      gst_gl_shader_set_uniform_1f (display->shader_download_I420_YV12, "w",
-          (gfloat) display->ouput_texture_width);
-      gst_gl_shader_set_uniform_1f (display->shader_download_I420_YV12, "h",
-          (gfloat) display->ouput_texture_height);
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->ouput_texture);
-    }
-      break;
+    glActiveTextureARB(GL_TEXTURE0_ARB);
+    gst_gl_shader_set_uniform_1i (display->shader_download_I420_YV12, "tex", 0);
+    gst_gl_shader_set_uniform_1f (display->shader_download_I420_YV12, "w",
+                                 (gfloat)display->ouput_texture_width);
+    gst_gl_shader_set_uniform_1f (display->shader_download_I420_YV12, "h",
+                                 (gfloat)display->ouput_texture_height);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->ouput_texture);
+  }
+  break;
 
-    case GST_VIDEO_FORMAT_AYUV:
-    {
-      glDrawBuffer (GL_COLOR_ATTACHMENT0_EXT);
+  case GST_VIDEO_FORMAT_AYUV:
+  {
+    glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
 
-      glClearColor (0.0, 0.0, 0.0, 0.0);
-      glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    glClearColor(0.0, 0.0, 0.0, 0.0);
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
-      gst_gl_shader_use (display->shader_download_AYUV);
+    gst_gl_shader_use (display->shader_download_AYUV);
 
-      glMatrixMode (GL_PROJECTION);
-      glLoadIdentity ();
+    glMatrixMode (GL_PROJECTION);
+    glLoadIdentity ();
 
-      glActiveTextureARB (GL_TEXTURE0_ARB);
-      gst_gl_shader_set_uniform_1i (display->shader_download_AYUV, "tex", 0);
-      glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->ouput_texture);
-    }
-      break;
+    glActiveTextureARB(GL_TEXTURE0_ARB);
+    gst_gl_shader_set_uniform_1i (display->shader_download_AYUV, "tex", 0);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, display->ouput_texture);
+  }
+  break;
 
-    default:
-      g_assert_not_reached ();
+  default:
+    g_assert_not_reached ();
 
-  }                             //end switch display->currentVideo_format
+  }//end switch display->currentVideo_format
 
   glBegin (GL_QUADS);
   glTexCoord2i (0, 0);
@@ -2615,84 +2617,87 @@ gst_gl_display_thread_do_download_draw_yuv (GstGLDisplay * display)
   glVertex2f (-1.0f, 1.0f);
   glEnd ();
 
-  glDrawBuffer (GL_NONE);
+  glDrawBuffer(GL_NONE);
 
   //dot not check if GLSL is available
   //because for now download is not available
   //without GLSL
   glUseProgramObjectARB (0);
 
-  glDisable (GL_TEXTURE_RECTANGLE_ARB);
+  glDisable(GL_TEXTURE_RECTANGLE_ARB);
 
-  glMatrixMode (GL_PROJECTION);
-  glPopMatrix ();
-  glMatrixMode (GL_MODELVIEW);
-  glPopMatrix ();
-  glPopAttrib ();
+  glMatrixMode(GL_PROJECTION);
+  glPopMatrix();
+  glMatrixMode(GL_MODELVIEW);
+  glPopMatrix();
+  glPopAttrib();
 
   glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0);
 
-  gst_gl_display_check_framebuffer_status ();
-
-  glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, display->download_fbo);
-  glReadBuffer (GL_COLOR_ATTACHMENT0_EXT);
-
-  switch (video_format) {
-    case GST_VIDEO_FORMAT_AYUV:
-    case GST_VIDEO_FORMAT_xRGB:
-      glReadPixels (0, 0, width, height, GL_BGRA,
-          GL_UNSIGNED_INT_8_8_8_8, data);
-      break;
-    case GST_VIDEO_FORMAT_YUY2:
-    case GST_VIDEO_FORMAT_UYVY:
-      glReadPixels (0, 0, GST_ROUND_UP_2 (width) / 2, height, GL_BGRA,
-          GL_UNSIGNED_INT_8_8_8_8_REV, data);
-      break;
+  gst_gl_display_check_framebuffer_status();
+
+  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, display->download_fbo);
+  glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
+
+  switch (video_format)
+  {
+  case GST_VIDEO_FORMAT_AYUV:
+  case GST_VIDEO_FORMAT_xRGB:
+    glReadPixels (0, 0, width, height, GL_BGRA,
+                 GL_UNSIGNED_INT_8_8_8_8, data);
+    break;
+  case GST_VIDEO_FORMAT_YUY2:
+  case GST_VIDEO_FORMAT_UYVY:
+    glReadPixels (0, 0, GST_ROUND_UP_2 (width) / 2, height, GL_BGRA,
+                 GL_UNSIGNED_INT_8_8_8_8_REV, data);
+    break;
+  case GST_VIDEO_FORMAT_I420:
+  case GST_VIDEO_FORMAT_YV12:
+  {
+    gint offsetU = 0;
+    gint offsetV = 0;
+
+    switch (video_format)
+    {
     case GST_VIDEO_FORMAT_I420:
+      offsetU = 1;
+      offsetV = 2;
+      break;
     case GST_VIDEO_FORMAT_YV12:
-    {
-      gint offsetU = 0;
-      gint offsetV = 0;
-
-      switch (video_format) {
-        case GST_VIDEO_FORMAT_I420:
-          offsetU = 1;
-          offsetV = 2;
-          break;
-        case GST_VIDEO_FORMAT_YV12:
 #if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__)
-          //WIN32
-          offsetU = 2;
-          offsetV = 1;
+      //WIN32
+      offsetU = 2;
+      offsetV = 1;
 #else
-          //LINUX
-          offsetU = 1;
-          offsetV = 2;
+      //LINUX
+      offsetU = 1;
+      offsetV = 2;
 #endif
-          break;
-        default:
-          g_assert_not_reached ();
-      }
-
-      glReadPixels (0, 0, width, height, GL_LUMINANCE, GL_UNSIGNED_BYTE, data);
-
-      glReadBuffer (GL_COLOR_ATTACHMENT1_EXT);
-      glReadPixels (0, 0, GST_ROUND_UP_2 (width) / 2,
-          GST_ROUND_UP_2 (height) / 2, GL_LUMINANCE, GL_UNSIGNED_BYTE,
-          (guint8 *) data + gst_video_format_get_component_offset (video_format,
-              offsetU, width, height));
-
-      glReadBuffer (GL_COLOR_ATTACHMENT2_EXT);
-      glReadPixels (0, 0, GST_ROUND_UP_2 (width) / 2,
-          GST_ROUND_UP_2 (height) / 2, GL_LUMINANCE, GL_UNSIGNED_BYTE,
-          (guint8 *) data + gst_video_format_get_component_offset (video_format,
-              offsetV, width, height));
-    }
       break;
     default:
       g_assert_not_reached ();
+    }
+
+    glReadPixels (0, 0, width, height, GL_LUMINANCE,
+                 GL_UNSIGNED_BYTE, data);
+
+    glReadBuffer(GL_COLOR_ATTACHMENT1_EXT);
+    glReadPixels (0, 0, GST_ROUND_UP_2 (width) / 2, GST_ROUND_UP_2 (height) / 2,
+                 GL_LUMINANCE, GL_UNSIGNED_BYTE,
+                 (guint8 *) data +
+                 gst_video_format_get_component_offset (video_format, offsetU, width, height));
+
+    glReadBuffer(GL_COLOR_ATTACHMENT2_EXT);
+    glReadPixels (0, 0, GST_ROUND_UP_2 (width) / 2, GST_ROUND_UP_2 (height) / 2,
+                 GL_LUMINANCE, GL_UNSIGNED_BYTE,
+                 (guint8 *) data +
+                 gst_video_format_get_component_offset (video_format, offsetV, width, height));
+  }
+  break;
+  default:
+    g_assert_not_reached ();
   }
 
   glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0);
-  gst_gl_display_check_framebuffer_status ();
+  gst_gl_display_check_framebuffer_status();
 }
index 234f0e1..cfe002e 100644 (file)
@@ -31,48 +31,48 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
 
 static GstStaticPadTemplate gst_gl_filter_src_pad_template =
-GST_STATIC_PAD_TEMPLATE ("src",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_GL_VIDEO_CAPS)
+  GST_STATIC_PAD_TEMPLATE ("src",
+                          GST_PAD_SRC,
+                          GST_PAD_ALWAYS,
+                          GST_STATIC_CAPS (GST_GL_VIDEO_CAPS)
     );
 
 static GstStaticPadTemplate gst_gl_filter_sink_pad_template =
-GST_STATIC_PAD_TEMPLATE ("sink",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_GL_VIDEO_CAPS)
+  GST_STATIC_PAD_TEMPLATE ("sink",
+                          GST_PAD_SINK,
+                          GST_PAD_ALWAYS,
+                          GST_STATIC_CAPS (GST_GL_VIDEO_CAPS)
     );
 
 #define DEBUG_INIT(bla)                                                        \
   GST_DEBUG_CATEGORY_INIT (gst_gl_filter_debug, "glfilter", 0, "glfilter element");
 
 GST_BOILERPLATE_FULL (GstGLFilter, gst_gl_filter, GstBaseTransform,
-    GST_TYPE_BASE_TRANSFORM, DEBUG_INIT);
+                     GST_TYPE_BASE_TRANSFORM, DEBUG_INIT);
 
 static void gst_gl_filter_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
+                                       const GValue * value, GParamSpec * pspec);
 static void gst_gl_filter_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
+                                       GValue * value, GParamSpec * pspec);
 
-static GstCaps *gst_gl_filter_transform_caps (GstBaseTransform * bt,
-    GstPadDirection direction, GstCaps * caps);
+static GstCaps* gst_gl_filter_transform_caps (GstBaseTransform* bt,
+                                             GstPadDirection direction, GstCaps* caps);
 static void gst_gl_filter_reset (GstGLFilter * filter);
 static gboolean gst_gl_filter_start (GstBaseTransform * bt);
 static gboolean gst_gl_filter_stop (GstBaseTransform * bt);
 static gboolean gst_gl_filter_get_unit_size (GstBaseTransform * trans,
-    GstCaps * caps, guint * size);
+                                            GstCaps * caps, guint * size);
 static GstFlowReturn gst_gl_filter_transform (GstBaseTransform * bt,
-    GstBuffer * inbuf, GstBuffer * outbuf);
+                                             GstBuffer * inbuf, GstBuffer * outbuf);
 static GstFlowReturn gst_gl_filter_prepare_output_buffer (GstBaseTransform *
-    trans, GstBuffer * input, gint size, GstCaps * caps, GstBuffer ** buf);
+                                                         trans, GstBuffer * input, gint size, GstCaps * caps, GstBuffer ** buf);
 static gboolean gst_gl_filter_set_caps (GstBaseTransform * bt, GstCaps * incaps,
-    GstCaps * outcaps);
+                                       GstCaps * outcaps);
 static gboolean gst_gl_filter_do_transform (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf);
+                                           GstGLBuffer * inbuf, GstGLBuffer * outbuf);
 /* GstGLDisplayThreadFunc */
-static void gst_gl_filter_start_gl (GstGLDisplay * display, gpointer data);
-static void gst_gl_filter_stop_gl (GstGLDisplay * display, gpointer data);
+static void gst_gl_filter_start_gl (GstGLDisplay *display, gpointer data);
+static void gst_gl_filter_stop_gl (GstGLDisplay *display, gpointer data);
 
 
 static void
@@ -81,9 +81,9 @@ gst_gl_filter_base_init (gpointer klass)
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
   gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_filter_src_pad_template));
+                                     gst_static_pad_template_get (&gst_gl_filter_src_pad_template));
   gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_filter_sink_pad_template));
+                                     gst_static_pad_template_get (&gst_gl_filter_sink_pad_template));
 }
 
 static void
@@ -96,14 +96,14 @@ gst_gl_filter_class_init (GstGLFilterClass * klass)
   gobject_class->get_property = gst_gl_filter_get_property;
 
   GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
-      gst_gl_filter_transform_caps;
+    gst_gl_filter_transform_caps;
   GST_BASE_TRANSFORM_CLASS (klass)->transform = gst_gl_filter_transform;
   GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_filter_start;
   GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_filter_stop;
   GST_BASE_TRANSFORM_CLASS (klass)->set_caps = gst_gl_filter_set_caps;
   GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size = gst_gl_filter_get_unit_size;
   GST_BASE_TRANSFORM_CLASS (klass)->prepare_output_buffer =
-      gst_gl_filter_prepare_output_buffer;
+    gst_gl_filter_prepare_output_buffer;
 
   klass->set_caps = NULL;
   klass->filter = NULL;
@@ -128,45 +128,48 @@ gst_gl_filter_init (GstGLFilter * filter, GstGLFilterClass * klass)
 
 static void
 gst_gl_filter_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
+                           const GValue * value, GParamSpec * pspec)
 {
   //GstGLFilter *filter = GST_GL_FILTER (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  switch (prop_id)
+  {
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
 gst_gl_filter_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
+                           GValue * value, GParamSpec * pspec)
 {
   //GstGLFilter *filter = GST_GL_FILTER (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  switch (prop_id)
+  {
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
-gst_gl_filter_reset (GstGLFilter * filter)
+gst_gl_filter_reset (GstGLFilter* filter)
 {
-  GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
+  GstGLFilterClassfilter_class = GST_GL_FILTER_GET_CLASS (filter);
 
-  if (filter->display) {
+  if (filter->display)
+  {
     if (filter_class->onReset)
       filter_class->onReset (filter);
 
     if (filter_class->display_reset_cb != NULL) {
-      gst_gl_display_thread_add (filter->display, gst_gl_filter_stop_gl,
-          filter);
+      gst_gl_display_thread_add (filter->display, gst_gl_filter_stop_gl, filter);
     }
     //blocking call, delete the FBO
-    gst_gl_display_del_fbo (filter->display, filter->fbo, filter->depthbuffer);
+    gst_gl_display_del_fbo (filter->display, filter->fbo,
+                           filter->depthbuffer);
     g_object_unref (filter->display);
     filter->display = NULL;
   }
@@ -177,19 +180,19 @@ gst_gl_filter_reset (GstGLFilter * filter)
 }
 
 static gboolean
-gst_gl_filter_start (GstBaseTransform * bt)
+gst_gl_filter_start (GstBaseTransform* bt)
 {
   GstGLFilter *filter = GST_GL_FILTER (bt);
   GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
 
   if (filter_class->onStart)
     filter_class->onStart (filter);
-
+  
   return TRUE;
 }
 
 static gboolean
-gst_gl_filter_stop (GstBaseTransform * bt)
+gst_gl_filter_stop (GstBaseTransform* bt)
 {
   GstGLFilter *filter = GST_GL_FILTER (bt);
   GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
@@ -203,7 +206,7 @@ gst_gl_filter_stop (GstBaseTransform * bt)
 }
 
 static void
-gst_gl_filter_start_gl (GstGLDisplay * display, gpointer data)
+gst_gl_filter_start_gl (GstGLDisplay *display, gpointer data)
 {
   GstGLFilter *filter = GST_GL_FILTER (data);
   GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
@@ -212,7 +215,7 @@ gst_gl_filter_start_gl (GstGLDisplay * display, gpointer data)
 }
 
 static void
-gst_gl_filter_stop_gl (GstGLDisplay * display, gpointer data)
+gst_gl_filter_stop_gl (GstGLDisplay *display, gpointer data)
 {
   GstGLFilter *filter = GST_GL_FILTER (data);
   GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
@@ -220,28 +223,30 @@ gst_gl_filter_stop_gl (GstGLDisplay * display, gpointer data)
   filter_class->display_reset_cb (filter);
 }
 
-static GstCaps *
-gst_gl_filter_transform_caps (GstBaseTransform * bt,
-    GstPadDirection direction, GstCaps * caps)
+static GstCaps*
+gst_gl_filter_transform_caps (GstBaseTransform* bt,
+                             GstPadDirection direction, GstCaps* caps)
 {
   //GstGLFilter* filter = GST_GL_FILTER (bt);
-  GstStructure *structure = gst_caps_get_structure (caps, 0);
-  GstCaps *ret = gst_caps_copy (caps);
-  const GValue *par = NULL;
+  GstStructurestructure = gst_caps_get_structure (caps, 0);
+  GstCapsret = gst_caps_copy (caps);
+  const GValuepar = NULL;
 
   structure = gst_structure_copy (gst_caps_get_structure (ret, 0));
 
   gst_structure_set (structure,
-      "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
-      "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
+                    "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+                    "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
 
   gst_caps_merge_structure (ret, gst_structure_copy (structure));
 
-  if ((par = gst_structure_get_value (structure, "pixel-aspect-ratio"))) {
+  if ((par = gst_structure_get_value (structure, "pixel-aspect-ratio")))
+  {
     gst_structure_set (structure,
-        "pixel-aspect-ratio", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
+                      "pixel-aspect-ratio", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
     gst_caps_merge_structure (ret, structure);
-  } else
+  }
+  else
     gst_structure_free (structure);
 
   GST_DEBUG_OBJECT (bt, "returning caps: %" GST_PTR_FORMAT, ret);
@@ -251,8 +256,8 @@ gst_gl_filter_transform_caps (GstBaseTransform * bt,
 
 
 static gboolean
-gst_gl_filter_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
-    guint * size)
+gst_gl_filter_get_unit_size (GstBaseTransform* trans, GstCaps* caps,
+                            guint* size)
 {
   gboolean ret = FALSE;
   gint width = 0;
@@ -266,27 +271,27 @@ gst_gl_filter_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
 }
 
 static GstFlowReturn
-gst_gl_filter_prepare_output_buffer (GstBaseTransform * trans,
-    GstBuffer * inbuf, gint size, GstCaps * caps, GstBuffer ** buf)
+gst_gl_filter_prepare_output_buffer (GstBaseTransform* trans,
+                                    GstBuffer* inbuf, gint size, GstCaps* caps, GstBuffer** buf)
 {
-  GstGLFilter *filter = NULL;
-  GstGLBuffer *gl_inbuf = GST_GL_BUFFER (inbuf);
-  GstGLBuffer *gl_outbuf = NULL;
+  GstGLFilterfilter = NULL;
+  GstGLBuffergl_inbuf = GST_GL_BUFFER (inbuf);
+  GstGLBuffergl_outbuf = NULL;
 
   filter = GST_GL_FILTER (trans);
 
-  if (filter->display == NULL) {
-    GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
+  if (filter->display == NULL)
+  {
+    GstGLFilterClass* filter_class = GST_GL_FILTER_GET_CLASS (filter);
 
     filter->display = g_object_ref (gl_inbuf->display);
 
     //blocking call, generate a FBO
     gst_gl_display_gen_fbo (filter->display, filter->width, filter->height,
-        &filter->fbo, &filter->depthbuffer);
+                           &filter->fbo, &filter->depthbuffer);
 
     if (filter_class->display_init_cb != NULL) {
-      gst_gl_display_thread_add (filter->display, gst_gl_filter_start_gl,
-          filter);
+      gst_gl_display_thread_add (filter->display, gst_gl_filter_start_gl, filter);
     }
 
     if (filter_class->onInitFBO)
@@ -294,7 +299,7 @@ gst_gl_filter_prepare_output_buffer (GstBaseTransform * trans,
   }
 
   gl_outbuf = gst_gl_buffer_new (filter->display,
-      filter->width, filter->height);
+                                filter->width, filter->height);
 
   *buf = GST_BUFFER (gl_outbuf);
   gst_buffer_set_caps (*buf, caps);
@@ -306,19 +311,20 @@ gst_gl_filter_prepare_output_buffer (GstBaseTransform * trans,
 }
 
 static gboolean
-gst_gl_filter_set_caps (GstBaseTransform * bt, GstCaps * incaps,
-    GstCaps * outcaps)
+gst_gl_filter_set_caps (GstBaseTransform* bt, GstCaps* incaps,
+                       GstCaps* outcaps)
 {
-  GstGLFilter *filter = GST_GL_FILTER (bt);
+  GstGLFilterfilter = GST_GL_FILTER (bt);
   gboolean ret = FALSE;
-  GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
+  GstGLFilterClassfilter_class = GST_GL_FILTER_GET_CLASS (filter);
 
   ret = gst_gl_buffer_parse_caps (outcaps, &filter->width, &filter->height);
 
   if (filter_class->set_caps)
     filter_class->set_caps (filter, incaps, outcaps);
 
-  if (!ret) {
+  if (!ret)
+  {
     GST_DEBUG ("bad caps");
     return FALSE;
   }
@@ -329,12 +335,12 @@ gst_gl_filter_set_caps (GstBaseTransform * bt, GstCaps * incaps,
 }
 
 static GstFlowReturn
-gst_gl_filter_transform (GstBaseTransform * bt, GstBuffer * inbuf,
-    GstBuffer * outbuf)
+gst_gl_filter_transform (GstBaseTransform* bt, GstBuffer* inbuf,
+                        GstBuffer* outbuf)
 {
-  GstGLFilter *filter;
-  GstGLBuffer *gl_inbuf = GST_GL_BUFFER (inbuf);
-  GstGLBuffer *gl_outbuf = GST_GL_BUFFER (outbuf);
+  GstGLFilterfilter;
+  GstGLBuffergl_inbuf = GST_GL_BUFFER (inbuf);
+  GstGLBuffergl_outbuf = GST_GL_BUFFER (outbuf);
 
   filter = GST_GL_FILTER (bt);
 
@@ -344,10 +350,10 @@ gst_gl_filter_transform (GstBaseTransform * bt, GstBuffer * inbuf,
 }
 
 static gboolean
-gst_gl_filter_do_transform (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf)
+gst_gl_filter_do_transform (GstGLFilter* filter,
+                           GstGLBuffer* inbuf, GstGLBuffer* outbuf)
 {
-  GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
+  GstGLFilterClassfilter_class = GST_GL_FILTER_GET_CLASS (filter);
 
   filter_class->filter (filter, inbuf, outbuf);
 
@@ -357,13 +363,15 @@ gst_gl_filter_do_transform (GstGLFilter * filter,
 /* convenience functions to simplify filter development */
 
 void
-gst_gl_filter_render_to_target (GstGLFilter * filter,
-    GLuint input, GLuint target, GLCB func, gpointer data)
+gst_gl_filter_render_to_target (GstGLFilter *filter,
+                               GLuint input, GLuint target,
+                               GLCB func, gpointer data)
 {
   gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
-      filter->fbo, filter->depthbuffer, target,
-      func,
-      filter->width, filter->height, input,
-      0, filter->width, 0, filter->height,
-      GST_GL_DISPLAY_PROJECTION_ORTHO2D, data);
+                         filter->fbo, filter->depthbuffer, target,
+                         func,
+                         filter->width, filter->height, input,
+                         0, filter->width, 0, filter->height,
+                         GST_GL_DISPLAY_PROJECTION_ORTHO2D,
+                         data);
 }
index 97fa563..6e63045 100644 (file)
@@ -132,8 +132,8 @@ gst_gl_shader_get_property (GObject * object,
 }
 
 static void
-gst_gl_shader_log_handler (const gchar * domain, GLogLevelFlags flags,
-    const gchar * message, gpointer user_data)
+gst_gl_shader_log_handler (const gchar *domain, GLogLevelFlags flags,
+                           const gchar *message, gpointer user_data)
 {
   if (_gst_gl_shader_debug) {
     g_log_default_handler (domain, flags, message, user_data);
@@ -249,7 +249,7 @@ gst_gl_shader_init (GstGLShader * self)
     _gst_gl_shader_debug = TRUE;
 
   g_log_set_handler ("GstGLShader", G_LOG_LEVEL_DEBUG,
-      gst_gl_shader_log_handler, NULL);
+                     gst_gl_shader_log_handler, NULL);
 }
 
 GstGLShader *
@@ -511,7 +511,7 @@ gst_gl_shader_set_uniform_1i (GstGLShader * shader, const gchar * name,
 }
 
 GLint
-gst_gl_shader_get_attribute_location (GstGLShader * shader, const gchar * name)
+gst_gl_shader_get_attribute_location (GstGLShader * shader, const gchar *name)
 {
   GstGLShaderPrivate *priv;
 
index 33dbccf..a37901b 100644 (file)
 #define WM_GST_GL_WINDOW_CUSTOM (WM_APP+1)
 #define WM_GST_GL_WINDOW_QUIT (WM_APP+2)
 
-void gst_gl_window_set_pixel_format (GstGLWindow * window);
-LRESULT CALLBACK window_proc (HWND hWnd, UINT uMsg, WPARAM wParam,
-    LPARAM lParam);
-LRESULT FAR PASCAL sub_class_proc (HWND hWnd, UINT uMsg, WPARAM wParam,
-    LPARAM lParam);
+void gst_gl_window_set_pixel_format (GstGLWindow *window);
+LRESULT CALLBACK window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+LRESULT FAR PASCAL sub_class_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
 
 #define GST_GL_WINDOW_GET_PRIVATE(o)  \
   (G_TYPE_INSTANCE_GET_PRIVATE((o), GST_GL_TYPE_WINDOW, GstGLWindowPrivate))
@@ -81,8 +79,8 @@ gst_gl_window_finalize (GObject * object)
 }
 
 static void
-gst_gl_window_log_handler (const gchar * domain, GLogLevelFlags flags,
-    const gchar * message, gpointer user_data)
+gst_gl_window_log_handler (const gchar *domain, GLogLevelFlags flags,
+                           const gchar *message, gpointer user_data)
 {
   if (_gst_gl_window_debug) {
     g_log_default_handler (domain, flags, message, user_data);
@@ -108,8 +106,9 @@ gst_gl_window_class_init (GstGLWindowClass * klass)
 
   atom = GetClassInfo (hinstance, "GSTGL", &wc);
 
-  if (atom == 0) {
-    ZeroMemory (&wc, sizeof (WNDCLASS));
+  if (atom == 0)
+  {
+    ZeroMemory (&wc, sizeof(WNDCLASS));
 
     wc.lpfnWndProc = window_proc;
     wc.cbClsExtra = 0;
@@ -125,12 +124,12 @@ gst_gl_window_class_init (GstGLWindowClass * klass)
     atom = RegisterClass (&wc);
 
     if (atom == 0)
-      g_error ("Failed to register window class %x\r\n", GetLastError ());
+      g_error ("Failed to register window class %x\r\n", GetLastError());
   }
 }
 
 static void
-gst_gl_window_init (GstGLWindow * window)
+gst_gl_window_init (GstGLWindow *window)
 {
   window->priv = GST_GL_WINDOW_GET_PRIVATE (window);
 
@@ -138,7 +137,7 @@ gst_gl_window_init (GstGLWindow * window)
     _gst_gl_window_debug = TRUE;
 
   g_log_set_handler ("GstGLWindow", G_LOG_LEVEL_DEBUG,
-      gst_gl_window_log_handler, NULL);
+    gst_gl_window_log_handler, NULL);
 }
 
 /* Must be called in the gl thread */
@@ -147,7 +146,7 @@ gst_gl_window_new (gint width, gint height)
 {
   GstGLWindow *window = g_object_new (GST_GL_TYPE_WINDOW, NULL);
   GstGLWindowPrivate *priv = window->priv;
-  GstGLWindowClass *klass = GST_GL_WINDOW_GET_CLASS (window);
+  GstGLWindowClassklass = GST_GL_WINDOW_GET_CLASS (window);
 
   HINSTANCE hinstance = GetModuleHandle (NULL);
 
@@ -170,16 +169,22 @@ gst_gl_window_new (gint width, gint height)
   priv->visible = FALSE;
 
   width += 2 * GetSystemMetrics (SM_CXSIZEFRAME);
-  height +=
-      2 * GetSystemMetrics (SM_CYSIZEFRAME) + GetSystemMetrics (SM_CYCAPTION);
-
-  priv->internal_win_id = CreateWindowEx (0,
-      "GSTGL",
-      "OpenGL renderer",
-      WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW,
-      x, y, width, height, (HWND) NULL, (HMENU) NULL, hinstance, window);
-
-  if (!priv->internal_win_id) {
+  height += 2 * GetSystemMetrics (SM_CYSIZEFRAME) + GetSystemMetrics (SM_CYCAPTION);
+
+  priv->internal_win_id = CreateWindowEx (
+    0,
+    "GSTGL",
+    "OpenGL renderer",
+    WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW,
+    x, y, width, height,
+    (HWND) NULL,
+    (HMENU) NULL,
+    hinstance,
+    window
+  );
+
+  if (!priv->internal_win_id)
+  {
     g_debug ("failed to create gl window: %d\n", priv->internal_win_id);
     return NULL;
   }
@@ -201,41 +206,36 @@ gst_gl_window_error_quark (void)
 }
 
 void
-gst_gl_window_set_external_window_id (GstGLWindow * window, guint64 id)
+gst_gl_window_set_external_window_id (GstGLWindow *window, guint64 id)
 {
   GstGLWindowPrivate *priv = window->priv;
-  WNDPROC window_parent_proc =
-      (WNDPROC) (guint64) GetWindowLongPtr ((HWND) id, GWL_WNDPROC);
+  WNDPROC window_parent_proc = (WNDPROC) (guint64) GetWindowLongPtr((HWND)id, GWL_WNDPROC);
   RECT rect;
 
-  SetProp (priv->internal_win_id, "gl_window_parent_id", (HWND) id);
-  SetProp ((HWND) id, "gl_window_id", priv->internal_win_id);
-  SetProp ((HWND) id, "gl_window_parent_proc", (WNDPROC) window_parent_proc);
-  SetWindowLongPtr ((HWND) id, GWL_WNDPROC, (DWORD) (guint64) sub_class_proc);
+  SetProp (priv->internal_win_id, "gl_window_parent_id", (HWND)id);
+  SetProp ((HWND)id, "gl_window_id", priv->internal_win_id);
+  SetProp ((HWND)id, "gl_window_parent_proc", (WNDPROC) window_parent_proc);
+  SetWindowLongPtr ((HWND)id, GWL_WNDPROC, (DWORD) (guint64) sub_class_proc);
 
   SetWindowLongPtr (priv->internal_win_id, GWL_STYLE, WS_CHILD | WS_MAXIMIZE);
-  SetParent (priv->internal_win_id, (HWND) id);
+  SetParent (priv->internal_win_id, (HWND)id);
 
   //take changes into account: SWP_FRAMECHANGED
-  GetClientRect ((HWND) id, &rect);
-  SetWindowPos (priv->internal_win_id, HWND_TOP, rect.left, rect.top,
-      rect.right, rect.bottom,
-      SWP_ASYNCWINDOWPOS | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER |
-      SWP_FRAMECHANGED | SWP_NOACTIVATE);
-  MoveWindow (priv->internal_win_id, rect.left, rect.top, rect.right,
-      rect.bottom, FALSE);
+  GetClientRect ((HWND)id, &rect);
+  SetWindowPos (priv->internal_win_id, HWND_TOP, rect.left, rect.top, rect.right, rect.bottom,
+    SWP_ASYNCWINDOWPOS | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED | SWP_NOACTIVATE);
+  MoveWindow (priv->internal_win_id, rect.left, rect.top, rect.right, rect.bottom, FALSE);
 }
 
 void
-gst_gl_window_set_external_gl_context (GstGLWindow * window, guint64 context)
+gst_gl_window_set_external_gl_context (GstGLWindow *window, guint64 context)
 {
   g_warning ("gst_gl_window_set_external_gl_context: not implemented\n");
 }
 
 /* Must be called in the gl thread */
 void
-gst_gl_window_set_draw_callback (GstGLWindow * window, GstGLWindowCB callback,
-    gpointer data)
+gst_gl_window_set_draw_callback (GstGLWindow *window, GstGLWindowCB callback, gpointer data)
 {
   GstGLWindowPrivate *priv = window->priv;
 
@@ -245,8 +245,7 @@ gst_gl_window_set_draw_callback (GstGLWindow * window, GstGLWindowCB callback,
 
 /* Must be called in the gl thread */
 void
-gst_gl_window_set_resize_callback (GstGLWindow * window,
-    GstGLWindowCB2 callback, gpointer data)
+gst_gl_window_set_resize_callback (GstGLWindow *window, GstGLWindowCB2 callback , gpointer data)
 {
   GstGLWindowPrivate *priv = window->priv;
 
@@ -256,8 +255,7 @@ gst_gl_window_set_resize_callback (GstGLWindow * window,
 
 /* Must be called in the gl thread */
 void
-gst_gl_window_set_close_callback (GstGLWindow * window, GstGLWindowCB callback,
-    gpointer data)
+gst_gl_window_set_close_callback (GstGLWindow *window, GstGLWindowCB callback, gpointer data)
 {
   GstGLWindowPrivate *priv = window->priv;
 
@@ -266,28 +264,29 @@ gst_gl_window_set_close_callback (GstGLWindow * window, GstGLWindowCB callback,
 }
 
 void
-gst_gl_window_draw_unlocked (GstGLWindow * window)
+gst_gl_window_draw_unlocked (GstGLWindow *window)
 {
   gst_gl_window_draw (window);
 }
 
 /* Thread safe */
 void
-gst_gl_window_draw (GstGLWindow * window)
+gst_gl_window_draw (GstGLWindow *window)
 {
   GstGLWindowPrivate *priv = window->priv;
 
-  if (!priv->visible) {
+  if (!priv->visible)
+  {
     ShowWindowAsync (priv->internal_win_id, SW_SHOW);
     priv->visible = TRUE;
   }
 
   RedrawWindow (priv->internal_win_id, NULL, NULL,
-      RDW_NOERASE | RDW_INTERNALPAINT | RDW_INVALIDATE);
+    RDW_NOERASE | RDW_INTERNALPAINT | RDW_INVALIDATE);
 }
 
 void
-gst_gl_window_run_loop (GstGLWindow * window)
+gst_gl_window_run_loop (GstGLWindow *window)
 {
   GstGLWindowPrivate *priv = window->priv;
   gboolean running = TRUE;
@@ -296,14 +295,18 @@ gst_gl_window_run_loop (GstGLWindow * window)
 
   g_debug ("begin loop\n");
 
-  while (running && (bRet = GetMessage (&msg, NULL, 0, 0)) != 0) {
-    if (bRet == -1) {
-      g_error ("Failed to get message %x\r\n", GetLastError ());
-      running = FALSE;
-    } else {
-      TranslateMessage (&msg);
-      DispatchMessage (&msg);
-    }
+  while (running && (bRet = GetMessage (&msg, NULL, 0, 0)) != 0)
+  {
+      if (bRet == -1)
+      {
+          g_error ("Failed to get message %x\r\n", GetLastError());
+          running = FALSE;
+      }
+      else
+      {
+          TranslateMessage (&msg);
+          DispatchMessage (&msg);
+      }
   }
 
   g_debug ("end loop\n");
@@ -311,13 +314,12 @@ gst_gl_window_run_loop (GstGLWindow * window)
 
 /* Thread safe */
 void
-gst_gl_window_quit_loop (GstGLWindow * window, GstGLWindowCB callback,
-    gpointer data)
+gst_gl_window_quit_loop (GstGLWindow *window, GstGLWindowCB callback, gpointer data)
 {
-  if (window) {
+  if (window)
+  {
     GstGLWindowPrivate *priv = window->priv;
-    LRESULT res = PostMessage (priv->internal_win_id, WM_GST_GL_WINDOW_QUIT,
-        (WPARAM) data, (LPARAM) callback);
+    LRESULT res = PostMessage(priv->internal_win_id, WM_GST_GL_WINDOW_QUIT, (WPARAM) data, (LPARAM) callback);
     g_assert (SUCCEEDED (res));
     g_debug ("end loop requested\n");
   }
@@ -325,13 +327,12 @@ gst_gl_window_quit_loop (GstGLWindow * window, GstGLWindowCB callback,
 
 /* Thread safe */
 void
-gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
-    gpointer data)
+gst_gl_window_send_message (GstGLWindow *window, GstGLWindowCB callback, gpointer data)
 {
-  if (window) {
+  if (window)
+  {
     GstGLWindowPrivate *priv = window->priv;
-    LRESULT res = SendMessage (priv->internal_win_id, WM_GST_GL_WINDOW_CUSTOM,
-        (WPARAM) data, (LPARAM) callback);
+    LRESULT res = SendMessage (priv->internal_win_id, WM_GST_GL_WINDOW_CUSTOM, (WPARAM) data, (LPARAM) callback);
     g_assert (SUCCEEDED (res));
   }
 }
@@ -339,58 +340,56 @@ gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
 /* PRIVATE */
 
 void
-gst_gl_window_set_pixel_format (GstGLWindow * window)
+gst_gl_window_set_pixel_format (GstGLWindow *window)
 {
-  GstGLWindowPrivate *priv = window->priv;
-  PIXELFORMATDESCRIPTOR pfd;
-  gint pixelformat = 0;
-  gboolean res = FALSE;
-
-  pfd.nSize = sizeof (PIXELFORMATDESCRIPTOR);
-  pfd.nVersion = 1;
-  pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
-  pfd.iPixelType = PFD_TYPE_RGBA;
-  pfd.cColorBits = 24;
-  pfd.cRedBits = 0;
-  pfd.cRedShift = 0;
-  pfd.cGreenBits = 0;
-  pfd.cGreenShift = 0;
-  pfd.cBlueBits = 0;
-  pfd.cBlueShift = 0;
-  pfd.cAlphaBits = 0;
-  pfd.cAlphaShift = 0;
-  pfd.cAccumBits = 0;
-  pfd.cAccumRedBits = 0;
-  pfd.cAccumGreenBits = 0;
-  pfd.cAccumBlueBits = 0;
-  pfd.cAccumAlphaBits = 0;
-  pfd.cDepthBits = 32;
-  pfd.cStencilBits = 8;
-  pfd.cAuxBuffers = 0;
-  pfd.iLayerType = PFD_MAIN_PLANE;
-  pfd.bReserved = 0;
-  pfd.dwLayerMask = 0;
-  pfd.dwVisibleMask = 0;
-  pfd.dwDamageMask = 0;
-
-  pfd.cColorBits = (BYTE) GetDeviceCaps (priv->device, BITSPIXEL);
-
-  pixelformat = ChoosePixelFormat (priv->device, &pfd);
-
-  g_assert (pixelformat);
-
-  res = SetPixelFormat (priv->device, pixelformat, &pfd);
-
-  g_assert (res);
+    GstGLWindowPrivate *priv = window->priv;
+    PIXELFORMATDESCRIPTOR pfd;
+    gint pixelformat = 0;
+    gboolean res = FALSE;
+
+    pfd.nSize           = sizeof(PIXELFORMATDESCRIPTOR);
+    pfd.nVersion        = 1;
+    pfd.dwFlags         = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
+    pfd.iPixelType      = PFD_TYPE_RGBA;
+    pfd.cColorBits      = 24;
+    pfd.cRedBits        = 0;
+    pfd.cRedShift       = 0;
+    pfd.cGreenBits      = 0;
+    pfd.cGreenShift     = 0;
+    pfd.cBlueBits       = 0;
+    pfd.cBlueShift      = 0;
+    pfd.cAlphaBits      = 0;
+    pfd.cAlphaShift     = 0;
+    pfd.cAccumBits      = 0;
+    pfd.cAccumRedBits   = 0;
+    pfd.cAccumGreenBits = 0;
+    pfd.cAccumBlueBits  = 0;
+    pfd.cAccumAlphaBits = 0;
+    pfd.cDepthBits      = 32;
+    pfd.cStencilBits    = 8;
+    pfd.cAuxBuffers     = 0;
+    pfd.iLayerType      = PFD_MAIN_PLANE;
+    pfd.bReserved       = 0;
+    pfd.dwLayerMask     = 0;
+    pfd.dwVisibleMask   = 0;
+    pfd.dwDamageMask    = 0;
+
+    pfd.cColorBits = (BYTE) GetDeviceCaps (priv->device, BITSPIXEL);
+
+    pixelformat = ChoosePixelFormat (priv->device, &pfd );
+
+    g_assert (pixelformat);
+
+    res = SetPixelFormat (priv->device, pixelformat, &pfd);
+
+    g_assert (res);
 }
 
-LRESULT CALLBACK
-window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+LRESULT CALLBACK window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
   if (uMsg == WM_CREATE) {
 
-    GstGLWindow *window =
-        (GstGLWindow *) (((LPCREATESTRUCT) lParam)->lpCreateParams);
+    GstGLWindow *window = (GstGLWindow *) (((LPCREATESTRUCT) lParam)->lpCreateParams);
 
     g_debug ("WM_CREATE\n");
 
@@ -404,21 +403,20 @@ window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
       if (priv->gl_context)
         g_debug ("gl context created: %d\n", priv->gl_context);
       else
-        g_debug ("failed to create glcontext %d, %x\r\n", hWnd,
-            GetLastError ());
+        g_debug ("failed to create glcontext %d, %x\r\n", hWnd, GetLastError());
       g_assert (priv->gl_context);
       ReleaseDC (hWnd, priv->device);
       if (!wglMakeCurrent (priv->device, priv->gl_context))
-        g_debug ("failed to make opengl context current %d, %x\r\n", hWnd,
-            GetLastError ());
+        g_debug ("failed to make opengl context current %d, %x\r\n", hWnd, GetLastError());
     }
 
     SetProp (hWnd, "gl_window", window);
 
     return 0;
-  } else if (GetProp (hWnd, "gl_window")) {
+  }
+  else if (GetProp(hWnd, "gl_window")) {
 
-    GstGLWindow *window = GetProp (hWnd, "gl_window");
+    GstGLWindow *window = GetProp(hWnd, "gl_window");
     GstGLWindowPrivate *priv = NULL;
 
     g_assert (window);
@@ -429,20 +427,21 @@ window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
     g_assert (priv->internal_win_id == hWnd);
 
-    g_assert (priv->gl_context == wglGetCurrentContext ());
+    g_assert (priv->gl_context == wglGetCurrentContext());
 
-    switch (uMsg) {
+    switch ( uMsg ) {
 
       case WM_SIZE:
       {
         if (priv->resize_cb)
-          priv->resize_cb (priv->resize_data, LOWORD (lParam), HIWORD (lParam));
+          priv->resize_cb (priv->resize_data, LOWORD(lParam), HIWORD(lParam));
         break;
       }
 
       case WM_PAINT:
       {
-        if (priv->draw_cb) {
+        if (priv->draw_cb)
+        {
           PAINTSTRUCT ps;
           BeginPaint (hWnd, &ps);
           priv->draw_cb (priv->draw_data);
@@ -457,14 +456,14 @@ window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
         ShowWindowAsync (priv->internal_win_id, SW_HIDE);
 
         if (priv->close_cb)
-          priv->close_cb (priv->close_data);
-
-        priv->draw_cb = NULL;
-        priv->draw_data = NULL;
-        priv->resize_cb = NULL;
-        priv->resize_data = NULL;
-        priv->close_cb = NULL;
-        priv->close_data = NULL;
+            priv->close_cb (priv->close_data);
+
+          priv->draw_cb = NULL;
+          priv->draw_data = NULL;
+          priv->resize_cb = NULL;
+          priv->resize_data = NULL;
+          priv->close_cb = NULL;
+          priv->close_data = NULL;
         break;
       }
 
@@ -478,13 +477,13 @@ window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
         destroy_cb ((gpointer) wParam);
 
         parent_id = GetProp (hWnd, "gl_window_parent_id");
-        if (parent_id) {
+        if (parent_id)
+        {
           WNDPROC parent_proc = GetProp (parent_id, "gl_window_parent_proc");
 
           g_assert (parent_proc);
 
-          SetWindowLongPtr (parent_id, GWL_WNDPROC,
-              (LONG) (guint64) parent_proc);
+          SetWindowLongPtr (parent_id, GWL_WNDPROC, (LONG) (guint64) parent_proc);
           SetParent (hWnd, NULL);
 
           RemoveProp (parent_id, "gl_window_parent_proc");
@@ -495,19 +494,19 @@ window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
         RemoveProp (hWnd, "gl_window");
 
         if (!wglMakeCurrent (NULL, NULL))
-          g_debug ("failed to make current %d, %x\r\n", hWnd, GetLastError ());
+          g_debug ("failed to make current %d, %x\r\n", hWnd, GetLastError());
 
-        if (priv->gl_context) {
+        if (priv->gl_context)
+        {
           if (!wglDeleteContext (priv->gl_context))
-            g_debug ("failed to destroy context %d, %x\r\n", priv->gl_context,
-                GetLastError ());
+            g_debug ("failed to destroy context %d, %x\r\n", priv->gl_context, GetLastError());
         }
 
-        if (priv->internal_win_id) {
+        if (priv->internal_win_id)
+        {
           g_debug ("BEFORE\n");
-          if (!DestroyWindow (priv->internal_win_id))
-            g_debug ("failed to destroy window %d, %x\r\n", hWnd,
-                GetLastError ());
+          if (!DestroyWindow(priv->internal_win_id))
+            g_debug ("failed to destroy window %d, %x\r\n", hWnd, GetLastError());
           g_debug ("AFTER\n");
         }
 
@@ -525,7 +524,8 @@ window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
       case WM_GST_GL_WINDOW_CUSTOM:
       {
-        if (!priv->is_closed) {
+        if (!priv->is_closed)
+        {
           GstGLWindowCB custom_cb = (GstGLWindowCB) lParam;
           custom_cb ((gpointer) wParam);
         }
@@ -536,23 +536,25 @@ window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
         return TRUE;
 
       default:
-        return DefWindowProc (hWnd, uMsg, wParam, lParam);
+        return DefWindowProc( hWnd, uMsg, wParam, lParam );
     }
 
     return 0;
-  } else
-    return DefWindowProc (hWnd, uMsg, wParam, lParam);
+  }
+  else
+    return DefWindowProc( hWnd, uMsg, wParam, lParam );
 }
 
-LRESULT FAR PASCAL
-sub_class_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+LRESULT FAR PASCAL sub_class_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
   WNDPROC window_parent_proc = GetProp (hWnd, "gl_window_parent_proc");
 
-  if (uMsg == WM_SIZE) {
+  if (uMsg == WM_SIZE)
+  {
     HWND gl_window_id = GetProp (hWnd, "gl_window_id");
-    MoveWindow (gl_window_id, 0, 0, LOWORD (lParam), HIWORD (lParam), FALSE);
+    MoveWindow (gl_window_id, 0, 0, LOWORD(lParam), HIWORD(lParam), FALSE);
   }
 
   return CallWindowProc (window_parent_proc, hWnd, uMsg, wParam, lParam);
 }
+
index d097f3b..38d2844 100644 (file)
@@ -119,14 +119,14 @@ gst_gl_window_finalize (GObject * object)
 
   XSync (priv->device, FALSE);
 
-  while (XPending (priv->device))
+  while(XPending (priv->device))
     XNextEvent (priv->device, &event);
 
   XSetCloseDownMode (priv->device, DestroyAll);
 
   /*XAddToSaveSet (display, w)
-     Display *display;
-     Window w; */
+  Display *display;
+  Window w;*/
 
   //FIXME: it seems it causes destroy all created windows, even by other display connection:
   //This is case in: gst-launch-0.10 videotestsrc ! tee name=t t. ! queue ! glimagesink t. ! queue ! glimagesink
@@ -142,14 +142,16 @@ gst_gl_window_finalize (GObject * object)
 
   g_debug ("display sender closed\n");
 
-  if (priv->cond_send_message) {
+  if (priv->cond_send_message)
+  {
     g_cond_free (priv->cond_send_message);
     priv->cond_send_message = NULL;
   }
 
   g_mutex_unlock (priv->x_lock);
 
-  if (priv->x_lock) {
+  if (priv->x_lock)
+  {
     g_mutex_free (priv->x_lock);
     priv->x_lock = NULL;
   }
@@ -204,8 +206,8 @@ gst_gl_window_get_property (GObject * object, guint prop_id,
 }
 
 static void
-gst_gl_window_log_handler (const gchar * domain, GLogLevelFlags flags,
-    const gchar * message, gpointer user_data)
+gst_gl_window_log_handler (const gchar *domain, GLogLevelFlags flags,
+                           const gchar *message, gpointer user_data)
 {
   if (_gst_gl_window_debug) {
     g_log_default_handler (domain, flags, message, user_data);
@@ -229,7 +231,7 @@ gst_gl_window_class_init (GstGLWindowClass * klass)
 }
 
 static void
-gst_gl_window_init (GstGLWindow * window)
+gst_gl_window_init (GstGLWindow *window)
 {
   window->priv = GST_GL_WINDOW_GET_PRIVATE (window);
 
@@ -237,7 +239,7 @@ gst_gl_window_init (GstGLWindow * window)
     _gst_gl_window_debug = TRUE;
 
   g_log_set_handler ("GstGLWindow", G_LOG_LEVEL_DEBUG,
-      gst_gl_window_log_handler, NULL);
+    gst_gl_window_log_handler, NULL);
 }
 
 /* Must be called in the gl thread */
@@ -268,7 +270,7 @@ gst_gl_window_new (gint width, gint height)
   static gint x = 0;
   static gint y = 0;
 
-  setlocale (LC_NUMERIC, "C");
+  setlocale(LC_NUMERIC, "C");
 
   priv->x_lock = g_mutex_new ();
   priv->cond_send_message = g_cond_new ();
@@ -312,7 +314,8 @@ gst_gl_window_new (gint width, gint height)
 
   priv->visual_info = glXChooseVisual (priv->device, priv->screen_num, attrib);
 
-  if (!priv->visual_info) {
+  if (!priv->visual_info)
+  {
     g_warning ("glx visual is null (bad attributes)\n");
     return NULL;
   }
@@ -323,8 +326,7 @@ gst_gl_window_new (gint width, gint height)
   if (priv->visual_info->class == TrueColor)
     g_debug ("visual is using TrueColor\n");
 
-  g_debug ("visual ID: %d\n",
-      (gint) XVisualIDFromVisual (priv->visual_info->visual));
+  g_debug ("visual ID: %d\n", (gint)XVisualIDFromVisual(priv->visual_info->visual));
   g_debug ("visual info screen: %d\n", priv->visual_info->screen);
   g_debug ("visual info visualid: %d\n", (gint) priv->visual_info->visualid);
   g_debug ("visual info depth: %d\n", priv->visual_info->depth);
@@ -334,23 +336,20 @@ gst_gl_window_new (gint width, gint height)
   g_debug ("visual info blue_mask: %ld\n", priv->visual_info->blue_mask);
   g_debug ("visual info bits_per_rgb: %d\n", priv->visual_info->bits_per_rgb);
 
-  win_attr.event_mask =
-      StructureNotifyMask | ExposureMask | VisibilityChangeMask;
+  win_attr.event_mask = StructureNotifyMask | ExposureMask | VisibilityChangeMask;
   win_attr.do_not_propagate_mask = NoEventMask;
 
   win_attr.background_pixmap = None;
   win_attr.background_pixel = 0;
   win_attr.border_pixel = 0;
 
-  win_attr.colormap =
-      XCreateColormap (priv->device, priv->root, priv->visual_info->visual,
-      AllocNone);
+  win_attr.colormap = XCreateColormap(priv->device, priv->root, priv->visual_info->visual, AllocNone);
 
   mask = CWBackPixmap | CWBorderPixel | CWColormap | CWEventMask;
 
   priv->internal_win_id = XCreateWindow (priv->device, priv->root, x, y,
-      width, height, 0, priv->visual_info->depth, InputOutput,
-      priv->visual_info->visual, mask, &win_attr);
+    width, height, 0, priv->visual_info->depth, InputOutput,
+    priv->visual_info->visual, mask, &win_attr);
 
   x += 20;
   y += 20;
@@ -359,8 +358,7 @@ gst_gl_window_new (gint width, gint height)
 
   XSetWindowBackgroundPixmap (priv->device, priv->internal_win_id, None);
 
-  g_debug ("gl window id: %" G_GUINT64_FORMAT "\n",
-      (guint64) priv->internal_win_id);
+  g_debug ("gl window id: %" G_GUINT64_FORMAT "\n", (guint64) priv->internal_win_id);
 
   g_debug ("gl window props: x:%d y:%d w:%d h:%d\n", x, y, width, height);
 
@@ -378,22 +376,21 @@ gst_gl_window_new (gint width, gint height)
 
   XSetWMProtocols (priv->device, priv->internal_win_id, wm_atoms, 2);
 
-  priv->gl_context =
-      glXCreateContext (priv->device, priv->visual_info, NULL, TRUE);
+  priv->gl_context = glXCreateContext (priv->device, priv->visual_info, NULL, TRUE);
 
   g_debug ("gl context id: %ld\n", (gulong) priv->gl_context);
 
-  if (!glXIsDirect (priv->device, priv->gl_context))
+  if (!glXIsDirect(priv->device, priv->gl_context))
     g_debug ("direct rendering failed\n");
 
   wm_hints.flags = StateHint;
   wm_hints.initial_state = NormalState;
   wm_hints.input = False;
 
-  XStringListToTextProperty ((char **) &title, 1, &text_property);
+  XStringListToTextProperty ((char**)&title, 1, &text_property);
 
-  XSetWMProperties (priv->device, priv->internal_win_id, &text_property,
-      &text_property, 0, 0, NULL, &wm_hints, NULL);
+  XSetWMProperties (priv->device, priv->internal_win_id, &text_property, &text_property, 0, 0,
+    NULL, &wm_hints, NULL);
 
   XFree (text_property.value);
 
@@ -420,9 +417,10 @@ gst_gl_window_error_quark (void)
 
 /* Not called by the gl thread */
 void
-gst_gl_window_set_external_window_id (GstGLWindow * window, guint64 id)
+gst_gl_window_set_external_window_id (GstGLWindow *window, guint64 id)
 {
-  if (window) {
+  if (window)
+  {
     GstGLWindowPrivate *priv = window->priv;
     XWindowAttributes attr;
 
@@ -434,11 +432,9 @@ gst_gl_window_set_external_window_id (GstGLWindow * window, guint64 id)
 
     XGetWindowAttributes (priv->disp_send, priv->parent, &attr);
 
-    XResizeWindow (priv->disp_send, priv->internal_win_id, attr.width,
-        attr.height);
+    XResizeWindow (priv->disp_send, priv->internal_win_id, attr.width, attr.height);
 
-    XReparentWindow (priv->disp_send, priv->internal_win_id, priv->parent,
-        attr.x, attr.y);
+    XReparentWindow (priv->disp_send, priv->internal_win_id, priv->parent, attr.x, attr.y);
 
     XSync (priv->disp_send, FALSE);
 
@@ -447,14 +443,13 @@ gst_gl_window_set_external_window_id (GstGLWindow * window, guint64 id)
 }
 
 void
-gst_gl_window_set_external_gl_context (GstGLWindow * window, guint64 context)
+gst_gl_window_set_external_gl_context (GstGLWindow *window, guint64 context)
 {
   g_warning ("gst_gl_window_set_external_gl_context: not implemented\n");
 }
 
 void
-gst_gl_window_set_draw_callback (GstGLWindow * window, GstGLWindowCB callback,
-    gpointer data)
+gst_gl_window_set_draw_callback (GstGLWindow *window, GstGLWindowCB callback, gpointer data)
 {
   GstGLWindowPrivate *priv = window->priv;
 
@@ -467,8 +462,7 @@ gst_gl_window_set_draw_callback (GstGLWindow * window, GstGLWindowCB callback,
 }
 
 void
-gst_gl_window_set_resize_callback (GstGLWindow * window,
-    GstGLWindowCB2 callback, gpointer data)
+gst_gl_window_set_resize_callback (GstGLWindow *window, GstGLWindowCB2 callback , gpointer data)
 {
   GstGLWindowPrivate *priv = window->priv;
 
@@ -481,8 +475,7 @@ gst_gl_window_set_resize_callback (GstGLWindow * window,
 }
 
 void
-gst_gl_window_set_close_callback (GstGLWindow * window, GstGLWindowCB callback,
-    gpointer data)
+gst_gl_window_set_close_callback (GstGLWindow *window, GstGLWindowCB callback, gpointer data)
 {
   GstGLWindowPrivate *priv = window->priv;
 
@@ -496,11 +489,12 @@ gst_gl_window_set_close_callback (GstGLWindow * window, GstGLWindowCB callback,
 
 /* Called in the gl thread */
 void
-gst_gl_window_draw_unlocked (GstGLWindow * window)
+gst_gl_window_draw_unlocked (GstGLWindow *window)
 {
   GstGLWindowPrivate *priv = window->priv;
 
-  if (priv->running && priv->allow_extra_expose_events) {
+  if (priv->running && priv->allow_extra_expose_events)
+  {
     XEvent event;
     XWindowAttributes attr;
 
@@ -516,42 +510,44 @@ gst_gl_window_draw_unlocked (GstGLWindow * window)
     event.xexpose.height = attr.height;
     event.xexpose.count = 0;
 
-    XSendEvent (priv->device, priv->internal_win_id, FALSE, ExposureMask,
-        &event);
+    XSendEvent (priv->device, priv->internal_win_id, FALSE, ExposureMask, &event);
     XSync (priv->disp_send, FALSE);
   }
 }
 
 /* Not called by the gl thread */
 void
-gst_gl_window_draw (GstGLWindow * window)
+gst_gl_window_draw (GstGLWindow *window)
 {
-  if (window) {
+  if (window)
+  {
     GstGLWindowPrivate *priv = window->priv;
 
     g_mutex_lock (priv->x_lock);
 
-    if (priv->running) {
+    if (priv->running)
+    {
       XEvent event;
       XWindowAttributes attr;
 
-      if (!priv->visible) {
+      if (!priv->visible)
+      {
         XMapWindow (priv->disp_send, priv->internal_win_id);
         priv->visible = TRUE;
       }
 
       XGetWindowAttributes (priv->disp_send, priv->internal_win_id, &attr);
 
-      if (priv->parent) {
+      if (priv->parent)
+      {
         XWindowAttributes attr_parent;
         XGetWindowAttributes (priv->disp_send, priv->parent, &attr_parent);
 
         if (attr.x != attr_parent.x || attr.y != attr_parent.y ||
-            attr.width != attr_parent.width
-            || attr.height != attr_parent.height) {
-          XMoveResizeWindow (priv->disp_send, priv->internal_win_id,
-              attr_parent.x, attr_parent.y, attr_parent.width,
-              attr_parent.height);
+            attr.width != attr_parent.width || attr.height != attr_parent.height)
+        {
+          XMoveResizeWindow (priv->disp_send, priv->internal_win_id, attr_parent.x, attr_parent.y,
+            attr_parent.width, attr_parent.height);
           XSync (priv->disp_send, FALSE);
 
           attr.x = attr_parent.x;
@@ -560,8 +556,8 @@ gst_gl_window_draw (GstGLWindow * window)
           attr.width = attr_parent.width;
           attr.height = attr_parent.height;
 
-          g_debug ("parent resize:  %d, %d, %d, %d\n", attr_parent.x,
-              attr_parent.y, attr_parent.width, attr_parent.height);
+          g_debug ("parent resize:  %d, %d, %d, %d\n", attr_parent.x, attr_parent.y,
+            attr_parent.width, attr_parent.height);
         }
       }
 
@@ -575,8 +571,7 @@ gst_gl_window_draw (GstGLWindow * window)
       event.xexpose.height = attr.height;
       event.xexpose.count = 0;
 
-      XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, ExposureMask,
-          &event);
+      XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, ExposureMask, &event);
       XSync (priv->disp_send, FALSE);
     }
 
@@ -586,7 +581,7 @@ gst_gl_window_draw (GstGLWindow * window)
 
 /* Called in the gl thread */
 void
-gst_gl_window_run_loop (GstGLWindow * window)
+gst_gl_window_run_loop (GstGLWindow *window)
 {
   GstGLWindowPrivate *priv = window->priv;
 
@@ -594,21 +589,23 @@ gst_gl_window_run_loop (GstGLWindow * window)
 
   g_mutex_lock (priv->x_lock);
 
-  while (priv->running) {
+  while (priv->running)
+  {
     XEvent event;
     XEvent pending_event;
 
     g_mutex_unlock (priv->x_lock);
 
     /* XSendEvent (which are called in other threads) are done from another display structure */
-    XNextEvent (priv->device, &event);
+    XNextEvent(priv->device, &event);
 
     g_mutex_lock (priv->x_lock);
 
     // use in generic/cube and other related uses
     priv->allow_extra_expose_events = XPending (priv->device) <= 2;
 
-    switch (event.type) {
+    switch (event.type)
+    {
       case ClientMessage:
       {
 
@@ -624,8 +621,10 @@ gst_gl_window_run_loop (GstGLWindow * window)
           g_debug ("Cannot create WM_QUIT_LOOP\n");
 
         /* Message sent with gst_gl_window_send_message */
-        if (wm_gl != None && event.xclient.message_type == wm_gl) {
-          if (priv->running) {
+        if (wm_gl != None && event.xclient.message_type == wm_gl)
+        {
+          if (priv->running)
+          {
             GstGLWindowCB custom_cb = (GstGLWindowCB) event.xclient.data.l[0];
             gpointer custom_data = (gpointer) event.xclient.data.l[1];
 
@@ -639,10 +638,9 @@ gst_gl_window_run_loop (GstGLWindow * window)
         }
 
         /* User clicked on the cross */
-        else if (wm_delete != None
-            && (Atom) event.xclient.data.l[0] == wm_delete) {
-          g_debug ("Close %" G_GUINT64_FORMAT "\n",
-              (guint64) priv->internal_win_id);
+        else if (wm_delete != None && (Atom) event.xclient.data.l[0] == wm_delete)
+        {
+          g_debug ("Close %" G_GUINT64_FORMAT "\n", (guint64) priv->internal_win_id);
 
           if (priv->close_cb)
             priv->close_cb (priv->close_data);
@@ -656,22 +654,21 @@ gst_gl_window_run_loop (GstGLWindow * window)
         }
 
         /* message sent with gst_gl_window_quit_loop */
-        else if (wm_quit_loop != None
-            && event.xclient.message_type == wm_quit_loop) {
+        else if (wm_quit_loop != None && event.xclient.message_type == wm_quit_loop)
+        {
           GstGLWindowCB destroy_cb = (GstGLWindowCB) event.xclient.data.l[0];
           gpointer destroy_data = (gpointer) event.xclient.data.l[1];
 
-          g_debug ("Quit loop message %" G_GUINT64_FORMAT "\n",
-              (guint64) priv->internal_win_id);
+          g_debug ("Quit loop message %" G_GUINT64_FORMAT "\n", (guint64) priv->internal_win_id);
 
           /* exit loop */
           priv->running = FALSE;
 
           /* make sure last pendings send message calls are executed */
           XFlush (priv->device);
-          while (XCheckTypedEvent (priv->device, ClientMessage, &pending_event)) {
-            GstGLWindowCB custom_cb =
-                (GstGLWindowCB) pending_event.xclient.data.l[0];
+          while (XCheckTypedEvent (priv->device, ClientMessage, &pending_event))
+          {
+            GstGLWindowCB custom_cb = (GstGLWindowCB) pending_event.xclient.data.l[0];
             gpointer custom_data = (gpointer) pending_event.xclient.data.l[1];
 
             g_debug ("execute last pending custom x events\n");
@@ -690,8 +687,9 @@ gst_gl_window_run_loop (GstGLWindow * window)
 
           destroy_cb (destroy_data);
 
-        } else
-          g_debug ("client message not reconized \n");
+        }
+        else
+          g_debug("client message not reconized \n");
         break;
       }
 
@@ -699,8 +697,7 @@ gst_gl_window_run_loop (GstGLWindow * window)
       case ConfigureNotify:
       {
         if (priv->resize_cb)
-          priv->resize_cb (priv->resize_data, event.xconfigure.width,
-              event.xconfigure.height);
+          priv->resize_cb (priv->resize_data, event.xconfigure.width, event.xconfigure.height);
         break;
       }
 
@@ -709,16 +706,18 @@ gst_gl_window_run_loop (GstGLWindow * window)
         break;
 
       case Expose:
-        if (priv->draw_cb) {
+        if (priv->draw_cb)
+        {
           priv->draw_cb (priv->draw_data);
-          glFlush ();
+          glFlush();
           glXSwapBuffers (priv->device, priv->internal_win_id);
         }
         break;
 
       case VisibilityNotify:
       {
-        switch (event.xvisibility.state) {
+        switch (event.xvisibility.state)
+        {
           case VisibilityUnobscured:
             if (priv->draw_cb)
               priv->draw_cb (priv->draw_data);
@@ -733,8 +732,7 @@ gst_gl_window_run_loop (GstGLWindow * window)
             break;
 
           default:
-            g_debug ("unknown xvisibility event: %d\n",
-                event.xvisibility.state);
+            g_debug("unknown xvisibility event: %d\n", event.xvisibility.state);
             break;
         }
         break;
@@ -744,9 +742,9 @@ gst_gl_window_run_loop (GstGLWindow * window)
         g_debug ("unknow\n");
         break;
 
-    }                           // switch
+    }// switch
 
-  }                             // while running
+  }// while running
 
   g_mutex_unlock (priv->x_lock);
 
@@ -755,29 +753,28 @@ gst_gl_window_run_loop (GstGLWindow * window)
 
 /* Not called by the gl thread */
 void
-gst_gl_window_quit_loop (GstGLWindow * window, GstGLWindowCB callback,
-    gpointer data)
+gst_gl_window_quit_loop (GstGLWindow *window, GstGLWindowCB callback, gpointer data)
 {
-  if (window) {
+  if (window)
+  {
     GstGLWindowPrivate *priv = window->priv;
 
     g_mutex_lock (priv->x_lock);
 
-    if (priv->running) {
+    if (priv->running)
+    {
       XEvent event;
 
       event.xclient.type = ClientMessage;
       event.xclient.send_event = TRUE;
       event.xclient.display = priv->disp_send;
       event.xclient.window = priv->internal_win_id;
-      event.xclient.message_type =
-          XInternAtom (priv->disp_send, "WM_QUIT_LOOP", True);;
+      event.xclient.message_type = XInternAtom (priv->disp_send, "WM_QUIT_LOOP", True);;
       event.xclient.format = 32;
       event.xclient.data.l[0] = (long) callback;
       event.xclient.data.l[1] = (long) data;
 
-      XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, NoEventMask,
-          &event);
+      XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, NoEventMask, &event);
       XSync (priv->disp_send, FALSE);
     }
 
@@ -787,29 +784,28 @@ gst_gl_window_quit_loop (GstGLWindow * window, GstGLWindowCB callback,
 
 /* Not called by the gl thread */
 void
-gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
-    gpointer data)
+gst_gl_window_send_message (GstGLWindow *window, GstGLWindowCB callback, gpointer data)
 {
-  if (window) {
+  if (window)
+  {
     GstGLWindowPrivate *priv = window->priv;
 
     g_mutex_lock (priv->x_lock);
 
-    if (priv->running) {
+    if (priv->running)
+    {
       XEvent event;
 
       event.xclient.type = ClientMessage;
       event.xclient.send_event = TRUE;
       event.xclient.display = priv->disp_send;
       event.xclient.window = priv->internal_win_id;
-      event.xclient.message_type =
-          XInternAtom (priv->disp_send, "WM_GL_WINDOW", True);
+      event.xclient.message_type = XInternAtom (priv->disp_send, "WM_GL_WINDOW", True);
       event.xclient.format = 32;
       event.xclient.data.l[0] = (long) callback;
       event.xclient.data.l[1] = (long) data;
 
-      XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, NoEventMask,
-          &event);
+      XSendEvent (priv->disp_send, priv->internal_win_id, FALSE, NoEventMask, &event);
       XSync (priv->disp_send, FALSE);
 
       /* block until opengl calls have been executed in the gl thread */
index 57e8ed4..1a29352 100644 (file)
 #include <gstgleffects.h>
 
 static void
-gst_gl_effects_bulge_callback (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_bulge_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
 
   GstGLShader *shader;
-
+          
   shader = g_hash_table_lookup (effects->shaderstable, "bulge0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "bulge0", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          bulge_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, bulge_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
-
+  
   gst_gl_shader_use (shader);
 
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-
+     
   gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f);
+  
+  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f); 
   gst_gl_shader_set_uniform_1f (shader, "height", (gfloat) height / 2.0f);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
 void
-gst_gl_effects_bulge (GstGLEffects * effects)
-{
+gst_gl_effects_bulge (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_bulge_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_bulge_callback, effects);
 }
index ec7e873..a61c94b 100644 (file)
 #include <gstgleffects.h>
 
 static void
-gst_gl_effects_fisheye_callback (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_fisheye_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
 
   GstGLShader *shader;
 
   shader = g_hash_table_lookup (effects->shaderstable, "fisheye0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "fisheye0", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          fisheye_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, fisheye_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
-
+  
   gst_gl_shader_use (shader);
 
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-
+     
   gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f);
+  
+  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f); 
   gst_gl_shader_set_uniform_1f (shader, "height", (gfloat) height / 2.0f);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
 void
-gst_gl_effects_fisheye (GstGLEffects * effects)
-{
+gst_gl_effects_fisheye (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_fisheye_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_fisheye_callback, effects);
 }
index 4930249..ba4a6e1 100644 (file)
 
 #include <gstgleffects.h>
 
-static gfloat gauss_kernel[9] = { 0.060493f, 0.075284f, 0.088016f,
-  0.096667f, 0.099736f, 0.096667f,
-  0.088016f, 0.075284f, 0.060493f
-};
+static gfloat gauss_kernel[9] = { 0.060493f, 0.075284f, 0.088016f, 
+                                  0.096667f, 0.099736f, 0.096667f, 
+                                  0.088016f, 0.075284f, 0.060493f };
 
 static void
-gst_gl_effects_glow_step_one (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_glow_step_one (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
 
   GstGLShader *shader;
-
+          
   shader = g_hash_table_lookup (effects->shaderstable, "glow0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "glow0", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          luma_threshold_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, luma_threshold_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
-
+  
   gst_gl_shader_use (shader);
 
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-
+     
   gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
 static void
-gst_gl_effects_glow_step_two (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_effects_glow_step_two (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (stuff);
+  GstGLEffectseffects = GST_GL_EFFECTS (stuff);
   GstGLShader *shader;
-
+          
   /* hard coded kernel, it could be easily generated at runtime with a
    * property to change standard deviation */
 
   shader = g_hash_table_lookup (effects->shaderstable, "glow1");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "glow1", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          hconv9_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, hconv9_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -97,21 +96,21 @@ gst_gl_effects_glow_step_two (gint width, gint height, guint texture,
 }
 
 void
-gst_gl_effects_glow_step_three (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_effects_glow_step_three (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (stuff);
+  GstGLEffectseffects = GST_GL_EFFECTS (stuff);
   GstGLShader *shader;
 
   shader = g_hash_table_lookup (effects->shaderstable, "glow2");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "glow2", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          vconv9_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, vconv9_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -133,21 +132,21 @@ gst_gl_effects_glow_step_three (gint width, gint height, guint texture,
 }
 
 void
-gst_gl_effects_glow_step_four (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_effects_glow_step_four (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (stuff);
+  GstGLEffectseffects = GST_GL_EFFECTS (stuff);
   GstGLShader *shader;
 
   shader = g_hash_table_lookup (effects->shaderstable, "glow3");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "glow3", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          sum_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, sum_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -157,36 +156,35 @@ gst_gl_effects_glow_step_four (gint width, gint height, guint texture,
   glActiveTexture (GL_TEXTURE2);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, effects->intexture);
-  glDisable (GL_TEXTURE_RECTANGLE_ARB);
-
+  glDisable(GL_TEXTURE_RECTANGLE_ARB);
+  
   gst_gl_shader_set_uniform_1f (shader, "alpha", 1.0);
   gst_gl_shader_set_uniform_1i (shader, "base", 2);
-
+    
   glActiveTexture (GL_TEXTURE1);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-  glDisable (GL_TEXTURE_RECTANGLE_ARB);
-
-  gst_gl_shader_set_uniform_1f (shader, "beta", (gfloat) 1 / 3.5f);
+  glDisable(GL_TEXTURE_RECTANGLE_ARB);
+  
+  gst_gl_shader_set_uniform_1f (shader, "beta", (gfloat) 1/3.5f);
   gst_gl_shader_set_uniform_1i (shader, "blend", 1);
 
   gst_gl_effects_draw_texture (effects, texture);
 }
 
 void
-gst_gl_effects_glow (GstGLEffects * effects)
-{
+gst_gl_effects_glow (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
   /* threshold */
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->midtexture[0], gst_gl_effects_glow_step_one, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->midtexture[0],
+                                 gst_gl_effects_glow_step_one, effects);
   /* blur */
-  gst_gl_filter_render_to_target (filter, effects->midtexture[0],
-      effects->midtexture[1], gst_gl_effects_glow_step_two, effects);
-  gst_gl_filter_render_to_target (filter, effects->midtexture[1],
-      effects->midtexture[2], gst_gl_effects_glow_step_three, effects);
+  gst_gl_filter_render_to_target (filter, effects->midtexture[0], effects->midtexture[1],
+                                 gst_gl_effects_glow_step_two, effects);
+  gst_gl_filter_render_to_target (filter, effects->midtexture[1], effects->midtexture[2],
+                                  gst_gl_effects_glow_step_three, effects);
   /* add blurred luma to intexture */
-  gst_gl_filter_render_to_target (filter, effects->midtexture[2],
-      effects->outtexture, gst_gl_effects_glow_step_four, effects);
+  gst_gl_filter_render_to_target (filter, effects->midtexture[2], effects->outtexture,
+                                  gst_gl_effects_glow_step_four, effects);
 }
index 1308d45..39401db 100644 (file)
 #include <gstgleffects.h>
 
 static void
-gst_gl_effects_identity_callback (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_identity_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -33,10 +32,9 @@ gst_gl_effects_identity_callback (gint width, gint height, guint texture,
 }
 
 void
-gst_gl_effects_identity (GstGLEffects * effects)
-{
+gst_gl_effects_identity (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_identity_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_identity_callback, effects);
 }
index aafabec..c6e1c0d 100644 (file)
 #include <gstgleffects.h>
 #include <gstgleffectlumatocurve.h>
 
-void
-gst_gl_effects_luma_to_curve (GstGLEffects * effects,
-    GstGLEffectsCurve curve,
-    gint curve_index, gint width, gint height, GLuint texture)
+void gst_gl_effects_luma_to_curve (GstGLEffects *effects,
+                                   GstGLEffectsCurve curve,
+                                   gint curve_index,
+                                   gint width, gint height,
+                                   GLuint texture) 
 {
   GstGLShader *shader;
 
   shader = g_hash_table_lookup (effects->shaderstable, "lumamap0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "lumamap0", shader);
   }
 
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          luma_to_curve_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, luma_to_curve_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -45,18 +47,20 @@ gst_gl_effects_luma_to_curve (GstGLEffects * effects,
 
   if (effects->curve[curve_index] == 0) {
     /* this parameters are needed to have a right, predictable, mapping */
-    glGenTextures (1, &effects->curve[curve_index]);
-    glEnable (GL_TEXTURE_1D);
-    glBindTexture (GL_TEXTURE_1D, effects->curve[curve_index]);
-    glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-    glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glGenTextures(1, &effects->curve[curve_index]); 
+    glEnable(GL_TEXTURE_1D); 
+    glBindTexture (GL_TEXTURE_1D, effects->curve[curve_index]); 
+    glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
     glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP);
     glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_CLAMP);
-
-    glTexImage1D (GL_TEXTURE_1D, 0, curve.bytes_per_pixel,
-        curve.width, 0, GL_RGB, GL_UNSIGNED_BYTE, curve.pixel_data);
-
-    glDisable (GL_TEXTURE_1D);
+    
+    glTexImage1D(GL_TEXTURE_1D, 0, curve.bytes_per_pixel,
+                 curve.width, 0,
+                 GL_RGB, GL_UNSIGNED_BYTE,
+                 curve.pixel_data);
+    
+    glDisable(GL_TEXTURE_1D);
   }
 
   glActiveTexture (GL_TEXTURE2);
@@ -74,63 +78,55 @@ gst_gl_effects_luma_to_curve (GstGLEffects * effects,
   gst_gl_shader_set_uniform_1i (shader, "curve", 1);
 
   glDisable (GL_TEXTURE_1D);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
-static void
-gst_gl_effects_heat_callback (gint width, gint height, guint texture,
-    gpointer data)
+static void gst_gl_effects_heat_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-
-  gst_gl_effects_luma_to_curve (effects, heat_curve, GST_GL_EFFECTS_CURVE_HEAT,
-      width, height, texture);
+    GstGLEffects* effects = GST_GL_EFFECTS (data);
+    
+    gst_gl_effects_luma_to_curve (effects, heat_curve, GST_GL_EFFECTS_CURVE_HEAT, 
+                                  width, height, texture);
 }
 
 void
-gst_gl_effects_heat (GstGLEffects * effects)
-{
+gst_gl_effects_heat (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_heat_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_heat_callback, effects);
 }
 
-static void
-gst_gl_effects_sepia_callback (gint width, gint height, guint texture,
-    gpointer data)
+static void gst_gl_effects_sepia_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-
-  gst_gl_effects_luma_to_curve (effects, sepia_curve,
-      GST_GL_EFFECTS_CURVE_SEPIA, width, height, texture);
+    GstGLEffects* effects = GST_GL_EFFECTS (data);
+    
+    gst_gl_effects_luma_to_curve (effects, sepia_curve, GST_GL_EFFECTS_CURVE_SEPIA, 
+                                  width, height, texture);
 }
 
 void
-gst_gl_effects_sepia (GstGLEffects * effects)
-{
+gst_gl_effects_sepia (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_sepia_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_sepia_callback, effects);
 }
 
-static void
-gst_gl_effects_luma_xpro_callback (gint width, gint height, guint texture,
-    gpointer data)
+static void gst_gl_effects_luma_xpro_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-
-  gst_gl_effects_luma_to_curve (effects, luma_xpro_curve,
-      GST_GL_EFFECTS_CURVE_LUMA_XPRO, width, height, texture);
+    GstGLEffects* effects = GST_GL_EFFECTS (data);
+    
+    gst_gl_effects_luma_to_curve (effects, luma_xpro_curve, GST_GL_EFFECTS_CURVE_LUMA_XPRO, 
+                                  width, height, texture);
 }
 
 void
-gst_gl_effects_luma_xpro (GstGLEffects * effects)
-{
+gst_gl_effects_luma_xpro (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_luma_xpro_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_luma_xpro_callback, effects);
 }
+
index 5be4e73..f5e98d1 100644 (file)
 #include <gstgleffects.h>
 
 static void
-gst_gl_effects_mirror_callback (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_mirror_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
 
   GstGLShader *shader;
 
   shader = g_hash_table_lookup (effects->shaderstable, "mirror0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "mirror0", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          mirror_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, mirror_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
-
+  
   gst_gl_shader_use (shader);
 
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-
+     
   gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f);
+  
+  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f); 
   gst_gl_shader_set_uniform_1f (shader, "height", (gfloat) height / 2.0f);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
 void
-gst_gl_effects_mirror (GstGLEffects * effects)
-{
+gst_gl_effects_mirror (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_mirror_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_mirror_callback, effects);
 }
index e3138a7..ab970a5 100644 (file)
 #include <gstgleffects.h>
 #include <gstgleffectscurves.h>
 
-static void
-gst_gl_effects_rgb_to_curve (GstGLEffects * effects,
-    GstGLEffectsCurve curve,
-    gint curve_index, gint width, gint height, GLuint texture)
+static void gst_gl_effects_rgb_to_curve (GstGLEffects *effects,
+                                          GstGLEffectsCurve curve,
+                                          gint curve_index,
+                                          gint width, gint height,
+                                          GLuint texture) 
 {
   GstGLShader *shader;
 
   shader = g_hash_table_lookup (effects->shaderstable, "rgbmap0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "rgbmap0", shader);
   }
 
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          rgb_to_curve_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, rgb_to_curve_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -45,18 +47,20 @@ gst_gl_effects_rgb_to_curve (GstGLEffects * effects,
 
   if (effects->curve[curve_index] == 0) {
     /* this parameters are needed to have a right, predictable, mapping */
-    glGenTextures (1, &effects->curve[curve_index]);
-    glEnable (GL_TEXTURE_1D);
-    glBindTexture (GL_TEXTURE_1D, effects->curve[curve_index]);
-    glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-    glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glGenTextures(1, &effects->curve[curve_index]); 
+    glEnable(GL_TEXTURE_1D); 
+    glBindTexture (GL_TEXTURE_1D, effects->curve[curve_index]); 
+    glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
     glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP);
     glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+    
+    glTexImage1D(GL_TEXTURE_1D, 0, curve.bytes_per_pixel,
+                 curve.width, 0,
+                 GL_RGB, GL_UNSIGNED_BYTE,
+                 curve.pixel_data);
 
-    glTexImage1D (GL_TEXTURE_1D, 0, curve.bytes_per_pixel,
-        curve.width, 0, GL_RGB, GL_UNSIGNED_BYTE, curve.pixel_data);
-
-    glDisable (GL_TEXTURE_1D);
+    glDisable(GL_TEXTURE_1D);
   }
 
   glActiveTexture (GL_TEXTURE0);
@@ -74,25 +78,22 @@ gst_gl_effects_rgb_to_curve (GstGLEffects * effects,
   gst_gl_shader_set_uniform_1i (shader, "curve", 1);
 
   glDisable (GL_TEXTURE_1D);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
-static void
-gst_gl_effects_xpro_callback (gint width, gint height, guint texture,
-    gpointer data)
+static void gst_gl_effects_xpro_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-
-  gst_gl_effects_rgb_to_curve (effects, xpro_curve, GST_GL_EFFECTS_CURVE_XPRO,
-      width, height, texture);
+    GstGLEffects* effects = GST_GL_EFFECTS (data);
+    
+    gst_gl_effects_rgb_to_curve (effects, xpro_curve, GST_GL_EFFECTS_CURVE_XPRO, 
+                                 width, height, texture);
 }
 
 void
-gst_gl_effects_xpro (GstGLEffects * effects)
-{
+gst_gl_effects_xpro (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_xpro_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_xpro_callback, effects);
 }
index 42a5e79..8be7210 100644 (file)
 #include <gstgleffects.h>
 
 static void
-gst_gl_effects_sin_callback (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_sin_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
 
   GstGLShader *shader;
-
+          
   shader = g_hash_table_lookup (effects->shaderstable, "sin0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "sin0", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          sin_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, sin_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
-
+  
   gst_gl_shader_use (shader);
 
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-
+     
   gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
 void
-gst_gl_effects_sin (GstGLEffects * effects)
-{
+gst_gl_effects_sin (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_sin_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_sin_callback, effects);
 }
index d23b0e9..0535949 100644 (file)
 #include <gstgleffects.h>
 
 static void
-gst_gl_effects_square_callback (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_square_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
 
   GstGLShader *shader;
-
+          
   shader = g_hash_table_lookup (effects->shaderstable, "square0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "square0", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          square_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, square_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
-
+  
   gst_gl_shader_use (shader);
 
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-
+     
   gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f);
+  
+  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f); 
   gst_gl_shader_set_uniform_1f (shader, "height", (gfloat) height / 2.0f);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
 void
-gst_gl_effects_square (GstGLEffects * effects)
-{
+gst_gl_effects_square (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_square_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_square_callback, effects);
 }
index a83d759..a5dad2c 100644 (file)
 #include <gstgleffects.h>
 
 static void
-gst_gl_effects_squeeze_callback (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_squeeze_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
 
   GstGLShader *shader;
-
+          
   shader = g_hash_table_lookup (effects->shaderstable, "squeeze0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "squeeze0", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          squeeze_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, squeeze_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
-
+  
   gst_gl_shader_use (shader);
 
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-
+     
   gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f);
+  
+  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f); 
   gst_gl_shader_set_uniform_1f (shader, "height", (gfloat) height / 2.0f);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
 void
-gst_gl_effects_squeeze (GstGLEffects * effects)
-{
+gst_gl_effects_squeeze (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_squeeze_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_squeeze_callback, effects);
 }
index 24f694e..d3fe4aa 100644 (file)
 
 /* Mirror effect */
 const gchar *mirror_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float width, height;"
-    "void main () {"
-    "  vec2 tex_size = vec2 (width, height);"
-    "  vec2 texturecoord = gl_TexCoord[0].xy;"
-    "  vec2 normcoord;"
-    "  normcoord = texturecoord / tex_size - 1.0;"
-    "  normcoord.x *= sign (normcoord.x);"
-    "  texturecoord = (normcoord + 1.0) * tex_size;"
-    "  vec4 color = texture2DRect (tex, texturecoord); "
-    "  gl_FragColor = color * gl_Color;" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float width, height;"
+  "void main () {"
+  "  vec2 tex_size = vec2 (width, height);"
+  "  vec2 texturecoord = gl_TexCoord[0].xy;"
+  "  vec2 normcoord;"
+  "  normcoord = texturecoord / tex_size - 1.0;"
+  "  normcoord.x *= sign (normcoord.x);"
+  "  texturecoord = (normcoord + 1.0) * tex_size;"
+  "  vec4 color = texture2DRect (tex, texturecoord); "
+  "  gl_FragColor = color * gl_Color;"
+  "}";
 
 
 /* Squeeze effect */
 const gchar *squeeze_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float width, height;"
-    "void main () {"
-    "  vec2 tex_size = vec2 (width, height);"
-    "  vec2 texturecoord = gl_TexCoord[0].xy;"
-    "  vec2 normcoord;"
-    "  normcoord = texturecoord / tex_size - 1.0; "
-    "  float r = length (normcoord);"
-    "  r = pow(r, 0.40)*1.3;"
-    "  normcoord = normcoord / r;"
-    "  texturecoord = (normcoord + 1.0) * tex_size;"
-    "  vec4 color = texture2DRect (tex, texturecoord); "
-    "  gl_FragColor = color * gl_Color;" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float width, height;"
+  "void main () {"
+  "  vec2 tex_size = vec2 (width, height);"
+  "  vec2 texturecoord = gl_TexCoord[0].xy;"
+  "  vec2 normcoord;"
+  "  normcoord = texturecoord / tex_size - 1.0; "
+  "  float r = length (normcoord);"
+  "  r = pow(r, 0.40)*1.3;"
+  "  normcoord = normcoord / r;"
+  "  texturecoord = (normcoord + 1.0) * tex_size;"
+  "  vec4 color = texture2DRect (tex, texturecoord); "
+  "  gl_FragColor = color * gl_Color;"
+  "}";
 
 
 /* Stretch Effect */
 const gchar *stretch_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float width, height;"
-    "void main () {"
-    "  vec2 tex_size = vec2 (width, height);"
-    "  vec2 texturecoord = gl_TexCoord[0].xy;"
-    "  vec2 normcoord;"
-    "  normcoord = texturecoord / tex_size - 1.0;"
-    "  float r = length (normcoord);"
-    "  normcoord *= 2.0 - smoothstep(0.0, 0.7, r);"
-    "  texturecoord = (normcoord + 1.0) * tex_size;"
-    "  vec4 color = texture2DRect (tex, texturecoord);"
-    "  gl_FragColor = color * gl_Color;" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float width, height;"
+  "void main () {"
+  "  vec2 tex_size = vec2 (width, height);"
+  "  vec2 texturecoord = gl_TexCoord[0].xy;"
+  "  vec2 normcoord;"
+  "  normcoord = texturecoord / tex_size - 1.0;"
+  "  float r = length (normcoord);"
+  "  normcoord *= 2.0 - smoothstep(0.0, 0.7, r);"
+  "  texturecoord = (normcoord + 1.0) * tex_size;"
+  "  vec4 color = texture2DRect (tex, texturecoord);"
+  "  gl_FragColor = color * gl_Color;"
+  "}";
 
 /* Light Tunnel effect */
 const gchar *tunnel_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float width, height;"
-    "void main () {"
-    "  vec2 tex_size = vec2 (width, height);"
-    "  vec2 texturecoord = gl_TexCoord[0].xy;" "  vec2 normcoord;"
-    /* little trick with normalized coords to obtain a circle */
-    "  normcoord = texturecoord / tex_size.x - tex_size / tex_size.x;" "  float r = length(normcoord);" "  float phi = atan(normcoord.y, normcoord.x);" "  r = clamp (r, 0.0, 0.5);"    /* is there a way to do this without polars? */
-    "  normcoord.x = r * cos(phi);"
-    "  normcoord.y = r * sin(phi); "
-    "  texturecoord = (normcoord + tex_size/tex_size.x) * tex_size.x;"
-    "  vec4 color = texture2DRect (tex, texturecoord); "
-    "  gl_FragColor = color;" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float width, height;"
+  "void main () {"
+  "  vec2 tex_size = vec2 (width, height);"
+  "  vec2 texturecoord = gl_TexCoord[0].xy;"
+  "  vec2 normcoord;"
+  /* little trick with normalized coords to obtain a circle */
+  "  normcoord = texturecoord / tex_size.x - tex_size / tex_size.x;"
+  "  float r = length(normcoord);"
+  "  float phi = atan(normcoord.y, normcoord.x);"
+  "  r = clamp (r, 0.0, 0.5);" /* is there a way to do this without polars? */
+  "  normcoord.x = r * cos(phi);"
+  "  normcoord.y = r * sin(phi); "
+  "  texturecoord = (normcoord + tex_size/tex_size.x) * tex_size.x;"
+  "  vec4 color = texture2DRect (tex, texturecoord); "
+  "  gl_FragColor = color;"
+  "}";
 
 /* FishEye effect */
 const gchar *fisheye_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float width, height;"
-    "void main () {"
-    "  vec2 tex_size = vec2 (width, height);"
-    "  vec2 texturecoord = gl_TexCoord[0].xy;"
-    "  vec2 normcoord;"
-    "  normcoord = texturecoord / tex_size - 1.0;"
-    "  float r =  length (normcoord);"
-    "  normcoord *= r/sqrt(2.0);"
-    "  texturecoord = (normcoord + 1.0) * tex_size;"
-    "  vec4 color = texture2DRect (tex, texturecoord);"
-    "  gl_FragColor = color;" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float width, height;"
+  "void main () {"
+  "  vec2 tex_size = vec2 (width, height);"
+  "  vec2 texturecoord = gl_TexCoord[0].xy;"
+  "  vec2 normcoord;"
+  "  normcoord = texturecoord / tex_size - 1.0;"
+  "  float r =  length (normcoord);"
+  "  normcoord *= r/sqrt(2.0);"
+  "  texturecoord = (normcoord + 1.0) * tex_size;"
+  "  vec4 color = texture2DRect (tex, texturecoord);"
+  "  gl_FragColor = color;"
+  "}";
 
 
 /* Twirl effect */
 const gchar *twirl_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float width, height;"
-    "void main () {"
-    "  vec2 tex_size = vec2 (width, height);"
-    "  vec2 texturecoord = gl_TexCoord[0].xy;"
-    "  vec2 normcoord;"
-    "  normcoord = texturecoord / tex_size - 1.0;"
-    "  float r =  length (normcoord);"
-    "  float phi = atan (normcoord.y, normcoord.x);"
-    "  phi += (1.0 - smoothstep (-0.6, 0.6, r)) * 4.8;"
-    "  normcoord.x = r * cos(phi);"
-    "  normcoord.y = r * sin(phi);"
-    "  texturecoord = (normcoord + 1.0) * tex_size;"
-    "  vec4 color = texture2DRect (tex, texturecoord); "
-    "  gl_FragColor = color;" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float width, height;"
+  "void main () {"
+  "  vec2 tex_size = vec2 (width, height);"
+  "  vec2 texturecoord = gl_TexCoord[0].xy;"
+  "  vec2 normcoord;"
+  "  normcoord = texturecoord / tex_size - 1.0;"
+  "  float r =  length (normcoord);"
+  "  float phi = atan (normcoord.y, normcoord.x);"
+  "  phi += (1.0 - smoothstep (-0.6, 0.6, r)) * 4.8;" 
+  "  normcoord.x = r * cos(phi);"
+  "  normcoord.y = r * sin(phi);"
+  "  texturecoord = (normcoord + 1.0) * tex_size;"
+  "  vec4 color = texture2DRect (tex, texturecoord); "
+  "  gl_FragColor = color;"
+  "}";
 
 
 /* Bulge effect */
 const gchar *bulge_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float width, height;"
-    "void main () {"
-    "  vec2 tex_size = vec2 (width, height);"
-    "  vec2 texturecoord = gl_TexCoord[0].xy;"
-    "  vec2 normcoord;"
-    "  normcoord = texturecoord / tex_size - 1.0;"
-    "  float r =  length (normcoord);"
-    "  normcoord *= smoothstep (-0.1, 0.5, r);"
-    "  texturecoord = (normcoord + 1.0) * tex_size;"
-    "  vec4 color = texture2DRect (tex, texturecoord);"
-    "  gl_FragColor = color;" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float width, height;"
+  "void main () {"
+  "  vec2 tex_size = vec2 (width, height);"
+  "  vec2 texturecoord = gl_TexCoord[0].xy;"
+  "  vec2 normcoord;"
+  "  normcoord = texturecoord / tex_size - 1.0;"
+  "  float r =  length (normcoord);"
+  "  normcoord *= smoothstep (-0.1, 0.5, r);"
+  "  texturecoord = (normcoord + 1.0) * tex_size;"
+  "  vec4 color = texture2DRect (tex, texturecoord);"
+  "  gl_FragColor = color;"
+  "}";
 
 
 /* Square Effect */
 const gchar *square_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float width;"
-    "uniform float height;"
-    "void main () {"
-    "  vec2 tex_size = vec2 (width, height);"
-    "  vec2 texturecoord = gl_TexCoord[0].xy;"
-    "  vec2 normcoord;"
-    "  normcoord = texturecoord / tex_size - 1.0;"
-    "  float r = length (normcoord);"
-    "  normcoord *= 1.0 + smoothstep(0.25, 0.5, abs(normcoord));"
-    "  normcoord /= 2.0; /* zoom amount */"
-    "  texturecoord = (normcoord + 1.0) * tex_size;"
-    "  vec4 color = texture2DRect (tex, texturecoord);"
-    "  gl_FragColor = color * gl_Color;" "}";
-
-
-const gchar *luma_threshold_fragment_source = "#extension GL_ARB_texture_rectangle : enable\n" "uniform sampler2DRect tex;" "void main () {" "  vec2 texturecoord = gl_TexCoord[0].st;" "  int i;" "  vec4 color = texture2DRect(tex, texturecoord);" "  float luma = dot(color.rgb, vec3(0.2125, 0.7154, 0.0721));"    /* BT.709 (from orange book) */
-    "  gl_FragColor = vec4 (vec3 (smoothstep (0.30, 0.50, luma)), color.a);"
-    "}";
-
-const gchar *sobel_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float hkern[9];"
-    "uniform float vkern[9];"
-    "uniform bool invert;"
-    "void main () {"
-    "  vec2 offset[9] = vec2[9] ( vec2(-1.0,-1.0), vec2( 0.0,-1.0), vec2( 1.0,-1.0),"
-    "                             vec2(-1.0, 0.0), vec2( 0.0, 0.0), vec2( 1.0, 0.0),"
-    "                             vec2(-1.0, 1.0), vec2( 0.0, 1.0), vec2( 1.0, 1.0) );"
-    "  vec2 texturecoord = gl_TexCoord[0].st;"
-    "  int i;"
-    "  float luma;"
-    "  float gx = 0.0;"
-    "  float gy = 0.0 ;"
-    "  for (i = 0; i < 9; i++) { "
-    "    if(hkern[i] != 0.0 || vkern[i] != 0.0) {"
-    "      vec4 neighbor = texture2DRect(tex, texturecoord + vec2(offset[i])); "
-    "      luma = dot(neighbor, vec4(0.2125, 0.7154, 0.0721, neighbor.a));"
-    "      gx += luma * hkern[i]; "
-    "      gy += luma * vkern[i]; "
-    "    }"
-    "  }"
-    "  float g = sqrt(gx*gx + gy*gy);"
-    "  if (invert) g = 1.0 - g;" "  gl_FragColor = vec4(vec3(g), 1.0);" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float width;"
+  "uniform float height;"
+  "void main () {"
+  "  vec2 tex_size = vec2 (width, height);"
+  "  vec2 texturecoord = gl_TexCoord[0].xy;"
+  "  vec2 normcoord;"
+  "  normcoord = texturecoord / tex_size - 1.0;"
+  "  float r = length (normcoord);"
+  "  normcoord *= 1.0 + smoothstep(0.25, 0.5, abs(normcoord));"
+  "  normcoord /= 2.0; /* zoom amount */"
+  "  texturecoord = (normcoord + 1.0) * tex_size;"
+  "  vec4 color = texture2DRect (tex, texturecoord);"
+  "  gl_FragColor = color * gl_Color;"
+  "}";
+
+
+const gchar *luma_threshold_fragment_source =
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "void main () {"
+  "  vec2 texturecoord = gl_TexCoord[0].st;"
+  "  int i;"
+  "  vec4 color = texture2DRect(tex, texturecoord);"
+  "  float luma = dot(color.rgb, vec3(0.2125, 0.7154, 0.0721));" /* BT.709 (from orange book) */
+  "  gl_FragColor = vec4 (vec3 (smoothstep (0.30, 0.50, luma)), color.a);"
+  "}";
+
+const gchar *sobel_fragment_source = 
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float hkern[9];"
+  "uniform float vkern[9];"
+  "uniform bool invert;"
+  "void main () {"
+  "  vec2 offset[9] = vec2[9] ( vec2(-1.0,-1.0), vec2( 0.0,-1.0), vec2( 1.0,-1.0),"
+  "                             vec2(-1.0, 0.0), vec2( 0.0, 0.0), vec2( 1.0, 0.0),"
+  "                             vec2(-1.0, 1.0), vec2( 0.0, 1.0), vec2( 1.0, 1.0) );"
+  "  vec2 texturecoord = gl_TexCoord[0].st;"
+  "  int i;"
+  "  float luma;"
+  "  float gx = 0.0;"
+  "  float gy = 0.0 ;"
+  "  for (i = 0; i < 9; i++) { "
+  "    if(hkern[i] != 0.0 || vkern[i] != 0.0) {"
+  "      vec4 neighbor = texture2DRect(tex, texturecoord + vec2(offset[i])); "
+  "      luma = dot(neighbor, vec4(0.2125, 0.7154, 0.0721, neighbor.a));"
+  "      gx += luma * hkern[i]; "
+  "      gy += luma * vkern[i]; "
+  "    }"
+  "  }"
+  "  float g = sqrt(gx*gx + gy*gy);"
+  "  if (invert) g = 1.0 - g;"
+  "  gl_FragColor = vec4(vec3(g), 1.0);"
+  "}";
 
 
 /* horizontal convolution */
 const gchar *hconv9_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float norm_const;"
-    "uniform float norm_offset;" "uniform float kernel[9];" "void main () {"
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float norm_const;"
+  "uniform float norm_offset;"
+  "uniform float kernel[9];"
+  "void main () {"
 /* "float offset[9] = float[9] (-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0);" */
 /* don't use array constructor so we don't have to depend on #version 120 */
-    "  float offset[9];"
-    "  offset[0] = -4.0;"
-    "  offset[1] = -3.0;"
-    "  offset[2] = -2.0;"
-    "  offset[3] = -1.0;"
-    "  offset[4] =  0.0;"
-    "  offset[5] =  1.0;"
-    "  offset[6] =  2.0;"
-    "  offset[7] =  3.0;"
-    "  offset[8] =  4.0;"
-    "  vec2 texturecoord = gl_TexCoord[0].st;"
-    "  int i;"
-    "  vec4 sum = vec4 (0.0);"
-    "  for (i = 0; i < 9; i++) { "
-    "    if (kernel[i] != 0.0) {"
-    "        vec4 neighbor = texture2DRect(tex, vec2(texturecoord.s+offset[i], texturecoord.t)); "
-    "        sum += neighbor * kernel[i]/norm_const; "
-    "      }" "  }" "  gl_FragColor = sum + norm_offset;" "}";
+  "  float offset[9];" 
+  "  offset[0] = -4.0;"
+  "  offset[1] = -3.0;"
+  "  offset[2] = -2.0;"
+  "  offset[3] = -1.0;"
+  "  offset[4] =  0.0;"
+  "  offset[5] =  1.0;"
+  "  offset[6] =  2.0;"
+  "  offset[7] =  3.0;"
+  "  offset[8] =  4.0;"
+  "  vec2 texturecoord = gl_TexCoord[0].st;"
+  "  int i;"
+  "  vec4 sum = vec4 (0.0);"
+  "  for (i = 0; i < 9; i++) { "
+  "    if (kernel[i] != 0.0) {"
+  "        vec4 neighbor = texture2DRect(tex, vec2(texturecoord.s+offset[i], texturecoord.t)); "
+  "        sum += neighbor * kernel[i]/norm_const; "
+  "      }"
+  "  }"
+  "  gl_FragColor = sum + norm_offset;"
+  "}";
 
 /* vertical convolution */
 const gchar *vconv9_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float norm_const;"
-    "uniform float norm_offset;" "uniform float kernel[9];" "void main () {"
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float norm_const;"
+  "uniform float norm_offset;"
+  "uniform float kernel[9];"
+  "void main () {"
 /* "float offset[9] = float[9] (-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0);" */
 /* don't use array constructor so we don't have to depend on #version 120 */
-    "  float offset[9];"
-    "  offset[0] = -4.0;"
-    "  offset[1] = -3.0;"
-    "  offset[2] = -2.0;"
-    "  offset[3] = -1.0;"
-    "  offset[4] =  0.0;"
-    "  offset[5] =  1.0;"
-    "  offset[6] =  2.0;"
-    "  offset[7] =  3.0;"
-    "  offset[8] =  4.0;"
-    "  vec2 texturecoord = gl_TexCoord[0].st;"
-    "  int i;"
-    "  vec4 sum = vec4 (0.0);"
-    "  for (i = 0; i < 9; i++) { "
-    "    if (kernel[i] != 0.0) {"
-    "        vec4 neighbor = texture2DRect(tex, vec2(texturecoord.s, texturecoord.t+offset[i])); "
-    "        sum += neighbor * kernel[i]/norm_const; "
-    "      }" "  }" "  gl_FragColor = sum + norm_offset;" "}";
+  "  float offset[9];"
+  "  offset[0] = -4.0;"
+  "  offset[1] = -3.0;"
+  "  offset[2] = -2.0;"
+  "  offset[3] = -1.0;"
+  "  offset[4] =  0.0;"
+  "  offset[5] =  1.0;"
+  "  offset[6] =  2.0;"
+  "  offset[7] =  3.0;"
+  "  offset[8] =  4.0;"
+  "  vec2 texturecoord = gl_TexCoord[0].st;"
+  "  int i;"
+  "  vec4 sum = vec4 (0.0);"
+  "  for (i = 0; i < 9; i++) { "
+  "    if (kernel[i] != 0.0) {"
+  "        vec4 neighbor = texture2DRect(tex, vec2(texturecoord.s, texturecoord.t+offset[i])); "
+  "        sum += neighbor * kernel[i]/norm_const; "
+  "      }"
+  "  }"
+  "  gl_FragColor = sum + norm_offset;"
+  "}";
 
 
 /* TODO: support several blend modes */
-const gchar *sum_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect base;"
-    "uniform sampler2DRect blend;"
-    "uniform float alpha;"
-    "uniform float beta;"
-    "void main () {"
-    "  vec4 basecolor = texture2DRect (base, gl_TexCoord[0].st);"
-    "  vec4 blendcolor = texture2DRect (blend, gl_TexCoord[0].st);"
-    "  gl_FragColor = alpha * basecolor + beta * blendcolor;" "}";
+const gchar *sum_fragment_source = 
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect base;"
+  "uniform sampler2DRect blend;"
+  "uniform float alpha;"
+  "uniform float beta;"
+  "void main () {"
+  "  vec4 basecolor = texture2DRect (base, gl_TexCoord[0].st);"
+  "  vec4 blendcolor = texture2DRect (blend, gl_TexCoord[0].st);"
+  "  gl_FragColor = alpha * basecolor + beta * blendcolor;"
+  "}";
 
 const gchar *multiply_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect base;"
-    "uniform sampler2DRect blend;"
-    "uniform float alpha;"
-    "void main () {"
-    "  vec4 basecolor = texture2DRect (base, gl_TexCoord[0].st);"
-    "  vec4 blendcolor = texture2DRect (blend, gl_TexCoord[0].st);"
-    "  gl_FragColor = (1 - alpha) * basecolor + alpha * basecolor * blendcolor;"
-    "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect base;"
+  "uniform sampler2DRect blend;"
+  "uniform float alpha;"
+  "void main () {"
+  "  vec4 basecolor = texture2DRect (base, gl_TexCoord[0].st);"
+  "  vec4 blendcolor = texture2DRect (blend, gl_TexCoord[0].st);"
+  "  gl_FragColor = (1 - alpha) * basecolor + alpha * basecolor * blendcolor;"
+  "}";
 
 /* lut operations, map luma to tex1d, see orange book (chapter 19) */
 const gchar *luma_to_curve_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform sampler1D curve;"
-    "void main () {"
-    "  vec2 texturecoord = gl_TexCoord[0].st;"
-    "  vec4 color = texture2DRect (tex, texturecoord);"
-    "  float luma = dot(color.rgb, vec3(0.2125, 0.7154, 0.0721));"
-    "  color = texture1D(curve, luma);" "  gl_FragColor = color;" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform sampler1D curve;"
+  "void main () {"
+  "  vec2 texturecoord = gl_TexCoord[0].st;"
+  "  vec4 color = texture2DRect (tex, texturecoord);"
+  "  float luma = dot(color.rgb, vec3(0.2125, 0.7154, 0.0721));"
+  "  color = texture1D(curve, luma);"
+  "  gl_FragColor = color;"
+  "}";
 
 
 /* lut operations, map rgb to tex1d, see orange book (chapter 19) */
 const gchar *rgb_to_curve_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform sampler1D curve;"
-    "void main () {"
-    "  vec2 texturecoord = gl_TexCoord[0].st;"
-    "  vec4 color = texture2DRect (tex, texturecoord);"
-    "  vec4 outcolor;"
-    "  outcolor.r = texture1D(curve, color.r).r;"
-    "  outcolor.g = texture1D(curve, color.g).g;"
-    "  outcolor.b = texture1D(curve, color.b).b;"
-    "  outcolor.a = color.a;" "  gl_FragColor = outcolor;" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform sampler1D curve;"
+  "void main () {"
+  "  vec2 texturecoord = gl_TexCoord[0].st;"
+  "  vec4 color = texture2DRect (tex, texturecoord);"
+  "  vec4 outcolor;"
+  "  outcolor.r = texture1D(curve, color.r).r;"
+  "  outcolor.g = texture1D(curve, color.g).g;"
+  "  outcolor.b = texture1D(curve, color.b).b;"
+  "  outcolor.a = color.a;"
+  "  gl_FragColor = outcolor;"
+  "}";
 
 const gchar *sin_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;" "vec3 rgb2hsl (vec3 v) " "{"
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "vec3 rgb2hsl (vec3 v) "
+  "{"
 /* TODO: check this algorythm */
-    "  float MIN, MAX;"
-    "  float r, g, b;"
-    "  float h, l, s;"
-    "  float delta;"
-    "  h = 0.0; l = 0.0; s = 0.0;"
-    "  r = v.r; g = v.g; b = v.b;"
-    "  MIN = min (r, min (g, b));"
-    "  MAX = max (r, max (g, b));"
-    "  delta = MAX - MIN;"
-    "  l = (MAX + MIN) / 2.0;"
-    "  if ((MAX - MIN) < 0.0001) { h = 0.0; s = 0.0; }"
-    "  else {"
-    "    if (l <= 0.5) s = (MAX - MIN) / (MAX + MIN);"
-    "    else s = (MAX - MIN) / (2.0 - MAX - MIN);"
-    "    if (r == MAX) h = (g - b) / delta;"
-    "    else if (g == MAX) h = 2.0 + (b - r) / delta;"
-    "    else h = 4.0 + (r - g) / delta;"
-    "    h *= 60.0;"
-    "    if (h < 0.0) h += 360.0;"
-    "  }"
-    "  return vec3 (h, l, s);"
-    "}"
-    "void main () {"
-    "  vec3 HSL, RGB;"
-    "  vec4 color = texture2DRect (tex, vec2(gl_TexCoord[0].st));"
-    "  float luma = dot(color.rgb, vec3(0.2125, 0.7154, 0.0721));"
-    "  HSL = rgb2hsl (color.rgb);"
+  "  float MIN, MAX;"
+  "  float r, g, b;"
+  "  float h, l, s;"
+  "  float delta;"
+  "  h = 0.0; l = 0.0; s = 0.0;"
+  "  r = v.r; g = v.g; b = v.b;"
+  "  MIN = min (r, min (g, b));"
+  "  MAX = max (r, max (g, b));"
+  "  delta = MAX - MIN;"
+  "  l = (MAX + MIN) / 2.0;"
+  "  if ((MAX - MIN) < 0.0001) { h = 0.0; s = 0.0; }"
+  "  else {"
+  "    if (l <= 0.5) s = (MAX - MIN) / (MAX + MIN);"
+  "    else s = (MAX - MIN) / (2.0 - MAX - MIN);"
+  "    if (r == MAX) h = (g - b) / delta;"
+  "    else if (g == MAX) h = 2.0 + (b - r) / delta;"
+  "    else h = 4.0 + (r - g) / delta;"
+  "    h *= 60.0;"
+  "    if (h < 0.0) h += 360.0;"
+  "  }"
+  "  return vec3 (h, l, s);"
+  "}"
+  "void main () {"
+  "  vec3 HSL, RGB;"
+  "  vec4 color = texture2DRect (tex, vec2(gl_TexCoord[0].st));"
+  "  float luma = dot(color.rgb, vec3(0.2125, 0.7154, 0.0721));"
+  "  HSL = rgb2hsl (color.rgb);"
 /* move hls discontinuity away from the desired red zone so we can use
  * smoothstep.. to try: convert degrees in radiants, divide by 2 and
  * smoothstep cosine */
-    "  HSL.x += 180.0;" "  if ((HSL.x) > 360.0) HSL.x -= 360.0;"
+  "  HSL.x += 180.0;"
+  "  if ((HSL.x) > 360.0) HSL.x -= 360.0;"
 /* damn, it is extremely hard to get rid of human face reds! */
 /* picked hue is slightly shifted towards violet to prevent this but
  * still fails.. maybe hsl is not well suited for this */
-    "  float a = smoothstep (110.0, 150.0, HSL.x);"
-    "  float b = smoothstep (170.0, 210.0, HSL.x);"
-    "  float alpha = a - b;"
-    "  gl_FragColor = color * alpha + luma * (1.0 - alpha);" "}";
-
-const gchar *interpolate_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect base;"
-    "uniform sampler2DRect blend;"
-    "void main () {"
-    "vec4 basecolor = texture2DRect (base, gl_TexCoord[0].st);"
-    "vec4 blendcolor = texture2DRect (blend, gl_TexCoord[0].st);"
-    "vec4 white = vec4(1.0);"
-    "gl_FragColor = blendcolor + (1.0 - blendcolor.a) * basecolor;" "}";
-
-const gchar *texture_interp_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect base;"
-    "uniform sampler2DRect blend;"
-    "uniform sampler2DRect alpha;"
-    "void main () {"
-    "vec4 basecolor = texture2DRect (base, gl_TexCoord[0].st);"
-    "vec4 blendcolor = texture2DRect (blend, gl_TexCoord[0].st);"
-    "vec4 alphacolor = texture2DRect (alpha, gl_TexCoord[0].st);"
+  "  float a = smoothstep (110.0, 150.0, HSL.x);"
+  "  float b = smoothstep (170.0, 210.0, HSL.x);"
+  "  float alpha = a - b;"
+  "  gl_FragColor = color * alpha + luma * (1.0 - alpha);"
+  "}";
+
+const gchar *interpolate_fragment_source = 
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect base;"
+  "uniform sampler2DRect blend;"
+  "void main () {"
+  "vec4 basecolor = texture2DRect (base, gl_TexCoord[0].st);"
+  "vec4 blendcolor = texture2DRect (blend, gl_TexCoord[0].st);"
+  "vec4 white = vec4(1.0);"
+  "gl_FragColor = blendcolor + (1.0 - blendcolor.a) * basecolor;"
+  "}";
+
+const gchar *texture_interp_fragment_source = 
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect base;"
+  "uniform sampler2DRect blend;"
+  "uniform sampler2DRect alpha;"
+  "void main () {"
+  "vec4 basecolor = texture2DRect (base, gl_TexCoord[0].st);"
+  "vec4 blendcolor = texture2DRect (blend, gl_TexCoord[0].st);"
+  "vec4 alphacolor = texture2DRect (alpha, gl_TexCoord[0].st);"
 //  "gl_FragColor = alphacolor;"
-    "gl_FragColor = (alphacolor * blendcolor) + (1.0 - alphacolor) * basecolor;"
-    "}";
+  "gl_FragColor = (alphacolor * blendcolor) + (1.0 - alphacolor) * basecolor;"
+  "}";
 
 const gchar *difference_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect saved;"
-    "uniform sampler2DRect current;"
-    "void main () {"
-    "vec4 savedcolor = texture2DRect (saved, gl_TexCoord[0].st);"
-    "vec4 currentcolor = texture2DRect (current, gl_TexCoord[0].st);"
-    "gl_FragColor = vec4 (step (0.12, length (savedcolor - currentcolor)));"
-    "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect saved;"
+  "uniform sampler2DRect current;"
+  "void main () {"
+  "vec4 savedcolor = texture2DRect (saved, gl_TexCoord[0].st);"
+  "vec4 currentcolor = texture2DRect (current, gl_TexCoord[0].st);"
+  "gl_FragColor = vec4 (step (0.12, length (savedcolor - currentcolor)));"
+  "}";
index 95a1467..f1d9ec1 100644 (file)
 #include <gstgleffects.h>
 
 static void
-gst_gl_effects_stretch_callback (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_stretch_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
 
   GstGLShader *shader;
-
+          
   shader = g_hash_table_lookup (effects->shaderstable, "stretch0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "stretch0", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          stretch_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, stretch_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
-
+  
   gst_gl_shader_use (shader);
 
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-
+     
   gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f);
+  
+  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f); 
   gst_gl_shader_set_uniform_1f (shader, "height", (gfloat) height / 2.0f);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
 void
-gst_gl_effects_stretch (GstGLEffects * effects)
-{
+gst_gl_effects_stretch (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_stretch_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_stretch_callback, effects);
 }
index 66ad49b..0a72b8b 100644 (file)
 #include <gstgleffects.h>
 
 static void
-gst_gl_effects_tunnel_callback (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_tunnel_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
 
   GstGLShader *shader;
-
+          
   shader = g_hash_table_lookup (effects->shaderstable, "tunnel0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "tunnel0", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          tunnel_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, tunnel_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
-
+  
   gst_gl_shader_use (shader);
 
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-
+     
   gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f);
+  
+  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f); 
   gst_gl_shader_set_uniform_1f (shader, "height", (gfloat) height / 2.0f);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
 void
-gst_gl_effects_tunnel (GstGLEffects * effects)
-{
+gst_gl_effects_tunnel (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_tunnel_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_tunnel_callback, effects);
 }
index 9ab93d7..76416e6 100644 (file)
 #include <gstgleffects.h>
 
 static void
-gst_gl_effects_twirl_callback (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_twirl_callback (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
 
   GstGLShader *shader;
-
+          
   shader = g_hash_table_lookup (effects->shaderstable, "twirl0");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "twirl0", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          twirl_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, twirl_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
-
+  
   gst_gl_shader_use (shader);
 
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-
+     
   gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f);
+  
+  gst_gl_shader_set_uniform_1f (shader, "width", (gfloat) width / 2.0f); 
   gst_gl_shader_set_uniform_1f (shader, "height", (gfloat) height / 2.0f);
-
+  
   gst_gl_effects_draw_texture (effects, texture);
 }
 
 void
-gst_gl_effects_twirl (GstGLEffects * effects)
-{
+gst_gl_effects_twirl (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->outtexture, gst_gl_effects_twirl_callback, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->outtexture,
+                                 gst_gl_effects_twirl_callback, effects);
 }
index d086843..109751d 100644 (file)
 
 /* Gaussian Kernel: std = 1.200000, size = 9x1 */
 static gfloat gauss_kernel[9] = { 0.001285f, 0.014607f, 0.082898f,
-  0.234927f, 0.332452f, 0.234927f,
-  0.082898f, 0.014607f, 0.001285f
-};
-
+                                  0.234927f, 0.332452f, 0.234927f,
+                                  0.082898f, 0.014607f, 0.001285f };
 /* Normalization Constant = 0.999885 */
 
-static void
-gst_gl_effects_xray_step_one (gint width, gint height, guint texture,
-    gpointer data)
+static void gst_gl_effects_xray_step_one (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-
-  gst_gl_effects_luma_to_curve (effects, xray_curve, GST_GL_EFFECTS_CURVE_XRAY,
-      width, height, texture);
+    GstGLEffects* effects = GST_GL_EFFECTS (data);
+    
+    gst_gl_effects_luma_to_curve (effects, xray_curve, GST_GL_EFFECTS_CURVE_XRAY, 
+                                  width, height, texture);
 }
 
 static void
-gst_gl_effects_xray_step_two (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_xray_step_two (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
   GstGLShader *shader;
 
   shader = g_hash_table_lookup (effects->shaderstable, "xray1");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "xray1", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          hconv9_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, hconv9_fragment_source,
+                                     GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -77,21 +73,21 @@ gst_gl_effects_xray_step_two (gint width, gint height, guint texture,
 }
 
 static void
-gst_gl_effects_xray_step_three (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_xray_step_three (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
   GstGLShader *shader;
-
+          
   shader = g_hash_table_lookup (effects->shaderstable, "xray2");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "xray2", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          vconv9_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, vconv9_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -113,33 +109,33 @@ gst_gl_effects_xray_step_three (gint width, gint height, guint texture,
 }
 
 static void
-gst_gl_effects_xray_step_four (gint width, gint height, guint texture,
-    gpointer data)
+gst_gl_effects_xray_step_four (gint width, gint height, guint texture, gpointer data)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLEffectseffects = GST_GL_EFFECTS (data);
   GstGLShader *shader;
 
-  gfloat hkern[9] = {
+  gfloat hkern[9] = { 
     1.0, 0.0, -1.0,
     2.0, 0.0, -2.0,
     1.0, 0.0, -1.0
   };
-
+  
   gfloat vkern[9] = {
-    1.0, 2.0, 1.0,
-    0.0, 0.0, 0.0,
+     1.0,  2.0,  1.0,
+     0.0,  0.0,  0.0,
     -1.0, -2.0, -1.0
   };
 
   shader = g_hash_table_lookup (effects->shaderstable, "xray3");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "xray3", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          sobel_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, sobel_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -162,21 +158,21 @@ gst_gl_effects_xray_step_four (gint width, gint height, guint texture,
 }
 
 void
-gst_gl_effects_xray_step_five (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_effects_xray_step_five (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (stuff);
+  GstGLEffectseffects = GST_GL_EFFECTS (stuff);
   GstGLShader *shader;
 
   shader = g_hash_table_lookup (effects->shaderstable, "xray4");
-
+  
   if (!shader) {
     shader = gst_gl_shader_new ();
     g_hash_table_insert (effects->shaderstable, "xray4", shader);
   }
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (shader,
-          multiply_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (shader, multiply_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -186,39 +182,37 @@ gst_gl_effects_xray_step_five (gint width, gint height, guint texture,
   glActiveTexture (GL_TEXTURE2);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, effects->midtexture[2]);
-  glDisable (GL_TEXTURE_RECTANGLE_ARB);
-
+  glDisable(GL_TEXTURE_RECTANGLE_ARB);
+  
   gst_gl_shader_set_uniform_1i (shader, "base", 2);
-
+    
   glActiveTexture (GL_TEXTURE1);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-  glDisable (GL_TEXTURE_RECTANGLE_ARB);
-
+  glDisable(GL_TEXTURE_RECTANGLE_ARB);
+  
   gst_gl_shader_set_uniform_1f (shader, "alpha", (gfloat) 0.28f);
   gst_gl_shader_set_uniform_1i (shader, "blend", 1);
 
   gst_gl_effects_draw_texture (effects, texture);
 }
 
-void
-gst_gl_effects_xray (GstGLEffects * effects)
-{
+void gst_gl_effects_xray (GstGLEffects *effects) {
   GstGLFilter *filter = GST_GL_FILTER (effects);
 
   /* map luma to xray curve */
-  gst_gl_filter_render_to_target (filter, effects->intexture,
-      effects->midtexture[0], gst_gl_effects_xray_step_one, effects);
+  gst_gl_filter_render_to_target (filter, effects->intexture, effects->midtexture[0],
+                                 gst_gl_effects_xray_step_one, effects);
   /* horizontal blur */
-  gst_gl_filter_render_to_target (filter, effects->midtexture[0],
-      effects->midtexture[1], gst_gl_effects_xray_step_two, effects);
+  gst_gl_filter_render_to_target (filter, effects->midtexture[0], effects->midtexture[1],
+                                 gst_gl_effects_xray_step_two, effects);
   /* vertical blur */
-  gst_gl_filter_render_to_target (filter, effects->midtexture[1],
-      effects->midtexture[2], gst_gl_effects_xray_step_three, effects);
+  gst_gl_filter_render_to_target (filter, effects->midtexture[1], effects->midtexture[2],
+                                 gst_gl_effects_xray_step_three, effects);
   /* detect edges with Sobel */
-  gst_gl_filter_render_to_target (filter, effects->midtexture[2],
-      effects->midtexture[3], gst_gl_effects_xray_step_four, effects);
+  gst_gl_filter_render_to_target (filter, effects->midtexture[2], effects->midtexture[3],
+                                 gst_gl_effects_xray_step_four, effects);
   /* multiply edges with the blurred image */
-  gst_gl_filter_render_to_target (filter, effects->midtexture[3],
-      effects->outtexture, gst_gl_effects_xray_step_five, effects);
+  gst_gl_filter_render_to_target (filter, effects->midtexture[3], effects->outtexture,
+                                 gst_gl_effects_xray_step_five, effects);
 }
index 3011fa2..4b5f9f0 100644 (file)
@@ -101,8 +101,7 @@ gst_gl_test_src_smpte (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
         vts_colors[i].B * (1 / 255.0f), 1.0f);
     glBegin (GL_QUADS);
     glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f + 2.0 * (2.0f / 3.0f), 0);
-    glVertex3f (-1.0f + (i + 1.0f) * (2.0f / 7.0f),
-        -1.0f + 2.0f * (2.0f / 3.0f), 0);
+    glVertex3f (-1.0f + (i + 1.0f) * (2.0f / 7.0f), -1.0f + 2.0f * (2.0f / 3.0f), 0);
     glVertex3f (-1.0f + (i + 1.0f) * (2.0f / 7.0f), -1.0f, 0);
     glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f, 0);
     glEnd ();
@@ -121,10 +120,8 @@ gst_gl_test_src_smpte (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
         vts_colors[k].B * (1 / 255.0f), 1.0f);
     glBegin (GL_QUADS);
     glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f + 2.0f * (3.0f / 4.0f), 0);
-    glVertex3f (-1.0f + (i + 1) * (2.0f / 7.0f), -1.0f + 2.0f * (3.0f / 4.0f),
-        0);
-    glVertex3f (-1.0f + (i + 1) * (2.0f / 7.0f), -1.0f + 2.0f * (2.0f / 3.0f),
-        0);
+    glVertex3f (-1.0f + (i + 1) * (2.0f / 7.0f), -1.0f + 2.0f * (3.0f / 4.0f), 0);
+    glVertex3f (-1.0f + (i + 1) * (2.0f / 7.0f), -1.0f + 2.0f * (2.0f / 3.0f), 0);
     glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f + 2.0f * (2.0f / 3.0f), 0);
     glEnd ();
   }
@@ -145,8 +142,7 @@ gst_gl_test_src_smpte (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
     glBegin (GL_QUADS);
     glVertex3f (-1.0f + i * (2.0f / 6.0f), -1.0f + 2.0f * 1, 0);
     glVertex3f (-1.0f + (i + 1) * (2.0f / 6.0f), -1.0f + 2.0f * 1, 0);
-    glVertex3f (-1.0f + (i + 1) * (2.0f / 6.0f), -1.0f + 2.0f * (3.0f / 4.0f),
-        0);
+    glVertex3f (-1.0f + (i + 1) * (2.0f / 6.0f), -1.0f + 2.0f * (3.0f / 4.0f), 0);
     glVertex3f (-1.0f + i * (2.0f / 6.0f), -1.0f + 2.0f * (3.0f / 4.0f), 0);
     glEnd ();
   }
@@ -166,12 +162,11 @@ gst_gl_test_src_smpte (GstGLTestSrc * v, GstGLBuffer * buffer, int w, int h)
         vts_colors[k].B * (1 / 255.0f), 1.0f);
     glBegin (GL_QUADS);
     glVertex3f (-1.0f + 2.0f * (0.5f + i * (1.0f / 12.0f)), -1.0 + 2.0f * 1, 0);
+    glVertex3f (-1.0f + 2.0f * (0.5f + (i + 1) * (1.0f / 12.0f)), -1.0f + 2.0f * 1, 0);
     glVertex3f (-1.0f + 2.0f * (0.5f + (i + 1) * (1.0f / 12.0f)),
-        -1.0f + 2.0f * 1, 0);
-    glVertex3f (-1.0f + 2.0f * (0.5f + (i + 1) * (1.0f / 12.0f)),
-        -1.0f + 2.0f * (3.0f / 4.0f), 0);
-    glVertex3f (-1.0f + 2.0f * (0.5f + i * (1.0f / 12.0f)),
         -1.0f + 2.0f * (3.0f / 4.0f), 0);
+    glVertex3f (-1.0f + 2.0f * (0.5f + i * (1.0f / 12.0f)), -1.0f + 2.0f * (3.0f / 4.0f),
+        0);
     glEnd ();
   }
 
index bcd9a5d..0d93c42 100644 (file)
@@ -43,7 +43,7 @@
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
 static const GstElementDetails element_details =
-GST_ELEMENT_DETAILS ("OpenGL bumper filter",
+  GST_ELEMENT_DETAILS ("OpenGL bumper filter",
     "Filter/Effect",
     "Bump mapping filter",
     "Cyril Comparon <cyril.comparon@gmail.com>, Julien Isorce <julien.isorce@gmail.com>");
@@ -58,89 +58,89 @@ enum
   GST_DEBUG_CATEGORY_INIT (gst_gl_bumper_debug, "glbumper", 0, "glbumper element");
 
 GST_BOILERPLATE_FULL (GstGLBumper, gst_gl_bumper, GstGLFilter,
-    GST_TYPE_GL_FILTER, DEBUG_INIT);
+  GST_TYPE_GL_FILTER, DEBUG_INIT);
 
 static void gst_gl_bumper_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
+       const GValue * value, GParamSpec * pspec);
 static void gst_gl_bumper_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
+  GValue * value, GParamSpec * pspec);
 
-static void gst_gl_bumper_reset (GstGLFilter * filter);
-static void gst_gl_bumper_init_shader (GstGLFilter * filter);
+static void gst_gl_bumper_reset (GstGLFilter* filter);
+static void gst_gl_bumper_init_shader (GstGLFilter* filter);
 static gboolean gst_gl_bumper_filter (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf);
-static void gst_gl_bumper_callback (gint width, gint height, guint texture,
-    gpointer stuff);
+  GstGLBuffer * inbuf, GstGLBuffer * outbuf);
+static void gst_gl_bumper_callback (gint width, gint height, guint texture, gpointer stuff);
 
 //vertex source
 static const gchar *bumper_v_src =
-    "attribute vec3 aTangent;\n"
-    "\n"
-    "varying vec3 vNormal;\n"
-    "varying vec3 vTangent;\n"
-    "varying vec3 vVertexToLight0;\n"
-    "varying vec3 vVertexToLight1;\n"
-    "\n"
-    "void main()\n"
-    "{\n"
-    "  // transform the vertex\n"
-    "  gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;\n"
-    "\n"
-    "  // transform the normal and the tangent to scene coords\n"
-    "  vNormal = normalize(gl_NormalMatrix * gl_Normal);\n"
-    "  vTangent = normalize(gl_NormalMatrix * aTangent);\n"
-    "\n"
-    "  // transforming the vertex position to modelview-space\n"
-    "  //const vec4 vertexInSceneCoords = gl_ModelViewMatrix * gl_Vertex;\n"
-    "\n"
-    "  // calculate the vector from the vertex position to the light position\n"
-    "  vVertexToLight0 = normalize(gl_LightSource[0].position).xyz;\n"
-    "  vVertexToLight1 = normalize(gl_LightSource[1].position).xyz;\n"
-    "\n"
-    "  // transit vertex color\n"
-    "  gl_FrontColor = gl_BackColor = gl_Color;\n"
-    "\n"
-    "  // use the two first sets of texture coordinates in the fragment shader\n"
-    "  gl_TexCoord[0] = gl_MultiTexCoord0;\n"
-    "  gl_TexCoord[1] = gl_MultiTexCoord1;\n" "}\n";
+  "attribute vec3 aTangent;\n"
+  "\n"
+  "varying vec3 vNormal;\n"
+  "varying vec3 vTangent;\n"
+  "varying vec3 vVertexToLight0;\n"
+  "varying vec3 vVertexToLight1;\n"
+  "\n"
+  "void main()\n"
+  "{\n"
+       "  // transform the vertex\n"
+       "  gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;\n"
+  "\n"
+       "  // transform the normal and the tangent to scene coords\n"
+       "  vNormal = normalize(gl_NormalMatrix * gl_Normal);\n"
+       "  vTangent = normalize(gl_NormalMatrix * aTangent);\n"
+  "\n"
+       "  // transforming the vertex position to modelview-space\n"
+       "  //const vec4 vertexInSceneCoords = gl_ModelViewMatrix * gl_Vertex;\n"
+  "\n"
+       "  // calculate the vector from the vertex position to the light position\n"
+       "  vVertexToLight0 = normalize(gl_LightSource[0].position).xyz;\n"
+       "  vVertexToLight1 = normalize(gl_LightSource[1].position).xyz;\n"
+  "\n"
+       "  // transit vertex color\n"
+       "  gl_FrontColor = gl_BackColor = gl_Color;\n"
+  "\n"
+       "  // use the two first sets of texture coordinates in the fragment shader\n"
+  "  gl_TexCoord[0] = gl_MultiTexCoord0;\n"
+  "  gl_TexCoord[1] = gl_MultiTexCoord1;\n"
+  "}\n";
 
 //fragment source
 static const gchar *bumper_f_src =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect texture0;\n"
-    "uniform sampler2DRect texture1;\n"
-    "\n"
-    "varying vec3 vNormal;\n"
-    "varying vec3 vTangent;\n"
-    "varying vec3 vVertexToLight0;\n"
-    "varying vec3 vVertexToLight1;\n"
-    "\n"
-    "void main()\n"
-    "{\n"
-    "  // get the color of the textures\n"
-    "  vec4 textureColor = texture2DRect(texture0, gl_TexCoord[0].st);\n"
-    "  vec3 normalmapItem = texture2DRect(texture1, gl_TexCoord[1].st).xyz * 2.0 - 1.0;\n"
-    "\n"
-    "  // calculate matrix that transform from tangent space to normalmap space (contrary of intuition)\n"
-    "  vec3 binormal = cross(vNormal, vTangent);\n"
-    "  mat3 tangentSpace2normalmapSpaceMat = mat3(vTangent, binormal, vNormal);\n"
-    "\n"
-    "  // disturb the normal\n"
-    "  vec3 disturbedNormal = tangentSpace2normalmapSpaceMat * normalmapItem;\n"
-    "\n"
-    "  // calculate the diffuse term and clamping it to [0;1]\n"
-    "  float diffuseTerm0 = clamp(dot(disturbedNormal, vVertexToLight0), 0.0, 1.0);\n"
-    "  float diffuseTerm1 = clamp(dot(disturbedNormal, vVertexToLight1), 0.0, 1.0);\n"
-    "\n"
-    "  vec3 irradiance = (diffuseTerm0 * gl_LightSource[0].diffuse.rgb + diffuseTerm1 * gl_LightSource[1].diffuse.rgb);\n"
-    "\n"
-    "  // calculate the final color\n"
-    "  gl_FragColor = vec4(irradiance * textureColor.rgb, textureColor.w);\n"
-    "}\n";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect texture0;\n"
+  "uniform sampler2DRect texture1;\n"
+  "\n"
+  "varying vec3 vNormal;\n"
+  "varying vec3 vTangent;\n"
+  "varying vec3 vVertexToLight0;\n"
+  "varying vec3 vVertexToLight1;\n"
+  "\n"
+  "void main()\n"
+  "{\n"
+       "  // get the color of the textures\n"
+  "  vec4 textureColor = texture2DRect(texture0, gl_TexCoord[0].st);\n"
+  "  vec3 normalmapItem = texture2DRect(texture1, gl_TexCoord[1].st).xyz * 2.0 - 1.0;\n"
+  "\n"
+       "  // calculate matrix that transform from tangent space to normalmap space (contrary of intuition)\n"
+  "  vec3 binormal = cross(vNormal, vTangent);\n"
+       "  mat3 tangentSpace2normalmapSpaceMat = mat3(vTangent, binormal, vNormal);\n"
+  "\n"
+       "  // disturb the normal\n"
+       "  vec3 disturbedNormal = tangentSpace2normalmapSpaceMat * normalmapItem;\n"
+  "\n"
+       "  // calculate the diffuse term and clamping it to [0;1]\n"
+       "  float diffuseTerm0 = clamp(dot(disturbedNormal, vVertexToLight0), 0.0, 1.0);\n"
+       "  float diffuseTerm1 = clamp(dot(disturbedNormal, vVertexToLight1), 0.0, 1.0);\n"
+  "\n" 
+       "  vec3 irradiance = (diffuseTerm0 * gl_LightSource[0].diffuse.rgb + diffuseTerm1 * gl_LightSource[1].diffuse.rgb);\n"
+  "\n"
+       "  // calculate the final color\n"
+       "  gl_FragColor = vec4(irradiance * textureColor.rgb, textureColor.w);\n"
+  "}\n";
 
 //Called in the gl thread
 static void
-gst_gl_bumper_init_resources (GstGLFilter * filter)
+gst_gl_bumper_init_resources (GstGLFilter *filter)
 {
   GstGLBumper *bumper = GST_GL_BUMPER (filter);
 
@@ -150,23 +150,24 @@ gst_gl_bumper_init_resources (GstGLFilter * filter)
   bumper->pixbuf = gdk_pixbuf_new_from_file (bumper->location, &error);
   bumper->bumpmap_width = gdk_pixbuf_get_width (bumper->pixbuf);
   bumper->bumpmap_height = gdk_pixbuf_get_height (bumper->pixbuf);
-
+  
   glGenTextures (1, &bumper->bumpmap);
-  glBindTexture (GL_TEXTURE_RECTANGLE_ARB, bumper->bumpmap);
+  glBindTexture(GL_TEXTURE_RECTANGLE_ARB, bumper->bumpmap);
   glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA,
-      bumper->bumpmap_width, bumper->bumpmap_height, 0,
-      gdk_pixbuf_get_has_alpha (bumper->pixbuf) ? GL_RGBA : GL_RGB,
-      GL_UNSIGNED_BYTE, gdk_pixbuf_get_pixels (bumper->pixbuf));
+                bumper->bumpmap_width, bumper->bumpmap_height, 0,
+                gdk_pixbuf_get_has_alpha (bumper->pixbuf) ? GL_RGBA : GL_RGB,
+                GL_UNSIGNED_BYTE, gdk_pixbuf_get_pixels (bumper->pixbuf));
 
 }
 
 //Called in the gl thread
 static void
-gst_gl_bumper_reset_resources (GstGLFilter * filter)
+gst_gl_bumper_reset_resources (GstGLFilter *filter)
 {
   GstGLBumper *bumper = GST_GL_BUMPER (filter);
-
-  if (bumper->bumpmap) {
+  
+  if (bumper->bumpmap)
+  {
     glDeleteTextures (1, &bumper->bumpmap);
     bumper->bumpmap = 0;
   }
@@ -181,9 +182,9 @@ gst_gl_bumper_base_init (gpointer klass)
 }
 
 static void
-gst_gl_bumper_class_init (GstGLBumperClass * klass)
+gst_gl_bumper_class_init (GstGLBumperClass* klass)
 {
-  GObjectClass *gobject_class;
+  GObjectClassgobject_class;
 
   gobject_class = (GObjectClass *) klass;
   gobject_class->set_property = gst_gl_bumper_set_property;
@@ -196,88 +197,91 @@ gst_gl_bumper_class_init (GstGLBumperClass * klass)
   GST_GL_FILTER_CLASS (klass)->onReset = gst_gl_bumper_reset;
 
   g_object_class_install_property (gobject_class,
-      PROP_LOCATION, g_param_spec_string ("location",
-          "Normal map location",
-          "Normal map location", NULL, G_PARAM_READWRITE));
+    PROP_LOCATION, g_param_spec_string ("location",
+    "Normal map location", 
+    "Normal map location",
+    NULL, G_PARAM_READWRITE));
 }
 
 static void
-gst_gl_bumper_init (GstGLBumper * bumper, GstGLBumperClass * klass)
+gst_gl_bumper_init (GstGLBumper* bumper,
+    GstGLBumperClass* klass)
 {
-  bumper->shader = NULL;
-  bumper->bumpmap = 0;
-  bumper->bumpmap_width = 0;
-  bumper->bumpmap_height = 0;
-  bumper->pixbuf = NULL;
-  bumper->location = NULL;
+    bumper->shader = NULL;
+    bumper->bumpmap = 0;
+    bumper->bumpmap_width = 0;
+    bumper->bumpmap_height = 0;
+    bumper->pixbuf = NULL;
+    bumper->location = NULL;
 }
 
 static void
-gst_gl_bumper_reset (GstGLFilter * filter)
+gst_gl_bumper_reset (GstGLFilter* filter)
 {
-  GstGLBumper *bumper_filter = GST_GL_BUMPER (filter);
+  GstGLBumper* bumper_filter = GST_GL_BUMPER(filter);
 
   //blocking call, wait the opengl thread has destroyed the shader
   gst_gl_display_del_shader (filter->display, bumper_filter->shader);
 }
 
 static void
-gst_gl_bumper_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
+gst_gl_bumper_set_property (GObject* object, guint prop_id,
+                                     const GValue* value, GParamSpec* pspec)
 {
   GstGLBumper *bumper = GST_GL_BUMPER (object);
 
-  switch (prop_id) {
-    case PROP_LOCATION:
-      if (bumper->location != NULL)
-        g_free (bumper->location);
-      bumper->location = g_value_dup_string (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  switch (prop_id)
+  {
+  case PROP_LOCATION:
+    if (bumper->location != NULL) 
+      g_free (bumper->location);
+    bumper->location = g_value_dup_string (value);
+    break;
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
-gst_gl_bumper_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
+gst_gl_bumper_get_property (GObject* object, guint prop_id,
+                                     GValue* value, GParamSpec* pspec)
 {
   GstGLBumper *bumper = GST_GL_BUMPER (object);
 
-  switch (prop_id) {
-    case PROP_LOCATION:
-      g_value_set_string (value, bumper->location);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  switch (prop_id)
+  {
+  case PROP_LOCATION:
+    g_value_set_string (value, bumper->location);
+    break;
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
-gst_gl_bumper_init_shader (GstGLFilter * filter)
+gst_gl_bumper_init_shader (GstGLFilter* filter)
 {
   GstGLBumper *bumper = GST_GL_BUMPER (filter);
 
   //blocking call, wait the opengl thread has compiled the shader
-  gst_gl_display_gen_shader (filter->display, bumper_v_src, bumper_f_src,
-      &bumper->shader);
+  gst_gl_display_gen_shader (filter->display, bumper_v_src, bumper_f_src, &bumper->shader);
 }
 
 static gboolean
-gst_gl_bumper_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
-    GstGLBuffer * outbuf)
+gst_gl_bumper_filter (GstGLFilter* filter, GstGLBuffer* inbuf,
+                               GstGLBuffer* outbuf)
 {
   gpointer bumper_filter = GST_GL_BUMPER (filter);
 
   //blocking call, use a FBO
   gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
-      filter->fbo, filter->depthbuffer, outbuf->texture, gst_gl_bumper_callback,
-      inbuf->width, inbuf->height, inbuf->texture,
-      //bumper_filter->fovy, bumper_filter->aspect, bumper_filter->znear, bumper_filter->zfar,
-      45, (gdouble) filter->width / (gdouble) filter->height, 0.1, 50,
-      GST_GL_DISPLAY_PROJECTION_PERSPECIVE, bumper_filter);
+                         filter->fbo, filter->depthbuffer, outbuf->texture, gst_gl_bumper_callback,
+                         inbuf->width, inbuf->height, inbuf->texture,
+                         //bumper_filter->fovy, bumper_filter->aspect, bumper_filter->znear, bumper_filter->zfar,
+        45, (gdouble)filter->width/(gdouble)filter->height, 0.1, 50,
+        GST_GL_DISPLAY_PROJECTION_PERSPECIVE, bumper_filter);
 
   return TRUE;
 }
@@ -286,47 +290,48 @@ gst_gl_bumper_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
 static void
 gst_gl_bumper_callback (gint width, gint height, guint texture, gpointer stuff)
 {
-  static GLfloat xrot = 0;
-  static GLfloat yrot = 0;
-  static GLfloat zrot = 0;
-
-  GstGLBumper *bumper = GST_GL_BUMPER (stuff);
+  static GLfloat       xrot = 0;
+  static GLfloat       yrot = 0;                               
+  static GLfloat       zrot = 0;
+  
+  GstGLBumperbumper = GST_GL_BUMPER (stuff);
   GLint locTangent = 0;
 
   //choose the lights
   GLfloat light_direction0[] = { 1.0, 0.0, -1.0, 0.0 }; // light goes along -x
-  GLfloat light_direction1[] = { -1.0, 0.0, -1.0, 0.0 };        // light goes along x
+  GLfloat light_direction1[] = { -1.0, 0.0, -1.0, 0.0 }; // light goes along x
   GLfloat light_diffuse0[] = { 1.0, 1.0, 1.0, 1.0 };
   GLfloat light_diffuse1[] = { 1.0, 1.0, 1.0, 1.0 };
   GLfloat mat_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
 
   //eye point
-  glMatrixMode (GL_PROJECTION);
-  gluLookAt (0.0, 0.0, -6.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
-  glMatrixMode (GL_MODELVIEW);
+  glMatrixMode(GL_PROJECTION);
+  gluLookAt(0.0,  0.0, -6.0,
+            0.0,  0.0,  0.0,
+            0.0,  1.0,  0.0);
+  glMatrixMode(GL_MODELVIEW);
 
   //scene conf
-  glEnable (GL_DEPTH_TEST);
-  glDepthFunc (GL_LEQUAL);
-  glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
-  glShadeModel (GL_SMOOTH);
+  glEnable(GL_DEPTH_TEST);
+  glDepthFunc(GL_LEQUAL);
+  glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
+  glShadeModel(GL_SMOOTH);
 
   //set the lights
-  glLightfv (GL_LIGHT0, GL_POSITION, light_direction0);
-  glLightfv (GL_LIGHT0, GL_DIFFUSE, light_diffuse0);
-  glLightfv (GL_LIGHT1, GL_POSITION, light_direction1);
-  glLightfv (GL_LIGHT1, GL_DIFFUSE, light_diffuse1);
-  glMaterialfv (GL_FRONT, GL_DIFFUSE, mat_diffuse);
-  glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE);
-  glEnable (GL_COLOR_MATERIAL);
-  glEnable (GL_LIGHTING);
-  glEnable (GL_LIGHT0);
-  glEnable (GL_LIGHT1);
+  glLightfv(GL_LIGHT0, GL_POSITION, light_direction0);
+  glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse0);
+  glLightfv(GL_LIGHT1, GL_POSITION, light_direction1);
+  glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse1);
+  glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
+  glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
+  glEnable(GL_COLOR_MATERIAL);
+  glEnable(GL_LIGHTING);
+  glEnable(GL_LIGHT0);
+  glEnable(GL_LIGHT1);
 
   //configure shader
   gst_gl_shader_use (bumper->shader);
-  locTangent =
-      gst_gl_shader_get_attribute_location (bumper->shader, "aTangent");
+  locTangent = gst_gl_shader_get_attribute_location (bumper->shader, "aTangent");
 
   //set the normal map
   glActiveTextureARB (GL_TEXTURE1_ARB);
@@ -340,123 +345,117 @@ gst_gl_bumper_callback (gint width, gint height, guint texture, gpointer stuff)
 
   //glTranslatef(2.0f, 2.0f, 5.0f);
 
-  glRotatef (xrot, 1.0f, 0.0f, 0.0f);
-  glRotatef (yrot, 0.0f, 1.0f, 0.0f);
-  glRotatef (zrot, 0.0f, 0.0f, 1.0f);
+  glRotatef(xrot,1.0f,0.0f,0.0f);
+  glRotatef(yrot,0.0f,1.0f,0.0f);
+  glRotatef(zrot,0.0f,0.0f,1.0f);
 
   //Cube
-  glBegin (GL_QUADS);
-
-  // front face
-  glNormal3d (0.0, 0.0, -1.0);
-  glVertexAttrib3dARB (locTangent, 0.0, 1.0, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, 0.0);
-  glVertex3d (1.0, 1.0, -1.0);  // B
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
-  glVertex3d (1.0, -1.0, -1.0); // A
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width,
-      bumper->bumpmap_height);
-  glVertex3d (-1.0, -1.0, -1.0);        // D
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
-  glVertex3d (-1.0, 1.0, -1.0); // C
-
-  // right face
-  glNormal3d (-1.0, 0.0, 0.0);
-  glVertexAttrib3dARB (locTangent, 0.0, 1.0, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, 0.0);
-  glVertex3d (-1.0, 1.0, -1.0); // C
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
-  glVertex3d (-1.0, -1.0, -1.0);        // D
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width,
-      bumper->bumpmap_height);
-  glVertex3d (-1.0, -1.0, 1.0); // H
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
-  glVertex3d (-1.0, 1.0, 1.0);  // G
-
-  // back face
-  glNormal3d (0.0, 0.0, 1.0);
-  glVertexAttrib3dARB (locTangent, 0.0, 1.0, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, 0.0);
-  glVertex3d (-1.0, 1.0, 1.0);  // G
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
-  glVertex3d (-1.0, -1.0, 1.0); // H
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width,
-      bumper->bumpmap_height);
-  glVertex3d (1.0, -1.0, 1.0);  // E
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
-  glVertex3d (1.0, 1.0, 1.0);   // F
-
-  // left face
-  glNormal3d (1.0, 0.0, 0.0);
-  glVertexAttrib3dARB (locTangent, 0.0, 1.0, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, 0.0);
-  glVertex3d (1.0, 1.0, 1.0);   // F
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
-  glVertex3d (1.0, -1.0, 1.0);  // E
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width,
-      bumper->bumpmap_height);
-  glVertex3d (1.0, -1.0, -1.0); // A
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
-  glVertex3d (1.0, 1.0, -1.0);  // B
-
-  // top face
-  glNormal3d (0.0, 1.0, 0.0);
-  glVertexAttrib3dARB (locTangent, 0.0, 0.0, 1.0);
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, 0.0);
-  glVertex3d (1.0, 1.0, 1.0);   // F
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
-  glVertex3d (1.0, 1.0, -1.0);  // B
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width,
-      bumper->bumpmap_height);
-  glVertex3d (-1.0, 1.0, -1.0); // C
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
-  glVertex3d (-1.0, 1.0, 1.0);  // G
-
-  // bottom face
-  glNormal3d (0.0, -1.0, 0.0);
-  glVertexAttrib3dARB (locTangent, 0.0, 0.0, -1.0);
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, 0.0);
-  glVertex3d (1.0, -1.0, -1.0); // A
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, 0.0, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
-  glVertex3d (1.0, -1.0, 1.0);  // E
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, height);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width,
-      bumper->bumpmap_height);
-  glVertex3d (-1.0, -1.0, 1.0); // H
-  glMultiTexCoord2dARB (GL_TEXTURE0_ARB, width, 0.0);
-  glMultiTexCoord2dARB (GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
-  glVertex3d (-1.0, -1.0, -1.0);        // D
-  glEnd ();
-
-  glUseProgram (0);
-  glDisable (GL_LIGHT0);
-  glDisable (GL_LIGHT1);
-  glDisable (GL_LIGHTING);
-  glDisable (GL_COLOR_MATERIAL);
-
-  xrot += 1.0f;
-  yrot += 0.9f;
-  zrot += 1.1f;
+  glBegin(GL_QUADS);
+
+    // front face
+    glNormal3d(0.0, 0.0, -1.0);
+    glVertexAttrib3dARB(locTangent, 0.0, 1.0, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, 0.0);
+    glVertex3d( 1.0,  1.0, -1.0); // B
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
+    glVertex3d( 1.0, -1.0, -1.0); // A
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, bumper->bumpmap_height);
+    glVertex3d(-1.0, -1.0, -1.0); // D
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
+    glVertex3d(-1.0,  1.0, -1.0); // C
+
+    // right face
+    glNormal3d(-1.0, 0.0, 0.0);
+    glVertexAttrib3dARB(locTangent, 0.0, 1.0, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, 0.0);
+    glVertex3d(-1.0,  1.0, -1.0); // C
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
+    glVertex3d(-1.0, -1.0, -1.0); // D
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, bumper->bumpmap_height);
+    glVertex3d(-1.0, -1.0,  1.0); // H
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
+    glVertex3d(-1.0,  1.0,  1.0); // G
+
+    // back face
+    glNormal3d(0.0, 0.0, 1.0);
+    glVertexAttrib3dARB(locTangent, 0.0, 1.0, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, 0.0);
+    glVertex3d(-1.0,  1.0,  1.0); // G
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
+    glVertex3d(-1.0, -1.0,  1.0); // H
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, bumper->bumpmap_height);
+    glVertex3d( 1.0, -1.0,  1.0); // E
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
+    glVertex3d( 1.0,  1.0,  1.0); // F
+
+    // left face
+    glNormal3d(1.0, 0.0, 0.0);
+    glVertexAttrib3dARB(locTangent, 0.0, 1.0, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, 0.0);
+    glVertex3d( 1.0,  1.0,  1.0); // F
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
+    glVertex3d( 1.0, -1.0,  1.0); // E
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, bumper->bumpmap_height);
+    glVertex3d( 1.0, -1.0, -1.0); // A
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
+    glVertex3d( 1.0,  1.0, -1.0); // B
+
+    // top face
+    glNormal3d(0.0, 1.0, 0.0);
+    glVertexAttrib3dARB(locTangent, 0.0, 0.0, 1.0);
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, 0.0);
+    glVertex3d( 1.0,  1.0,  1.0); // F
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
+    glVertex3d( 1.0,  1.0, -1.0); // B
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, bumper->bumpmap_height);
+    glVertex3d(-1.0,  1.0, -1.0); // C
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
+    glVertex3d(-1.0,  1.0,  1.0); // G
+
+    // bottom face
+    glNormal3d(0.0, -1.0, 0.0);
+    glVertexAttrib3dARB(locTangent, 0.0, 0.0, -1.0);
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, 0.0);
+    glVertex3d( 1.0, -1.0, -1.0); // A
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, 0.0, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.0, bumper->bumpmap_height);
+    glVertex3d( 1.0, -1.0,  1.0); // E
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, height);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, bumper->bumpmap_height);
+    glVertex3d(-1.0, -1.0,  1.0); // H
+    glMultiTexCoord2dARB(GL_TEXTURE0_ARB, width, 0.0);
+    glMultiTexCoord2dARB(GL_TEXTURE1_ARB, bumper->bumpmap_width, 0.0);
+    glVertex3d(-1.0, -1.0, -1.0); // D
+  glEnd();
+
+  glUseProgram(0);
+  glDisable(GL_LIGHT0);
+  glDisable(GL_LIGHT1);
+  glDisable(GL_LIGHTING);
+  glDisable(GL_COLOR_MATERIAL);
+
+  xrot+=1.0f;
+  yrot+=0.9f;
+  zrot+=1.1f;
 }
index 4ce0307..9ad4769 100644 (file)
 
 
 #define GST_CAT_DEFAULT gst_gl_colorscale_debug
-GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+       GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
 static const GstElementDetails element_details =
-GST_ELEMENT_DETAILS ("OpenGL color scale",
-    "Filter/Effect",
-    "Colorspace converter and video scaler",
-    "Julien Isorce <julien.isorce@gmail.com>");
+    GST_ELEMENT_DETAILS ("OpenGL color scale",
+        "Filter/Effect",
+        "Colorspace converter and video scaler",
+        "Julien Isorce <julien.isorce@gmail.com>");
 
 /* Source pad definition */
 static GstStaticPadTemplate gst_gl_colorscale_src_pad_template =
-    GST_STATIC_PAD_TEMPLATE ("src",
+GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS (GST_VIDEO_CAPS_RGBx ";"
@@ -86,7 +86,7 @@ static GstStaticPadTemplate gst_gl_colorscale_sink_pad_template =
 /* Properties */
 enum
 {
-  PROP_0
+    PROP_0
 };
 
 #define DEBUG_INIT(bla) \
@@ -95,379 +95,398 @@ enum
 GST_BOILERPLATE_FULL (GstGLColorscale, gst_gl_colorscale, GstBaseTransform,
     GST_TYPE_BASE_TRANSFORM, DEBUG_INIT);
 
-static void gst_gl_colorscale_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
-static void gst_gl_colorscale_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
-
-static void gst_gl_colorscale_reset (GstGLColorscale * colorscale);
-static gboolean gst_gl_colorscale_set_caps (GstBaseTransform * bt,
-    GstCaps * incaps, GstCaps * outcaps);
-static GstCaps *gst_gl_colorscale_transform_caps (GstBaseTransform * bt,
-    GstPadDirection direction, GstCaps * caps);
-static void gst_gl_colorscale_fixate_caps (GstBaseTransform * base,
-    GstPadDirection direction, GstCaps * caps, GstCaps * othercaps);
-static gboolean gst_gl_colorscale_start (GstBaseTransform * bt);
-static gboolean gst_gl_colorscale_stop (GstBaseTransform * bt);
-static GstFlowReturn gst_gl_colorscale_transform (GstBaseTransform * trans,
-    GstBuffer * inbuf, GstBuffer * outbuf);
-static gboolean gst_gl_colorscale_get_unit_size (GstBaseTransform * trans,
-    GstCaps * caps, guint * size);
+static void gst_gl_colorscale_set_property (GObject* object, guint prop_id,
+    const GValue* value, GParamSpec* pspec);
+static void gst_gl_colorscale_get_property (GObject* object, guint prop_id,
+    GValue* value, GParamSpec* pspec);
+
+static void gst_gl_colorscale_reset (GstGLColorscale* colorscale);
+static gboolean gst_gl_colorscale_set_caps (GstBaseTransform* bt,
+    GstCaps* incaps, GstCaps* outcaps);
+static GstCaps *gst_gl_colorscale_transform_caps (GstBaseTransform* bt,
+    GstPadDirection direction, GstCaps* caps);
+static void gst_gl_colorscale_fixate_caps (GstBaseTransform* base, GstPadDirection direction,
+    GstCaps* caps, GstCaps* othercaps);
+static gboolean gst_gl_colorscale_start (GstBaseTransform* bt);
+static gboolean gst_gl_colorscale_stop (GstBaseTransform* bt);
+static GstFlowReturn gst_gl_colorscale_transform (GstBaseTransform* trans,
+    GstBuffer* inbuf, GstBuffer * outbuf);
+static gboolean gst_gl_colorscale_get_unit_size (GstBaseTransform* trans,
+    GstCaps* caps, guint* size);
 
 
 static void
 gst_gl_colorscale_base_init (gpointer klass)
 {
-  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+    GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_set_details (element_class, &element_details);
+    gst_element_class_set_details (element_class, &element_details);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_colorscale_src_pad_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_colorscale_sink_pad_template));
+    gst_element_class_add_pad_template (element_class,
+        gst_static_pad_template_get (&gst_gl_colorscale_src_pad_template));
+    gst_element_class_add_pad_template (element_class,
+        gst_static_pad_template_get (&gst_gl_colorscale_sink_pad_template));
 }
 
 static void
-gst_gl_colorscale_class_init (GstGLColorscaleClass * klass)
+gst_gl_colorscale_class_init (GstGLColorscaleClass* klass)
 {
-  GObjectClass *gobject_class;
-
-  gobject_class = (GObjectClass *) klass;
-  gobject_class->set_property = gst_gl_colorscale_set_property;
-  gobject_class->get_property = gst_gl_colorscale_get_property;
-
-  GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
-      gst_gl_colorscale_transform_caps;
-  GST_BASE_TRANSFORM_CLASS (klass)->fixate_caps = gst_gl_colorscale_fixate_caps;
-  GST_BASE_TRANSFORM_CLASS (klass)->transform = gst_gl_colorscale_transform;
-  GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_colorscale_start;
-  GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_colorscale_stop;
-  GST_BASE_TRANSFORM_CLASS (klass)->set_caps = gst_gl_colorscale_set_caps;
-  GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size =
-      gst_gl_colorscale_get_unit_size;
+    GObjectClass* gobject_class;
+
+    gobject_class = (GObjectClass *) klass;
+    gobject_class->set_property = gst_gl_colorscale_set_property;
+    gobject_class->get_property = gst_gl_colorscale_get_property;
+
+    GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
+        gst_gl_colorscale_transform_caps;
+    GST_BASE_TRANSFORM_CLASS (klass)->fixate_caps = gst_gl_colorscale_fixate_caps;
+    GST_BASE_TRANSFORM_CLASS (klass)->transform = gst_gl_colorscale_transform;
+    GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_colorscale_start;
+    GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_colorscale_stop;
+    GST_BASE_TRANSFORM_CLASS (klass)->set_caps = gst_gl_colorscale_set_caps;
+    GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size = gst_gl_colorscale_get_unit_size;
 }
 
 static void
-gst_gl_colorscale_init (GstGLColorscale * colorscale,
-    GstGLColorscaleClass * klass)
+gst_gl_colorscale_init (GstGLColorscale* colorscale, GstGLColorscaleClass* klass)
 {
-  gst_gl_colorscale_reset (colorscale);
+    gst_gl_colorscale_reset (colorscale);
 }
 
 static void
-gst_gl_colorscale_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
+gst_gl_colorscale_set_property (GObject* object, guint prop_id,
+    const GValue* value, GParamSpec* pspec)
 {
-  //GstGLColorscale* colorscale = GST_GL_COLORSCALE (object);
+    //GstGLColorscale* colorscale = GST_GL_COLORSCALE (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
+    switch (prop_id)
+    {
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
+    }
 }
 
 static void
-gst_gl_colorscale_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
+gst_gl_colorscale_get_property (GObject* object, guint prop_id,
+    GValue* value, GParamSpec* pspec)
 {
-  //GstGLColorscale *colorscale = GST_GL_COLORSCALE (object);
+    //GstGLColorscale *colorscale = GST_GL_COLORSCALE (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
+    switch (prop_id)
+    {
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
+    }
 }
 
 static void
-gst_gl_colorscale_reset (GstGLColorscale * colorscale)
+gst_gl_colorscale_reset (GstGLColorscale* colorscale)
 {
-  if (colorscale->display) {
-    g_object_unref (colorscale->display);
-    colorscale->display = NULL;
-  }
+    if (colorscale->display)
+    {
+        g_object_unref (colorscale->display);
+        colorscale->display = NULL;
+    }
 }
 
 static gboolean
-gst_gl_colorscale_start (GstBaseTransform * bt)
+gst_gl_colorscale_start (GstBaseTransform* bt)
 {
-  //GstGLColorscale* colorscale = GST_GL_COLORSCALE (bt);
+    //GstGLColorscale* colorscale = GST_GL_COLORSCALE (bt);
 
-  return TRUE;
+    return TRUE;
 }
 
 static gboolean
-gst_gl_colorscale_stop (GstBaseTransform * bt)
+gst_gl_colorscale_stop (GstBaseTransform* bt)
 {
-  GstGLColorscale *colorscale = GST_GL_COLORSCALE (bt);
+    GstGLColorscale* colorscale = GST_GL_COLORSCALE (bt);
 
-  gst_gl_colorscale_reset (colorscale);
+    gst_gl_colorscale_reset (colorscale);
 
-  return TRUE;
+    return TRUE;
 }
 
-static GstCaps *
-gst_gl_colorscale_transform_caps (GstBaseTransform * bt,
-    GstPadDirection direction, GstCaps * caps)
+static GstCaps*
+gst_gl_colorscale_transform_caps (GstBaseTransform* bt,
+    GstPadDirection direction, GstCaps* caps)
 {
-  //GstGLColorscale* colorscale = GST_GL_COLORSCALE (bt);
-  GstStructure *structure = gst_caps_get_structure (caps, 0);
-  GstCaps *newcaps = gst_caps_new_simple ("video/x-raw-yuv", NULL);
-  GstCaps *newothercaps = gst_caps_new_simple ("video/x-raw-rgb", NULL);
-  const GValue *framerate_value = NULL;
-  const GValue *par_value = NULL;
+       //GstGLColorscale* colorscale = GST_GL_COLORSCALE (bt);
+       GstStructure* structure = gst_caps_get_structure (caps, 0);
+       GstCaps* newcaps = gst_caps_new_simple ("video/x-raw-yuv", NULL);
+    GstCaps* newothercaps = gst_caps_new_simple ("video/x-raw-rgb", NULL);
+       const GValue* framerate_value = NULL;
+       const GValue* par_value = NULL;
 
-  GST_DEBUG ("transform caps %" GST_PTR_FORMAT, caps);
+       GST_DEBUG ("transform caps %" GST_PTR_FORMAT, caps);
 
-  framerate_value = gst_structure_get_value (structure, "framerate");
-  par_value = gst_structure_get_value (structure, "pixel-aspect-ratio");
+    framerate_value = gst_structure_get_value (structure, "framerate");
+       par_value = gst_structure_get_value (structure, "pixel-aspect-ratio");
 
-  gst_caps_append (newcaps, newothercaps);
+    gst_caps_append(newcaps, newothercaps);
 
 
-  structure = gst_structure_copy (gst_caps_get_structure (newcaps, 0));
+    structure = gst_structure_copy (gst_caps_get_structure (newcaps, 0));
 
-  gst_structure_set (structure,
-      "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
-      "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
+    gst_structure_set (structure,
+        "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+        "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
 
-  gst_structure_set_value (structure, "framerate", framerate_value);
-  if (par_value)
-    gst_structure_set_value (structure, "pixel-aspect-ratio", par_value);
-  else
-    gst_structure_set (structure, "pixel-aspect-ratio", GST_TYPE_FRACTION,
-        1, 1, NULL);
+       gst_structure_set_value (structure, "framerate", framerate_value);
+       if (par_value)
+               gst_structure_set_value (structure, "pixel-aspect-ratio", par_value);
+       else
+               gst_structure_set (structure, "pixel-aspect-ratio", GST_TYPE_FRACTION,
+                                  1, 1, NULL);
 
-  gst_caps_merge_structure (newcaps, gst_structure_copy (structure));
+    gst_caps_merge_structure (newcaps, gst_structure_copy (structure));
 
-  GST_DEBUG ("new caps %" GST_PTR_FORMAT, newcaps);
+       GST_DEBUG ("new caps %" GST_PTR_FORMAT, newcaps);
 
-  return newcaps;
+       return newcaps;
 }
 
 /* from gst-plugins-base "videoscale" code */
 static void
-gst_gl_colorscale_fixate_caps (GstBaseTransform * base,
-    GstPadDirection direction, GstCaps * caps, GstCaps * othercaps)
+gst_gl_colorscale_fixate_caps (GstBaseTransform* base, GstPadDirection direction,
+    GstCaps* caps, GstCaps* othercaps)
 {
-  GstStructure *ins, *outs;
+    GstStructure *ins, *outs;
 
-  const GValue *from_par, *to_par;
+    const GValue *from_par, *to_par;
 
-  g_return_if_fail (gst_caps_is_fixed (caps));
+    g_return_if_fail (gst_caps_is_fixed (caps));
 
-  GST_DEBUG_OBJECT (base, "trying to fixate othercaps %" GST_PTR_FORMAT
+    GST_DEBUG_OBJECT (base, "trying to fixate othercaps %" GST_PTR_FORMAT
       " based on caps %" GST_PTR_FORMAT, othercaps, caps);
 
-  ins = gst_caps_get_structure (caps, 0);
-  outs = gst_caps_get_structure (othercaps, 0);
-
-  from_par = gst_structure_get_value (ins, "pixel-aspect-ratio");
-  to_par = gst_structure_get_value (outs, "pixel-aspect-ratio");
-
-  //we have both PAR but they might not be fixated
-  if (from_par && to_par) {
-    gint from_w, from_h, from_par_n, from_par_d, to_par_n, to_par_d;
-
-    gint count = 0, w = 0, h = 0;
-
-    guint num, den;
-
-    //from_par should be fixed
-    g_return_if_fail (gst_value_is_fixed (from_par));
-
-    from_par_n = gst_value_get_fraction_numerator (from_par);
-    from_par_d = gst_value_get_fraction_denominator (from_par);
-
-    //fixate the out PAR
-    if (!gst_value_is_fixed (to_par)) {
-      GST_DEBUG_OBJECT (base, "fixating to_par to %dx%d", from_par_n,
-          from_par_d);
-      gst_structure_fixate_field_nearest_fraction (outs, "pixel-aspect-ratio",
-          from_par_n, from_par_d);
+    ins = gst_caps_get_structure (caps, 0);
+    outs = gst_caps_get_structure (othercaps, 0);
+
+    from_par = gst_structure_get_value (ins, "pixel-aspect-ratio");
+    to_par = gst_structure_get_value (outs, "pixel-aspect-ratio");
+
+    //we have both PAR but they might not be fixated
+    if (from_par && to_par)
+    {
+        gint from_w, from_h, from_par_n, from_par_d, to_par_n, to_par_d;
+
+        gint count = 0, w = 0, h = 0;
+
+        guint num, den;
+
+        //from_par should be fixed
+        g_return_if_fail (gst_value_is_fixed (from_par));
+
+        from_par_n = gst_value_get_fraction_numerator (from_par);
+        from_par_d = gst_value_get_fraction_denominator (from_par);
+
+        //fixate the out PAR
+        if (!gst_value_is_fixed (to_par))
+        {
+          GST_DEBUG_OBJECT (base, "fixating to_par to %dx%d", from_par_n,
+              from_par_d);
+          gst_structure_fixate_field_nearest_fraction (outs, "pixel-aspect-ratio",
+              from_par_n, from_par_d);
+        }
+
+        to_par_n = gst_value_get_fraction_numerator (to_par);
+        to_par_d = gst_value_get_fraction_denominator (to_par);
+
+        //f both width and height are already fixed, we can't do anything
+        //about it anymore
+        if (gst_structure_get_int (outs, "width", &w))
+            ++count;
+        if (gst_structure_get_int (outs, "height", &h))
+            ++count;
+        if (count == 2)
+        {
+            GST_DEBUG_OBJECT (base, "dimensions already set to %dx%d, not fixating",
+                w, h);
+            return;
+        }
+
+        gst_structure_get_int (ins, "width", &from_w);
+        gst_structure_get_int (ins, "height", &from_h);
+
+        if (!gst_video_calculate_display_ratio (&num, &den, from_w, from_h,
+                from_par_n, from_par_d, to_par_n, to_par_d))
+        {
+          GST_ELEMENT_ERROR (base, CORE, NEGOTIATION, (NULL),
+              ("Error calculating the output scaled size - integer overflow"));
+          return;
+        }
+
+        GST_DEBUG_OBJECT (base,
+            "scaling input with %dx%d and PAR %d/%d to output PAR %d/%d",
+            from_w, from_h, from_par_n, from_par_d, to_par_n, to_par_d);
+        GST_DEBUG_OBJECT (base, "resulting output should respect ratio of %d/%d",
+            num, den);
+
+        //now find a width x height that respects this display ratio.
+        //prefer those that have one of w/h the same as the incoming video
+        //using wd / hd = num / den
+
+        //if one of the output width or height is fixed, we work from there
+        if (h)
+        {
+            GST_DEBUG_OBJECT (base, "height is fixed,scaling width");
+            w = (guint) gst_util_uint64_scale_int (h, num, den);
+        }
+        else if (w)
+        {
+            GST_DEBUG_OBJECT (base, "width is fixed, scaling height");
+            h = (guint) gst_util_uint64_scale_int (w, den, num);
+        }
+        else
+        {
+            //none of width or height is fixed, figure out both of them based only on
+            //the input width and height
+            //check hd / den is an integer scale factor, and scale wd with the PAR
+            if (from_h % den == 0)
+            {
+                GST_DEBUG_OBJECT (base, "keeping video height");
+                h = from_h;
+                w = (guint) gst_util_uint64_scale_int (h, num, den);
+            }
+            else if (from_w % num == 0)
+            {
+                GST_DEBUG_OBJECT (base, "keeping video width");
+                w = from_w;
+                h = (guint) gst_util_uint64_scale_int (w, den, num);
+            }
+            else
+            {
+                GST_DEBUG_OBJECT (base, "approximating but keeping video height");
+                h = from_h;
+                w = (guint) gst_util_uint64_scale_int (h, num, den);
+            }
+        }
+        GST_DEBUG_OBJECT (base, "scaling to %dx%d", w, h);
+
+        //now fixate
+        gst_structure_fixate_field_nearest_int (outs, "width", w);
+        gst_structure_fixate_field_nearest_int (outs, "height", h);
     }
-
-    to_par_n = gst_value_get_fraction_numerator (to_par);
-    to_par_d = gst_value_get_fraction_denominator (to_par);
-
-    //f both width and height are already fixed, we can't do anything
-    //about it anymore
-    if (gst_structure_get_int (outs, "width", &w))
-      ++count;
-    if (gst_structure_get_int (outs, "height", &h))
-      ++count;
-    if (count == 2) {
-      GST_DEBUG_OBJECT (base, "dimensions already set to %dx%d, not fixating",
-          w, h);
-      return;
+    else
+    {
+        gint width, height;
+
+        if (gst_structure_get_int (ins, "width", &width))
+        {
+          if (gst_structure_has_field (outs, "width"))
+            gst_structure_fixate_field_nearest_int (outs, "width", width);
+        }
+        if (gst_structure_get_int (ins, "height", &height)) {
+          if (gst_structure_has_field (outs, "height")) {
+            gst_structure_fixate_field_nearest_int (outs, "height", height);
+          }
+        }
     }
 
-    gst_structure_get_int (ins, "width", &from_w);
-    gst_structure_get_int (ins, "height", &from_h);
-
-    if (!gst_video_calculate_display_ratio (&num, &den, from_w, from_h,
-            from_par_n, from_par_d, to_par_n, to_par_d)) {
-      GST_ELEMENT_ERROR (base, CORE, NEGOTIATION, (NULL),
-          ("Error calculating the output scaled size - integer overflow"));
-      return;
-    }
-
-    GST_DEBUG_OBJECT (base,
-        "scaling input with %dx%d and PAR %d/%d to output PAR %d/%d",
-        from_w, from_h, from_par_n, from_par_d, to_par_n, to_par_d);
-    GST_DEBUG_OBJECT (base, "resulting output should respect ratio of %d/%d",
-        num, den);
-
-    //now find a width x height that respects this display ratio.
-    //prefer those that have one of w/h the same as the incoming video
-    //using wd / hd = num / den
-
-    //if one of the output width or height is fixed, we work from there
-    if (h) {
-      GST_DEBUG_OBJECT (base, "height is fixed,scaling width");
-      w = (guint) gst_util_uint64_scale_int (h, num, den);
-    } else if (w) {
-      GST_DEBUG_OBJECT (base, "width is fixed, scaling height");
-      h = (guint) gst_util_uint64_scale_int (w, den, num);
-    } else {
-      //none of width or height is fixed, figure out both of them based only on
-      //the input width and height
-      //check hd / den is an integer scale factor, and scale wd with the PAR
-      if (from_h % den == 0) {
-        GST_DEBUG_OBJECT (base, "keeping video height");
-        h = from_h;
-        w = (guint) gst_util_uint64_scale_int (h, num, den);
-      } else if (from_w % num == 0) {
-        GST_DEBUG_OBJECT (base, "keeping video width");
-        w = from_w;
-        h = (guint) gst_util_uint64_scale_int (w, den, num);
-      } else {
-        GST_DEBUG_OBJECT (base, "approximating but keeping video height");
-        h = from_h;
-        w = (guint) gst_util_uint64_scale_int (h, num, den);
-      }
-    }
-    GST_DEBUG_OBJECT (base, "scaling to %dx%d", w, h);
-
-    //now fixate
-    gst_structure_fixate_field_nearest_int (outs, "width", w);
-    gst_structure_fixate_field_nearest_int (outs, "height", h);
-  } else {
-    gint width, height;
-
-    if (gst_structure_get_int (ins, "width", &width)) {
-      if (gst_structure_has_field (outs, "width"))
-        gst_structure_fixate_field_nearest_int (outs, "width", width);
-    }
-    if (gst_structure_get_int (ins, "height", &height)) {
-      if (gst_structure_has_field (outs, "height")) {
-        gst_structure_fixate_field_nearest_int (outs, "height", height);
-      }
-    }
-  }
-
-  GST_DEBUG_OBJECT (base, "fixated othercaps to %" GST_PTR_FORMAT, othercaps);
+    GST_DEBUG_OBJECT (base, "fixated othercaps to %" GST_PTR_FORMAT, othercaps);
 }
 
 static gboolean
-gst_gl_colorscale_set_caps (GstBaseTransform * bt, GstCaps * incaps,
-    GstCaps * outcaps)
+gst_gl_colorscale_set_caps (GstBaseTransform* bt, GstCaps* incaps,
+    GstCaps* outcaps)
 {
-  GstGLColorscale *colorscale = GST_GL_COLORSCALE (bt);
-  gboolean ret = FALSE;
+    GstGLColorscale* colorscale = GST_GL_COLORSCALE (bt);
+    gboolean ret = FALSE;
 
-  GST_DEBUG ("called with %" GST_PTR_FORMAT, incaps);
+    GST_DEBUG ("called with %" GST_PTR_FORMAT, incaps);
 
-  ret = gst_video_format_parse_caps (outcaps, &colorscale->output_video_format,
-      &colorscale->output_video_width, &colorscale->output_video_height);
+    ret = gst_video_format_parse_caps (outcaps, &colorscale->output_video_format,
+        &colorscale->output_video_width, &colorscale->output_video_height);
 
-  ret |= gst_video_format_parse_caps (incaps, &colorscale->input_video_format,
-      &colorscale->input_video_width, &colorscale->input_video_height);
+    ret |= gst_video_format_parse_caps (incaps, &colorscale->input_video_format,
+        &colorscale->input_video_width, &colorscale->input_video_height);
 
-  if (!ret) {
-    GST_DEBUG ("bad caps");
-    return FALSE;
-  }
+    if (!ret)
+    {
+      GST_DEBUG ("bad caps");
+      return FALSE;
+    }
 
-  colorscale->display = gst_gl_display_new ();
+    colorscale->display = gst_gl_display_new ();
 
-  //init unvisible opengl context
-  gst_gl_display_create_context (colorscale->display,
-      colorscale->output_video_width, colorscale->output_video_height);
+    //init unvisible opengl context
+    gst_gl_display_create_context (colorscale->display,
+        colorscale->output_video_width, colorscale->output_video_height);
 
-  //blocking call, init colorspace conversion if needed
-  gst_gl_display_init_upload (colorscale->display,
-      colorscale->input_video_format, colorscale->output_video_width,
-      colorscale->output_video_height, colorscale->input_video_width,
-      colorscale->input_video_height);
+    //blocking call, init colorspace conversion if needed
+    gst_gl_display_init_upload (colorscale->display, colorscale->input_video_format,
+        colorscale->output_video_width, colorscale->output_video_height,
+        colorscale->input_video_width, colorscale->input_video_height);
 
-  //blocking call, init colorspace conversion if needed
-  gst_gl_display_init_download (colorscale->display,
-      colorscale->output_video_format, colorscale->output_video_width,
-      colorscale->output_video_height);
+    //blocking call, init colorspace conversion if needed
+    gst_gl_display_init_download (colorscale->display, colorscale->output_video_format,
+        colorscale->output_video_width, colorscale->output_video_height);
 
-  return ret;
+    return ret;
 }
 
 static gboolean
-gst_gl_colorscale_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
-    guint * size)
+gst_gl_colorscale_get_unit_size (GstBaseTransform* trans, GstCaps* caps,
+                               guint* size)
 {
-  gboolean ret;
-  GstStructure *structure;
-  gint width;
-  gint height;
-
-  structure = gst_caps_get_structure (caps, 0);
-  if (gst_structure_has_name (structure, "video/x-raw-gl")) {
-    ret = gst_gl_buffer_parse_caps (caps, &width, &height);
-    if (ret)
-      *size = gst_gl_buffer_get_size (width, height);
-  } else {
-    GstVideoFormat video_format;
-
-    ret = gst_video_format_parse_caps (caps, &video_format, &width, &height);
-    if (ret)
-      *size = gst_video_format_get_size (video_format, width, height);
-  }
-
-  return TRUE;
+    gboolean ret;
+    GstStructure *structure;
+    gint width;
+    gint height;
+
+    structure = gst_caps_get_structure (caps, 0);
+    if (gst_structure_has_name (structure, "video/x-raw-gl"))
+    {
+        ret = gst_gl_buffer_parse_caps (caps, &width, &height);
+        if (ret)
+            *size = gst_gl_buffer_get_size (width, height);
+    }
+    else
+    {
+        GstVideoFormat video_format;
+
+        ret = gst_video_format_parse_caps (caps, &video_format, &width, &height);
+        if (ret)
+            *size = gst_video_format_get_size (video_format, width, height);
+    }
+
+    return TRUE;
 }
 
 static GstFlowReturn
-gst_gl_colorscale_transform (GstBaseTransform * trans, GstBuffer * inbuf,
-    GstBuffer * outbuf)
+gst_gl_colorscale_transform (GstBaseTransform* trans, GstBuffer* inbuf,
+    GstBuffer* outbuf)
 {
-  GstGLColorscale *colorscale = GST_GL_COLORSCALE (trans);
-  gboolean isAlive = TRUE;
+    GstGLColorscale* colorscale = GST_GL_COLORSCALE (trans);
+    gboolean isAlive = TRUE;
 
-  //blocking call
-  GstGLBuffer *gl_temp_buffer = gst_gl_buffer_new (colorscale->display,
-      colorscale->output_video_width, colorscale->output_video_height);
+    //blocking call
+    GstGLBuffer* gl_temp_buffer = gst_gl_buffer_new (colorscale->display,
+        colorscale->output_video_width, colorscale->output_video_height);
 
-  GST_DEBUG ("input size %p size %d",
-      GST_BUFFER_DATA (inbuf), GST_BUFFER_SIZE (inbuf));
+    GST_DEBUG ("input size %p size %d",
+        GST_BUFFER_DATA (inbuf), GST_BUFFER_SIZE (inbuf));
 
-  //blocking call
-  isAlive =
-      gst_gl_display_do_upload (colorscale->display, gl_temp_buffer->texture,
-      colorscale->input_video_width, colorscale->input_video_height,
-      GST_BUFFER_DATA (inbuf));
+    //blocking call
+    isAlive = gst_gl_display_do_upload (colorscale->display, gl_temp_buffer->texture,
+        colorscale->input_video_width, colorscale->input_video_height,
+        GST_BUFFER_DATA (inbuf));
 
-  GST_DEBUG ("output size %p size %d",
+    GST_DEBUG ("output size %p size %d",
       GST_BUFFER_DATA (outbuf), GST_BUFFER_SIZE (outbuf));
 
-  //blocking call
-  isAlive &=
-      gst_gl_display_do_download (colorscale->display, gl_temp_buffer->texture,
-      gl_temp_buffer->width, gl_temp_buffer->height, GST_BUFFER_DATA (outbuf));
+    //blocking call
+    isAlive &= gst_gl_display_do_download(colorscale->display, gl_temp_buffer->texture,
+        gl_temp_buffer->width, gl_temp_buffer->height,
+        GST_BUFFER_DATA (outbuf));
 
-  gst_buffer_unref (gl_temp_buffer);
+    gst_buffer_unref (gl_temp_buffer);
 
-  if (isAlive)
-    return GST_FLOW_OK;
-  else
-    return GST_FLOW_UNEXPECTED;
+    if (isAlive)
+        return GST_FLOW_OK;
+    else
+        return GST_FLOW_UNEXPECTED;
 }
index e6456ee..103ca1c 100644 (file)
@@ -52,7 +52,7 @@ struct _GstGLDifferenceMatte
   GstGLFilter filter;
 
   GstGLShader *shader[4];
-
+  
   gchar *location;
   gboolean bg_has_changed;
 
@@ -78,24 +78,24 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
   GST_DEBUG_CATEGORY_INIT (gst_gl_differencematte_debug, "gldifferencematte", 0, "gldifferencematte element");
 
 GST_BOILERPLATE_FULL (GstGLDifferenceMatte, gst_gl_differencematte, GstGLFilter,
-    GST_TYPE_GL_FILTER, DEBUG_INIT);
+                     GST_TYPE_GL_FILTER, DEBUG_INIT);
 
-static void gst_gl_differencematte_set_property (GObject * object,
-    guint prop_id, const GValue * value, GParamSpec * pspec);
-static void gst_gl_differencematte_get_property (GObject * object,
-    guint prop_id, GValue * value, GParamSpec * pspec);
+static void gst_gl_differencematte_set_property (GObject * object, guint prop_id,
+                                        const GValue * value, GParamSpec * pspec);
+static void gst_gl_differencematte_get_property (GObject * object, guint prop_id,
+                                        GValue * value, GParamSpec * pspec);
 
-static void gst_gl_differencematte_init_resources (GstGLFilter * filter);
-static void gst_gl_differencematte_reset_resources (GstGLFilter * filter);
+static void gst_gl_differencematte_init_resources (GstGLFilter* filter);
+static void gst_gl_differencematte_reset_resources (GstGLFilter* filter);
 
 static gboolean gst_gl_differencematte_filter (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf);
+                                      GstGLBuffer * inbuf, GstGLBuffer * outbuf);
 
-static const GstElementDetails element_details =
-GST_ELEMENT_DETAILS ("Gstreamer OpenGL DifferenceMatte",
-    "Filter/Effect",
-    "Saves a background frame and replace it with a pixbuf",
-    "Filippo Argiolas <filippo.argiolas@gmail.com>");
+static const GstElementDetails element_details = GST_ELEMENT_DETAILS (
+  "Gstreamer OpenGL DifferenceMatte",
+  "Filter/Effect",
+  "Saves a background frame and replace it with a pixbuf",
+  "Filippo Argiolas <filippo.argiolas@gmail.com>");
 
 enum
 {
@@ -106,49 +106,53 @@ enum
 
 /* init resources that need a gl context */
 static void
-gst_gl_differencematte_init_gl_resources (GstGLFilter * filter)
+gst_gl_differencematte_init_gl_resources (GstGLFilter *filter)
 {
   GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (filter);
   gint i;
 
-  for (i = 0; i < 4; i++) {
+  for (i=0; i<4; i++) {
     glGenTextures (1, &differencematte->midtexture[i]);
-    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, differencematte->midtexture[i]);
-    glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-        filter->width, filter->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-        GL_LINEAR);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-        GL_LINEAR);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-        GL_CLAMP_TO_EDGE);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-        GL_CLAMP_TO_EDGE);
+    glBindTexture(GL_TEXTURE_RECTANGLE_ARB, differencematte->midtexture[i]);
+    glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+                filter->width, filter->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 
     differencematte->shader[i] = gst_gl_shader_new ();
   }
 
-  g_return_if_fail (gst_gl_shader_compile_and_check (differencematte->shader[0],
-          difference_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
-  g_return_if_fail (gst_gl_shader_compile_and_check (differencematte->shader[1],
-          hconv9_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (differencematte->shader[2],
-          vconv9_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
-
-  g_return_if_fail (gst_gl_shader_compile_and_check (differencematte->shader[3],
-          texture_interp_fragment_source, GST_GL_SHADER_FRAGMENT_SOURCE));
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (differencematte->shader[0],
+                                     difference_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (differencematte->shader[1],
+                                     hconv9_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (differencematte->shader[2],
+                                     vconv9_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
+  
+  g_return_if_fail (
+    gst_gl_shader_compile_and_check (differencematte->shader[3],
+                                     texture_interp_fragment_source,
+                                    GST_GL_SHADER_FRAGMENT_SOURCE));
 }
 
 /* free resources that need a gl context */
 static void
-gst_gl_differencematte_reset_gl_resources (GstGLFilter * filter)
+gst_gl_differencematte_reset_gl_resources (GstGLFilter *filter)
 {
   GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (filter);
   gint i;
-
+  
   glDeleteTextures (1, &differencematte->savedbgtexture);
   glDeleteTextures (1, &differencematte->newbgtexture);
-  for (i = 0; i < 4; i++) {
+  for (i=0; i<4; i++) {
     g_object_unref (differencematte->shader[i]);
     differencematte->shader[i] = NULL;
     glDeleteTextures (1, &differencematte->midtexture[i]);
@@ -178,23 +182,21 @@ gst_gl_differencematte_class_init (GstGLDifferenceMatteClass * klass)
   gobject_class->get_property = gst_gl_differencematte_get_property;
 
   GST_GL_FILTER_CLASS (klass)->filter = gst_gl_differencematte_filter;
-  GST_GL_FILTER_CLASS (klass)->display_init_cb =
-      gst_gl_differencematte_init_gl_resources;
-  GST_GL_FILTER_CLASS (klass)->display_reset_cb =
-      gst_gl_differencematte_reset_gl_resources;
+  GST_GL_FILTER_CLASS (klass)->display_init_cb = gst_gl_differencematte_init_gl_resources;
+  GST_GL_FILTER_CLASS (klass)->display_reset_cb = gst_gl_differencematte_reset_gl_resources;
   GST_GL_FILTER_CLASS (klass)->onStart = gst_gl_differencematte_init_resources;
   GST_GL_FILTER_CLASS (klass)->onStop = gst_gl_differencematte_reset_resources;
 
   g_object_class_install_property (gobject_class,
-      PROP_LOCATION,
-      g_param_spec_string ("location",
-          "Background image location",
-          "Background image location", NULL, G_PARAM_READWRITE));
+                                   PROP_LOCATION,
+                                   g_param_spec_string ("location",
+                                                        "Background image location", 
+                                                        "Background image location",
+                                                        NULL, G_PARAM_READWRITE));
 }
 
 void
-gst_gl_differencematte_draw_texture (GstGLDifferenceMatte * differencematte,
-    GLuint tex)
+gst_gl_differencematte_draw_texture (GstGLDifferenceMatte * differencematte, GLuint tex)
 {
   GstGLFilter *filter = GST_GL_FILTER (differencematte);
 
@@ -206,19 +208,19 @@ gst_gl_differencematte_draw_texture (GstGLDifferenceMatte * differencematte,
 
   glTexCoord2f (0.0, 0.0);
   glVertex2f (-1.0, -1.0);
-  glTexCoord2f ((gfloat) filter->width, 0.0);
+  glTexCoord2f ((gfloat)filter->width, 0.0);
   glVertex2f (1.0, -1.0);
-  glTexCoord2f ((gfloat) filter->width, (gfloat) filter->height);
+  glTexCoord2f ((gfloat)filter->width, (gfloat)filter->height);
   glVertex2f (1.0, 1.0);
-  glTexCoord2f (0.0, (gfloat) filter->height);
+  glTexCoord2f (0.0, (gfloat)filter->height);
   glVertex2f (-1.0, 1.0);
 
   glEnd ();
 }
 
 static void
-gst_gl_differencematte_init (GstGLDifferenceMatte * differencematte,
-    GstGLDifferenceMatteClass * klass)
+gst_gl_differencematte_init (GstGLDifferenceMatte * differencematte, 
+                           GstGLDifferenceMatteClass * klass)
 {
   differencematte->shader[0] = NULL;
   differencematte->shader[1] = NULL;
@@ -232,7 +234,7 @@ gst_gl_differencematte_init (GstGLDifferenceMatte * differencematte,
 }
 
 static void
-gst_gl_differencematte_reset_resources (GstGLFilter * filter)
+gst_gl_differencematte_reset_resources (GstGLFilter* filter)
 {
 //  GstGLDifferenceMatte* differencematte = GST_GL_DIFFERENCEMATTE(filter);
 }
@@ -241,18 +243,17 @@ static void
 gst_gl_differencematte_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (object);
+  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (object); 
 
   switch (prop_id) {
-    case PROP_LOCATION:
-      if (differencematte->location != NULL)
-        g_free (differencematte->location);
-      differencematte->bg_has_changed = TRUE;
-      differencematte->location = g_value_dup_string (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  case PROP_LOCATION:
+    if (differencematte->location != NULL) g_free (differencematte->location);
+    differencematte->bg_has_changed = TRUE;
+    differencematte->location = g_value_dup_string (value);
+    break;
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
@@ -263,69 +264,62 @@ gst_gl_differencematte_get_property (GObject * object, guint prop_id,
   GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (object);
 
   switch (prop_id) {
-    case PROP_LOCATION:
-      g_value_set_string (value, differencematte->location);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  case PROP_LOCATION:
+    g_value_set_string (value, differencematte->location);
+    break;
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
-gst_gl_differencematte_init_resources (GstGLFilter * filter)
+gst_gl_differencematte_init_resources (GstGLFilter* filter)
 {
 //  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (filter);
 }
 
 static void
-gst_gl_differencematte_save_texture (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_differencematte_save_texture (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (stuff);
-
+  GstGLDifferenceMattedifferencematte = GST_GL_DIFFERENCEMATTE (stuff);
+  
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
 
   gst_gl_differencematte_draw_texture (differencematte, texture);
 }
 
-static void
-init_pixbuf_texture (GstGLDisplay * display, gpointer data)
+static void init_pixbuf_texture (GstGLDisplay *display, gpointer data)
 {
   GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (data);
   GstGLFilter *filter = GST_GL_FILTER (data);
-
+  
   glDeleteTextures (1, &differencematte->newbgtexture);
   glGenTextures (1, &differencematte->newbgtexture);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, differencematte->newbgtexture);
   glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA,
-      filter->width, filter->height, 0,
-      gdk_pixbuf_get_has_alpha (differencematte->pixbuf) ? GL_RGBA : GL_RGB,
-      GL_UNSIGNED_BYTE, gdk_pixbuf_get_pixels (differencematte->pixbuf));
+                filter->width, filter->height, 0,
+                gdk_pixbuf_get_has_alpha (differencematte->pixbuf) ? GL_RGBA : GL_RGB,
+                GL_UNSIGNED_BYTE, gdk_pixbuf_get_pixels (differencematte->pixbuf));
 
   if (differencematte->savedbgtexture == 0) {
     glGenTextures (1, &differencematte->savedbgtexture);
-    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, differencematte->savedbgtexture);
-    glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-        filter->width, filter->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-        GL_LINEAR);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-        GL_LINEAR);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-        GL_CLAMP_TO_EDGE);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-        GL_CLAMP_TO_EDGE);
+    glBindTexture(GL_TEXTURE_RECTANGLE_ARB, differencematte->savedbgtexture);
+    glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+                 filter->width, filter->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
   }
 }
 
 static void
-gst_gl_differencematte_diff (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_differencematte_diff (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (stuff);
-
+  GstGLDifferenceMattedifferencematte = GST_GL_DIFFERENCEMATTE (stuff);
+  
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
 
@@ -334,8 +328,8 @@ gst_gl_differencematte_diff (gint width, gint height, guint texture,
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-  glDisable (GL_TEXTURE_RECTANGLE_ARB);
-
+  glDisable(GL_TEXTURE_RECTANGLE_ARB);
+  
   gst_gl_shader_set_uniform_1i (differencematte->shader[0], "current", 0);
 
   glActiveTexture (GL_TEXTURE1);
@@ -349,16 +343,15 @@ gst_gl_differencematte_diff (gint width, gint height, guint texture,
 }
 
 static void
-gst_gl_differencematte_hblur (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_differencematte_hblur (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (stuff);
-  gfloat gauss_kernel[9] = {
+  GstGLDifferenceMattedifferencematte = GST_GL_DIFFERENCEMATTE (stuff);
+  gfloat gauss_kernel[9] = { 
     0.026995f, 0.064759f, 0.120985f,
     0.176033f, 0.199471f, 0.176033f,
     0.120985f, 0.064759f, 0.026995f
   };
-
+  
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
 
@@ -367,31 +360,27 @@ gst_gl_differencematte_hblur (gint width, gint height, guint texture,
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-  glDisable (GL_TEXTURE_RECTANGLE_ARB);
-
+  glDisable(GL_TEXTURE_RECTANGLE_ARB);
+  
   gst_gl_shader_set_uniform_1i (differencematte->shader[1], "tex", 0);
 
-  gst_gl_shader_set_uniform_1fv (differencematte->shader[1], "kernel", 9,
-      gauss_kernel);
-  gst_gl_shader_set_uniform_1f (differencematte->shader[1], "norm_const",
-      0.977016f);
-  gst_gl_shader_set_uniform_1f (differencematte->shader[1], "norm_offset",
-      0.0f);
+  gst_gl_shader_set_uniform_1fv (differencematte->shader[1], "kernel", 9, gauss_kernel);
+  gst_gl_shader_set_uniform_1f (differencematte->shader[1], "norm_const", 0.977016f);
+  gst_gl_shader_set_uniform_1f (differencematte->shader[1], "norm_offset", 0.0f);
 
   gst_gl_differencematte_draw_texture (differencematte, texture);
 }
 
 static void
-gst_gl_differencematte_vblur (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_differencematte_vblur (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (stuff);
-  gfloat gauss_kernel[9] = {
+  GstGLDifferenceMattedifferencematte = GST_GL_DIFFERENCEMATTE (stuff);
+  gfloat gauss_kernel[9] = { 
     0.026995f, 0.064759f, 0.120985f,
     0.176033f, 0.199471f, 0.176033f,
     0.120985f, 0.064759f, 0.026995f
   };
-
+  
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
 
@@ -400,26 +389,22 @@ gst_gl_differencematte_vblur (gint width, gint height, guint texture,
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-  glDisable (GL_TEXTURE_RECTANGLE_ARB);
+  glDisable(GL_TEXTURE_RECTANGLE_ARB);
 
   gst_gl_shader_set_uniform_1i (differencematte->shader[2], "tex", 0);
 
-  gst_gl_shader_set_uniform_1fv (differencematte->shader[2], "kernel", 9,
-      gauss_kernel);
-  gst_gl_shader_set_uniform_1f (differencematte->shader[2], "norm_const",
-      0.977016f);
-  gst_gl_shader_set_uniform_1f (differencematte->shader[2], "norm_offset",
-      0.0f);
-
+  gst_gl_shader_set_uniform_1fv (differencematte->shader[2], "kernel", 9, gauss_kernel);
+  gst_gl_shader_set_uniform_1f (differencematte->shader[2], "norm_const", 0.977016f);
+  gst_gl_shader_set_uniform_1f (differencematte->shader[2], "norm_offset", 0.0f);
+  
   gst_gl_differencematte_draw_texture (differencematte, texture);
 }
 
 static void
-gst_gl_differencematte_interp (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_differencematte_interp (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (stuff);
-
+  GstGLDifferenceMattedifferencematte = GST_GL_DIFFERENCEMATTE (stuff);
+  
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
 
@@ -428,8 +413,8 @@ gst_gl_differencematte_interp (gint width, gint height, guint texture,
   glActiveTexture (GL_TEXTURE0);
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-  glDisable (GL_TEXTURE_RECTANGLE_ARB);
-
+  glDisable(GL_TEXTURE_RECTANGLE_ARB);
+  
   gst_gl_shader_set_uniform_1i (differencematte->shader[3], "blend", 0);
 
   glActiveTexture (GL_TEXTURE1);
@@ -450,11 +435,10 @@ gst_gl_differencematte_interp (gint width, gint height, guint texture,
 }
 
 static void
-gst_gl_differencematte_identity (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_differencematte_identity (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (stuff);
-
+  GstGLDifferenceMattedifferencematte = GST_GL_DIFFERENCEMATTE (stuff);
+  
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
 
@@ -462,10 +446,10 @@ gst_gl_differencematte_identity (gint width, gint height, guint texture,
 }
 
 static gboolean
-gst_gl_differencematte_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
-    GstGLBuffer * outbuf)
+gst_gl_differencematte_filter (GstGLFilter* filter, GstGLBuffer* inbuf,
+                               GstGLBuffer* outbuf)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (filter);
+  GstGLDifferenceMatte* differencematte = GST_GL_DIFFERENCEMATTE(filter);
   GdkPixbuf *pixbuf;
   GError *error = NULL;
 
@@ -475,47 +459,50 @@ gst_gl_differencematte_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
     pixbuf = gdk_pixbuf_new_from_file (differencematte->location, &error);
     if (pixbuf) {
       differencematte->pixbuf = gdk_pixbuf_scale_simple (pixbuf,
-          filter->width, filter->height, GDK_INTERP_BILINEAR);
+                                                         filter->width,
+                                                         filter->height,
+                                                         GDK_INTERP_BILINEAR);
       gdk_pixbuf_unref (pixbuf);
       if (differencematte->pixbuf != NULL) {
-        gst_gl_display_thread_add (filter->display, init_pixbuf_texture,
-            differencematte);
+        gst_gl_display_thread_add (filter->display, init_pixbuf_texture, differencematte);
         /* save current frame, needed to calculate difference between
          * this frame and next ones */
-        gst_gl_filter_render_to_target (filter, inbuf->texture,
-            differencematte->savedbgtexture,
-            gst_gl_differencematte_save_texture, differencematte);
+        gst_gl_filter_render_to_target (filter, inbuf->texture, 
+                                        differencematte->savedbgtexture,
+                                        gst_gl_differencematte_save_texture,
+                                        differencematte);
         gdk_pixbuf_unref (differencematte->pixbuf);
       }
     } else {
       if (error != NULL && error->message != NULL)
-        g_warning ("unable to load %s: %s", differencematte->location,
-            error->message);
+        g_warning ("unable to load %s: %s", differencematte->location, error->message);
     }
     differencematte->bg_has_changed = FALSE;
   }
 
   if (differencematte->savedbgtexture != 0) {
     gst_gl_filter_render_to_target (filter,
-        inbuf->texture,
-        differencematte->midtexture[0],
-        gst_gl_differencematte_diff, differencematte);
-    gst_gl_filter_render_to_target (filter,
-        differencematte->midtexture[0],
-        differencematte->midtexture[1],
-        gst_gl_differencematte_hblur, differencematte);
-    gst_gl_filter_render_to_target (filter,
-        differencematte->midtexture[1],
-        differencematte->midtexture[2],
-        gst_gl_differencematte_vblur, differencematte);
-    gst_gl_filter_render_to_target (filter,
-        inbuf->texture,
-        outbuf->texture, gst_gl_differencematte_interp, differencematte);
+                                    inbuf->texture, 
+                                    differencematte->midtexture[0],
+                                    gst_gl_differencematte_diff, differencematte);
+    gst_gl_filter_render_to_target (filter, 
+                                    differencematte->midtexture[0],
+                                    differencematte->midtexture[1],
+                                    gst_gl_differencematte_hblur, differencematte);
+    gst_gl_filter_render_to_target (filter, 
+                                    differencematte->midtexture[1],
+                                    differencematte->midtexture[2],
+                                    gst_gl_differencematte_vblur, differencematte);
+    gst_gl_filter_render_to_target (filter, 
+                                    inbuf->texture,
+                                    outbuf->texture,
+                                    gst_gl_differencematte_interp, differencematte);
   } else {
-    gst_gl_filter_render_to_target (filter,
-        inbuf->texture,
-        outbuf->texture, gst_gl_differencematte_identity, differencematte);
+    gst_gl_filter_render_to_target (filter, 
+                                    inbuf->texture,
+                                    outbuf->texture,
+                                    gst_gl_differencematte_identity, differencematte);
   }
-
+    
   return TRUE;
 }
index d1f0506..686c093 100644 (file)
 #include "gstgldownload.h"
 
 #define GST_CAT_DEFAULT gst_gl_download_debug
-GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+       GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
 static const GstElementDetails element_details =
-GST_ELEMENT_DETAILS ("OpenGL video maker",
-    "Filter/Effect",
-    "A from GL to video flow filter",
-    "Julien Isorce <julien.isorce@gmail.com>");
+    GST_ELEMENT_DETAILS ("OpenGL video maker",
+        "Filter/Effect",
+        "A from GL to video flow filter",
+        "Julien Isorce <julien.isorce@gmail.com>");
 
 static GstStaticPadTemplate gst_gl_download_src_pad_template =
     GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR ";"
+    GST_STATIC_CAPS (
+        GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR ";"
         GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx ";"
         GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR ";"
         GST_VIDEO_CAPS_RGBA ";" GST_VIDEO_CAPS_BGRA ";"
@@ -95,7 +96,7 @@ GST_STATIC_PAD_TEMPLATE ("sink",
 
 enum
 {
-  PROP_0
+    PROP_0
 };
 
 #define DEBUG_INIT(bla) \
@@ -104,246 +105,255 @@ enum
 GST_BOILERPLATE_FULL (GstGLDownload, gst_gl_download, GstBaseTransform,
     GST_TYPE_BASE_TRANSFORM, DEBUG_INIT);
 
-static void gst_gl_download_set_property (GObject * object, guint prop_id,
+static void gst_gl_download_set_property (GObject* object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
-static void gst_gl_download_get_property (GObject * object, guint prop_id,
+static void gst_gl_download_get_property (GObject* object, guint prop_id,
     GValue * value, GParamSpec * pspec);
 
-static void gst_gl_download_reset (GstGLDownload * download);
-static gboolean gst_gl_download_set_caps (GstBaseTransform * bt,
-    GstCaps * incaps, GstCaps * outcaps);
-static GstCaps *gst_gl_download_transform_caps (GstBaseTransform * bt,
-    GstPadDirection direction, GstCaps * caps);
-static gboolean gst_gl_download_start (GstBaseTransform * bt);
-static gboolean gst_gl_download_stop (GstBaseTransform * bt);
-static GstFlowReturn gst_gl_download_transform (GstBaseTransform * trans,
-    GstBuffer * inbuf, GstBuffer * outbuf);
-static gboolean gst_gl_download_get_unit_size (GstBaseTransform * trans,
-    GstCaps * caps, guint * size);
+static void gst_gl_download_reset (GstGLDownload* download);
+static gboolean gst_gl_download_set_caps (GstBaseTransform* bt,
+    GstCaps* incaps, GstCaps* outcaps);
+static GstCaps* gst_gl_download_transform_caps (GstBaseTransform* bt,
+    GstPadDirection direction, GstCaps* caps);
+static gboolean gst_gl_download_start (GstBaseTransform* bt);
+static gboolean gst_gl_download_stop (GstBaseTransform* bt);
+static GstFlowReturn gst_gl_download_transform (GstBaseTransform* trans,
+    GstBuffer* inbuf, GstBuffer* outbuf);
+static gboolean gst_gl_download_get_unit_size (GstBaseTransform* trans, GstCaps* caps,
+    guint* size);
 
 
 static void
 gst_gl_download_base_init (gpointer klass)
 {
-  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+    GstElementClass* element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_set_details (element_class, &element_details);
+    gst_element_class_set_details (element_class, &element_details);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_download_src_pad_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_download_sink_pad_template));
+    gst_element_class_add_pad_template (element_class,
+        gst_static_pad_template_get (&gst_gl_download_src_pad_template));
+    gst_element_class_add_pad_template (element_class,
+        gst_static_pad_template_get (&gst_gl_download_sink_pad_template));
 }
 
 
 static void
-gst_gl_download_class_init (GstGLDownloadClass * klass)
+gst_gl_download_class_init (GstGLDownloadClass* klass)
 {
-  GObjectClass *gobject_class;
-
-  gobject_class = (GObjectClass *) klass;
-  gobject_class->set_property = gst_gl_download_set_property;
-  gobject_class->get_property = gst_gl_download_get_property;
-
-  GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
-      gst_gl_download_transform_caps;
-  GST_BASE_TRANSFORM_CLASS (klass)->transform = gst_gl_download_transform;
-  GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_download_start;
-  GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_download_stop;
-  GST_BASE_TRANSFORM_CLASS (klass)->set_caps = gst_gl_download_set_caps;
-  GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size =
-      gst_gl_download_get_unit_size;
+    GObjectClass* gobject_class;
+
+    gobject_class = (GObjectClass *) klass;
+    gobject_class->set_property = gst_gl_download_set_property;
+    gobject_class->get_property = gst_gl_download_get_property;
+
+    GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
+        gst_gl_download_transform_caps;
+    GST_BASE_TRANSFORM_CLASS (klass)->transform = gst_gl_download_transform;
+    GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_download_start;
+    GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_download_stop;
+    GST_BASE_TRANSFORM_CLASS (klass)->set_caps = gst_gl_download_set_caps;
+    GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size =
+        gst_gl_download_get_unit_size;
 }
 
 
 static void
-gst_gl_download_init (GstGLDownload * download, GstGLDownloadClass * klass)
+gst_gl_download_init (GstGLDownload* download, GstGLDownloadClass* klass)
 {
-  gst_gl_download_reset (download);
+    gst_gl_download_reset (download);
 }
 
 
 static void
-gst_gl_download_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
+gst_gl_download_set_property (GObject* object, guint prop_id,
+    const GValue* value, GParamSpec* pspec)
 {
-  //GstGLDownload *download = GST_GL_DOWNLOAD (object);
-
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
+    //GstGLDownload *download = GST_GL_DOWNLOAD (object);
+
+    switch (prop_id)
+    {
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
+    }
 }
 
 
 static void
-gst_gl_download_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
+gst_gl_download_get_property (GObject* object, guint prop_id,
+    GValue* value, GParamSpec* pspec)
 {
-  //GstGLDownload *download = GST_GL_DOWNLOAD (object);
+    //GstGLDownload *download = GST_GL_DOWNLOAD (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
+    switch (prop_id) {
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
+    }
 }
 
 
 static void
-gst_gl_download_reset (GstGLDownload * download)
+gst_gl_download_reset (GstGLDownload* download)
 {
-  if (download->display) {
-    g_object_unref (download->display);
-    download->display = NULL;
-  }
+    if (download->display)
+    {
+        g_object_unref (download->display);
+        download->display = NULL;
+    }
 }
 
 
 static gboolean
-gst_gl_download_start (GstBaseTransform * bt)
+gst_gl_download_start (GstBaseTransform* bt)
 {
-  //GstGLDownload* download = GST_GL_DOWNLOAD (bt);
+    //GstGLDownload* download = GST_GL_DOWNLOAD (bt);
 
-  return TRUE;
+    return TRUE;
 }
 
 static gboolean
-gst_gl_download_stop (GstBaseTransform * bt)
+gst_gl_download_stop (GstBaseTransform* bt)
 {
-  GstGLDownload *download = GST_GL_DOWNLOAD (bt);
+    GstGLDownload* download = GST_GL_DOWNLOAD (bt);
 
-  gst_gl_download_reset (download);
+    gst_gl_download_reset (download);
 
-  return TRUE;
+    return TRUE;
 }
 
-static GstCaps *
+static GstCaps*
 gst_gl_download_transform_caps (GstBaseTransform * bt,
-    GstPadDirection direction, GstCaps * caps)
+    GstPadDirection direction, GstCaps* caps)
 {
-  GstGLDownload *download;
-  GstStructure *structure;
-  GstCaps *newcaps, *newothercaps;
-  GstStructure *newstruct;
-  const GValue *width_value;
-  const GValue *height_value;
-  const GValue *framerate_value;
-  const GValue *par_value;
-
-  download = GST_GL_DOWNLOAD (bt);
-
-  GST_DEBUG ("transform caps %" GST_PTR_FORMAT, caps);
-
-  structure = gst_caps_get_structure (caps, 0);
-
-  width_value = gst_structure_get_value (structure, "width");
-  height_value = gst_structure_get_value (structure, "height");
-  framerate_value = gst_structure_get_value (structure, "framerate");
-  par_value = gst_structure_get_value (structure, "pixel-aspect-ratio");
-
-  if (direction == GST_PAD_SINK) {
-    newothercaps = gst_caps_new_simple ("video/x-raw-rgb", NULL);
-    newstruct = gst_caps_get_structure (newothercaps, 0);
+    GstGLDownload* download;
+    GstStructure* structure;
+    GstCaps *newcaps, *newothercaps;
+    GstStructure* newstruct;
+    const GValue* width_value;
+    const GValue* height_value;
+    const GValue* framerate_value;
+    const GValue* par_value;
+
+    download = GST_GL_DOWNLOAD (bt);
+
+    GST_DEBUG ("transform caps %" GST_PTR_FORMAT, caps);
+
+    structure = gst_caps_get_structure (caps, 0);
+
+    width_value = gst_structure_get_value (structure, "width");
+    height_value = gst_structure_get_value (structure, "height");
+    framerate_value = gst_structure_get_value (structure, "framerate");
+    par_value = gst_structure_get_value (structure, "pixel-aspect-ratio");
+
+    if (direction == GST_PAD_SINK)
+    {
+           newothercaps = gst_caps_new_simple ("video/x-raw-rgb", NULL);
+           newstruct = gst_caps_get_structure (newothercaps, 0);
+           gst_structure_set_value (newstruct, "width", width_value);
+           gst_structure_set_value (newstruct, "height", height_value);
+           gst_structure_set_value (newstruct, "framerate", framerate_value);
+           if (par_value)
+                   gst_structure_set_value (newstruct, "pixel-aspect-ratio", par_value);
+           else
+                   gst_structure_set (newstruct, "pixel-aspect-ratio", GST_TYPE_FRACTION,
+                                                      1, 1, NULL);
+           newcaps = gst_caps_new_simple ("video/x-raw-yuv", NULL);
+           gst_caps_append(newcaps, newothercaps);
+    }
+    else newcaps = gst_caps_new_simple ("video/x-raw-gl", NULL);
+
+    newstruct = gst_caps_get_structure (newcaps, 0);
     gst_structure_set_value (newstruct, "width", width_value);
     gst_structure_set_value (newstruct, "height", height_value);
     gst_structure_set_value (newstruct, "framerate", framerate_value);
     if (par_value)
-      gst_structure_set_value (newstruct, "pixel-aspect-ratio", par_value);
+           gst_structure_set_value (newstruct, "pixel-aspect-ratio", par_value);
     else
-      gst_structure_set (newstruct, "pixel-aspect-ratio", GST_TYPE_FRACTION,
-          1, 1, NULL);
-    newcaps = gst_caps_new_simple ("video/x-raw-yuv", NULL);
-    gst_caps_append (newcaps, newothercaps);
-  } else
-    newcaps = gst_caps_new_simple ("video/x-raw-gl", NULL);
-
-  newstruct = gst_caps_get_structure (newcaps, 0);
-  gst_structure_set_value (newstruct, "width", width_value);
-  gst_structure_set_value (newstruct, "height", height_value);
-  gst_structure_set_value (newstruct, "framerate", framerate_value);
-  if (par_value)
-    gst_structure_set_value (newstruct, "pixel-aspect-ratio", par_value);
-  else
-    gst_structure_set (newstruct, "pixel-aspect-ratio", GST_TYPE_FRACTION,
-        1, 1, NULL);
-
-  GST_DEBUG ("new caps %" GST_PTR_FORMAT, newcaps);
-
-  return newcaps;
+           gst_structure_set (newstruct, "pixel-aspect-ratio", GST_TYPE_FRACTION,
+                              1, 1, NULL);
+
+    GST_DEBUG ("new caps %" GST_PTR_FORMAT, newcaps);
+
+    return newcaps;
 }
 
 static gboolean
-gst_gl_download_set_caps (GstBaseTransform * bt, GstCaps * incaps,
-    GstCaps * outcaps)
+gst_gl_download_set_caps (GstBaseTransform* bt, GstCaps* incaps,
+    GstCaps* outcaps)
 {
-  GstGLDownload *download;
-  gboolean ret;
+    GstGLDownload* download;
+    gboolean ret;
 
-  download = GST_GL_DOWNLOAD (bt);
+    download = GST_GL_DOWNLOAD (bt);
 
-  GST_DEBUG ("called with %" GST_PTR_FORMAT, incaps);
+    GST_DEBUG ("called with %" GST_PTR_FORMAT, incaps);
 
-  ret = gst_video_format_parse_caps (outcaps, &download->video_format,
-      &download->width, &download->height);
+    ret = gst_video_format_parse_caps (outcaps, &download->video_format,
+        &download->width, &download->height);
 
-  if (!ret) {
-    GST_ERROR ("bad caps");
-    return FALSE;
-  }
+    if (!ret)
+    {
+        GST_ERROR ("bad caps");
+        return FALSE;
+    }
 
-  return ret;
+    return ret;
 }
 
 static gboolean
-gst_gl_download_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
-    guint * size)
+gst_gl_download_get_unit_size (GstBaseTransform* trans, GstCaps* caps,
+    guint* size)
 {
-  gboolean ret;
-  GstStructure *structure;
-  gint width;
-  gint height;
-
-  structure = gst_caps_get_structure (caps, 0);
-  if (gst_structure_has_name (structure, "video/x-raw-gl")) {
-    ret = gst_gl_buffer_parse_caps (caps, &width, &height);
-    if (ret)
-      *size = gst_gl_buffer_get_size (width, height);
-  } else {
-    GstVideoFormat video_format;
-    ret = gst_video_format_parse_caps (caps, &video_format, &width, &height);
-    if (ret)
-      *size = gst_video_format_get_size (video_format, width, height);
-  }
-
-  return ret;
+       gboolean ret;
+       GstStructure *structure;
+       gint width;
+       gint height;
+
+       structure = gst_caps_get_structure (caps, 0);
+       if (gst_structure_has_name (structure, "video/x-raw-gl"))
+       {
+               ret = gst_gl_buffer_parse_caps (caps, &width, &height);
+               if (ret)
+                       *size = gst_gl_buffer_get_size (width, height);
+       }
+       else
+       {
+               GstVideoFormat video_format;
+               ret = gst_video_format_parse_caps (caps, &video_format, &width, &height);
+               if (ret)
+                       *size = gst_video_format_get_size (video_format, width, height);
+       }
+
+       return ret;
 }
 
 static GstFlowReturn
-gst_gl_download_transform (GstBaseTransform * trans, GstBuffer * inbuf,
-    GstBuffer * outbuf)
+gst_gl_download_transform (GstBaseTransform* trans, GstBuffer* inbuf,
+    GstBuffer* outbuf)
 {
-  GstGLDownload *download = GST_GL_DOWNLOAD (trans);
-  GstGLBuffer *gl_inbuf = GST_GL_BUFFER (inbuf);
-
-  if (download->display == NULL) {
-    download->display = g_object_ref (gl_inbuf->display);
-
-    //blocking call, init color space conversion if needed
-    gst_gl_display_init_download (download->display, download->video_format,
-        download->width, download->height);
-  } else
-    g_assert (download->display == gl_inbuf->display);
-
-  GST_DEBUG ("making video %p size %d",
-      GST_BUFFER_DATA (outbuf), GST_BUFFER_SIZE (outbuf));
-
-  //blocking call
-  if (gst_gl_display_do_download (download->display, gl_inbuf->texture,
-          gl_inbuf->width, gl_inbuf->height, GST_BUFFER_DATA (outbuf)))
-    return GST_FLOW_OK;
-  else
-    return GST_FLOW_UNEXPECTED;
+    GstGLDownload* download = GST_GL_DOWNLOAD (trans);
+    GstGLBuffer* gl_inbuf = GST_GL_BUFFER (inbuf);
+
+    if (download->display == NULL)
+    {
+        download->display = g_object_ref (gl_inbuf->display);
+
+        //blocking call, init color space conversion if needed
+        gst_gl_display_init_download (download->display, download->video_format,
+            download->width, download->height);
+    }
+    else
+        g_assert (download->display == gl_inbuf->display);
+
+    GST_DEBUG ("making video %p size %d",
+        GST_BUFFER_DATA (outbuf), GST_BUFFER_SIZE (outbuf));
+
+    //blocking call
+    if (gst_gl_display_do_download(download->display, gl_inbuf->texture,
+            gl_inbuf->width, gl_inbuf->height, GST_BUFFER_DATA (outbuf)))
+        return GST_FLOW_OK;
+    else
+        return GST_FLOW_UNEXPECTED;
 
 }
index 4c259ef..58875e9 100644 (file)
@@ -48,33 +48,31 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
   GST_DEBUG_CATEGORY_INIT (gst_gl_effects_debug, "gleffects", 0, "gleffects element");
 
 GST_BOILERPLATE_FULL (GstGLEffects, gst_gl_effects, GstGLFilter,
-    GST_TYPE_GL_FILTER, DEBUG_INIT);
+                     GST_TYPE_GL_FILTER, DEBUG_INIT);
 
 static void gst_gl_effects_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
+                                        const GValue * value, GParamSpec * pspec);
 static void gst_gl_effects_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
+                                        GValue * value, GParamSpec * pspec);
 
-static void gst_gl_effects_init_resources (GstGLFilter * filter);
-static void gst_gl_effects_reset_resources (GstGLFilter * filter);
+static void gst_gl_effects_init_resources (GstGLFilter* filter);
+static void gst_gl_effects_reset_resources (GstGLFilter* filter);
 
-static void gst_gl_effects_on_init_gl_context (GstGLFilter * filter);
+static void gst_gl_effects_on_init_gl_context (GstGLFilter* filter);
 
-static void gst_gl_effects_ghash_func_clean (gpointer key, gpointer value,
-    gpointer data);
+static void gst_gl_effects_ghash_func_clean (gpointer key, gpointer value, gpointer data);
 
 static gboolean gst_gl_effects_filter (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf);
+                                      GstGLBuffer * inbuf, GstGLBuffer * outbuf);
 
-static const GstElementDetails element_details =
-GST_ELEMENT_DETAILS ("Gstreamer OpenGL Effects",
-    "Filter/Effect",
-    "GL Shading Language effects",
-    "Filippo Argiolas <filippo.argiolas@gmail.com>");
+static const GstElementDetails element_details = GST_ELEMENT_DETAILS (
+  "Gstreamer OpenGL Effects",
+  "Filter/Effect",
+  "GL Shading Language effects",
+  "Filippo Argiolas <filippo.argiolas@gmail.com>");
 
 /* dont' forget to edit the following when a new effect is added */
-typedef enum
-{
+typedef enum {
   GST_GL_EFFECT_IDENTITY,
   GST_GL_EFFECT_MIRROR,
   GST_GL_EFFECT_SQUEEZE,
@@ -99,127 +97,122 @@ static GType
 gst_gl_effects_effect_get_type (void)
 {
   static GType gl_effects_effect_type = 0;
-  static const GEnumValue effect_types[] = {
-    {GST_GL_EFFECT_IDENTITY, "Do nothing Effect", "identity"},
-    {GST_GL_EFFECT_MIRROR, "Mirror Effect", "mirror"},
-    {GST_GL_EFFECT_SQUEEZE, "Squeeze Effect", "squeeze"},
-    {GST_GL_EFFECT_STRETCH, "Stretch Effect", "stretch"},
-    {GST_GL_EFFECT_FISHEYE, "FishEye Effect", "fisheye"},
-    {GST_GL_EFFECT_TWIRL, "Twirl Effect", "twirl"},
-    {GST_GL_EFFECT_BULGE, "Bulge Effect", "bulge"},
-    {GST_GL_EFFECT_TUNNEL, "Light Tunnel Effect", "tunnel"},
-    {GST_GL_EFFECT_SQUARE, "Square Effect", "square"},
-    {GST_GL_EFFECT_HEAT, "Heat Signature Effect", "heat"},
-    {GST_GL_EFFECT_SEPIA, "Sepia Toning Effect", "sepia"},
-    {GST_GL_EFFECT_XPRO, "Cross Processing Effect", "xpro"},
-    {GST_GL_EFFECT_LUMA_XPRO, "Luma Cross Processing Effect", "lumaxpro"},
-    {GST_GL_EFFECT_XRAY, "Glowing negative effect", "xray"},
-    {GST_GL_EFFECT_SIN, "All Grey but Red Effect", "sin"},
-    {GST_GL_EFFECT_GLOW, "Glow Lighting Effect", "glow"},
-    {0, NULL, NULL}
+  static const GEnumValue effect_types [] = {
+    { GST_GL_EFFECT_IDENTITY, "Do nothing Effect", "identity" },
+    { GST_GL_EFFECT_MIRROR, "Mirror Effect", "mirror" },
+    { GST_GL_EFFECT_SQUEEZE, "Squeeze Effect", "squeeze" },
+    { GST_GL_EFFECT_STRETCH, "Stretch Effect", "stretch" },
+    { GST_GL_EFFECT_FISHEYE, "FishEye Effect", "fisheye" },
+    { GST_GL_EFFECT_TWIRL, "Twirl Effect", "twirl" },
+    { GST_GL_EFFECT_BULGE, "Bulge Effect", "bulge" },
+    { GST_GL_EFFECT_TUNNEL, "Light Tunnel Effect", "tunnel" },
+    { GST_GL_EFFECT_SQUARE, "Square Effect", "square" },
+    { GST_GL_EFFECT_HEAT, "Heat Signature Effect", "heat" },
+    { GST_GL_EFFECT_SEPIA, "Sepia Toning Effect", "sepia" },
+    { GST_GL_EFFECT_XPRO, "Cross Processing Effect", "xpro" },
+    { GST_GL_EFFECT_LUMA_XPRO, "Luma Cross Processing Effect", "lumaxpro" },
+    { GST_GL_EFFECT_XRAY, "Glowing negative effect", "xray" },
+    { GST_GL_EFFECT_SIN, "All Grey but Red Effect", "sin" },
+    { GST_GL_EFFECT_GLOW, "Glow Lighting Effect", "glow" },
+    { 0, NULL, NULL }
   };
 
   if (!gl_effects_effect_type) {
     gl_effects_effect_type =
-        g_enum_register_static ("GstGLEffectsEffect", effect_types);
+      g_enum_register_static ("GstGLEffectsEffect", effect_types);
   }
   return gl_effects_effect_type;
 }
 
 static void
-gst_gl_effects_set_effect (GstGLEffects * effects, gint effect_type)
-{
+gst_gl_effects_set_effect (GstGLEffects *effects, gint effect_type) {
 
   switch (effect_type) {
-    case GST_GL_EFFECT_IDENTITY:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_identity;
-      break;
-    case GST_GL_EFFECT_MIRROR:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_mirror;
-      break;
-    case GST_GL_EFFECT_SQUEEZE:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_squeeze;
-      break;
-    case GST_GL_EFFECT_STRETCH:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_stretch;
-      break;
-    case GST_GL_EFFECT_TUNNEL:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_tunnel;
-      break;
-    case GST_GL_EFFECT_FISHEYE:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_fisheye;
-      break;
-    case GST_GL_EFFECT_TWIRL:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_twirl;
-      break;
-    case GST_GL_EFFECT_BULGE:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_bulge;
-      break;
-    case GST_GL_EFFECT_SQUARE:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_square;
-      break;
-    case GST_GL_EFFECT_HEAT:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_heat;
-      break;
-    case GST_GL_EFFECT_SEPIA:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_sepia;
-      break;
-    case GST_GL_EFFECT_XPRO:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_xpro;
-      break;
-    case GST_GL_EFFECT_LUMA_XPRO:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_luma_xpro;
-      break;
-    case GST_GL_EFFECT_XRAY:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_xray;
-      break;
-    case GST_GL_EFFECT_SIN:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_sin;
-      break;
-    case GST_GL_EFFECT_GLOW:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_glow;
-      break;
-    default:
-      g_assert_not_reached ();
+  case GST_GL_EFFECT_IDENTITY:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_identity;
+    break;
+  case GST_GL_EFFECT_MIRROR:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_mirror;
+    break;
+  case GST_GL_EFFECT_SQUEEZE:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_squeeze;
+    break;
+  case GST_GL_EFFECT_STRETCH:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_stretch;
+    break;
+  case GST_GL_EFFECT_TUNNEL:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_tunnel;
+    break;
+  case GST_GL_EFFECT_FISHEYE:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_fisheye;
+    break;
+  case GST_GL_EFFECT_TWIRL:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_twirl;
+    break;
+  case GST_GL_EFFECT_BULGE:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_bulge;
+    break;
+  case GST_GL_EFFECT_SQUARE:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_square;
+    break;
+  case GST_GL_EFFECT_HEAT:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_heat;
+    break;
+  case GST_GL_EFFECT_SEPIA:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_sepia;
+    break;
+  case GST_GL_EFFECT_XPRO:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_xpro;
+    break;
+  case GST_GL_EFFECT_LUMA_XPRO:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_luma_xpro;
+    break;
+  case GST_GL_EFFECT_XRAY:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_xray;
+    break;
+  case GST_GL_EFFECT_SIN:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_sin;
+    break;
+  case GST_GL_EFFECT_GLOW:
+    effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_glow;
+    break;
+  default:
+    g_assert_not_reached ();
   }
   effects->current_effect = effect_type;
 }
 
 /* init resources that need a gl context */
 static void
-gst_gl_effects_init_gl_resources (GstGLFilter * filter)
+gst_gl_effects_init_gl_resources (GstGLFilter *filter)
 {
   GstGLEffects *effects = GST_GL_EFFECTS (filter);
   gint i;
 
-  for (i = 0; i < NEEDED_TEXTURES; i++) {
+  for (i=0; i<NEEDED_TEXTURES; i++) {
     glGenTextures (1, &effects->midtexture[i]);
-    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, effects->midtexture[i]);
-    glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-        filter->width, filter->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
-        GL_LINEAR);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
-        GL_LINEAR);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-        GL_CLAMP_TO_EDGE);
-    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-        GL_CLAMP_TO_EDGE);
+    glBindTexture(GL_TEXTURE_RECTANGLE_ARB, effects->midtexture[i]);
+    glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+                filter->width, filter->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
   }
 }
 
 /* free resources that need a gl context */
 static void
-gst_gl_effects_reset_gl_resources (GstGLFilter * filter)
+gst_gl_effects_reset_gl_resources (GstGLFilter *filter)
 {
   GstGLEffects *effects = GST_GL_EFFECTS (filter);
   gint i;
 
-  for (i = 0; i < 10; i++) {
+  for (i=0; i<10; i++) {
     glDeleteTextures (1, &effects->midtexture[i]);
     effects->midtexture[i] = 0;
   }
-  for (i = 0; i < GST_GL_EFFECTS_N_CURVES; i++) {
+  for (i=0; i<GST_GL_EFFECTS_N_CURVES; i++) {
     glDeleteTextures (1, &effects->curve[i]);
     effects->curve[i] = 0;
   }
@@ -243,27 +236,29 @@ gst_gl_effects_class_init (GstGLEffectsClass * klass)
   gobject_class->get_property = gst_gl_effects_get_property;
 
   GST_GL_FILTER_CLASS (klass)->filter = gst_gl_effects_filter;
-  GST_GL_FILTER_CLASS (klass)->display_init_cb =
-      gst_gl_effects_init_gl_resources;
-  GST_GL_FILTER_CLASS (klass)->display_reset_cb =
-      gst_gl_effects_reset_gl_resources;
+  GST_GL_FILTER_CLASS (klass)->display_init_cb = gst_gl_effects_init_gl_resources;
+  GST_GL_FILTER_CLASS (klass)->display_reset_cb = gst_gl_effects_reset_gl_resources;
   GST_GL_FILTER_CLASS (klass)->onStart = gst_gl_effects_init_resources;
   GST_GL_FILTER_CLASS (klass)->onStop = gst_gl_effects_reset_resources;
   GST_GL_FILTER_CLASS (klass)->onInitFBO = gst_gl_effects_on_init_gl_context;
 
-  g_object_class_install_property (gobject_class,
-      PROP_EFFECT,
-      g_param_spec_enum ("effect",
-          "Effect",
-          "Select which effect apply to GL video texture",
-          GST_TYPE_GL_EFFECTS_EFFECT,
-          GST_GL_EFFECT_IDENTITY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-  g_object_class_install_property (gobject_class,
-      PROP_HSWAP,
-      g_param_spec_boolean ("hswap",
-          "Horizontal Swap",
-          "Switch video texture left to right, useful with webcams",
-          FALSE, G_PARAM_READWRITE));
+  g_object_class_install_property (
+    gobject_class,
+    PROP_EFFECT,
+    g_param_spec_enum ("effect",
+                      "Effect",
+                      "Select which effect apply to GL video texture",
+                      GST_TYPE_GL_EFFECTS_EFFECT,
+                      GST_GL_EFFECT_IDENTITY,
+                      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (
+    gobject_class,
+    PROP_HSWAP,
+    g_param_spec_boolean ("hswap",
+                          "Horizontal Swap",
+                          "Switch video texture left to right, useful with webcams",
+                          FALSE,
+                          G_PARAM_READWRITE));
 }
 
 void
@@ -279,18 +274,18 @@ gst_gl_effects_draw_texture (GstGLEffects * effects, GLuint tex)
 
   glTexCoord2f (0.0, 0.0);
   glVertex2f (-1.0, -1.0);
-  glTexCoord2f ((gfloat) filter->width, 0.0);
+  glTexCoord2f ((gfloat)filter->width, 0.0);
   glVertex2f (1.0, -1.0);
-  glTexCoord2f ((gfloat) filter->width, (gfloat) filter->height);
+  glTexCoord2f ((gfloat)filter->width, (gfloat)filter->height);
   glVertex2f (1.0, 1.0);
-  glTexCoord2f (0.0, (gfloat) filter->height);
+  glTexCoord2f (0.0, (gfloat)filter->height);
   glVertex2f (-1.0, 1.0);
 
   glEnd ();
 }
 
 static void
-set_horizontal_swap (GstGLDisplay * display, gpointer data)
+set_horizontal_swap (GstGLDisplay *display, gpointer data)
 {
 //  GstGLEffects *effects = GST_GL_EFFECTS (data);
 
@@ -315,8 +310,8 @@ gst_gl_effects_init (GstGLEffects * effects, GstGLEffectsClass * klass)
 static void
 gst_gl_effects_ghash_func_clean (gpointer key, gpointer value, gpointer data)
 {
-  GstGLShader *shader = (GstGLShader *) value;
-  GstGLFilter *filter = (GstGLFilter *) data;
+  GstGLShader* shader = (GstGLShader*) value;
+  GstGLFilter* filter = (GstGLFilter*) data;
 
   //blocking call, wait the opengl thread has destroyed the shader
   gst_gl_display_del_shader (filter->display, shader);
@@ -325,15 +320,15 @@ gst_gl_effects_ghash_func_clean (gpointer key, gpointer value, gpointer data)
 }
 
 static void
-gst_gl_effects_reset_resources (GstGLFilter * filter)
+gst_gl_effects_reset_resources (GstGLFilter* filter)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (filter);
+  GstGLEffects* effects = GST_GL_EFFECTS(filter);
 
 //  g_message ("reset resources");
 
   //release shaders in the gl thread
   g_hash_table_foreach (effects->shaderstable, gst_gl_effects_ghash_func_clean,
-      filter);
+    filter);
 
   //clean the htable without calling values destructors
   //because shaders have been released in the glthread
@@ -349,15 +344,15 @@ gst_gl_effects_set_property (GObject * object, guint prop_id,
   GstGLEffects *effects = GST_GL_EFFECTS (object);
 
   switch (prop_id) {
-    case PROP_EFFECT:
-      gst_gl_effects_set_effect (effects, g_value_get_enum (value));
-      break;
-    case PROP_HSWAP:
-      effects->horizontal_swap = g_value_get_boolean (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  case PROP_EFFECT:
+    gst_gl_effects_set_effect (effects, g_value_get_enum (value));
+    break;
+  case PROP_HSWAP:
+    effects->horizontal_swap = g_value_get_boolean (value);
+    break;
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
@@ -368,37 +363,38 @@ gst_gl_effects_get_property (GObject * object, guint prop_id,
   GstGLEffects *effects = GST_GL_EFFECTS (object);
 
   switch (prop_id) {
-    case PROP_EFFECT:
-      g_value_set_enum (value, effects->current_effect);
-      break;
-    case PROP_HSWAP:
-      g_value_set_boolean (value, effects->horizontal_swap);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  case PROP_EFFECT:
+    g_value_set_enum (value, effects->current_effect);
+    break;
+  case PROP_HSWAP:
+    g_value_set_boolean (value, effects->horizontal_swap);
+    break;
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
-gst_gl_effects_init_resources (GstGLFilter * filter)
+gst_gl_effects_init_resources (GstGLFilter* filter)
 {
   GstGLEffects *effects = GST_GL_EFFECTS (filter);
   gint i;
 //  g_message ("init resources");
 //  g_message ("init hashtable");
-  effects->shaderstable = g_hash_table_new (g_str_hash, g_str_equal);
+  effects->shaderstable = g_hash_table_new (g_str_hash,
+                                                g_str_equal);
 //  g_message ("zero textures and curves");
-  for (i = 0; i < NEEDED_TEXTURES; i++) {
+  for (i=0; i<NEEDED_TEXTURES; i++) {
     effects->midtexture[i] = 0;
   }
-  for (i = 0; i < GST_GL_EFFECTS_N_CURVES; i++) {
+  for (i=0; i<GST_GL_EFFECTS_N_CURVES; i++) {
     effects->curve[i] = 0;
   }
 }
 
 static void
-gst_gl_effects_on_init_gl_context (GstGLFilter * filter)
+gst_gl_effects_on_init_gl_context (GstGLFilter* filter)
 {
   //check that your hardware supports shader
   //if not the pipeline correctly shut down
@@ -406,10 +402,10 @@ gst_gl_effects_on_init_gl_context (GstGLFilter * filter)
 }
 
 static gboolean
-gst_gl_effects_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
-    GstGLBuffer * outbuf)
+gst_gl_effects_filter (GstGLFilter* filter, GstGLBuffer* inbuf,
+                               GstGLBuffer* outbuf)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (filter);
+  GstGLEffects* effects = GST_GL_EFFECTS(filter);
 
   effects->intexture = inbuf->texture;
   effects->outtexture = outbuf->texture;
index b8ec60b..df93c9d 100644 (file)
 #define GST_CAT_DEFAULT gst_gl_filter_app_debug
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
-static const GstElementDetails element_details =
-GST_ELEMENT_DETAILS ("OpenGL application filter",
-    "Filter/Effect",
-    "Use client callbacks to define the scene",
-    "Julien Isorce <julien.isorce@gmail.com>");
+static const GstElementDetails element_details = 
+    GST_ELEMENT_DETAILS ("OpenGL application filter",
+        "Filter/Effect",
+        "Use client callbacks to define the scene",
+        "Julien Isorce <julien.isorce@gmail.com>");
 
 enum
 {
-  PROP_0,
-  PROP_CLIENT_RESHAPE_CALLBACK,
-  PROP_CLIENT_DRAW_CALLBACK
+    PROP_0,
+    PROP_CLIENT_RESHAPE_CALLBACK,
+    PROP_CLIENT_DRAW_CALLBACK
 };
 
 #define DEBUG_INIT(bla) \
@@ -64,17 +64,16 @@ enum
 GST_BOILERPLATE_FULL (GstGLFilterApp, gst_gl_filter_app, GstGLFilter,
     GST_TYPE_GL_FILTER, DEBUG_INIT);
 
-static void gst_gl_filter_app_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
-static void gst_gl_filter_app_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
+static void gst_gl_filter_app_set_property (GObject* object, guint prop_id,
+    const GValue* value, GParamSpec* pspec);
+static void gst_gl_filter_app_get_property (GObject* object, guint prop_id,
+    GValue* value, GParamSpec * pspec);
 
-static gboolean gst_gl_filter_app_set_caps (GstGLFilter * filter,
-    GstCaps * incaps, GstCaps * outcaps);
-static gboolean gst_gl_filter_app_filter (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf);
-static void gst_gl_filter_app_callback (gint width, gint height, guint texture,
-    gpointer stuff);
+static gboolean gst_gl_filter_app_set_caps (GstGLFilter* filter, 
+    GstCaps* incaps, GstCaps* outcaps);
+static gboolean gst_gl_filter_app_filter (GstGLFilter* filter,
+    GstGLBuffer* inbuf, GstGLBuffer* outbuf);
+static void gst_gl_filter_app_callback (gint width, gint height, guint texture, gpointer stuff);
 
 
 static void
@@ -86,135 +85,136 @@ gst_gl_filter_app_base_init (gpointer klass)
 }
 
 static void
-gst_gl_filter_app_class_init (GstGLFilterAppClass * klass)
+gst_gl_filter_app_class_init (GstGLFilterAppClass* klass)
 {
-  GObjectClass *gobject_class;
+    GObjectClass* gobject_class;
 
-  gobject_class = (GObjectClass *) klass;
-  gobject_class->set_property = gst_gl_filter_app_set_property;
-  gobject_class->get_property = gst_gl_filter_app_get_property;
+    gobject_class = (GObjectClass *) klass;
+    gobject_class->set_property = gst_gl_filter_app_set_property;
+    gobject_class->get_property = gst_gl_filter_app_get_property;
 
-  GST_GL_FILTER_CLASS (klass)->set_caps = gst_gl_filter_app_set_caps;
-  GST_GL_FILTER_CLASS (klass)->filter = gst_gl_filter_app_filter;
+    GST_GL_FILTER_CLASS (klass)->set_caps = gst_gl_filter_app_set_caps;
+    GST_GL_FILTER_CLASS (klass)->filter = gst_gl_filter_app_filter;
 
-  g_object_class_install_property (gobject_class, PROP_CLIENT_RESHAPE_CALLBACK,
-      g_param_spec_pointer ("client_reshape_callback",
-          "Client reshape callback",
-          "Define a custom reshape callback in a client code",
+    g_object_class_install_property (gobject_class, PROP_CLIENT_RESHAPE_CALLBACK,
+      g_param_spec_pointer ("client_reshape_callback", "Client reshape callback",
+          "Define a custom reshape callback in a client code", 
           G_PARAM_WRITABLE));
 
-  g_object_class_install_property (gobject_class, PROP_CLIENT_DRAW_CALLBACK,
+    g_object_class_install_property (gobject_class, PROP_CLIENT_DRAW_CALLBACK,
       g_param_spec_pointer ("client_draw_callback", "Client draw callback",
-          "Define a custom draw callback in a client code", G_PARAM_WRITABLE));
+          "Define a custom draw callback in a client code", 
+          G_PARAM_WRITABLE));
 }
 
 static void
-gst_gl_filter_app_init (GstGLFilterApp * filter, GstGLFilterAppClass * klass)
+gst_gl_filter_app_init (GstGLFilterApp* filter,
+    GstGLFilterAppClass* klass)
 {
-  filter->clientReshapeCallback = NULL;
-  filter->clientDrawCallback = NULL;
+    filter->clientReshapeCallback = NULL;
+    filter->clientDrawCallback = NULL;
 }
 
 static void
-gst_gl_filter_app_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
+gst_gl_filter_app_set_property (GObject* object, guint prop_id,
+    const GValue* value, GParamSpec* pspec)
 {
-  GstGLFilterApp *filter = GST_GL_FILTER_APP (object);
-
-  switch (prop_id) {
-    case PROP_CLIENT_RESHAPE_CALLBACK:
-    {
-      filter->clientReshapeCallback = g_value_get_pointer (value);
-      break;
+    GstGLFilterApp* filter = GST_GL_FILTER_APP (object);
+
+    switch (prop_id) {
+        case PROP_CLIENT_RESHAPE_CALLBACK:
+        {
+            filter->clientReshapeCallback = g_value_get_pointer (value);
+            break;
+        }
+        case PROP_CLIENT_DRAW_CALLBACK:
+        {
+            filter->clientDrawCallback = g_value_get_pointer (value);
+            break;
+        }
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
     }
-    case PROP_CLIENT_DRAW_CALLBACK:
-    {
-      filter->clientDrawCallback = g_value_get_pointer (value);
-      break;
-    }
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
 }
 
 static void
-gst_gl_filter_app_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
+gst_gl_filter_app_get_property (GObject* object, guint prop_id,
+    GValue* value, GParamSpec* pspec)
 {
-  //GstGLFilterApp* filter = GST_GL_FILTER_APP (object);
+    //GstGLFilterApp* filter = GST_GL_FILTER_APP (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
+    switch (prop_id) 
+    {
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
+    }
 }
 
 static gboolean
-gst_gl_filter_app_set_caps (GstGLFilter * filter, GstCaps * incaps,
-    GstCaps * outcaps)
+gst_gl_filter_app_set_caps (GstGLFilter* filter, GstCaps* incaps,
+    GstCaps* outcaps)
 {
-  //GstGLFilterApp* app_filter = GST_GL_FILTER_APP(filter);
+    //GstGLFilterApp* app_filter = GST_GL_FILTER_APP(filter);
 
-  return TRUE;
+    return TRUE;
 }
 
 static gboolean
-gst_gl_filter_app_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
-    GstGLBuffer * outbuf)
+gst_gl_filter_app_filter (GstGLFilter* filter, GstGLBuffer* inbuf,
+    GstGLBuffer* outbuf)
 {
-  GstGLFilterApp *app_filter = GST_GL_FILTER_APP (filter);
-
-  if (app_filter->clientDrawCallback) {
-    //blocking call, use a FBO
-    gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
-        filter->fbo, filter->depthbuffer, outbuf->texture,
-        app_filter->clientDrawCallback, inbuf->width, inbuf->height,
-        inbuf->texture, 45, (gfloat) filter->width / (gfloat) filter->height,
-        0.1, 100, GST_GL_DISPLAY_PROJECTION_PERSPECIVE, NULL);
-  }
-  //default
-  else {
-    //blocking call, use a FBO
-    gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
-        filter->fbo, filter->depthbuffer, outbuf->texture,
-        gst_gl_filter_app_callback, inbuf->width, inbuf->height, inbuf->texture,
-        0, filter->width, 0, filter->height, GST_GL_DISPLAY_PROJECTION_ORTHO2D,
-        NULL);
-  }
-
-  return TRUE;
+    GstGLFilterApp* app_filter = GST_GL_FILTER_APP(filter);
+
+    if (app_filter->clientDrawCallback)
+    {
+        //blocking call, use a FBO
+        gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
+            filter->fbo, filter->depthbuffer, outbuf->texture, app_filter->clientDrawCallback,
+            inbuf->width, inbuf->height, inbuf->texture, 
+            45, (gfloat)filter->width / (gfloat)filter->height, 0.1, 100, 
+            GST_GL_DISPLAY_PROJECTION_PERSPECIVE, NULL);
+    }
+    //default
+    else
+    {
+        //blocking call, use a FBO
+        gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
+            filter->fbo, filter->depthbuffer, outbuf->texture, gst_gl_filter_app_callback,
+            inbuf->width, inbuf->height, inbuf->texture, 
+            0, filter->width, 0, filter->height, 
+            GST_GL_DISPLAY_PROJECTION_ORTHO2D, NULL);
+    }
+
+    return TRUE;
 }
 
 //opengl scene, params: input texture (not the output filter->texture)
 static void
-gst_gl_filter_app_callback (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_filter_app_callback (gint width, gint height, guint texture, gpointer stuff)
 {
-  glEnable (GL_TEXTURE_RECTANGLE_ARB);
-  glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-      GL_CLAMP_TO_EDGE);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-      GL_CLAMP_TO_EDGE);
-  glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
-  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-  glMatrixMode (GL_PROJECTION);
-  glLoadIdentity ();
-
-  glBegin (GL_QUADS);
-  glTexCoord2i (0, 0);
-  glVertex2f (-1.0f, -1.0f);
-  glTexCoord2i (width, 0);
-  glVertex2f (1.0f, -1.0f);
-  glTexCoord2i (width, height);
-  glVertex2f (1.0f, 1.0f);
-  glTexCoord2i (0, height);
-  glVertex2f (-1.0f, 1.0f);
-  glEnd ();
+    glEnable (GL_TEXTURE_RECTANGLE_ARB);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+    glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+       
+    glMatrixMode (GL_PROJECTION);
+    glLoadIdentity ();
+
+    glBegin (GL_QUADS);
+        glTexCoord2i (0, 0);
+        glVertex2f (-1.0f, -1.0f);
+        glTexCoord2i (width, 0);
+        glVertex2f (1.0f, -1.0f);
+        glTexCoord2i (width, height);
+        glVertex2f (1.0f, 1.0f);
+        glTexCoord2i (0, height);
+        glVertex2f (-1.0f, 1.0f);
+    glEnd ();
 }
index 5f4fe84..a31a35e 100644 (file)
@@ -66,39 +66,45 @@ GType gst_gl_glfilterblur_get_type (void);
 
 /* horizontal convolution */
 static const gchar *hconv9_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float norm_const;"
-    "uniform float norm_offset;"
-    "uniform float kernel[9];"
-    "void main () {"
-    "  float offset[9] = float[9] (-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0);"
-    "  vec2 texturecoord = gl_TexCoord[0].st;"
-    "  int i;"
-    "  vec4 sum = vec4 (0.0);"
-    "  for (i = 0; i < 9; i++) { "
-    "    if (kernel[i] != 0.0) {"
-    "        vec4 neighbor = texture2DRect(tex, vec2(texturecoord.s+offset[i], texturecoord.t)); "
-    "        sum += neighbor * kernel[i]/norm_const; "
-    "      }" "  }" "  gl_FragColor = sum + norm_offset;" "}";
+"#extension GL_ARB_texture_rectangle : enable\n"
+"uniform sampler2DRect tex;"
+"uniform float norm_const;"
+"uniform float norm_offset;"
+"uniform float kernel[9];"
+"void main () {"
+"  float offset[9] = float[9] (-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0);"
+"  vec2 texturecoord = gl_TexCoord[0].st;"
+"  int i;"
+"  vec4 sum = vec4 (0.0);"
+"  for (i = 0; i < 9; i++) { "
+"    if (kernel[i] != 0.0) {"
+"        vec4 neighbor = texture2DRect(tex, vec2(texturecoord.s+offset[i], texturecoord.t)); "
+"        sum += neighbor * kernel[i]/norm_const; "
+"      }"
+"  }"
+"  gl_FragColor = sum + norm_offset;"
+"}";
 
 /* vertical convolution */
 static const gchar *vconv9_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float norm_const;"
-    "uniform float norm_offset;"
-    "uniform float kernel[9];"
-    "void main () {"
-    "  float offset[9] = float[9] (-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0);"
-    "  vec2 texturecoord = gl_TexCoord[0].st;"
-    "  int i;"
-    "  vec4 sum = vec4 (0.0);"
-    "  for (i = 0; i < 9; i++) { "
-    "    if (kernel[i] != 0.0) {"
-    "        vec4 neighbor = texture2DRect(tex, vec2(texturecoord.s, texturecoord.t+offset[i])); "
-    "        sum += neighbor * kernel[i]/norm_const; "
-    "      }" "  }" "  gl_FragColor = sum + norm_offset;" "}";
+"#extension GL_ARB_texture_rectangle : enable\n"
+"uniform sampler2DRect tex;"
+"uniform float norm_const;"
+"uniform float norm_offset;"
+"uniform float kernel[9];"
+"void main () {"
+"  float offset[9] = float[9] (-4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0);"
+"  vec2 texturecoord = gl_TexCoord[0].st;"
+"  int i;"
+"  vec4 sum = vec4 (0.0);"
+"  for (i = 0; i < 9; i++) { "
+"    if (kernel[i] != 0.0) {"
+"        vec4 neighbor = texture2DRect(tex, vec2(texturecoord.s, texturecoord.t+offset[i])); "
+"        sum += neighbor * kernel[i]/norm_const; "
+"      }"
+"  }"
+"  gl_FragColor = sum + norm_offset;"
+"}";
 
 #define GST_CAT_DEFAULT gst_gl_filterblur_debug
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
@@ -113,44 +119,39 @@ GST_ELEMENT_DETAILS ("Gstreamer OpenGL Blur",
   GST_DEBUG_CATEGORY_INIT (gst_gl_filterblur_debug, "glfilterblur", 0, "glfilterblur element");
 
 GST_BOILERPLATE_FULL (GstGLFilterBlur, gst_gl_filterblur, GstGLFilter,
-    GST_TYPE_GL_FILTER, DEBUG_INIT);
+                     GST_TYPE_GL_FILTER, DEBUG_INIT);
 
 static void gst_gl_filterblur_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
 static void gst_gl_filterblur_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
-static void gst_gl_filter_filterblur_reset (GstGLFilter * filter);
-static void gst_gl_filterblur_draw_texture (GstGLFilterBlur * filterblur,
-    GLuint tex);
+static void gst_gl_filter_filterblur_reset (GstGLFilter* filter);
+static void gst_gl_filterblur_draw_texture (GstGLFilterBlur * filterblur, GLuint tex);
 
-static void gst_gl_filterblur_init_shader (GstGLFilter * filter);
+static void gst_gl_filterblur_init_shader (GstGLFilter* filter);
 static gboolean gst_gl_filterblur_filter (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf);
-static void gst_gl_filterblur_hcallback (gint width, gint height, guint texture,
-    gpointer stuff);
-static void gst_gl_filterblur_vcallback (gint width, gint height, guint texture,
-    gpointer stuff);
+                                           GstGLBuffer * inbuf, GstGLBuffer * outbuf);
+static void gst_gl_filterblur_hcallback (gint width, gint height, guint texture, gpointer stuff);
+static void gst_gl_filterblur_vcallback (gint width, gint height, guint texture, gpointer stuff);
 
 
 static void
-gst_gl_filterblur_init_resources (GstGLFilter * filter)
+gst_gl_filterblur_init_resources (GstGLFilter *filter)
 {
   GstGLFilterBlur *filterblur = GST_GL_FILTERBLUR (filter);
 
   glGenTextures (1, &filterblur->midtexture);
-  glBindTexture (GL_TEXTURE_RECTANGLE_ARB, filterblur->midtexture);
-  glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-      filter->width, filter->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+  glBindTexture(GL_TEXTURE_RECTANGLE_ARB, filterblur->midtexture);
+  glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+              filter->width, filter->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
   glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
   glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-      GL_CLAMP_TO_EDGE);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-      GL_CLAMP_TO_EDGE);
+  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
 }
 
 static void
-gst_gl_filterblur_reset_resources (GstGLFilter * filter)
+gst_gl_filterblur_reset_resources (GstGLFilter *filter)
 {
   GstGLFilterBlur *filterblur = GST_GL_FILTERBLUR (filter);
 
@@ -175,17 +176,14 @@ gst_gl_filterblur_class_init (GstGLFilterBlurClass * klass)
   gobject_class->get_property = gst_gl_filterblur_get_property;
 
   GST_GL_FILTER_CLASS (klass)->filter = gst_gl_filterblur_filter;
-  GST_GL_FILTER_CLASS (klass)->display_init_cb =
-      gst_gl_filterblur_init_resources;
-  GST_GL_FILTER_CLASS (klass)->display_reset_cb =
-      gst_gl_filterblur_reset_resources;
+  GST_GL_FILTER_CLASS (klass)->display_init_cb = gst_gl_filterblur_init_resources;
+  GST_GL_FILTER_CLASS (klass)->display_reset_cb = gst_gl_filterblur_reset_resources;
   GST_GL_FILTER_CLASS (klass)->onInitFBO = gst_gl_filterblur_init_shader;
   GST_GL_FILTER_CLASS (klass)->onReset = gst_gl_filter_filterblur_reset;
 }
 
 static void
-gst_gl_filterblur_init (GstGLFilterBlur * filterblur,
-    GstGLFilterBlurClass * klass)
+gst_gl_filterblur_init (GstGLFilterBlur * filterblur, GstGLFilterBlurClass * klass)
 {
   filterblur->shader0 = NULL;
   filterblur->shader1 = NULL;
@@ -193,9 +191,9 @@ gst_gl_filterblur_init (GstGLFilterBlur * filterblur,
 }
 
 static void
-gst_gl_filter_filterblur_reset (GstGLFilter * filter)
+gst_gl_filter_filterblur_reset (GstGLFilter* filter)
 {
-  GstGLFilterBlur *filterblur = GST_GL_FILTERBLUR (filter);
+  GstGLFilterBlur* filterblur = GST_GL_FILTERBLUR(filter);
 
   //blocking call, wait the opengl thread has destroyed the shader
   gst_gl_display_del_shader (filter->display, filterblur->shader0);
@@ -231,17 +229,15 @@ gst_gl_filterblur_get_property (GObject * object, guint prop_id,
 }
 
 static void
-gst_gl_filterblur_init_shader (GstGLFilter * filter)
+gst_gl_filterblur_init_shader (GstGLFilter* filter)
 {
-  GstGLFilterBlur *blur_filter = GST_GL_FILTERBLUR (filter);
+  GstGLFilterBlurblur_filter = GST_GL_FILTERBLUR (filter);
 
   //blocking call, wait the opengl thread has compiled the shader
-  gst_gl_display_gen_shader (filter->display, 0, hconv9_fragment_source,
-      &blur_filter->shader0);
+  gst_gl_display_gen_shader (filter->display, 0, hconv9_fragment_source, &blur_filter->shader0);
 
   //blocking call, wait the opengl thread has compiled the shader
-  gst_gl_display_gen_shader (filter->display, 0, vconv9_fragment_source,
-      &blur_filter->shader1);
+  gst_gl_display_gen_shader (filter->display, 0, vconv9_fragment_source, &blur_filter->shader1);
 }
 
 static void
@@ -257,18 +253,18 @@ gst_gl_filterblur_draw_texture (GstGLFilterBlur * filterblur, GLuint tex)
 
   glTexCoord2f (0.0, 0.0);
   glVertex2f (-1.0, -1.0);
-  glTexCoord2f ((gfloat) filter->width, 0.0);
+  glTexCoord2f ((gfloat)filter->width, 0.0);
   glVertex2f (1.0, -1.0);
-  glTexCoord2f ((gfloat) filter->width, (gfloat) filter->height);
+  glTexCoord2f ((gfloat)filter->width, (gfloat)filter->height);
   glVertex2f (1.0, 1.0);
-  glTexCoord2f (0.0, (gfloat) filter->height);
+  glTexCoord2f (0.0, (gfloat)filter->height);
   glVertex2f (-1.0, 1.0);
 
   glEnd ();
 }
 
 static void
-change_view (GstGLDisplay * display, gpointer data)
+change_view (GstGLDisplay *display, gpointer data)
 {
 //  GstGLFilterBlur *filterblur = GST_GL_FILTERBLUR (data);
 
@@ -284,35 +280,33 @@ change_view (GstGLDisplay * display, gpointer data)
 }
 
 static gboolean
-gst_gl_filterblur_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
-    GstGLBuffer * outbuf)
+gst_gl_filterblur_filter (GstGLFilter* filter, GstGLBuffer* inbuf,
+                               GstGLBuffer* outbuf)
 {
-  GstGLFilterBlur *filterblur = GST_GL_FILTERBLUR (filter);
+  GstGLFilterBlur* filterblur = GST_GL_FILTERBLUR(filter);
 
-  gst_gl_filter_render_to_target (filter, inbuf->texture,
-      filterblur->midtexture, gst_gl_filterblur_hcallback, filterblur);
+  gst_gl_filter_render_to_target (filter, inbuf->texture, filterblur->midtexture,
+                                 gst_gl_filterblur_hcallback, filterblur);
 
   gst_gl_display_thread_add (filter->display, change_view, filterblur);
 
-  gst_gl_filter_render_to_target (filter, filterblur->midtexture,
-      outbuf->texture, gst_gl_filterblur_vcallback, filterblur);
+  gst_gl_filter_render_to_target (filter, filterblur->midtexture, outbuf->texture,
+                                 gst_gl_filterblur_vcallback, filterblur);
 
   return TRUE;
 }
 
 static void
-gst_gl_filterblur_hcallback (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_filterblur_hcallback (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLFilterBlur *filterblur = GST_GL_FILTERBLUR (stuff);
+  GstGLFilterBlurfilterblur = GST_GL_FILTERBLUR (stuff);
 
   /* hard coded kernel, it could be easily generated at runtime with a
    * property to change standard deviation */
   gfloat gauss_kernel[9] = {
     0.026995f, 0.064759f, 0.120985f,
     0.176033f, 0.199471f, 0.176033f,
-    0.120985f, 0.064759f, 0.026995f
-  };
+    0.120985f, 0.064759f, 0.026995f };
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -326,8 +320,7 @@ gst_gl_filterblur_hcallback (gint width, gint height, guint texture,
 
   gst_gl_shader_set_uniform_1i (filterblur->shader0, "tex", 1);
 
-  gst_gl_shader_set_uniform_1fv (filterblur->shader0, "kernel", 9,
-      gauss_kernel);
+  gst_gl_shader_set_uniform_1fv (filterblur->shader0, "kernel", 9, gauss_kernel);
   gst_gl_shader_set_uniform_1f (filterblur->shader0, "norm_const", 0.977016f);
   gst_gl_shader_set_uniform_1f (filterblur->shader0, "norm_offset", 0.0f);
 
@@ -336,18 +329,16 @@ gst_gl_filterblur_hcallback (gint width, gint height, guint texture,
 
 
 static void
-gst_gl_filterblur_vcallback (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_filterblur_vcallback (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLFilterBlur *filterblur = GST_GL_FILTERBLUR (stuff);
+  GstGLFilterBlurfilterblur = GST_GL_FILTERBLUR (stuff);
 
   /* hard coded kernel, it could be easily generated at runtime with a
    * property to change standard deviation */
   gfloat gauss_kernel[9] = {
     0.026995f, 0.064759f, 0.120985f,
     0.176033f, 0.199471f, 0.176033f,
-    0.120985f, 0.064759f, 0.026995f
-  };
+    0.120985f, 0.064759f, 0.026995f };
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -361,8 +352,7 @@ gst_gl_filterblur_vcallback (gint width, gint height, guint texture,
 
   gst_gl_shader_set_uniform_1i (filterblur->shader1, "tex", 1);
 
-  gst_gl_shader_set_uniform_1fv (filterblur->shader1, "kernel", 9,
-      gauss_kernel);
+  gst_gl_shader_set_uniform_1fv (filterblur->shader1, "kernel", 9, gauss_kernel);
   gst_gl_shader_set_uniform_1f (filterblur->shader1, "norm_const", 0.977016f);
   gst_gl_shader_set_uniform_1f (filterblur->shader1, "norm_offset", 0.0f);
 
index b629bdc..0178af7 100644 (file)
 #define GST_CAT_DEFAULT gst_gl_filter_cube_debug
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
-static const GstElementDetails element_details =
-GST_ELEMENT_DETAILS ("OpenGL cube filter",
-    "Filter/Effect",
-    "Map input texture on the 6 cube faces",
-    "Julien Isorce <julien.isorce@gmail.com>");
+static const GstElementDetails element_details = 
+    GST_ELEMENT_DETAILS ("OpenGL cube filter",
+        "Filter/Effect",
+        "Map input texture on the 6 cube faces",
+        "Julien Isorce <julien.isorce@gmail.com>");
 
 enum
 {
-  PROP_0,
-  PROP_RED,
-  PROP_GREEN,
-  PROP_BLUE,
-  PROP_FOVY,
-  PROP_ASPECT,
-  PROP_ZNEAR,
-  PROP_ZFAR
+    PROP_0,
+    PROP_RED,
+    PROP_GREEN,
+    PROP_BLUE,
+    PROP_FOVY,
+    PROP_ASPECT,
+    PROP_ZNEAR,
+    PROP_ZFAR
 };
 
 #define DEBUG_INIT(bla) \
@@ -73,249 +73,223 @@ enum
 GST_BOILERPLATE_FULL (GstGLFilterCube, gst_gl_filter_cube, GstGLFilter,
     GST_TYPE_GL_FILTER, DEBUG_INIT);
 
-static void gst_gl_filter_cube_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
-static void gst_gl_filter_cube_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
+static void gst_gl_filter_cube_set_property (GObject* object, guint prop_id,
+    const GValue* value, GParamSpec * pspec);
+static void gst_gl_filter_cube_get_property (GObject* object, guint prop_id,
+    GValue* value, GParamSpec* pspec);
 
-static gboolean gst_gl_filter_cube_set_caps (GstGLFilter * filter,
-    GstCaps * incaps, GstCaps * outcaps);
-static gboolean gst_gl_filter_cube_filter (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf);
-static void gst_gl_filter_cube_callback (gint width, gint height, guint texture,
-    gpointer stuff);
+static gboolean gst_gl_filter_cube_set_caps (GstGLFilter* filter, 
+    GstCaps* incaps, GstCaps* outcaps);
+static gboolean gst_gl_filter_cube_filter (GstGLFilter* filter,
+    GstGLBuffer* inbuf, GstGLBuffer* outbuf);
+static void gst_gl_filter_cube_callback (gint width, gint height, guint texture, gpointer stuff);
 
 
 static void
 gst_gl_filter_cube_base_init (gpointer klass)
 {
-  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+    GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_set_details (element_class, &element_details);
+    gst_element_class_set_details (element_class, &element_details);
 }
 
 static void
 gst_gl_filter_cube_class_init (GstGLFilterCubeClass * klass)
 {
-  GObjectClass *gobject_class;
+    GObjectClass* gobject_class;
 
-  gobject_class = (GObjectClass *) klass;
-  gobject_class->set_property = gst_gl_filter_cube_set_property;
-  gobject_class->get_property = gst_gl_filter_cube_get_property;
+    gobject_class = (GObjectClass *) klass;
+    gobject_class->set_property = gst_gl_filter_cube_set_property;
+    gobject_class->get_property = gst_gl_filter_cube_get_property;
 
-  GST_GL_FILTER_CLASS (klass)->set_caps = gst_gl_filter_cube_set_caps;
-  GST_GL_FILTER_CLASS (klass)->filter = gst_gl_filter_cube_filter;
+    GST_GL_FILTER_CLASS (klass)->set_caps = gst_gl_filter_cube_set_caps;
+    GST_GL_FILTER_CLASS (klass)->filter = gst_gl_filter_cube_filter;
 
-  g_object_class_install_property (gobject_class, PROP_RED,
-      g_param_spec_float ("red", "Red", "Background red color",
-          0.0f, 1.0f, 0.0f, G_PARAM_WRITABLE));
+    g_object_class_install_property (gobject_class, PROP_RED,
+        g_param_spec_float ("red", "Red", "Background red color",
+            0.0f, 1.0f, 0.0f, G_PARAM_WRITABLE));
 
-  g_object_class_install_property (gobject_class, PROP_GREEN,
-      g_param_spec_float ("green", "Green", "Background reen color",
-          0.0f, 1.0f, 0.0f, G_PARAM_WRITABLE));
+    g_object_class_install_property (gobject_class, PROP_GREEN,
+        g_param_spec_float ("green", "Green", "Background reen color",
+            0.0f, 1.0f, 0.0f, G_PARAM_WRITABLE));
 
-  g_object_class_install_property (gobject_class, PROP_BLUE,
-      g_param_spec_float ("blue", "Blue", "Background blue color",
-          0.0f, 1.0f, 0.0f, G_PARAM_WRITABLE));
+    g_object_class_install_property (gobject_class, PROP_BLUE,
+        g_param_spec_float ("blue", "Blue", "Background blue color",
+            0.0f, 1.0f, 0.0f, G_PARAM_WRITABLE));
 
-  g_object_class_install_property (gobject_class, PROP_FOVY,
-      g_param_spec_double ("fovy", "Fovy", "Field of view angle in degrees",
-          0.0, 180.0, 45.0, G_PARAM_WRITABLE));
+    g_object_class_install_property (gobject_class, PROP_FOVY,
+        g_param_spec_double ("fovy", "Fovy", "Field of view angle in degrees",
+            0.0, 180.0, 45.0, G_PARAM_WRITABLE));
 
-  g_object_class_install_property (gobject_class, PROP_ASPECT,
-      g_param_spec_double ("aspect", "Aspect",
-          "Field of view in the x direction", 0.0, 100, 0.0, G_PARAM_WRITABLE));
+    g_object_class_install_property (gobject_class, PROP_ASPECT,
+        g_param_spec_double ("aspect", "Aspect", "Field of view in the x direction",
+            0.0, 100, 0.0, G_PARAM_WRITABLE));
 
-  g_object_class_install_property (gobject_class, PROP_ZNEAR,
-      g_param_spec_double ("znear", "Znear",
-          "Specifies the       distance from the viewer to the near clipping plane",
-          0.0, 100.0, 0.1, G_PARAM_WRITABLE));
+    g_object_class_install_property (gobject_class, PROP_ZNEAR,
+        g_param_spec_double ("znear", "Znear", 
+            "Specifies the     distance from the viewer to the near clipping plane",
+            0.0, 100.0, 0.1, G_PARAM_WRITABLE));
 
-  g_object_class_install_property (gobject_class, PROP_ZFAR,
-      g_param_spec_double ("zfar", "Zfar",
-          "Specifies the       distance from the viewer to the far clipping plane",
-          0.0, 1000.0, 100.0, G_PARAM_WRITABLE));
+    g_object_class_install_property (gobject_class, PROP_ZFAR,
+        g_param_spec_double ("zfar", "Zfar", 
+            "Specifies the     distance from the viewer to the far clipping plane",
+            0.0, 1000.0, 100.0, G_PARAM_WRITABLE));
 }
 
 static void
-gst_gl_filter_cube_init (GstGLFilterCube * filter, GstGLFilterCubeClass * klass)
+gst_gl_filter_cube_init (GstGLFilterCube* filter,
+    GstGLFilterCubeClass* klass)
 {
-  filter->fovy = 45;
-  filter->aspect = 0;
-  filter->znear = 0.1;
-  filter->zfar = 100;
+    filter->fovy = 45;
+    filter->aspect = 0;
+    filter->znear = 0.1;
+    filter->zfar = 100;
 }
 
 static void
-gst_gl_filter_cube_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
+gst_gl_filter_cube_set_property (GObject* object, guint prop_id,
+    const GValue* value, GParamSpec* pspec)
 {
-  GstGLFilterCube *filter = GST_GL_FILTER_CUBE (object);
-
-  switch (prop_id) {
-    case PROP_RED:
-      filter->red = g_value_get_float (value);
-      break;
-    case PROP_GREEN:
-      filter->green = g_value_get_float (value);
-      break;
-    case PROP_BLUE:
-      filter->blue = g_value_get_float (value);
-      break;
-    case PROP_FOVY:
-      filter->fovy = g_value_get_double (value);
-      break;
-    case PROP_ASPECT:
-      filter->aspect = g_value_get_double (value);
-      break;
-    case PROP_ZNEAR:
-      filter->znear = g_value_get_double (value);
-      break;
-    case PROP_ZFAR:
-      filter->zfar = g_value_get_double (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
+    GstGLFilterCube* filter = GST_GL_FILTER_CUBE (object);
+
+    switch (prop_id) 
+    {
+        case PROP_RED:
+            filter->red = g_value_get_float (value);
+            break;
+        case PROP_GREEN:
+            filter->green = g_value_get_float (value);
+            break;
+        case PROP_BLUE:
+            filter->blue = g_value_get_float (value);
+            break;
+        case PROP_FOVY:
+            filter->fovy = g_value_get_double (value);
+            break;
+        case PROP_ASPECT:
+            filter->aspect = g_value_get_double (value);
+            break;
+        case PROP_ZNEAR:
+            filter->znear = g_value_get_double (value);
+            break;
+        case PROP_ZFAR:
+            filter->zfar = g_value_get_double (value);
+            break;
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
+    }
 }
 
 static void
-gst_gl_filter_cube_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
+gst_gl_filter_cube_get_property (GObject* object, guint prop_id,
+    GValue* value, GParamSpec* pspec)
 {
-  //GstGLFilterCube* filter = GST_GL_FILTER_CUBE (object);
-
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
+    //GstGLFilterCube* filter = GST_GL_FILTER_CUBE (object);
+
+    switch (prop_id) 
+    {
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
+    }
 }
 
 static gboolean
-gst_gl_filter_cube_set_caps (GstGLFilter * filter, GstCaps * incaps,
-    GstCaps * outcaps)
+gst_gl_filter_cube_set_caps (GstGLFilter* filter, GstCaps* incaps,
+    GstCaps* outcaps)
 {
-  GstGLFilterCube *cube_filter = GST_GL_FILTER_CUBE (filter);
+    GstGLFilterCube* cube_filter = GST_GL_FILTER_CUBE (filter);
 
-  if (cube_filter->aspect == 0)
-    cube_filter->aspect = (gdouble) filter->width / (gdouble) filter->height;
+    if (cube_filter->aspect == 0)
+        cube_filter->aspect = (gdouble)filter->width / (gdouble)filter->height;
 
-  return TRUE;
+    return TRUE;
 }
 
 static gboolean
-gst_gl_filter_cube_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
-    GstGLBuffer * outbuf)
+gst_gl_filter_cube_filter (GstGLFilter* filter, GstGLBuffer* inbuf,
+    GstGLBuffer* outbuf)
 {
-  GstGLFilterCube *cube_filter = GST_GL_FILTER_CUBE (filter);
-
-  //blocking call, use a FBO
-  gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
-      filter->fbo, filter->depthbuffer, outbuf->texture,
-      gst_gl_filter_cube_callback, inbuf->width, inbuf->height, inbuf->texture,
-      cube_filter->fovy, cube_filter->aspect, cube_filter->znear,
-      cube_filter->zfar, GST_GL_DISPLAY_PROJECTION_PERSPECIVE,
-      (gpointer) cube_filter);
-
-  return TRUE;
+    GstGLFilterCube* cube_filter = GST_GL_FILTER_CUBE (filter);
+    
+    //blocking call, use a FBO
+    gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
+        filter->fbo, filter->depthbuffer, outbuf->texture, gst_gl_filter_cube_callback,
+        inbuf->width, inbuf->height, inbuf->texture, 
+        cube_filter->fovy, cube_filter->aspect, cube_filter->znear, cube_filter->zfar,
+        GST_GL_DISPLAY_PROJECTION_PERSPECIVE, (gpointer)cube_filter);
+
+    return TRUE;
 }
 
 //opengl scene, params: input texture (not the output filter->texture)
 static void
-gst_gl_filter_cube_callback (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_filter_cube_callback (gint width, gint height, guint texture, gpointer stuff)
 {
-  static GLfloat xrot = 0;
-  static GLfloat yrot = 0;
-  static GLfloat zrot = 0;
-
-  GstGLFilterCube *cube_filter = GST_GL_FILTER_CUBE (stuff);
-
-  glEnable (GL_DEPTH_TEST);
-
-  glEnable (GL_TEXTURE_RECTANGLE_ARB);
-  glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-      GL_CLAMP_TO_EDGE);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-      GL_CLAMP_TO_EDGE);
-  glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
-  glClearColor (cube_filter->red, cube_filter->green, cube_filter->blue, 0.0);
-  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-  glMatrixMode (GL_MODELVIEW);
-  glLoadIdentity ();
-
-  glTranslatef (0.0f, 0.0f, -5.0f);
-
-  glRotatef (xrot, 1.0f, 0.0f, 0.0f);
-  glRotatef (yrot, 0.0f, 1.0f, 0.0f);
-  glRotatef (zrot, 0.0f, 0.0f, 1.0f);
-
-  glBegin (GL_QUADS);
-  // Front Face
-  glTexCoord2f ((gfloat) width, 0.0f);
-  glVertex3f (-1.0f, -1.0f, 1.0f);
-  glTexCoord2f (0.0f, 0.0f);
-  glVertex3f (1.0f, -1.0f, 1.0f);
-  glTexCoord2f (0.0f, (gfloat) height);
-  glVertex3f (1.0f, 1.0f, 1.0f);
-  glTexCoord2f ((gfloat) width, (gfloat) height);
-  glVertex3f (-1.0f, 1.0f, 1.0f);
-  // Back Face
-  glTexCoord2f (0.0f, 0.0f);
-  glVertex3f (-1.0f, -1.0f, -1.0f);
-  glTexCoord2f (0.0f, (gfloat) height);
-  glVertex3f (-1.0f, 1.0f, -1.0f);
-  glTexCoord2f ((gfloat) width, (gfloat) height);
-  glVertex3f (1.0f, 1.0f, -1.0f);
-  glTexCoord2f ((gfloat) width, 0.0f);
-  glVertex3f (1.0f, -1.0f, -1.0f);
-  // Top Face
-  glTexCoord2f ((gfloat) width, (gfloat) height);
-  glVertex3f (-1.0f, 1.0f, -1.0f);
-  glTexCoord2f ((gfloat) width, 0.0f);
-  glVertex3f (-1.0f, 1.0f, 1.0f);
-  glTexCoord2f (0.0f, 0.0f);
-  glVertex3f (1.0f, 1.0f, 1.0f);
-  glTexCoord2f (0.0f, (gfloat) height);
-  glVertex3f (1.0f, 1.0f, -1.0f);
-  // Bottom Face
-  glTexCoord2f ((gfloat) width, 0.0f);
-  glVertex3f (-1.0f, -1.0f, -1.0f);
-  glTexCoord2f (0.0f, 0.0f);
-  glVertex3f (1.0f, -1.0f, -1.0f);
-  glTexCoord2f (0.0f, (gfloat) height);
-  glVertex3f (1.0f, -1.0f, 1.0f);
-  glTexCoord2f ((gfloat) width, (gfloat) height);
-  glVertex3f (-1.0f, -1.0f, 1.0f);
-  // Right face
-  glTexCoord2f (0.0f, 0.0f);
-  glVertex3f (1.0f, -1.0f, -1.0f);
-  glTexCoord2f (0.0f, (gfloat) height);
-  glVertex3f (1.0f, 1.0f, -1.0f);
-  glTexCoord2f ((gfloat) width, (gfloat) height);
-  glVertex3f (1.0f, 1.0f, 1.0f);
-  glTexCoord2f ((gfloat) width, 0.0f);
-  glVertex3f (1.0f, -1.0f, 1.0f);
-  // Left Face
-  glTexCoord2f ((gfloat) width, 0.0f);
-  glVertex3f (-1.0f, -1.0f, -1.0f);
-  glTexCoord2f (0.0f, 0.0f);
-  glVertex3f (-1.0f, -1.0f, 1.0f);
-  glTexCoord2f (0.0f, (gfloat) height);
-  glVertex3f (-1.0f, 1.0f, 1.0f);
-  glTexCoord2f ((gfloat) width, (gfloat) height);
-  glVertex3f (-1.0f, 1.0f, -1.0f);
-  glEnd ();
-
-  xrot += 0.3f;
-  yrot += 0.2f;
-  zrot += 0.4f;
-
-  glDisable (GL_DEPTH_TEST);
+    static GLfloat     xrot = 0;
+    static GLfloat     yrot = 0;                               
+    static GLfloat     zrot = 0;
+
+    GstGLFilterCube* cube_filter = GST_GL_FILTER_CUBE (stuff);
+
+    glEnable(GL_DEPTH_TEST);
+
+    glEnable (GL_TEXTURE_RECTANGLE_ARB);
+    glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+    glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+
+    glClearColor(cube_filter->red, cube_filter->green, cube_filter->blue, 0.0);
+    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    glMatrixMode(GL_MODELVIEW);
+    glLoadIdentity();
+       
+    glTranslatef(0.0f,0.0f,-5.0f);
+
+    glRotatef(xrot,1.0f,0.0f,0.0f);
+    glRotatef(yrot,0.0f,1.0f,0.0f);
+    glRotatef(zrot,0.0f,0.0f,1.0f);
+
+    glBegin(GL_QUADS);
+             // Front Face
+             glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
+             glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
+             glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f,  1.0f,  1.0f);
+             glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f,  1.0f,  1.0f);
+             // Back Face
+             glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
+             glTexCoord2f(0.0f, (gfloat)height); glVertex3f(-1.0f,  1.0f, -1.0f);
+             glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f( 1.0f,  1.0f, -1.0f);
+             glTexCoord2f((gfloat)width, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
+             // Top Face
+             glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f,  1.0f, -1.0f);
+             glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
+             glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
+             glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f,  1.0f, -1.0f);
+             // Bottom Face
+             glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
+             glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
+             glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, -1.0f,  1.0f);
+             glTexCoord2f((gfloat)width,(gfloat)height); glVertex3f(-1.0f, -1.0f,  1.0f);
+             // Right face
+             glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
+             glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f,  1.0f, -1.0f);
+             glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f( 1.0f,  1.0f,  1.0f);
+             glTexCoord2f((gfloat)width, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
+             // Left Face
+             glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
+             glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
+             glTexCoord2f(0.0f, (gfloat)height); glVertex3f(-1.0f,  1.0f,  1.0f);
+             glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f,  1.0f, -1.0f);
+    glEnd();
+
+    xrot+=0.3f;
+    yrot+=0.2f;
+    zrot+=0.4f;
+
+    glDisable(GL_DEPTH_TEST);
 }
index 9b472e5..d65d99b 100644 (file)
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
 static const GstElementDetails element_details =
-GST_ELEMENT_DETAILS ("OpenGL glass filter",
-    "Filter/Effect",
-    "Glass Filter",
-    "Julien Isorce <julien.isorce@gmail.com>");
+  GST_ELEMENT_DETAILS ("OpenGL glass filter",
+                      "Filter/Effect",
+                      "Glass Filter",
+                      "Julien Isorce <julien.isorce@gmail.com>");
 
 enum
 {
@@ -61,49 +61,52 @@ enum
   GST_DEBUG_CATEGORY_INIT (gst_gl_filter_glass_debug, "glfilterglass", 0, "glfilterglass element");
 
 GST_BOILERPLATE_FULL (GstGLFilterGlass, gst_gl_filter_glass, GstGLFilter,
-    GST_TYPE_GL_FILTER, DEBUG_INIT);
+                     GST_TYPE_GL_FILTER, DEBUG_INIT);
 
 static void gst_gl_filter_glass_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
+                                                 const GValue * value, GParamSpec * pspec);
 static void gst_gl_filter_glass_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
+                                                 GValue * value, GParamSpec * pspec);
 
-static void gst_gl_filter_glass_reset (GstGLFilter * filter);
-static void gst_gl_filter_glass_init_shader (GstGLFilter * filter);
+static void gst_gl_filter_glass_reset (GstGLFilter* filter);
+static void gst_gl_filter_glass_init_shader (GstGLFilter* filter);
 static gboolean gst_gl_filter_glass_filter (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf);
+                                               GstGLBuffer * inbuf, GstGLBuffer * outbuf);
 
 static void gst_gl_filter_glass_draw_background_gradient ();
-static void gst_gl_filter_glass_draw_video_plane (GstGLFilter * filter,
-    gint width, gint height, guint texture, gfloat center_x, gfloat center_y,
-    gfloat start_alpha, gfloat stop_alpha, gboolean reversed);
+static void gst_gl_filter_glass_draw_video_plane (GstGLFilter* filter,
+  gint width, gint height, guint texture, gfloat center_x, gfloat center_y,
+  gfloat start_alpha, gfloat stop_alpha, gboolean reversed);
 
-static void gst_gl_filter_glass_callback (gint width, gint height,
-    guint texture, gpointer stuff);
+static void gst_gl_filter_glass_callback (gint width, gint height, guint texture, gpointer stuff);
 
 static const gchar *glass_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float width, height;"
-    "void main () {"
-    "  float p = 0.0525;"
-    "  float L1 = p*width;"
-    "  float L2 = width - L1;"
-    "  float L3 = height - L1;"
-    "  float w = 1.0;"
-    "  float r = L1;"
-    "  if (gl_TexCoord[0].x < L1 && gl_TexCoord[0].y < L1)"
-    "      r = sqrt( (gl_TexCoord[0].x - L1) * (gl_TexCoord[0].x - L1) + (gl_TexCoord[0].y - L1) * (gl_TexCoord[0].y - L1) );"
-    "  else if (gl_TexCoord[0].x > L2 && gl_TexCoord[0].y < L1)"
-    "      r = sqrt( (gl_TexCoord[0].x - L2) * (gl_TexCoord[0].x - L2) + (gl_TexCoord[0].y - L1) * (gl_TexCoord[0].y - L1) );"
-    "  else if (gl_TexCoord[0].x > L2 && gl_TexCoord[0].y > L3)"
-    "      r = sqrt( (gl_TexCoord[0].x - L2) * (gl_TexCoord[0].x - L2) + (gl_TexCoord[0].y - L3) * (gl_TexCoord[0].y - L3) );"
-    "  else if (gl_TexCoord[0].x < L1 && gl_TexCoord[0].y > L3)"
-    "      r = sqrt( (gl_TexCoord[0].x - L1) * (gl_TexCoord[0].x - L1) + (gl_TexCoord[0].y - L3) * (gl_TexCoord[0].y - L3) );"
-    "  if (r > L1)"
-    "      w = 0.0;"
-    "  vec4 color = texture2DRect (tex, gl_TexCoord[0].st);"
-    "  gl_FragColor = vec4(color.rgb, gl_Color.a * w);" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float width, height;"
+  "void main () {"
+  "  float p = 0.0525;"
+  "  float L1 = p*width;"
+  "  float L2 = width - L1;"
+  "  float L3 = height - L1;"
+  "  float w = 1.0;"
+  "  float r = L1;"
+  "  if (gl_TexCoord[0].x < L1 && gl_TexCoord[0].y < L1)"
+  "      r = sqrt( (gl_TexCoord[0].x - L1) * (gl_TexCoord[0].x - L1) + (gl_TexCoord[0].y - L1) * (gl_TexCoord[0].y - L1) );"
+
+  "  else if (gl_TexCoord[0].x > L2 && gl_TexCoord[0].y < L1)"
+  "      r = sqrt( (gl_TexCoord[0].x - L2) * (gl_TexCoord[0].x - L2) + (gl_TexCoord[0].y - L1) * (gl_TexCoord[0].y - L1) );"
+
+  "  else if (gl_TexCoord[0].x > L2 && gl_TexCoord[0].y > L3)"
+  "      r = sqrt( (gl_TexCoord[0].x - L2) * (gl_TexCoord[0].x - L2) + (gl_TexCoord[0].y - L3) * (gl_TexCoord[0].y - L3) );"
+
+  "  else if (gl_TexCoord[0].x < L1 && gl_TexCoord[0].y > L3)"
+  "      r = sqrt( (gl_TexCoord[0].x - L1) * (gl_TexCoord[0].x - L1) + (gl_TexCoord[0].y - L3) * (gl_TexCoord[0].y - L3) );"
+  "  if (r > L1)"
+  "      w = 0.0;"
+  "  vec4 color = texture2DRect (tex, gl_TexCoord[0].st);"
+  "  gl_FragColor = vec4(color.rgb, gl_Color.a * w);"
+  "}";
 
 static void
 gst_gl_filter_glass_base_init (gpointer klass)
@@ -114,9 +117,9 @@ gst_gl_filter_glass_base_init (gpointer klass)
 }
 
 static void
-gst_gl_filter_glass_class_init (GstGLFilterGlassClass * klass)
+gst_gl_filter_glass_class_init (GstGLFilterGlassClass* klass)
 {
-  GObjectClass *gobject_class;
+  GObjectClassgobject_class;
 
   gobject_class = (GObjectClass *) klass;
   gobject_class->set_property = gst_gl_filter_glass_set_property;
@@ -128,71 +131,72 @@ gst_gl_filter_glass_class_init (GstGLFilterGlassClass * klass)
 }
 
 static void
-gst_gl_filter_glass_init (GstGLFilterGlass * filter,
-    GstGLFilterGlassClass * klass)
+gst_gl_filter_glass_init (GstGLFilterGlass* filter,
+    GstGLFilterGlassClass* klass)
 {
-  filter->shader = NULL;
-  filter->timestamp = 0;
+    filter->shader = NULL;
+    filter->timestamp = 0;
 }
 
 static void
-gst_gl_filter_glass_reset (GstGLFilter * filter)
+gst_gl_filter_glass_reset (GstGLFilter* filter)
 {
-  GstGLFilterGlass *glass_filter = GST_GL_FILTER_GLASS (filter);
+  GstGLFilterGlass* glass_filter = GST_GL_FILTER_GLASS(filter);
 
   //blocking call, wait the opengl thread has destroyed the shader
   gst_gl_display_del_shader (filter->display, glass_filter->shader);
 }
 
 static void
-gst_gl_filter_glass_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
+gst_gl_filter_glass_set_property (GObject* object, guint prop_id,
+                                     const GValue* value, GParamSpec* pspec)
 {
   //GstGLFilterGlass *filter = GST_GL_FILTER_GLASS (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  switch (prop_id)
+  {
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
-gst_gl_filter_glass_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
+gst_gl_filter_glass_get_property (GObject* object, guint prop_id,
+                                     GValue* value, GParamSpec* pspec)
 {
   //GstGLFilterGlass *filter = GST_GL_FILTER_GLASS (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  switch (prop_id)
+  {
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
-gst_gl_filter_glass_init_shader (GstGLFilter * filter)
+gst_gl_filter_glass_init_shader (GstGLFilter* filter)
 {
-  GstGLFilterGlass *glass_filter = GST_GL_FILTER_GLASS (filter);
+  GstGLFilterGlassglass_filter = GST_GL_FILTER_GLASS (filter);
 
   //blocking call, wait the opengl thread has compiled the shader
-  gst_gl_display_gen_shader (filter->display, 0, glass_fragment_source,
-      &glass_filter->shader);
+  gst_gl_display_gen_shader (filter->display, 0, glass_fragment_source, &glass_filter->shader);
 }
 
 static gboolean
-gst_gl_filter_glass_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
-    GstGLBuffer * outbuf)
+gst_gl_filter_glass_filter (GstGLFilter* filter, GstGLBuffer* inbuf,
+                               GstGLBuffer* outbuf)
 {
   gpointer glass_filter = GST_GL_FILTER_GLASS (filter);
-  GST_GL_FILTER_GLASS (glass_filter)->timestamp = GST_BUFFER_TIMESTAMP (inbuf);
+  GST_GL_FILTER_GLASS(glass_filter)->timestamp = GST_BUFFER_TIMESTAMP (inbuf);
 
   //blocking call, use a FBO
   gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
-      filter->fbo, filter->depthbuffer, outbuf->texture,
-      gst_gl_filter_glass_callback, inbuf->width, inbuf->height, inbuf->texture,
-      80, (gdouble) filter->width / (gdouble) filter->height, 1.0, 5000.0,
-      GST_GL_DISPLAY_PROJECTION_PERSPECIVE, (gpointer) glass_filter);
+        filter->fbo, filter->depthbuffer, outbuf->texture, gst_gl_filter_glass_callback,
+        inbuf->width, inbuf->height, inbuf->texture,
+        80, (gdouble)filter->width/(gdouble)filter->height, 1.0, 5000.0,
+        GST_GL_DISPLAY_PROJECTION_PERSPECIVE, (gpointer)glass_filter);
 
   return TRUE;
 }
@@ -200,59 +204,60 @@ gst_gl_filter_glass_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
 static gint64
 get_time (void)
 {
-  static GTimeVal val;
-  g_get_current_time (&val);
+    static GTimeVal val;
+    g_get_current_time (&val);
 
-  return (val.tv_sec * G_USEC_PER_SEC) + val.tv_usec;
+    return (val.tv_sec * G_USEC_PER_SEC) + val.tv_usec;
 }
 
 static void
 gst_gl_filter_glass_draw_background_gradient ()
 {
-  glMatrixMode (GL_PROJECTION);
+    glMatrixMode (GL_PROJECTION);
 
-  glPushMatrix ();
-  glLoadIdentity ();
-  glOrtho (-100, 100, -100, 100, -1000.0, 1000.0);
+    glPushMatrix ();
+    glLoadIdentity ();
+    glOrtho (-100, 100, -100, 100, -1000.0, 1000.0);
 
-  glBegin (GL_QUADS);
+    glBegin (GL_QUADS);
 
-  glColor4f (0.0f, 0.0f, 0.0f, 1.0f);
-  glVertex2f (-100.0f, -100.0f);
-  glVertex2f (100.0f, -100.0f);
+    glColor4f (0.0f, 0.0f, 0.0f, 1.0f);
+    glVertex2f (-100.0f, -100.0f);
+    glVertex2f (100.0f, -100.0f);
 
-  glColor4f (0.0f, 0.0f, 0.2f, 1.0f);
-  glVertex2f (100.0f, 80.0f);
-  glVertex2f (-100.0f, 80.0f);
+    glColor4f (0.0f, 0.0f, 0.2f, 1.0f);
+    glVertex2f (100.0f, 80.0f);
+    glVertex2f (-100.0f, 80.0f);
 
-  glVertex2f (100.0f, 80.0f);
-  glVertex2f (-100.0f, 80.0f);
+    glVertex2f (100.0f, 80.0f);
+    glVertex2f (-100.0f, 80.0f);
 
-  glVertex2f (-100.0f, 100.0f);
-  glVertex2f (100.0f, 100.0f);
+    glVertex2f (-100.0f, 100.0f);
+    glVertex2f (100.0f, 100.0f);
 
-  glEnd ();
-  glPopMatrix ();
+    glEnd ();
+    glPopMatrix ();
 
-  glMatrixMode (GL_MODELVIEW);
+    glMatrixMode (GL_MODELVIEW);
 }
 
 static void
-gst_gl_filter_glass_draw_video_plane (GstGLFilter * filter,
-    gint width, gint height, guint texture,
-    gfloat center_x, gfloat center_y,
-    gfloat start_alpha, gfloat stop_alpha, gboolean reversed)
+gst_gl_filter_glass_draw_video_plane (GstGLFilter* filter,
+                                      gint width, gint height, guint texture,
+                                      gfloat center_x, gfloat center_y,
+                                      gfloat start_alpha, gfloat stop_alpha,
+                                      gboolean reversed)
 {
-  GstGLFilterGlass *glass_filter = GST_GL_FILTER_GLASS (filter);
+  GstGLFilterGlassglass_filter = GST_GL_FILTER_GLASS (filter);
 
   gfloat topy;
   gfloat bottomy;
   if (reversed) {
-    topy = center_y - 1.0f;
-    bottomy = center_y + 1.0f;
+      topy = center_y - 1.0f;
+      bottomy = center_y + 1.0f;
   } else {
-    topy = center_y + 1.0f;
-    bottomy = center_y - 1.0f;
+      topy = center_y + 1.0f;
+      bottomy = center_y - 1.0f;
   }
 
   gst_gl_shader_use (glass_filter->shader);
@@ -262,23 +267,22 @@ gst_gl_filter_glass_draw_video_plane (GstGLFilter * filter,
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
   glDisable (GL_TEXTURE_RECTANGLE_ARB);
 
-  gst_gl_shader_set_uniform_1i (glass_filter->shader, "tex", 0);
-  gst_gl_shader_set_uniform_1f (glass_filter->shader, "width", (gfloat) width);
-  gst_gl_shader_set_uniform_1f (glass_filter->shader, "height",
-      (gfloat) height);
+  gst_gl_shader_set_uniform_1i  (glass_filter->shader, "tex", 0);
+  gst_gl_shader_set_uniform_1f  (glass_filter->shader, "width", (gfloat)width);
+  gst_gl_shader_set_uniform_1f  (glass_filter->shader, "height", (gfloat)height);
 
   glBegin (GL_QUADS);
-  glColor4f (1.0f, 1.0f, 1.0f, start_alpha);
-  glTexCoord2i (0, height);
-  glVertex2f (center_x - 1.6f, topy);
-  glTexCoord2i (width, height);
-  glVertex2f (center_x + 1.6f, topy);
-
-  glColor4f (1.0, 1.0, 1.0, stop_alpha);
-  glTexCoord2i (width, 0);
-  glVertex2f (center_x + 1.6f, bottomy);
-  glTexCoord2i (0, 0);
-  glVertex2f (center_x - 1.6f, bottomy);
+    glColor4f (1.0f, 1.0f, 1.0f, start_alpha);
+    glTexCoord2i (0, height);
+    glVertex2f (center_x - 1.6f, topy);
+    glTexCoord2i (width, height);
+    glVertex2f (center_x + 1.6f, topy);
+
+    glColor4f (1.0, 1.0, 1.0, stop_alpha);
+    glTexCoord2i (width, 0);
+    glVertex2f (center_x + 1.6f, bottomy);
+    glTexCoord2i (0, 0);
+    glVertex2f (center_x - 1.6f, bottomy);
   glEnd ();
 
   gst_gl_shader_use (0);
@@ -286,35 +290,35 @@ gst_gl_filter_glass_draw_video_plane (GstGLFilter * filter,
 
 //opengl scene, params: input texture (not the output filter->texture)
 static void
-gst_gl_filter_glass_callback (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_filter_glass_callback (gint width, gint height, guint texture, gpointer stuff)
 {
   static gint64 start_time = 0;
 
-  GstGLFilter *filter = GST_GL_FILTER (stuff);
-  GstGLFilterGlass *glass_filter = GST_GL_FILTER_GLASS (stuff);
+  GstGLFilterfilter = GST_GL_FILTER (stuff);
+  GstGLFilterGlassglass_filter = GST_GL_FILTER_GLASS (stuff);
 
   if (start_time == 0)
     start_time = get_time ();
-  else {
-    gint64 time_left =
-        (glass_filter->timestamp / 1000) - (get_time () - start_time);
+  else
+  {
+    gint64 time_left = (glass_filter->timestamp / 1000) - (get_time () - start_time);
     time_left -= 1000000 / 25;
-    if (time_left > 2000) {
-      GST_LOG ("escape");
-      return;
+    if (time_left > 2000)
+    {
+        GST_LOG ("escape");
+        return;
     }
   }
 
-  glTranslatef (0.0f, 2.0f, -3.0f);
+  glTranslatef(0.0f, 2.0f, -3.0f);
 
   gst_gl_filter_glass_draw_background_gradient ();
 
 
   //Rotation
   if (start_time != 0) {
-    gint64 time_passed = get_time () - start_time;
-    glRotated (sin (time_passed / 1200000.0) * 45.0, 0.0, 1.0, 0.0);
+      gint64 time_passed = get_time () - start_time;
+      glRotated (sin (time_passed / 1200000.0) * 45.0, 0.0, 1.0, 0.0);
   }
 
   glEnable (GL_BLEND);
@@ -322,11 +326,11 @@ gst_gl_filter_glass_callback (gint width, gint height, guint texture,
 
   //Reflection
   gst_gl_filter_glass_draw_video_plane (filter, width, height, texture,
-      0.0f, 0.0f, 0.3f, 0.0f, TRUE);
+    0.0f, 0.0f, 0.3f, 0.0f, TRUE);
 
   //Main video
   gst_gl_filter_glass_draw_video_plane (filter, width, height, texture,
-      0.0f, -2.0f, 1.0f, 1.0f, FALSE);
+    0.0f, -2.0f, 1.0f, 1.0f, FALSE);
 
   glDisable (GL_TEXTURE_RECTANGLE_ARB);
   glDisable (GL_BLEND);
index a347452..a0e14fd 100644 (file)
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
 static const GstElementDetails element_details =
-GST_ELEMENT_DETAILS ("OpenGL laplacian filter",
-    "Filter/Effect",
-    "Laplacian Convolution Demo Filter",
-    "Filippo Argiolas <filippo.argiolas@gmail.com>");
+  GST_ELEMENT_DETAILS ("OpenGL laplacian filter",
+                      "Filter/Effect",
+                      "Laplacian Convolution Demo Filter",
+                      "Filippo Argiolas <filippo.argiolas@gmail.com>");
 
 enum
 {
@@ -55,40 +55,42 @@ enum
 #define DEBUG_INIT(bla)                                                        \
   GST_DEBUG_CATEGORY_INIT (gst_gl_filter_laplacian_debug, "glfilterlaplacian", 0, "glfilterlaplacian element");
 
-GST_BOILERPLATE_FULL (GstGLFilterLaplacian, gst_gl_filter_laplacian,
-    GstGLFilter, GST_TYPE_GL_FILTER, DEBUG_INIT);
+GST_BOILERPLATE_FULL (GstGLFilterLaplacian, gst_gl_filter_laplacian, GstGLFilter,
+                     GST_TYPE_GL_FILTER, DEBUG_INIT);
 
-static void gst_gl_filter_laplacian_set_property (GObject * object,
-    guint prop_id, const GValue * value, GParamSpec * pspec);
-static void gst_gl_filter_laplacian_get_property (GObject * object,
-    guint prop_id, GValue * value, GParamSpec * pspec);
+static void gst_gl_filter_laplacian_set_property (GObject * object, guint prop_id,
+                                                 const GValue * value, GParamSpec * pspec);
+static void gst_gl_filter_laplacian_get_property (GObject * object, guint prop_id,
+                                                 GValue * value, GParamSpec * pspec);
 
-static void gst_gl_filter_laplacian_reset (GstGLFilter * filter);
-static void gst_gl_filter_laplacian_init_shader (GstGLFilter * filter);
+static void gst_gl_filter_laplacian_reset (GstGLFilter* filter);
+static void gst_gl_filter_laplacian_init_shader (GstGLFilter* filter);
 static gboolean gst_gl_filter_laplacian_filter (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf);
-static void gst_gl_filter_laplacian_callback (gint width, gint height,
-    guint texture, gpointer stuff);
+                                               GstGLBuffer * inbuf, GstGLBuffer * outbuf);
+static void gst_gl_filter_laplacian_callback (gint width, gint height, guint texture, gpointer stuff);
 
 static const gchar *convolution_fragment_source =
-    "#extension GL_ARB_texture_rectangle : enable\n"
-    "uniform sampler2DRect tex;"
-    "uniform float norm_const;"
-    "uniform float norm_offset;"
-    "uniform float kernel[9];"
-    "void main () {"
-    "  vec2 offset[9] = vec2[9] ("
-    "      vec2(-1.0,-1.0), vec2( 0.0,-1.0), vec2( 1.0,-1.0),"
-    "      vec2(-1.0, 0.0), vec2( 0.0, 0.0), vec2( 1.0, 0.0),"
-    "      vec2(-1.0, 1.0), vec2( 0.0, 1.0), vec2( 1.0, 1.0) );"
-    "  vec2 texturecoord = gl_TexCoord[0].st;"
-    "  int i;"
-    "  vec4 sum = vec4 (0.0);"
-    "  for (i = 0; i < 9; i++) { "
-    "    if (kernel[i] != 0.0) {"
-    "      vec4 neighbor = texture2DRect(tex, texturecoord + vec2(offset[i])); "
-    "      sum += neighbor * kernel[i]/norm_const; "
-    "    }" "  }" "  gl_FragColor = sum + norm_offset;" "}";
+  "#extension GL_ARB_texture_rectangle : enable\n"
+  "uniform sampler2DRect tex;"
+  "uniform float norm_const;"
+  "uniform float norm_offset;"
+  "uniform float kernel[9];"
+  "void main () {"
+  "  vec2 offset[9] = vec2[9] ("
+  "      vec2(-1.0,-1.0), vec2( 0.0,-1.0), vec2( 1.0,-1.0),"
+  "      vec2(-1.0, 0.0), vec2( 0.0, 0.0), vec2( 1.0, 0.0),"
+  "      vec2(-1.0, 1.0), vec2( 0.0, 1.0), vec2( 1.0, 1.0) );"
+  "  vec2 texturecoord = gl_TexCoord[0].st;"
+  "  int i;"
+  "  vec4 sum = vec4 (0.0);"
+  "  for (i = 0; i < 9; i++) { "
+  "    if (kernel[i] != 0.0) {"
+  "      vec4 neighbor = texture2DRect(tex, texturecoord + vec2(offset[i])); "
+  "      sum += neighbor * kernel[i]/norm_const; "
+  "    }"
+  "  }"
+  "  gl_FragColor = sum + norm_offset;"
+  "}";
 
 static void
 gst_gl_filter_laplacian_base_init (gpointer klass)
@@ -99,9 +101,9 @@ gst_gl_filter_laplacian_base_init (gpointer klass)
 }
 
 static void
-gst_gl_filter_laplacian_class_init (GstGLFilterLaplacianClass * klass)
+gst_gl_filter_laplacian_class_init (GstGLFilterLaplacianClass* klass)
 {
-  GObjectClass *gobject_class;
+  GObjectClassgobject_class;
 
   gobject_class = (GObjectClass *) klass;
   gobject_class->set_property = gst_gl_filter_laplacian_set_property;
@@ -113,84 +115,83 @@ gst_gl_filter_laplacian_class_init (GstGLFilterLaplacianClass * klass)
 }
 
 static void
-gst_gl_filter_laplacian_init (GstGLFilterLaplacian * filter,
-    GstGLFilterLaplacianClass * klass)
+gst_gl_filter_laplacian_init (GstGLFilterLaplacian* filter,
+    GstGLFilterLaplacianClass* klass)
 {
-  filter->shader = NULL;
+    filter->shader = NULL;
 }
 
 static void
-gst_gl_filter_laplacian_reset (GstGLFilter * filter)
+gst_gl_filter_laplacian_reset (GstGLFilter* filter)
 {
-  GstGLFilterLaplacian *laplacian_filter = GST_GL_FILTER_LAPLACIAN (filter);
+  GstGLFilterLaplacian* laplacian_filter = GST_GL_FILTER_LAPLACIAN(filter);
 
   //blocking call, wait the opengl thread has destroyed the shader
   gst_gl_display_del_shader (filter->display, laplacian_filter->shader);
 }
 
 static void
-gst_gl_filter_laplacian_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
+gst_gl_filter_laplacian_set_property (GObject* object, guint prop_id,
+                                     const GValue* value, GParamSpec* pspec)
 {
   //GstGLFilterLaplacian *filter = GST_GL_FILTER_LAPLACIAN (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  switch (prop_id)
+  {
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
-gst_gl_filter_laplacian_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
+gst_gl_filter_laplacian_get_property (GObject* object, guint prop_id,
+                                     GValue* value, GParamSpec* pspec)
 {
   //GstGLFilterLaplacian *filter = GST_GL_FILTER_LAPLACIAN (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  switch (prop_id)
+  {
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
-gst_gl_filter_laplacian_init_shader (GstGLFilter * filter)
+gst_gl_filter_laplacian_init_shader (GstGLFilter* filter)
 {
-  GstGLFilterLaplacian *laplacian_filter = GST_GL_FILTER_LAPLACIAN (filter);
+  GstGLFilterLaplacianlaplacian_filter = GST_GL_FILTER_LAPLACIAN (filter);
 
   //blocking call, wait the opengl thread has compiled the shader
-  gst_gl_display_gen_shader (filter->display, 0, convolution_fragment_source,
-      &laplacian_filter->shader);
+  gst_gl_display_gen_shader (filter->display, 0, convolution_fragment_source, &laplacian_filter->shader);
 }
 
 static gboolean
-gst_gl_filter_laplacian_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
-    GstGLBuffer * outbuf)
+gst_gl_filter_laplacian_filter (GstGLFilter* filter, GstGLBuffer* inbuf,
+                               GstGLBuffer* outbuf)
 {
   gpointer laplacian_filter = GST_GL_FILTER_LAPLACIAN (filter);
 
   //blocking call, use a FBO
   gst_gl_display_use_fbo (filter->display, filter->width, filter->height,
-      filter->fbo, filter->depthbuffer, outbuf->texture,
-      gst_gl_filter_laplacian_callback, inbuf->width, inbuf->height,
-      inbuf->texture, 0, filter->width, 0, filter->height,
-      GST_GL_DISPLAY_PROJECTION_ORTHO2D, laplacian_filter);
+                         filter->fbo, filter->depthbuffer, outbuf->texture, gst_gl_filter_laplacian_callback,
+                         inbuf->width, inbuf->height, inbuf->texture,
+                         0, filter->width, 0, filter->height,
+                         GST_GL_DISPLAY_PROJECTION_ORTHO2D, laplacian_filter);
 
   return TRUE;
 }
 
 //opengl scene, params: input texture (not the output filter->texture)
 static void
-gst_gl_filter_laplacian_callback (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_filter_laplacian_callback (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLFilterLaplacian *laplacian_filter = GST_GL_FILTER_LAPLACIAN (stuff);
+  GstGLFilterLaplacianlaplacian_filter = GST_GL_FILTER_LAPLACIAN (stuff);
 
-  gfloat kernel[9] = { 0.0, -1.0, 0.0,
-    -1.0, 4.0, -1.0,
-    0.0, -1.0, 0.0
-  };
+  gfloat kernel[9] = {  0.0, -1.0,  0.0,
+                      -1.0,  4.0, -1.0,
+                       0.0, -1.0,  0.0  };
 
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
@@ -201,10 +202,10 @@ gst_gl_filter_laplacian_callback (gint width, gint height, guint texture,
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, texture);
 
-  gst_gl_shader_set_uniform_1i (laplacian_filter->shader, "tex", 0);
+  gst_gl_shader_set_uniform_1i  (laplacian_filter->shader, "tex", 0);
   gst_gl_shader_set_uniform_1fv (laplacian_filter->shader, "kernel", 9, kernel);
-  gst_gl_shader_set_uniform_1f (laplacian_filter->shader, "norm_const", 1.0);
-  gst_gl_shader_set_uniform_1f (laplacian_filter->shader, "norm_offset", 0.0);  //set to 0.5 to preserve overall greylevel
+  gst_gl_shader_set_uniform_1f  (laplacian_filter->shader, "norm_const", 1.0);
+  gst_gl_shader_set_uniform_1f  (laplacian_filter->shader, "norm_offset", 0.0); //set to 0.5 to preserve overall greylevel
 
 
   glBegin (GL_QUADS);
index 27ccaef..0308089 100644 (file)
@@ -85,41 +85,37 @@ GST_ELEMENT_DETAILS ("Gstreamer OpenGL Sobel",
   GST_DEBUG_CATEGORY_INIT (gst_gl_filtersobel_debug, "glfiltersobel", 0, "glfiltersobel element");
 
 GST_BOILERPLATE_FULL (GstGLFilterSobel, gst_gl_filtersobel, GstGLFilter,
-    GST_TYPE_GL_FILTER, DEBUG_INIT);
+                     GST_TYPE_GL_FILTER, DEBUG_INIT);
 
 static void gst_gl_filtersobel_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
 static void gst_gl_filtersobel_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
-static void gst_gl_filter_filtersobel_reset (GstGLFilter * filter);
-static void gst_gl_filtersobel_draw_texture (GstGLFilterSobel * filtersobel,
-    GLuint tex);
+static void gst_gl_filter_filtersobel_reset (GstGLFilter* filter);
+static void gst_gl_filtersobel_draw_texture (GstGLFilterSobel * filtersobel, GLuint tex);
 
-static void gst_gl_filtersobel_init_shader (GstGLFilter * filter);
+static void gst_gl_filtersobel_init_shader (GstGLFilter* filter);
 static gboolean gst_gl_filtersobel_filter (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf);
-static void gst_gl_filtersobel_callback (gint width, gint height, guint texture,
-    gpointer stuff);
+                                           GstGLBuffer * inbuf, GstGLBuffer * outbuf);
+static void gst_gl_filtersobel_callback (gint width, gint height, guint texture, gpointer stuff);
 
 static void
-gst_gl_filtersobel_init_resources (GstGLFilter * filter)
+gst_gl_filtersobel_init_resources (GstGLFilter *filter)
 {
   GstGLFilterSobel *filtersobel = GST_GL_FILTERSOBEL (filter);
 
   glGenTextures (1, &filtersobel->midtexture);
-  glBindTexture (GL_TEXTURE_RECTANGLE_ARB, filtersobel->midtexture);
-  glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
-      filter->width, filter->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+  glBindTexture(GL_TEXTURE_RECTANGLE_ARB, filtersobel->midtexture);
+  glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8,
+              filter->width, filter->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
   glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
   glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S,
-      GL_CLAMP_TO_EDGE);
-  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T,
-      GL_CLAMP_TO_EDGE);
+  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+  glTexParameteri (GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
 }
 
 static void
-gst_gl_filtersobel_reset_resources (GstGLFilter * filter)
+gst_gl_filtersobel_reset_resources (GstGLFilter *filter)
 {
   GstGLFilterSobel *filtersobel = GST_GL_FILTERSOBEL (filter);
 
@@ -144,24 +140,23 @@ gst_gl_filtersobel_class_init (GstGLFilterSobelClass * klass)
   gobject_class->get_property = gst_gl_filtersobel_get_property;
 
   GST_GL_FILTER_CLASS (klass)->filter = gst_gl_filtersobel_filter;
-  GST_GL_FILTER_CLASS (klass)->display_init_cb =
-      gst_gl_filtersobel_init_resources;
-  GST_GL_FILTER_CLASS (klass)->display_reset_cb =
-      gst_gl_filtersobel_reset_resources;
+  GST_GL_FILTER_CLASS (klass)->display_init_cb = gst_gl_filtersobel_init_resources;
+  GST_GL_FILTER_CLASS (klass)->display_reset_cb = gst_gl_filtersobel_reset_resources;
   GST_GL_FILTER_CLASS (klass)->onInitFBO = gst_gl_filtersobel_init_shader;
   GST_GL_FILTER_CLASS (klass)->onReset = gst_gl_filter_filtersobel_reset;
 
-  g_object_class_install_property (gobject_class,
-      PROP_INVERT,
-      g_param_spec_boolean ("invert",
-          "Invert the colors",
-          "Invert colors to get dark edges on bright background",
-          FALSE, G_PARAM_READWRITE));
+  g_object_class_install_property (
+    gobject_class,
+    PROP_INVERT,
+    g_param_spec_boolean ("invert",
+                          "Invert the colors",
+                          "Invert colors to get dark edges on bright background",
+                          FALSE,
+                          G_PARAM_READWRITE));
 }
 
 static void
-gst_gl_filtersobel_init (GstGLFilterSobel * filtersobel,
-    GstGLFilterSobelClass * klass)
+gst_gl_filtersobel_init (GstGLFilterSobel * filtersobel, GstGLFilterSobelClass * klass)
 {
   filtersobel->shader0 = NULL;
   filtersobel->midtexture = 0;
@@ -169,9 +164,9 @@ gst_gl_filtersobel_init (GstGLFilterSobel * filtersobel,
 }
 
 static void
-gst_gl_filter_filtersobel_reset (GstGLFilter * filter)
+gst_gl_filter_filtersobel_reset (GstGLFilter* filter)
 {
-  GstGLFilterSobel *filtersobel = GST_GL_FILTERSOBEL (filter);
+  GstGLFilterSobel* filtersobel = GST_GL_FILTERSOBEL(filter);
 
   //blocking call, wait the opengl thread has destroyed the shader
   gst_gl_display_del_shader (filter->display, filtersobel->shader0);
@@ -184,12 +179,12 @@ gst_gl_filtersobel_set_property (GObject * object, guint prop_id,
   GstGLFilterSobel *filtersobel = GST_GL_FILTERSOBEL (object);
 
   switch (prop_id) {
-    case PROP_INVERT:
-      filtersobel->invert = g_value_get_boolean (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  case PROP_INVERT:
+    filtersobel->invert = g_value_get_boolean (value);
+    break;
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
@@ -200,23 +195,22 @@ gst_gl_filtersobel_get_property (GObject * object, guint prop_id,
   GstGLFilterSobel *filtersobel = GST_GL_FILTERSOBEL (object);
 
   switch (prop_id) {
-    case PROP_INVERT:
-      g_value_set_boolean (value, filtersobel->invert);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  case PROP_INVERT:
+    g_value_set_boolean (value, filtersobel->invert);
+    break;
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
-gst_gl_filtersobel_init_shader (GstGLFilter * filter)
+gst_gl_filtersobel_init_shader (GstGLFilter* filter)
 {
-  GstGLFilterSobel *filtersobel = GST_GL_FILTERSOBEL (filter);
+  GstGLFilterSobelfiltersobel = GST_GL_FILTERSOBEL (filter);
 
   //blocking call, wait the opengl thread has compiled the shader
-  gst_gl_display_gen_shader (filter->display, 0, sobel_fragment_source,
-      &filtersobel->shader0);
+  gst_gl_display_gen_shader (filter->display, 0, sobel_fragment_source, &filtersobel->shader0);
 }
 
 static void
@@ -232,11 +226,11 @@ gst_gl_filtersobel_draw_texture (GstGLFilterSobel * filtersobel, GLuint tex)
 
   glTexCoord2f (0.0, 0.0);
   glVertex2f (-1.0, -1.0);
-  glTexCoord2f ((gfloat) filter->width, 0.0);
+  glTexCoord2f ((gfloat)filter->width, 0.0);
   glVertex2f (1.0, -1.0);
-  glTexCoord2f ((gfloat) filter->width, (gfloat) filter->height);
+  glTexCoord2f ((gfloat)filter->width, (gfloat)filter->height);
   glVertex2f (1.0, 1.0);
-  glTexCoord2f (0.0, (gfloat) filter->height);
+  glTexCoord2f (0.0, (gfloat)filter->height);
   glVertex2f (-1.0, 1.0);
 
   glEnd ();
@@ -259,34 +253,33 @@ change_view (GstGLDisplay *display, gpointer data)
   }*/
 
 static gboolean
-gst_gl_filtersobel_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
-    GstGLBuffer * outbuf)
+gst_gl_filtersobel_filter (GstGLFilter* filter, GstGLBuffer* inbuf,
+                               GstGLBuffer* outbuf)
 {
-  GstGLFilterSobel *filtersobel = GST_GL_FILTERSOBEL (filter);
+  GstGLFilterSobel* filtersobel = GST_GL_FILTERSOBEL(filter);
 
 //  gst_gl_display_thread_add (filter->display, change_view, filtersobel);
 
   gst_gl_filter_render_to_target (filter, inbuf->texture, outbuf->texture,
-      gst_gl_filtersobel_callback, filtersobel);
+                                 gst_gl_filtersobel_callback, filtersobel);
 
   return TRUE;
 }
 
 static void
-gst_gl_filtersobel_callback (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_filtersobel_callback (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLFilterSobel *filtersobel = GST_GL_FILTERSOBEL (stuff);
+  GstGLFilterSobelfiltersobel = GST_GL_FILTERSOBEL (stuff);
 
-  gfloat hkern[9] = {
+  gfloat hkern[9] = { 
     1.0, 0.0, -1.0,
     2.0, 0.0, -2.0,
     1.0, 0.0, -1.0
   };
-
+  
   gfloat vkern[9] = {
-    1.0, 2.0, 1.0,
-    0.0, 0.0, 0.0,
+     1.0,  2.0,  1.0,
+     0.0,  0.0,  0.0,
     -1.0, -2.0, -1.0
   };
 
@@ -305,8 +298,7 @@ gst_gl_filtersobel_callback (gint width, gint height, guint texture,
   gst_gl_shader_set_uniform_1fv (filtersobel->shader0, "hkern", 9, hkern);
   gst_gl_shader_set_uniform_1fv (filtersobel->shader0, "vkern", 9, vkern);
 
-  gst_gl_shader_set_uniform_1i (filtersobel->shader0, "invert",
-      filtersobel->invert);
+  gst_gl_shader_set_uniform_1i (filtersobel->shader0, "invert", filtersobel->invert);
 
   gst_gl_filtersobel_draw_texture (filtersobel, texture);
 }
index 4881b7a..c8eb700 100644 (file)
@@ -119,10 +119,10 @@ static void gst_glimage_sink_implements_init (GstImplementsInterfaceClass *
     klass);
 
 static const GstElementDetails gst_glimage_sink_details =
-GST_ELEMENT_DETAILS ("OpenGL video sink",
-    "Sink/Video",
-    "A videosink based on OpenGL",
-    "Julien Isorce <julien.isorce@gmail.com>");
+    GST_ELEMENT_DETAILS ("OpenGL video sink",
+        "Sink/Video",
+        "A videosink based on OpenGL",
+        "Julien Isorce <julien.isorce@gmail.com>");
 
 static GstStaticPadTemplate gst_glimage_sink_template =
     GST_STATIC_PAD_TEMPLATE ("sink",
@@ -139,10 +139,10 @@ static GstStaticPadTemplate gst_glimage_sink_template =
 
 enum
 {
-  ARG_0,
-  ARG_DISPLAY,
-  PROP_CLIENT_RESHAPE_CALLBACK,
-  PROP_CLIENT_DRAW_CALLBACK
+    ARG_0,
+    ARG_DISPLAY,
+    PROP_CLIENT_RESHAPE_CALLBACK,
+    PROP_CLIENT_DRAW_CALLBACK
 };
 
 GST_BOILERPLATE_FULL (GstGLImageSink, gst_glimage_sink, GstVideoSink,
@@ -158,7 +158,7 @@ gst_glimage_sink_init_interfaces (GType type)
     NULL
   };
 
-  static const GInterfaceInfo xoverlay_info = {
+   static const GInterfaceInfo xoverlay_info = {
     (GInterfaceInitFunc) gst_glimage_sink_xoverlay_init,
     NULL,
     NULL,
@@ -170,7 +170,7 @@ gst_glimage_sink_init_interfaces (GType type)
   g_type_add_interface_static (type, GST_TYPE_X_OVERLAY, &xoverlay_info);
 
   GST_DEBUG_CATEGORY_INIT (gst_debug_glimage_sink, "glimagesink", 0,
-      "OpenGL Video Sink");
+    "OpenGL Video Sink");
 }
 
 static void
@@ -185,125 +185,127 @@ gst_glimage_sink_base_init (gpointer g_class)
 }
 
 static void
-gst_glimage_sink_class_init (GstGLImageSinkClass * klass)
+gst_glimage_sink_class_init (GstGLImageSinkClass* klass)
 {
-  GObjectClass *gobject_class;
-  GstElementClass *gstelement_class;
-  GstBaseSinkClass *gstbasesink_class;
+    GObjectClass *gobject_class;
+    GstElementClass *gstelement_class;
+    GstBaseSinkClass *gstbasesink_class;
 
-  gobject_class = (GObjectClass *) klass;
-  gstelement_class = (GstElementClass *) klass;
-  gstbasesink_class = (GstBaseSinkClass *) klass;
+    gobject_class = (GObjectClass *) klass;
+    gstelement_class = (GstElementClass *) klass;
+    gstbasesink_class = (GstBaseSinkClass *) klass;
 
-  gobject_class->set_property = gst_glimage_sink_set_property;
-  gobject_class->get_property = gst_glimage_sink_get_property;
+    gobject_class->set_property = gst_glimage_sink_set_property;
+    gobject_class->get_property = gst_glimage_sink_get_property;
 
-  g_object_class_install_property (gobject_class, ARG_DISPLAY,
+    g_object_class_install_property (gobject_class, ARG_DISPLAY,
       g_param_spec_string ("display", "Display", "Display name",
           NULL, G_PARAM_READWRITE));
 
-  g_object_class_install_property (gobject_class, PROP_CLIENT_RESHAPE_CALLBACK,
-      g_param_spec_pointer ("client_reshape_callback",
-          "Client reshape callback",
+    g_object_class_install_property (gobject_class, PROP_CLIENT_RESHAPE_CALLBACK,
+      g_param_spec_pointer ("client_reshape_callback", "Client reshape callback",
           "Define a custom reshape callback in a client code",
           G_PARAM_WRITABLE));
 
-  g_object_class_install_property (gobject_class, PROP_CLIENT_DRAW_CALLBACK,
+    g_object_class_install_property (gobject_class, PROP_CLIENT_DRAW_CALLBACK,
       g_param_spec_pointer ("client_draw_callback", "Client draw callback",
-          "Define a custom draw callback in a client code", G_PARAM_WRITABLE));
+          "Define a custom draw callback in a client code",
+          G_PARAM_WRITABLE));
 
-  gobject_class->finalize = gst_glimage_sink_finalize;
+    gobject_class->finalize = gst_glimage_sink_finalize;
 
-  gstelement_class->change_state = gst_glimage_sink_change_state;
+    gstelement_class->change_state = gst_glimage_sink_change_state;
 
-  gstbasesink_class->set_caps = gst_glimage_sink_set_caps;
-  gstbasesink_class->get_times = gst_glimage_sink_get_times;
-  gstbasesink_class->preroll = gst_glimage_sink_render;
-  gstbasesink_class->render = gst_glimage_sink_render;
-  gstbasesink_class->start = gst_glimage_sink_start;
-  gstbasesink_class->stop = gst_glimage_sink_stop;
+    gstbasesink_class->set_caps = gst_glimage_sink_set_caps;
+    gstbasesink_class->get_times = gst_glimage_sink_get_times;
+    gstbasesink_class->preroll = gst_glimage_sink_render;
+    gstbasesink_class->render = gst_glimage_sink_render;
+    gstbasesink_class->start = gst_glimage_sink_start;
+    gstbasesink_class->stop = gst_glimage_sink_stop;
 }
 
 static void
-gst_glimage_sink_init (GstGLImageSink * glimage_sink,
-    GstGLImageSinkClass * glimage_sink_class)
+gst_glimage_sink_init (GstGLImageSink* glimage_sink,
+    GstGLImageSinkClass* glimage_sink_class)
 {
-  glimage_sink->display_name = NULL;
-  glimage_sink->window_id = 0;
-  glimage_sink->display = NULL;
-  glimage_sink->stored_buffer = NULL;
-  glimage_sink->clientReshapeCallback = NULL;
-  glimage_sink->clientDrawCallback = NULL;
+    glimage_sink->display_name = NULL;
+    glimage_sink->window_id = 0;
+    glimage_sink->display = NULL;
+    glimage_sink->stored_buffer = NULL;
+    glimage_sink->clientReshapeCallback = NULL;
+    glimage_sink->clientDrawCallback = NULL;
 }
 
 static void
-gst_glimage_sink_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
+gst_glimage_sink_set_property (GObject* object, guint prop_id,
+    const GValue* value, GParamSpec* pspec)
 {
-  GstGLImageSink *glimage_sink;
+    GstGLImageSink *glimage_sink;
 
-  g_return_if_fail (GST_IS_GLIMAGE_SINK (object));
+    g_return_if_fail (GST_IS_GLIMAGE_SINK (object));
 
-  glimage_sink = GST_GLIMAGE_SINK (object);
+    glimage_sink = GST_GLIMAGE_SINK (object);
 
-  switch (prop_id) {
-    case ARG_DISPLAY:
+    switch (prop_id)
     {
-      g_free (glimage_sink->display_name);
-      glimage_sink->display_name = g_strdup (g_value_get_string (value));
-      break;
+        case ARG_DISPLAY:
+        {
+            g_free (glimage_sink->display_name);
+            glimage_sink->display_name = g_strdup (g_value_get_string (value));
+            break;
+        }
+        case PROP_CLIENT_RESHAPE_CALLBACK:
+        {
+            glimage_sink->clientReshapeCallback = g_value_get_pointer (value);
+            break;
+        }
+        case PROP_CLIENT_DRAW_CALLBACK:
+        {
+            glimage_sink->clientDrawCallback = g_value_get_pointer (value);
+            break;
+        }
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
     }
-    case PROP_CLIENT_RESHAPE_CALLBACK:
-    {
-      glimage_sink->clientReshapeCallback = g_value_get_pointer (value);
-      break;
-    }
-    case PROP_CLIENT_DRAW_CALLBACK:
-    {
-      glimage_sink->clientDrawCallback = g_value_get_pointer (value);
-      break;
-    }
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
 }
 
 static void
-gst_glimage_sink_finalize (GObject * object)
+gst_glimage_sink_finalize (GObject* object)
 {
-  GstGLImageSink *glimage_sink;
+    GstGLImageSink* glimage_sink;
 
-  g_return_if_fail (GST_IS_GLIMAGE_SINK (object));
+    g_return_if_fail (GST_IS_GLIMAGE_SINK (object));
 
-  glimage_sink = GST_GLIMAGE_SINK (object);
+    glimage_sink = GST_GLIMAGE_SINK (object);
 
-  if (glimage_sink->caps)
-    gst_caps_unref (glimage_sink->caps);
+    if (glimage_sink->caps)
+        gst_caps_unref (glimage_sink->caps);
 
-  g_free (glimage_sink->display_name);
+    g_free (glimage_sink->display_name);
 
-  GST_DEBUG ("finalized");
+    GST_DEBUG ("finalized");
 }
 
 static void
-gst_glimage_sink_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
+gst_glimage_sink_get_property (GObject* object, guint prop_id,
+    GValue* value, GParamSpec* pspec)
 {
-  GstGLImageSink *glimage_sink;
+    GstGLImageSink *glimage_sink;
 
-  g_return_if_fail (GST_IS_GLIMAGE_SINK (object));
+    g_return_if_fail (GST_IS_GLIMAGE_SINK (object));
 
-  glimage_sink = GST_GLIMAGE_SINK (object);
+    glimage_sink = GST_GLIMAGE_SINK (object);
 
-  switch (prop_id) {
-    case ARG_DISPLAY:
-      g_value_set_string (value, glimage_sink->display_name);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
+    switch (prop_id)
+    {
+        case ARG_DISPLAY:
+            g_value_set_string (value, glimage_sink->display_name);
+            break;
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
+    }
 }
 
 /*
@@ -311,47 +313,49 @@ gst_glimage_sink_get_property (GObject * object, guint prop_id,
  */
 
 static GstStateChangeReturn
-gst_glimage_sink_change_state (GstElement * element, GstStateChange transition)
+gst_glimage_sink_change_state (GstElement* element, GstStateChange transition)
 {
-  GstGLImageSink *glimage_sink;
-  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-
-  GST_DEBUG ("change state");
-
-  glimage_sink = GST_GLIMAGE_SINK (element);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_NULL_TO_READY:
-      break;
-    case GST_STATE_CHANGE_READY_TO_PAUSED:
-      break;
-    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
-      break;
-    default:
-      break;
-  }
-
-  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-  if (ret == GST_STATE_CHANGE_FAILURE)
-    return ret;
+    GstGLImageSink* glimage_sink;
+    GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+
+    GST_DEBUG ("change state");
 
-  switch (transition) {
-    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
-      break;
-    case GST_STATE_CHANGE_PAUSED_TO_READY:
-      gst_glimage_sink_stop (GST_BASE_SINK (glimage_sink));
-      glimage_sink->fps_n = 0;
-      glimage_sink->fps_d = 1;
-      GST_VIDEO_SINK_WIDTH (glimage_sink) = 0;
-      GST_VIDEO_SINK_HEIGHT (glimage_sink) = 0;
-      break;
-    case GST_STATE_CHANGE_READY_TO_NULL:
-      break;
-    default:
-      break;
-  }
-
-  return ret;
+    glimage_sink = GST_GLIMAGE_SINK (element);
+
+    switch (transition)
+    {
+        case GST_STATE_CHANGE_NULL_TO_READY:
+            break;
+        case GST_STATE_CHANGE_READY_TO_PAUSED:
+            break;
+        case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+            break;
+        default:
+            break;
+    }
+
+    ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+    if (ret == GST_STATE_CHANGE_FAILURE)
+        return ret;
+
+    switch (transition)
+    {
+        case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+            break;
+        case GST_STATE_CHANGE_PAUSED_TO_READY:
+            gst_glimage_sink_stop (GST_BASE_SINK (glimage_sink));
+            glimage_sink->fps_n = 0;
+            glimage_sink->fps_d = 1;
+            GST_VIDEO_SINK_WIDTH (glimage_sink) = 0;
+            GST_VIDEO_SINK_HEIGHT (glimage_sink) = 0;
+            break;
+        case GST_STATE_CHANGE_READY_TO_NULL:
+            break;
+        default:
+            break;
+    }
+
+    return ret;
 }
 
 /*
@@ -359,239 +363,248 @@ gst_glimage_sink_change_state (GstElement * element, GstStateChange transition)
  */
 
 static gboolean
-gst_glimage_sink_start (GstBaseSink * bsink)
+gst_glimage_sink_start (GstBaseSink* bsink)
 {
-  //GstGLImageSink* glimage_sink = GST_GLIMAGE_SINK (bsink);
+    //GstGLImageSink* glimage_sink = GST_GLIMAGE_SINK (bsink);
 
-  GST_DEBUG ("start");
+    GST_DEBUG ("start");
 
-  return TRUE;
+    return TRUE;
 }
 
 static gboolean
-gst_glimage_sink_stop (GstBaseSink * bsink)
+gst_glimage_sink_stop (GstBaseSink* bsink)
 {
-  GstGLImageSink *glimage_sink;
+    GstGLImageSink* glimage_sink;
 
-  GST_DEBUG ("stop");
+    GST_DEBUG ("stop");
 
-  glimage_sink = GST_GLIMAGE_SINK (bsink);
+    glimage_sink = GST_GLIMAGE_SINK (bsink);
 
-  if (glimage_sink->stored_buffer) {
-    gst_buffer_unref (glimage_sink->stored_buffer);
-    glimage_sink->stored_buffer = NULL;
-  }
-  if (glimage_sink->display) {
-    g_object_unref (glimage_sink->display);
-    glimage_sink->display = NULL;
-  }
+    if (glimage_sink->stored_buffer)
+    {
+        gst_buffer_unref (glimage_sink->stored_buffer);
+        glimage_sink->stored_buffer = NULL;
+    }
+    if (glimage_sink->display)
+    {
+        g_object_unref (glimage_sink->display);
+        glimage_sink->display = NULL;
+    }
 
-  return TRUE;
+    return TRUE;
 }
 
 static void
-gst_glimage_sink_get_times (GstBaseSink * bsink, GstBuffer * buf,
-    GstClockTime * start, GstClockTime * end)
+gst_glimage_sink_get_times (GstBaseSink* bsink, GstBuffer* buf,
+    GstClockTime* start, GstClockTime* end)
 {
-  GstGLImageSink *glimagesink;
-
-  glimagesink = GST_GLIMAGE_SINK (bsink);
-
-  if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
-    *start = GST_BUFFER_TIMESTAMP (buf);
-    if (GST_BUFFER_DURATION_IS_VALID (buf))
-      *end = *start + GST_BUFFER_DURATION (buf);
-    else {
-      if (glimagesink->fps_n > 0) {
-        *end = *start +
-            gst_util_uint64_scale_int (GST_SECOND, glimagesink->fps_d,
-            glimagesink->fps_n);
-      }
+    GstGLImageSink* glimagesink;
+
+    glimagesink = GST_GLIMAGE_SINK (bsink);
+
+    if (GST_BUFFER_TIMESTAMP_IS_VALID (buf))
+    {
+        *start = GST_BUFFER_TIMESTAMP (buf);
+        if (GST_BUFFER_DURATION_IS_VALID (buf))
+            *end = *start + GST_BUFFER_DURATION (buf);
+        else
+        {
+            if (glimagesink->fps_n > 0) {
+            *end = *start +
+                gst_util_uint64_scale_int (GST_SECOND, glimagesink->fps_d,
+                glimagesink->fps_n);
+            }
+        }
     }
-  }
 }
 
 static gboolean
-gst_glimage_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
+gst_glimage_sink_set_caps (GstBaseSink* bsink, GstCaps* caps)
 {
-  GstGLImageSink *glimage_sink;
-  gint width;
-  gint height;
-  gboolean ok;
-  gint fps_n, fps_d;
-  gint par_n, par_d;
-  GstVideoFormat format;
-  GstStructure *structure;
-  gboolean is_gl;
-
-  GST_DEBUG ("set caps with %" GST_PTR_FORMAT, caps);
-
-  glimage_sink = GST_GLIMAGE_SINK (bsink);
-
-  structure = gst_caps_get_structure (caps, 0);
-  if (gst_structure_has_name (structure, "video/x-raw-gl")) {
-    is_gl = TRUE;
-    format = GST_VIDEO_FORMAT_UNKNOWN;
-    ok = gst_structure_get_int (structure, "width", &width);
-    ok &= gst_structure_get_int (structure, "height", &height);
-  } else {
-    is_gl = FALSE;
-    ok = gst_video_format_parse_caps (caps, &format, &width, &height);
-  }
-  ok &= gst_video_parse_caps_framerate (caps, &fps_n, &fps_d);
-  ok &= gst_video_parse_caps_pixel_aspect_ratio (caps, &par_n, &par_d);
-
-  if (!ok)
-    return FALSE;
-
-  GST_VIDEO_SINK_WIDTH (glimage_sink) = width;
-  GST_VIDEO_SINK_HEIGHT (glimage_sink) = height;
-  glimage_sink->is_gl = is_gl;
-  glimage_sink->format = format;
-  glimage_sink->width = width;
-  glimage_sink->height = height;
-  glimage_sink->fps_n = fps_n;
-  glimage_sink->fps_d = fps_d;
-  glimage_sink->par_n = par_n;
-  glimage_sink->par_d = par_d;
-
-  if (!glimage_sink->window_id)
-    gst_x_overlay_prepare_xwindow_id (GST_X_OVERLAY (glimage_sink));
-
-  return TRUE;
+    GstGLImageSink* glimage_sink;
+    gint width;
+    gint height;
+    gboolean ok;
+    gint fps_n, fps_d;
+    gint par_n, par_d;
+    GstVideoFormat format;
+    GstStructure *structure;
+    gboolean is_gl;
+
+    GST_DEBUG ("set caps with %" GST_PTR_FORMAT, caps);
+
+    glimage_sink = GST_GLIMAGE_SINK (bsink);
+
+    structure = gst_caps_get_structure (caps, 0);
+    if (gst_structure_has_name (structure, "video/x-raw-gl")) {
+        is_gl = TRUE;
+        format = GST_VIDEO_FORMAT_UNKNOWN;
+        ok = gst_structure_get_int (structure, "width", &width);
+        ok &= gst_structure_get_int (structure, "height", &height);
+    } else {
+        is_gl = FALSE;
+        ok = gst_video_format_parse_caps (caps, &format, &width, &height);
+    }
+    ok &= gst_video_parse_caps_framerate (caps, &fps_n, &fps_d);
+    ok &= gst_video_parse_caps_pixel_aspect_ratio (caps, &par_n, &par_d);
+
+    if (!ok)
+        return FALSE;
+
+    GST_VIDEO_SINK_WIDTH (glimage_sink) = width;
+    GST_VIDEO_SINK_HEIGHT (glimage_sink) = height;
+    glimage_sink->is_gl = is_gl;
+    glimage_sink->format = format;
+    glimage_sink->width = width;
+    glimage_sink->height = height;
+    glimage_sink->fps_n = fps_n;
+    glimage_sink->fps_d = fps_d;
+    glimage_sink->par_n = par_n;
+    glimage_sink->par_d = par_d;
+
+    if (!glimage_sink->window_id)
+        gst_x_overlay_prepare_xwindow_id (GST_X_OVERLAY (glimage_sink));
+
+    return TRUE;
 }
 
 static GstFlowReturn
-gst_glimage_sink_render (GstBaseSink * bsink, GstBuffer * buf)
+gst_glimage_sink_render (GstBaseSink* bsink, GstBuffer* buf)
 {
-  GstGLImageSink *glimage_sink = NULL;
-  GstGLBuffer *gl_buffer = NULL;
+    GstGLImageSink* glimage_sink = NULL;
+    GstGLBuffer* gl_buffer = NULL;
 
-  glimage_sink = GST_GLIMAGE_SINK (bsink);
+    glimage_sink = GST_GLIMAGE_SINK (bsink);
 
-  GST_INFO ("buffer size: %d", GST_BUFFER_SIZE (buf));
+    GST_INFO ("buffer size: %d", GST_BUFFER_SIZE (buf));
 
-  //is gl
-  if (glimage_sink->is_gl) {
-    //increment gl buffer ref before storage
-    gl_buffer = GST_GL_BUFFER (gst_buffer_ref (buf));
+    //is gl
+    if (glimage_sink->is_gl)
+    {
+        //increment gl buffer ref before storage
+        gl_buffer = GST_GL_BUFFER (gst_buffer_ref (buf));
 
-    //if glimagesink has not the display yet
-    if (glimage_sink->display == NULL) {
-      glimage_sink->display = g_object_ref (gl_buffer->display);
+        //if glimagesink has not the display yet
+        if (glimage_sink->display == NULL)
+        {
+            glimage_sink->display = g_object_ref (gl_buffer->display);
 
-      if (glimage_sink->window_id)
-        gst_gl_display_set_window_id (glimage_sink->display,
-            glimage_sink->window_id);
+            if (glimage_sink->window_id)
+                gst_gl_display_set_window_id (glimage_sink->display, glimage_sink->window_id);
 
-      gst_gl_display_set_client_reshape_callback (glimage_sink->display,
-          glimage_sink->clientReshapeCallback);
+            gst_gl_display_set_client_reshape_callback (glimage_sink->display,
+                glimage_sink->clientReshapeCallback);
 
-      gst_gl_display_set_client_draw_callback (glimage_sink->display,
-          glimage_sink->clientDrawCallback);
+            gst_gl_display_set_client_draw_callback (glimage_sink->display,
+                glimage_sink->clientDrawCallback);
+        }
     }
-  }
-  //is not gl
-  else {
-    //if glimagesink has not the display yet
-    if (glimage_sink->display == NULL) {
-      //create a display
-      glimage_sink->display = gst_gl_display_new ();
-
-      //init opengl context
-      gst_gl_display_create_context (glimage_sink->display,
-          glimage_sink->width, glimage_sink->height);
-
-      if (glimage_sink->window_id)
-        gst_gl_display_set_window_id (glimage_sink->display,
-            glimage_sink->window_id);
-
-      //init colorspace conversion if needed
-      gst_gl_display_init_upload (glimage_sink->display, glimage_sink->format,
-          glimage_sink->width, glimage_sink->height,
-          glimage_sink->width, glimage_sink->height);
-
-      gst_gl_display_set_client_reshape_callback (glimage_sink->display,
-          glimage_sink->clientReshapeCallback);
-
-      gst_gl_display_set_client_draw_callback (glimage_sink->display,
-          glimage_sink->clientDrawCallback);
+    //is not gl
+    else
+    {
+        //if glimagesink has not the display yet
+        if (glimage_sink->display == NULL)
+        {
+            //create a display
+            glimage_sink->display = gst_gl_display_new ();
+
+            //init opengl context
+            gst_gl_display_create_context (glimage_sink->display,
+                glimage_sink->width, glimage_sink->height);
+
+            if (glimage_sink->window_id)
+                gst_gl_display_set_window_id (glimage_sink->display, glimage_sink->window_id);
+
+            //init colorspace conversion if needed
+            gst_gl_display_init_upload (glimage_sink->display, glimage_sink->format,
+                glimage_sink->width, glimage_sink->height,
+                glimage_sink->width, glimage_sink->height);
+
+            gst_gl_display_set_client_reshape_callback (glimage_sink->display,
+                glimage_sink->clientReshapeCallback);
+
+            gst_gl_display_set_client_draw_callback (glimage_sink->display,
+                glimage_sink->clientDrawCallback);
+        }
+
+        //blocking call
+        gl_buffer = gst_gl_buffer_new (glimage_sink->display,
+            glimage_sink->width, glimage_sink->height);
+
+        //blocking call
+        gst_gl_display_do_upload(glimage_sink->display, gl_buffer->texture,
+          glimage_sink->width, glimage_sink->height, GST_BUFFER_DATA (buf));
+
+        //gl_buffer is created in this block, so the gl buffer is already referenced
     }
-    //blocking call
-    gl_buffer = gst_gl_buffer_new (glimage_sink->display,
-        glimage_sink->width, glimage_sink->height);
 
-    //blocking call
-    gst_gl_display_do_upload (glimage_sink->display, gl_buffer->texture,
-        glimage_sink->width, glimage_sink->height, GST_BUFFER_DATA (buf));
+    //the buffer is cleared when an other comes in
+    if (glimage_sink->stored_buffer)
+    {
+        gst_buffer_unref (glimage_sink->stored_buffer);
+        glimage_sink->stored_buffer = NULL;
+    }
 
-    //gl_buffer is created in this block, so the gl buffer is already referenced
-  }
+    //store current buffer
+    glimage_sink->stored_buffer = gl_buffer;
 
-  //the buffer is cleared when an other comes in
-  if (glimage_sink->stored_buffer) {
-    gst_buffer_unref (glimage_sink->stored_buffer);
-    glimage_sink->stored_buffer = NULL;
-  }
-  //store current buffer
-  glimage_sink->stored_buffer = gl_buffer;
-
-  //redisplay opengl scene
-  if (gl_buffer->texture &&
-      gst_gl_display_redisplay (glimage_sink->display,
-          gl_buffer->texture, gl_buffer->width, gl_buffer->height))
-    return GST_FLOW_OK;
-  else
-    return GST_FLOW_UNEXPECTED;
+    //redisplay opengl scene
+    if (gl_buffer->texture &&
+        gst_gl_display_redisplay (glimage_sink->display,
+            gl_buffer->texture, gl_buffer->width, gl_buffer->height))
+        return GST_FLOW_OK;
+    else
+        return GST_FLOW_UNEXPECTED;
 }
 
 
 static void
-gst_glimage_sink_xoverlay_init (GstXOverlayClass * iface)
+gst_glimage_sink_xoverlay_init (GstXOverlayClass* iface)
 {
-  iface->set_xwindow_id = gst_glimage_sink_set_xwindow_id;
-  iface->expose = gst_glimage_sink_expose;
+    iface->set_xwindow_id = gst_glimage_sink_set_xwindow_id;
+    iface->expose = gst_glimage_sink_expose;
 }
 
 
 static void
-gst_glimage_sink_set_xwindow_id (GstXOverlay * overlay, gulong window_id)
+gst_glimage_sink_set_xwindow_id (GstXOverlay* overlay, gulong window_id)
 {
-  GstGLImageSink *glimage_sink = GST_GLIMAGE_SINK (overlay);
+    GstGLImageSink* glimage_sink = GST_GLIMAGE_SINK (overlay);
 
-  g_return_if_fail (GST_IS_GLIMAGE_SINK (overlay));
+    g_return_if_fail (GST_IS_GLIMAGE_SINK (overlay));
 
-  GST_DEBUG ("set_xwindow_id %ld", window_id);
+    GST_DEBUG ("set_xwindow_id %ld", window_id);
 
-  if (glimage_sink->window_id == window_id)
-    return;
+    if (glimage_sink->window_id == window_id)
+      return;
 
-  if (window_id)
-    glimage_sink->window_id = window_id;
+    if (window_id)
+        glimage_sink->window_id = window_id;
 }
 
 
 static void
-gst_glimage_sink_expose (GstXOverlay * overlay)
+gst_glimage_sink_expose (GstXOverlay* overlay)
 {
-  GstGLImageSink *glimage_sink = GST_GLIMAGE_SINK (overlay);
+    GstGLImageSink* glimage_sink = GST_GLIMAGE_SINK (overlay);
 
-  //redisplay opengl scene
-  if (glimage_sink->display && glimage_sink->window_id)
-    gst_gl_display_redisplay (glimage_sink->display, 0, 0, 0);
+    //redisplay opengl scene
+    if (glimage_sink->display && glimage_sink->window_id)
+        gst_gl_display_redisplay (glimage_sink->display, 0, 0, 0);
 }
 
 
 static gboolean
-gst_glimage_sink_interface_supported (GstImplementsInterface * iface,
+gst_glimage_sink_interface_supported (GstImplementsInterface* iface,
     GType type)
 {
-  return TRUE;
+    return TRUE;
 }
 
 
 static void
-gst_glimage_sink_implements_init (GstImplementsInterfaceClass * klass)
+gst_glimage_sink_implements_init (GstImplementsInterfaceClass* klass)
 {
-  klass->supported = gst_glimage_sink_interface_supported;
+    klass->supported = gst_glimage_sink_interface_supported;
 }
index 81e1d0b..94912bb 100644 (file)
@@ -76,24 +76,24 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
   GST_DEBUG_CATEGORY_INIT (gst_gl_pixbufoverlay_debug, "glpixbufoverlay", 0, "glpixbufoverlay element");
 
 GST_BOILERPLATE_FULL (GstGLPixbufOverlay, gst_gl_pixbufoverlay, GstGLFilter,
-    GST_TYPE_GL_FILTER, DEBUG_INIT);
+                     GST_TYPE_GL_FILTER, DEBUG_INIT);
 
 static void gst_gl_pixbufoverlay_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
+                                        const GValue * value, GParamSpec * pspec);
 static void gst_gl_pixbufoverlay_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
+                                        GValue * value, GParamSpec * pspec);
 
-static void gst_gl_pixbufoverlay_init_resources (GstGLFilter * filter);
-static void gst_gl_pixbufoverlay_reset_resources (GstGLFilter * filter);
+static void gst_gl_pixbufoverlay_init_resources (GstGLFilter* filter);
+static void gst_gl_pixbufoverlay_reset_resources (GstGLFilter* filter);
 
 static gboolean gst_gl_pixbufoverlay_filter (GstGLFilter * filter,
-    GstGLBuffer * inbuf, GstGLBuffer * outbuf);
+                                      GstGLBuffer * inbuf, GstGLBuffer * outbuf);
 
-static const GstElementDetails element_details =
-GST_ELEMENT_DETAILS ("Gstreamer OpenGL PixbufOverlay",
-    "Filter/Effect",
-    "Overlay GL video texture with a gdkpixbuf",
-    "Filippo Argiolas <filippo.argiolas@gmail.com>");
+static const GstElementDetails element_details = GST_ELEMENT_DETAILS (
+  "Gstreamer OpenGL PixbufOverlay",
+  "Filter/Effect",
+  "Overlay GL video texture with a gdkpixbuf",
+  "Filippo Argiolas <filippo.argiolas@gmail.com>");
 
 enum
 {
@@ -110,17 +110,17 @@ enum
 
 /* init resources that need a gl context */
 static void
-gst_gl_pixbufoverlay_init_gl_resources (GstGLFilter * filter)
+gst_gl_pixbufoverlay_init_gl_resources (GstGLFilter *filter)
 {
 //  GstGLPixbufOverlay *pixbufoverlay = GST_GL_PIXBUFOVERLAY (filter);
 }
 
 /* free resources that need a gl context */
 static void
-gst_gl_pixbufoverlay_reset_gl_resources (GstGLFilter * filter)
+gst_gl_pixbufoverlay_reset_gl_resources (GstGLFilter *filter)
 {
   GstGLPixbufOverlay *pixbufoverlay = GST_GL_PIXBUFOVERLAY (filter);
-
+  
   glDeleteTextures (1, &pixbufoverlay->pbuftexture);
 }
 
@@ -142,31 +142,29 @@ gst_gl_pixbufoverlay_class_init (GstGLPixbufOverlayClass * klass)
   gobject_class->get_property = gst_gl_pixbufoverlay_get_property;
 
   GST_GL_FILTER_CLASS (klass)->filter = gst_gl_pixbufoverlay_filter;
-  GST_GL_FILTER_CLASS (klass)->display_init_cb =
-      gst_gl_pixbufoverlay_init_gl_resources;
-  GST_GL_FILTER_CLASS (klass)->display_reset_cb =
-      gst_gl_pixbufoverlay_reset_gl_resources;
+  GST_GL_FILTER_CLASS (klass)->display_init_cb = gst_gl_pixbufoverlay_init_gl_resources;
+  GST_GL_FILTER_CLASS (klass)->display_reset_cb = gst_gl_pixbufoverlay_reset_gl_resources;
   GST_GL_FILTER_CLASS (klass)->onStart = gst_gl_pixbufoverlay_init_resources;
   GST_GL_FILTER_CLASS (klass)->onStop = gst_gl_pixbufoverlay_reset_resources;
 
   g_object_class_install_property (gobject_class,
-      PROP_LOCATION,
-      g_param_spec_string ("location",
-          "Location of the image",
-          "Location of the image", NULL, G_PARAM_READWRITE));
+                                   PROP_LOCATION,
+                                   g_param_spec_string ("location",
+                                                        "Location of the image", 
+                                                        "Location of the image", 
+                                                        NULL, G_PARAM_READWRITE));
   /*
-     g_object_class_install_property (gobject_class,
-     PROP_STRETCH,
-     g_param_spec_boolean ("stretch",
-     "Stretch the image to texture size", 
-     "Stretch the image to fit video texture size", 
-     TRUE, G_PARAM_READWRITE));
-   */
+  g_object_class_install_property (gobject_class,
+                                   PROP_STRETCH,
+                                   g_param_spec_boolean ("stretch",
+                                                         "Stretch the image to texture size", 
+                                                         "Stretch the image to fit video texture size", 
+                                                         TRUE, G_PARAM_READWRITE));
+  */
 }
 
 void
-gst_gl_pixbufoverlay_draw_texture (GstGLPixbufOverlay * pixbufoverlay,
-    GLuint tex)
+gst_gl_pixbufoverlay_draw_texture (GstGLPixbufOverlay * pixbufoverlay, GLuint tex)
 {
   GstGLFilter *filter = GST_GL_FILTER (pixbufoverlay);
 
@@ -190,16 +188,15 @@ gst_gl_pixbufoverlay_draw_texture (GstGLPixbufOverlay * pixbufoverlay,
 
   glEnd ();
 
-  if (pixbufoverlay->pbuftexture == 0)
-    return;
+  if (pixbufoverlay->pbuftexture == 0) return;
 
 //  if (pixbufoverlay->stretch) {
-  width = pixbufoverlay->width;
-  height = pixbufoverlay->height;
+    width = pixbufoverlay->width;
+    height = pixbufoverlay->height;
 //  }
 
-  glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-  glEnable (GL_BLEND);
+  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+  glEnable(GL_BLEND);
 
   glEnable (GL_TEXTURE_RECTANGLE_ARB);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, pixbufoverlay->pbuftexture);
@@ -222,8 +219,8 @@ gst_gl_pixbufoverlay_draw_texture (GstGLPixbufOverlay * pixbufoverlay,
 }
 
 static void
-gst_gl_pixbufoverlay_init (GstGLPixbufOverlay * pixbufoverlay,
-    GstGLPixbufOverlayClass * klass)
+gst_gl_pixbufoverlay_init (GstGLPixbufOverlay * pixbufoverlay, 
+                           GstGLPixbufOverlayClass * klass)
 {
   pixbufoverlay->location = NULL;
   pixbufoverlay->pixbuf = NULL;
@@ -236,7 +233,7 @@ gst_gl_pixbufoverlay_init (GstGLPixbufOverlay * pixbufoverlay,
 }
 
 static void
-gst_gl_pixbufoverlay_reset_resources (GstGLFilter * filter)
+gst_gl_pixbufoverlay_reset_resources (GstGLFilter* filter)
 {
 //  GstGLPixbufOverlay* pixbufoverlay = GST_GL_PIXBUFOVERLAY(filter);
 }
@@ -245,22 +242,21 @@ static void
 gst_gl_pixbufoverlay_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
 {
-  GstGLPixbufOverlay *pixbufoverlay = GST_GL_PIXBUFOVERLAY (object);
+  GstGLPixbufOverlay *pixbufoverlay = GST_GL_PIXBUFOVERLAY (object); 
 
   switch (prop_id) {
-    case PROP_LOCATION:
-      if (pixbufoverlay->location != NULL)
-        g_free (pixbufoverlay->location);
-      pixbufoverlay->pbuf_has_changed = TRUE;
-      pixbufoverlay->location = g_value_dup_string (value);
-      break;
+  case PROP_LOCATION:
+    if (pixbufoverlay->location != NULL) g_free (pixbufoverlay->location);
+    pixbufoverlay->pbuf_has_changed = TRUE;
+    pixbufoverlay->location = g_value_dup_string (value);
+    break;
 /*  case PROP_STRETCH:
     pixbufoverlay->stretch = g_value_get_boolean (value);
     break;
 */
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
@@ -271,79 +267,72 @@ gst_gl_pixbufoverlay_get_property (GObject * object, guint prop_id,
   GstGLPixbufOverlay *pixbufoverlay = GST_GL_PIXBUFOVERLAY (object);
 
   switch (prop_id) {
-    case PROP_LOCATION:
-      g_value_set_string (value, pixbufoverlay->location);
-      break;
+  case PROP_LOCATION:
+    g_value_set_string (value, pixbufoverlay->location);
+    break;
 /*  case PROP_STRETCH:
     g_value_set_boolean (value, pixbufoverlay->stretch);
     break;
 */
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
+  default:
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    break;
   }
 }
 
 static void
-gst_gl_pixbufoverlay_init_resources (GstGLFilter * filter)
+gst_gl_pixbufoverlay_init_resources (GstGLFilter* filter)
 {
 //  GstGLPixbufOverlay *pixbufoverlay = GST_GL_PIXBUFOVERLAY (filter);
 }
 
 static void
-gst_gl_pixbufoverlay_callback (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_pixbufoverlay_callback (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLPixbufOverlay *pixbufoverlay = GST_GL_PIXBUFOVERLAY (stuff);
-
+  GstGLPixbufOverlaypixbufoverlay = GST_GL_PIXBUFOVERLAY (stuff);
+  
   glMatrixMode (GL_PROJECTION);
   glLoadIdentity ();
 
   gst_gl_pixbufoverlay_draw_texture (pixbufoverlay, texture);
 }
 
-static void
-init_pixbuf_texture (GstGLDisplay * display, gpointer data)
+static void init_pixbuf_texture (GstGLDisplay *display, gpointer data)
 {
   GstGLPixbufOverlay *pixbufoverlay = GST_GL_PIXBUFOVERLAY (data);
-
+  
   glDeleteTextures (1, &pixbufoverlay->pbuftexture);
   glGenTextures (1, &pixbufoverlay->pbuftexture);
   glBindTexture (GL_TEXTURE_RECTANGLE_ARB, pixbufoverlay->pbuftexture);
   glTexImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA,
-      (gint) pixbufoverlay->width, (gint) pixbufoverlay->height, 0,
-      gdk_pixbuf_get_has_alpha (pixbufoverlay->pixbuf) ? GL_RGBA : GL_RGB,
-      GL_UNSIGNED_BYTE, gdk_pixbuf_get_pixels (pixbufoverlay->pixbuf));
+                (gint)pixbufoverlay->width, (gint)pixbufoverlay->height, 0,
+                gdk_pixbuf_get_has_alpha (pixbufoverlay->pixbuf) ? GL_RGBA : GL_RGB,
+                GL_UNSIGNED_BYTE, gdk_pixbuf_get_pixels (pixbufoverlay->pixbuf));
 }
 
 static gboolean
-gst_gl_pixbufoverlay_filter (GstGLFilter * filter, GstGLBuffer * inbuf,
-    GstGLBuffer * outbuf)
+gst_gl_pixbufoverlay_filter (GstGLFilter* filter, GstGLBuffer* inbuf,
+                               GstGLBuffer* outbuf)
 {
-  GstGLPixbufOverlay *pixbufoverlay = GST_GL_PIXBUFOVERLAY (filter);
+  GstGLPixbufOverlay* pixbufoverlay = GST_GL_PIXBUFOVERLAY(filter);
   GError *error = NULL;
 
   if (pixbufoverlay->pbuf_has_changed && (pixbufoverlay->location != NULL)) {
-    pixbufoverlay->pixbuf =
-        gdk_pixbuf_new_from_file (pixbufoverlay->location, &error);
+    pixbufoverlay->pixbuf = gdk_pixbuf_new_from_file (pixbufoverlay->location, &error);
     if (pixbufoverlay->pixbuf != NULL) {
-      pixbufoverlay->width =
-          (gfloat) gdk_pixbuf_get_width (pixbufoverlay->pixbuf);
-      pixbufoverlay->height =
-          (gfloat) gdk_pixbuf_get_height (pixbufoverlay->pixbuf);
-      gst_gl_display_thread_add (filter->display, init_pixbuf_texture,
-          pixbufoverlay);
+      pixbufoverlay->width = (gfloat) gdk_pixbuf_get_width (pixbufoverlay->pixbuf);
+      pixbufoverlay->height = (gfloat) gdk_pixbuf_get_height (pixbufoverlay->pixbuf);
+      gst_gl_display_thread_add (filter->display, init_pixbuf_texture, pixbufoverlay);
       gdk_pixbuf_unref (pixbufoverlay->pixbuf);
     } else {
-      if (error != NULL && error->message != NULL)
-        g_warning ("unable to load %s: %s", pixbufoverlay->location,
-            error->message);
+    if (error != NULL && error->message != NULL)
+      g_warning ("unable to load %s: %s", pixbufoverlay->location, error->message);
     }
     pixbufoverlay->pbuf_has_changed = FALSE;
   }
-
+  
   gst_gl_filter_render_to_target (filter, inbuf->texture, outbuf->texture,
-      gst_gl_pixbufoverlay_callback, pixbufoverlay);
+                                 gst_gl_pixbufoverlay_callback, pixbufoverlay);
 
   return TRUE;
 }
index a337284..449e4ef 100644 (file)
@@ -60,516 +60,548 @@ GST_ELEMENT_DETAILS ("Video test source",
 
 enum
 {
-  PROP_0,
-  PROP_PATTERN,
-  PROP_TIMESTAMP_OFFSET,
-  PROP_IS_LIVE
+    PROP_0,
+    PROP_PATTERN,
+    PROP_TIMESTAMP_OFFSET,
+    PROP_IS_LIVE
       /* FILL ME */
 };
 
 GST_BOILERPLATE (GstGLTestSrc, gst_gl_test_src, GstPushSrc, GST_TYPE_PUSH_SRC);
 
-static void gst_gl_test_src_set_pattern (GstGLTestSrc * gltestsrc,
+static void gst_gl_test_src_set_pattern (GstGLTestSrc* gltestsrc,
     int pattern_type);
-static void gst_gl_test_src_set_property (GObject * object, guint prop_id,
+static void gst_gl_test_src_set_property (GObject* object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
-static void gst_gl_test_src_get_property (GObject * object, guint prop_id,
+static void gst_gl_test_src_get_property (GObject* object, guint prop_id,
     GValue * value, GParamSpec * pspec);
 
-static gboolean gst_gl_test_src_setcaps (GstBaseSrc * bsrc, GstCaps * caps);
-static void gst_gl_test_src_src_fixate (GstPad * pad, GstCaps * caps);
+static gboolean gst_gl_test_src_setcaps (GstBaseSrc* bsrc, GstCaps* caps);
+static void gst_gl_test_src_src_fixate (GstPad* pad, GstCaps* caps);
 
-static gboolean gst_gl_test_src_is_seekable (GstBaseSrc * psrc);
-static gboolean gst_gl_test_src_do_seek (GstBaseSrc * bsrc,
+static gboolean gst_gl_test_src_is_seekable (GstBaseSrc* psrc);
+static gboolean gst_gl_test_src_do_seek (GstBaseSrc* bsrc,
     GstSegment * segment);
-static gboolean gst_gl_test_src_query (GstBaseSrc * bsrc, GstQuery * query);
+static gboolean gst_gl_test_src_query (GstBaseSrc* bsrc, GstQuery * query);
 
-static void gst_gl_test_src_get_times (GstBaseSrc * basesrc,
-    GstBuffer * buffer, GstClockTime * start, GstClockTime * end);
-static GstFlowReturn gst_gl_test_src_create (GstPushSrc * psrc,
-    GstBuffer ** buffer);
-static gboolean gst_gl_test_src_start (GstBaseSrc * basesrc);
-static gboolean gst_gl_test_src_stop (GstBaseSrc * basesrc);
+static void gst_gl_test_src_get_times (GstBaseSrc* basesrc,
+    GstBuffer * buffer, GstClockTime* start, GstClockTime* end);
+static GstFlowReturn gst_gl_test_src_create (GstPushSrc* psrc,
+    GstBuffer** buffer);
+static gboolean gst_gl_test_src_start (GstBaseSrc* basesrc);
+static gboolean gst_gl_test_src_stop (GstBaseSrc* basesrc);
 
-static void gst_gl_test_src_callback (gint width, gint height, guint texture,
-    gpointer stuff);
+static void gst_gl_test_src_callback (gint width, gint height, guint texture, gpointer stuff);
 
 #define GST_TYPE_GL_TEST_SRC_PATTERN (gst_gl_test_src_pattern_get_type ())
 static GType
 gst_gl_test_src_pattern_get_type (void)
 {
-  static GType gl_test_src_pattern_type = 0;
-  static const GEnumValue pattern_types[] = {
-    {GST_GL_TEST_SRC_SMPTE, "SMPTE 100% color bars", "smpte"},
-    {GST_GL_TEST_SRC_SNOW, "Random (television snow)", "snow"},
-    {GST_GL_TEST_SRC_BLACK, "100% Black", "black"},
-    {GST_GL_TEST_SRC_WHITE, "100% White", "white"},
-    {GST_GL_TEST_SRC_RED, "Red", "red"},
-    {GST_GL_TEST_SRC_GREEN, "Green", "green"},
-    {GST_GL_TEST_SRC_BLUE, "Blue", "blue"},
-    {GST_GL_TEST_SRC_CHECKERS1, "Checkers 1px", "checkers-1"},
-    {GST_GL_TEST_SRC_CHECKERS2, "Checkers 2px", "checkers-2"},
-    {GST_GL_TEST_SRC_CHECKERS4, "Checkers 4px", "checkers-4"},
-    {GST_GL_TEST_SRC_CHECKERS8, "Checkers 8px", "checkers-8"},
-    {GST_GL_TEST_SRC_CIRCULAR, "Circular", "circular"},
-    {GST_GL_TEST_SRC_BLINK, "Blink", "blink"},
-    {0, NULL, NULL}
-  };
-
-  if (!gl_test_src_pattern_type) {
-    gl_test_src_pattern_type =
-        g_enum_register_static ("GstGLTestSrcPattern", pattern_types);
-  }
-  return gl_test_src_pattern_type;
+    static GType gl_test_src_pattern_type = 0;
+    static const GEnumValue pattern_types[] = {
+        {GST_GL_TEST_SRC_SMPTE, "SMPTE 100% color bars", "smpte"},
+        {GST_GL_TEST_SRC_SNOW, "Random (television snow)", "snow"},
+        {GST_GL_TEST_SRC_BLACK, "100% Black", "black"},
+        {GST_GL_TEST_SRC_WHITE, "100% White", "white"},
+        {GST_GL_TEST_SRC_RED, "Red", "red"},
+        {GST_GL_TEST_SRC_GREEN, "Green", "green"},
+        {GST_GL_TEST_SRC_BLUE, "Blue", "blue"},
+        {GST_GL_TEST_SRC_CHECKERS1, "Checkers 1px", "checkers-1"},
+        {GST_GL_TEST_SRC_CHECKERS2, "Checkers 2px", "checkers-2"},
+        {GST_GL_TEST_SRC_CHECKERS4, "Checkers 4px", "checkers-4"},
+        {GST_GL_TEST_SRC_CHECKERS8, "Checkers 8px", "checkers-8"},
+        {GST_GL_TEST_SRC_CIRCULAR, "Circular", "circular"},
+        {GST_GL_TEST_SRC_BLINK, "Blink", "blink"},
+        {0, NULL, NULL}
+    };
+
+    if (!gl_test_src_pattern_type) 
+    {
+        gl_test_src_pattern_type =
+            g_enum_register_static ("GstGLTestSrcPattern", pattern_types);
+    }
+    return gl_test_src_pattern_type;
 }
 
 static void
 gst_gl_test_src_base_init (gpointer g_class)
 {
-  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+    GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_set_details (element_class, &gl_test_src_details);
+    gst_element_class_set_details (element_class, &gl_test_src_details);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
-          gst_caps_from_string (GST_GL_VIDEO_CAPS)));
+    gst_element_class_add_pad_template (element_class,
+        gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
+            gst_caps_from_string (GST_GL_VIDEO_CAPS)));
 }
 
 static void
-gst_gl_test_src_class_init (GstGLTestSrcClass * klass)
+gst_gl_test_src_class_init (GstGLTestSrcClass* klass)
 {
-  GObjectClass *gobject_class;
-  GstBaseSrcClass *gstbasesrc_class;
-  GstPushSrcClass *gstpushsrc_class;
-
-  GST_DEBUG_CATEGORY_INIT (gl_test_src_debug, "gltestsrc", 0,
-      "Video Test Source");
-
-  gobject_class = (GObjectClass *) klass;
-  gstbasesrc_class = (GstBaseSrcClass *) klass;
-  gstpushsrc_class = (GstPushSrcClass *) klass;
-
-  gobject_class->set_property = gst_gl_test_src_set_property;
-  gobject_class->get_property = gst_gl_test_src_get_property;
-
-  g_object_class_install_property (gobject_class, PROP_PATTERN,
-      g_param_spec_enum ("pattern", "Pattern",
-          "Type of test pattern to generate", GST_TYPE_GL_TEST_SRC_PATTERN,
-          GST_GL_TEST_SRC_SMPTE, G_PARAM_READWRITE));
-  g_object_class_install_property (gobject_class,
-      PROP_TIMESTAMP_OFFSET, g_param_spec_int64 ("timestamp-offset",
-          "Timestamp offset",
-          "An offset added to timestamps set on buffers (in ns)", G_MININT64,
-          G_MAXINT64, 0, G_PARAM_READWRITE));
-  g_object_class_install_property (gobject_class, PROP_IS_LIVE,
-      g_param_spec_boolean ("is-live", "Is Live",
-          "Whether to act as a live source", FALSE, G_PARAM_READWRITE));
-
-  gstbasesrc_class->set_caps = gst_gl_test_src_setcaps;
-  gstbasesrc_class->is_seekable = gst_gl_test_src_is_seekable;
-  gstbasesrc_class->do_seek = gst_gl_test_src_do_seek;
-  gstbasesrc_class->query = gst_gl_test_src_query;
-  gstbasesrc_class->get_times = gst_gl_test_src_get_times;
-  gstbasesrc_class->start = gst_gl_test_src_start;
-  gstbasesrc_class->stop = gst_gl_test_src_stop;
-
-  gstpushsrc_class->create = gst_gl_test_src_create;
+    GObjectClass *gobject_class;
+    GstBaseSrcClass *gstbasesrc_class;
+    GstPushSrcClass *gstpushsrc_class;
+
+    GST_DEBUG_CATEGORY_INIT (gl_test_src_debug, "gltestsrc", 0,
+        "Video Test Source");
+
+    gobject_class = (GObjectClass *) klass;
+    gstbasesrc_class = (GstBaseSrcClass *) klass;
+    gstpushsrc_class = (GstPushSrcClass *) klass;
+
+    gobject_class->set_property = gst_gl_test_src_set_property;
+    gobject_class->get_property = gst_gl_test_src_get_property;
+
+    g_object_class_install_property (gobject_class, PROP_PATTERN,
+        g_param_spec_enum ("pattern", "Pattern",
+            "Type of test pattern to generate", GST_TYPE_GL_TEST_SRC_PATTERN,
+            GST_GL_TEST_SRC_SMPTE, G_PARAM_READWRITE));
+    g_object_class_install_property (gobject_class,
+        PROP_TIMESTAMP_OFFSET, g_param_spec_int64 ("timestamp-offset",
+            "Timestamp offset",
+            "An offset added to timestamps set on buffers (in ns)", G_MININT64,
+            G_MAXINT64, 0, G_PARAM_READWRITE));
+    g_object_class_install_property (gobject_class, PROP_IS_LIVE,
+        g_param_spec_boolean ("is-live", "Is Live",
+            "Whether to act as a live source", FALSE, G_PARAM_READWRITE));
+
+    gstbasesrc_class->set_caps = gst_gl_test_src_setcaps;
+    gstbasesrc_class->is_seekable = gst_gl_test_src_is_seekable;
+    gstbasesrc_class->do_seek = gst_gl_test_src_do_seek;
+    gstbasesrc_class->query = gst_gl_test_src_query;
+    gstbasesrc_class->get_times = gst_gl_test_src_get_times;
+    gstbasesrc_class->start = gst_gl_test_src_start;
+    gstbasesrc_class->stop = gst_gl_test_src_stop;
+
+    gstpushsrc_class->create = gst_gl_test_src_create;
 }
 
 static void
-gst_gl_test_src_init (GstGLTestSrc * src, GstGLTestSrcClass * g_class)
+gst_gl_test_src_init (GstGLTestSrc* src, GstGLTestSrcClass* g_class)
 {
-  GstPad *pad = GST_BASE_SRC_PAD (src);
+    GstPad *pad = GST_BASE_SRC_PAD (src);
 
-  gst_pad_set_fixatecaps_function (pad, gst_gl_test_src_src_fixate);
+    gst_pad_set_fixatecaps_function (pad, gst_gl_test_src_src_fixate);
 
-  gst_gl_test_src_set_pattern (src, GST_GL_TEST_SRC_SMPTE);
+    gst_gl_test_src_set_pattern (src, GST_GL_TEST_SRC_SMPTE);
 
-  src->timestamp_offset = 0;
+    src->timestamp_offset = 0;
 
-  /* we operate in time */
-  gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
-  gst_base_src_set_live (GST_BASE_SRC (src), FALSE);
+    /* we operate in time */
+    gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
+    gst_base_src_set_live (GST_BASE_SRC (src), FALSE);
 }
 
 static void
-gst_gl_test_src_src_fixate (GstPad * pad, GstCaps * caps)
+gst_gl_test_src_src_fixate (GstPad* pad, GstCaps* caps)
 {
-  GstStructure *structure;
+    GstStructure *structure;
 
-  GST_DEBUG ("fixate");
+    GST_DEBUG ("fixate");
 
-  structure = gst_caps_get_structure (caps, 0);
+    structure = gst_caps_get_structure (caps, 0);
 
-  gst_structure_fixate_field_nearest_int (structure, "width", 320);
-  gst_structure_fixate_field_nearest_int (structure, "height", 240);
-  gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
+    gst_structure_fixate_field_nearest_int (structure, "width", 320);
+    gst_structure_fixate_field_nearest_int (structure, "height", 240);
+    gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
 }
 
 static void
-gst_gl_test_src_set_pattern (GstGLTestSrc * gltestsrc, gint pattern_type)
+gst_gl_test_src_set_pattern (GstGLTestSrc* gltestsrc, gint pattern_type)
 {
-  gltestsrc->pattern_type = pattern_type;
-
-  GST_DEBUG_OBJECT (gltestsrc, "setting pattern to %d", pattern_type);
-
-  switch (pattern_type) {
-    case GST_GL_TEST_SRC_SMPTE:
-      gltestsrc->make_image = gst_gl_test_src_smpte;
-      break;
-    case GST_GL_TEST_SRC_SNOW:
-      gltestsrc->make_image = gst_gl_test_src_snow;
-      break;
-    case GST_GL_TEST_SRC_BLACK:
-      gltestsrc->make_image = gst_gl_test_src_black;
-      break;
-    case GST_GL_TEST_SRC_WHITE:
-      gltestsrc->make_image = gst_gl_test_src_white;
-      break;
-    case GST_GL_TEST_SRC_RED:
-      gltestsrc->make_image = gst_gl_test_src_red;
-      break;
-    case GST_GL_TEST_SRC_GREEN:
-      gltestsrc->make_image = gst_gl_test_src_green;
-      break;
-    case GST_GL_TEST_SRC_BLUE:
-      gltestsrc->make_image = gst_gl_test_src_blue;
-      break;
-    case GST_GL_TEST_SRC_CHECKERS1:
-      gltestsrc->make_image = gst_gl_test_src_checkers1;
-      break;
-    case GST_GL_TEST_SRC_CHECKERS2:
-      gltestsrc->make_image = gst_gl_test_src_checkers2;
-      break;
-    case GST_GL_TEST_SRC_CHECKERS4:
-      gltestsrc->make_image = gst_gl_test_src_checkers4;
-      break;
-    case GST_GL_TEST_SRC_CHECKERS8:
-      gltestsrc->make_image = gst_gl_test_src_checkers8;
-      break;
-    case GST_GL_TEST_SRC_CIRCULAR:
-      gltestsrc->make_image = gst_gl_test_src_circular;
-      break;
-    case GST_GL_TEST_SRC_BLINK:
-      gltestsrc->make_image = gst_gl_test_src_black;
-      break;
-    default:
-      g_assert_not_reached ();
-  }
+    gltestsrc->pattern_type = pattern_type;
+
+    GST_DEBUG_OBJECT (gltestsrc, "setting pattern to %d", pattern_type);
+
+    switch (pattern_type) {
+        case GST_GL_TEST_SRC_SMPTE:
+            gltestsrc->make_image = gst_gl_test_src_smpte;
+            break;
+        case GST_GL_TEST_SRC_SNOW:
+            gltestsrc->make_image = gst_gl_test_src_snow;
+            break;
+        case GST_GL_TEST_SRC_BLACK:
+            gltestsrc->make_image = gst_gl_test_src_black;
+            break;
+        case GST_GL_TEST_SRC_WHITE:
+            gltestsrc->make_image = gst_gl_test_src_white;
+            break;
+        case GST_GL_TEST_SRC_RED:
+            gltestsrc->make_image = gst_gl_test_src_red;
+            break;
+        case GST_GL_TEST_SRC_GREEN:
+            gltestsrc->make_image = gst_gl_test_src_green;
+            break;
+        case GST_GL_TEST_SRC_BLUE:
+            gltestsrc->make_image = gst_gl_test_src_blue;
+            break;
+        case GST_GL_TEST_SRC_CHECKERS1:
+            gltestsrc->make_image = gst_gl_test_src_checkers1;
+            break;
+        case GST_GL_TEST_SRC_CHECKERS2:
+            gltestsrc->make_image = gst_gl_test_src_checkers2;
+            break;
+        case GST_GL_TEST_SRC_CHECKERS4:
+            gltestsrc->make_image = gst_gl_test_src_checkers4;
+            break;
+        case GST_GL_TEST_SRC_CHECKERS8:
+            gltestsrc->make_image = gst_gl_test_src_checkers8;
+            break;
+        case GST_GL_TEST_SRC_CIRCULAR:
+            gltestsrc->make_image = gst_gl_test_src_circular;
+            break;
+        case GST_GL_TEST_SRC_BLINK:
+            gltestsrc->make_image = gst_gl_test_src_black;
+            break;
+        default:
+            g_assert_not_reached ();
+    }
 }
 
 static void
-gst_gl_test_src_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
+gst_gl_test_src_set_property (GObject* object, guint prop_id,
+    const GValue* value, GParamSpec* pspec)
 {
-  GstGLTestSrc *src = GST_GL_TEST_SRC (object);
-
-  switch (prop_id) {
-    case PROP_PATTERN:
-      gst_gl_test_src_set_pattern (src, g_value_get_enum (value));
-      break;
-    case PROP_TIMESTAMP_OFFSET:
-      src->timestamp_offset = g_value_get_int64 (value);
-      break;
-    case PROP_IS_LIVE:
-      gst_base_src_set_live (GST_BASE_SRC (src), g_value_get_boolean (value));
-      break;
-    default:
-      break;
-  }
+    GstGLTestSrc* src = GST_GL_TEST_SRC (object);
+
+    switch (prop_id) 
+    {
+        case PROP_PATTERN:
+            gst_gl_test_src_set_pattern (src, g_value_get_enum (value));
+            break;
+        case PROP_TIMESTAMP_OFFSET:
+            src->timestamp_offset = g_value_get_int64 (value);
+            break;
+        case PROP_IS_LIVE:
+            gst_base_src_set_live (GST_BASE_SRC (src), g_value_get_boolean (value));
+            break;
+        default:
+            break;
+    }
 }
 
 static void
-gst_gl_test_src_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
+gst_gl_test_src_get_property (GObject* object, guint prop_id,
+    GValue* value, GParamSpec* pspec)
 {
-  GstGLTestSrc *src = GST_GL_TEST_SRC (object);
-
-  switch (prop_id) {
-    case PROP_PATTERN:
-      g_value_set_enum (value, src->pattern_type);
-      break;
-    case PROP_TIMESTAMP_OFFSET:
-      g_value_set_int64 (value, src->timestamp_offset);
-      break;
-    case PROP_IS_LIVE:
-      g_value_set_boolean (value, gst_base_src_is_live (GST_BASE_SRC (src)));
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
+    GstGLTestSrc* src = GST_GL_TEST_SRC (object);
+
+    switch (prop_id) {
+        case PROP_PATTERN:
+            g_value_set_enum (value, src->pattern_type);
+            break;
+        case PROP_TIMESTAMP_OFFSET:
+            g_value_set_int64 (value, src->timestamp_offset);
+             break;
+        case PROP_IS_LIVE:
+            g_value_set_boolean (value, gst_base_src_is_live (GST_BASE_SRC (src)));
+            break;
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
+    }
 }
 
 static gboolean
-gst_gl_test_src_parse_caps (const GstCaps * caps,
-    gint * width, gint * height, gint * rate_numerator, gint * rate_denominator)
+gst_gl_test_src_parse_caps (const GstCaps* caps,
+    gint* width, gint* height, gint* rate_numerator, gint* rate_denominator)
 {
-  const GstStructure *structure;
-  GstPadLinkReturn ret;
-  const GValue *framerate;
+    const GstStructure *structure;
+    GstPadLinkReturn ret;
+    const GValue *framerate;
 
-  GST_DEBUG ("parsing caps");
+    GST_DEBUG ("parsing caps");
 
-  if (gst_caps_get_size (caps) < 1)
-    return FALSE;
+    if (gst_caps_get_size (caps) < 1)
+        return FALSE;
 
-  structure = gst_caps_get_structure (caps, 0);
+    structure = gst_caps_get_structure (caps, 0);
 
-  ret = gst_structure_get_int (structure, "width", width);
-  ret &= gst_structure_get_int (structure, "height", height);
-  framerate = gst_structure_get_value (structure, "framerate");
+    ret = gst_structure_get_int (structure, "width", width);
+    ret &= gst_structure_get_int (structure, "height", height);
+    framerate = gst_structure_get_value (structure, "framerate");
 
-  if (framerate) {
-    *rate_numerator = gst_value_get_fraction_numerator (framerate);
-    *rate_denominator = gst_value_get_fraction_denominator (framerate);
-  } else
-    goto no_framerate;
+    if (framerate) 
+    {
+        *rate_numerator = gst_value_get_fraction_numerator (framerate);
+        *rate_denominator = gst_value_get_fraction_denominator (framerate);
+    } 
+    else
+        goto no_framerate;
 
-  return ret;
+    return ret;
 
-  /* ERRORS */
-no_framerate:
-  {
-    GST_DEBUG ("gltestsrc no framerate given");
-    return FALSE;
-  }
+    /* ERRORS */
+    no_framerate:
+    {
+        GST_DEBUG ("gltestsrc no framerate given");
+        return FALSE;
+    }
 }
 
 static gboolean
-gst_gl_test_src_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
+gst_gl_test_src_setcaps (GstBaseSrc* bsrc, GstCaps* caps)
 {
-  gboolean res;
-  gint width, height, rate_denominator, rate_numerator;
-  GstGLTestSrc *gltestsrc;
+    gboolean res;
+    gint width, height, rate_denominator, rate_numerator;
+    GstGLTestSrc* gltestsrc;
 
-  gltestsrc = GST_GL_TEST_SRC (bsrc);
+    gltestsrc = GST_GL_TEST_SRC (bsrc);
 
-  GST_DEBUG ("setcaps");
+    GST_DEBUG ("setcaps");
 
-  res = gst_gl_test_src_parse_caps (caps, &width, &height,
-      &rate_numerator, &rate_denominator);
-  if (res) {
-    /* looks ok here */
-    gltestsrc->width = width;
-    gltestsrc->height = height;
-    gltestsrc->rate_numerator = rate_numerator;
-    gltestsrc->rate_denominator = rate_denominator;
-    gltestsrc->negotiated = TRUE;
+    res = gst_gl_test_src_parse_caps (caps, &width, &height,
+        &rate_numerator, &rate_denominator);
+    if (res) 
+    {
+        /* looks ok here */
+        gltestsrc->width = width;
+        gltestsrc->height = height;
+        gltestsrc->rate_numerator = rate_numerator;
+        gltestsrc->rate_denominator = rate_denominator;
+        gltestsrc->negotiated = TRUE;
 
-    GST_DEBUG_OBJECT (gltestsrc, "size %dx%d, %d/%d fps",
-        gltestsrc->width, gltestsrc->height,
-        gltestsrc->rate_numerator, gltestsrc->rate_denominator);
+        GST_DEBUG_OBJECT (gltestsrc, "size %dx%d, %d/%d fps",
+            gltestsrc->width, gltestsrc->height,
+            gltestsrc->rate_numerator, gltestsrc->rate_denominator);
 
-    gltestsrc->display = gst_gl_display_new ();
+        gltestsrc->display = gst_gl_display_new ();
 
-    gst_gl_display_create_context (gltestsrc->display,
-        gltestsrc->width, gltestsrc->height);
+        gst_gl_display_create_context (gltestsrc->display, 
+            gltestsrc->width, gltestsrc->height);
 
-    gst_gl_display_gen_fbo (gltestsrc->display, gltestsrc->width,
-        gltestsrc->height, &gltestsrc->fbo, &gltestsrc->depthbuffer);
-  }
-  return res;
+        gst_gl_display_gen_fbo (gltestsrc->display, gltestsrc->width, gltestsrc->height,
+            &gltestsrc->fbo, &gltestsrc->depthbuffer);
+    }
+    return res;
 }
 
 static gboolean
-gst_gl_test_src_query (GstBaseSrc * bsrc, GstQuery * query)
+gst_gl_test_src_query (GstBaseSrc* bsrc, GstQuery* query)
 {
-  gboolean res;
-  GstGLTestSrc *src;
+    gboolean res;
+    GstGLTestSrc *src;
 
-  src = GST_GL_TEST_SRC (bsrc);
+    src = GST_GL_TEST_SRC (bsrc);
 
-  switch (GST_QUERY_TYPE (query)) {
-    case GST_QUERY_CONVERT:
+    switch (GST_QUERY_TYPE (query)) 
     {
-      GstFormat src_fmt, dest_fmt;
-      gint64 src_val, dest_val;
-
-      gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
-      if (src_fmt == dest_fmt) {
-        dest_val = src_val;
-        goto done;
-      }
-
-      switch (src_fmt) {
-        case GST_FORMAT_DEFAULT:
-          switch (dest_fmt) {
-            case GST_FORMAT_TIME:
-              /* frames to time */
-              if (src->rate_numerator) {
-                dest_val = gst_util_uint64_scale (src_val,
-                    src->rate_denominator * GST_SECOND, src->rate_numerator);
-              } else
-                dest_val = 0;
-              break;
-            default:
-              goto error;
-          }
-          break;
-        case GST_FORMAT_TIME:
-          switch (dest_fmt) {
-            case GST_FORMAT_DEFAULT:
-              /* time to frames */
-              if (src->rate_numerator) {
-                dest_val = gst_util_uint64_scale (src_val,
-                    src->rate_numerator, src->rate_denominator * GST_SECOND);
-              } else
-                dest_val = 0;
-              break;
-            default:
-              goto error;
-          }
+        case GST_QUERY_CONVERT:
+        {
+            GstFormat src_fmt, dest_fmt;
+            gint64 src_val, dest_val;
+
+            gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
+            if (src_fmt == dest_fmt) 
+            {
+                dest_val = src_val;
+                goto done;
+            }
+
+            switch (src_fmt) 
+            {
+                case GST_FORMAT_DEFAULT:
+                    switch (dest_fmt) 
+                    {
+                        case GST_FORMAT_TIME:
+                            /* frames to time */
+                            if (src->rate_numerator) 
+                            {
+                                dest_val = gst_util_uint64_scale (src_val,
+                                    src->rate_denominator * GST_SECOND, src->rate_numerator);
+                            } 
+                            else
+                                dest_val = 0;
+                            break;
+                        default:
+                          goto error;
+                    }
+                    break;
+                case GST_FORMAT_TIME:
+                    switch (dest_fmt) 
+                    {
+                        case GST_FORMAT_DEFAULT:
+                            /* time to frames */
+                            if (src->rate_numerator) 
+                            {
+                                dest_val = gst_util_uint64_scale (src_val,
+                                    src->rate_numerator, src->rate_denominator * GST_SECOND);
+                            } 
+                            else
+                                dest_val = 0;
+                            break;
+                        default:
+                            goto error;
+                    }
+                    break;
+                default:
+                    goto error;
+            }
+        done:
+          gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
+          res = TRUE;
           break;
+        }
         default:
-          goto error;
-      }
-    done:
-      gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
-      res = TRUE;
-      break;
+          res = GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query);
     }
-    default:
-      res = GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query);
-  }
-  return res;
+    return res;
 
-  /* ERROR */
-error:
-  {
-    GST_DEBUG_OBJECT (src, "query failed");
-    return FALSE;
-  }
+    /* ERROR */
+    error:
+    {
+        GST_DEBUG_OBJECT (src, "query failed");
+        return FALSE;
+    }
 }
 
 static void
 gst_gl_test_src_get_times (GstBaseSrc * basesrc, GstBuffer * buffer,
     GstClockTime * start, GstClockTime * end)
 {
-  /* for live sources, sync on the timestamp of the buffer */
-  if (gst_base_src_is_live (basesrc)) {
-    GstClockTime timestamp = GST_BUFFER_TIMESTAMP (buffer);
-
-    if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
-      /* get duration to calculate end time */
-      GstClockTime duration = GST_BUFFER_DURATION (buffer);
-
-      if (GST_CLOCK_TIME_IS_VALID (duration))
-        *end = timestamp + duration;
-      *start = timestamp;
+    /* for live sources, sync on the timestamp of the buffer */
+    if (gst_base_src_is_live (basesrc)) 
+    {
+        GstClockTime timestamp = GST_BUFFER_TIMESTAMP (buffer);
+
+        if (GST_CLOCK_TIME_IS_VALID (timestamp)) 
+        {
+            /* get duration to calculate end time */
+            GstClockTime duration = GST_BUFFER_DURATION (buffer);
+
+            if (GST_CLOCK_TIME_IS_VALID (duration)) 
+                *end = timestamp + duration;
+            *start = timestamp;
+        }
+    } 
+    else 
+    {
+        *start = -1;
+        *end = -1;
     }
-  } else {
-    *start = -1;
-    *end = -1;
-  }
 }
 
 static gboolean
-gst_gl_test_src_do_seek (GstBaseSrc * bsrc, GstSegment * segment)
+gst_gl_test_src_do_seek (GstBaseSrc* bsrc, GstSegment* segment)
 {
-  GstClockTime time;
-  GstGLTestSrc *src;
+    GstClockTime time;
+    GstGLTestSrc* src;
 
-  src = GST_GL_TEST_SRC (bsrc);
+    src = GST_GL_TEST_SRC (bsrc);
 
-  segment->time = segment->start;
-  time = segment->last_stop;
+    segment->time = segment->start;
+    time = segment->last_stop;
 
-  /* now move to the time indicated */
-  if (src->rate_numerator) {
-    src->n_frames = gst_util_uint64_scale (time,
+    /* now move to the time indicated */
+    if (src->rate_numerator) 
+    {
+        src->n_frames = gst_util_uint64_scale (time,
         src->rate_numerator, src->rate_denominator * GST_SECOND);
-  } else
-    src->n_frames = 0;
+    } 
+    else
+        src->n_frames = 0;
 
-  if (src->rate_numerator) {
-    src->running_time = gst_util_uint64_scale (src->n_frames,
+    if (src->rate_numerator) 
+    {
+        src->running_time = gst_util_uint64_scale (src->n_frames,
         src->rate_denominator * GST_SECOND, src->rate_numerator);
-  } else {
-    /* FIXME : Not sure what to set here */
-    src->running_time = 0;
-  }
+    } 
+    else 
+    {
+        /* FIXME : Not sure what to set here */
+        src->running_time = 0;
+    }
 
-  g_assert (src->running_time <= time);
+    g_assert (src->running_time <= time);
 
-  return TRUE;
+    return TRUE;
 }
 
 static gboolean
-gst_gl_test_src_is_seekable (GstBaseSrc * psrc)
+gst_gl_test_src_is_seekable (GstBaseSrc* psrc)
 {
-  /* we're seekable... */
-  return TRUE;
+    /* we're seekable... */
+    return TRUE;
 }
 
 static GstFlowReturn
-gst_gl_test_src_create (GstPushSrc * psrc, GstBuffer ** buffer)
+gst_gl_test_src_create (GstPushSrc* psrc, GstBuffer** buffer)
 {
-  GstGLTestSrc *src;
-  GstGLBuffer *outbuf;
+    GstGLTestSrc* src;
+    GstGLBuffer* outbuf;
 
-  //GstFlowReturn res;
-  GstClockTime next_time;
+    //GstFlowReturn res;
+    GstClockTime next_time;
 
-  src = GST_GL_TEST_SRC (psrc);
+    src = GST_GL_TEST_SRC (psrc);
 
-  if (G_UNLIKELY (!src->negotiated))
-    goto not_negotiated;
+    if (G_UNLIKELY (!src->negotiated))
+        goto not_negotiated;
 
-  /* 0 framerate and we are at the second frame, eos */
-  if (G_UNLIKELY (src->rate_numerator == 0 && src->n_frames == 1))
-    goto eos;
+    /* 0 framerate and we are at the second frame, eos */
+    if (G_UNLIKELY (src->rate_numerator == 0 && src->n_frames == 1))
+        goto eos;
 
-  GST_LOG_OBJECT (src, "creating buffer %dx%d image for frame %d",
-      src->width, src->height, (gint) src->n_frames);
+    GST_LOG_OBJECT (src, "creating buffer %dx%d image for frame %d",
+        src->width, src->height, (gint) src->n_frames);
 
-  outbuf = gst_gl_buffer_new (src->display, src->width, src->height);
+    outbuf = gst_gl_buffer_new (src->display,
+        src->width, src->height);
 
-  if (!outbuf->texture) {
-    gst_buffer_unref (outbuf);
-    goto eos;
-  }
+    if (!outbuf->texture)
+    {
+        gst_buffer_unref (outbuf);
+        goto eos; 
+    }
 
-  gst_buffer_set_caps (GST_BUFFER (outbuf),
-      GST_PAD_CAPS (GST_BASE_SRC_PAD (psrc)));
+    gst_buffer_set_caps (GST_BUFFER (outbuf),
+        GST_PAD_CAPS (GST_BASE_SRC_PAD (psrc)));
 
-  if (src->pattern_type == GST_GL_TEST_SRC_BLINK) {
-    if (src->n_frames & 0x1)
-      src->make_image = gst_gl_test_src_white;
-    else
-      src->make_image = gst_gl_test_src_black;
-  }
-
-  src->buffer = outbuf;
+    if (src->pattern_type == GST_GL_TEST_SRC_BLINK) 
+    {
+        if (src->n_frames & 0x1)
+            src->make_image = gst_gl_test_src_white;
+        else
+            src->make_image = gst_gl_test_src_black;
+    }
 
-  //blocking call, generate a FBO
-  if (!gst_gl_display_use_fbo (src->display, src->width, src->height, src->fbo, src->depthbuffer, outbuf->texture, gst_gl_test_src_callback, 0, 0, 0,   //no input texture
-          0, src->width, 0, src->height,
-          GST_GL_DISPLAY_PROJECTION_ORTHO2D, (gpointer) src)) {
-    gst_buffer_unref (outbuf);
-    goto eos;
-  }
+    src->buffer = outbuf;
+    //blocking call, generate a FBO
+    if(!gst_gl_display_use_fbo (src->display, src->width, src->height,
+            src->fbo, src->depthbuffer, outbuf->texture,
+            gst_gl_test_src_callback,
+            0, 0, 0, //no input texture
+            0, src->width, 0, src->height,
+            GST_GL_DISPLAY_PROJECTION_ORTHO2D,
+            (gpointer)src))
+    {
+        gst_buffer_unref (outbuf);
+        goto eos; 
+    }
 
-  GST_BUFFER_TIMESTAMP (GST_BUFFER (outbuf)) =
-      src->timestamp_offset + src->running_time;
-  GST_BUFFER_OFFSET (GST_BUFFER (outbuf)) = src->n_frames;
-  src->n_frames++;
-  GST_BUFFER_OFFSET_END (GST_BUFFER (outbuf)) = src->n_frames;
-  if (src->rate_numerator) {
-    next_time = gst_util_uint64_scale_int (src->n_frames * GST_SECOND,
-        src->rate_denominator, src->rate_numerator);
-    GST_BUFFER_DURATION (GST_BUFFER (outbuf)) = next_time - src->running_time;
-  } else {
-    next_time = src->timestamp_offset;
-    /* NONE means forever */
-    GST_BUFFER_DURATION (GST_BUFFER (outbuf)) = GST_CLOCK_TIME_NONE;
-  }
+    GST_BUFFER_TIMESTAMP (GST_BUFFER (outbuf)) =
+        src->timestamp_offset + src->running_time;
+    GST_BUFFER_OFFSET (GST_BUFFER (outbuf)) = src->n_frames;
+        src->n_frames++;
+    GST_BUFFER_OFFSET_END (GST_BUFFER (outbuf)) = src->n_frames;
+    if (src->rate_numerator) 
+    {
+        next_time = gst_util_uint64_scale_int (src->n_frames * GST_SECOND,
+            src->rate_denominator, src->rate_numerator);
+        GST_BUFFER_DURATION (GST_BUFFER (outbuf)) = next_time - src->running_time;
+    } 
+    else {
+        next_time = src->timestamp_offset;
+        /* NONE means forever */
+        GST_BUFFER_DURATION (GST_BUFFER (outbuf)) = GST_CLOCK_TIME_NONE;
+    }
 
-  src->running_time = next_time;
+    src->running_time = next_time;
 
-  *buffer = GST_BUFFER (outbuf);
+    *buffer = GST_BUFFER (outbuf);
 
-  return GST_FLOW_OK;
+    return GST_FLOW_OK;
 
 not_negotiated:
   {
@@ -593,38 +625,39 @@ no_buffer:
 }
 
 static gboolean
-gst_gl_test_src_start (GstBaseSrc * basesrc)
+gst_gl_test_src_start (GstBaseSrc* basesrc)
 {
-  GstGLTestSrc *src = GST_GL_TEST_SRC (basesrc);
+    GstGLTestSrc* src = GST_GL_TEST_SRC (basesrc);
 
-  src->running_time = 0;
-  src->n_frames = 0;
-  src->negotiated = FALSE;
+    src->running_time = 0;
+    src->n_frames = 0;
+    src->negotiated = FALSE;
 
-  return TRUE;
+    return TRUE;
 }
 
 static gboolean
-gst_gl_test_src_stop (GstBaseSrc * basesrc)
+gst_gl_test_src_stop (GstBaseSrc* basesrc)
 {
-  GstGLTestSrc *src = GST_GL_TEST_SRC (basesrc);
+    GstGLTestSrc* src = GST_GL_TEST_SRC (basesrc);
 
-  if (src->display) {
-    //blocking call, delete the FBO
-    gst_gl_display_del_fbo (src->display, src->fbo, src->depthbuffer);
-    g_object_unref (src->display);
-    src->display = NULL;
-  }
+    if (src->display) 
+    {
+        //blocking call, delete the FBO
+        gst_gl_display_del_fbo (src->display, src->fbo, 
+            src->depthbuffer);
+        g_object_unref (src->display);
+        src->display = NULL;
+    }
 
-  return TRUE;
+    return TRUE;
 }
 
 //opengl scene
 static void
-gst_gl_test_src_callback (gint width, gint height, guint texture,
-    gpointer stuff)
+gst_gl_test_src_callback (gint width, gint height, guint texture, gpointer stuff)
 {
-  GstGLTestSrc *src = GST_GL_TEST_SRC (stuff);
+    GstGLTestSrc* src = GST_GL_TEST_SRC (stuff);
 
-  src->make_image (src, src->buffer, src->width, src->height);
+    src->make_image (src, src->buffer, src->width, src->height);
 }
index 98813c0..fa540e7 100644 (file)
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
 static const GstElementDetails element_details =
-GST_ELEMENT_DETAILS ("OpenGL upload",
-    "Filter/Effect",
-    "A from video to GL flow filter",
-    "Julien Isorce <julien.isorce@gmail.com>");
+    GST_ELEMENT_DETAILS ("OpenGL upload",
+        "Filter/Effect",
+        "A from video to GL flow filter",
+        "Julien Isorce <julien.isorce@gmail.com>");
 
 /* Source pad definition */
 static GstStaticPadTemplate gst_gl_upload_src_pad_template =
@@ -93,7 +93,8 @@ static GstStaticPadTemplate gst_gl_upload_sink_pad_template =
     GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR ";"
+    GST_STATIC_CAPS (
+        GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR ";"
         GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx ";"
         GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR ";"
         GST_VIDEO_CAPS_RGBA ";" GST_VIDEO_CAPS_BGRA ";"
@@ -104,7 +105,7 @@ static GstStaticPadTemplate gst_gl_upload_sink_pad_template =
 /* Properties */
 enum
 {
-  PROP_0
+    PROP_0
 };
 
 #define DEBUG_INIT(bla) \
@@ -113,384 +114,411 @@ enum
 GST_BOILERPLATE_FULL (GstGLUpload, gst_gl_upload, GstBaseTransform,
     GST_TYPE_BASE_TRANSFORM, DEBUG_INIT);
 
-static void gst_gl_upload_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
-static void gst_gl_upload_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
-
-static void gst_gl_upload_reset (GstGLUpload * upload);
-static gboolean gst_gl_upload_set_caps (GstBaseTransform * bt,
-    GstCaps * incaps, GstCaps * outcaps);
-static GstCaps *gst_gl_upload_transform_caps (GstBaseTransform * bt,
-    GstPadDirection direction, GstCaps * caps);
-static void gst_gl_upload_fixate_caps (GstBaseTransform * base,
-    GstPadDirection direction, GstCaps * caps, GstCaps * othercaps);
-static gboolean gst_gl_upload_start (GstBaseTransform * bt);
-static gboolean gst_gl_upload_stop (GstBaseTransform * bt);
-static GstFlowReturn gst_gl_upload_prepare_output_buffer (GstBaseTransform *
-    trans, GstBuffer * input, gint size, GstCaps * caps, GstBuffer ** buf);
-static GstFlowReturn gst_gl_upload_transform (GstBaseTransform * trans,
-    GstBuffer * inbuf, GstBuffer * outbuf);
-static gboolean gst_gl_upload_get_unit_size (GstBaseTransform * trans,
-    GstCaps * caps, guint * size);
+static void gst_gl_upload_set_property (GObject* object, guint prop_id,
+    const GValue* value, GParamSpec* pspec);
+static void gst_gl_upload_get_property (GObject* object, guint prop_id,
+    GValue* value, GParamSpec* pspec);
+
+static void gst_gl_upload_reset (GstGLUpload* upload);
+static gboolean gst_gl_upload_set_caps (GstBaseTransform* bt,
+    GstCaps* incaps, GstCaps* outcaps);
+static GstCaps *gst_gl_upload_transform_caps (GstBaseTransform* bt,
+    GstPadDirection direction, GstCaps* caps);
+static void gst_gl_upload_fixate_caps (GstBaseTransform* base, GstPadDirection direction,
+    GstCaps* caps, GstCaps* othercaps);
+static gboolean gst_gl_upload_start (GstBaseTransform* bt);
+static gboolean gst_gl_upload_stop (GstBaseTransform* bt);
+static GstFlowReturn gst_gl_upload_prepare_output_buffer (GstBaseTransform* trans,
+    GstBuffer* input, gint size, GstCaps* caps, GstBuffer** buf);
+static GstFlowReturn gst_gl_upload_transform (GstBaseTransform* trans,
+    GstBuffer* inbuf, GstBuffer * outbuf);
+static gboolean gst_gl_upload_get_unit_size (GstBaseTransform* trans,
+    GstCaps* caps, guint* size);
 
 
 static void
 gst_gl_upload_base_init (gpointer klass)
 {
-  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+    GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_set_details (element_class, &element_details);
+    gst_element_class_set_details (element_class, &element_details);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_upload_src_pad_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_upload_sink_pad_template));
+    gst_element_class_add_pad_template (element_class,
+        gst_static_pad_template_get (&gst_gl_upload_src_pad_template));
+    gst_element_class_add_pad_template (element_class,
+        gst_static_pad_template_get (&gst_gl_upload_sink_pad_template));
 }
 
 static void
 gst_gl_upload_class_init (GstGLUploadClass * klass)
 {
-  GObjectClass *gobject_class;
-
-  gobject_class = (GObjectClass *) klass;
-  gobject_class->set_property = gst_gl_upload_set_property;
-  gobject_class->get_property = gst_gl_upload_get_property;
-
-  GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
-      gst_gl_upload_transform_caps;
-  GST_BASE_TRANSFORM_CLASS (klass)->fixate_caps = gst_gl_upload_fixate_caps;
-  GST_BASE_TRANSFORM_CLASS (klass)->transform = gst_gl_upload_transform;
-  GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_upload_start;
-  GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_upload_stop;
-  GST_BASE_TRANSFORM_CLASS (klass)->set_caps = gst_gl_upload_set_caps;
-  GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size = gst_gl_upload_get_unit_size;
-  GST_BASE_TRANSFORM_CLASS (klass)->prepare_output_buffer =
-      gst_gl_upload_prepare_output_buffer;
+    GObjectClass *gobject_class;
+
+    gobject_class = (GObjectClass *) klass;
+    gobject_class->set_property = gst_gl_upload_set_property;
+    gobject_class->get_property = gst_gl_upload_get_property;
+
+    GST_BASE_TRANSFORM_CLASS (klass)->transform_caps =
+        gst_gl_upload_transform_caps;
+    GST_BASE_TRANSFORM_CLASS (klass)->fixate_caps = gst_gl_upload_fixate_caps;
+    GST_BASE_TRANSFORM_CLASS (klass)->transform = gst_gl_upload_transform;
+    GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_upload_start;
+    GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_upload_stop;
+    GST_BASE_TRANSFORM_CLASS (klass)->set_caps = gst_gl_upload_set_caps;
+    GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size = gst_gl_upload_get_unit_size;
+    GST_BASE_TRANSFORM_CLASS (klass)->prepare_output_buffer =
+        gst_gl_upload_prepare_output_buffer;
 }
 
 static void
-gst_gl_upload_init (GstGLUpload * upload, GstGLUploadClass * klass)
+gst_gl_upload_init (GstGLUpload* upload, GstGLUploadClass * klass)
 {
-  gst_gl_upload_reset (upload);
+    gst_gl_upload_reset (upload);
 }
 
 static void
-gst_gl_upload_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
+gst_gl_upload_set_property (GObject* object, guint prop_id,
+    const GValue* value, GParamSpec* pspec)
 {
-  //GstGLUpload* upload = GST_GL_UPLOAD (object);
+    //GstGLUpload* upload = GST_GL_UPLOAD (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
+    switch (prop_id)
+    {
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
+    }
 }
 
 static void
-gst_gl_upload_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
+gst_gl_upload_get_property (GObject* object, guint prop_id,
+    GValue* value, GParamSpec* pspec)
 {
-  //GstGLUpload *upload = GST_GL_UPLOAD (object);
+    //GstGLUpload *upload = GST_GL_UPLOAD (object);
 
-  switch (prop_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
+    switch (prop_id)
+    {
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+            break;
+    }
 }
 
 static void
-gst_gl_upload_reset (GstGLUpload * upload)
+gst_gl_upload_reset (GstGLUpload* upload)
 {
-  if (upload->display) {
-    g_object_unref (upload->display);
-    upload->display = NULL;
-  }
+    if (upload->display)
+    {
+        g_object_unref (upload->display);
+        upload->display = NULL;
+    }
 }
 
 static gboolean
-gst_gl_upload_start (GstBaseTransform * bt)
+gst_gl_upload_start (GstBaseTransform* bt)
 {
-  //GstGLUpload* upload = GST_GL_UPLOAD (bt);
+    //GstGLUpload* upload = GST_GL_UPLOAD (bt);
 
-  return TRUE;
+    return TRUE;
 }
 
 static gboolean
-gst_gl_upload_stop (GstBaseTransform * bt)
+gst_gl_upload_stop (GstBaseTransform* bt)
 {
-  GstGLUpload *upload = GST_GL_UPLOAD (bt);
+    GstGLUpload* upload = GST_GL_UPLOAD (bt);
 
-  gst_gl_upload_reset (upload);
+    gst_gl_upload_reset (upload);
 
-  return TRUE;
+    return TRUE;
 }
 
-static GstCaps *
-gst_gl_upload_transform_caps (GstBaseTransform * bt,
-    GstPadDirection direction, GstCaps * caps)
+static GstCaps*
+gst_gl_upload_transform_caps (GstBaseTransform* bt,
+    GstPadDirection direction, GstCaps* caps)
 {
-  //GstGLUpload* upload = GST_GL_UPLOAD (bt);
-  GstStructure *structure = gst_caps_get_structure (caps, 0);
-  GstCaps *newcaps = NULL;
-  const GValue *framerate_value = NULL;
-  const GValue *par_value = NULL;
+       //GstGLUpload* upload = GST_GL_UPLOAD (bt);
+       GstStructure* structure = gst_caps_get_structure (caps, 0);
+       GstCaps* newcaps = NULL;
+       const GValue* framerate_value = NULL;
+       const GValue* par_value = NULL;
 
-  GST_DEBUG ("transform caps %" GST_PTR_FORMAT, caps);
+       GST_DEBUG ("transform caps %" GST_PTR_FORMAT, caps);
 
   framerate_value = gst_structure_get_value (structure, "framerate");
-  par_value = gst_structure_get_value (structure, "pixel-aspect-ratio");
+       par_value = gst_structure_get_value (structure, "pixel-aspect-ratio");
 
-  if (direction == GST_PAD_SRC) {
-    GstCaps *newothercaps = gst_caps_new_simple ("video/x-raw-rgb", NULL);
+       if (direction == GST_PAD_SRC)
+  {
+    GstCaps* newothercaps = gst_caps_new_simple ("video/x-raw-rgb", NULL);
     newcaps = gst_caps_new_simple ("video/x-raw-yuv", NULL);
-    gst_caps_append (newcaps, newothercaps);
-  } else
+    gst_caps_append(newcaps, newothercaps);
+  }
+       else
     newcaps = gst_caps_new_simple ("video/x-raw-gl", NULL);
 
   structure = gst_caps_get_structure (newcaps, 0);
 
   gst_structure_set (structure,
-      "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
-      "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
+    "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+    "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
 
-  gst_structure_set_value (structure, "framerate", framerate_value);
-  if (par_value)
-    gst_structure_set_value (structure, "pixel-aspect-ratio", par_value);
-  else
-    gst_structure_set (structure, "pixel-aspect-ratio", GST_TYPE_FRACTION,
-        1, 1, NULL);
+       gst_structure_set_value (structure, "framerate", framerate_value);
+       if (par_value)
+               gst_structure_set_value (structure, "pixel-aspect-ratio", par_value);
+       else
+               gst_structure_set (structure, "pixel-aspect-ratio", GST_TYPE_FRACTION,
+                                  1, 1, NULL);
 
   gst_caps_merge_structure (newcaps, gst_structure_copy (structure));
 
-  GST_DEBUG ("new caps %" GST_PTR_FORMAT, newcaps);
+       GST_DEBUG ("new caps %" GST_PTR_FORMAT, newcaps);
 
-  return newcaps;
+       return newcaps;
 }
 
 /* from gst-plugins-base "videoscale" code */
 static void
-gst_gl_upload_fixate_caps (GstBaseTransform * base, GstPadDirection direction,
-    GstCaps * caps, GstCaps * othercaps)
+gst_gl_upload_fixate_caps (GstBaseTransform* base, GstPadDirection direction,
+    GstCaps* caps, GstCaps* othercaps)
 {
-  GstStructure *ins, *outs;
+    GstStructure *ins, *outs;
 
-  const GValue *from_par, *to_par;
+    const GValue *from_par, *to_par;
 
-  g_return_if_fail (gst_caps_is_fixed (caps));
+    g_return_if_fail (gst_caps_is_fixed (caps));
 
-  GST_DEBUG_OBJECT (base, "trying to fixate othercaps %" GST_PTR_FORMAT
+    GST_DEBUG_OBJECT (base, "trying to fixate othercaps %" GST_PTR_FORMAT
       " based on caps %" GST_PTR_FORMAT, othercaps, caps);
 
-  ins = gst_caps_get_structure (caps, 0);
-  outs = gst_caps_get_structure (othercaps, 0);
-
-  from_par = gst_structure_get_value (ins, "pixel-aspect-ratio");
-  to_par = gst_structure_get_value (outs, "pixel-aspect-ratio");
-
-  //we have both PAR but they might not be fixated
-  if (from_par && to_par) {
-    gint from_w, from_h, from_par_n, from_par_d, to_par_n, to_par_d;
-
-    gint count = 0, w = 0, h = 0;
-
-    guint num, den;
-
-    //from_par should be fixed
-    g_return_if_fail (gst_value_is_fixed (from_par));
-
-    from_par_n = gst_value_get_fraction_numerator (from_par);
-    from_par_d = gst_value_get_fraction_denominator (from_par);
-
-    //fixate the out PAR
-    if (!gst_value_is_fixed (to_par)) {
-      GST_DEBUG_OBJECT (base, "fixating to_par to %dx%d", from_par_n,
-          from_par_d);
-      gst_structure_fixate_field_nearest_fraction (outs, "pixel-aspect-ratio",
-          from_par_n, from_par_d);
+    ins = gst_caps_get_structure (caps, 0);
+    outs = gst_caps_get_structure (othercaps, 0);
+
+    from_par = gst_structure_get_value (ins, "pixel-aspect-ratio");
+    to_par = gst_structure_get_value (outs, "pixel-aspect-ratio");
+
+    //we have both PAR but they might not be fixated
+    if (from_par && to_par)
+    {
+        gint from_w, from_h, from_par_n, from_par_d, to_par_n, to_par_d;
+
+        gint count = 0, w = 0, h = 0;
+
+        guint num, den;
+
+        //from_par should be fixed
+        g_return_if_fail (gst_value_is_fixed (from_par));
+
+        from_par_n = gst_value_get_fraction_numerator (from_par);
+        from_par_d = gst_value_get_fraction_denominator (from_par);
+
+        //fixate the out PAR
+        if (!gst_value_is_fixed (to_par))
+        {
+          GST_DEBUG_OBJECT (base, "fixating to_par to %dx%d", from_par_n,
+              from_par_d);
+          gst_structure_fixate_field_nearest_fraction (outs, "pixel-aspect-ratio",
+              from_par_n, from_par_d);
+        }
+
+        to_par_n = gst_value_get_fraction_numerator (to_par);
+        to_par_d = gst_value_get_fraction_denominator (to_par);
+
+        //f both width and height are already fixed, we can't do anything
+        //about it anymore
+        if (gst_structure_get_int (outs, "width", &w))
+            ++count;
+        if (gst_structure_get_int (outs, "height", &h))
+            ++count;
+        if (count == 2)
+        {
+            GST_DEBUG_OBJECT (base, "dimensions already set to %dx%d, not fixating",
+                w, h);
+            return;
+        }
+
+        gst_structure_get_int (ins, "width", &from_w);
+        gst_structure_get_int (ins, "height", &from_h);
+
+        if (!gst_video_calculate_display_ratio (&num, &den, from_w, from_h,
+                from_par_n, from_par_d, to_par_n, to_par_d))
+        {
+          GST_ELEMENT_ERROR (base, CORE, NEGOTIATION, (NULL),
+              ("Error calculating the output scaled size - integer overflow"));
+          return;
+        }
+
+        GST_DEBUG_OBJECT (base,
+            "scaling input with %dx%d and PAR %d/%d to output PAR %d/%d",
+            from_w, from_h, from_par_n, from_par_d, to_par_n, to_par_d);
+        GST_DEBUG_OBJECT (base, "resulting output should respect ratio of %d/%d",
+            num, den);
+
+        //now find a width x height that respects this display ratio.
+        //prefer those that have one of w/h the same as the incoming video
+        //using wd / hd = num / den
+
+        //if one of the output width or height is fixed, we work from there
+        if (h)
+        {
+            GST_DEBUG_OBJECT (base, "height is fixed,scaling width");
+            w = (guint) gst_util_uint64_scale_int (h, num, den);
+        }
+        else if (w)
+        {
+            GST_DEBUG_OBJECT (base, "width is fixed, scaling height");
+            h = (guint) gst_util_uint64_scale_int (w, den, num);
+        }
+        else
+        {
+            //none of width or height is fixed, figure out both of them based only on
+            //the input width and height
+            //check hd / den is an integer scale factor, and scale wd with the PAR
+            if (from_h % den == 0)
+            {
+                GST_DEBUG_OBJECT (base, "keeping video height");
+                h = from_h;
+                w = (guint) gst_util_uint64_scale_int (h, num, den);
+            }
+            else if (from_w % num == 0)
+            {
+                GST_DEBUG_OBJECT (base, "keeping video width");
+                w = from_w;
+                h = (guint) gst_util_uint64_scale_int (w, den, num);
+            }
+            else
+            {
+                GST_DEBUG_OBJECT (base, "approximating but keeping video height");
+                h = from_h;
+                w = (guint) gst_util_uint64_scale_int (h, num, den);
+            }
+        }
+        GST_DEBUG_OBJECT (base, "scaling to %dx%d", w, h);
+
+        //now fixate
+        gst_structure_fixate_field_nearest_int (outs, "width", w);
+        gst_structure_fixate_field_nearest_int (outs, "height", h);
     }
-
-    to_par_n = gst_value_get_fraction_numerator (to_par);
-    to_par_d = gst_value_get_fraction_denominator (to_par);
-
-    //f both width and height are already fixed, we can't do anything
-    //about it anymore
-    if (gst_structure_get_int (outs, "width", &w))
-      ++count;
-    if (gst_structure_get_int (outs, "height", &h))
-      ++count;
-    if (count == 2) {
-      GST_DEBUG_OBJECT (base, "dimensions already set to %dx%d, not fixating",
-          w, h);
-      return;
+    else
+    {
+        gint width, height;
+
+        if (gst_structure_get_int (ins, "width", &width))
+        {
+          if (gst_structure_has_field (outs, "width"))
+            gst_structure_fixate_field_nearest_int (outs, "width", width);
+        }
+        if (gst_structure_get_int (ins, "height", &height)) {
+          if (gst_structure_has_field (outs, "height")) {
+            gst_structure_fixate_field_nearest_int (outs, "height", height);
+          }
+        }
     }
 
-    gst_structure_get_int (ins, "width", &from_w);
-    gst_structure_get_int (ins, "height", &from_h);
-
-    if (!gst_video_calculate_display_ratio (&num, &den, from_w, from_h,
-            from_par_n, from_par_d, to_par_n, to_par_d)) {
-      GST_ELEMENT_ERROR (base, CORE, NEGOTIATION, (NULL),
-          ("Error calculating the output scaled size - integer overflow"));
-      return;
-    }
-
-    GST_DEBUG_OBJECT (base,
-        "scaling input with %dx%d and PAR %d/%d to output PAR %d/%d",
-        from_w, from_h, from_par_n, from_par_d, to_par_n, to_par_d);
-    GST_DEBUG_OBJECT (base, "resulting output should respect ratio of %d/%d",
-        num, den);
-
-    //now find a width x height that respects this display ratio.
-    //prefer those that have one of w/h the same as the incoming video
-    //using wd / hd = num / den
-
-    //if one of the output width or height is fixed, we work from there
-    if (h) {
-      GST_DEBUG_OBJECT (base, "height is fixed,scaling width");
-      w = (guint) gst_util_uint64_scale_int (h, num, den);
-    } else if (w) {
-      GST_DEBUG_OBJECT (base, "width is fixed, scaling height");
-      h = (guint) gst_util_uint64_scale_int (w, den, num);
-    } else {
-      //none of width or height is fixed, figure out both of them based only on
-      //the input width and height
-      //check hd / den is an integer scale factor, and scale wd with the PAR
-      if (from_h % den == 0) {
-        GST_DEBUG_OBJECT (base, "keeping video height");
-        h = from_h;
-        w = (guint) gst_util_uint64_scale_int (h, num, den);
-      } else if (from_w % num == 0) {
-        GST_DEBUG_OBJECT (base, "keeping video width");
-        w = from_w;
-        h = (guint) gst_util_uint64_scale_int (w, den, num);
-      } else {
-        GST_DEBUG_OBJECT (base, "approximating but keeping video height");
-        h = from_h;
-        w = (guint) gst_util_uint64_scale_int (h, num, den);
-      }
-    }
-    GST_DEBUG_OBJECT (base, "scaling to %dx%d", w, h);
-
-    //now fixate
-    gst_structure_fixate_field_nearest_int (outs, "width", w);
-    gst_structure_fixate_field_nearest_int (outs, "height", h);
-  } else {
-    gint width, height;
-
-    if (gst_structure_get_int (ins, "width", &width)) {
-      if (gst_structure_has_field (outs, "width"))
-        gst_structure_fixate_field_nearest_int (outs, "width", width);
-    }
-    if (gst_structure_get_int (ins, "height", &height)) {
-      if (gst_structure_has_field (outs, "height")) {
-        gst_structure_fixate_field_nearest_int (outs, "height", height);
-      }
-    }
-  }
-
-  GST_DEBUG_OBJECT (base, "fixated othercaps to %" GST_PTR_FORMAT, othercaps);
+    GST_DEBUG_OBJECT (base, "fixated othercaps to %" GST_PTR_FORMAT, othercaps);
 }
 
 static gboolean
-gst_gl_upload_set_caps (GstBaseTransform * bt, GstCaps * incaps,
-    GstCaps * outcaps)
+gst_gl_upload_set_caps (GstBaseTransform* bt, GstCaps* incaps,
+    GstCaps* outcaps)
 {
-  GstGLUpload *upload = GST_GL_UPLOAD (bt);
-  gboolean ret = FALSE;
-  GstVideoFormat video_format = GST_VIDEO_FORMAT_UNKNOWN;
+    GstGLUpload* upload = GST_GL_UPLOAD (bt);
+    gboolean ret = FALSE;
+    GstVideoFormat video_format = GST_VIDEO_FORMAT_UNKNOWN;
 
-  GST_DEBUG ("called with %" GST_PTR_FORMAT, incaps);
+    GST_DEBUG ("called with %" GST_PTR_FORMAT, incaps);
 
-  ret = gst_video_format_parse_caps (outcaps, &video_format,
-      &upload->gl_width, &upload->gl_height);
+    ret = gst_video_format_parse_caps (outcaps, &video_format,
+        &upload->gl_width, &upload->gl_height);
 
-  ret |= gst_video_format_parse_caps (incaps, &upload->video_format,
-      &upload->video_width, &upload->video_height);
+    ret |= gst_video_format_parse_caps (incaps, &upload->video_format,
+        &upload->video_width, &upload->video_height);
 
-  if (!ret) {
-    GST_DEBUG ("caps connot be parsed");
-    return FALSE;
-  }
-  //we have video and gl size, we can now init OpenGL stuffs
-  upload->display = gst_gl_display_new ();
+    if (!ret)
+    {
+        GST_DEBUG ("caps connot be parsed");
+        return FALSE;
+    }
+
+    //we have video and gl size, we can now init OpenGL stuffs
+    upload->display = gst_gl_display_new ();
 
-  //init unvisible opengl context
-  gst_gl_display_create_context (upload->display,
-      upload->gl_width, upload->gl_height);
+    //init unvisible opengl context
+    gst_gl_display_create_context (upload->display,
+        upload->gl_width, upload->gl_height);
 
-  //init colorspace conversion if needed
-  gst_gl_display_init_upload (upload->display, upload->video_format,
-      upload->gl_width, upload->gl_height,
-      upload->video_width, upload->video_height);
+    //init colorspace conversion if needed
+    gst_gl_display_init_upload (upload->display, upload->video_format,
+        upload->gl_width, upload->gl_height,
+        upload->video_width, upload->video_height);
 
-  return ret;
+    return ret;
 }
 
 static gboolean
-gst_gl_upload_get_unit_size (GstBaseTransform * trans, GstCaps * caps,
-    guint * size)
+gst_gl_upload_get_unit_size (GstBaseTransform* trans, GstCaps* caps,
+                             guint* size)
 {
-  gboolean ret = FALSE;
-  GstStructure *structure = NULL;
-  gint width = 0;
-  gint height = 0;
-
-  structure = gst_caps_get_structure (caps, 0);
-  if (gst_structure_has_name (structure, "video/x-raw-gl")) {
-    ret = gst_gl_buffer_parse_caps (caps, &width, &height);
-    if (ret)
-      *size = gst_gl_buffer_get_size (width, height);
-  } else {
-    GstVideoFormat video_format = GST_VIDEO_FORMAT_UNKNOWN;
+    gboolean ret = FALSE;
+    GstStructure* structure = NULL;
+    gint width = 0;
+    gint height = 0;
+
+    structure = gst_caps_get_structure (caps, 0);
+    if (gst_structure_has_name (structure, "video/x-raw-gl"))
+    {
+        ret = gst_gl_buffer_parse_caps (caps, &width, &height);
+        if (ret)
+            *size = gst_gl_buffer_get_size (width, height);
+    }
+    else
+    {
+        GstVideoFormat video_format = GST_VIDEO_FORMAT_UNKNOWN;
 
-    ret = gst_video_format_parse_caps (caps, &video_format, &width, &height);
-    if (ret)
-      *size = gst_video_format_get_size (video_format, width, height);
-  }
+        ret = gst_video_format_parse_caps (caps, &video_format, &width, &height);
+        if (ret)
+            *size = gst_video_format_get_size (video_format, width, height);
+    }
 
-  return TRUE;
+    return TRUE;
 }
 
 static GstFlowReturn
-gst_gl_upload_prepare_output_buffer (GstBaseTransform * trans,
-    GstBuffer * input, gint size, GstCaps * caps, GstBuffer ** buf)
+gst_gl_upload_prepare_output_buffer (GstBaseTransform* trans,
+    GstBuffer* input, gint size, GstCaps* caps, GstBuffer** buf)
 {
-  GstGLUpload *upload = GST_GL_UPLOAD (trans);
+    GstGLUpload* upload = GST_GL_UPLOAD (trans);
 
-  //blocking call, request a texture and attach it to the upload FBO
-  GstGLBuffer *gl_outbuf = gst_gl_buffer_new (upload->display,
-      upload->gl_width, upload->gl_height);
+    //blocking call, request a texture and attach it to the upload FBO
+    GstGLBuffer* gl_outbuf = gst_gl_buffer_new (upload->display,
+        upload->gl_width, upload->gl_height);
 
-  *buf = GST_BUFFER (gl_outbuf);
-  gst_buffer_set_caps (*buf, caps);
+    *buf = GST_BUFFER (gl_outbuf);
+    gst_buffer_set_caps (*buf, caps);
 
-  if (gl_outbuf->texture)
-    return GST_FLOW_OK;
-  else
-    return GST_FLOW_UNEXPECTED;
+    if (gl_outbuf->texture)
+        return GST_FLOW_OK;
+    else
+        return GST_FLOW_UNEXPECTED;
 }
 
 
 static GstFlowReturn
-gst_gl_upload_transform (GstBaseTransform * trans, GstBuffer * inbuf,
-    GstBuffer * outbuf)
+gst_gl_upload_transform (GstBaseTransform* trans, GstBuffer* inbuf,
+    GstBuffer* outbuf)
 {
-  GstGLUpload *upload = GST_GL_UPLOAD (trans);
-  GstGLBuffer *gl_outbuf = GST_GL_BUFFER (outbuf);
-
-  GST_DEBUG ("Upload %p size %d",
-      GST_BUFFER_DATA (inbuf), GST_BUFFER_SIZE (inbuf));
-
-  //blocking call.
-  //Depending on the colorspace, video is upload into several textures.
-  //However, there is only one output texture. The one attached
-  //to the upload FBO.
-  if (gst_gl_display_do_upload (upload->display, gl_outbuf->texture,
-          upload->video_width, upload->video_height, GST_BUFFER_DATA (inbuf)))
-    return GST_FLOW_OK;
-  else
-    return GST_FLOW_UNEXPECTED;
+    GstGLUpload* upload = GST_GL_UPLOAD (trans);
+    GstGLBuffer* gl_outbuf = GST_GL_BUFFER (outbuf);
+
+    GST_DEBUG ("Upload %p size %d",
+        GST_BUFFER_DATA (inbuf), GST_BUFFER_SIZE (inbuf));
+
+    //blocking call.
+    //Depending on the colorspace, video is upload into several textures.
+    //However, there is only one output texture. The one attached
+    //to the upload FBO.
+    if (gst_gl_display_do_upload (upload->display, gl_outbuf->texture,
+            upload->video_width, upload->video_height, GST_BUFFER_DATA (inbuf)))
+        return GST_FLOW_OK;
+    else
+        return GST_FLOW_UNEXPECTED;
 }
index 721f7a7..4dec7fe 100644 (file)
@@ -96,31 +96,31 @@ plugin_init (GstPlugin * plugin)
   }
 #ifdef HAVE_GDKPIXBUF
   if (!gst_element_register (plugin, "glpixbufoverlay",
-          GST_RANK_NONE, gst_gl_pixbufoverlay_get_type ())) {
+          GST_RANK_NONE, gst_gl_pixbufoverlay_get_type())) {
     return FALSE;
   }
   if (!gst_element_register (plugin, "gldifferencematte",
-          GST_RANK_NONE, gst_gl_differencematte_get_type ())) {
+          GST_RANK_NONE, gst_gl_differencematte_get_type())) {
     return FALSE;
   }
   if (!gst_element_register (plugin, "glbumper",
-          GST_RANK_NONE, gst_gl_bumper_get_type ())) {
+          GST_RANK_NONE, gst_gl_bumper_get_type())) {
     return FALSE;
   }
 #endif
 
   if (!gst_element_register (plugin, "gleffects",
-          GST_RANK_NONE, gst_gl_effects_get_type ())) {
+          GST_RANK_NONE, gst_gl_effects_get_type())) {
     return FALSE;
   }
 
   if (!gst_element_register (plugin, "glfilterblur",
-          GST_RANK_NONE, gst_gl_filterblur_get_type ())) {
+          GST_RANK_NONE, gst_gl_filterblur_get_type())) {
     return FALSE;
   }
 
   if (!gst_element_register (plugin, "glfiltersobel",
-          GST_RANK_NONE, gst_gl_filtersobel_get_type ())) {
+          GST_RANK_NONE, gst_gl_filtersobel_get_type())) {
     return FALSE;
   }
 
index 139cea0..6a7ed2b 100644 (file)
@@ -31,8 +31,7 @@
 #define W 320
 #define H 240
 
-struct GstGLClutterActor_
-{
+struct GstGLClutterActor_ {
   Window win;
   Window root;
   ClutterActor *texture;
@@ -42,45 +41,44 @@ struct GstGLClutterActor_
 typedef struct GstGLClutterActor_ GstGLClutterActor;
 
 static gboolean
-create_actor (GstGLClutterActor * actor)
-{
+create_actor (GstGLClutterActor *actor) {
   ClutterKnot knot[2];
   ClutterTimeline *timeline;
   ClutterEffectTemplate *effect_template;
 
-  actor->texture = g_object_new (CLUTTER_GLX_TYPE_TEXTURE_PIXMAP,
-      "window", actor->win, "automatic-updates", TRUE, NULL);
-  clutter_container_add_actor (CLUTTER_CONTAINER (actor->stage),
-      actor->texture);
-  clutter_actor_set_scale (actor->texture, 0.2, 0.2);
+  actor->texture = g_object_new (CLUTTER_GLX_TYPE_TEXTURE_PIXMAP, 
+                            "window", actor->win,
+                            "automatic-updates", TRUE, NULL);
+  clutter_container_add_actor (CLUTTER_CONTAINER (actor->stage), actor->texture);
+  clutter_actor_set_scale (actor->texture, 0.2 , 0.2);
   clutter_actor_set_opacity (actor->texture, 0);
-  clutter_actor_show (actor->texture);
-
-  timeline =
-      clutter_timeline_new (120 /* frames */ , 50 /* frames per second. */ );
-  clutter_timeline_set_loop (timeline, TRUE);
-  clutter_timeline_start (timeline);
+  clutter_actor_show (actor->texture);  
 
+  timeline = clutter_timeline_new(120 /* frames */, 50 /* frames per second. */);
+  clutter_timeline_set_loop(timeline, TRUE); 
+  clutter_timeline_start(timeline);
+  
   /* Instead of our custom callback, 
    * we could use a standard callback. For instance, CLUTTER_ALPHA_SINE_INC. 
    */
-  effect_template =
-      clutter_effect_template_new (timeline, CLUTTER_ALPHA_SINE_INC);
-
+  effect_template = 
+    clutter_effect_template_new (timeline, CLUTTER_ALPHA_SINE_INC);
+  
   knot[0].x = -10;
   knot[0].y = -10;
-  knot[1].x = 160;
-  knot[1].y = 120;
-
+  knot[1].x= 160;
+  knot[1].y= 120;
   // Move the actor along the path:
-  clutter_effect_path (effect_template, actor->texture, knot,
-      sizeof (knot) / sizeof (ClutterKnot), NULL, NULL);
+  clutter_effect_path (effect_template, actor->texture, knot, 
+                      sizeof(knot) / sizeof(ClutterKnot), NULL, NULL);
   clutter_effect_scale (effect_template, actor->texture, 1.0, 1.0, NULL, NULL);
-  clutter_effect_rotate (effect_template, actor->texture,
-      CLUTTER_Z_AXIS, 360.0, W / 2.0, H / 2.0, 0.0,
-      CLUTTER_ROTATE_CW, NULL, NULL);
-  clutter_effect_rotate (effect_template, actor->texture,
-      CLUTTER_X_AXIS, 360.0, 0.0, W / 4.0, 0.0, CLUTTER_ROTATE_CW, NULL, NULL);
+  clutter_effect_rotate (effect_template, actor->texture, 
+                        CLUTTER_Z_AXIS, 360.0, W/2.0, H/2.0, 0.0, 
+                        CLUTTER_ROTATE_CW, NULL, NULL);
+  clutter_effect_rotate (effect_template, actor->texture, 
+                        CLUTTER_X_AXIS, 360.0, 0.0, W/4.0, 0.0, 
+                        CLUTTER_ROTATE_CW, NULL, NULL); 
 
   // Also change the actor's opacity while moving it along the path:
   // (You would probably want to use a different ClutterEffectTemplate, 
@@ -90,7 +88,7 @@ create_actor (GstGLClutterActor * actor)
   g_object_unref (effect_template);
   g_object_unref (timeline);
 
-  return FALSE;
+   return FALSE;
 }
 
 static GstBusSyncReply
@@ -100,16 +98,15 @@ create_window (GstBus * bus, GstMessage * message, gpointer data)
   // ignore anything but 'prepare-xwindow-id' element messages
   if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
     return GST_BUS_PASS;
-
+  
   if (!gst_structure_has_name (message->structure, "prepare-xwindow-id"))
     return GST_BUS_PASS;
-
+  
   g_debug ("CREATING WINDOW");
-
-  gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (GST_MESSAGE_SRC (message)),
-      actor->win);
+  
+  gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (GST_MESSAGE_SRC (message)), actor->win); 
   clutter_threads_add_idle ((GSourceFunc) create_actor, actor);
-
+  
   gst_message_unref (message);
   return GST_BUS_DROP;
 }
@@ -117,8 +114,8 @@ create_window (GstBus * bus, GstMessage * message, gpointer data)
 int
 main (int argc, char *argv[])
 {
-  GstPipeline *pipeline;
-  GstBus *bus;
+  GstPipeline      *pipeline;
+  GstBus          *bus;
   ClutterActor *stage;
   GstGLClutterActor *actor;
   Display *disp;
@@ -128,10 +125,10 @@ main (int argc, char *argv[])
   gst_init (&argc, &argv);
 
   disp = clutter_x11_get_default_display ();
-  if (!clutter_x11_has_composite_extension ()) {
+  if(!clutter_x11_has_composite_extension ()) {
     g_error ("XComposite extension missing");
   }
-
+  
 
   stage = clutter_stage_get_default ();
 //  clutter_actor_set_size (CLUTTER_ACTOR (stage), W*3+2, H);
@@ -145,10 +142,8 @@ main (int argc, char *argv[])
   XMapRaised (disp, actor->win);
   XSync (disp, FALSE);
 
-  pipeline =
-      GST_PIPELINE (gst_parse_launch
-      ("videotestsrc ! video/x-raw-rgb, width=320, height=240, framerate=(fraction)30/1 ! "
-          "glupload ! gleffects effect=twirl ! glimagesink", NULL));
+  pipeline = GST_PIPELINE (gst_parse_launch ("videotestsrc ! video/x-raw-rgb, width=320, height=240, framerate=(fraction)30/1 ! "
+                                             "glupload ! gleffects effect=twirl ! glimagesink", NULL));
 
   bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
 
@@ -158,10 +153,10 @@ main (int argc, char *argv[])
 
   clutter_actor_show_all (stage);
 
-  clutter_main ();
+  clutter_main();
 
   gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_NULL);
   g_object_unref (pipeline);
-
+  
   return 0;
 }
index 708917b..1002fe2 100644 (file)
@@ -32,8 +32,7 @@
 #define W 160
 #define H 120
 
-struct GstGLClutterActor_
-{
+struct GstGLClutterActor_ {
   Window win;
   Window root;
   ClutterActor *texture;
@@ -43,25 +42,24 @@ struct GstGLClutterActor_
 typedef struct GstGLClutterActor_ GstGLClutterActor;
 
 static gboolean
-create_actor (GstGLClutterActor * actor)
-{
+create_actor (GstGLClutterActor *actor) {
   static gint xpos = 0;
   static gint ypos = 0;
   Display *disp;
   actor->texture = g_object_new (CLUTTER_GLX_TYPE_TEXTURE_PIXMAP,
-      "window", actor->win, "automatic-updates", TRUE, NULL);
-  clutter_container_add_actor (CLUTTER_CONTAINER (actor->stage),
-      actor->texture);
+                                 "window", actor->win,
+                                 "automatic-updates", TRUE, NULL);
+  clutter_container_add_actor (CLUTTER_CONTAINER (actor->stage), actor->texture);
   clutter_actor_set_position (actor->texture, xpos, ypos);
 
   disp = clutter_x11_get_default_display ();
   XMoveResizeWindow (disp, actor->win, xpos, ypos, W, H);
 
-  if (xpos > (COLS - 1) * W) {
+  if (xpos > (COLS-1)*W) {
     xpos = 0;
-    ypos += H + 1;
+    ypos += H+1;
   } else
-    xpos += W + 1;
+    xpos += W+1;
   clutter_actor_show (actor->texture);
 
   return FALSE;
@@ -81,14 +79,14 @@ create_window (GstBus * bus, GstMessage * message, gpointer data)
     return GST_BUS_PASS;
 
   if (!mutex)
-    mutex = g_mutex_new ();
+      mutex = g_mutex_new ();
 
   g_mutex_lock (mutex);
 
   if (count < N_ACTORS) {
     g_message ("adding actor %d", count);
     gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (GST_MESSAGE_SRC (message)),
-        actor[count]->win);
+                                  actor[count]->win);
     clutter_threads_add_idle ((GSourceFunc) create_actor, actor[count]);
     count++;
   }
@@ -101,7 +99,7 @@ create_window (GstBus * bus, GstMessage * message, gpointer data)
 
 #if 0
 void
-apply_fx (GstElement * element, const gchar * fx)
+apply_fx (GstElement *element, const gchar *fx)
 {
   GEnumClass *p_class;
 
@@ -122,13 +120,12 @@ apply_fx (GstElement * element, const gchar * fx)
 int
 main (int argc, char *argv[])
 {
-  GstPipeline *pipeline;
-  GstBus *bus;
+  GstPipeline      *pipeline;
+  GstBus          *bus;
 
   GstElement *srcbin;
   GstElement *tee;
-  GstElement *queue[N_ACTORS], *upload[N_ACTORS], *effect[N_ACTORS],
-      *sink[N_ACTORS];
+  GstElement *queue[N_ACTORS], *upload[N_ACTORS], *effect[N_ACTORS], *sink[N_ACTORS];
 
   ClutterActor *stage;
   GstGLClutterActor *actor[N_ACTORS];
@@ -142,17 +139,18 @@ main (int argc, char *argv[])
   gst_init (&argc, &argv);
 
   disp = clutter_x11_get_default_display ();
-  if (!clutter_x11_has_composite_extension ()) {
+  if(!clutter_x11_has_composite_extension ()) {
     g_error ("XComposite extension missing");
   }
 
   stage = clutter_stage_get_default ();
   clutter_actor_set_size (CLUTTER_ACTOR (stage),
-      W * COLS + (COLS - 1), H * ROWS + (ROWS - 1));
+                          W*COLS + (COLS-1),
+                          H*ROWS + (ROWS-1));
 
   stage_win = clutter_x11_get_stage_window (CLUTTER_STAGE (stage));
 
-  for (i = 0; i < N_ACTORS; i++) {
+  for (i=0; i<N_ACTORS; i++) {
     actor[i] = g_new0 (GstGLClutterActor, 1);
     actor[i]->stage = stage;
     actor[i]->win = XCreateSimpleWindow (disp, stage_win, 0, 0, W, H, 0, 0, 0);
@@ -168,41 +166,38 @@ main (int argc, char *argv[])
                           "identity", W, H);
 */
   desc = g_strdup_printf ("videotestsrc ! "
-      "video/x-raw-rgb, width=%d, height=%d !" "identity", W, H);
+                          "video/x-raw-rgb, width=%d, height=%d !"
+                          "identity", W, H);
   pipeline = GST_PIPELINE (gst_pipeline_new (NULL));
 
   srcbin = gst_parse_bin_from_description (desc, TRUE, NULL);
-  if (!srcbin)
-    g_error ("Source bin creation failed");
+  if (!srcbin) g_error ("Source bin creation failed");
 
   tee = gst_element_factory_make ("tee", NULL);
 
   gst_bin_add_many (GST_BIN (pipeline), srcbin, tee, NULL);
 
-  for (i = 0; i < N_ACTORS; i++) {
+  for (i=0; i<N_ACTORS; i++) {
     queue[i] = gst_element_factory_make ("queue", NULL);
     upload[i] = gst_element_factory_make ("glupload", NULL);
     effect[i] = gst_element_factory_make ("gleffects", NULL);
     sink[i] = gst_element_factory_make ("glimagesink", NULL);
     gst_bin_add_many (GST_BIN (pipeline),
-        queue[i], upload[i], effect[i], sink[i], NULL);
+                      queue[i], upload[i], effect[i], sink[i], NULL);
   }
 
   gst_element_link_many (srcbin, tee, NULL);
 
-  for (i = 0; i < N_ACTORS; i++) {
-    ok |=
-        gst_element_link_many (tee, queue[i], upload[i], effect[i], sink[i],
-        NULL);
+  for (i=0; i<N_ACTORS; i++) {
+    ok |= gst_element_link_many (tee, queue[i], upload[i], effect[i], sink[i], NULL);
   }
 
   if (!ok)
     g_error ("Failed to link one or more elements");
 
-  for (i = 0; i < N_ACTORS; i++) {
-    g_message ("setting effect %d on %s", i + 1,
-        gst_element_get_name (effect[i]));
-    g_object_set (G_OBJECT (effect[i]), "effect", i + 1, NULL);
+  for (i=0; i<N_ACTORS; i++) {
+    g_message ("setting effect %d on %s", i+1, gst_element_get_name (effect[i]));
+    g_object_set (G_OBJECT (effect[i]), "effect", i+1, NULL);
   }
 
   bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
@@ -213,7 +208,7 @@ main (int argc, char *argv[])
 
   clutter_actor_show_all (stage);
 
-  clutter_main ();
+  clutter_main();
 
   gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_NULL);
   g_object_unref (pipeline);
index a02272f..36dd2c1 100644 (file)
@@ -17,11 +17,10 @@ static gboolean
 expose_cb (GtkWidget * widget, GdkEventExpose * event, gpointer data)
 {
   GstXOverlay *overlay =
-      GST_X_OVERLAY (gst_bin_get_by_interface (GST_BIN (data),
-          GST_TYPE_X_OVERLAY));
+    GST_X_OVERLAY (gst_bin_get_by_interface (GST_BIN (data),
+                                             GST_TYPE_X_OVERLAY));
 #ifdef WIN32
-  gst_x_overlay_set_xwindow_id (overlay,
-      (gulong) GDK_WINDOW_HWND (widget->window));
+  gst_x_overlay_set_xwindow_id (overlay, (gulong)GDK_WINDOW_HWND(widget->window));
 #else
   gst_x_overlay_set_xwindow_id (overlay, GDK_WINDOW_XWINDOW (widget->window));
 #endif
@@ -30,7 +29,7 @@ expose_cb (GtkWidget * widget, GdkEventExpose * event, gpointer data)
 }
 
 static void
-destroy_cb (GtkWidget * widget, GdkEvent * event, GstElement * pipeline)
+destroy_cb (GtkWidget *widget, GdkEvent *event, GstElement *pipeline)
 {
   g_message ("destroy callback");
 
@@ -112,10 +111,9 @@ main (gint argc, gchar * argv[])
 
   GOptionContext *context;
   GOptionEntry options[] = {
-    {"source-bin", 's', 0, G_OPTION_ARG_STRING_ARRAY, &source_desc_array,
-        "Use a custom source bin description (gst-launch style)", NULL}
-    ,
-    {NULL}
+    { "source-bin", 's', 0, G_OPTION_ARG_STRING_ARRAY, &source_desc_array,
+      "Use a custom source bin description (gst-launch style)", NULL },
+    { NULL }
   };
 
   g_thread_init (NULL);
@@ -129,23 +127,20 @@ main (gint argc, gchar * argv[])
     return -1;
   }
   g_option_context_free (context);
-
+  
   if (source_desc_array != NULL) {
     source_desc = g_strjoinv (" ", source_desc_array);
     g_strfreev (source_desc_array);
   }
   if (source_desc == NULL) {
-    source_desc =
-        g_strdup
-        ("videotestsrc ! video/x-raw-rgb, width=352, height=288 ! identity");
+    source_desc = g_strdup ("videotestsrc ! video/x-raw-rgb, width=352, height=288 ! identity");
   }
 
-  sourcebin =
-      gst_parse_bin_from_description (g_strdup (source_desc), TRUE, &error);
+  sourcebin = gst_parse_bin_from_description (g_strdup (source_desc), TRUE, &error);
   g_free (source_desc);
   if (error) {
-    g_print ("Error while parsing source bin description: %s\n",
-        GST_STR_NULL (error->message));
+    g_print ("Error while parsing source bin description: %s\n", 
+             GST_STR_NULL (error->message));
     return -1;
   }
 
@@ -168,9 +163,9 @@ main (gint argc, gchar * argv[])
   }
 
   g_signal_connect (G_OBJECT (window), "delete-event",
-      G_CALLBACK (destroy_cb), pipeline);
+                    G_CALLBACK (destroy_cb), pipeline);
   g_signal_connect (G_OBJECT (window), "destroy-event",
-      G_CALLBACK (destroy_cb), pipeline);
+                    G_CALLBACK (destroy_cb), pipeline);
 
   screen = gtk_drawing_area_new ();
 
index 928e447..1aaf6bb 100644 (file)
@@ -23,38 +23,38 @@ struct _SourceData
 };
 typedef struct _SourceData SourceData;
 
-static GstBusSyncReply
-create_window (GstBus * bus, GstMessage * message, GtkWidget * widget)
+static GstBusSyncReply 
+create_window (GstBus *bus, GstMessage *message, GtkWidget *widget)
 {
-  // ignore anything but 'prepare-xwindow-id' element messages
-  if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
-    return GST_BUS_PASS;
+    // ignore anything but 'prepare-xwindow-id' element messages
+    if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
+        return GST_BUS_PASS;
 
-  if (!gst_structure_has_name (message->structure, "prepare-xwindow-id"))
-    return GST_BUS_PASS;
+    if (!gst_structure_has_name (message->structure, "prepare-xwindow-id"))
+        return GST_BUS_PASS;
 
 #ifdef WIN32
-  gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (GST_MESSAGE_SRC (message)),
-      (gulong) GDK_WINDOW_HWND (widget->window));
+    gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (GST_MESSAGE_SRC (message)),
+        (gulong)GDK_WINDOW_HWND(widget->window));
 #else
-  gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (GST_MESSAGE_SRC (message)),
-      GDK_WINDOW_XWINDOW (widget->window));
+    gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (GST_MESSAGE_SRC (message)),
+        GDK_WINDOW_XWINDOW(widget->window));
 #endif
 
-  gst_message_unref (message);
+    gst_message_unref (message);
 
-  return GST_BUS_DROP;
+    return GST_BUS_DROP;
 }
 
-static gboolean
-expose_cb (GtkWidget * widget, GdkEventExpose * event, GstElement * videosink)
+static gboolean 
+expose_cb(GtkWidget *widget, GdkEventExpose *event, GstElement *videosink)
 {
-  gst_x_overlay_expose (GST_X_OVERLAY (videosink));
-  return FALSE;
+    gst_x_overlay_expose (GST_X_OVERLAY (videosink));
+    return FALSE;
 }
 
 static void
-destroy_cb (GtkWidget * widget, GdkEvent * event, GstElement * pipeline)
+destroy_cb (GtkWidget *widget, GdkEvent *event, GstElement *pipeline)
 {
   g_message ("destroy callback");
 
@@ -112,8 +112,9 @@ set_location_delayed (gpointer data)
 
 static void
 on_drag_data_received (GtkWidget * widget,
-    GdkDragContext * context, int x, int y,
-    GtkSelectionData * seldata, guint inf, guint time, gpointer data)
+                       GdkDragContext * context, int x, int y,
+                       GtkSelectionData * seldata, guint inf, guint time,
+                       gpointer data)
 {
   GdkPixbufFormat *format;
   SourceData *userdata = g_new0 (SourceData, 1);
@@ -123,7 +124,7 @@ on_drag_data_received (GtkWidget * widget,
   format = gdk_pixbuf_get_file_info (filename, NULL, NULL);
   g_return_if_fail (format);
   g_print ("received %s image: %s\n", filename,
-      gdk_pixbuf_format_get_name (format));
+           gdk_pixbuf_format_get_name (format));
   userdata->nick = "location";
   userdata->value = g_strdup (filename);
   userdata->data = data;
@@ -131,9 +132,9 @@ on_drag_data_received (GtkWidget * widget,
   if (delay > 0) {
     g_print ("%d\n", delay);
     g_timeout_add_seconds (1, set_location_delayed, userdata);
-  } else
-    g_object_set (G_OBJECT (userdata->data), userdata->nick, userdata->value,
-        NULL);
+  }
+  else
+    g_object_set (G_OBJECT (userdata->data), userdata->nick, userdata->value, NULL);
   g_free (filename);
 }
 
@@ -159,17 +160,11 @@ main (gint argc, gchar * argv[])
 
   GOptionContext *context;
   GOptionEntry options[] = {
-    {"source-bin", 's', 0, G_OPTION_ARG_STRING_ARRAY, &source_desc_array,
-        "Use a custom source bin description (gst-launch style)", NULL}
-    ,
-    {"method", 'm', 0, G_OPTION_ARG_INT, &method,
-        "1 for gstdifferencematte, 2 for gstpixbufoverlay", "M"}
-    ,
-    {"delay", 'd', 0, G_OPTION_ARG_INT, &delay,
-          "Wait N seconds before to send the image to gstreamer (useful with differencematte)",
-        "N"}
-    ,
-    {NULL}
+    { "source-bin", 's', 0, G_OPTION_ARG_STRING_ARRAY, &source_desc_array,
+      "Use a custom source bin description (gst-launch style)", NULL },
+    { "method", 'm', 0, G_OPTION_ARG_INT, &method, "1 for gstdifferencematte, 2 for gstpixbufoverlay", "M" },
+    { "delay", 'd', 0, G_OPTION_ARG_INT, &delay, "Wait N seconds before to send the image to gstreamer (useful with differencematte)", "N" },
+    { NULL }
   };
 
   g_thread_init (NULL);
@@ -183,23 +178,20 @@ main (gint argc, gchar * argv[])
     return -1;
   }
   g_option_context_free (context);
-
+  
   if (source_desc_array != NULL) {
     source_desc = g_strjoinv (" ", source_desc_array);
     g_strfreev (source_desc_array);
   }
   if (source_desc == NULL) {
-    source_desc =
-        g_strdup
-        ("videotestsrc ! video/x-raw-rgb, width=352, height=288 ! identity");
+    source_desc = g_strdup ("videotestsrc ! video/x-raw-rgb, width=352, height=288 ! identity");
   }
 
-  sourcebin =
-      gst_parse_bin_from_description (g_strdup (source_desc), TRUE, &error);
+  sourcebin = gst_parse_bin_from_description (g_strdup (source_desc), TRUE, &error);
   g_free (source_desc);
   if (error) {
-    g_print ("Error while parsing source bin description: %s\n",
-        GST_STR_NULL (error->message));
+    g_print ("Error while parsing source bin description: %s\n", 
+             GST_STR_NULL (error->message));
     return -1;
   }
 
@@ -226,9 +218,9 @@ main (gint argc, gchar * argv[])
   }
 
   g_signal_connect (G_OBJECT (window), "delete-event",
-      G_CALLBACK (destroy_cb), pipeline);
+                    G_CALLBACK (destroy_cb), pipeline);
   g_signal_connect (G_OBJECT (window), "destroy-event",
-      G_CALLBACK (destroy_cb), pipeline);
+                    G_CALLBACK (destroy_cb), pipeline);
 
   screen = gtk_drawing_area_new ();
 
@@ -270,7 +262,7 @@ main (gint argc, gchar * argv[])
   bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
   gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, screen);
   gst_object_unref (bus);
-  g_signal_connect (screen, "expose-event", G_CALLBACK (expose_cb), sink);
+  g_signal_connect(screen, "expose-event", G_CALLBACK(expose_cb), sink);
 
   gtk_drag_dest_set (screen, GTK_DEST_DEFAULT_ALL, NULL, 0, GDK_ACTION_COPY);
   gtk_drag_dest_add_uri_targets (screen);