Monday, November 26, 2007

Thanks to dobey as well

Just writing this blog entry to make my gratitude to dobey for putting my hackergotchie on planet.gnome.org, very public. :)

Thanks Murray

I couldn't have said it better. What made me really pissed is his lying tactics. I once mentioned on the gnome foundation ml about me waiting for his replies for more than an year (literally) and I got a quick reply from him telling me that he has sent me replies. I believed him (after all he is the director of gnome foundation), assuming that his mails must have ended up in spam folder for some reason but all of a sudden my spam filter started see his mails as not spam. After a little conversation, he promised to put my hackergotchie on the planet and after that I started to receive complete silence from him again. I send him reminders from time to time but I never got any response (it's been 2.5 months now). I am sure, he'll tell me that he has been sending me responses if he reads this blog entry or if I make it an issue on the gnome foundation ml again but I see no reason to believe his word anymore.

P.S. If the 'reply-to' header of an email only contains the addresses of the receivers only, I won't blame my spam filter to treat the email as spam. :) I notified Jeff about this and this was his reply:

>>P.S can you please set the correct reply-to header in your emails.

My client does what it's told to do.

Friday, November 23, 2007

In search for Bertrand Russell

In search for Bertrand Russell on video.google.com, I found two video clips that I wouldn't have expected, one is a clip from an old bollywood movie where the hero is given an opportunity to conduct an interview with Russell and another is video of the song 'Jihad' by Singing Fools. The former is a bit surprising but I didn't quite catch the jihad song and it's connection with Russell. Also
I knew that americans were supporting Jihad in the 80's but didn't know they were so loude and active in that.

clutter-gst

After I was informed about the existence of ClutterGstVideoSink, I quickly modified my super-video application to make it use that. But as soon as i did that, i stopped getting even the static image. After careful analysis for days, I figured that I was supposed to call gst_bus_add_signal_watch() on the pipeline bus since ClutterGstVideoSink uses messages on the bus combined with signal handlers to render the frames in the application thread. This is obviously a 'dirty' hack; a hack because gst elements are supposed to do all the media processing in the pipeline thread, dirty because gst bus is not meant for media transport.

After this realization, I had been working on it from time to time. First I tried to make the actual rendering happen in the gst pipeline thread by using the clutter's thread safety primitives and that worked quite nicely in the end except for one minor problem: The call to clutters rendering thread blocks if it happens after the clutter main loop has been exited and that is exactly when you set the pipeline to NULL state. If anyone have any clue on how to solve this problem, do let me know. In the meanwhile, I have made the hack non-dirty (or should I say, less dirty) by replacing 1. pipeline bus usage with an internal async queue and 2. bus signal handlers with idle functions (read g_idle_add()). This one was way easier to implement and it worked without any problems with all the test applications I have. I've submitted the patches upstream via a bug. If you are interested, please try them out and report your observations to the bug.

UPDATE: Just tried the 'rendering in the pipeline thread' changes again and now I remember that there is another critical problem with that: the whole application hangs (both app and gst pipeline) when I seek and/or play and pause very quickly. :(

Monday, November 12, 2007

Playing video on ClutterTexture

I thought this would be an easy task and should be doable in a weekend but seems I wasn't completely correct in my assumption. What I did was to try to modify the super-oh example application to make it render frames from videotestsrc element of gstreamer, instead of the OH logo (no offense OH guys). For some reason the animation stops after I render the first frame. All I get is a static image like this:



My hunch is that I am just missing something small here so if anyone have a clue, please let me know. Here is the source.

I know that using fakesink's handoff signal isn't the recommended way to do this but I'll concider writing a cluttersink after I get this simple app. working.


UPDATE: I've been informed about the existance of ClutterGstVideoTexture and ClutterGstVideoSink by Emmanuele and Ross. Looking at the sources, I think I'll need to hack on it to support YUV (if it's available). That shouldn't be a problem but I would also want to try to implement this trick to bring hope to poor ATI grahics card users like me.