[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


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


More information about the kde-multimedia mailing list