r805: Ogg renderfarm support
commit54ebda412b947addb342ad272778e65f557f8c42
authorAndraz Tori <Andraz.tori1@guest.arnes.si>
Tue, 30 May 2006 23:11:13 +0000 (30 23:11 +0000)
committerAndraz Tori <Andraz.tori1@guest.arnes.si>
Tue, 30 May 2006 23:11:13 +0000 (30 23:11 +0000)
treeec2bcc06a913123b3277630a3781e5ffdea5b6cb
parent685579a339b41b7b0657a86dd5885c851d993254
r805: Ogg renderfarm support

This extensive patch implements true renderfarm rendering 'out of the box' support for ogg vorbis+theora video.
No more you are left with multiple files that you have to mux yourself.

Basically what it does is special distribution of the workload among nodes and then it automatically muxes the results.

- whole audio range is rendered as a single package by single node (due to non-packetnes of audio compression, it cannot gracefully be broaken into smaller packages)
- video range is divided in number of packages specified in renderfarm preferences
- when all packages are finished, cinelerra automatically muxes all the files together to get the final file (all the references in codecs are properly updated)
- temporary files are deleted, and only final file is left

To implement this, i've needed to make a new class hirarchy to be able to cleanly implement stuff...
Everything is done in a way to support mpeg2 TS A+V distributed rendering in the same way in the future (as it is discussed currently on the mailing list)

As a 'colateral damage' some bugs were found in fileogg.C and are also fixed by this patch...

I haven't completely abstracted the PackatingEngine from the PackageDispatcher... i've just done it for single pass render farm mode, which leaves some work for PackageDispatcher. If there is a problem with this, i can fix it... adam?

So have fun rendering to OGG _really_fast_ :)

p.s.: this was direct need we have in Cyberpipe, since we do a lot of ogg vorbis+theora encoding... (http://video.kiberpipa.org)
cinelerra/batchrender.C
cinelerra/fileogg.C
cinelerra/fileogg.h
cinelerra/packagedispatcher.C
cinelerra/packagedispatcher.h
cinelerra/packagerenderer.C
cinelerra/packagerenderer.h
cinelerra/render.C
cinelerra/renderfarm.C
cinelerra/renderfarmclient.C