[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