[GSoC 2014] Looking for a mentor for my proposal (screencasting solution)

Marcin Grzywaczewski killavus at gmail.com
Mon Mar 17 02:23:51 GMT 2014


Hello!

My name is Marcin Grzywaczewski and I'm a student on University of 
Wroclaw. I'm studying Computer Science, also working in a software shop 
which is focused mainly on Ruby on Rails web applications. I'm very 
excited about working with KDE developers during Google Summer of Code 
this year. It'd be a great pleasure and something different from what 
I'm doing right now.

I'm looking for a mentor for my proposal - I've tried at kde-devel 
mailing list, but got ultimately redirected here.

After talking few days with KDE developers at #kde-devel, #kwin, 
#kde-multimedia and #kde-soc (I learned a lot! Thank you!) IRC channels, 
we've came to conclusion that writing here would be the most appropiate 
choice for this kind of project.

I want to develop screencasting solution for KDE - my goal is to provide 
performant and easy to use solution, which can be easily enchanced 
later. I got some very interesting (I think!) ideas how to realize such app:

* I want to create this application in a modular way - using Adapter 
pattern and exposing a solid interface I'd like to encourage further 
development of new ways to record video / add another encoding. For 
GSoC, my goal is to provide one adapter per feature.

* For screen recording I want to use KWin. It looks like a viable 
solution to provide performant implementation of such feature - I've 
looked on KWin code and it's nice written - we have separated 'steps' of 
rendering and it seems that we can 'plug in' our solution to post-paint 
phase of rendering desktop [1]. Also, when we integrate it with KWin we 
can be pretty sure that no strange glitches will occur (X11 grabbing 
seems to have limited framerate and screenshot-based approach seems to 
have problems with windows with GL context). To not reducing performance 
I'd like to use Null Object pattern in a 'default' painting phase - then 
we'll "apply" our screen recording part only when it's needed. I think 
it seems good to expose DBus API for managing this feature (right now 
KWin can only reload config using DBus I believe [2]).

* Around KDE 4.2 such solution was implemented indeed in KWin as plugin 
[3]. That means it should also be possible today. I don't know exactly 
why this solution died, but I have my presumptions: it recorded to a 
strange format (CPS), which was flipped by 180 degree and it was quite 
hard to use - also without any configuration at all.

* Screen recording is not everything of course. I'd like to create a 
plasmoid / standalone KDE app to provide:
   * Microphone recording (I think GStreamer can be helpful here. Maybe 
even Phonon have such feature? If so, it'd be nice to have this 
abstraction layer)
   * Implement KWinAdapter to interact with solution in KWin I'll provide.
   * Add timer and record buttons (basic UI, it must be simple).
   * Be able to choose resolution, framerate and audio quality.

* About encoding, my goal is to provide WebM encoding - it becomes a 
standard on Web and it should not have licencing issues. We can use 
GStreamer again, FFMpeg (just fork a process - but I don't like this 
solution) or provide it via a library. The rest is not specified right 
now - I'll provide an architecture to make it abstract enough (Adapter 
pattern again), so adding new encoding solutions wouldn't be hard.

* I'd like to integrate app with KDE notifications - I think it's 
super-important that user is sure that app is doing it's job and when 
it'll end *especially* when it comes to encoding - it is a 
time-consuming process after all. For example, on my system I've used 
Kazam before and it showed no notifications at all (KDE from ArchLinux) 
- very confusing!

I think it's important to provide such screencasting solution which 
*just works* and is easy to use to KDE. Screencasting culture is growing 
among remote working companies and professionals who needs to share 
knowledge in an easy way. I experienced problems with recoding 
screencasts on Linux - also, I don't want to spend time on configuring 
things when I'm focused on delivering screencast's content! I think 
that's why many ppl uses Mac for screencasting tool - in QuickTime you 
achieve it by clicking one button ;).

Please tell me what you think about it. Is someone interesting in 
mentoring me? We can talk about details then. After first mail I sent on 
kde-devel my knowledge and solution greatly evolved. I'm waiting for 
your feedback!

Thank you in advance,
Marcin Grzywaczewski
Institute of Computer Science on University of Wroclaw, Poland

[1] 
https://projects.kde.org/projects/kde/kde-workspace/repository/revisions/master/changes/kwin/scene.cpp
[2] 
https://projects.kde.org/projects/kde/kde-workspace/repository/revisions/3ba7dbec708df2050373ee6d5c15905a3cae2fce/entry/kwin/dbusinterface.cpp
[3] 
http://sathyasays.com/2009/03/06/using-kwin-as-a-desktop-video-recording-and-screencast-tool/



More information about the kde-multimedia mailing list