[Lumiera] DummyPlayer

Ichthyostega prg at ichthyostega.de
Mon Feb 9 06:33:59 CET 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Hi Lumi hackers,

this weekend, I've finished my design sketch regarding the "DummyPlayer".
I've added some documentation and landed it to master.

What's is about and what's it not about?

* Lumiera can't do any rendering, so it is *not* about generating video data!
* The idea was to test out *collaboration* between the GUI and the lower layers,
  using a mockup, which can be built up quickly from already existing code.


So, Joel wrote a simple mockup, which creates fake test frames to be displayed
within the existing viewer widget, and he added a PlaybackController, wired with
the play controls in the timeline pane and dispatching to the GTK main thread.

Building on this working example, I experimented with various designs how to
handle this player operation, assumed that the actual "source" of frames will
reside in the lower layers (currently proc, will probably be moved to backend
later). Also, I used the opportunity to further familiarise myself with the
Layer separation interfaces and to find a way how to deal with registration
and lifecycle issues while crossing layer barriers.

For this work, I assumed the following requirements (Actually we don't know
overly much about the implementation of the real playback/render process,
because this area of the Application is just being shaped currently):

- - There can be multiple viewer widgets..
- - they can be connected dynamically to multiple play-controllers.
  (the latter are associated with the timeline(s)).
- - Any playback can require multiple playback "processes" to work in parallel.
  (for example multiple out streams, different framerates or audio/video).
- - The playback controller(s) should /not/ be concerned with managing the play
  processes, which in turn should neither care for the actual rendering,
  nor manage the display frequency and synchronisation issues.
- - The mentioned parts live in different layers and especially the GUI needs
  to remain separated from the core.
- - In case of a problem within one play process, it should be able to unwind
  automatically, without interfering with other ongoing play processes.

Please see here for a detailed description (including overview drawing):
http://www.lumiera.org/wiki/renderengine.html#PlayerDummy

	Hermann


PS: Joel, probably the most interesting part for you are the changes
compared with the previous version:
* output wiring + Glib::Dispatcher moved over to gui/display-service.hpp
* tick generation (thread) moved down from PlaybackController to
  proc/play/tick-service.hpp, which is used by the ProcessImpl



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFJj8BHZbZrB6HelLIRAvVNAJ9ADhjHOYo297N8G4NBuaq2Cc+9zgCg7jAF
Rx8JzpG+n0anSMDpvJI7tP4=
=Rk/8
-----END PGP SIGNATURE-----


More information about the Lumiera mailing list