Cairo Cairo Cairo
26 Aug 2005 » permalink
I ported my whole drawing to Cairo:
It’s slightly slower than the pixbuf sprite-based drawing I used before, but hopefully this will improve in future (Glitz?). It’s also much more sane in programming terms, since all the pixel-grain anomalies are gone.
Screenshots are cool, but I feel a need to elaborate on the technology behind Diva. Here is the first issue of the series.
Backends
In it’s quest to be scalable & universal, Diva is backend-based. Backend
is a glue between your media files & the output device(s). Think — DV
Backend
, MJPEG Zoran Hardware Backend
etc. . Basically, backend is a workspace
format in which you want to work (however — actually it’s the backends that provide
formats, ie. DV Backend
provides Full-PAL format and Half-PAL format).
Backends don’t really do any data processing (they can though) but they merely
“instruct” the engine how the data should be handled.
A real life example: You’re editing a movie of your wedding. You’re working in a
Full-PAL DV Backend
since you've got your files/media captured from a
camcorder in this format (768x576 25 frames per second, 48kHz 2channel 16 bit
audio). Now — you'd like to mix-over this cool David Bowie’s song that was
aired in the background when you first met your future wife at the pub. The mp3
file is 44kHz audio. The backend will decide that this format difference (44kHz
vs. 48kHz) can be handled real-time via converting. No extra interaction at your
side necessary, you can just import the file.
Later on you realize, that this kind of boring wedding-videos are interesting only to your mam & dad. So you decide to spice the thing up with some cool photos you've got on your digital camcorder. These are 4000 x 2000 JPEG files. Because the CPU cost of quality down-scaling is too big, the backend will offer an option to recompress the photos to the native format (more or less automagically).
Summarizing, the whole idea behind backends is to:
- Allow the user to work real-time with the media, while not limiting him to a single particular file/media format.
- Allow some hardware support, if available (think — a
DV hardware backend
that outputs to firewire) - Provide some semi-professional features — ie. working with raw footage
Backends, like everything else in Diva, are pluginable.