A, 2 cents, sort of related case towards recording as API / canvas / screencasting etc:
* ability to record ( attach recording operation using source = ) from a given canvas
* rainbow case had some defaults, for instance frames / sec but API had resolution at least
* encoding was asynchronous, so if you hit a stop it triggred a "onActualStop" sort of event
* If you record, let's say a screencast using a priviledged command such as drawWindow, you had to make sure to paint with alpha transparency 100% as background so to avoid the "vertical sync" problem effect as the recording function was not always in sync with the update in the canvas.
M