MonthJuly 2010

Cheese 2.31.1 Released

If you had read my Cheese GSoC proposal, it would’ve stressed on one major point – make Cheese sexy.

Two days ago, one of my classmates spent 5 minutes on the bus using Cheese and trying out different effects (and poses!). Today, my brother spent 20 minutes trying to get the perfect combination of style and vagueness for his Facebook profile picture – using Cheese. He then asked me to create an account for him in Ubuntu (he was an exclusively Win7 user till then) before leaving.

I’m still not where I want to be (the girls haven’t gone gaga over it…yet!), but I know very well that I am on the right path.

And a major milestone in that path is the release of Cheese 2.31.1. The ‘release’ means that the code is now stable enough to be actually shown off. The major features (rewrite in Vala, use Clutter, user defined Effects and most importantly, Live Previews) are in working condition. We are no longer walking through a minefield of segfaults. You can build it and show it off. When something breaks and you tell us, we’ll most probably not reply with ‘yeah, we know that. We’ll fix it when we get to it’. The road to Cheese 3.0 has begun.

So, what’s all in this release?

  1. Rewrite of the UI code. We removed the entire old src/ folder, and rewrote everything from scratch. Using Vala. Why? Because ~7000 lines of C code is now ~1500 lines of Vala code. And the Vala code has more features (Live preview, for one!). The Vala compiler is pretty mature – only one ‘real’ bug so far (rest have been mostly binding bugs, fixed with single line of code changes). And #vala has been incredibly helpful too! And we are re-using most of the ‘backend’ code (Camera detection, pipeline linking, etc) – it is still in C, and writing Vala bindings was incredibly simple.

  2. Move from Gtk to Clutter for display. Means I can do stuff like overlay semi-transparent text on top of the effects. Or have animated page transitions. Or (in the future), use OpenGL effects without having to do an extra to-fro copy from memory. Have drop shadows for everything. Make the effects tilt and rotate around when hovered over. Etc, etc, etc. Clutter is the major contributor to the ‘sexy’ part.

  3. User created effects. Effects are no longer hardcoded. A simple 4 line text file and enthusiasm for reading documentation is all that is required to create your own effect. The effects are based on GStreamer, and are very flexible – you can create something as simple as monochrome + hue, or something as complex as face detection + extra limb addition to specific people :P

  4. Live Streaming – biggie. All effects are arranged in grids of 3×3 in multiple pages that you can swipe through. Simply clicking one will activate it pretty much instantaneously. No more ‘select effect, apply, no-it-sucks, let’s go back and do it again’ games :)

I made a quick screencast to show the new Live preview stuff to those of you too lazy to actually get the source and compile. And the subject is a pink+green teddy bear sitting on my white netbook. (And the weird stuff that turns up after I exit fullscreen is a bug in RecordMyDesktop – and is an incentive for you to actually get the source and check it out :P)

These are the four major features that are new. All the other parts of previous Cheese UI have also been implemented (preferences, thumbnail viewer, fullscreen, wide mode, device detection, etc.)

As for the next release – keep looking out for it, it will land soon! It will primarily be a bug fix and code cleanup release – fixing crashes, UI inconsistencies and making sure everything works as intended.

A lot of late night hackery (mostly because my college takes up 10 hours of ‘regular’ time) has gone into this release – so check it out here and tell us what you think. Especially about the parts that suck. Especially useful would be if you can get someone non-technical to sit in front of Cheese, observe where all they fail (and succeed) and then report your observations back to us.

“Room Full of People Like Me”

    "I can't tell you how wonderful it was - I walked into this room, and it was full of people like me"

I would give an arm, a leg, an eye and other assorted body parts if I could find such a room. And live there.

Hackerpace Chennai or The Startup Center better turn up fast :)

My GSoC 2010 Proposal

I used gist to publish my GSoC proposal. Diffs, easy to show off, and Markdown support – made gist perfect for me to make modifications and get feedback easily.

It is the first ‘real’ document I’ve written – it actually had a tangible effect.

Now that I don’t need to make any modifications, I’ve moved it to my site.

Cheese GSoC Report – Week 8

This week on Cheese….


Cheese 2.31.1 is out. It’s a dev release. Does not have zarro boogs.
But it is a release!

This week, we

  1. Fixed several perf bugs.
  2. Fixed some weird preferences dialog bugs
  3. Filed (and eventually had fixed) a bug in GStreamer.
  4. Fixed a regression
  5. Beautified the UI a bit (text name overlay of effects, etc)
  6. Assorted administrative work to prepare for release (Copyright
    updating, merging back into master, etc)

I also passed my mid terms :)

Next week…

  1. Remove dependency on Mx Toolkit (it is not a blessed dependency,
    and i’m not using large parts of it anyway)
  2. Performance improvements, especially at startup time. It is taking
    waaay too long .
  3. Fix problems in video mode.
  4. Make the TODO list shorter.

Cheese GSoC Report – Week 7

This week on Cheese….

  1. Performance enhancements. Sacrificed some startup time for much improved usage time. Viewing live effects are now a snap. So is selecting an effect. We went in some cases from ~15s to <1s. Thanks to Tester (and other folks) at #gstreamer for helping out :)
  2. Paging of effects. Effects are now in pages of 9 each, instead of a huge scroller area.
  3. Applying effects without stopping the pipeline. Makes things much faster.
  4. Implementing the popup menu for thumbnails.

We’ll be making a release anytime now :)

All of last week’s goals were met, except the code cleanup. It will probably have to wait after release.

As I type this, there are 6 blockers before we can make a release. Will make a post when we do a release, hopefully with a screencast too!

Next week is kinda unpredictable – I’ll douse fires as they arise in the code (reported by people who hopefully test the release), and also work on reducing the length of items in the TODO.

Reddit University – SICP Reading Group

I’ve joined Reddit University‘s SICP Reading Group class. I’ve wanted to read through SICP for a long time, and have gotten started many times – never completed it. Maybe the group effects will help me finish this time :)

If you’re interested in expanding your horizons beyond mere code-monkey programming, join up!

Cheese GSoC Report – Week 5

Late report. But I did get quite a bit done!

Last week…

  1. Video Effects file format reader
  2. Live Preview of Effects! (YAY!)
  3. Effect files added

Live Preview took most of my time. We bought down CPU usage from ~90% to a more manageable ~50%. Cleaned up code a bit (still needs more cleanup). It is rather very ‘demoable’, provided you gloss over the slowdowns.

Coming up next week would be…

  1. Even less CPU Usage! We’re now even with current Cheese (which does not give you live previews). I want to bring this down even more.
  2. Reduced latency for switching operations. Moving between effects/screens now has more than a second of latency. I should reduce this to much lesser than a second.
  3. Code cleanup. Some of the C code is a mess – needs to be cleaned up much.
  4. Error fixing. You can now crash it by looking at it at a 58 degree angle, during new moon days. Bugs like these will be fixed.

Cya in a week, with a very-usable Cheese! I’ll post a screencast as soon as I’ve made Cheese a bit more sexy :)

© 2017 Yuvi Panda

Theme by Anders NorenUp ↑