GSTREAMER SIDE: - find a way to dynamically link the pipeline to not stop playing while switching from the effect little preview to full size video output. - this can't obviously be done with multiple pipelines since the webcam device is locked. IDEA: source (full size) --> tee1 ___________|_____ / \ filter-1 --> bigsink-1 tee2 --> videoscale (downscale) filter-2 (unlinked?) | ... videorate (downrate) filter-n (unlinked?) | +--> filter-1 --> sink-1 +--> filter-2 --> sink-2 ... +--> filter-n --> sink-n sink-0 is the output window of the full size image. sink-1..n are the output windows of the effects previews scaled down to optimize cpu/gpu usage in the effect selector Outstanding issues: - we need a way to selectively pause (unlikely viable) or dinamically link-unlink tee branches never stopping the source (the webcam is slow to startup and it would be quite ugly in the whole user experience). - do we need to prelink all the bins at both reduced and full size? - part-block.txt could probably a useful read: http://cgit.freedesktop.org/gstreamer/gstreamer/tree/docs/design/part-block.txt CLUTTER SIDE: - a custom container or layout manager for the effect selector. Should be able to handle stage resizing. - come up with a nice way to organize several effects: if we have 20 different effects I suppose there is a little overhead with having all displayed and running at the same time. Possibile solution: a multipage grid based selector; again, what should we do with effect previews not currently displayed, pause them (unlikely)? unlink them (to investigate)? - find or create from scratch a throbber actor to draw while pipelines are loading.