Final SoC Report – screencasts, screencasts.. screencasts!

Hey! Summer of Code just ended! since Monday we’re in Final Evaluation phase.
This means I can finally take some vacation and leave coding for a while :) !
But, most of all, it means that it’s time again for not one, not two, but four screencasts!!

I’m sorry for not posting anything for a while but, needless to say I don’t like blogging :P, I was really busy with the merge. Julien Isorce, another gstreamer developer, was working on his own branch of gstreamer-gl since some time and recently David Schleef decided to merge it with cvs trunk.
He added a lot of great things like glsl colorspace conversion, win32 support, a working glimagesink and lot more. Unfortunately my effects didn’t work with the new code so I had to work hard to make them work again.

But let’s stop talking about this boring stuff, now almost everything is fine so… get ready for the show :P !

New Effects

New Effects

Not too much on this side..

  • a Glow Lighting effect that some of you requested. I tried to resemble gimp SoftGlow filter, do you like it?
  • a SinCity inspired effect that desaturates everything but red shades… don’t know if you agree but I love it!
  • better curves for Sepia and Cross Processing effect, maybe the latter still needs some tuning (too light blue on dark tones).
  • a Square distortion effect… ehm, no.. it was already there :) but that’s definitely my favourite one!

New Filters

These are still young and don’t work quite well yet, but I’m almost there!


Takes an image filename through a property and alpha blends it with the video stream.
It could be nice with Cheese to add funny frames, or just to add a red circle to displayed video while recording.


This one saves a video frame of the background and replaces it with an image.
It’s really hard to make it work properly, it tries to guess the background thresholding the difference between current frame and saved one.
To get a good result it needs a uniform background, better with a uncommon color, a low noise webcam (i tried to remove noise dependency with some gaussian blur), etc.
Any idea to improve it? Probably RGB is not the right colorspace to do this thing, maybe using HSL or HSV and thresholding just hue could help to get rid of luminance dependency. I’ll give it a try.

Clutter Experiments

Clutter live preview

This is my last experiment with rendering from gstreamer gl into a ClutterActor.
It uses XComposite to redirect glimagesink stream offscreen and Clutter Texture from Pixmap support (thanks Andy Wingo for the idea) to turn it into an Actor.
It’s still young and experimental but it could be a good starting point for a clutter based effect selector for Cheese.

Great, but where is the code?
There is no release yet but you can test it if you want from the git repository git://
Take a look at tests directory.
It is known to work for sure on linux, windows and probably osx (through X).
It needs a recent gpu that supports FBOs (mandatory) and GL Shading Language (optional, needed for the effects and accelerated colorspace conversion).

That’s all for now.
A big thanks to everyone who helped, supported, encouraged me during this Summer of Code, Daniel Siegel, David Schleef, Julien Isorce, the guys from #gstreamer, #clutter, #gnome-it, ##OpenGL, the GNOME Community, everyone!
Thank you, it’s been a great time!


#1 daniel g. siegel on 08.20.08 at 2:28 pm

awesome dude!!!

i want to have that in 2.26 ;)

#2 Michael on 08.20.08 at 2:47 pm

Wow!! This is the most exciting GSoC work I have ever seen. Can’t wait to see this in Cheese!

Btw the ClutterActor stuff is especially cool and it would make the effect selection SO much more usable….

#3 jared on 08.20.08 at 2:47 pm

Wow, you programmers always amaze me. Great skill.

#4 jorge on 08.20.08 at 2:48 pm

Haha neat, great job!

#5 Michael on 08.20.08 at 2:48 pm

The GstGLDifferenceMatte is breathtaking btw.

#6 Artir on 08.20.08 at 3:04 pm

A W E S O M E (Square face FTW!. )

Square face effect is the best thing I’ve ever seen since the compiz cube.

Good job and thanks for the code!

#7 ethana2 on 08.20.08 at 5:45 pm

Great job!

#8 Comix on 08.20.08 at 8:53 pm


A si biri ;-)

#9 DreadKnight on 08.20.08 at 9:49 pm

Rock on ! \m/

#10 pel on 08.20.08 at 10:53 pm

holy crap.
this is GOLD!

#11 mike wyatt on 08.21.08 at 2:46 am

oh my god! this work is incredible!

#12 Ed on 08.21.08 at 12:14 pm

Great! it kicks asses! :P
I hinted him the Clutter live preview :D
Come on, put a PayPal Donation link, you deserve a new webcam!
Cheers!! :)

#13 3philic on 08.21.08 at 11:25 pm

Very nice done!!!

#14 Isa on 08.22.08 at 5:21 pm

Finalmente finito….!ora vacanza!bravissimo amore!

#15 cap on 08.25.08 at 1:35 pm

Excellent !
Note that having framebuffer_extension is now optional since yesterday.
But you still need it to use glfilters (glfiltercube, gleffects, …)

#16 .fosk. on 08.27.08 at 1:05 am

Awesome work!!
I hope to see it on Cheese as soon as posible!
Thank you very much!

#17 berlin on 03.02.09 at 5:56 am