summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Barbato <lu_zero@gentoo.org>2003-05-04 14:16:56 +0000
committerLuca Barbato <lu_zero@gentoo.org>2003-05-04 14:16:56 +0000
commit7d968fb7cbea3d2b5501a260981d299b7b37033d (patch)
tree2842338b38cd2c82e59b2032d6a76dce2966d7a2 /media-video
parentNew Version (diff)
downloadhistorical-7d968fb7cbea3d2b5501a260981d299b7b37033d.tar.gz
historical-7d968fb7cbea3d2b5501a260981d299b7b37033d.tar.bz2
historical-7d968fb7cbea3d2b5501a260981d299b7b37033d.zip
New Version
Diffstat (limited to 'media-video')
-rw-r--r--media-video/cinelerra/Manifest6
-rw-r--r--media-video/cinelerra/cinelerra-1.1.5.ebuild62
-rw-r--r--media-video/cinelerra/files/compile-1.1.5.diff6908
-rw-r--r--media-video/cinelerra/files/digest-cinelerra-1.1.51
4 files changed, 6974 insertions, 3 deletions
diff --git a/media-video/cinelerra/Manifest b/media-video/cinelerra/Manifest
index c53d74a45dde..c2cb35bb9ed3 100644
--- a/media-video/cinelerra/Manifest
+++ b/media-video/cinelerra/Manifest
@@ -1,8 +1,8 @@
-MD5 c18bf54dd581c75c7fc22a61bc9e3b27 ChangeLog 933
-MD5 9043f9ea66cbdd82c650a3335809d387 cinelerra-1.1.5.ebuild 1179
+MD5 88321e72dbdf94289aef7d47adc520fc ChangeLog 1125
MD5 a4f1bc017ca723056dcf4d643683573c cinelerra-1.0.0.ebuild 1128
MD5 c69120050a1046a849e4231a12794dc9 cinelerra-110802.ebuild 1200
-MD5 07cc4d63fc6636b11a09265bd359f02c files/digest-cinelerra-1.1.5 74
+MD5 4c9d268e27859e6b97c057b19e45c614 cinelerra-1.1.5.ebuild 1179
MD5 bb1b390c6a20a9240f1100c3a3974b0d files/digest-cinelerra-1.0.0 73
MD5 0251b5e587fcbf93534c1633a3d27ad1 files/digest-cinelerra-110802 74
+MD5 07cc4d63fc6636b11a09265bd359f02c files/digest-cinelerra-1.1.5 74
MD5 ea82f6b3b08112f20623ddb10bf97fce files/compile-1.1.5.diff 300491
diff --git a/media-video/cinelerra/cinelerra-1.1.5.ebuild b/media-video/cinelerra/cinelerra-1.1.5.ebuild
new file mode 100644
index 000000000000..e453bbdd6f0f
--- /dev/null
+++ b/media-video/cinelerra/cinelerra-1.1.5.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2003 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-video/cinelerra/cinelerra-1.1.5.ebuild,v 1.1 2003/05/04 14:15:59 lu_zero Exp $
+
+inherit gcc eutils
+export WANT_GCC_3="yes"
+
+DESCRIPTION="Cinelerra - Professional Video Editor"
+HOMEPAGE="http://heroinewarrior.com/cinelerra.php3"
+SRC_URI="mirror://sourceforge/heroines/${P}-src.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~x86"
+
+DEPEND="virtual/x11
+ virtual/glibc
+ =sys-devel/gcc-3*
+ >=media-libs/a52dec-0.7.3"
+
+#S=${WORKDIR}/hvirtual-${PV}
+
+src_unpack() {
+ unpack ${A}
+ epatch ${FILESDIR}/compile-1.1.5.diff
+}
+
+src_compile() {
+ export ${CFLAGS}
+ make || die "make failed"
+}
+
+src_install() {
+ cd ${S}/${PN}/i686
+
+ dobin ${PN}
+
+ cd ${S}/plugins
+ insinto /usr/lib/${PN}
+ doins i686/*.plugin
+ insinto /usr/lib/${PN}/fonts
+ doins titler/fonts/*
+
+ cd ${S}/libmpeg3/i686
+ dobin mpeg3dump mpeg3cat mpeg3toc
+
+# cd ${S}/mix/i686
+# dobin mix2000
+
+# cd ${S}/xmovie/i686
+# dobin xmovie
+
+ cd ${S}/mplexhi/i686
+ dobin mplexhi
+
+ cd ${S}/mplexlo/i686
+ dobin mplexlo
+
+ cd ${S}
+# dodoc CVS COPYING
+ dohtml -a png,html,texi,sdw -r doc/*
+}
diff --git a/media-video/cinelerra/files/compile-1.1.5.diff b/media-video/cinelerra/files/compile-1.1.5.diff
new file mode 100644
index 000000000000..cbccdfadd0e0
--- /dev/null
+++ b/media-video/cinelerra/files/compile-1.1.5.diff
@@ -0,0 +1,6908 @@
+diff -ruN cinelerra-1.1.5.orig/cinelerra/builddate.h cinelerra-1.1.5/cinelerra/builddate.h
+--- cinelerra-1.1.5.orig/cinelerra/builddate.h 2003-02-10 08:25:29.000000000 +0100
++++ cinelerra-1.1.5/cinelerra/builddate.h 2003-05-04 08:50:11.000000000 +0200
+@@ -1 +1 @@
+-#define BUILDDATE "Sun Feb 9 23:25:29 PST 2003"
++#define BUILDDATE "Sun May 4 08:48:32 CEST 2003"
+diff -ruN cinelerra-1.1.5.orig/cinelerra/tracksedit.C cinelerra-1.1.5/cinelerra/tracksedit.C
+--- cinelerra-1.1.5.orig/cinelerra/tracksedit.C 2002-12-14 06:10:45.000000000 +0100
++++ cinelerra-1.1.5/cinelerra/tracksedit.C 2003-05-04 08:50:11.000000000 +0200
+@@ -745,7 +745,7 @@
+ dest_edit->insert_transition(server->title);
+ }
+
+-void Tracks::paste_video_transition(PluginServer *server, int first_track = 0)
++void Tracks::paste_video_transition(PluginServer *server, int first_track)
+ {
+ for(Track *current = first; current; current = NEXT)
+ {
+diff -ruN cinelerra-1.1.5.orig/doc/cinelerra.html cinelerra-1.1.5/doc/cinelerra.html
+--- cinelerra-1.1.5.orig/doc/cinelerra.html 2003-02-10 07:02:54.000000000 +0100
++++ cinelerra-1.1.5/doc/cinelerra.html 2003-05-04 08:50:11.000000000 +0200
+@@ -2,30 +2,32 @@
+ <head>
+ <title>Secrets of Cinelerra</title>
+ <meta http-equiv="Content-Type" content="text/html">
+-<meta name=description content="Secrets of Cinelerra">
+-<meta name=generator content="makeinfo 4.2">
+-<link href="http://www.gnu.org/software/texinfo/" rel=generator-home>
++<meta name="description" content="Secrets of Cinelerra">
++<meta name="generator" content="makeinfo 4.5">
++<link href="http://www.gnu.org/software/texinfo/" rel="generator-home">
+ </head>
+ <body>
+-<h1>Secrets of Cinelerra</h1>
++<h1 class="settitle">Secrets of Cinelerra</h1>
++<div class="node">
+ <p><hr>
+ Node:<a name="Top">Top</a>,
+-Next:<a rel=next accesskey=n href="#ABOUT%20CINELERRA">ABOUT CINELERRA</a>,
+-Up:<a rel=up accesskey=u href="#dir">(dir)</a>
++Next:<a rel="next" accesskey="n" href="#ABOUT%20CINELERRA">ABOUT CINELERRA</a>,
++Up:<a rel="up" accesskey="u" href="#dir">(dir)</a>
+ <br>
++</div>
+
+-<h2>BRIEF CONTENTS</h2>
++<h2 class="unnumbered">BRIEF CONTENTS</h2>
+
+-<ul>
+-<li><a accesskey=1 href="#ABOUT%20CINELERRA">ABOUT CINELERRA</a>:
+-<li><a accesskey=2 href="#INSTALLATION">INSTALLATION</a>:
+-<li><a accesskey=3 href="#CONFIGURATION">CONFIGURATION</a>:
+-<li><a accesskey=4 href="#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS</a>:
+-<li><a accesskey=5 href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>:
+-<li><a accesskey=6 href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>:
+-<li><a accesskey=7 href="#EDITING">EDITING</a>:
+-<li><a accesskey=8 href="#USING%20EFFECTS">USING EFFECTS</a>:
+-<li><a accesskey=9 href="#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#ABOUT%20CINELERRA">ABOUT CINELERRA</a>:
++<li><a accesskey="2" href="#INSTALLATION">INSTALLATION</a>:
++<li><a accesskey="3" href="#CONFIGURATION">CONFIGURATION</a>:
++<li><a accesskey="4" href="#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS</a>:
++<li><a accesskey="5" href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>:
++<li><a accesskey="6" href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>:
++<li><a accesskey="7" href="#EDITING">EDITING</a>:
++<li><a accesskey="8" href="#USING%20EFFECTS">USING EFFECTS</a>:
++<li><a accesskey="9" href="#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>:
+ <li><a href="#COMPOSITING">COMPOSITING</a>:
+ <li><a href="#KEYFRAMES">KEYFRAMES</a>:
+ <li><a href="#CAPTURING%20MEDIA">CAPTURING MEDIA</a>:
+@@ -36,92 +38,82 @@
+ </ul>
+
+
++<div class="contents">
+ <h2>Table of Contents</h2>
+ <ul>
+-<li><a name="toc_Top"></a>
+- <a href="#Top">BRIEF CONTENTS</a>
+-<li><a name="toc_ABOUT%20CINELERRA"></a>
+- <a href="#ABOUT%20CINELERRA">ABOUT CINELERRA</a>
++<li><a name="toc_Top" href="#Top">BRIEF CONTENTS</a>
++<li><a name="toc_ABOUT%20CINELERRA" href="#ABOUT%20CINELERRA">ABOUT CINELERRA</a>
+ <ul>
+ <li><a href="#ABOUT%20THIS%20MANUAL">ABOUT THIS MANUAL</a>
+-</ul>
+-<li><a name="toc_INSTALLATION"></a>
+- <a href="#INSTALLATION">INSTALLATION</a>
+-<li><a name="toc_CONFIGURATION"></a>
+- <a href="#CONFIGURATION">CONFIGURATION</a>
++</li></ul>
++<li><a name="toc_INSTALLATION" href="#INSTALLATION">INSTALLATION</a>
++<li><a name="toc_CONFIGURATION" href="#CONFIGURATION">CONFIGURATION</a>
+ <ul>
+ <li><a href="#PLAYBACK">PLAYBACK</a>
+ <ul>
+ <li><a href="#AUDIO%20OUT">AUDIO OUT</a>
+ <li><a href="#VIDEO%20OUT">VIDEO OUT</a>
+-</ul>
++</li></ul>
+ <li><a href="#RECORDING">RECORDING</a>
+ <ul>
+ <li><a href="#AUDIO%20IN">AUDIO IN</a>
+ <li><a href="#VIDEO%20IN">VIDEO IN</a>
+-</ul>
++</li></ul>
+ <li><a href="#PERFORMANCE">PERFORMANCE</a>
+ <ul>
+ <li><a href="#BACKGROUND%20RENDERING">BACKGROUND RENDERING</a>
+ <li><a href="#RENDERFARM">RENDERFARM</a>
+-</ul>
++</li></ul>
+ <li><a href="#INTERFACE">INTERFACE</a>
+-</ul>
+-<li><a name="toc_THE%20MAIN%20WINDOWS"></a>
+- <a href="#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS</a>
+-<li><a name="toc_LOADING%20AND%20SAVING%20FILES"></a>
+- <a href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
++</li></ul>
++<li><a name="toc_THE%20MAIN%20WINDOWS" href="#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS</a>
++<li><a name="toc_LOADING%20AND%20SAVING%20FILES" href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
+ <ul>
+ <li><a href="#LOADING%20FILES">LOADING FILES</a>
+ <ul>
+ <li><a href="#SUPPORTED%20FILE%20FORMATS">SUPPORTED FILE FORMATS</a>
+ <li><a href="#INSERTION%20STRATEGY">INSERTION STRATEGY</a>
+ <li><a href="#LOADING%20MULTIPLE%20FILES">LOADING MULTIPLE FILES</a>
+-</ul>
++</li></ul>
+ <li><a href="#LOADING%20THE%20BACKUP">LOADING THE BACKUP</a>
+ <li><a href="#SAVING%20FILES">SAVING FILES</a>
+ <li><a href="#RENDERING%20FILES">RENDERING FILES</a>
+ <li><a href="#THE%20RENDER%20FARM">THE RENDER FARM</a>
+-</ul>
+-<li><a name="toc_NAVIGATING%20THE%20PROJECT"></a>
+- <a href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
++</li></ul>
++<li><a name="toc_NAVIGATING%20THE%20PROJECT" href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
+ <ul>
+ <li><a href="#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>
+ <ul>
+ <li><a href="#THE%20INSERTION%20POINT">THE INSERTION POINT</a>
+ <li><a href="#THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS</a>
+ <li><a href="#USING%20LABELS%20IN%20THE%20PROGRAM%20WINDOW">USING LABELS IN THE PROGRAM WINDOW</a>
+-</ul>
++</li></ul>
+ <li><a href="#NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>
+ <li><a href="#NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES</a>
+ <li><a href="#USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS</a>
+ <li><a href="#USING%20BACKGROUND%20RENDERING">USING BACKGROUND RENDERING</a>
+-</ul>
+-<li><a name="toc_EDITING"></a>
+- <a href="#EDITING">EDITING</a>
++</li></ul>
++<li><a name="toc_EDITING" href="#EDITING">EDITING</a>
+ <ul>
+ <li><a href="#MANIPULATING%20TRACKS">MANIPULATING TRACKS</a>
+ <li><a href="#TWO%20SCREEN%20EDITING">TWO SCREEN EDITING</a>
+ <li><a href="#DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING</a>
+ <li><a href="#CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING</a>
+ <li><a href="#TRIMMING">TRIMMING</a>
+-</ul>
+-<li><a name="toc_USING%20EFFECTS"></a>
+- <a href="#USING%20EFFECTS">USING EFFECTS</a>
++</li></ul>
++<li><a name="toc_USING%20EFFECTS" href="#USING%20EFFECTS">USING EFFECTS</a>
+ <ul>
+ <li><a href="#REALTIME%20EFFECTS">REALTIME EFFECTS</a>
+ <ul>
+ <li><a href="#REALTIME%20EFFECT%20TYPES">REALTIME EFFECT TYPES</a>
+ <li><a href="#EDITING%20REALTIME%20EFFECTS">EDITING REALTIME EFFECTS</a>
+-</ul>
++</li></ul>
+ <li><a href="#RENDERED%20EFFECTS">RENDERED EFFECTS</a>
+ <li><a href="#TRANSITIONS">TRANSITIONS</a>
+ <li><a href="#LADSPA%20EFFECTS">LADSPA EFFECTS</a>
+-</ul>
+-<li><a name="toc_SETTING%20PROJECT%20ATTRIBUTES"></a>
+- <a href="#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>
+-<li><a name="toc_COMPOSITING"></a>
+- <a href="#COMPOSITING">COMPOSITING</a>
++</li></ul>
++<li><a name="toc_SETTING%20PROJECT%20ATTRIBUTES" href="#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>
++<li><a name="toc_COMPOSITING" href="#COMPOSITING">COMPOSITING</a>
+ <ul>
+ <li><a href="#THE%20CAMERA%20AND%20PROJECTOR">THE CAMERA AND PROJECTOR</a>
+ <li><a href="#MASKS">MASKS</a>
+@@ -129,24 +121,21 @@
+ <li><a href="#SAFE%20REGIONS">SAFE REGIONS</a>
+ <li><a href="#OVERLAY%20MODES">OVERLAY MODES</a>
+ <li><a href="#TRACK%20AND%20OUTPUT%20SIZES">TRACK AND OUTPUT SIZES</a>
+-</ul>
+-<li><a name="toc_KEYFRAMES"></a>
+- <a href="#KEYFRAMES">KEYFRAMES</a>
++</li></ul>
++<li><a name="toc_KEYFRAMES" href="#KEYFRAMES">KEYFRAMES</a>
+ <ul>
+ <li><a href="#CURVE%20KEYFRAMES">CURVE KEYFRAMES</a>
+ <li><a href="#TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES</a>
+ <li><a href="#AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES</a>
+ <li><a href="#COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES</a>
+ <li><a href="#EDITING%20KEYFRAMES">EDITING KEYFRAMES</a>
+-</ul>
+-<li><a name="toc_CAPTURING%20MEDIA"></a>
+- <a href="#CAPTURING%20MEDIA">CAPTURING MEDIA</a>
++</li></ul>
++<li><a name="toc_CAPTURING%20MEDIA" href="#CAPTURING%20MEDIA">CAPTURING MEDIA</a>
+ <ul>
+ <li><a href="#BATCHES">BATCHES</a>
+ <li><a href="#EDITING%20TUNER%20INFORMATION">EDITING TUNER INFORMATION</a>
+-</ul>
+-<li><a name="toc_IMPROVING%20PERFORMANCE"></a>
+- <a href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
++</li></ul>
++<li><a name="toc_IMPROVING%20PERFORMANCE" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
+ <ul>
+ <li><a href="#DISABLING%20SWAP%20SPACE">DISABLING SWAP SPACE</a>
+ <li><a href="#ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS</a>
+@@ -157,45 +146,45 @@
+ <li><a href="#REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>
+ <li><a href="#ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS</a>
+ <li><a href="#SPEEDING%20UP%20THE%20FILE%20SYSTEM">SPEEDING UP THE FILE SYSTEM</a>
+-</ul>
+-<li><a name="toc_EFFECT%20DESCRIPTIONS"></a>
+- <a href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>
++</li></ul>
++<li><a name="toc_EFFECT%20DESCRIPTIONS" href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>
+ <ul>
+ <li><a href="#CHROMA%20KEY">CHROMA KEY</a>
+ <li><a href="#HISTOGRAM">HISTOGRAM</a>
+ <li><a href="#TIME%20AVERAGE">TIME AVERAGE</a>
+ <li><a href="#VIDEO%20SCOPE">VIDEO SCOPE</a>
+-</ul>
+-<li><a name="toc_PLUGIN%20AUTHORING"></a>
+- <a href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
++</li></ul>
++<li><a name="toc_PLUGIN%20AUTHORING" href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
+ <ul>
+ <li><a href="#COMMON%20PROCEDURES">COMMON PROCEDURES</a>
+ <ul>
+ <li><a href="#THE%20PROCESSING%20OBJECT">THE PROCESSING OBJECT</a>
+ <li><a href="#THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT</a>
+ <li><a href="#THE%20USER%20INTERFACE%20OBJECT">THE USER INTERFACE OBJECT</a>
+-</ul>
++</li></ul>
+ <li><a href="#REALTIME%20PLUGINS">REALTIME PLUGINS</a>
+ <li><a href="#NONREALTIME%20PLUGINS">NONREALTIME PLUGINS</a>
+ <li><a href="#AUDIO%20PLUGINS">AUDIO PLUGINS</a>
+ <li><a href="#VIDEO%20PLUGINS">VIDEO PLUGINS</a>
+ <li><a href="#TRANSITION%20PLUGINS">TRANSITION PLUGINS</a>
+ <li><a href="#PLUGIN%20GUI'S%20WHICH%20UPDATE%20DURING%20PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>
+-</ul>
+-<li><a name="toc_RELEASE%20NOTES"></a>
+- <a href="#RELEASE%20NOTES">RELEASE NOTES</a>
+-</ul>
++</li></ul>
++<li><a name="toc_RELEASE%20NOTES" href="#RELEASE%20NOTES">RELEASE NOTES</a>
++</li></ul>
++</div>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="ABOUT%20CINELERRA">ABOUT CINELERRA</a>,
+-Next:<a rel=next accesskey=n href="#INSTALLATION">INSTALLATION</a>,
+-Previous:<a rel=previous accesskey=p href="#Top">Top</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#INSTALLATION">INSTALLATION</a>,
++Previous:<a rel="previous" accesskey="p" href="#Top">Top</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>ABOUT CINELERRA</h2>
++<h2 class="chapter">ABOUT CINELERRA</h2>
+
+-<p>There are two types of moviegoers: producers who create new content,
++ <p>There are two types of moviegoers: producers who create new content,
+ going back over their content at future points for further refinement,
+ and consumers who want to acquire the content and watch it. Cinelerra
+ is not intended for consumers. Cinelerra has many features for
+@@ -206,13 +195,13 @@
+ for consumers like MainActor, Kino, or Moxy, which you should consider
+ before using Cinelerra.
+
+-<p>In 1996 our first editor came out: Broadcast 1.0. It was just a window
++ <p>In 1996 our first editor came out: Broadcast 1.0. It was just a window
+ with a waveform in it, it could cut and paste stereo audio waveforms on
+ a UNIX box, except unlike other audio editors it could handle files up
+ to 2 gigabytes with only 64 megs of RAM. That was a feature normally
+ only accessible to the highest end professional audio houses.
+
+-<p>In 1997 Broadcast 1.0 was replaced by Broadcast 2.0. This time the
++ <p>In 1997 Broadcast 1.0 was replaced by Broadcast 2.0. This time the
+ window had a menubar, patchbay, console, and transport control.
+ Broadcast 2.0 still only handled audio but this time it handled
+ unlimited tracks, and it could perform effects on audio and save the
+@@ -222,7 +211,7 @@
+ result instantly. Amazingly this real time tweeking is still
+ unavailable on most audio programs.
+
+-<p>But Broadcast 2.0 still didn't handle video and it wasn't very graceful
++ <p>But Broadcast 2.0 still didn't handle video and it wasn't very graceful
+ at audio either. In 1999 video broke into the story with Broadcast
+ 2000. This iteration of the Broadcast series could do wonders with
+ audio and offered a pretty good video feature set. It could edit video
+@@ -235,7 +224,7 @@
+ disk. For a time it seemed as if the original dream of immersive movie
+ making for everyone regardless of income level had arrived.
+
+-<p>Later on Broadcast 2000 began to come short. Its audio and video was
++ <p>Later on Broadcast 2000 began to come short. Its audio and video was
+ graceful if you knew how to use it efficiently, but quality issues and
+ new user interface techniques were emerging. Broadcast 2000 kept the
+ audio interface from its ancestors, which didn't apply well to video.
+@@ -251,24 +240,26 @@
+ ground up, while supplementing that with the Broadcast audio
+ interface. As always, quality improvements would happen.
+
+-<ul>
+-<li><a accesskey=1 href="#ABOUT%20THIS%20MANUAL">ABOUT THIS MANUAL</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#ABOUT%20THIS%20MANUAL">ABOUT THIS MANUAL</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="ABOUT%20THIS%20MANUAL">ABOUT THIS MANUAL</a>,
+-Up:<a rel=up accesskey=u href="#ABOUT%20CINELERRA">ABOUT CINELERRA</a>
++Up:<a rel="up" accesskey="u" href="#ABOUT%20CINELERRA">ABOUT CINELERRA</a>
+ <br>
++</div>
+
+-<h3>ABOUT THIS MANUAL</h3>
++<h3 class="section">ABOUT THIS MANUAL</h3>
+
+-<p>After many years of searching for the perfect documentation format
++ <p>After many years of searching for the perfect documentation format
+ we've arrived at TexInfo. This format can be converted to HTML,
+ printed, automatically indexed, but most importantly is not bound to
+ any commercial word processor. Documents written in Texinfo will be
+ readable as long as there's a C compiler.
+
+-<p>There are no screenshots in this manual. Screenshots become obsolete
++ <p>There are no screenshots in this manual. Screenshots become obsolete
+ quickly and as a result confuse the users. What looks one way in a
+ screenshot will always look different in the real program because the
+ real program and the manual are always evolving, never perfectly
+@@ -277,244 +268,252 @@
+ so you don't have to pay for it. That includes additional labor to
+ synchronize the manual with the software.
+
+-<p>In addition to telling you the basic editing features of Cinelerra this
++ <p>In addition to telling you the basic editing features of Cinelerra this
+ manual covers tricks that won't be described anywhere else. We're
+ going to try to come up with certain things you can do with Cinelerra
+ that you wouldn't think of on your own.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="INSTALLATION">INSTALLATION</a>,
+-Next:<a rel=next accesskey=n href="#CONFIGURATION">CONFIGURATION</a>,
+-Previous:<a rel=previous accesskey=p href="#ABOUT%20CINELERRA">ABOUT CINELERRA</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#CONFIGURATION">CONFIGURATION</a>,
++Previous:<a rel="previous" accesskey="p" href="#ABOUT%20CINELERRA">ABOUT CINELERRA</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>INSTALLATION</h2>
++<h2 class="chapter">INSTALLATION</h2>
+
+-<p>The Cinelerra package contains Cinelerra, Mix2000, Mplex, and XMovie,
++ <p>The Cinelerra package contains Cinelerra, Mix2000, Mplex, and XMovie,
+ along with standalone libraries for various functions. All these
+ programs are useful and in most cases they're the only free programs
+ available for dealing with uncompressed, high resolution movies.
+
+-<p>All of these programs tie into the same code base. Updates in one area
++ <p>All of these programs tie into the same code base. Updates in one area
+ of the code base usually affect everything else so everything would
+ have to be downloaded again even if one thing changed. By including
+ everything in one package you can be instantly updated for movie making
+ after one download.
+
+-<p>The purpose of the various programs is as follows:
++ <p>The purpose of the various programs is as follows:
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ Cinelerra - capturing, editing and production of material
+
+-<li>
++ <li>
+ Mix2000 - higher resolution volume controller than the standard Linux
+ volume controls.
+
+-<li>
++ <li>
+ MPlex - Multiplexing of MPEG elementary streams.
+
+-<li>
++ <li>
+ XMovie - Standalone player for all the formats Cinelerra exports.
+
+-<li>
++ <li>
+ mpeg3toc - Utility for indexing and reading MPEG files.
+
+-</ul>
++ </ul>
+
+-<p>We try to include all the dependancies because of the difficulty in
++ <p>We try to include all the dependancies because of the difficulty in
+ tracking them down. Furthermore, the versions of some of the
+ dependancies Cinelerra requires differ from the versions other
+ utilities may require, making it impossible to coexist on the same
+ system without static inclusion.
+
+-<p>Cinelerra is best installed by downloading an RPM and running
++ <p>Cinelerra is best installed by downloading an RPM and running
+
+-<br><pre>rpm -U --force --nodeps hvirtual*.rpm
+-</pre>
++<pre class="example"> rpm -U --force --nodeps hvirtual*.rpm
++ </pre>
+
+-<p>on a RedHat system.
++ <p>on a RedHat system.
+
+-<p>On systems which don't support RPM look for a utility called
++ <p>On systems which don't support RPM look for a utility called
+ <em>rpm2cpio</em>. Download a Cinelerra RPM and from the /
+ directory run
+
+-<br><pre>rpm2cpio hvirtual*.rpm | cpio -i --make-directories
+-</pre>
++<pre class="example"> rpm2cpio hvirtual*.rpm | cpio -i --make-directories
++ </pre>
+
+-<p>It should be noted that the compiler used in building Cinelerra
++ <p>It should be noted that the compiler used in building Cinelerra
+ binaries is the free GNU compiler and although it can reorder
+ instructions for Pentium I and use some the of Pentium II branch
+ instructions it's 12 years behind most modern CPUs. You can try
+ different compilers and optimization flags by compiling the source.
+
+-<p>Compiling the source is hard and there's no warranty if the source code
++ <p>Compiling the source is hard and there's no warranty if the source code
+ fails to compile, but the method for compiling starts by downloading
+ the source code and decompressing.
+
+-<br><pre>tar jxf hvirtual*.tar.bz2
+-</pre>
++<pre class="example"> tar jxf hvirtual*.tar.bz2
++ </pre>
+
+-<p>Enter the hvirtual directory
++ <p>Enter the hvirtual directory
+
+-<br><pre>cd hvirtual
+-</pre>
++<pre class="example"> cd hvirtual
++ </pre>
+
+-<p>and set some environment variables. For Pentium II use:
++ <p>and set some environment variables. For Pentium II use:
+
+-<br><pre>export CFLAGS='-O3 -march=i686 -fmessage-length=0 -funroll-all-loops -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 -malign-functions=2 -I/usr/local/include'
+-</pre>
++<pre class="example"> export CFLAGS='-O3 -march=i686 -fmessage-length=0 -funroll-all-loops -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 -malign-functions=2 -I/usr/local/include'
++ </pre>
+
+-<p>For Pentium I and old AMD's use:
++ <p>For Pentium I and old AMD's use:
+
+-<br><pre>export CFLAGS='-O3 -fmessage-length=0 -funroll-all-loops -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 -malign-functions=2 -I/usr/local/include'
+-</pre>
++<pre class="example"> export CFLAGS='-O3 -fmessage-length=0 -funroll-all-loops -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 -malign-functions=2 -I/usr/local/include'
++ </pre>
+
+-<p>Then run
++ <p>Then run
+
+-<br><pre>make
+-</pre>
++<pre class="example"> make
++ </pre>
+
+-<p>The make procedure should run through all the directories and put
++ <p>The make procedure should run through all the directories and put
+ binaries in the <em>i686</em> directories. When we originally supported
+ Alpha it was convenient to compile Alpha and i686 binaries
+ simultaneously, in different directories so all the binaries are put in
+ i686 directories.
+
+-<p>Once finished run
++ <p>Once finished run
+
+-<br><pre>make install
+-</pre>
++<pre class="example"> make install
++ </pre>
+
+-<p>to install the binaries. The output is put in the following directories:
++ <p>to install the binaries. The output is put in the following directories:
+
+-<ul>
++ <ul>
+ <li>Executables -&gt;/usr/bin
+ <li>Plugins -&gt;/usr/lib/cinelerra
+ </ul>
+
+-<p>The main binaries are the Cinelerra, XMovie, Mix2000 executables and
++ <p>The main binaries are the Cinelerra, XMovie, Mix2000 executables and
+ several utilities for reading MPEG transport streams.
+
+-<p>Run Cinelerra by running
++ <p>Run Cinelerra by running
+
+-<br><pre>/usr/bin/cinelerra
+-</pre>
++<pre class="example"> /usr/bin/cinelerra
++ </pre>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="CONFIGURATION">CONFIGURATION</a>,
+-Next:<a rel=next accesskey=n href="#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS</a>,
+-Previous:<a rel=previous accesskey=p href="#INSTALLATION">INSTALLATION</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS</a>,
++Previous:<a rel="previous" accesskey="p" href="#INSTALLATION">INSTALLATION</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>CONFIGURATION</h2>
++<h2 class="chapter">CONFIGURATION</h2>
+
+-<p>Because of the variety of uses, Cinelerra cannot be run optimally
++ <p>Because of the variety of uses, Cinelerra cannot be run optimally
+ without some intimate configuration for your specific needs. Very few
+ parameters are adjustible at compile time. Runtime configuration is
+ the only option for most configuration because of the multitude of
+ parameters.
+
+-<p>Go to <em>settings-&gt;preferences</em> and run through the options.
++ <p>Go to <em>settings-&gt;preferences</em> and run through the options.
+
+-<ul>
+-<li><a accesskey=1 href="#PLAYBACK">PLAYBACK</a>:
+-<li><a accesskey=2 href="#RECORDING">RECORDING</a>:
+-<li><a accesskey=3 href="#PERFORMANCE">PERFORMANCE</a>:
+-<li><a accesskey=4 href="#INTERFACE">INTERFACE</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#PLAYBACK">PLAYBACK</a>:
++<li><a accesskey="2" href="#RECORDING">RECORDING</a>:
++<li><a accesskey="3" href="#PERFORMANCE">PERFORMANCE</a>:
++<li><a accesskey="4" href="#INTERFACE">INTERFACE</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="PLAYBACK">PLAYBACK</a>,
+-Next:<a rel=next accesskey=n href="#RECORDING">RECORDING</a>,
+-Up:<a rel=up accesskey=u href="#CONFIGURATION">CONFIGURATION</a>
++Next:<a rel="next" accesskey="n" href="#RECORDING">RECORDING</a>,
++Up:<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
+ <br>
++</div>
+
+-<h3>PLAYBACK</h3>
++<h3 class="section">PLAYBACK</h3>
+
+-<ul>
+-<li><a accesskey=1 href="#AUDIO%20OUT">AUDIO OUT</a>:
+-<li><a accesskey=2 href="#VIDEO%20OUT">VIDEO OUT</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#AUDIO%20OUT">AUDIO OUT</a>:
++<li><a accesskey="2" href="#VIDEO%20OUT">VIDEO OUT</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="AUDIO%20OUT">AUDIO OUT</a>,
+-Next:<a rel=next accesskey=n href="#VIDEO%20OUT">VIDEO OUT</a>,
+-Up:<a rel=up accesskey=u href="#PLAYBACK">PLAYBACK</a>
++Next:<a rel="next" accesskey="n" href="#VIDEO%20OUT">VIDEO OUT</a>,
++Up:<a rel="up" accesskey="u" href="#PLAYBACK">PLAYBACK</a>
+ <br>
++</div>
+
+-<h4>AUDIO OUT</h4>
++<h4 class="subsection">AUDIO OUT</h4>
+
+-<p>These determine what happens when you play sound from the timeline.
++ <p>These determine what happens when you play sound from the timeline.
+
+-<ul>
++ <ul>
+
+-<li>SAMPLES TO READ FROM DISK
++ <li>SAMPLES TO READ FROM DISK
+
+-<p>Cinelerra uses a pipeline for rendering audio. The first stage is
++ <p>Cinelerra uses a pipeline for rendering audio. The first stage is
+ reading large chunks of audio from disk, the samples to read from
+ disk. This is followed by processing small fragments in a virtual
+ console.
+
+-</p><li>SAMPLES TO SEND TO CONSOLE:
++ </p><li>SAMPLES TO SEND TO CONSOLE:
+
+-<p>The second stage is rendering small fragments through the virtual
++ <p>The second stage is rendering small fragments through the virtual
+ console to the sound driver. A larger value here causes more latency
+ when you change mixing parameters but gives more reliable playback.
+
+-<p>Some sound drivers don't allow changing of the console fragment so
++ <p>Some sound drivers don't allow changing of the console fragment so
+ latency is unchanged no matter what this value is.
+
+-</p><li>
++ </p><li>
+ VIEW FOLLOWS PLAYBACK
+
+-<p>Causes the timeline window to scroll when the playback cursor moves out
++ <p>Causes the timeline window to scroll when the playback cursor moves out
+ of view. This can bog down the X Server.
+
+-</p><li>USE SOFTWARE FOR POSITIONING INFORMATION
++ </p><li>USE SOFTWARE FOR POSITIONING INFORMATION
+
+-<p>Most soundcards and sound drivers don't give reliable information on
++ <p>Most soundcards and sound drivers don't give reliable information on
+ the number of samples the card has played. When playing video you need
+ this information for synchronization. This option causes the sound
+ driver to be ignored and a software timer to be used for
+ synchronization.
+
+-</p><li>AUDIO PLAYBACK IN REALTIME:
++ </p><li>AUDIO PLAYBACK IN REALTIME:
+
+-<p>Back in the days when 150Mhz was the maximum, this allowed
++ <p>Back in the days when 150Mhz was the maximum, this allowed
+ uninterrupted playback on heavy loads. Now you'll probably only need it
+ for playing video and audio when the load is to high for uninterrupted
+ audio.
+
+-</p><li>AUDIO DRIVER
++ </p><li>AUDIO DRIVER
+
+-<p>There are many sound drivers for Linux. This allows selecting one and
++ <p>There are many sound drivers for Linux. This allows selecting one and
+ setting parameters specific to it. Some of the common parameters for a
+ sound driver are
+
+-<ul>
++ <ul>
+
+-<li>DEVICE PATH
++ <li>DEVICE PATH
+
+-<p>Usually a file in the <em>/dev/</em> directory which controls the
++ <p>Usually a file in the <em>/dev/</em> directory which controls the
+ device.
+
+-</p><li>
++ </p><li>
+ BITS
+
+-<p>The number of bits of precision Cinelerra should set the device for.
++ <p>The number of bits of precision Cinelerra should set the device for.
+ This sometimes has a figuritive meaning. Some sound drivers need to be
+ set to 32 bits to perform 24 bit playback and won't play anything when
+ set to 24 bits. Some sound drivers need to be set to 24 bits for 24
+ bit playback.
+
+-</p><li>
++ </p><li>
+ CHANNELS
+
+-<p>The number of channels Cinelerra should set the device for. Regardless
++ <p>The number of channels Cinelerra should set the device for. Regardless
+ of the number of channels in the project, the number of channels set
+ here will be written to the device. When this is set to 2 and the
+ project has 1 channel you'll hear sound through the left speaker and
+@@ -522,184 +521,190 @@
+ and the project has 2 channels you'll hear the left channel centered
+ and not 2 channels mixed together.
+
+-</ul>
+-</ul>
++ </ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="VIDEO%20OUT">VIDEO OUT</a>,
+-Previous:<a rel=previous accesskey=p href="#AUDIO%20OUT">AUDIO OUT</a>,
+-Up:<a rel=up accesskey=u href="#PLAYBACK">PLAYBACK</a>
++Previous:<a rel="previous" accesskey="p" href="#AUDIO%20OUT">AUDIO OUT</a>,
++Up:<a rel="up" accesskey="u" href="#PLAYBACK">PLAYBACK</a>
+ <br>
++</div>
+
+-<h4>VIDEO OUT</h4>
++<h4 class="subsection">VIDEO OUT</h4>
+
+-<p>These determine what happens when you play video from the timeline.
++ <p>These determine what happens when you play video from the timeline.
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ FRAMERATE ACHIEVED
+
+-<p>The number of frames per second being
++ <p>The number of frames per second being
+ displayed during playback.
+
+-</p><li>
++ </p><li>
+ SCALING EQUATION
+
+-<p>The algorithm used in all video resizing in
++ <p>The algorithm used in all video resizing in
+ the virtual console. This doesn't affect scaling to the size of the
+ compositor window.
+
+-<ul>
++ <ul>
+
+-<li>NEAREST NEIGHBOR ENLARGE AND REDUCE
++ <li>NEAREST NEIGHBOR ENLARGE AND REDUCE
+
+-<p>lowest but fastest
++ <p>lowest but fastest
+ quality. Produces jagged edges and uneven motion.
+
+-</p><li>
++ </p><li>
+ BICUBIC ENLARGE AND BILINEAR REDUCE
+
+-<p>highest but slowest
++ <p>highest but slowest
+ quality. For enlarging a bicubic interpolation is used, which blurs
+ slightly but doesn't reveal stair steps. For reduction a bilinear
+ interpolation is used, which produces very sharp images and reduces
+ noise. The bilinear reduced images can be sharpened with a sharpen
+ effect with less noise than a normal sized image.
+
+-</p><li>
++ </p><li>
+ BILINEAR ENLARGE AND BILINEAR REDUCE
+
+-<p>when slight enlargement
++ <p>when slight enlargement
+ is needed a bilinear enlargement looks better than a bicubic
+ enlargement.
+
+-</ul>
++ </ul>
+
+-</p><li>
++ </p><li>
+ PRELOAD BUFFER FOR QUICKTIME
+
+-<p>The Quicktime/AVI decoder can
++ <p>The Quicktime/AVI decoder can
+ handle CDROM sources better when this is around 1000000. This reduces
+ the amount of seeking. For normal use this should be 0.
+
+-</p><li>
++ </p><li>
+ MPEG-4 DEBLOCKING
+
+-<p>For assets which are compressed in OpenDivx and Quicktime, this enables
++ <p>For assets which are compressed in OpenDivx and Quicktime, this enables
+ deblocking. This greatly improves the picture quality during decoding
+ while slowing it down.
+
+-</p><li>
++ </p><li>
+ VIDEO DRIVER
+
+-<p>Normally video on the timeline goes to the
++ <p>Normally video on the timeline goes to the
+ compositor window during continuous playback and when the insertion
+ point is repositioned. Instead of sending video to the Compositor
+ window the video driver can be set to send video to another output
+ device during continuous playback. This doesn't affect where video
+ goes when the insertion point is repositioned, however.
+
+-<p>Various parameters are given for Video Driver depending on the driver.
++ <p>Various parameters are given for Video Driver depending on the driver.
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ DISPLAY
+
+-<p>The is intended for dual monitor
++ <p>The is intended for dual monitor
+ displays. Depending on the value of Display, the Compositor window
+ will appear on a different monitor from the rest of the windows.
+
+-</p><li>
++ </p><li>
+ DEVICE PATH
+
+-<p>Usually a file in the <em>/dev/</em> directory
++ <p>Usually a file in the <em>/dev/</em> directory
+ which controls the device.
+
+-</p><li>
++ </p><li>
+ SWAP FIELDS
+
+-<p>Make the even lines odd and the odd lines even
++ <p>Make the even lines odd and the odd lines even
+ when sending to the device. On an NTSC or 1080i monitor the fields may
+ need to be swapped to prevent jittery motion.
+
+-</p><li>
++ </p><li>
+ OUTPUT CHANNEL
+
+-<p>Devices with multiple outputs may need a
++ <p>Devices with multiple outputs may need a
+ specific connector to send video on.
+
+-</p><li>
++ </p><li>
+ PORT
+
+-<p>The IEEE1394 standard specifies something known as the
++ <p>The IEEE1394 standard specifies something known as the
+ <em>port</em>. This is probably the firewire card number in the system
+ to use.
+
+-</p><li>
++ </p><li>
+ CHANNEL
+
+-<p>The IEEE1394 standard specifies something known as the
++ <p>The IEEE1394 standard specifies something known as the
+ <em>channel</em>. For DV cameras it's always <em>63</em>.
+
+-</ul>
++ </ul>
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="RECORDING">RECORDING</a>,
+-Next:<a rel=next accesskey=n href="#PERFORMANCE">PERFORMANCE</a>,
+-Previous:<a rel=previous accesskey=p href="#PLAYBACK">PLAYBACK</a>,
+-Up:<a rel=up accesskey=u href="#CONFIGURATION">CONFIGURATION</a>
++Next:<a rel="next" accesskey="n" href="#PERFORMANCE">PERFORMANCE</a>,
++Previous:<a rel="previous" accesskey="p" href="#PLAYBACK">PLAYBACK</a>,
++Up:<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
+ <br>
++</div>
+
+-<h3>RECORDING</h3>
++<h3 class="section">RECORDING</h3>
+
+-<ul>
+-<li><a accesskey=1 href="#AUDIO%20IN">AUDIO IN</a>:
+-<li><a accesskey=2 href="#VIDEO%20IN">VIDEO IN</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#AUDIO%20IN">AUDIO IN</a>:
++<li><a accesskey="2" href="#VIDEO%20IN">VIDEO IN</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="AUDIO%20IN">AUDIO IN</a>,
+-Next:<a rel=next accesskey=n href="#VIDEO%20IN">VIDEO IN</a>,
+-Up:<a rel=up accesskey=u href="#RECORDING">RECORDING</a>
++Next:<a rel="next" accesskey="n" href="#VIDEO%20IN">VIDEO IN</a>,
++Up:<a rel="up" accesskey="u" href="#RECORDING">RECORDING</a>
+ <br>
++</div>
+
+-<h4>AUDIO IN</h4>
++<h4 class="subsection">AUDIO IN</h4>
+
+-<p>These determine what happens when you record audio.
++ <p>These determine what happens when you record audio.
+
+-<ul>
++ <ul>
+ <li>
+ RECORD DRIVER
+
+-<p>This is used for recording audio in the Record window. It may be
++ <p>This is used for recording audio in the Record window. It may be
+ shared with the Record Driver for video if the audio and video are
+ wrapped in the same stream. It takes variable parameters depending on
+ the driver. The parameters have the same meaning as they do for
+ playback.
+
+-<ul>
++ <ul>
+ <li>
+ DEVICE PATH
+
+-<p>Usually a file in the <em>/dev/</em> directory which controls the
++ <p>Usually a file in the <em>/dev/</em> directory which controls the
+ device.
+
+-</p><li>
++ </p><li>
+ BITS
+
+-<p>The number of bits of precision Cinelerra should set the device for.
++ <p>The number of bits of precision Cinelerra should set the device for.
+ This sometimes has a figuritive meaning. Some sound drivers need to be
+ set to 32 bits to perform 24 bit recording and won't record anything
+ when set to 24 bits. Some sound drivers need to be set to 24 bits for
+ 24 bit recording.
+
+-</p><li>CHANNELS
++ </p><li>CHANNELS
+
+-<p>The number of channels Cinelerra should set the device for. Regardless
++ <p>The number of channels Cinelerra should set the device for. Regardless
+ of the number of channels in the record operation, the number of
+ channels set here will be read from the device. When this is set to 2
+ and the record operation has 1 channel you'll record the left speaker
+@@ -708,120 +713,124 @@
+ record the left and right channels mixed into the left speaker and not
+ 1 channel spead across two speakers.
+
+-</ul>
++ </ul>
+
+-</p><li>
++ </p><li>
+ SAMPLES TO WRITE AT A TIME
+
+-<p>Audio is first read in small fragments from the device. Many small
++ <p>Audio is first read in small fragments from the device. Many small
+ fragments are combined into a large fragment before writing to disk.
+ The disk writing process is done in a different thread. The value here
+ determines how large the combination of fragments is for each disk
+ write.
+
+-</p><li>
++ </p><li>
+ SAMPLE RATE FOR RECORDING
+
+-<p>Regardless of what the project settings are. This is the sample rate
++ <p>Regardless of what the project settings are. This is the sample rate
+ used for recording. This should be the highest the audio device
+ supports.
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="VIDEO%20IN">VIDEO IN</a>,
+-Previous:<a rel=previous accesskey=p href="#AUDIO%20IN">AUDIO IN</a>,
+-Up:<a rel=up accesskey=u href="#RECORDING">RECORDING</a>
++Previous:<a rel="previous" accesskey="p" href="#AUDIO%20IN">AUDIO IN</a>,
++Up:<a rel="up" accesskey="u" href="#RECORDING">RECORDING</a>
+ <br>
++</div>
+
+-<h4>VIDEO IN</h4>
++<h4 class="subsection">VIDEO IN</h4>
+
+-<p>These determine what happens when you record video.
++ <p>These determine what happens when you record video.
+
+-<ul>
++ <ul>
+ <li>
+ RECORD DRIVER
+
+-<p>This is used for recording video in the Record window. It may be
++ <p>This is used for recording video in the Record window. It may be
+ shared with the Record Driver for audio if the audio and video are
+ wrapped in the same stream. It takes variable parameters depending on
+ the driver. The parameters have the same meaning as they do for
+ playback.
+
+-</p><li>
++ </p><li>
+ FRAMES TO RECORD TO DISK AT A TIME
+
+-<p>Frames are recorded in a pipeline. First frames are buffered in the
++ <p>Frames are recorded in a pipeline. First frames are buffered in the
+ device. Then they're read into a larger buffer for writing to disk.
+ The disk writing is done in a different thread as the device reading.
+ For certain codecs the disk writing uses multiple processors. This
+ value determines how many frames are written to disk at a time.
+
+-</p><li>
++ </p><li>
+ FRAMES TO BUFFER IN DEVICE
+
+-<p>The number of frames to store in the device before reading. This
++ <p>The number of frames to store in the device before reading. This
+ determines how much latency there can be in the system before frames
+ are dropped.
+
+-</p><li>USE SOFTWARE FOR POSITIONING INFORMATION
++ </p><li>USE SOFTWARE FOR POSITIONING INFORMATION
+
+-<p>Video uses audio for
++ <p>Video uses audio for
+
+-<p>synchronization but most soundcards don't give accurate position
++ <p>synchronization but most soundcards don't give accurate position
+ information. This calculates an estimation of audio position in
+ software instead of the hardware for synchronization.
+
+-</p><li>
++ </p><li>
+ SYNC DRIVES AUTOMATICALLY
+
+-<p>For high bitrate recording the drives may be fast enough to store the
++ <p>For high bitrate recording the drives may be fast enough to store the
+ data but Linux may wait several minutes and stall as it writes several
+ minutes of data at a time. This forces Linux to flush its buffers
+ every second instead of every few minutes and produce slightly better
+ realtime behavior.
+
+-</p><li>
++ </p><li>
+ SIZE OF CAPTURED FRAME
+
+-<p>This is the size of the frames recorded. It is independant of the
++ <p>This is the size of the frames recorded. It is independant of the
+ project frame size because most video devices only record a fixed frame
+ size. If the frame size given here isn't supported by the device it
+ might crash Cinelerra.
+
+-</p><li>FRAME RATE FOR RECORDING
++ </p><li>FRAME RATE FOR RECORDING
+
+-<p>The frame rate recorded is different from the project settings. This
++ <p>The frame rate recorded is different from the project settings. This
+ sets the recorded frame rate.
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="PERFORMANCE">PERFORMANCE</a>,
+-Next:<a rel=next accesskey=n href="#INTERFACE">INTERFACE</a>,
+-Previous:<a rel=previous accesskey=p href="#RECORDING">RECORDING</a>,
+-Up:<a rel=up accesskey=u href="#CONFIGURATION">CONFIGURATION</a>
++Next:<a rel="next" accesskey="n" href="#INTERFACE">INTERFACE</a>,
++Previous:<a rel="previous" accesskey="p" href="#RECORDING">RECORDING</a>,
++Up:<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
+ <br>
++</div>
+
+-<h3>PERFORMANCE</h3>
++<h3 class="section">PERFORMANCE</h3>
+
+-<p>You'll spend most of your time configuring this section. The main
++ <p>You'll spend most of your time configuring this section. The main
+ focus of performance is rendering parameters not available in the
+ rendering dialog.
+
+-<ul>
++ <ul>
+
+-<li>CACHE ITEMS
++ <li>CACHE ITEMS
+
+-<p>To speed up rendering, several assets are kept open simultaneously.
++ <p>To speed up rendering, several assets are kept open simultaneously.
+ This determines how many are kept open. A number too large may exhaust
+ your memory pretty fast and result in a crash. A number too small may
+ result in slow playback as assets need to be reopened more frequently.
+
+-</p><li>
++ </p><li>
+ SECONDS TO PREROLL RENDERS
+
+-<p>Some effects need a certain amount of time to settle in. This sets a
++ <p>Some effects need a certain amount of time to settle in. This sets a
+ number of seconds to render without writing to disk before the selected
+ region is rendered. When using the renderfarm you'll sometimes need to
+ preroll to get seemless transitions between the jobs. Every job in a
+@@ -829,32 +838,34 @@
+ rendering, however. Background rendering uses a different preroll
+ value.
+
+-</p><li>
++ </p><li>
+ FORCE SINGLE PROCESSOR USE
+
+-<p>Cinelerra tries to use all processors on the system by default but
++ <p>Cinelerra tries to use all processors on the system by default but
+ sometimes you'll only want to use one processor, like in a renderfarm
+ client. This forces only one processer to be used. The operating
+ system, however, usually uses the second processor anyway for disk
+ access so this option is really a 1.25 processor mode. The value of
+ this parameter is used in renderfarm clients.
+
+-</ul>
++ </ul>
+
+-<ul>
+-<li><a accesskey=1 href="#BACKGROUND%20RENDERING">BACKGROUND RENDERING</a>:
+-<li><a accesskey=2 href="#RENDERFARM">RENDERFARM</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#BACKGROUND%20RENDERING">BACKGROUND RENDERING</a>:
++<li><a accesskey="2" href="#RENDERFARM">RENDERFARM</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="BACKGROUND%20RENDERING">BACKGROUND RENDERING</a>,
+-Next:<a rel=next accesskey=n href="#RENDERFARM">RENDERFARM</a>,
+-Up:<a rel=up accesskey=u href="#PERFORMANCE">PERFORMANCE</a>
++Next:<a rel="next" accesskey="n" href="#RENDERFARM">RENDERFARM</a>,
++Up:<a rel="up" accesskey="u" href="#PERFORMANCE">PERFORMANCE</a>
+ <br>
++</div>
+
+-<h4>BACKGROUND RENDERING</h4>
++<h4 class="subsection">BACKGROUND RENDERING</h4>
+
+-<p>Background rendering was originally concieved to allow HDTV effects to
++ <p>Background rendering was originally concieved to allow HDTV effects to
+ be displayed in realtime. Background rendering causes temporary output
+ to constantly be rendered while the timeline is being modified. The
+ temporary output is played during playack whenever possible. It's very
+@@ -863,26 +874,26 @@
+ renderfarm is used for background rendering, giving you the potential
+ for realtime effects if enough network bandwidth and CPU nodes exist.
+
+-<ul>
++ <ul>
+
+-<li>FRAMES PER BACKGROUND RENDERING JOB
++ <li>FRAMES PER BACKGROUND RENDERING JOB
+
+-<p>This only works if renderfarm is being used, otherwise background
++ <p>This only works if renderfarm is being used, otherwise background
+ rendering creates a single job for the entire timeline. The number of
+ frames specified here is scaled to the relative CPU speed of rendering
+ nodes and used in a single renderfarm job. The optimum number is 10 -
+ 30 since network bandwidth is used to initialize each job.
+
+-</p><li>FRAMES TO PREROLL BACKGROUND
++ </p><li>FRAMES TO PREROLL BACKGROUND
+
+-<p>This is the number of frames to render ahead of each background
++ <p>This is the number of frames to render ahead of each background
+ rendering job. Background rendering is degraded when preroll is used
+ since the jobs are small. When using background rendering, this number
+ is ideally 0. Some effects may require 3 frames of preroll.
+
+-</p><li>OUTPUT FOR BACKGROUND RENDERING
++ </p><li>OUTPUT FOR BACKGROUND RENDERING
+
+-<p>Background rendering generates a sequence of image files in a certain
++ <p>Background rendering generates a sequence of image files in a certain
+ directory. This parameter determines the filename prefix of the image
+ files. It should be on a fast disk, accessible to every node in the
+ renderfarm by the same path. Since hundreds of thousands of image
+@@ -891,317 +902,329 @@
+ this option normally won't work either, but the <img src="wrench.png" alt="wrench.png">
+ configuration button for this option works.
+
+-</p><li>FILE FORMAT
++ </p><li>FILE FORMAT
+
+-<p>The file format for background rendering has to be a sequence of
++ <p>The file format for background rendering has to be a sequence of
+ images. The format of the image sequence determines the quality and
+ speed of playback. JPEG is good most of the time.
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="RENDERFARM">RENDERFARM</a>,
+-Previous:<a rel=previous accesskey=p href="#BACKGROUND%20RENDERING">BACKGROUND RENDERING</a>,
+-Up:<a rel=up accesskey=u href="#PERFORMANCE">PERFORMANCE</a>
++Previous:<a rel="previous" accesskey="p" href="#BACKGROUND%20RENDERING">BACKGROUND RENDERING</a>,
++Up:<a rel="up" accesskey="u" href="#PERFORMANCE">PERFORMANCE</a>
+ <br>
++</div>
+
+-<h4>RENDERFARM</h4>
++<h4 class="subsection">RENDERFARM</h4>
+
+-<p>To use the renderfarm set these options. Ignore them for a standalone
++ <p>To use the renderfarm set these options. Ignore them for a standalone
+ system
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ USE RENDER FARM FOR RENDERING
+
+-<p>When selected, all the
++ <p>When selected, all the
+ <em>file-&gt;render</em> operations use the renderfarm.
+
+-</p><li>
++ </p><li>
+ NODES
+
+-<p>Displays all the nodes on the renderfarm and which ones are active.
++ <p>Displays all the nodes on the renderfarm and which ones are active.
+
+-<p>Nodes are added by entering the host name of the node, verifying the
++ <p>Nodes are added by entering the host name of the node, verifying the
+ value of <em>port</em> and hitting <em>add node</em>.
+
+-<p>Computer freaks may be better off editing the
++ <p>Computer freaks may be better off editing the
+ <em>~/.bcast/.Cinelerra_rc</em> file than this if they have hundreds of
+ nodes. Remember that .Cinelerra_rc is overwritten whenever a copy of
+ Cinelerra exits.
+
+-<p>Select the <em>ON</em> column to activate and deactivate nodes once they
++ <p>Select the <em>ON</em> column to activate and deactivate nodes once they
+ are created.
+
+-<p>Nodes may be edited by highlighting a row and hitting <em>replace
++ <p>Nodes may be edited by highlighting a row and hitting <em>replace
+ node</em>.
+
+-</p><li>
++ </p><li>
+ HOSTNAME
+
+-<p>Edit the hostname of an existing node or enter the hostname of a new
++ <p>Edit the hostname of an existing node or enter the hostname of a new
+ node here.
+
+-</p><li>
++ </p><li>
+ PORT
+
+-<p>Edit the port of an existing node or enter the port of a new node here.
++ <p>Edit the port of an existing node or enter the port of a new node here.
+
+-</p><li>
++ </p><li>
+ REPLACE NODE
+
+-<p>When editing an existing node, hit this to commit the changes to
++ <p>When editing an existing node, hit this to commit the changes to
+ <em>HOSTNAME</em> and <em>PORT</em>. The changes won't be committed if you
+ don't hit this button.
+
+-</p><li>
++ </p><li>
+ ADD NODE
+
+-<p>Create a new node with the <em>HOSTNAME</em> and <em>PORT</em> settings.
++ <p>Create a new node with the <em>HOSTNAME</em> and <em>PORT</em> settings.
+
+-</p><li>
++ </p><li>
+ DELETE NODE
+
+-<p>Deletes whatever node is highlighted in the <em>NODES</em> list.
++ <p>Deletes whatever node is highlighted in the <em>NODES</em> list.
+
+-</p><li>
++ </p><li>
+ SORT NODES
+
+-<p>Sorts the <em>NODES</em> list based on the hostname.
++ <p>Sorts the <em>NODES</em> list based on the hostname.
+
+-</p><li>
++ </p><li>
+ RESET RATES
+
+-<p>This sets the framerate for all the nodes to 0. Frame rates are used
++ <p>This sets the framerate for all the nodes to 0. Frame rates are used
+ to scale job sizes based on CPU speed of the node. Frame rates are
+ only calculated when renderfarm is enabled.
+
+-</p><li>
++ </p><li>
+ FILESYSTEM PREFIX ON REMOTE NODES
+
+-<p>Sets the relative location of all the assets on the nodes. If the
++ <p>Sets the relative location of all the assets on the nodes. If the
+ assets are in <em>/mov</em> on the master and the master filesystem is
+ mounted under <em>/mnt</em> on the nodes, the filesystem prefix should be
+ <em>/mnt</em>. Ideally the assets should appear under the same directory
+ on the nodes as the master. In this case the filesystem prefix can be
+ <em>/</em>.
+
+-<p>You don't have to mount a shared filesystem on remote nodes. If the
++ <p>You don't have to mount a shared filesystem on remote nodes. If the
+ shared filesystem is replicated somewhere on the slave node's hard
+ drive, Cinelerra will read all the assets from the node's hard drive
+ and write the output to the node's hard drive, and you won't need a
+ very fast network. This is much more difficult to pull off but it's an
+ option for really slow networks.
+
+-<p>You don't have to specify a file on the master node's filesystem as the
++ <p>You don't have to specify a file on the master node's filesystem as the
+ output file. If the output file is specified in some other directory
+ on the slave node hard drive Cinelerra will read assets from the master
+ filesystem but write to the node's hard drive. Thus you have a way of
+ rendering across an asymetric network.
+
+-</p><li>
++ </p><li>
+ TOTAL JOBS TO CREATE
+
+-<p>Determines the number of jobs to dispatch to the renderfarm. The more
++ <p>Determines the number of jobs to dispatch to the renderfarm. The more
+ jobs you create, the more finely balanced the renderfarm becomes.
+
+-<p>Determine the total jobs to create by multiplying the number of nodes
++ <p>Determine the total jobs to create by multiplying the number of nodes
+ including the master node by some number. Multiply them by 1 to have
+ one job dispatched for every node. Multiply them by 3 to have 3 jobs
+ dispatched for every node. If you have 10 slave nodes and one master
+ node, specify 33 to have a well balanced renderfarm.
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="INTERFACE">INTERFACE</a>,
+-Previous:<a rel=previous accesskey=p href="#PERFORMANCE">PERFORMANCE</a>,
+-Up:<a rel=up accesskey=u href="#CONFIGURATION">CONFIGURATION</a>
++Previous:<a rel="previous" accesskey="p" href="#PERFORMANCE">PERFORMANCE</a>,
++Up:<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
+ <br>
++</div>
+
+-<h3>INTERFACE</h3>
++<h3 class="section">INTERFACE</h3>
+
+-<p>These parameters affect purely how the user interface works.
++ <p>These parameters affect purely how the user interface works.
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ INDEX FILES GO HERE
+
+-<p>Back in the days when 4 MB/sec was unearthly speed for a hard drive,
++ <p>Back in the days when 4 MB/sec was unearthly speed for a hard drive,
+ index files were introduced to speed up drawing the audio tracks. This
+ option determines where index files are placed on the hard drive.
+
+-</p><li>
++ </p><li>
+ SIZE OF INDEX FILE
+
+-<p>Determines the size of an index file. Larger index sizes allow smaller
++ <p>Determines the size of an index file. Larger index sizes allow smaller
+ files to be drawn faster while slowing down the drawing of large files.
+ Smaller index sizes allow large files to be drawn faster while slowing
+ down small files.
+
+-</p><li>
++ </p><li>
+ NUMBER OF INDEX FILES TO KEEP
+
+-<p>To keep the index directory from becoming unruly, old index files are
++ <p>To keep the index directory from becoming unruly, old index files are
+ deleted. This determines the maximum number of index files to keep in
+ the directory.
+
+-</p><li>
++ </p><li>
+ DELETE ALL INDEXES
+
+-<p>When you change the index size or you want to clean out excessive index
++ <p>When you change the index size or you want to clean out excessive index
+ files, this deletes all the index files.
+
+-</p><li>USE HOURS:MINUTES:SECONDS.XXX
++ </p><li>USE HOURS:MINUTES:SECONDS.XXX
+
+-<p>Various representations of time are given. Select the most convenient
++ <p>Various representations of time are given. Select the most convenient
+ one. The time representation can also be changed by <em>CTRL</em>
+ clicking on the time ruler.
+
+-</p><li>USE THUMBNAILS
++ </p><li>USE THUMBNAILS
+
+-<p>The Resource Window displays thumbnails of assets by default. This can
++ <p>The Resource Window displays thumbnails of assets by default. This can
+ take a long time to set up. This option disables the thumbnails.
+
+-</p><li>CLICKING IN/OUT POINTS DOES WHAT
++ </p><li>CLICKING IN/OUT POINTS DOES WHAT
+
+-<p>Cinelerra not only allows you to perform editing by dragging in/out
++ <p>Cinelerra not only allows you to perform editing by dragging in/out
+ points but also defines three seperate operations which occur when you
+ drag an in/out point. For each mouse button you select the behavior in
+ this window. The usage of each editing mode is described in editing.
+
+-</p><li>MIN DB FOR METER
++ </p><li>MIN DB FOR METER
+
+-<p>Some sound sources have a lower noise threshold than others.
++ <p>Some sound sources have a lower noise threshold than others.
+ Everything below the noise threshold is meaningless. This option sets
+ the meters to clip below a certain level. Consumer soundcards usually
+ bottom out at -65. Professional soundcards bottom out at -90.
+
+-</p><li>FORMAT FOR METER
++ </p><li>FORMAT FOR METER
+
+-<p>This option allows you to select the format for all the VU meters. If
++ <p>This option allows you to select the format for all the VU meters. If
+ you're a CS major select percentage and if you're a EE major select DB.
+ With that, be aware all levels in Cinelerra are input as DB.
+
+-</p><li>THEME
++ </p><li>THEME
+
+-<p>Cinelerra supports variable themes. Select one here and restart
++ <p>Cinelerra supports variable themes. Select one here and restart
+ Cinelerra to see it.
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="THE%20MAIN%20WINDOWS">THE MAIN WINDOWS</a>,
+-Next:<a rel=next accesskey=n href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>,
+-Previous:<a rel=previous accesskey=p href="#CONFIGURATION">CONFIGURATION</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>,
++Previous:<a rel="previous" accesskey="p" href="#CONFIGURATION">CONFIGURATION</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>THE MAIN WINDOWS</h2>
++<h2 class="chapter">THE MAIN WINDOWS</h2>
+
+-<p>When Cinelerra first starts, you'll get four main windows. Hitting
++ <p>When Cinelerra first starts, you'll get four main windows. Hitting
+ <em>CTRL-w</em> in any window closes it.
+
+-<ul>
++ <ul>
+
+-<li>Viewer
++ <li>Viewer
+
+-<p>In here you'll scrub around source media and clips, selecting regions
++ <p>In here you'll scrub around source media and clips, selecting regions
+ to paste into the project. Operations done in the viewer affect a
+ temporary EDL or a clip but not the timeline.
+
+-</p><li>Compositor
++ </p><li>Compositor
+
+-<p>This window displays the output of the timeline. It's the interface
++ <p>This window displays the output of the timeline. It's the interface
+ for most compositing operations or operations that affect the
+ appearance of the timeline output. Operations done in the Compositor
+ affect the timeline but don't affect clips.
+
+-</p><li>Program
++ </p><li>Program
+
+-<p>This contains the timeline and the entry point for all menu driven
++ <p>This contains the timeline and the entry point for all menu driven
+ operations. The timeline consists of a vertical stack of tracks with
+ horizontal representation of time. This defines the output of
+ rendering operations and what is saved when you save files.
+
+-</p><li>Resources
++ </p><li>Resources
+
+-<p>Effects, transitions, clips, and assets are accessed here. Most of the
++ <p>Effects, transitions, clips, and assets are accessed here. Most of the
+ resources are inserted into the project by dragging them out of the
+ resource window. Management of resource allocation is also performed
+ here.
+
+-</ul>
++ </ul>
+
+-<p>Under the <em>Window</em> menu you'll find options affecting the main
++ <p>Under the <em>Window</em> menu you'll find options affecting the main
+ windows. <em>default positions</em> repositions all the windows to a 4
+ screen editing configuration. On dual headed displays, the
+ <em>default positions</em> operation fills only one monitor with windows.
+
+-<p>An additional window, the <em>levels window</em> can be brought up from
++ <p>An additional window, the <em>levels window</em> can be brought up from
+ the <em>Window</em> menu. The <em>levels</em> window displays the output
+ audio levels after all mixing is done.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>,
+-Next:<a rel=next accesskey=n href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>,
+-Previous:<a rel=previous accesskey=p href="#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>,
++Previous:<a rel="previous" accesskey="p" href="#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>LOADING AND SAVING FILES</h2>
++<h2 class="chapter">LOADING AND SAVING FILES</h2>
+
+-<ul>
+-<li><a accesskey=1 href="#LOADING%20FILES">LOADING FILES</a>:
+-<li><a accesskey=2 href="#LOADING%20THE%20BACKUP">LOADING THE BACKUP</a>:
+-<li><a accesskey=3 href="#SAVING%20FILES">SAVING FILES</a>:
+-<li><a accesskey=4 href="#RENDERING%20FILES">RENDERING FILES</a>:
+-<li><a accesskey=5 href="#THE%20RENDER%20FARM">THE RENDER FARM</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#LOADING%20FILES">LOADING FILES</a>:
++<li><a accesskey="2" href="#LOADING%20THE%20BACKUP">LOADING THE BACKUP</a>:
++<li><a accesskey="3" href="#SAVING%20FILES">SAVING FILES</a>:
++<li><a accesskey="4" href="#RENDERING%20FILES">RENDERING FILES</a>:
++<li><a accesskey="5" href="#THE%20RENDER%20FARM">THE RENDER FARM</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="LOADING%20FILES">LOADING FILES</a>,
+-Next:<a rel=next accesskey=n href="#LOADING%20THE%20BACKUP">LOADING THE BACKUP</a>,
+-Up:<a rel=up accesskey=u href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
++Next:<a rel="next" accesskey="n" href="#LOADING%20THE%20BACKUP">LOADING THE BACKUP</a>,
++Up:<a rel="up" accesskey="u" href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
+ <br>
++</div>
+
+-<h3>LOADING FILES</h3>
++<h3 class="section">LOADING FILES</h3>
+
+-<p>All data that you work with in Cinelerra is acquired either by
++ <p>All data that you work with in Cinelerra is acquired either by
+ <em>recording from a device</em> or by <em>loading from disk</em>. This
+ section describes loading.
+
+-<p>The loading and playing of files is just as you would expect. Just go
++ <p>The loading and playing of files is just as you would expect. Just go
+ to <em>file-&gt;Load</em>, select a file for loading, and hit <em>ok</em>. Hit
+ the forward play button and it should start playing, regardless of
+ whether a progress bar has popped up.
+
+-<p>Another way to load files is to pass the filenames as arguments on the
++ <p>Another way to load files is to pass the filenames as arguments on the
+ command line. This creates new tracks for every file and starts the
+ program with all the arguments loaded.
+
+-<p>If the file is a still image, the project's attributes are not changed
++ <p>If the file is a still image, the project's attributes are not changed
+ and the first frame of the track becomes the image. If the file has
+ audio, Cinelerra may build an index file for it to speed up drawing.
+ You can edit and play the file while the index file is being built.
+
+-<ul>
+-<li><a accesskey=1 href="#SUPPORTED%20FILE%20FORMATS">SUPPORTED FILE FORMATS</a>:
+-<li><a accesskey=2 href="#INSERTION%20STRATEGY">INSERTION STRATEGY</a>:
+-<li><a accesskey=3 href="#LOADING%20MULTIPLE%20FILES">LOADING MULTIPLE FILES</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#SUPPORTED%20FILE%20FORMATS">SUPPORTED FILE FORMATS</a>:
++<li><a accesskey="2" href="#INSERTION%20STRATEGY">INSERTION STRATEGY</a>:
++<li><a accesskey="3" href="#LOADING%20MULTIPLE%20FILES">LOADING MULTIPLE FILES</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="SUPPORTED%20FILE%20FORMATS">SUPPORTED FILE FORMATS</a>,
+-Next:<a rel=next accesskey=n href="#INSERTION%20STRATEGY">INSERTION STRATEGY</a>,
+-Up:<a rel=up accesskey=u href="#LOADING%20FILES">LOADING FILES</a>
++Next:<a rel="next" accesskey="n" href="#INSERTION%20STRATEGY">INSERTION STRATEGY</a>,
++Up:<a rel="up" accesskey="u" href="#LOADING%20FILES">LOADING FILES</a>
+ <br>
++</div>
+
+-<h4>SUPPORTED FILE FORMATS</h4>
++<h4 class="subsection">SUPPORTED FILE FORMATS</h4>
+
+-<p>The format of the file affects what Cinelerra does with it. Some
++ <p>The format of the file affects what Cinelerra does with it. Some
+ formats replace all the project settings. Some just insert data with
+ existing project settings. If your project sample rate is 48khz and
+ you load a sound file with 96khz, you'll still be playing it at
+@@ -1209,158 +1232,164 @@
+ an XML file at 96khz and the current project sample rate is 48khz,
+ you'll change it to 96khz. Supported file formats are currently:
+
+-<ul>
++ <ul>
+ <li>WAV
+ <li>PCM
+ <li>AIFF
+ <li>Uncompresed Quicktime
+
+-<p>Quicktime is not the standard for UNIX but we use it because it's well
++ <p>Quicktime is not the standard for UNIX but we use it because it's well
+ documented. All of the Quicktime movies on the internet are
+ compressed. Cinelerra doesn't support compressed Quicktime movies.
+ Most of the Quicktime footage dealt with in Cinelerra is generated by
+ Cinelerra either recording from a device or rendering. The best
+ Quicktime settings to use are JPEG video and twos audio.
+
+-</p><li>JPEG, PNG, TIFF, TGA sequences
++ </p><li>JPEG, PNG, TIFF, TGA sequences
+
+-<p>Cinelerra generates a special table of contents file when you render an
++ <p>Cinelerra generates a special table of contents file when you render an
+ image sequence. You can either select every image file to load or
+ select the table of contents when the rendering is done. Selecting the
+ table of contents is faster and doesn't fill up the resource window
+ with thousands of images.
+
+-</p><li>JPEG, PNG, TIFF, TGA still images
++ </p><li>JPEG, PNG, TIFF, TGA still images
+
+-<p>When loaded, the image takes up one frame in length and doesn't change
++ <p>When loaded, the image takes up one frame in length and doesn't change
+ the project attributes.
+
+-</p><li>AVI with mp3 audio and MPEG-4 video
++ </p><li>AVI with mp3 audio and MPEG-4 video
+
+-<li>MPEG 1, 2 video
++ <li>MPEG 1, 2 video
+
+-<p>You need to run <em>mpeg3toc</em> to generate a table of contents for
++ <p>You need to run <em>mpeg3toc</em> to generate a table of contents for
+ these, then load the table of contents. If you want to edit a DVD,
+ find the corresponding <em>ifo</em> file for the program of interest and run
+
+-<br><pre>mpeg3toc /cdrom/video_ts/vts_01_0.ifo dvd.toc
+-</pre>
++ <pre class="example"> mpeg3toc /cdrom/video_ts/vts_01_0.ifo dvd.toc
++ </pre>
+
+-<p>or something similar. Then load <em>dvd.toc</em>. This allows frame
++ <p>or something similar. Then load <em>dvd.toc</em>. This allows frame
+ accurate editing where none would be possible otherwise.
+
+-</p><li>MPEG program streams and transport streams
++ </p><li>MPEG program streams and transport streams
+
+-<p>You need to run <em>mpeg3toc</em> on these just like MPEG 1,2 video.
++ <p>You need to run <em>mpeg3toc</em> on these just like MPEG 1,2 video.
+ Program and transport streams are structured into multiple tracks.
+ Each track can be video or audio. Each audio track can have 1-6
+ channels. Cinelerra converts each channel of audio into a track, so
+ for MPEG streams with multiple tracks, the tracks will be flattened.
+
+-</p><li>MPEG audio layer II, III
++ </p><li>MPEG audio layer II, III
+
+-<p>These can be loaded directly with no table of contents. Variable
++ <p>These can be loaded directly with no table of contents. Variable
+ bitrate streams may need a table of contents but are playable without
+ it.
+
+-</p><li>AC3 audio
++ </p><li>AC3 audio
+
+-<li>XML
++ <li>XML
+
+-<p>These are generated by Cinelerra for storing edit lists. They change
++ <p>These are generated by Cinelerra for storing edit lists. They change
+ project attributes when loaded.
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="INSERTION%20STRATEGY">INSERTION STRATEGY</a>,
+-Next:<a rel=next accesskey=n href="#LOADING%20MULTIPLE%20FILES">LOADING MULTIPLE FILES</a>,
+-Previous:<a rel=previous accesskey=p href="#SUPPORTED%20FILE%20FORMATS">SUPPORTED FILE FORMATS</a>,
+-Up:<a rel=up accesskey=u href="#LOADING%20FILES">LOADING FILES</a>
++Next:<a rel="next" accesskey="n" href="#LOADING%20MULTIPLE%20FILES">LOADING MULTIPLE FILES</a>,
++Previous:<a rel="previous" accesskey="p" href="#SUPPORTED%20FILE%20FORMATS">SUPPORTED FILE FORMATS</a>,
++Up:<a rel="up" accesskey="u" href="#LOADING%20FILES">LOADING FILES</a>
+ <br>
++</div>
+
+-<h4>INSERTION STRATEGY</h4>
++<h4 class="subsection">INSERTION STRATEGY</h4>
+
+-<p>Usually three things happen when you load a file. First the existing
++ <p>Usually three things happen when you load a file. First the existing
+ project is cleared from the screen, second the project's attributes are
+ changed to match the file's, and finally the new file's tracks are
+ created in the timeline.
+
+-<p>But Cinelerra lets you change what happens when you load a file.
++ <p>But Cinelerra lets you change what happens when you load a file.
+
+-<p>In the file selection box go to the <em>Insertion strategy</em> box and
++ <p>In the file selection box go to the <em>Insertion strategy</em> box and
+ select it. Each of these options loads the file a different way.
+
+-<ul>
++ <ul>
+
+-<li>Replace current project
++ <li>Replace current project
+
+-<p>All tracks in the current project are deleted and new tracks are
++ <p>All tracks in the current project are deleted and new tracks are
+ created to match the source. Project attributes are only changed when
+ loading XML. If multiple files are selected it adds new tracks for
+ every file.
+
+-</p><li>Replace current project and concatenate tracks
++ </p><li>Replace current project and concatenate tracks
+
+-<p>Same as replace current project except if multiple files are selected
++ <p>Same as replace current project except if multiple files are selected
+ it concatenates the tracks of every file after the first.
+
+-</p><li>Append in new tracks
++ </p><li>Append in new tracks
+
+-<p>The current project is not deleted and new tracks are created for the
++ <p>The current project is not deleted and new tracks are created for the
+ source.
+
+-</p><li>Concatenate to existing tracks
++ </p><li>Concatenate to existing tracks
+
+-<p>The current project is not deleted and new files are concatenated to
++ <p>The current project is not deleted and new files are concatenated to
+ the existing tracks.
+
+-</p><li>Paste at insertion point
++ </p><li>Paste at insertion point
+
+-<p>The file is pasted in like a normal paste operation.
++ <p>The file is pasted in like a normal paste operation.
+
+-</p><li>Create new resources only
++ </p><li>Create new resources only
+
+-<p>The timeline is unchanged and new resources are created in the Resource
++ <p>The timeline is unchanged and new resources are created in the Resource
+ Window.
+
+-</ul>
++ </ul>
+
+-<p>The insertion strategy is a recurring option in many of Cinelerra's
++ <p>The insertion strategy is a recurring option in many of Cinelerra's
+ functions. In each place the options do the same thing. With these
+ options you can almost do all your editing by loading files.
+
+-<p>If you load files by passing command line arguments to Cinelerra, the
++ <p>If you load files by passing command line arguments to Cinelerra, the
+ files are loaded with <em>Replace current project</em> rules.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="LOADING%20MULTIPLE%20FILES">LOADING MULTIPLE FILES</a>,
+-Previous:<a rel=previous accesskey=p href="#INSERTION%20STRATEGY">INSERTION STRATEGY</a>,
+-Up:<a rel=up accesskey=u href="#LOADING%20FILES">LOADING FILES</a>
++Previous:<a rel="previous" accesskey="p" href="#INSERTION%20STRATEGY">INSERTION STRATEGY</a>,
++Up:<a rel="up" accesskey="u" href="#LOADING%20FILES">LOADING FILES</a>
+ <br>
++</div>
+
+-<h4>LOADING MULTIPLE FILES</h4>
++<h4 class="subsection">LOADING MULTIPLE FILES</h4>
+
+-<p>In the file selection box go to the list of files. Select a file. Go
++ <p>In the file selection box go to the list of files. Select a file. Go
+ to another file and select it while holding down <em>CTRL</em>. This
+ selects one additional file. Go to another file and select it while
+ holding down <em>SHIFT</em>. This selects every intervening file. This
+ behavior is available in most every list box.
+
+-<p>Select a bunch of mp3 files and <em>Replace current project and
++ <p>Select a bunch of mp3 files and <em>Replace current project and
+ concatenate tracks</em> in the insertion strategy to create a song
+ playlist.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="LOADING%20THE%20BACKUP">LOADING THE BACKUP</a>,
+-Next:<a rel=next accesskey=n href="#SAVING%20FILES">SAVING FILES</a>,
+-Previous:<a rel=previous accesskey=p href="#LOADING%20FILES">LOADING FILES</a>,
+-Up:<a rel=up accesskey=u href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
++Next:<a rel="next" accesskey="n" href="#SAVING%20FILES">SAVING FILES</a>,
++Previous:<a rel="previous" accesskey="p" href="#LOADING%20FILES">LOADING FILES</a>,
++Up:<a rel="up" accesskey="u" href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
+ <br>
++</div>
+
+-<h3>LOADING THE BACKUP</h3>
++<h3 class="section">LOADING THE BACKUP</h3>
+
+-<p>There is one special XML file on disk at all times. After every
++ <p>There is one special XML file on disk at all times. After every
+ editing operation Cinelerra saves the current project to a backup in
+ <em>$HOME/.bcast/backup.xml</em>. In the event of a crash go to
+ <em>file-&gt;load backup</em> to load the backup. It is important after a
+@@ -1368,40 +1397,42 @@
+ Loading the backup should be the first operation or you'll overwrite
+ the backup.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="SAVING%20FILES">SAVING FILES</a>,
+-Next:<a rel=next accesskey=n href="#RENDERING%20FILES">RENDERING FILES</a>,
+-Previous:<a rel=previous accesskey=p href="#LOADING%20THE%20BACKUP">LOADING THE BACKUP</a>,
+-Up:<a rel=up accesskey=u href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
++Next:<a rel="next" accesskey="n" href="#RENDERING%20FILES">RENDERING FILES</a>,
++Previous:<a rel="previous" accesskey="p" href="#LOADING%20THE%20BACKUP">LOADING THE BACKUP</a>,
++Up:<a rel="up" accesskey="u" href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
+ <br>
++</div>
+
+-<h3>SAVING FILES</h3>
++<h3 class="section">SAVING FILES</h3>
+
+-<p>When Cinelerra saves a file it saves an edit decision list of the
++ <p>When Cinelerra saves a file it saves an edit decision list of the
+ current project but doesn't save any media. Go to <em>File-&gt;save
+ as...</em>. Select a file to overwrite or enter a new file. Cinelerra
+ automatically concatenates <em>.xml</em> to the filename if no
+ <em>.xml</em> extension is given.
+
+-<p>The saved file contains all the project settings and locations of every
++ <p>The saved file contains all the project settings and locations of every
+ edit but instead of media it contains pointers to the original media
+ files on disk.
+
+-<p>For each media file the XML file stores either an absolute path or just
++ <p>For each media file the XML file stores either an absolute path or just
+ the relative path. If the media is in the same directory as the XML
+ file a relative path is saved. If it's in a different directory an
+ absolute path is saved.
+
+-<p>In order to move XML files around without breaking the media linkages
++ <p>In order to move XML files around without breaking the media linkages
+ you either need to keep the media in the same directory as XML file
+ forever or save the XML file in a different directory than the media
+ and not move the media ever again.
+
+-<p>If you want to create an audio playlist and burn it on CD-ROM, save the
++ <p>If you want to create an audio playlist and burn it on CD-ROM, save the
+ XML file in the same directory as the audio files and burn the entire
+ directory. This keeps the media paths relative.
+
+-<p>XML files are useful for saving the current state before going to sleep
++ <p>XML files are useful for saving the current state before going to sleep
+ and saving audio playlists but they're limited in that they're specific
+ to Cinelerra. You can't play XML files in a dedicated movie player.
+ Realtime effects in an XML file have to be resynthesized every time you
+@@ -1410,16 +1441,18 @@
+ lot of electricity to spin. For a more persistent storage of the
+ output there's rendering.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="RENDERING%20FILES">RENDERING FILES</a>,
+-Next:<a rel=next accesskey=n href="#THE%20RENDER%20FARM">THE RENDER FARM</a>,
+-Previous:<a rel=previous accesskey=p href="#SAVING%20FILES">SAVING FILES</a>,
+-Up:<a rel=up accesskey=u href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
++Next:<a rel="next" accesskey="n" href="#THE%20RENDER%20FARM">THE RENDER FARM</a>,
++Previous:<a rel="previous" accesskey="p" href="#SAVING%20FILES">SAVING FILES</a>,
++Up:<a rel="up" accesskey="u" href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
+ <br>
++</div>
+
+-<h3>RENDERING FILES</h3>
++<h3 class="section">RENDERING FILES</h3>
+
+-<p>Rendering takes a section of the timeline, performs all the editing,
++ <p>Rendering takes a section of the timeline, performs all the editing,
+ effects and compositing, and stores it in a pure movie file. You can
+ then delete all the source assets, play the rendered file in a movie
+ player, or bring it back into Cinelerra for more editing. It's very
+@@ -1427,18 +1460,18 @@
+ however, so keep the original assets and XML file around several days
+ after you render it.
+
+-<p>To begin a render operation you need to define a region of the timeline
++ <p>To begin a render operation you need to define a region of the timeline
+ to render. The navigation section describes methods of defining
+ regions. See <a href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>. When a region is highlighted
+ or in/out points are set, the affected region is rendered. When no
+ region is highlighted, everything after the insertion point is
+ rendered.
+
+-<p>Go to <em>File-&gt;render</em> to bring up the render dialog. Select the
++ <p>Go to <em>File-&gt;render</em> to bring up the render dialog. Select the
+ magnifying glass to bring up a file selection dialog. This determines
+ the filename to write the rendered file to.
+
+-<p>In the render dialog select a format from the <em>File Format</em> menu.
++ <p>In the render dialog select a format from the <em>File Format</em> menu.
+ The format of the file determines whether you can render audio or video
+ or both. Select <em>Render audio tracks</em> to generate audio tracks
+ and <em>Render video tracks</em> to generate video tracks. Select the
+@@ -1448,28 +1481,28 @@
+ selected and the file format doesn't support it, trying to render will
+ pop up an error.
+
+-<p>The <em>Create new file at each label</em> option causes a new file to be
++ <p>The <em>Create new file at each label</em> option causes a new file to be
+ created when every label in the timeline is encountered. This is
+ useful for dividing long audio recordings into individual tracks. When
+ using the renderfarm, <em>Create new file at each label</em> causes one
+ renderfarm job to be created at every label instead of using the
+ internal load balancing algorithm to space jobs.
+
+-<p>When <em>Create new file at each label</em> is selected, a new filename
++ <p>When <em>Create new file at each label</em> is selected, a new filename
+ is created for every output file. If the filename given in the render
+ dialog has a 2 digit number in it, the 2 digit number is overwritten
+ with a different incremental number for every output file. If no 2
+ digit number is given, Cinelerra automatically concatenates a number to
+ the end of the given filename for every output file.
+
+-<p>In the filename <em>/hmov/track01.wav</em> the <em>01</em> would be
++ <p>In the filename <em>/hmov/track01.wav</em> the <em>01</em> would be
+ overwritten for every output file. The filename
+ <em>/hmov/track.wav</em>; however, would become <em>/hmov/track.wav001</em>
+ and so on and so forth. Filename regeneration is only used when either
+ renderfarm mode is active or creating new files for every label is
+ active.
+
+-<p>Finally the render dialog lets you select an insertion mode. The
++ <p>Finally the render dialog lets you select an insertion mode. The
+ insertion modes are the same as with loading files. In this case if
+ you select <em>insert nothing</em> the file will be written out to disk
+ without changing the current project. For other insertion strategies
+@@ -1478,51 +1511,53 @@
+ See <a href="#EDITING">EDITING</a>. Editing describes how to cause output to be inserted
+ at the right position.
+
+-<p>It should be noted that even if you only have audio or only have video
++ <p>It should be noted that even if you only have audio or only have video
+ rendered, a <em>paste</em> insertion strategy will behave like a normal
+ paste operation, erasing any selected region of the timeline and
+ pasting just the data that was rendered. If you render only audio and
+ have some video tracks armed, the video tracks will get truncated while
+ the audio output is pasted into the audio tracks.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="THE%20RENDER%20FARM">THE RENDER FARM</a>,
+-Previous:<a rel=previous accesskey=p href="#RENDERING%20FILES">RENDERING FILES</a>,
+-Up:<a rel=up accesskey=u href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
++Previous:<a rel="previous" accesskey="p" href="#RENDERING%20FILES">RENDERING FILES</a>,
++Up:<a rel="up" accesskey="u" href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>
+ <br>
++</div>
+
+-<h3>THE RENDER FARM</h3>
++<h3 class="section">THE RENDER FARM</h3>
+
+-<p>When bicubic interpolation and HDTV was first done on Cinelerra, the
++ <p>When bicubic interpolation and HDTV was first done on Cinelerra, the
+ time needed to produce the simplest output became unbearable even on
+ the fastest dual 1.7Ghz Xeon of the time. Renderfarm support even in
+ the simplest form brings HDTV times back in line with SD while making
+ SD faster than realtime.
+
+-<p>While the renderfarm interface isn't spectacular, it's simple enough to
++ <p>While the renderfarm interface isn't spectacular, it's simple enough to
+ use inside an editing suite with less than a dozen nodes without going
+ through the same amount of hassle you would with a several hundred node
+ farm. Renderfarm is invoked transparently for all file-&gt;render
+ operations when it is enabled in the preferences.
+
+-<p>It should be noted that <em>Create new file at each label</em> causes a
++ <p>It should be noted that <em>Create new file at each label</em> causes a
+ new renderfarm job to be created at each label instead of the default
+ load balancing. If this option is selected when no labels exist, only
+ one job will be created.
+
+-<p>A Cinelerra renderfarm is organized into a master node and any number
++ <p>A Cinelerra renderfarm is organized into a master node and any number
+ of slave nodes. The master node is the computer which is running the
+ GUI. The slave nodes are anywhere else on the network and are run from
+ the command line.
+
+-<p>Cinelerra divides the selected region of the timeline into a certain
++ <p>Cinelerra divides the selected region of the timeline into a certain
+ number of jobs which are then dispatched to the different nodes
+ depending on the load balance. The nodes process the jobs and write
+ their output to individual files on the filesystem. The output files
+ are not concatenated. It's important for all the nodes and the master
+ node to use the same filesystem for assets, mounted over the network.
+
+-<p>Since most of the time you'll want to bring in the rendered output and
++ <p>Since most of the time you'll want to bring in the rendered output and
+ fine tune it on the timeline, the jobs are left in individual files.
+ You can load these using <em>concatenate mode</em> and render them again
+ with renderfarm disabled. If the track and output dimensions equal the
+@@ -1531,173 +1566,181 @@
+ MPEG has the distinction that you can concatenate the subfiles with the
+ UNIX cat utility.
+
+-<p>Configuration of the renderfarm is described in the configuration
++ <p>Configuration of the renderfarm is described in the configuration
+ chapter See <a href="#RENDERFARM">RENDERFARM</a>. The slave nodes traditionally read and
+ write data to a common filesystem over a network, thus they don't need
+ hard drives.
+
+-<p>Ideally all the nodes on the renderfarm have similar CPU performance.
++ <p>Ideally all the nodes on the renderfarm have similar CPU performance.
+ Cinelerra load balances on a first come first serve basis. If the last
+ segment is dispatched to the slowest node, all the fastest nodes may
+ end up waiting for the slowest node to finish while they themselves
+ could have rendered it faster.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>,
+-Next:<a rel=next accesskey=n href="#EDITING">EDITING</a>,
+-Previous:<a rel=previous accesskey=p href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#EDITING">EDITING</a>,
++Previous:<a rel="previous" accesskey="p" href="#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>NAVIGATING THE PROJECT</h2>
++<h2 class="chapter">NAVIGATING THE PROJECT</h2>
+
+-<p>The thing you want to do most of the time is get to a certain time and
++ <p>The thing you want to do most of the time is get to a certain time and
+ place in the media. Internally the media is organized into tracks.
+ Each track extends across time. Navigation involves both getting to a
+ track and getting to a certain time in the track.
+
+-<ul>
+-<li><a accesskey=1 href="#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>:
+-<li><a accesskey=2 href="#NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>:
+-<li><a accesskey=3 href="#NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES</a>:
+-<li><a accesskey=4 href="#USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS</a>:
+-<li><a accesskey=5 href="#USING%20BACKGROUND%20RENDERING">USING BACKGROUND RENDERING</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>:
++<li><a accesskey="2" href="#NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>:
++<li><a accesskey="3" href="#NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES</a>:
++<li><a accesskey="4" href="#USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS</a>:
++<li><a accesskey="5" href="#USING%20BACKGROUND%20RENDERING">USING BACKGROUND RENDERING</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>,
+-Next:<a rel=next accesskey=n href="#NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>,
+-Up:<a rel=up accesskey=u href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
++Next:<a rel="next" accesskey="n" href="#NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>,
++Up:<a rel="up" accesskey="u" href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
+ <br>
++</div>
+
+-<h3>NAVIGATING THE PROGRAM WINDOW</h3>
++<h3 class="section">NAVIGATING THE PROGRAM WINDOW</h3>
+
+-<p>The program window contains many features for navigation and displays
++ <p>The program window contains many features for navigation and displays
+ the timeline as it is structured in memory: tracks stacked vertically
+ and extending across time. The horizontal scroll bar allows you to
+ scan across time. The vertical scroll bar allows you to scan across
+ tracks.
+
+-<p>Below the timeline you'll find the zoom panel. The zoom panel contains
++ <p>Below the timeline you'll find the zoom panel. The zoom panel contains
+ values for <em>sample zoom</em>, <em>amplitude</em>, and <em>track
+ zoom</em>. These values in addition to the scrollbars are all that's
+ needed to position the timeline.
+
+ <br><p>
+-<img src="zoompanel.png" alt="zoompanel.png">
++ <img src="zoompanel.png" alt="zoompanel.png">
+
+-<p>Changing the <em>sample zoom</em> causes the amount of time visible to
++ <p>Changing the <em>sample zoom</em> causes the amount of time visible to
+ change. <em>If your mouse has a wheel and it works in X11 go over
+ the tumblers and use the wheel to zoom in and out.</em>
+
+-<p>The <em>amplitude</em> only affects audio. It determines how big the
++ <p>The <em>amplitude</em> only affects audio. It determines how big the
+ waveform is if the waveform is drawn.
+
+-<p>The <em>track zoom</em> affects all tracks. It determines the height of
++ <p>The <em>track zoom</em> affects all tracks. It determines the height of
+ each track. If you change the track zoom the amplitude zoom
+ compensates so audio waveforms look proportional.
+
+-<p>In addition to the graphical tools, you'll probably more often use the
++ <p>In addition to the graphical tools, you'll probably more often use the
+ keyboard to navigate. Use <em>PAGE UP</em> and <em>PAGE DOWN</em> to
+ scroll up and down the tracks.
+
+-<p>Use the <em>LEFT</em> and <em>RIGHT</em> arrows to move across time.
++ <p>Use the <em>LEFT</em> and <em>RIGHT</em> arrows to move across time.
+ You'll often need to scroll beyond the end of the timeline but
+ scrollbars won't let you do it. Instead use the <em>RIGHT</em> arrow to
+ scroll past the end of timeline.
+
+-<p>Use the <em>UP</em> and <em>DOWN</em> arrows to change the sample zoom by a
++ <p>Use the <em>UP</em> and <em>DOWN</em> arrows to change the sample zoom by a
+ power of 2.
+
+-<p><em>CTRL-UP</em> and <em>CTRL-DOWN</em> cause the amplitude zoom to change.
++ <p><em>CTRL-UP</em> and <em>CTRL-DOWN</em> cause the amplitude zoom to change.
+
+-<p><em>CTRL-PGUP</em> and <em>CTRL-PGDOWN</em> cause the track zoom to change.
++ <p><em>CTRL-PGUP</em> and <em>CTRL-PGDOWN</em> cause the track zoom to change.
+
+-<ul>
+-<li><a accesskey=1 href="#THE%20INSERTION%20POINT">THE INSERTION POINT</a>:
+-<li><a accesskey=2 href="#THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS</a>:
+-<li><a accesskey=3 href="#USING%20LABELS%20IN%20THE%20PROGRAM%20WINDOW">USING LABELS IN THE PROGRAM WINDOW</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#THE%20INSERTION%20POINT">THE INSERTION POINT</a>:
++<li><a accesskey="2" href="#THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS</a>:
++<li><a accesskey="3" href="#USING%20LABELS%20IN%20THE%20PROGRAM%20WINDOW">USING LABELS IN THE PROGRAM WINDOW</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="THE%20INSERTION%20POINT">THE INSERTION POINT</a>,
+-Next:<a rel=next accesskey=n href="#THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS</a>,
+-Up:<a rel=up accesskey=u href="#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>
++Next:<a rel="next" accesskey="n" href="#THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS</a>,
++Up:<a rel="up" accesskey="u" href="#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>
+ <br>
++</div>
+
+-<h4>THE INSERTION POINT</h4>
++<h4 class="subsection">THE INSERTION POINT</h4>
+
+-<p>By default you'll see a flashing insertion point in the program window
++ <p>By default you'll see a flashing insertion point in the program window
+ the first time you boot it up. This is where new media is pasted onto
+ the timeline. It's also the starting point of all playback
+ operations. When rendering it defines the region of the timeline to be
+ rendered.
+
+-<p>The insertion point is normally moved by clicking inside the timebar.
++ <p>The insertion point is normally moved by clicking inside the timebar.
+ Any region of the timebar not obscured by labels and in/out points is a
+ hotspot for repositioning the insertion point.
+
+ <br><p>
+-<img src="main_timebar.png" alt="main_timebar.png">
++ <img src="main_timebar.png" alt="main_timebar.png">
+ <em>The main timebar</em>
+
+-<p>The insertion point also can be moved by clicking in the timeline
++ <p>The insertion point also can be moved by clicking in the timeline
+ itself, but not always. The insertion point has two modes of
+ operation:
+
+-<ul>
++ <ul>
+ <li>drag and drop mode
+
+-<li>cut and paste mode
++ <li>cut and paste mode
+
+-</ul>
++ </ul>
+
+-<p>The mode of operation is determined by selecting the arrow or the
++ <p>The mode of operation is determined by selecting the arrow or the
+ i-beam in the buttonbar.
+
+ <br><p>
+-<img src="editing_mode.png" alt="editing_mode.png">
++ <img src="editing_mode.png" alt="editing_mode.png">
+ <em>The editing mode buttons</em>
+
+-<p>If the arrow is highlighted it enables <em>drag and drop</em> mode. In
++ <p>If the arrow is highlighted it enables <em>drag and drop</em> mode. In
+ drag and drop mode, clicking in the timeline doesn't reposition the
+ insertion point. Instead it selects an entire edit. Dragging in the
+ timeline repositions the edit, snapping it to other edit boundaries.
+ This is normally useful for reordering audio playlists and moving
+ effects around.
+
+-<p>If the i-beam is highlighted it enables <em>cut and paste mode</em>. In
++ <p>If the i-beam is highlighted it enables <em>cut and paste mode</em>. In
+ cut and paste mode clicking in the timeline repositions the insertion
+ point. Dragging in the timeline highlights a region. The highlighted
+ region becomes the playback range during the next playback operation,
+ the rendered range during the next render operation, and the region
+ affected by cut and paste operations.
+
+-<p><em>Shift-clicking</em> in the timeline extends the highlighted region.
++ <p><em>Shift-clicking</em> in the timeline extends the highlighted region.
+
+-<p><em>Double-clicking</em> in the timeline selects the entire edit the
++ <p><em>Double-clicking</em> in the timeline selects the entire edit the
+ cursor is over.
+
+-<p>It should be noted that when moving the insertion point and selecting
++ <p>It should be noted that when moving the insertion point and selecting
+ regions, the positions are either aligned to frames or aligned to
+ samples. When editing video you'll want to align to frames. When
+ editing audio you'll want to align to samples. This is set in
+ <em>settings-&gt;align cursor on frames</em>.
+
+-<p>If the highlighted region is the region affected by cut and paste
++ <p>If the highlighted region is the region affected by cut and paste
+ operations, how do I cut and paste in <em>drag and drop</em> mode? In
+ this case you need to set <em>in/out points</em> to define an affected region.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS</a>,
+-Next:<a rel=next accesskey=n href="#USING%20LABELS%20IN%20THE%20PROGRAM%20WINDOW">USING LABELS IN THE PROGRAM WINDOW</a>,
+-Previous:<a rel=previous accesskey=p href="#THE%20INSERTION%20POINT">THE INSERTION POINT</a>,
+-Up:<a rel=up accesskey=u href="#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>
++Next:<a rel="next" accesskey="n" href="#USING%20LABELS%20IN%20THE%20PROGRAM%20WINDOW">USING LABELS IN THE PROGRAM WINDOW</a>,
++Previous:<a rel="previous" accesskey="p" href="#THE%20INSERTION%20POINT">THE INSERTION POINT</a>,
++Up:<a rel="up" accesskey="u" href="#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>
+ <br>
++</div>
+
+-<h4>THE IN/OUT POINTS</h4>
++<h4 class="subsection">THE IN/OUT POINTS</h4>
+
+-<p>In both editing modes you can set in/out points. The in/out points
++ <p>In both editing modes you can set in/out points. The in/out points
+ define the affected region. In drag and drop mode they are the only
+ way to define an affected region. In both cut and paste mode and drag
+ and drop mode they override the highlighted area. If a highlighted
+@@ -1706,162 +1749,166 @@
+ it's best to use either highlighting or in/out points but not both
+ simultaneously.
+
+-<p>To set in/out points go to the timebar and position the insertion point
++ <p>To set in/out points go to the timebar and position the insertion point
+ somewhere. Hit the <img src="in_point_button.png" alt="in_point_button.png"> <em>in point button</em>. Go
+ to a position after the in point and hit the <img src="out_point_button.png" alt="out_point_button.png">
+ <em>out point button</em>.
+
+ <br><p>
+-<img src="inout_points.png" alt="inout_points.png"> <em>Timebar with in/out points set</em>.
++ <img src="inout_points.png" alt="inout_points.png"> <em>Timebar with in/out points set</em>.
+
+-<p>Select either the in point or the out point and the insertion point
++ <p>Select either the in point or the out point and the insertion point
+ jumps to that location. After selecting an in point, if you hit the
+ <em>in point button</em> the in point will be deleted. After selecting
+ an out point, if you hit the <em>out point button</em> the out point will
+ be deleted.
+
+-<p>If you select a region somewhere else while in/out points already
++ <p>If you select a region somewhere else while in/out points already
+ exist, the existing points will be repositioned when you hit the in/out
+ buttons.
+
+-<p><em>Shift-clicking</em> on an in/out point extends the highlighted region
++ <p><em>Shift-clicking</em> on an in/out point extends the highlighted region
+ to that point.
+
+-<p>Instead of using the button bar you can use the <em>[</em> and <em>]</em>
++ <p>Instead of using the button bar you can use the <em>[</em> and <em>]</em>
+ keys to toggle in/out points.
+
+-<p>The insertion point and the in/out points allow you to define an
++ <p>The insertion point and the in/out points allow you to define an
+ affected region but they don't let you jump to exact points on the
+ timeline very easily. For this purpose there are labels.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="USING%20LABELS%20IN%20THE%20PROGRAM%20WINDOW">USING LABELS IN THE PROGRAM WINDOW</a>,
+-Previous:<a rel=previous accesskey=p href="#THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS</a>,
+-Up:<a rel=up accesskey=u href="#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>
++Previous:<a rel="previous" accesskey="p" href="#THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS</a>,
++Up:<a rel="up" accesskey="u" href="#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>
+ <br>
++</div>
+
+-<h4>USING LABELS IN THE PROGRAM WINDOW</h4>
++<h4 class="subsection">USING LABELS IN THE PROGRAM WINDOW</h4>
+
+-<p>Labels are an easy way to set exact locations on the timeline you want
++ <p>Labels are an easy way to set exact locations on the timeline you want
+ to jump to. When you position the insertion point somewhere and hit
+ the <img src="label_button.png" alt="label_button.png"> <em>label button</em> a new label appears on the
+ timeline.
+
+ <br><p>
+-<img src="timebar_label.png" alt="timebar_label.png"> <em>Timebar with a label on it</em>
++ <img src="timebar_label.png" alt="timebar_label.png"> <em>Timebar with a label on it</em>
+
+-<p>No matter what the zoom settings are, clicking on the label positions
++ <p>No matter what the zoom settings are, clicking on the label positions
+ the insertion point exactly where you set it. Hitting the label button
+ again when a label is selected deletes it.
+
+-<p><em>Shift-clicking</em> on a label extends the highlighted region.
++ <p><em>Shift-clicking</em> on a label extends the highlighted region.
+
+-<p><em>Double-clicking</em> between two labels highlights the region between
++ <p><em>Double-clicking</em> between two labels highlights the region between
+ the labels.
+
+-<p>Hitting the <em>l</em> key has the same effect as the label button.
++ <p>Hitting the <em>l</em> key has the same effect as the label button.
+
+-<p>If you hit the label button when a region is highlighted, two labels
++ <p>If you hit the label button when a region is highlighted, two labels
+ are toggled at each end of the highlighted region. If one end already
+ has a label, then the existing label is deleted and a label is created
+ at the opposite end.
+
+-<p>Labels can reposition the insertion point when they are selected but
++ <p>Labels can reposition the insertion point when they are selected but
+ they can also be traversed with the <img src="label_traversal.png" alt="label_traversal.png"> <em>label
+ traversal</em> buttons. When a label is out of view, the label traversal
+ buttons reposition the timeline so the label is visible. There are
+ keyboard shortcuts for label traversal, too.
+
+-<p><em>CTRL-LEFT</em> repositions the insertion point on the previous label.
++ <p><em>CTRL-LEFT</em> repositions the insertion point on the previous label.
+
+-<p><em>CTRL-RIGHT</em> repositions the insertion point on the next label.
++ <p><em>CTRL-RIGHT</em> repositions the insertion point on the next label.
+
+-<p>With label traversal you can quickly seek back and forth on the
++ <p>With label traversal you can quickly seek back and forth on the
+ timeline but you can also select regions.
+
+-<p><em>SHIFT-CTRL-LEFT</em> extends the highlighted region to the previous
++ <p><em>SHIFT-CTRL-LEFT</em> extends the highlighted region to the previous
+ label.
+
+-<p><em>SHIFT-CTRL-RIGHT</em> extends the highlighted region to the next label.
++ <p><em>SHIFT-CTRL-RIGHT</em> extends the highlighted region to the next label.
+
+-<p>Manually hitting the label button or <em>l</em> key over and over again
++ <p>Manually hitting the label button or <em>l</em> key over and over again
+ to delete a series of labels can get tedious. For deleting a set of
+ labels, first highlight a region and second use the <em>Edit-&gt;Clear
+ labels</em> function. If in/out points exist, the labels between the
+ in/out points are cleared and the highlighted region ignored.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>,
+-Next:<a rel=next accesskey=n href="#NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES</a>,
+-Previous:<a rel=previous accesskey=p href="#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>,
+-Up:<a rel=up accesskey=u href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
++Next:<a rel="next" accesskey="n" href="#NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES</a>,
++Previous:<a rel="previous" accesskey="p" href="#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW</a>,
++Up:<a rel="up" accesskey="u" href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
+ <br>
++</div>
+
+-<h3>NAVIGATING THE VIEWER AND COMPOSITOR</h3>
++<h3 class="section">NAVIGATING THE VIEWER AND COMPOSITOR</h3>
+
+-<p>The navigation features of the Viewer and Compositor behave very
++ <p>The navigation features of the Viewer and Compositor behave very
+ similarly. Each has a timebar and slider below the video output. The
+ timebar and slider are critical for navigation.
+
+ <br><p>
+-<img src="timebarslider.png" alt="timebarslider.png">
++ <img src="timebarslider.png" alt="timebarslider.png">
+
+-<p>The timebar represents the entire time covered by the program. When
++ <p>The timebar represents the entire time covered by the program. When
+ you define labels and in/out points it defines those, too. Finally the
+ timebar defines a region known as the <em>preview region</em>.
+
+-<p>The <em>preview region</em> is the region of the timeline which the
++ <p>The <em>preview region</em> is the region of the timeline which the
+ slider effects. The slider only covers the time covered by the preview
+ region. By using a preview region inside the entire program and using
+ the slider inside the preview region you can quickly and precisely seek
+ in the compositor and viewer.
+
+-<p>When you replace the current project with a file the preview region
++ <p>When you replace the current project with a file the preview region
+ automatically resizes to cover the entire file. When you append data
+ or change the size of the current project, the preview region stays the
+ same size and shrinks. Therefore, you need to resize the preview
+ region.
+
+-<p>Load a file and then slide around it using the compositor slider. The
++ <p>Load a file and then slide around it using the compositor slider. The
+ insertion point in the main window follows the compositor. Move the
+ pointer over the compositor's timebar until it turns into a left resize
+ pointer. The click and drag right. The preview region should have
+ changed and the slider resized proportionally.
+
+-<p>Go to the right of the timebar until a right resize pointer appears.
++ <p>Go to the right of the timebar until a right resize pointer appears.
+ Drag left so the preview region shrinks.
+
+-<p>Go to the center of the preview region in the timebar and drag it
++ <p>Go to the center of the preview region in the timebar and drag it
+ around to convince yourself if can be moved.
+
+ <br><p>
+-<img src="previewregion.png" alt="previewregion.png">
++ <img src="previewregion.png" alt="previewregion.png">
+
+-<p><em>Preview region in compositor</em>
++ <p><em>Preview region in compositor</em>
+
+-<p>If you go to the slider and slide it around with the preview region
++ <p>If you go to the slider and slide it around with the preview region
+ shrunk, you'll see the slider only affects the preview region. The
+ timebar and slider in the viewer window work exactly the same.
+
+-<p>Labels and in/out points are fully supported in the viewer and
++ <p>Labels and in/out points are fully supported in the viewer and
+ compositor. The only difference between the viewer and compositor is
+ the compositor reflects the state of the program while the viewer
+ reflects the state of a clip but not the program.
+
+-<p>When you hit the <em>label button</em> in the compositor, the label
++ <p>When you hit the <em>label button</em> in the compositor, the label
+ appears both in the compositor timebar and the program timebar.
+
+-<p>When you select a label or in/out point in the compositor, the program
++ <p>When you select a label or in/out point in the compositor, the program
+ window jumps to that position.
+
+ <br><p>
+-<img src="viewer_labels.png" alt="viewer_labels.png"> <em>Labels and in/out points in the viewer</em>.
++ <img src="viewer_labels.png" alt="viewer_labels.png"> <em>Labels and in/out points in the viewer</em>.
+
+-<p>In the viewer and compositor, labels and in/out points are displayed in
++ <p>In the viewer and compositor, labels and in/out points are displayed in
+ the timebar. Instead of displaying just a region of the program, the
+ timebar displays the entire program here.
+
+-<p>Like the Program window, the Compositor has a zoom capability. First,
++ <p>Like the Program window, the Compositor has a zoom capability. First,
+ the pulldown menu on the bottom of the compositor window has a number
+ of zoom options. When set to <em>Auto</em> the video is zoomed to match
+ the compositor window size as closely as possible. When set to any
+@@ -1871,73 +1918,77 @@
+ <em>middle mouse button</em> dragging in the video output scans around
+ it. This is exactly when The Gimp does.
+
+-<p>Furthermore, the zoom <img src="magnify.png" alt="magnify.png"> toggle causes the Compositor
++ <p>Furthermore, the zoom <img src="magnify.png" alt="magnify.png"> toggle causes the Compositor
+ window to enter zoom mode. In zoom mode, clicking in the video output
+ zooms in while <em>ctrl-clicking</em> in the video output zooms out. If
+ you have a wheel mouse, rotating the wheel zooms in or out too.
+
+-<p>Zooming in or out with the zoom tool does not change the rendered
++ <p>Zooming in or out with the zoom tool does not change the rendered
+ output, mind you. It's merely for scrutinizing video or fitting it in
+ the desktop.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES</a>,
+-Next:<a rel=next accesskey=n href="#USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS</a>,
+-Previous:<a rel=previous accesskey=p href="#NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>,
+-Up:<a rel=up accesskey=u href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
++Next:<a rel="next" accesskey="n" href="#USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS</a>,
++Previous:<a rel="previous" accesskey="p" href="#NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>,
++Up:<a rel="up" accesskey="u" href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
+ <br>
++</div>
+
+-<h3>NAVIGATING THE RESOURCES</h3>
++<h3 class="section">NAVIGATING THE RESOURCES</h3>
+
+-<p>The resource window is divided into two areas. One area lists folders
++ <p>The resource window is divided into two areas. One area lists folders
+ and another area lists folder contents. Going into the folder list and
+ clicking on a folder updates the contents area with the contents of
+ that folder.
+
+-<p>The folder and contents can be displayed as icons or text.
++ <p>The folder and contents can be displayed as icons or text.
+
+-<p><em>Right clicking</em> in the folder or contents area brings up a menu
++ <p><em>Right clicking</em> in the folder or contents area brings up a menu
+ containing formatting options. Select <em>Display text</em> to display a
+ text listing. Select <em>Sort items</em> to sort the contents of the
+ folder alphabetically.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS</a>,
+-Next:<a rel=next accesskey=n href="#USING%20BACKGROUND%20RENDERING">USING BACKGROUND RENDERING</a>,
+-Previous:<a rel=previous accesskey=p href="#NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES</a>,
+-Up:<a rel=up accesskey=u href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
++Next:<a rel="next" accesskey="n" href="#USING%20BACKGROUND%20RENDERING">USING BACKGROUND RENDERING</a>,
++Previous:<a rel="previous" accesskey="p" href="#NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES</a>,
++Up:<a rel="up" accesskey="u" href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
+ <br>
++</div>
+
+-<h3>USING THE TRANSPORT CONTROLS</h3>
++<h3 class="section">USING THE TRANSPORT CONTROLS</h3>
+
+-<p>Transport controls are just as useful in navigation as they are in
++ <p>Transport controls are just as useful in navigation as they are in
+ playing back footage, hence they are described here. Each of the
+ Viewer, Compositor, and Program windows has a transport panel.
+
+ <br><p>
+-<img src="transport_panel.png" alt="transport_panel.png"> <em>The transport panel</em>.
++ <img src="transport_panel.png" alt="transport_panel.png"> <em>The transport panel</em>.
+
+-<p>The transport panel is controlled by the keyboard as well as the
++ <p>The transport panel is controlled by the keyboard as well as the
+ graphical interface. For each of the operations it performs, the
+ starting position is the position of the insertion point or slider.
+ The ending position is either the end or start of the timeline or the
+ end or start of the selected region if there is one.
+
+-<p>The orientation of the end or start depends on the direction of
++ <p>The orientation of the end or start depends on the direction of
+ playback. If it's forward the end position is the end of the selected
+ region. If it's backward the end position is the start of the selected
+ region.
+
+-<p>The insertion point moves to track playback. When playback stops it
++ <p>The insertion point moves to track playback. When playback stops it
+ leaves the insertion point where it stopped. Thus, by playing back you
+ change the position of the insertion point.
+
+-<p>The keyboard interface is usually the fastest and has more speeds. The
++ <p>The keyboard interface is usually the fastest and has more speeds. The
+ transport keys are arranged in a <em>T</em> on the number pad.
+
+-<ul>
++ <ul>
+
+-<li><em>+</em> Fast reverse
++ <li><em>+</em> Fast reverse
+ <li><em>6</em> Normal reverse
+ <li><em>5</em> Slow reverse
+ <li><em>4</em> Frame reverse
+@@ -1949,9 +2000,9 @@
+ <li><em>Spacebar</em> Normal forward
+ </ul>
+
+-<p>Hitting any key on the keyboard twice pauses it.
++ <p>Hitting any key on the keyboard twice pauses it.
+
+-<p>When using frame advance functions the behavior may seem odd. If you
++ <p>When using frame advance functions the behavior may seem odd. If you
+ frame advance forward and then frame advance backward, the displayed
+ frame doesn't change. This is because the playback position isn't the
+ frame but the time between two frames. The rendered frame is the area
+@@ -1959,87 +2010,91 @@
+ between two frames by one and decrement it by one, you cross the same
+ frame both times and so the same frame is displayed.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="USING%20BACKGROUND%20RENDERING">USING BACKGROUND RENDERING</a>,
+-Previous:<a rel=previous accesskey=p href="#USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS</a>,
+-Up:<a rel=up accesskey=u href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
++Previous:<a rel="previous" accesskey="p" href="#USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS</a>,
++Up:<a rel="up" accesskey="u" href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>
+ <br>
++</div>
+
+-<h3>USING BACKGROUND RENDERING</h3>
++<h3 class="section">USING BACKGROUND RENDERING</h3>
+
+-<p>Background rendering allows impossibly slow effects to play back in
++ <p>Background rendering allows impossibly slow effects to play back in
+ realtime shortly after the effect is pasted in the timeline. It
+ continuously renders temporary output. When renderfarm is enabled,
+ background rendering uses the renderfarm continuously. This way, any
+ size video can be seen in realtime merely by creating a fast enough
+ network with enough nodes.
+
+-<p>Background rendering is enabled in settings-&gt;preferences-&gt;performance.
++ <p>Background rendering is enabled in settings-&gt;preferences-&gt;performance.
+ It has one interactive function: <em>settings-&gt;set background render</em>. This
+ sets the point where background rendering begins to where the in point
+ is. If any video exists, a red bar appears in the time bar showing
+ what has been background rendered.
+
+-<p>It's often useful to insert an effect or a transition and then select
++ <p>It's often useful to insert an effect or a transition and then select
+ settings-&gt;set background render right before the effect to preview it
+ in full framerates.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="EDITING">EDITING</a>,
+-Next:<a rel=next accesskey=n href="#USING%20EFFECTS">USING EFFECTS</a>,
+-Previous:<a rel=previous accesskey=p href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#USING%20EFFECTS">USING EFFECTS</a>,
++Previous:<a rel="previous" accesskey="p" href="#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>EDITING</h2>
++<h2 class="chapter">EDITING</h2>
+
+-<p>Editing comprises both the time domain and the track domain. Since the
++ <p>Editing comprises both the time domain and the track domain. Since the
+ timeline consists of a stack of tracks, you need to worry about how to
+ sort and create tracks in addition to what time certain media appears
+ on a track.
+
+-<p>In the time domain, Cinelerra offers many ways to approach the editing
++ <p>In the time domain, Cinelerra offers many ways to approach the editing
+ process. The three main methods are two screen editing, drag and drop
+ editing, and cut and paste editing.
+
+-<p>There are several concepts Cinelerra uses when editing which apply to
++ <p>There are several concepts Cinelerra uses when editing which apply to
+ all the methods. The timeline is where all editing decisions are
+ represented. Every track on the timeline has a set of attributes on
+ the left, the most important of which is the <em>arm track</em>
+ attribute.
+
+ <br><p>
+-<img src="track_attributes.png" alt="track_attributes.png">
++ <img src="track_attributes.png" alt="track_attributes.png">
+ <em>Track attributes</em>
+
+-<p>Only the <em>armed tracks</em> are affected by editing operations. Make
++ <p>Only the <em>armed tracks</em> are affected by editing operations. Make
+ sure you have enough armed destination tracks when you paste or splice
+ material or some tracks in the material will get left out.
+
+-<p>The other attributes affect the output of the track.
++ <p>The other attributes affect the output of the track.
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ <b>Play track</b> determines whether the track is rendered or not. If
+ it's off, the track is not rendered. However, if the track is chained
+ to any other tracks, the other tracks perform all the effects in the
+ chained track, regardless of play status.
+
+-<li>
++ <li>
+ <b>Gang fader</b> causes the fader to track the movement of whatever other
+ fader you're adjusting. A fader is only ganged if the <b>arm track</b> is
+ also on. This is normally used to adjust audio levels on all the
+ tracks simultaneously.
+
+-<li>
++ <li>
+ <b>Draw data</b> determines if picons or waveforms are drawn on the
+ track. By default, some file formats load with this off while other
+ file formats load with it on. This depends on whether the file format
+ takes a long time to draw on the timeline. Merely set it to on if you
+ want to see picons for any file format.
+
+-<li>
++ <li>
+ <b>Mute track</b> causes the output to be thrown away once the track is
+ completely rendered. This happens whether or not <b>play track</b> is
+ on. If the track is part of an effect chain, the output of the effect
+@@ -2047,48 +2102,50 @@
+ back to another track. Mute track is used to keep the effect chain
+ track from overlapping the output of the source track.
+
+-</ul>
++ </ul>
+
+-<p>There are two ways to set the same attribute on multiple tracks very
++ <p>There are two ways to set the same attribute on multiple tracks very
+ quickly. Hold down <b>shift</b> while clicking a track's attribute to
+ match the same attribute in all the other tracks. If you don't want to
+ affect all the other tracks, click on an attribute and drag across
+ other tracks to have the same attribute set in them.
+
+-<p>In addition to restricting editing operations, the armed tracks in
++ <p>In addition to restricting editing operations, the armed tracks in
+ combination with the active region determine where material is inserted
+ when loading files. If the files are loaded with one of the insertion
+ strategies which doesn't delete the existing project, the armed tracks
+ will be used as destination tracks.
+
+-<p>The active region is the range of time in the edit decision on the
++ <p>The active region is the range of time in the edit decision on the
+ timeline. The active region is determined first by the presence of
+ in/out points in the timeline. If those don't exist the highlighted
+ region is used. If no highlighted region exists the insertion point is
+ used as the active region and the active length is 0.
+
+-<p>Finally, editing decisions never affect source material. Editing only affects
++ <p>Finally, editing decisions never affect source material. Editing only affects
+ pointers to source material, so if you want to have a media file at the
+ end of your editing session which represents the editing decisions, you
+ need to <em>render</em> it. See <a href="#RENDERING%20FILES">RENDERING FILES</a>.
+
+-<ul>
+-<li><a accesskey=1 href="#MANIPULATING%20TRACKS">MANIPULATING TRACKS</a>:
+-<li><a accesskey=2 href="#TWO%20SCREEN%20EDITING">TWO SCREEN EDITING</a>:
+-<li><a accesskey=3 href="#DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING</a>:
+-<li><a accesskey=4 href="#CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING</a>:
+-<li><a accesskey=5 href="#TRIMMING">TRIMMING</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#MANIPULATING%20TRACKS">MANIPULATING TRACKS</a>:
++<li><a accesskey="2" href="#TWO%20SCREEN%20EDITING">TWO SCREEN EDITING</a>:
++<li><a accesskey="3" href="#DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING</a>:
++<li><a accesskey="4" href="#CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING</a>:
++<li><a accesskey="5" href="#TRIMMING">TRIMMING</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="MANIPULATING%20TRACKS">MANIPULATING TRACKS</a>,
+-Next:<a rel=next accesskey=n href="#TWO%20SCREEN%20EDITING">TWO SCREEN EDITING</a>,
+-Up:<a rel=up accesskey=u href="#EDITING">EDITING</a>
++Next:<a rel="next" accesskey="n" href="#TWO%20SCREEN%20EDITING">TWO SCREEN EDITING</a>,
++Up:<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
+ <br>
++</div>
+
+-<h3>MANIPULATING TRACKS</h3>
++<h3 class="section">MANIPULATING TRACKS</h3>
+
+-<p>Tracks in Cinelerra either contain audio or video. There is no special
++ <p>Tracks in Cinelerra either contain audio or video. There is no special
+ designation for tracks other than the type of media they contain. When
+ you create a new project, it contains a certain mumber of default
+ tracks. You can still add or delete tracks from a number of menus.
+@@ -2096,24 +2153,24 @@
+ multiple tracks simultaneously. Each track itself has a popup menu
+ which affects one track.
+
+-<p>Bring up the popup menu by moving over a track and right clicking. The
++ <p>Bring up the popup menu by moving over a track and right clicking. The
+ popup menu affects the track whether it's armed or not.
+
+-<p><em>Move up</em> and <em>move down</em> moves the one track up or down in
++ <p><em>Move up</em> and <em>move down</em> moves the one track up or down in
+ the stack. <em>Delete track</em> deletes the track.
+
+-<p>Operations in the <em>Tracks</em> menu affect only tracks which are
++ <p>Operations in the <em>Tracks</em> menu affect only tracks which are
+ armed.
+
+-<p><em>Move tracks up</em> and <em>Move tracks down</em> shift all the armed
++ <p><em>Move tracks up</em> and <em>Move tracks down</em> shift all the armed
+ tracks up or down the stack.
+
+-<p><em>Delete tracks</em> deletes the armed tracks.
++ <p><em>Delete tracks</em> deletes the armed tracks.
+
+-<p><em>Delete last track</em> deletes the last track, whether it's armed or
++ <p><em>Delete last track</em> deletes the last track, whether it's armed or
+ not. Holding down the <em>d</em> key quickly deletes all the tracks.
+
+-<p><em>Concatenate tracks</em> is more complicated. It takes every
++ <p><em>Concatenate tracks</em> is more complicated. It takes every
+ <em>playable</em> track and concatenates it to the end of the first
+ <em>armed tracks</em>. If there are two armed tracks followed by two
+ playable tracks, the concatenate operation puts the two playable tracks
+@@ -2122,7 +2179,7 @@
+ put on the end of the first armed track. The destination track wraps
+ around until all the playable tracks are concatenated.
+
+-<p>Finally, you'll want to create new tracks. The <em>Audio</em> and
++ <p>Finally, you'll want to create new tracks. The <em>Audio</em> and
+ <em>Video</em> menus each contain an option to add a track of their
+ specific type. In the case of audio, the new track is put on the
+ bottom of the timeline and the output channel of the audio track is
+@@ -2130,22 +2187,24 @@
+ top of the timeline. This way, video has a natural compositing order.
+ New video tracks are overlayed on top of old tracks.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="TWO%20SCREEN%20EDITING">TWO SCREEN EDITING</a>,
+-Next:<a rel=next accesskey=n href="#DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING</a>,
+-Previous:<a rel=previous accesskey=p href="#MANIPULATING%20TRACKS">MANIPULATING TRACKS</a>,
+-Up:<a rel=up accesskey=u href="#EDITING">EDITING</a>
++Next:<a rel="next" accesskey="n" href="#DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING</a>,
++Previous:<a rel="previous" accesskey="p" href="#MANIPULATING%20TRACKS">MANIPULATING TRACKS</a>,
++Up:<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
+ <br>
++</div>
+
+-<h3>TWO SCREEN EDITING</h3>
++<h3 class="section">TWO SCREEN EDITING</h3>
+
+-<p>This is the fastest way to construct a program out of movie files. The
++ <p>This is the fastest way to construct a program out of movie files. The
+ idea consists of viewing a movie file in one window and viewing the
+ program in another window. Sections of the movie file are defined in
+ one window and transferred to the end of the program in the other
+ window.
+
+-<p>The way to begin a two screen editing session is to load some
++ <p>The way to begin a two screen editing session is to load some
+ resources. In <em>file-&gt;load</em> load some movies with the insertion
+ mode <em>create new resources</em>. You want the timeline to stay
+ unchanged while new resources are brought in. Go to the Resource
+@@ -2153,24 +2212,24 @@
+ should appear. Drag a resource from the media side of the window over
+ the Viewer window.
+
+-<p>There should be enough armed tracks on the timeline to put the sections
++ <p>There should be enough armed tracks on the timeline to put the sections
+ of source material that you want. If there aren't, create new tracks
+ or arm more tracks.
+
+-<p>In the viewer window seek to the starting point of a clip you want to
++ <p>In the viewer window seek to the starting point of a clip you want to
+ use. Use either the <em>slider</em> or the <em>transport controls</em>.
+ Use the <em>preview region</em> to narrow down the search. Set the
+ starting point with the <img src="in_point_button.png" alt="in_point_button.png"> <em>in point button</em>.
+
+-<p>Seek to the ending point of the clip you want to use. Set the ending
++ <p>Seek to the ending point of the clip you want to use. Set the ending
+ point with the <img src="out_point_button.png" alt="out_point_button.png"> <em>out point button</em>. The
+ two points should now appear on the timebar and define a clip.
+
+-<p>There are several things you can do with the clip now.
++ <p>There are several things you can do with the clip now.
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ Splice <img src="splice_button.png" alt="splice_button.png"> inserts the clip in the timeline, pushing
+ everything back. If an <em>in point</em> or <em>out point</em> exists on
+ the timeline it's inserted there, otherwise it's inserted after the
+@@ -2179,7 +2238,7 @@
+ used as the next splice location. This way you can continuously build
+ up the program by splicing.
+
+-<li>
++ <li>
+ Overwrite <img src="overwrite_button.png" alt="overwrite_button.png"> overwrites the region of the
+ timeline with the clip. If an <em>in point</em> or <em>out point</em>
+ exists on the timeline it's overwritten there, otherwise it's
+@@ -2187,46 +2246,48 @@
+ both in and out points exist the difference between the active region
+ and the clip length is deleted.
+
+-<li>
++ <li>
+ Create a clip <img src="toclip_button.png" alt="toclip_button.png"> generates a new clip for the
+ resource window containing the affected region but doesn't change the
+ timeline. Every clip has a title and a description. These are
+ optional.
+
+-<li>
++ <li>
+ Copy behaves the same as in cut and paste editing.
+
+-</ul>
++ </ul>
+
+-<p>Two screen editing can be done purely by keybard shortcuts. When you
++ <p>Two screen editing can be done purely by keybard shortcuts. When you
+ move the pointer over any button a tooltip should appear, showing what
+ key is bound to that button. In the Viewer window, the number pad keys
+ control the transport and the <em>[ ] v</em> keys perform in/out points
+ and splicing.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING</a>,
+-Next:<a rel=next accesskey=n href="#CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING</a>,
+-Previous:<a rel=previous accesskey=p href="#TWO%20SCREEN%20EDITING">TWO SCREEN EDITING</a>,
+-Up:<a rel=up accesskey=u href="#EDITING">EDITING</a>
++Next:<a rel="next" accesskey="n" href="#CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING</a>,
++Previous:<a rel="previous" accesskey="p" href="#TWO%20SCREEN%20EDITING">TWO SCREEN EDITING</a>,
++Up:<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
+ <br>
++</div>
+
+-<h3>DRAG AND DROP EDITING</h3>
++<h3 class="section">DRAG AND DROP EDITING</h3>
+
+-<p>The answer is yes, you can you create a bunch of clips and drag them on
++ <p>The answer is yes, you can you create a bunch of clips and drag them on
+ the timeline. You can also drag edits around the timeline.
+
+-<p>Load some files using <em>file-&gt;load</em>. Set the insertion mode to
++ <p>Load some files using <em>file-&gt;load</em>. Set the insertion mode to
+ <em>Create new resources</em>. This loads the files into the Resource
+ Window. Create some audio and video tracks on the timeline using the
+ video and audio menus.
+
+-<p>Open the <em>Media</em> folder in the resource window. Drag a media file
++ <p>Open the <em>Media</em> folder in the resource window. Drag a media file
+ from the resource window to the timeline. If the media has video, drag
+ it onto a video track. If the media is pure audio, drag it onto an
+ audio track.
+
+-<p>Cinelerra fills out the audio and video tracks below the dragging
++ <p>Cinelerra fills out the audio and video tracks below the dragging
+ cursor with data from the file. This affects what tracks you should
+ create initially and which track to drag the media onto. If the media
+ has one video track and two audio tracks, you'll need one video track
+@@ -2235,84 +2296,86 @@
+ one audio track on the timeline for every audio track in the media and
+ the media should be dragged over the first audio track.
+
+-<p>When dragging, the media snaps to the start of track if the track is
++ <p>When dragging, the media snaps to the start of track if the track is
+ empty. If there are edits on the track, the media snaps to the nearest
+ edit boundary.
+
+-<p>You can also drag multiple files from the resource window. Either draw
++ <p>You can also drag multiple files from the resource window. Either draw
+ a box around the files, use SHIFT, or use CTRL when selecting files.
+ When you drop the files in the timeline, they are concatenated. The
+ behavior of SHIFT and CTRL changes depending on if the resources are in
+ text or icons.
+
+-<p>To display the resources as text or icons, right click inside the media
++ <p>To display the resources as text or icons, right click inside the media
+ list. Select either <em>display icons</em> or <em>display text</em> to
+ change the list format.
+
+-<p>When displaying text in the resource window <em>SHIFT-clicking</em> on
++ <p>When displaying text in the resource window <em>SHIFT-clicking</em> on
+ media files extends the number of highlighted selections.
+ <em>CTRL-clicking</em> on media files in text mode selects additional
+ files one at a time.
+
+-<p>When displaying icons in the resource window <em>SHIFT-clicking</em> or
++ <p>When displaying icons in the resource window <em>SHIFT-clicking</em> or
+ <em>CTRL-clicking</em> selects media files one at a time.
+
+-<p>In addition to dragging media files, if you create clips and open the
++ <p>In addition to dragging media files, if you create clips and open the
+ <em>clip</em> folder you can drag clips on the timeline.
+
+-<p>In the timeline there is further dragging functionality. To enable the
++ <p>In the timeline there is further dragging functionality. To enable the
+ dragging functionality of the timeline, select the arrow toggle
+ <img src="arrow.png" alt="arrow.png">. Move over an edit and drag it. If more than one
+ track is armed, Cinelerra will drag any edits which start on the same
+ position as the edit the cursur is currently over. During a dragging
+ operation the edit snaps to the nearest boundary.
+
+-<p>Dragging edits around the timeline allows you to sort music playlists,
++ <p>Dragging edits around the timeline allows you to sort music playlists,
+ sort movie scenes, and give better NAB demos but not much else.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING</a>,
+-Next:<a rel=next accesskey=n href="#TRIMMING">TRIMMING</a>,
+-Previous:<a rel=previous accesskey=p href="#DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING</a>,
+-Up:<a rel=up accesskey=u href="#EDITING">EDITING</a>
++Next:<a rel="next" accesskey="n" href="#TRIMMING">TRIMMING</a>,
++Previous:<a rel="previous" accesskey="p" href="#DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING</a>,
++Up:<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
+ <br>
++</div>
+
+-<h3>CUT AND PASTE EDITING</h3>
++<h3 class="section">CUT AND PASTE EDITING</h3>
+
+-<p>This is the traditional method of editing in audio editors. In the
++ <p>This is the traditional method of editing in audio editors. In the
+ case of Cinelerra, you either need to start a second copy of Cinelerra
+ and copy from one copy to the other, copy from different tracks in the
+ same copy, or load a media file into the Viewer and copy from there.
+
+-<p>Load some files onto the timeline. To perform cut and paste editing
++ <p>Load some files onto the timeline. To perform cut and paste editing
+ select the <img src="ibeam.png" alt="ibeam.png"> i-beam toggle. Select a region of the
+ timeline and select the <img src="cut.png" alt="cut.png"> cut button to cut it. Move the
+ insertion point to another point in the timeline and select the
+ <img src="paste.png" alt="paste.png"> paste button. Assuming no in/out points are defined on
+ the timeline this performs a cut and paste operation.
+
+-<p>If in/out points are defined, the insertion point and highlighted
++ <p>If in/out points are defined, the insertion point and highlighted
+ region are overridden by the in/out points for clipboard operations.
+ Thus, with in/out points you can perform cut and paste in drag and drop
+ mode as well as cut and paste mode.
+
+-<p>When editing audio, it is customary to cut from one part of a waveform
++ <p>When editing audio, it is customary to cut from one part of a waveform
+ into the same part of another waveform. The start and stop points of
+ the cut are identical in each waveform and might be offset slightly,
+ while the wave data is different. It would be very hard to highlight
+ one waveform to cut it and highlight the second waveform to paste it
+ without changing the relative start and stop positions.
+
+-<p>One option for simplifying this is to open a second copy of Cinelerra,
++ <p>One option for simplifying this is to open a second copy of Cinelerra,
+ cutting and pasting to transport media between the two copies. This
+ way two highlighed regions can exist simultanously.
+
+-<p>Another option is to set in/out points for the source region of the
++ <p>Another option is to set in/out points for the source region of the
+ source waveform and set labels for the destination region of the
+ destination waveform. Perform a cut, clear the in/out points, select
+ the region between the labels, and perform a paste.
+
+-<p>A final operation in cut and paste editing is the <em>edit-&gt;clear</em>
++ <p>A final operation in cut and paste editing is the <em>edit-&gt;clear</em>
+ operation. If a region is highlighted or in/out points exist, the
+ affected region is cleared by <em>edit-&gt;clear</em>. But if the insertion
+ point is over an edit boundary and the edits on each side of the edit
+@@ -2321,15 +2384,17 @@
+ the first edit and the end of this one edit is the end of the second
+ edit. This either results in the edit expanding or shrinking.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="TRIMMING">TRIMMING</a>,
+-Previous:<a rel=previous accesskey=p href="#CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING</a>,
+-Up:<a rel=up accesskey=u href="#EDITING">EDITING</a>
++Previous:<a rel="previous" accesskey="p" href="#CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING</a>,
++Up:<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
+ <br>
++</div>
+
+-<h3>TRIMMING</h3>
++<h3 class="section">TRIMMING</h3>
+
+-<p>With some edits on the timeline it's possible to do trimming. By
++ <p>With some edits on the timeline it's possible to do trimming. By
+ trimming you shrink or grow the edit boundaries by dragging them. In
+ either drag and drop mode or cut and paste mode, move the cursor over
+ an edit boundary until it changes shape. The cursor will either be an
+@@ -2337,16 +2402,16 @@
+ dragging operation affects the beginning of the edit. If the cursor is
+ an expand right, the dragging operation affects the end of the edit.
+
+-<p>When you click on an edit boundary to start dragging, the mouse button
++ <p>When you click on an edit boundary to start dragging, the mouse button
+ number determines which dragging behavior is going to be followed. 3
+ possible behaviors are bound to mouse buttons in the interface
+ preferences. See <a href="#INTERFACE">INTERFACE</a>.
+
+-<p>The effect of each drag operation not only depends on the behavior
++ <p>The effect of each drag operation not only depends on the behavior
+ button but whether the beginning or end of the edit is being dragged.
+ When you release the mouse button, the trimming operation is performed.
+
+-<p>In a <em>Drag all following edits</em> operation, the beginning of the
++ <p>In a <em>Drag all following edits</em> operation, the beginning of the
+ edit either cuts data from the edit if you move it forward or pastes
+ new data from before the edit if you move it backward. The end of the
+ edit pastes data into the edit if you move it forward or cuts data from
+@@ -2354,85 +2419,89 @@
+ shift. Finally, if you drag the end of the edit past the start of the
+ edit, the edit is deleted.
+
+-<p>In a <em>Drag only one edit</em> operation, the behavior is the same when
++ <p>In a <em>Drag only one edit</em> operation, the behavior is the same when
+ you drag the beginning or end of an edit. The only difference is none
+ of the other edits in the track shift. Instead, anything adjacent to
+ the current edit expands or shrinks to fill gaps left by the drag
+ operation.
+
+-<p>In a <em>Drag source only</em> operation, nothing is cut or pasted. If
++ <p>In a <em>Drag source only</em> operation, nothing is cut or pasted. If
+ you move the beginning or end of the edit forward, the source reference
+ in the edit shifts forward. If you move the beginning or end of the
+ edit backward, the source reference shifts backward. Where the edit
+ appears in the timeline remains the same but the source shifts.
+
+-<p>For all file formats besides still images, the extent of the trimming
++ <p>For all file formats besides still images, the extent of the trimming
+ operation is clamped to the source file length. Attempting to drag the
+ start of the edit beyond the start of the source clamps it to the
+ source start.
+
+-<p>In all trimming operations, all edits which start on the same position
++ <p>In all trimming operations, all edits which start on the same position
+ as the cursor when the drag operation begins are affected. Unarm
+ tracks to prevent edits from getting affected.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="USING%20EFFECTS">USING EFFECTS</a>,
+-Next:<a rel=next accesskey=n href="#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>,
+-Previous:<a rel=previous accesskey=p href="#EDITING">EDITING</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>,
++Previous:<a rel="previous" accesskey="p" href="#EDITING">EDITING</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>USING EFFECTS</h2>
++<h2 class="chapter">USING EFFECTS</h2>
+
+-<p>It would be sufficient to perform all changes to the timeline using
++ <p>It would be sufficient to perform all changes to the timeline using
+ editing operations, but this isn't very extensible. Certain timeline
+ changes should produce a different effect in the output without
+ involving a unique procedure to apply each change. This is why we have
+ effects.
+
+-<p>Effects fall into three categories, and each effect in a category is
++ <p>Effects fall into three categories, and each effect in a category is
+ applied using the same procedure.
+
+-<ul>
+-<li><a accesskey=1 href="#REALTIME%20EFFECTS">REALTIME EFFECTS</a>:
+-<li><a accesskey=2 href="#RENDERED%20EFFECTS">RENDERED EFFECTS</a>:
+-<li><a accesskey=3 href="#TRANSITIONS">TRANSITIONS</a>:
+-<li><a accesskey=4 href="#LADSPA%20EFFECTS">LADSPA EFFECTS</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#REALTIME%20EFFECTS">REALTIME EFFECTS</a>:
++<li><a accesskey="2" href="#RENDERED%20EFFECTS">RENDERED EFFECTS</a>:
++<li><a accesskey="3" href="#TRANSITIONS">TRANSITIONS</a>:
++<li><a accesskey="4" href="#LADSPA%20EFFECTS">LADSPA EFFECTS</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="REALTIME%20EFFECTS">REALTIME EFFECTS</a>,
+-Next:<a rel=next accesskey=n href="#RENDERED%20EFFECTS">RENDERED EFFECTS</a>,
+-Up:<a rel=up accesskey=u href="#USING%20EFFECTS">USING EFFECTS</a>
++Next:<a rel="next" accesskey="n" href="#RENDERED%20EFFECTS">RENDERED EFFECTS</a>,
++Up:<a rel="up" accesskey="u" href="#USING%20EFFECTS">USING EFFECTS</a>
+ <br>
++</div>
+
+-<h3>REALTIME EFFECTS</h3>
++<h3 class="section">REALTIME EFFECTS</h3>
+
+-<p>These are layered under the track they apply to. They process the
++ <p>These are layered under the track they apply to. They process the
+ track when the track is played back, with no permanent storage of the
+ output except when the project is rendered.
+
+-<p>All the realtime effects are listed in the resource window, divided
++ <p>All the realtime effects are listed in the resource window, divided
+ into two groups: audio effects and video effects. Audio effects should
+ be dragged from the resource window onto audio tracks. Video effects
+ should be dragged onto video tracks.
+
+-<p>If there is data on the destination track, the effect is applied to the
++ <p>If there is data on the destination track, the effect is applied to the
+ entire track. If there is no data on the track the effect is deleted.
+ Finally, if a region of the track is selected the effect is pasted into
+ the region, regardless of whether there is data.
+
+-<p>Some of the effects don't process data but synthesize data. In the
++ <p>Some of the effects don't process data but synthesize data. In the
+ case of a synthesis effect, you'll want to select a region of the
+ track so the dragging operation pastes it without deleting it.
+
+-<p>When dragging more than one effect onto a track, you'll see the effects
++ <p>When dragging more than one effect onto a track, you'll see the effects
+ layering from top to bottom, on the bottom of the track. When the
+ track is played back, effects are processed from top to bottom. The
+ output of the top effect becomes the input of the bottom effect and so
+ on and so forth.
+
+-<p>In addition to dragging from the resource window, effects may be
++ <p>In addition to dragging from the resource window, effects may be
+ applied to a track by a popup menu. Right click on a track and select
+ <em>Attach effect</em> from the popup. The attach effect dialog gives
+ you more control than pure dragging and dropping. For one thing, the
+@@ -2442,7 +2511,7 @@
+ The effect is the same as if the effect was dragged from the resource
+ window.
+
+-<p>When an effect exists under a track, it most often needs to be
++ <p>When an effect exists under a track, it most often needs to be
+ configured. Go to the effect and right click on it to bring up the
+ effect popup. In the effect popup is a <em>show</em> option. The show
+ option causes the GUI for the effect to appear under the cursor. Most
+@@ -2451,39 +2520,41 @@
+ tweek parameters in the effect GUI, the parameters normally effect the
+ entire duration of the effect.
+
+-<ul>
+-<li><a accesskey=1 href="#REALTIME%20EFFECT%20TYPES">REALTIME EFFECT TYPES</a>:
+-<li><a accesskey=2 href="#EDITING%20REALTIME%20EFFECTS">EDITING REALTIME EFFECTS</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#REALTIME%20EFFECT%20TYPES">REALTIME EFFECT TYPES</a>:
++<li><a accesskey="2" href="#EDITING%20REALTIME%20EFFECTS">EDITING REALTIME EFFECTS</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="REALTIME%20EFFECT%20TYPES">REALTIME EFFECT TYPES</a>,
+-Next:<a rel=next accesskey=n href="#EDITING%20REALTIME%20EFFECTS">EDITING REALTIME EFFECTS</a>,
+-Up:<a rel=up accesskey=u href="#REALTIME%20EFFECTS">REALTIME EFFECTS</a>
++Next:<a rel="next" accesskey="n" href="#EDITING%20REALTIME%20EFFECTS">EDITING REALTIME EFFECTS</a>,
++Up:<a rel="up" accesskey="u" href="#REALTIME%20EFFECTS">REALTIME EFFECTS</a>
+ <br>
++</div>
+
+-<h4>REALTIME EFFECT TYPES</h4>
++<h4 class="subsection">REALTIME EFFECT TYPES</h4>
+
+-<p>The two other effect types supported by the Attach Effect dialog are
++ <p>The two other effect types supported by the Attach Effect dialog are
+ recycled effects. In order to use a recycled effect, three requiremenets
+ must be met:
+
+-<ul>
++ <ul>
+
+-<li>There must be other effects in the timeline.
++ <li>There must be other effects in the timeline.
+
+-<li>
++ <li>
+ The other effects must be of the same type as the track you're
+ attaching an effect to. If the track is an audio track, the effects
+ must be audio effects. If the track is a video track, the effects must
+ be video effects.
+
+-<li>
++ <li>
+ The insertion point or selected region must start inside the other effects.
+
+-</ul>
++ </ul>
+
+-<p>In the case of a shared effect, these conditions must be true. In the
++ <p>In the case of a shared effect, these conditions must be true. In the
+ case of a shared track, there merely must be another track on the
+ timeline of the same type as the track you're applying an effect to.
+ If you right clicked on a video track to attach an effect, there won't
+@@ -2491,19 +2562,19 @@
+ exists. If you right clicked on an audio track there won't be anything
+ in the shared track column if no other audio track exists.
+
+-<p>If shared effects or shared tracks are available, they appear in the
++ <p>If shared effects or shared tracks are available, they appear in the
+ <em>shared effects</em> and <em>shared tracks</em> columns. The
+ <em>attach</em> button under each column causes anything highlighted in
+ the column to be attached under the current track.
+
+-<p>Shared effects and shared tracks allow very unique things to be done.
++ <p>Shared effects and shared tracks allow very unique things to be done.
+ In the case of a shared effect, the shared effect is treated like a
+ copy of the original effect except in the shared effect the GUI can't
+ be brought up. All configuration of the shared effect is determined by
+ the GUI of the original effect and only the GUI of the original effect
+ can be brought up.
+
+-<p>When a shared effect is played back, it's processed just like a normal
++ <p>When a shared effect is played back, it's processed just like a normal
+ effect except the configuration is copied from the original effect.
+ Some effects detect when they are being shared, like the reverb effects
+ and the compressor. These effects determine what tracks are sharing
+@@ -2511,7 +2582,7 @@
+ some value. The reverb mixes tracks together to simulate ambience.
+ The compressor uses one of the sharing tracks as the trigger.
+
+-<p>When an original track has a <em>shared track</em> as one of its effects,
++ <p>When an original track has a <em>shared track</em> as one of its effects,
+ the shared track itself is used as a realtime effect. This is more
+ commonly known as <em>bouncing tracks</em> but Cinelerra achieves the
+ same operation by attaching shared tracks. The fade and any effects in
+@@ -2519,7 +2590,7 @@
+ track has processed the data, the original track performs any effects
+ which come below the shared track and then composites it on the output.
+
+-<p>In addition, once the shared track has processed the output of the
++ <p>In addition, once the shared track has processed the output of the
+ original track like a realtime effect, the shared track mixes itself
+ into the output with it's settings for pan, mode, and projector. Thus,
+ two tracks are mixing the same data on the output. Most of the time
+@@ -2529,7 +2600,7 @@
+ <img src="mutepatch_up.png" alt="mutepatch_up.png"> mute toggle next to each track for whom you don't
+ want to mix on the output.
+
+-<p>Suppose you were making video and you did want the shared track to
++ <p>Suppose you were making video and you did want the shared track to
+ composite the original track's data on the output a second time. In
+ the case of video, the video from the shared track would always appear
+ under the video from the original track, regardless of whether it was
+@@ -2537,159 +2608,165 @@
+ composited in order of their attachment. Since it's part of the original
+ track it has to be composited before the original track is composited.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="EDITING%20REALTIME%20EFFECTS">EDITING REALTIME EFFECTS</a>,
+-Previous:<a rel=previous accesskey=p href="#REALTIME%20EFFECT%20TYPES">REALTIME EFFECT TYPES</a>,
+-Up:<a rel=up accesskey=u href="#REALTIME%20EFFECTS">REALTIME EFFECTS</a>
++Previous:<a rel="previous" accesskey="p" href="#REALTIME%20EFFECT%20TYPES">REALTIME EFFECT TYPES</a>,
++Up:<a rel="up" accesskey="u" href="#REALTIME%20EFFECTS">REALTIME EFFECTS</a>
+ <br>
++</div>
+
+-<h4>EDITING REALTIME EFFECTS</h4>
++<h4 class="subsection">EDITING REALTIME EFFECTS</h4>
+
+-<p>Many operations exist for manipulating effects once they are in the
++ <p>Many operations exist for manipulating effects once they are in the
+ timeline. Because mixing effects and media is such complex business,
+ the methods used in editing effects aren't as concise as cutting and
+ pasting. Some of the editing happens by dragging in/out points, some
+ of the editing happens through popup menus, and some of it happens by
+ dragging effects.
+
+-<p>Normally when you edit tracks, the effects follow the editing
++ <p>Normally when you edit tracks, the effects follow the editing
+ decisions. If you cut from a track, the effect shrinks. If you drag
+ edit in/out points, the effect changes length. This behavior can be
+ disabled by selecting <em>Settings-&gt;edit effects</em> in the project
+ window. This decouples effects from editing operations, but what if
+ you just want to edit the effects?
+
+-<p>Move the timeline cursor over the effect borders until it changes to a
++ <p>Move the timeline cursor over the effect borders until it changes to a
+ resize left or resize right icon. In this state, if you drag the end
+ of the effect, it performs an edit just like dragging the end of a
+ track does.
+
+-<p>The three editing behaviors of track trimming apply to effect trimming
++ <p>The three editing behaviors of track trimming apply to effect trimming
+ and they are bound to the mouse buttons that you set in <em>interface
+ preferences</em>. See <a href="#INTERFACE">INTERFACE</a>. When you perform a trim edit on an
+ effect, the effect boundary is moved by dragging on it. Unlike track
+ editing, the effect has no source length. You can extend the end of an
+ effect as much as desired without being limited.
+
+-<p>Also unlike track editing, the starting position of the drag operation
++ <p>Also unlike track editing, the starting position of the drag operation
+ doesn't bind the edit decision to media. The media the effect is bound
+ to doesn't follow effect edits. Other effects; however, do follow
+ editing decisions made on an effect. If you drag the end of an effect
+ which is lined up to effects on other tracks, the effects on the other
+ tracks will be edited while the media stays the same.
+
+-<p>What happens if you trim the end of an effect in, leaving a lot of
++ <p>What happens if you trim the end of an effect in, leaving a lot of
+ unaffected time near the end of the track? When you drag an effect in
+ from the Resource Window you can insert the effect in the portion of
+ the row unoccupied by the trimming operation. Realtime effects are
+ organized into rows under the track. Each row can have multiple
+ effects.
+
+-<p>In addition to trimming, you can move effects up or down. Every track
++ <p>In addition to trimming, you can move effects up or down. Every track
+ can have a stack of effects under it. By moving an effect up or down
+ you change the order in which effects are processed in the stack. Go
+ to an effect and right click to bring up the effect menu. The
+ <em>Move up</em> and <em>Move down</em> options move the effect up or down.
+
+-<p>When you're moving effects up or down, be aware that if they're shared
++ <p>When you're moving effects up or down, be aware that if they're shared
+ as <em>shared effects</em>, any references will be pointing to a
+ different effect after the move operation.
+
+-<p>Finally, there's dragging of effects. Dragging effects works just like
++ <p>Finally, there's dragging of effects. Dragging effects works just like
+ dragging edits. You must select the <img src="arrow.png" alt="arrow.png"> arrow to enter drag and
+ drop mode before dragging effects. The effects snap to media
+ boundaries, effect boundaries, and tracks. Be aware if you drag a
+ reference to a shared effect, the reference will usually point to the
+ wrong effect afterwards.
+
+-<p>Right click on an effect to bring up a menu for the effect. Select
++ <p>Right click on an effect to bring up a menu for the effect. Select
+ <em>attach...</em> to change the effect or change the reference if it is
+ a shared effect.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="RENDERED%20EFFECTS">RENDERED EFFECTS</a>,
+-Next:<a rel=next accesskey=n href="#TRANSITIONS">TRANSITIONS</a>,
+-Previous:<a rel=previous accesskey=p href="#REALTIME%20EFFECTS">REALTIME EFFECTS</a>,
+-Up:<a rel=up accesskey=u href="#USING%20EFFECTS">USING EFFECTS</a>
++Next:<a rel="next" accesskey="n" href="#TRANSITIONS">TRANSITIONS</a>,
++Previous:<a rel="previous" accesskey="p" href="#REALTIME%20EFFECTS">REALTIME EFFECTS</a>,
++Up:<a rel="up" accesskey="u" href="#USING%20EFFECTS">USING EFFECTS</a>
+ <br>
++</div>
+
+-<h3>RENDERED EFFECTS</h3>
++<h3 class="section">RENDERED EFFECTS</h3>
+
+-<p>Another type of effect is performed on a section of the track and the
++ <p>Another type of effect is performed on a section of the track and the
+ result stored somewhere before it is played back. The result is
+ usually pasted into the track to replace the original data.
+
+-<p>The rendered effects are not listed in the resource window but instead
++ <p>The rendered effects are not listed in the resource window but instead
+ are accessed through the <em>Audio-&gt;Render effect</em> and
+ <em>Video-&gt;Render effect</em> menu options. Each of these menu options
+ brings up a dialog for the rendered effect. Rendered effects apply to
+ only one type of track, either audio or video. If no tracks of the
+ type exist, an error pops up.
+
+-<p>A region of the timeline to apply the effect to must be defined before
++ <p>A region of the timeline to apply the effect to must be defined before
+ selecting <em>Render effect...</em>. If no in/out points and no
+ highlighted region exists, the entire region after the insertion point
+ is treated as the affected region. Otherwise, the region between the
+ in/out points or the highlighted region is the affected region.
+
+-<p>In the render effect dialog is a list of all the realtime and all the
++ <p>In the render effect dialog is a list of all the realtime and all the
+ rendered effects. The difference here is that the realtime effects are
+ rendered to disk and not applied under the track. Highlight an effect
+ in the list to designate it as the one being performed.
+
+-<p>Define a file to render the effect to in the <em>Select a file to
++ <p>Define a file to render the effect to in the <em>Select a file to
+ render to</em> box. The <img src="magnify.png" alt="magnify.png"> magnifying glass allows file
+ selection from a list.
+
+-<p>Select a file format which can handle the track type. The
++ <p>Select a file format which can handle the track type. The
+ <img src="wrench.png" alt="wrench.png"> wrench allows configuration specific to the file format.
+
+-<p>There is also an option for creating a new file at each label. If you
++ <p>There is also an option for creating a new file at each label. If you
+ have a CD rip on the timeline which you want to divide into different
+ files, the labels would become dividing points between the files if
+ this option were selected. When the timeline is divided by labels, the
+ effect is re-initialized at every label. Normalize operations take the
+ peak in the current file and not in the entire timeline.
+
+-<p>Finally there is an insertion strategy just like in the render dialog.
++ <p>Finally there is an insertion strategy just like in the render dialog.
+ It should be noted that even though the effect applies only to audio or
+ video, the insertion strategy applies to all tracks just like a
+ clipboard operation.
+
+-<p>When you click <em>OK</em> in the effect dialog, it calls the GUI of the
++ <p>When you click <em>OK</em> in the effect dialog, it calls the GUI of the
+ effect. If the effect is also a realtime effect, a second GUI appears
+ to prompt for acceptance or rejection of the current settings. After
+ accepting the settings, the effect is processed.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="TRANSITIONS">TRANSITIONS</a>,
+-Next:<a rel=next accesskey=n href="#LADSPA%20EFFECTS">LADSPA EFFECTS</a>,
+-Previous:<a rel=previous accesskey=p href="#RENDERED%20EFFECTS">RENDERED EFFECTS</a>,
+-Up:<a rel=up accesskey=u href="#USING%20EFFECTS">USING EFFECTS</a>
++Next:<a rel="next" accesskey="n" href="#LADSPA%20EFFECTS">LADSPA EFFECTS</a>,
++Previous:<a rel="previous" accesskey="p" href="#RENDERED%20EFFECTS">RENDERED EFFECTS</a>,
++Up:<a rel="up" accesskey="u" href="#USING%20EFFECTS">USING EFFECTS</a>
+ <br>
++</div>
+
+-<h3>TRANSITIONS</h3>
++<h3 class="section">TRANSITIONS</h3>
+
+-<p>When one edit ends and another edit begins, the default behaviour is to
++ <p>When one edit ends and another edit begins, the default behaviour is to
+ have the first edit's output immediately become the output of the
+ second edit when played back. Transitions are a way for the first
+ edit's output to become the second edit's output with different
+ variations.
+
+-<p>Cinelerra supports audio and video transitions, all of which are listed
++ <p>Cinelerra supports audio and video transitions, all of which are listed
+ in the resource window. Transitions may only apply to the matching
+ track type. Transitions under <em>audio transitions</em> can only apply
+ to audio tracks. Transitions under <em>video transitions</em> can only
+ apply to video tracks.
+
+-<p>Load a video file and cut a section from the center so the edit point
++ <p>Load a video file and cut a section from the center so the edit point
+ is visible on the timeline. Go the resource window and click on the
+ <em>Video transitions</em> folder. Drag a transition from the transition
+ list onto the second video edit on the timeline. A box highlights over
+ where the transition will appear. Releasing it over the second edit
+ applies the transition between the first and second edit.
+
+-<p>You can now scrub over the transition with the transport controls and
++ <p>You can now scrub over the transition with the transport controls and
+ watch the output in the <em>Compositor window</em>. Scrubbing with the
+ insertion point doesn't normally show transitions because the
+ transition durations are usually too short. The exact point in time
+@@ -2698,7 +2775,7 @@
+ second edit. Therefore, the first asset needs to have enough data
+ after the edit point to fill the transition into the second edit.
+
+-<p>Once the transition is in place, it can be edited similarly to an
++ <p>Once the transition is in place, it can be edited similarly to an
+ effect. Move the pointer over the transition and right click to bring
+ up the transition menu. The <em>show</em> option brings up specific
+ parameters for the transition in question if there are any. The
+@@ -2707,7 +2784,7 @@
+ transitions until they are changed again. Finally, the <em>detach</em>
+ option removes the transition from the timeline.
+
+-<p>Dragging and dropping transitions from the Resource window to the
++ <p>Dragging and dropping transitions from the Resource window to the
+ Program window can be really slow and tiring. Fortunately, once you
+ drag a transition from the Resource window, the <em>U</em> and <em>u</em>
+ keys will paste the same transition. The <em>U</em> key pastes the last
+@@ -2715,22 +2792,24 @@
+ on all the recordable tracks. If the insertion point or in point is
+ over an edit, the beginning of the edit is covered by the transition.
+
+-<p>It should be noted that when playing transitions from the timeline to a
++ <p>It should be noted that when playing transitions from the timeline to a
+ hardware accelerated video device, the hardware acceleration will
+ usually be turned off momentarily during the transition and on after
+ the transition in order to render the transition. Using an
+ unaccelerated video device for the entire timeline normally removes the
+ disturbance.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="LADSPA%20EFFECTS">LADSPA EFFECTS</a>,
+-Previous:<a rel=previous accesskey=p href="#TRANSITIONS">TRANSITIONS</a>,
+-Up:<a rel=up accesskey=u href="#USING%20EFFECTS">USING EFFECTS</a>
++Previous:<a rel="previous" accesskey="p" href="#TRANSITIONS">TRANSITIONS</a>,
++Up:<a rel="up" accesskey="u" href="#USING%20EFFECTS">USING EFFECTS</a>
+ <br>
++</div>
+
+-<h3>LADSPA EFFECTS</h3>
++<h3 class="section">LADSPA EFFECTS</h3>
+
+-<p>LADSPA effects are supported in realtime and rendered mode for audio.
++ <p>LADSPA effects are supported in realtime and rendered mode for audio.
+ The LADSPA plugins you get from the internet vary in quality. Most
+ can't be tweeked in realtime very easily and work better when
+ rendered. Some crash and some can only be applied to one track due to
+@@ -2740,20 +2819,22 @@
+ effects appear in the audio folder as the hammer and screwdriver, to
+ signify that they are Plugins for Linux Audio Developers.
+
+-<p>LADSPA Effects are enabled merely by setting the <em>LADSPA_PATH</em>
++ <p>LADSPA Effects are enabled merely by setting the <em>LADSPA_PATH</em>
+ environment variable to the location of your LADSPA plugins or putting
+ them in the <em>/usr/lib/cinelerra</em> directory.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>,
+-Next:<a rel=next accesskey=n href="#COMPOSITING">COMPOSITING</a>,
+-Previous:<a rel=previous accesskey=p href="#USING%20EFFECTS">USING EFFECTS</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#COMPOSITING">COMPOSITING</a>,
++Previous:<a rel="previous" accesskey="p" href="#USING%20EFFECTS">USING EFFECTS</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>SETTING PROJECT ATTRIBUTES</h2>
++<h2 class="chapter">SETTING PROJECT ATTRIBUTES</h2>
+
+-<p>When you play media files in Cinelerra, the media files have a certain
++ <p>When you play media files in Cinelerra, the media files have a certain
+ number of tracks, a certain frame size, a certain sample size, and so
+ on and so forth. No matter what the media file has; however, it is
+ still played back according to the project attributes. If an audio
+@@ -2762,7 +2843,7 @@
+ attributes, it is composited on a black frame, either cropped or
+ bordered with black.
+
+-<p>The project attributes are adjusted in <em>settings-&gt;format</em> and in
++ <p>The project attributes are adjusted in <em>settings-&gt;format</em> and in
+ to a more limited extent in <em>file-&gt;new</em>. When you adjust project
+ settings in <em>file-&gt;new</em> a new timeline is created with no data.
+ Every timeline created from this point uses the same settings. When
+@@ -2770,13 +2851,13 @@
+ recreated with no data but every timeline created from this point uses
+ the same settings.
+
+-<p>In addition to the traditional settings for sample rate, frame rate,
++ <p>In addition to the traditional settings for sample rate, frame rate,
+ frame size, Cinelerra uses some unusual settings like <em>channel
+ positions, color model, and aspect ratio.</em>
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ Channel positions is the only setting which doesn't affect the output
+ necessarily. Click on a speaker icon and drag to change the position
+ of a channel. It is merely a convenience so when more than 2 channels
+@@ -2787,13 +2868,13 @@
+
+ <br><p>
+ <br><p>
+-<img src="channelpositions.png" alt="channelpositions.png">
++ <img src="channelpositions.png" alt="channelpositions.png">
+ <br><p>
+ <br><p>
+-<p>But different channels can be positioned very close together to make
++ <p>But different channels can be positioned very close together to make
+ them have the same output.
+
+-</p><li>
++ </p><li>
+ Color model is very important for video playback. The video is stored
+ on disk in one colormodel, normally compressed using a YUV derivative.
+ When played back, Cinelerra decompresses it from the file format
+@@ -2803,15 +2884,15 @@
+ device. The selection of internal colormodel determines how accurate
+ and fast the effects are.
+
+-<p>Cinelerra colormodels are described using a certain packing order of
++ <p>Cinelerra colormodels are described using a certain packing order of
+ components and a certain number of bits for each component. The
+ packing order is printed on the left and the bit allocation is printed
+ on the right.
+
+-<p><em>RGBA8888</em> uses red, green, blue, and alpha with 8 bits per
++ <p><em>RGBA8888</em> uses red, green, blue, and alpha with 8 bits per
+ channel.
+
+-<p>In order to do effects which involve alpha channels, a colormodel with
++ <p>In order to do effects which involve alpha channels, a colormodel with
+ an alpha channel must be selected. These are RGBA8888, YUVA8888,
+ RGBA16161616, YUVA16161616. The 4 channel colormodels are notoriously
+ slower than 3 channel colormodels, with the slowest being
+@@ -2820,29 +2901,31 @@
+ to do anything, so it's a good idea to try the effect without alpha
+ channels.
+
+-<p>The YUV colormodels are usually faster than RGB colormodels when using
++ <p>The YUV colormodels are usually faster than RGB colormodels when using
+ compressed footage. They also destroy fewer colors than RGB
+ colormodels. If footage stored as JPEG or MPEG is processed many times
+ in RGB, the colors will fade while they won't if processed in YUV.
+
+-</p><li>
++ </p><li>
+ Aspect ratio determines the shape of the video output when using the
+ X11 video output. The numbers in each direction can be any floating
+ point number. When drawn on the screen, video pixels are stretched to
+ match the aspect ratio.
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="COMPOSITING">COMPOSITING</a>,
+-Next:<a rel=next accesskey=n href="#KEYFRAMES">KEYFRAMES</a>,
+-Previous:<a rel=previous accesskey=p href="#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#KEYFRAMES">KEYFRAMES</a>,
++Previous:<a rel="previous" accesskey="p" href="#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>COMPOSITING</h2>
++<h2 class="chapter">COMPOSITING</h2>
+
+-<p>A large amount of Cinelerra's binary size is directed towards
++ <p>A large amount of Cinelerra's binary size is directed towards
+ compositing. When you remove the letterboxing from a widescreen show,
+ you're compositing. Changing the resolution of a show, making a split
+ screen, and fading in and out among other things are all compositing
+@@ -2850,29 +2933,31 @@
+ operation and plays back through the compositing engine only then.
+ Otherwise, it uses the fastest decoder available in the hardware.
+
+-<p>Compositing operations are done on the timeline and in the Compositor
++ <p>Compositing operations are done on the timeline and in the Compositor
+ window. Shortcuts exist in the Resource window for changing project
+ attributes. Once some video files are on the timeline, the compositor
+ window is a good place to try compositing.
+
+-<ul>
+-<li><a accesskey=1 href="#THE%20CAMERA%20AND%20PROJECTOR">THE CAMERA AND PROJECTOR</a>:
+-<li><a accesskey=2 href="#MASKS">MASKS</a>:
+-<li><a accesskey=3 href="#CROPPING">CROPPING</a>:
+-<li><a accesskey=4 href="#SAFE%20REGIONS">SAFE REGIONS</a>:
+-<li><a accesskey=5 href="#OVERLAY%20MODES">OVERLAY MODES</a>:
+-<li><a accesskey=6 href="#TRACK%20AND%20OUTPUT%20SIZES">TRACK AND OUTPUT SIZES</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#THE%20CAMERA%20AND%20PROJECTOR">THE CAMERA AND PROJECTOR</a>:
++<li><a accesskey="2" href="#MASKS">MASKS</a>:
++<li><a accesskey="3" href="#CROPPING">CROPPING</a>:
++<li><a accesskey="4" href="#SAFE%20REGIONS">SAFE REGIONS</a>:
++<li><a accesskey="5" href="#OVERLAY%20MODES">OVERLAY MODES</a>:
++<li><a accesskey="6" href="#TRACK%20AND%20OUTPUT%20SIZES">TRACK AND OUTPUT SIZES</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="THE%20CAMERA%20AND%20PROJECTOR">THE CAMERA AND PROJECTOR</a>,
+-Next:<a rel=next accesskey=n href="#MASKS">MASKS</a>,
+-Up:<a rel=up accesskey=u href="#COMPOSITING">COMPOSITING</a>
++Next:<a rel="next" accesskey="n" href="#MASKS">MASKS</a>,
++Up:<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
+ <br>
++</div>
+
+-<h3>THE CAMERA AND PROJECTOR</h3>
++<h3 class="section">THE CAMERA AND PROJECTOR</h3>
+
+-<p>In the compositor window, the most important functions are the
++ <p>In the compositor window, the most important functions are the
+ <img src="camera.png" alt="camera.png"> camera button and the <img src="projector.png" alt="projector.png"> projector
+ button. These control operation of the camera and projector. Inside
+ Cinelerra's compositing pipeline, the camera determines where in the
+@@ -2885,19 +2970,19 @@
+
+ <br><p>
+ <br><p>
+-<img src="compositing_pipeline.png" alt="compositing_pipeline.png">
++ <img src="compositing_pipeline.png" alt="compositing_pipeline.png">
+ <br><p>
+ <br><p>
+-<p><em>Visual representation of the compositing pipeline</em>.
++ <p><em>Visual representation of the compositing pipeline</em>.
+
+-<p>When editing the camera and projector in the compositing window, the
++ <p>When editing the camera and projector in the compositing window, the
+ first track with <em>record</em> enabled is the track affected. Even if
+ the track is completely transparent, it's still the affected track. If
+ multiple video tracks exist, the easiest way to select one track for
+ editing is to <em>shift-click</em> on the record icon of the track. This
+ solos the track.
+
+-<p>When the <em>projector</em> button is enabled in the compositor window,
++ <p>When the <em>projector</em> button is enabled in the compositor window,
+ you're in projector editing mode. A guide box appears in the video
+ window. Dragging anywhere in the video window causes the guide box to
+ move, hopefully along with the video. <em>shift-dragging</em> anywhere
+@@ -2905,46 +2990,46 @@
+ the video. Once you've positioned the video with the projector, you're
+ ready to master the camera.
+
+-<p>Select the <img src="camera.png" alt="camera.png"> camera button to enable camera editing mode.
++ <p>Select the <img src="camera.png" alt="camera.png"> camera button to enable camera editing mode.
+ In this mode, the guide box shows where the camera position is in
+ relation to past and future camera positions but not where it is in
+ relation to the source video. Dragging the camera box in the
+ compositor window doesn't move the box but instead moves the location
+ of the video inside the box.
+
+-<p>For example, when you drag the camera left, the video moves right.
++ <p>For example, when you drag the camera left, the video moves right.
+ When you drag the camera up, the video moves down. When you shift-drag
+ the camera, the effect is the same as if you zoomed in or out of the
+ source. The intention of the camera is to produce still photo panning,
+ while the intention of the projector is to composite several sources in
+ the same scene.
+
+-<p>In the compositing window, there is a popup menu of options for the
++ <p>In the compositing window, there is a popup menu of options for the
+ camera and projector. Right click over the video portion of the
+ compositing window to bring up the menu.
+
+-<ul>
++ <ul>
+
+-<li>Reset Camera causes the camera to return to the center position.
++ <li>Reset Camera causes the camera to return to the center position.
+
+-<li>Reset Projector causes the projector to return to the center.
++ <li>Reset Projector causes the projector to return to the center.
+
+-</ul>
++ </ul>
+
+-<p>The camera and projector have shortcut operations neither in the popup
++ <p>The camera and projector have shortcut operations neither in the popup
+ menu or represented in video overlays. These are accessed in the
+ <em>Tool window</em>. Most operations in the Compositor window have a
+ tool window which is enabled by activating the <img src="toolwindow.png" alt="toolwindow.png">
+ question mark.
+
+-<p>In the case of the camera and projector, the tool window shows x, y,
++ <p>In the case of the camera and projector, the tool window shows x, y,
+ and z coordinates. By either tumbling or entering text directly, the
+ camera and projector can be precisely positioned. 9 justification
+ types are also defined for easy access. A popular justification
+ operation is upper left projection after image reduction. This is used
+ when reducing the size of video with aspect ratio adjustment.
+
+-<p>The translation effect allows simultaneous aspect ratio conversion and
++ <p>The translation effect allows simultaneous aspect ratio conversion and
+ reduction but is easier to use if the reduced video is put in the upper
+ left of the temporary instead of in the center. The track size is set
+ to the original size of the video and the camera is centered. The
+@@ -2952,7 +3037,7 @@
+ effects, this produces just the cropped center portion of the video in
+ the output.
+
+-<p>The translation effect is dropped onto the video track. The input
++ <p>The translation effect is dropped onto the video track. The input
+ dimensions of the translation effect are set to the original size and
+ the output dimensions are set to the reduced size. To put the reduced
+ video in the center section that the projector shows would require
+@@ -2960,21 +3045,23 @@
+ Instead, we leave <em>out x and out y</em> at 0 and use the projector's
+ tool window.
+
+-<p>Merely by selecting <img src="left_justify.png" alt="left_justify.png"> left justify and
++ <p>Merely by selecting <img src="left_justify.png" alt="left_justify.png"> left justify and
+ <img src="top_justify.png" alt="top_justify.png"> top justify, the projector displays the reduced
+ image from the top left corner of the temporary in the center of the
+ output.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="MASKS">MASKS</a>,
+-Next:<a rel=next accesskey=n href="#CROPPING">CROPPING</a>,
+-Previous:<a rel=previous accesskey=p href="#THE%20CAMERA%20AND%20PROJECTOR">THE CAMERA AND PROJECTOR</a>,
+-Up:<a rel=up accesskey=u href="#COMPOSITING">COMPOSITING</a>
++Next:<a rel="next" accesskey="n" href="#CROPPING">CROPPING</a>,
++Previous:<a rel="previous" accesskey="p" href="#THE%20CAMERA%20AND%20PROJECTOR">THE CAMERA AND PROJECTOR</a>,
++Up:<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
+ <br>
++</div>
+
+-<h3>MASKS</h3>
++<h3 class="section">MASKS</h3>
+
+-<p>Masks select a region of the video for either displaying or hiding.
++ <p>Masks select a region of the video for either displaying or hiding.
+ Masks are also used in conjunction with another effect to isolate the
+ effect to a certain region of the frame. A copy of one video track may
+ be delayed slightly and unmasked in locations where the one copy has
+@@ -2984,24 +3071,24 @@
+ vanilla track shows through. Removal of boom microphones, airplanes,
+ and housewives are other mask uses.
+
+-<p>The order of the compositing pipeline affects what can be done with
++ <p>The order of the compositing pipeline affects what can be done with
+ masks. Mainly, masks are performed on the temporary after effects and
+ before the projector. This means multiple tracks can be bounced to a
+ masked track and projected with the same mask.
+
+-<p>Our compositing pipeline graph now has a masking stage. There are 8
++ <p>Our compositing pipeline graph now has a masking stage. There are 8
+ possible masks per track. Each mask is defined separately, although
+ they each perform the same operation, whether it's addition or
+ subtraction.
+
+ <br><p>
+ <br><p>
+-<img src="compositing_pipeline2.png" alt="compositing_pipeline2.png">
++ <img src="compositing_pipeline2.png" alt="compositing_pipeline2.png">
+ <br><p>
+ <br><p>
+-<p><em>Compositing pipeline with masks</em>
++ <p><em>Compositing pipeline with masks</em>
+
+-<p>To define a mask, go into the Compositor window and enable the
++ <p>To define a mask, go into the Compositor window and enable the
+ <img src="mask.png" alt="mask.png"> <em>mask</em> toggle. Now go over the video and
+ click-drag. Click-drag again in another part of the image to create
+ each new point of the mask. While it isn't the conventional bezier
+@@ -3009,48 +3096,48 @@
+ effect of the mask is going to be. Creating each point of the mask
+ expands a rubber band curve.
+
+-<p>Once points are defined, they can be moved by <em>ctrl-dragging</em> in
++ <p>Once points are defined, they can be moved by <em>ctrl-dragging</em> in
+ the vicinity of the corner. This; however, doesn't smooth out the
+ curve. The in-out points of the bezier curve are accessed by
+ <em>shift-dragging</em> in the vicinity of the corner. Then
+ <em>shift-dragging</em> near the in or out point causes the point to
+ move.
+
+-<p>Finally, once you have a mask, the mask can be translated in one piece
++ <p>Finally, once you have a mask, the mask can be translated in one piece
+ by <em>alt-dragging</em> the mask. Mask editing in Cinelerra is
+ identical to how The Gimp edits masks except in this case the effect of
+ the mask is always on.
+
+-<p>The masks have many more parameters which couldn't be represented with
++ <p>The masks have many more parameters which couldn't be represented with
+ video overlays. These are represented in the tool window for masks.
+ Selecting the <img src="toolwindow.png" alt="toolwindow.png"> question mark when the <img src="mask.png" alt="mask.png">
+ mask toggle is highlighted brings up the mask options.
+
+-<p>The <em>mode</em> of the mask determines if the mask removes data or
++ <p>The <em>mode</em> of the mask determines if the mask removes data or
+ makes data visible. If the mode is subtractive, the mask causes video
+ to disappear. If the mode is additive, the mask causes video to appear
+ and everything outside the mask to disappear.
+
+-<p>The <em>value</em> of the mask determines how extreme the addition or
++ <p>The <em>value</em> of the mask determines how extreme the addition or
+ subtraction is. In the subtractive mode, higher values subtract more
+ alpha. In the additive mode, higher values make the region in the mask
+ brighter while the region outside the mask is always hidden.
+
+-<p>The mask number determines which one of the 8 possible masks we're
++ <p>The mask number determines which one of the 8 possible masks we're
+ editing. Each track has 8 possible masks. When you click-drag in the
+ compositor window, you're only editing one of the masks. Change the
+ value of <em>mask number</em> to cause another mask to be edited. The
+ previous mask is still active but only the curve overlay for the
+ currently selected mask is visible.
+
+-<p>When multiple masks are used, their effects are ORed together. Every
++ <p>When multiple masks are used, their effects are ORed together. Every
+ mask in a single track uses the same value and mode.
+
+-<p>The edges of a mask are hard by default but this rarely is desired.
++ <p>The edges of a mask are hard by default but this rarely is desired.
+ The <em>feather</em> parameter determines how many pixels to feather the
+ mask. This creates softer edges but takes longer to render.
+
+-<p>Finally, there are parameters which affect one point on the current
++ <p>Finally, there are parameters which affect one point on the current
+ mask instead of the whole mask. These are <em>Delete, x, y</em>. The
+ active point is defined as the last point dragged in the compositor
+ window. Any point can be activated merely by <em>ctrl-clicking</em> near
+@@ -3058,16 +3145,18 @@
+ <em>Delete</em> deletes it and <em>x, y</em> allow repositioning by numeric
+ entry.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="CROPPING">CROPPING</a>,
+-Next:<a rel=next accesskey=n href="#SAFE%20REGIONS">SAFE REGIONS</a>,
+-Previous:<a rel=previous accesskey=p href="#MASKS">MASKS</a>,
+-Up:<a rel=up accesskey=u href="#COMPOSITING">COMPOSITING</a>
++Next:<a rel="next" accesskey="n" href="#SAFE%20REGIONS">SAFE REGIONS</a>,
++Previous:<a rel="previous" accesskey="p" href="#MASKS">MASKS</a>,
++Up:<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
+ <br>
++</div>
+
+-<h3>CROPPING</h3>
++<h3 class="section">CROPPING</h3>
+
+-<p>Cropping changes the value of the output dimensions and the projector
++ <p>Cropping changes the value of the output dimensions and the projector
+ to reduce the visible picture area. Enable the <img src="crop.png" alt="crop.png"> crop
+ toggle and the <img src="toolwindow.png" alt="toolwindow.png"> tool window to perform cropping in
+ the compositing window. This draws a rectangle over the video.
+@@ -3076,79 +3165,85 @@
+ window allows text entry of the coordinates. When the rectangle is
+ positioned, hit the <em>do it</em> button in the tool window.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="SAFE%20REGIONS">SAFE REGIONS</a>,
+-Next:<a rel=next accesskey=n href="#OVERLAY%20MODES">OVERLAY MODES</a>,
+-Previous:<a rel=previous accesskey=p href="#CROPPING">CROPPING</a>,
+-Up:<a rel=up accesskey=u href="#COMPOSITING">COMPOSITING</a>
++Next:<a rel="next" accesskey="n" href="#OVERLAY%20MODES">OVERLAY MODES</a>,
++Previous:<a rel="previous" accesskey="p" href="#CROPPING">CROPPING</a>,
++Up:<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
+ <br>
++</div>
+
+-<h3>SAFE REGIONS</h3>
++<h3 class="section">SAFE REGIONS</h3>
+
+-<p>On consumer displays the borders of the image are cut off and within
++ <p>On consumer displays the borders of the image are cut off and within
+ the cutoff point is a region which isn't always square like it is in
+ the compositor window. The borders are intended for scratch room and
+ vertical blanking data. You can show where these borders are by
+ enabling the <img src="titlesafe.png" alt="titlesafe.png"> safe regions toggle. Keep titles inside
+ the inner rectangle and keep action inside the outer rectangle.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="OVERLAY%20MODES">OVERLAY MODES</a>,
+-Next:<a rel=next accesskey=n href="#TRACK%20AND%20OUTPUT%20SIZES">TRACK AND OUTPUT SIZES</a>,
+-Previous:<a rel=previous accesskey=p href="#SAFE%20REGIONS">SAFE REGIONS</a>,
+-Up:<a rel=up accesskey=u href="#COMPOSITING">COMPOSITING</a>
++Next:<a rel="next" accesskey="n" href="#TRACK%20AND%20OUTPUT%20SIZES">TRACK AND OUTPUT SIZES</a>,
++Previous:<a rel="previous" accesskey="p" href="#SAFE%20REGIONS">SAFE REGIONS</a>,
++Up:<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
+ <br>
++</div>
+
+-<h3>OVERLAY MODES</h3>
++<h3 class="section">OVERLAY MODES</h3>
+
+-<p>Every track has an overlay mode, accessible by expanding the track.
++ <p>Every track has an overlay mode, accessible by expanding the track.
+ Select the <img src="expandpatch_checked.png" alt="expandpatch_checked.png"> expand track toggle to view all
+ the options for a video track. The overlay mode of the track is
+ <em>normal</em> by default. Select other modes by selecting the
+ <em>normal</em> button. Overlay modes are processed inside the projector
+ stage of compositing. The different modes are summarized below.
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ Normal uses a traditional Porter-Diff equation to blend tracks with
+ alpha. When no alpha exists, the new track replaces the output.
+
+-<li>
++ <li>
+ In addition, whatever is in the output is added to the current track.
+ The result is blended based on the current track's alpha onto the
+ output.
+
+-<li>
++ <li>
+ In subtraction, the current track is subtracted from the output and the
+ result is alpha blended onto the output.
+
+-<li>
++ <li>
+ Multiply is the most useful operation. The current track is multiplied
+ by the output and the result blended onto the output. Usually a black
+ and white image with no alpha channel or a white title on a black image
+ is used as the current track. With the multiply operation, only the
+ output portions under the white area show.
+
+-<li>
++ <li>
+ Divide divides the current track by the output and the result is
+ blended into the output. It usually results in overloaded levels.
+
+-<li>
++ <li>
+ Replace does no blending and overwrites the output with the current
+ track.
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="TRACK%20AND%20OUTPUT%20SIZES">TRACK AND OUTPUT SIZES</a>,
+-Previous:<a rel=previous accesskey=p href="#OVERLAY%20MODES">OVERLAY MODES</a>,
+-Up:<a rel=up accesskey=u href="#COMPOSITING">COMPOSITING</a>
++Previous:<a rel="previous" accesskey="p" href="#OVERLAY%20MODES">OVERLAY MODES</a>,
++Up:<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
+ <br>
++</div>
+
+-<h3>TRACK AND OUTPUT SIZES</h3>
++<h3 class="section">TRACK AND OUTPUT SIZES</h3>
+
+-<p>The size of the temporary and the size of the output in our compositing
++ <p>The size of the temporary and the size of the output in our compositing
+ pipeline are independant and variable. This fits into everything
+ covered so far. The camera's viewport is the temporary size. Effects
+ are processed in the temporary and are affected by the temporary size.
+@@ -3157,36 +3252,38 @@
+ bordered by blank regions in the output. If the temporary is bigger
+ than the output, the temporary is cropped.
+
+-<p>The temporary size is defined as the track size. Each track has a
++ <p>The temporary size is defined as the track size. Each track has a
+ different size. Right click on a track to bring up the track's menu.
+ Select <em>Resize Track</em> to resize the track to any arbitrary size.
+ Alternatively you can select <em>Match output size</em> to make the track
+ the same size as the output.
+
+-<p>The output size is set in either <em>New</em> when creating a new project
++ <p>The output size is set in either <em>New</em> when creating a new project
+ or <em>Settings-&gt;Format</em>. In the Resource window there is another
+ way to change the output size. Right click on a video asset and select
+ <em>Match project size</em> to conform the output to the asset. When new
+ tracks are created, the track size always conforms to the output size
+ specified by these methods.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="KEYFRAMES">KEYFRAMES</a>,
+-Next:<a rel=next accesskey=n href="#CAPTURING%20MEDIA">CAPTURING MEDIA</a>,
+-Previous:<a rel=previous accesskey=p href="#COMPOSITING">COMPOSITING</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#CAPTURING%20MEDIA">CAPTURING MEDIA</a>,
++Previous:<a rel="previous" accesskey="p" href="#COMPOSITING">COMPOSITING</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>KEYFRAMES</h2>
++<h2 class="chapter">KEYFRAMES</h2>
+
+-<p>Setting static compositing parameters isn't very useful most of the
++ <p>Setting static compositing parameters isn't very useful most of the
+ time. Normally you need to move the camera around over time or change
+ mask positions. Masks need to follow objects. We create dymanic
+ changes by defining keyframes. A keyframe is a certain point in time
+ when the settings for one operation change. In Cinelerra, there are
+ keyframes for almost every compositing parameter and effect parameter.
+
+-<p>Whenever you adjust any parameter, the value is stored in a keyframe.
++ <p>Whenever you adjust any parameter, the value is stored in a keyframe.
+ If the value is stored in a keyframe, why doesn't it always change?
+ The keyframe it is stored in is known as the <em>default keyframe</em>.
+ The default keyframe applies to the entire duration if no other
+@@ -3194,27 +3291,29 @@
+ because it always exists. The only way change occurs over time is if
+ non-default keyframes are created.
+
+-<p>Display keyframes for any parameter by using the <em>view</em> menu.
++ <p>Display keyframes for any parameter by using the <em>view</em> menu.
+ When keyframes are selected, they are drawn on the timeline over the
+ tracks they apply to.
+
+-<ul>
+-<li><a accesskey=1 href="#CURVE%20KEYFRAMES">CURVE KEYFRAMES</a>:
+-<li><a accesskey=2 href="#TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES</a>:
+-<li><a accesskey=3 href="#AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES</a>:
+-<li><a accesskey=4 href="#COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES</a>:
+-<li><a accesskey=5 href="#EDITING%20KEYFRAMES">EDITING KEYFRAMES</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#CURVE%20KEYFRAMES">CURVE KEYFRAMES</a>:
++<li><a accesskey="2" href="#TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES</a>:
++<li><a accesskey="3" href="#AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES</a>:
++<li><a accesskey="4" href="#COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES</a>:
++<li><a accesskey="5" href="#EDITING%20KEYFRAMES">EDITING KEYFRAMES</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="CURVE%20KEYFRAMES">CURVE KEYFRAMES</a>,
+-Next:<a rel=next accesskey=n href="#TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES</a>,
+-Up:<a rel=up accesskey=u href="#KEYFRAMES">KEYFRAMES</a>
++Next:<a rel="next" accesskey="n" href="#TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES</a>,
++Up:<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
+ <br>
++</div>
+
+-<h3>CURVE KEYFRAMES</h3>
++<h3 class="section">CURVE KEYFRAMES</h3>
+
+-<p>Fade and zoom settings are stored in bezier curves. Go to
++ <p>Fade and zoom settings are stored in bezier curves. Go to
+ <em>view-&gt;fade keyframes</em> or <em>view-&gt;...zoom</em> to show curves on
+ the timeline. It's sometimes easier to pull down the <em>view</em> menu
+ and then use the keyboard shortcuts listed in the menu to enable or
+@@ -3223,7 +3322,7 @@
+ timeline until it changes shape. Then merely by clicking and dragging
+ on the curve you can create a keyframe at the position.
+
+-<p>After the keyframe is created, click drag on it again to reposition
++ <p>After the keyframe is created, click drag on it again to reposition
+ it. When you click-drag a second keyframe on the curve, it creates a
+ smooth ramp. <em>ctrl-dragging</em> on a keyframe changes the value of
+ either the input control or the output control. This affects the
+@@ -3231,92 +3330,98 @@
+ can be moved horizontally as well as vertically, the horizontal
+ movement is purely for legibility and isn't used in the curve value.
+
+-<p>You may remember that The Gimp and the Compositing masks all use
++ <p>You may remember that The Gimp and the Compositing masks all use
+ <em>shift</em> to select control points so why does the timeline use
+ <em>ctrl</em>? When you <em>shift-drag</em> on a timeline curve, the
+ keyframe jumps to the value of either the next or previous keyframe,
+ depending on which exists. This lets you set a constant curve value
+ without having to copy the next or previous keyframe.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES</a>,
+-Next:<a rel=next accesskey=n href="#AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES</a>,
+-Previous:<a rel=previous accesskey=p href="#CURVE%20KEYFRAMES">CURVE KEYFRAMES</a>,
+-Up:<a rel=up accesskey=u href="#KEYFRAMES">KEYFRAMES</a>
++Next:<a rel="next" accesskey="n" href="#AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES</a>,
++Previous:<a rel="previous" accesskey="p" href="#CURVE%20KEYFRAMES">CURVE KEYFRAMES</a>,
++Up:<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
+ <br>
++</div>
+
+-<h3>TOGGLE KEYFRAMES</h3>
++<h3 class="section">TOGGLE KEYFRAMES</h3>
+
+-<p>Mute is the only toggle keyframe. Mute keyframes determine where the
++ <p>Mute is the only toggle keyframe. Mute keyframes determine where the
+ track is processed but not rendered to the output. Click-drag on these
+ curves to create a keyframe. Unlike curves, the toggle keyframe has
+ only two values: on or off. Ctrl and shift do nothing on toggle
+ keyframes.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES</a>,
+-Next:<a rel=next accesskey=n href="#COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES</a>,
+-Previous:<a rel=previous accesskey=p href="#TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES</a>,
+-Up:<a rel=up accesskey=u href="#KEYFRAMES">KEYFRAMES</a>
++Next:<a rel="next" accesskey="n" href="#COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES</a>,
++Previous:<a rel="previous" accesskey="p" href="#TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES</a>,
++Up:<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
+ <br>
++</div>
+
+-<h3>AUTOMATIC KEYFRAMES</h3>
++<h3 class="section">AUTOMATIC KEYFRAMES</h3>
+
+-<p>You may have noticed when a few fade curves are set up, moving the
++ <p>You may have noticed when a few fade curves are set up, moving the
+ insertion point around the curves causes the faders to reflect the
+ curve value under the insertion point. This isn't just to look cool.
+ The faders themselves can set keyframes in automatic keyframe mode.
+ Automatic keyframe mode is usually more useful than dragging curves.
+
+-<p>Enable automatic keyframe mode by enabling the automatic keyframe
++ <p>Enable automatic keyframe mode by enabling the automatic keyframe
+ toggle <img src="autokeyframe.png" alt="autokeyframe.png">. In automatic keyframe mode, every time
+ you tweek a keyframeable parameter it creates a keyframe on the
+ timeline. Since automatic keyframes affect many parameters, it's best
+ enabled just before you need a keyframe and disabled immediately
+ thereafter.
+
+-<p>It's useful to go into the <em>View</em> menu and make the desired
++ <p>It's useful to go into the <em>View</em> menu and make the desired
+ parameter visible before performing a change. The location where the
+ automatic keyframe is generated is under the insertion point. If the
+ timeline is playing back during a tweek, several automatic keyframes
+ will be generated as you change the parameter.
+
+-<p>When automatic keyframe mode is disabled, a similarly strange thing
++ <p>When automatic keyframe mode is disabled, a similarly strange thing
+ happens. Adjusting a parameter adjusts the keyframe immediately
+ preceeding the insertion point. If two fade keyframes exist and the
+ insertion point is between them, changing the fader changes the first
+ keyframe.
+
+-<p>There are many parameters which can only be keyframed in automatic
++ <p>There are many parameters which can only be keyframed in automatic
+ keyframe mode. These are parameters for which curves would take up too
+ much space on the track or which can't be represented easily by a
+ curve.
+
+-<p>Effects are only keyframable in automatic mode because of the number of
++ <p>Effects are only keyframable in automatic mode because of the number of
+ parameters in each individual effect.
+
+-<p>Camera and projector translation can only be keyframed in automatic
++ <p>Camera and projector translation can only be keyframed in automatic
+ keyframe mode while camera and projector zoom can be keyframed with
+ curves. It is here that we conclude the discussion of compositing,
+ since compositing is highly dependant on the ability to change over
+ time.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES</a>,
+-Next:<a rel=next accesskey=n href="#EDITING%20KEYFRAMES">EDITING KEYFRAMES</a>,
+-Previous:<a rel=previous accesskey=p href="#AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES</a>,
+-Up:<a rel=up accesskey=u href="#KEYFRAMES">KEYFRAMES</a>
++Next:<a rel="next" accesskey="n" href="#EDITING%20KEYFRAMES">EDITING KEYFRAMES</a>,
++Previous:<a rel="previous" accesskey="p" href="#AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES</a>,
++Up:<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
+ <br>
++</div>
+
+-<h3>COMPOSITOR KEYFRAMES</h3>
++<h3 class="section">COMPOSITOR KEYFRAMES</h3>
+
+-<p>Camera and projector translation is represented by two parameters: x
++ <p>Camera and projector translation is represented by two parameters: x
+ and y. Therefore it is cumbersome to adjust with curves. Cinelerra
+ solves this problem by relying on automatic keyframes. With a video
+ track loaded, move the insertion point to the beginning of the track
+ and enable automatic keyframe mode.
+
+-<p>Move the projector slightly in the compositor window to create a
++ <p>Move the projector slightly in the compositor window to create a
+ keyframe. Then go forward several seconds. Move the projector a long
+ distance to create another keyframe and emphasize motion. This creates
+ a second projector box in the compositor, with a line joining the two
+@@ -3324,14 +3429,14 @@
+ keyframes, more boxes are created. Once all the desired keyframes are
+ created, disable automatic keyframe mode.
+
+-<p>Now when scrubbing around with the compositor window's slider, the
++ <p>Now when scrubbing around with the compositor window's slider, the
+ video projection moves over time. At any point between two keyframes,
+ the motion path is read for all time before the insertion point and
+ green for all time after the insertion point. It's debatable if this
+ is a very useful feature but it makes you feel good to know what
+ keyframe is going to be affected by the next projector tweek.
+
+-<p>Click-drag when automatic keyframes are off to adjust the preceeding
++ <p>Click-drag when automatic keyframes are off to adjust the preceeding
+ keyframe. If you're halfway between two keyframes, the first projector
+ box is adjusted while the second one stays the same. Furthermore, the
+ video doesn't appear to move in step with the first keyframe. This is
+@@ -3339,7 +3444,7 @@
+ interpolated. In order to set the second keyframe you'll need to scrub
+ after the second keyframe.
+
+-<p>By default the motion path is a straight line, but it can be curved
++ <p>By default the motion path is a straight line, but it can be curved
+ with control points. <em>Ctrl-drag</em> to set either the in or out
+ control point of the preceeding keyframe. Once again, we depart from
+ The Gimp because <em>shift</em> is already used for zoom. After the in
+@@ -3348,32 +3453,34 @@
+ point. A control point can be out of view entirely yet still
+ controllable.
+
+-<p>When editing the camera translation, the behavior of the camera boxes
++ <p>When editing the camera translation, the behavior of the camera boxes
+ is slightly different. Camera automation is normally used for still
+ photo panning. The current camera box doesn't move during a drag, but
+ if multiple keyframes are set, every camera box except the current
+ keyframe appears to move. This is because the camera display shows
+ every other camera position relative to the current one.
+
+-<p>The situation becomes more intuitive if you bend the motion path
++ <p>The situation becomes more intuitive if you bend the motion path
+ between two keyframes and scrub between the two keyframes. The
+ division between red and green, the current position between the
+ keyframes, is always centered while the camera boxes move.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="EDITING%20KEYFRAMES">EDITING KEYFRAMES</a>,
+-Previous:<a rel=previous accesskey=p href="#COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES</a>,
+-Up:<a rel=up accesskey=u href="#KEYFRAMES">KEYFRAMES</a>
++Previous:<a rel="previous" accesskey="p" href="#COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES</a>,
++Up:<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
+ <br>
++</div>
+
+-<h3>EDITING KEYFRAMES</h3>
++<h3 class="section">EDITING KEYFRAMES</h3>
+
+-<p>Keyframes can be shifted around and moved between tracks on the
++ <p>Keyframes can be shifted around and moved between tracks on the
+ timeline using similar cut and paste operations to editing media. Only
+ the keyframes selected in the <em>view</em> menu are affected by keyframe
+ editing operations, however.
+
+-<p>The most popular keyframe editing operation is replication of some
++ <p>The most popular keyframe editing operation is replication of some
+ curve from one track to the other, to make a stereo pair. The first
+ step is to solo the source track's record <img src="recordpatch_up.png" alt="recordpatch_up.png"> patch
+ by <em>shift-clicking</em> on it. Then either set in/out points or
+@@ -3382,10 +3489,10 @@
+ record <img src="recordpatch_up.png" alt="recordpatch_up.png"> patch by <em>shift-clicking</em> on it and
+ go to <em>keyframes-&gt;paste keyframes</em> to paste the clipboard.
+
+-<p>The media editing commands are mapped to the keyframe editing commands
++ <p>The media editing commands are mapped to the keyframe editing commands
+ by using the <em>shift</em> key instead of just the keyboard shortcut.
+
+-<p>This leads to the most complicated part of keyframe editing, the
++ <p>This leads to the most complicated part of keyframe editing, the
+ default keyframe. Remember that when no keyframes are set at all,
+ there is still a default keyframe which stores a global parameter for
+ the entire duration. The default keyframe isn't drawn because it
+@@ -3395,108 +3502,112 @@
+ default keyframe</em> allow conversion of the default keyframe to a
+ non-default keyframe.
+
+-<p><em>Keyframes-&gt;copy default keyframe</em> copies the default keyframe to
++ <p><em>Keyframes-&gt;copy default keyframe</em> copies the default keyframe to
+ the clipboard, no matter what region of the timeline is selected. The
+ <em>keyframes-&gt;paste keyframes</em> function may then be used to paste
+ the clipboard as a non-default keyframe.
+
+-<p>If you've copied a non-default keyframe, it can be stored as the
++ <p>If you've copied a non-default keyframe, it can be stored as the
+ default keyframe by calling <em>keyframes-&gt;paste default keyframe</em>.
+ After using paste default keyframe to convert a non-default keyframe
+ into a default keyframe, you won't see the value of the default
+ keyframe reflected until all the non-default keyframes are removed.
+
+-<p>Finally, there is a convenient way to delete keyframes besides
++ <p>Finally, there is a convenient way to delete keyframes besides
+ selecting a region and calling <em>keyframes-&gt;clear keyframes</em>.
+ Merely click-drag a keyframe before its preceeding keyframe or after
+ its following keyframe on the track.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="CAPTURING%20MEDIA">CAPTURING MEDIA</a>,
+-Next:<a rel=next accesskey=n href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>,
+-Previous:<a rel=previous accesskey=p href="#KEYFRAMES">KEYFRAMES</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>,
++Previous:<a rel="previous" accesskey="p" href="#KEYFRAMES">KEYFRAMES</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>CAPTURING MEDIA</h2>
++<h2 class="chapter">CAPTURING MEDIA</h2>
+
+-<p>Ideally, all media would be stored on hard drives, CD-ROM, flash, or
++ <p>Ideally, all media would be stored on hard drives, CD-ROM, flash, or
+ DVD and loading it into Cinelerra would be a matter of loading a file.
+ In reality, very few sources of media can be accessed like a filesystem
+ but instead rely on tape transport mechanisms and dumb I/O mechanisms
+ to transfer the data to computers. These media types are imported into
+ Cinelerra through the Record dialog.
+
+-<p>The first step in recording is to configure the input device. In
++ <p>The first step in recording is to configure the input device. In
+ <em>Settings-&gt;preferences</em> are a number of recording parameters
+ described in configuration See <a href="#RECORDING">RECORDING</a>. These parameters apply to
+ recording no matter what the project settings are, because the
+ recording parameters are usually the maximum capability of the
+ recording hardware while project settings come and go.
+
+-<p>Go to <em>File-&gt;record</em> to record a dumb I/O source. This prompts
++ <p>Go to <em>File-&gt;record</em> to record a dumb I/O source. This prompts
+ for an output format much like rendering does. Once that's done, the
+ record window and the record monitor pop up.
+
+-<p>The record window has discrete sections. While many parameters change
++ <p>The record window has discrete sections. While many parameters change
+ depending on if the file has audio or video, the discrete sections are
+ always the same.
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ The output format area describes the format of the output file and the
+ current position within it.
+
+-<li>
++ <li>
+ The edit batch area lets you change parameters in the current batch.
+
+-<li>
++ <li>
+ The transport controls start and stop recording different ways.
+
+-<li>
++ <li>
+ The batch list displays all the defined batches.
+
+-<li>
++ <li>
+ The confirmation area lets you determine how the output files are
+ imported into the timeline and quit.
+
+-</ul>
++ </ul>
+
+-<img src="recording.png" alt="recording.png">
++ <img src="recording.png" alt="recording.png">
+ <br><p>
+ <br><p>
+-<p><em>Recording window areas</em>
++ <p><em>Recording window areas</em>
+
+-<p>Recording in Cinelerra is organized around batches. A batch
++ <p>Recording in Cinelerra is organized around batches. A batch
+ essentially defines a distinct output file for the recording. For now
+ you can ignore the batch concept entirely and record merely by hitting
+ the record button <img src="record.png" alt="record.png">.
+
+-<p>The record button opens the current output file if it isn't opened and
++ <p>The record button opens the current output file if it isn't opened and
+ writes captured data to it. Use the stop button to stop the
+ recording. Recording can be resumed with the record button without
+ erasing the file at this point. In the case of a video file, there is
+ a single frame record button <img src="singleframe.png" alt="singleframe.png"> which records a single
+ frame.
+
+-<p>When enough media is recorded, choose an insertion method from the
++ <p>When enough media is recorded, choose an insertion method from the
+ <em>Insertion Strategy</em> menu and hit <em>close</em>.
+
+-<ul>
+-<li><a accesskey=1 href="#BATCHES">BATCHES</a>:
+-<li><a accesskey=2 href="#EDITING%20TUNER%20INFORMATION">EDITING TUNER INFORMATION</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#BATCHES">BATCHES</a>:
++<li><a accesskey="2" href="#EDITING%20TUNER%20INFORMATION">EDITING TUNER INFORMATION</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="BATCHES">BATCHES</a>,
+-Next:<a rel=next accesskey=n href="#EDITING%20TUNER%20INFORMATION">EDITING TUNER INFORMATION</a>,
+-Up:<a rel=up accesskey=u href="#CAPTURING%20MEDIA">CAPTURING MEDIA</a>
++Next:<a rel="next" accesskey="n" href="#EDITING%20TUNER%20INFORMATION">EDITING TUNER INFORMATION</a>,
++Up:<a rel="up" accesskey="u" href="#CAPTURING%20MEDIA">CAPTURING MEDIA</a>
+ <br>
++</div>
+
+-<h3>BATCHES</h3>
++<h3 class="section">BATCHES</h3>
+
+-<p>Now we come to the concept of batches. Batches try to make the dumb
++ <p>Now we come to the concept of batches. Batches try to make the dumb
+ I/O look more like a filesystem. Batches are traditionally used to
+ divide tape into different programs and save the different programs as
+ different files instead of recording straight through an entire tape.
+@@ -3506,33 +3617,33 @@
+ shows or time lapse movies as anyone who can't afford proper appliances
+ knows.
+
+-<p>The record window supports a list of batches and two recording modes:
++ <p>The record window supports a list of batches and two recording modes:
+ interactive and batch recording. Interactive recording happens when
+ the record button is pressed. Interactive recording starts immediately
+ and uses the current batch to determine everything except start time.
+ By default, the current batch is configured to behave like tape.
+
+-<p>Batch recording happens when the <em>start</em> button is pressed. In
++ <p>Batch recording happens when the <em>start</em> button is pressed. In
+ batch recording, the <em>start time</em> is the time the batch starts
+ recording.
+
+-<p>First, you'll want to create some batches. Each batch has certain
++ <p>First, you'll want to create some batches. Each batch has certain
+ parameters and methods of adjustment.
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ <em>On</em> determines whether the batch is included in batch recording
+ operations. Click the list row under <em>On</em> to enable or disable
+ batches.
+
+-<li>
++ <li>
+ <em>Path</em> is the file the batch is going to be recorded to. The
+ filename specified in the record dialog is the name of the first batch,
+ to simplify interactive recording, but the filename may be changed in
+ the record window for any batch in the <em>edit batch</em> area.
+
+-<li>
++ <li>
+ <em>News</em> shows whether the file exists or not. This is a very
+ important attribute since there is no confirmation dialog if the file
+ exists. The first time you hit record, the file is opened. If the
+@@ -3541,128 +3652,134 @@
+ in the same batch, the news should say <em>Open</em>, indicating the file
+ is already opened and won't be erased in the next record button press.
+
+-<p>If you change out of the current batch after recording, the file is
++ <p>If you change out of the current batch after recording, the file is
+ closed. Next time you change into the batch, the file will be erased.
+
+-</p><li>
++ </p><li>
+ <em>Start time</em> is the 24 hour time of day the batch will start
+ recording if in batch mode. The start time may become a time of tape
+ and reel number if deck control is implemented but for now it's a time
+ of day.
+
+-<li>
++ <li>
+ <em>Duration</em> is the length of the batch. It only has meaning if the
+ <em>Mode</em> of the batch is <em>Timed</em>. Once the recording length
+ reaches <em>duration</em> the recording stops, whether in interactive or
+ batch mode.
+
+-<li>
++ <li>
+ <em>Source</em> has meaning only when the capturing hardware has multiple
+ sources. Usually the source is a tuner channel or input. When the
+ current batch finishes and the next batch begins recording, the source
+ is changed to what the next batch is set to. This way multiple TV
+ stations can be recorded at different times.
+
+-</ul>
++ </ul>
+
+-<p>The record window has a notion of the <em>current batch</em>. The
++ <p>The record window has a notion of the <em>current batch</em>. The
+ current batch is not the same as the batch which is highlighted in the
+ batch list. The current batch text is colored red in the batch list.
+ The highlighted batch is merely displayed in the edit batch section for
+ editing.
+
+-<p>By coloring the current batch red, any batch can be edited by
++ <p>By coloring the current batch red, any batch can be edited by
+ highlighting it, without changing the batch to be recorded.
+
+-<p>All recording operations take place in the current batch. If there
++ <p>All recording operations take place in the current batch. If there
+ are multiple batches, highlight the desired batch and hit
+ <em>activate</em> to make it the current batch. If the <em>start</em>
+ button is pressed, the current batch flashes to indicate it's waiting
+ for the start time in batch mode. If the <em>record</em> button is
+ pressed, the current batch is recorded immediately in interactive mode.
+
+-<p>In batch and interactive recording modes, when the current batch
++ <p>In batch and interactive recording modes, when the current batch
+ finishes recording the next batch is activated and performed. All
+ future recording is done in batch mode. When the first batch finishes,
+ the next batch flashes until its start time is reached.
+
+-<p>Interrupt either the batch or the interactive operation by hitting the
++ <p>Interrupt either the batch or the interactive operation by hitting the
+ stop button.
+
+-<p>Finally there is the <img src="rewind.png" alt="rewind.png"> rewind button. In either
++ <p>Finally there is the <img src="rewind.png" alt="rewind.png"> rewind button. In either
+ interactive or batch recording, the rewind button causes the current
+ batch to close its file. The next recording operation in the current
+ batch deletes the file.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="EDITING%20TUNER%20INFORMATION">EDITING TUNER INFORMATION</a>,
+-Previous:<a rel=previous accesskey=p href="#BATCHES">BATCHES</a>,
+-Up:<a rel=up accesskey=u href="#CAPTURING%20MEDIA">CAPTURING MEDIA</a>
++Previous:<a rel="previous" accesskey="p" href="#BATCHES">BATCHES</a>,
++Up:<a rel="up" accesskey="u" href="#CAPTURING%20MEDIA">CAPTURING MEDIA</a>
+ <br>
++</div>
+
+-<h3>EDITING TUNER INFORMATION</h3>
++<h3 class="section">EDITING TUNER INFORMATION</h3>
+
+-<p>Sometimes in the recording process and the configuration process,
++ <p>Sometimes in the recording process and the configuration process,
+ you'll need to define and select tuner channels to either record or
+ play back to. In the case of the Video4Linux recording driver, tuner
+ channels define the source. In the case of the Buz playback driver,
+ tuner channels define the destination.
+
+-<p>Defining tuner channels is accomplished by pushing the <img src="channel.png" alt="channel.png">
++ <p>Defining tuner channels is accomplished by pushing the <img src="channel.png" alt="channel.png">
+ channel button. This brings up the channel editing window. In this
+ window you add, edit, and sort channels. Also, for certain video
+ drivers, you can adjust the picture quality.
+
+-<p>The <em>add</em> operation brings up a channel editing box. The title of
++ <p>The <em>add</em> operation brings up a channel editing box. The title of
+ the channel appears in the channel list. The source of the channel is
+ the entry in the physical tuner's frequency table corresponding to the
+ title.
+
+-<p>Fine tuning in the channel edit dialog adjusts the physical frequency
++ <p>Fine tuning in the channel edit dialog adjusts the physical frequency
+ slightly if the driver supports it. The norm and frequency table
+ together define which frequency table is selected for defining
+ sources. If the device supports multiple inputs, the input menu
+ selects these.
+
+-<p>To sort channels, highlight the channel in the list and push <em>move
++ <p>To sort channels, highlight the channel in the list and push <em>move
+ up</em> or <em>move down</em> to move it.
+
+-<p>Once channels are defined, the <em>source</em> item in the record window
++ <p>Once channels are defined, the <em>source</em> item in the record window
+ can be used to select channels for recording. The same channel
+ selecting ability also exists in the record monitor window. Be aware
+ channel selections in the record monitor window and the record window
+ are stored in the current batch.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>,
+-Next:<a rel=next accesskey=n href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>,
+-Previous:<a rel=previous accesskey=p href="#CAPTURING%20MEDIA">CAPTURING MEDIA</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
+-<br>
+-
+-<h2>IMPROVING PERFORMANCE</h2>
+-
+-<ul>
+-<li><a accesskey=1 href="#DISABLING%20SWAP%20SPACE">DISABLING SWAP SPACE</a>:
+-<li><a accesskey=2 href="#ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS</a>:
+-<li><a accesskey=3 href="#MAKING%20XFree86%20FASTER">MAKING XFree86 FASTER</a>:
+-<li><a accesskey=4 href="#FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY</a>:
+-<li><a accesskey=5 href="#SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE</a>:
+-<li><a accesskey=6 href="#DISABLING%20CRON">DISABLING CRON</a>:
+-<li><a accesskey=7 href="#REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>:
+-<li><a accesskey=8 href="#ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS</a>:
+-<li><a accesskey=9 href="#SPEEDING%20UP%20THE%20FILE%20SYSTEM">SPEEDING UP THE FILE SYSTEM</a>:
++Next:<a rel="next" accesskey="n" href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>,
++Previous:<a rel="previous" accesskey="p" href="#CAPTURING%20MEDIA">CAPTURING MEDIA</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
++<br>
++</div>
++
++<h2 class="chapter">IMPROVING PERFORMANCE</h2>
++
++<ul class="menu">
++<li><a accesskey="1" href="#DISABLING%20SWAP%20SPACE">DISABLING SWAP SPACE</a>:
++<li><a accesskey="2" href="#ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS</a>:
++<li><a accesskey="3" href="#MAKING%20XFree86%20FASTER">MAKING XFree86 FASTER</a>:
++<li><a accesskey="4" href="#FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY</a>:
++<li><a accesskey="5" href="#SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE</a>:
++<li><a accesskey="6" href="#DISABLING%20CRON">DISABLING CRON</a>:
++<li><a accesskey="7" href="#REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>:
++<li><a accesskey="8" href="#ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS</a>:
++<li><a accesskey="9" href="#SPEEDING%20UP%20THE%20FILE%20SYSTEM">SPEEDING UP THE FILE SYSTEM</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="DISABLING%20SWAP%20SPACE">DISABLING SWAP SPACE</a>,
+-Next:<a rel=next accesskey=n href="#ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS</a>,
+-Up:<a rel=up accesskey=u href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
++Next:<a rel="next" accesskey="n" href="#ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS</a>,
++Up:<a rel="up" accesskey="u" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
+ <br>
++</div>
+
+-<h3>DISABLING SWAP SPACE</h3>
++<h3 class="section">DISABLING SWAP SPACE</h3>
+
+-<p>On systems with lots of memory, Cinelerra sometimes runs better without
++ <p>On systems with lots of memory, Cinelerra sometimes runs better without
+ a swap space. If you have 4 GB of RAM, you're probably better off
+ without a swap space. If you have 512MB of RAM, you should keep the
+ swap. If you want to do recording, you should probably disable swap
+@@ -3671,353 +3788,375 @@
+ free pages to swap, in order to cache more disk access. In a 4 GB
+ system, you start waiting for page swaps after using only 2 GB.
+
+-<p>The question then is how to make Linux run without a swap space.
++ <p>The question then is how to make Linux run without a swap space.
+ Theoretically it should be a matter of running
+
+-<br><pre>swapoff -a
+-</pre>
++<pre class="example"> swapoff -a
++ </pre>
+
+-<p>Unfortunately, without a swap space the <b>kswapd</b> tasklet normally
++ <p>Unfortunately, without a swap space the <b>kswapd</b> tasklet normally
+ spins at 100%. To eliminate this problem, edit <b>linux/mm/vmscan.c</b>.
+ In this file, put a line saying <b>return 0;</b> before it says
+
+-<br><pre> /*
+- * Kswapd main loop.
+- */
+-</pre>
++<pre class="example"> /*
++ * Kswapd main loop.
++ */
++ </pre>
+
+-<p>Then recompile the kernel.
++ <p>Then recompile the kernel.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS</a>,
+-Next:<a rel=next accesskey=n href="#MAKING%20XFree86%20FASTER">MAKING XFree86 FASTER</a>,
+-Previous:<a rel=previous accesskey=p href="#DISABLING%20SWAP%20SPACE">DISABLING SWAP SPACE</a>,
+-Up:<a rel=up accesskey=u href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
++Next:<a rel="next" accesskey="n" href="#MAKING%20XFree86%20FASTER">MAKING XFree86 FASTER</a>,
++Previous:<a rel="previous" accesskey="p" href="#DISABLING%20SWAP%20SPACE">DISABLING SWAP SPACE</a>,
++Up:<a rel="up" accesskey="u" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
+ <br>
++</div>
+
+-<h3>ENLARGING SOUND BUFFERS</h3>
++<h3 class="section">ENLARGING SOUND BUFFERS</h3>
+
+-<p>In order to improve realtime performance, the audio buffers for all the
++ <p>In order to improve realtime performance, the audio buffers for all the
+ Linux sound drivers were limited from 127k to 64k. For recording audio
+ and video simultaneously and for most audio recording this causes
+ dropouts. Application of low latency and preemtible kernel patches
+ make it possible to record more audio recordings but it doesn't improve
+ recording video with audio. This is where you need to hack the kernel.
+
+-<p>This only applies to the OSS version of the Soundblaster Live driver.
++ <p>This only applies to the OSS version of the Soundblaster Live driver.
+ Since every sound card and every sound driver derivative has a
+ different implementation you'll need to do some searching for other
+ sound cards. Edit <b>linux/drivers/sound/emu10k1/audio.c</b>
+
+-<p>Where is says
++ <p>Where is says
+
+-<br><pre>if (bufsize &gt;= 0x10000)
+-</pre>
++<pre class="example"> if (bufsize &gt;= 0x10000)
++ </pre>
+
+-<p>change it to say
++ <p>change it to say
+
+-<br><pre>if (bufsize &gt; 0x40000)
+-</pre>
++<pre class="example"> if (bufsize &gt; 0x40000)
++ </pre>
+
+-<p>In <b>linux/drivers/sound/emu10k1/hwaccess.h</b>
++ <p>In <b>linux/drivers/sound/emu10k1/hwaccess.h</b>
+
+-<p>Change
++ <p>Change
+
+-<p><b>#define MAXBUFSIZE 65536</b>
++ <p><b>#define MAXBUFSIZE 65536</b>
+
+-<p>to
++ <p>to
+
+-<p><b>#define MAXBUFSIZE 262144</b>
++ <p><b>#define MAXBUFSIZE 262144</b>
+
+-<p>Finally, in <b>linux/drivers/sound/emu10k1/cardwi.h</b>
++ <p>Finally, in <b>linux/drivers/sound/emu10k1/cardwi.h</b>
+
+-<p><b>#define WAVEIN_MAXBUFSIZE 65536</b>
++ <p><b>#define WAVEIN_MAXBUFSIZE 65536</b>
+
+-<p>to
++ <p>to
+
+-<p><b>#define WAVEIN_MAXBUFSIZE 262144</b>
++ <p><b>#define WAVEIN_MAXBUFSIZE 262144</b>
+
+-<p>Then recompile the kernel modules.
++ <p>Then recompile the kernel modules.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="MAKING%20XFree86%20FASTER">MAKING XFree86 FASTER</a>,
+-Next:<a rel=next accesskey=n href="#FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY</a>,
+-Previous:<a rel=previous accesskey=p href="#ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS</a>,
+-Up:<a rel=up accesskey=u href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
++Next:<a rel="next" accesskey="n" href="#FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY</a>,
++Previous:<a rel="previous" accesskey="p" href="#ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS</a>,
++Up:<a rel="up" accesskey="u" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
+ <br>
++</div>
+
+-<h3>MAKING XFree86 FASTER</h3>
++<h3 class="section">MAKING XFree86 FASTER</h3>
+
+-<p>XFree86 by default can't display Cinelerra's advanced pixmap rendering
++ <p>XFree86 by default can't display Cinelerra's advanced pixmap rendering
+ very fast. The X server stalls during list box drawing. Fix this by
+ adding a line to your XF86Config* files.
+
+-<p>In the <b>Section "Device"</b> area, add a line saying:
++ <p>In the <b>Section "Device"</b> area, add a line saying:
+
+-<p><b>Option "XaaNoOffscreenPixmaps"</b>
++ <p><b>Option "XaaNoOffscreenPixmaps"</b>
+
+-<p>and restart the X server.
++ <p>and restart the X server.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY</a>,
+-Next:<a rel=next accesskey=n href="#SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE</a>,
+-Previous:<a rel=previous accesskey=p href="#MAKING%20XFree86%20FASTER">MAKING XFree86 FASTER</a>,
+-Up:<a rel=up accesskey=u href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
++Next:<a rel="next" accesskey="n" href="#SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE</a>,
++Previous:<a rel="previous" accesskey="p" href="#MAKING%20XFree86%20FASTER">MAKING XFree86 FASTER</a>,
++Up:<a rel="up" accesskey="u" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
+ <br>
++</div>
+
+-<h3>FREEING MORE SHARED MEMORY</h3>
++<h3 class="section">FREEING MORE SHARED MEMORY</h3>
+
+-<p>The Linux kernel only allows 32MB of shared memory to be allocated by
++ <p>The Linux kernel only allows 32MB of shared memory to be allocated by
+ default. This needs to be increased to do anything useful. Run the
+ following command:
+
+-<p><b>echo "0x7fffffff" &gt; /proc/sys/kernel/shmmax</b>
++ <p><b>echo "0x7fffffff" &gt; /proc/sys/kernel/shmmax</b>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE</a>,
+-Next:<a rel=next accesskey=n href="#DISABLING%20CRON">DISABLING CRON</a>,
+-Previous:<a rel=previous accesskey=p href="#FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY</a>,
+-Up:<a rel=up accesskey=u href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
++Next:<a rel="next" accesskey="n" href="#DISABLING%20CRON">DISABLING CRON</a>,
++Previous:<a rel="previous" accesskey="p" href="#FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY</a>,
++Up:<a rel="up" accesskey="u" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
+ <br>
++</div>
+
+-<h3>SPEEDING UP THE HARD DRIVE</h3>
++<h3 class="section">SPEEDING UP THE HARD DRIVE</h3>
+
+-<p>This is a very popular command sequence among Linux gurus, which is not
++ <p>This is a very popular command sequence among Linux gurus, which is not
+ done by default on Linux distributions.
+
+-<p><b>hdparm -c3 -d1 -u1 -k1 /dev/hda</b>
++ <p><b>hdparm -c3 -d1 -u1 -k1 /dev/hda</b>
+
+-<p><b>-c3</b> puts the hard drive into 32 bit I/O with sync. This normally
++ <p><b>-c3</b> puts the hard drive into 32 bit I/O with sync. This normally
+ doesn't work due to inept kernel support for most IDE controllers. If
+ you get lost interrupt or SeekComplete errors, quickly use <b>-c0</b>
+ instead of <b>-c3</b> in your command.
+
+-<p><b>-d1</b> enables DMA of course. This frees up the CPU partially during
++ <p><b>-d1</b> enables DMA of course. This frees up the CPU partially during
+ data transfers.
+
+-<p><b>-u1</b> allows multiple interrupts to be handled during hard drive
++ <p><b>-u1</b> allows multiple interrupts to be handled during hard drive
+ transactions. This frees up even more CPU time.
+
+-<p><b>-k1</b> prevents Linux from resetting your settings in case of a
++ <p><b>-k1</b> prevents Linux from resetting your settings in case of a
+ glitch.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="DISABLING%20CRON">DISABLING CRON</a>,
+-Next:<a rel=next accesskey=n href="#REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>,
+-Previous:<a rel=previous accesskey=p href="#SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE</a>,
+-Up:<a rel=up accesskey=u href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
++Next:<a rel="next" accesskey="n" href="#REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>,
++Previous:<a rel="previous" accesskey="p" href="#SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE</a>,
++Up:<a rel="up" accesskey="u" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
+ <br>
++</div>
+
+-<h3>DISABLING CRON</h3>
++<h3 class="section">DISABLING CRON</h3>
+
+-<p>Linux runs some daily operations like compressing man pages. These may
++ <p>Linux runs some daily operations like compressing man pages. These may
+ be acceptable background tasks while compiling or word processing but
+ not while playing video. Disable these operations by editing
+ <b>/etc/rc.d/init.d/anacron</b>.
+
+-<p>Put <b>exit</b> before the first line not beginning in <b>#</b>.
++ <p>Put <b>exit</b> before the first line not beginning in <b>#</b>.
+
+-<p>In <b>/etc/rc.d/init.d/crond</b> put <b>exit</b> before the first line not
++ <p>In <b>/etc/rc.d/init.d/crond</b> put <b>exit</b> before the first line not
+ beginning in <b>#</b>. Then make like Win 2000 and reboot.
+
+-<p>You can't use the <b>at</b> command anymore, but who uses that command
++ <p>You can't use the <b>at</b> command anymore, but who uses that command
+ anyways?
+
++<div class="node">
+ <p><hr>
+ Node:<a name="REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>,
+-Next:<a rel=next accesskey=n href="#ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS</a>,
+-Previous:<a rel=previous accesskey=p href="#DISABLING%20CRON">DISABLING CRON</a>,
+-Up:<a rel=up accesskey=u href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
++Next:<a rel="next" accesskey="n" href="#ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS</a>,
++Previous:<a rel="previous" accesskey="p" href="#DISABLING%20CRON">DISABLING CRON</a>,
++Up:<a rel="up" accesskey="u" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
+ <br>
++</div>
+
+-<h3>REDUCING USB MOUSE SENSITIVITY</h3>
++<h3 class="section">REDUCING USB MOUSE SENSITIVITY</h3>
+
+-<p>Gamers like high resolution mice, but this can be painful for precisely
++ <p>Gamers like high resolution mice, but this can be painful for precisely
+ positioning the mouse on a timeline or video screen. XFree86 once
+ allowed you to reduce PS/2 mouse sensitivity using commands like
+ <b>xset m 1 1</b> but you're out of luck with USB mice or KVM's.
+
+-<p>We have a way to reduce USB mouse sensitivity. Edit
++ <p>We have a way to reduce USB mouse sensitivity. Edit
+ <b>/usr/src/linux/drivers/input/mousedev.c</b>.
+
+-<p>After the line saying
+-
+-<br><pre>struct mousedev_list {
+-</pre>
+-
+-<p>put
++ <p>After the line saying
+
+-<br><pre>#define DOWNSAMPLE 4
+-int x_accum, y_accum;
+-</pre>
+-
+-<p>Next, the section which says something like:
+-
+-<br><pre>case EV_REL:
+- switch (code) {
+- case REL_X: list-&gt;dx += value; break;
+- case REL_Y: list-&gt;dy -= value; break;
+- case REL_WHEEL: if (list-&gt;mode) list-&gt;dz -= value; break;
+- }
+- break;
+-</pre>
+-
+-<p>must be replaced by
+-
+-<br><pre>
+-case EV_REL:
+- switch (code) {
+- case REL_X:
+- list-&gt;x_accum += value;
+- list-&gt;dx += list-&gt;x_accum / DOWNSAMPLE;
+- list-&gt;x_accum %= DOWNSAMPLE;
+- break;
+- case REL_Y:
+- list-&gt;y_accum += value;
+- list-&gt;dy -= list-&gt;y_accum / DOWNSAMPLE;
+- list-&gt;y_accum %= DOWNSAMPLE;
+- break;
+- case REL_WHEEL: if (list-&gt;mode) list-&gt;dz -= value; break;
+- }
+- break;
++<pre class="example"> struct mousedev_list {
++ </pre>
+
++ <p>put
+
++<pre class="example"> #define DOWNSAMPLE 4
++ int x_accum, y_accum;
++ </pre>
++
++ <p>Next, the section which says something like:
++
++<pre class="example"> case EV_REL:
++ switch (code) {
++ case REL_X: list-&gt;dx += value; break;
++ case REL_Y: list-&gt;dy -= value; break;
++ case REL_WHEEL: if (list-&gt;mode) list-&gt;dz -= value; break;
++ }
++ break;
++ </pre>
++
++ <p>must be replaced by
++
++<pre class="example">
++ case EV_REL:
++ switch (code) {
++ case REL_X:
++ list-&gt;x_accum += value;
++ list-&gt;dx += list-&gt;x_accum / DOWNSAMPLE;
++ list-&gt;x_accum %= DOWNSAMPLE;
++ break;
++ case REL_Y:
++ list-&gt;y_accum += value;
++ list-&gt;dy -= list-&gt;y_accum / DOWNSAMPLE;
++ list-&gt;y_accum %= DOWNSAMPLE;
++ break;
++ case REL_WHEEL: if (list-&gt;mode) list-&gt;dz -= value; break;
++ }
++ break;
++
++
++
++ </pre>
+
+-</pre>
+-
+-<p>Change the value of <b>DOWNSAMPLE</b> to change the mouse sensitivity.
++ <p>Change the value of <b>DOWNSAMPLE</b> to change the mouse sensitivity.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS</a>,
+-Next:<a rel=next accesskey=n href="#SPEEDING%20UP%20THE%20FILE%20SYSTEM">SPEEDING UP THE FILE SYSTEM</a>,
+-Previous:<a rel=previous accesskey=p href="#REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>,
+-Up:<a rel=up accesskey=u href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
++Next:<a rel="next" accesskey="n" href="#SPEEDING%20UP%20THE%20FILE%20SYSTEM">SPEEDING UP THE FILE SYSTEM</a>,
++Previous:<a rel="previous" accesskey="p" href="#REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>,
++Up:<a rel="up" accesskey="u" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
+ <br>
++</div>
+
+-<h3>ASSORTED X TWEEKS</h3>
++<h3 class="section">ASSORTED X TWEEKS</h3>
+
+-<p>Screen blanking is really annoying, unless you're fabulously rich and
++ <p>Screen blanking is really annoying, unless you're fabulously rich and
+ can afford to leave your monitor on 24 hours a day without power saving
+ mode. In <b>/etc/X11/xinit/xinitrc</b> put
+
+-<br><pre>xset s off
+-xset s noblank
+-</pre>
++<pre class="example"> xset s off
++ xset s noblank
++ </pre>
+
+-<p>before the first <b>if</b> statement.
++ <p>before the first <b>if</b> statement.
+
+-<p>How about those windows keys which no Linux distribution even thinks to
++ <p>How about those windows keys which no Linux distribution even thinks to
+ use. You can make the window keys provide ALT functionality by editing
+ <b>/etc/X11/Xmodmap</b>. Append the following to it.
+
+-<br><pre>keycode 115 = Hyper_L
+-keycode 116 = Hyper_R
+-add mod4 = Hyper_L
+-add mod5 = Hyper_R
+-</pre>
++<pre class="example"> keycode 115 = Hyper_L
++ keycode 116 = Hyper_R
++ add mod4 = Hyper_L
++ add mod5 = Hyper_R
++ </pre>
+
+-<p>The actual changes to a window manager to make it recognize window keys
++ <p>The actual changes to a window manager to make it recognize window keys
+ for ALT are complex. In <b>FVWM</b> at least, you can edit
+ <b>/etc/X11/fvwm/system.fvwm2rc</b> and put
+
+-<br><pre>Mouse 0 T A move-and-raise-or-raiselower
+-#Mouse 0 W M move
+-Mouse 0 W 4 move
+-Mouse 0 W 5 move
+-Mouse 0 F A resize-or-raiselower
+-Mouse 0 S A resize-or-raiselower
+-</pre>
++<pre class="example"> Mouse 0 T A move-and-raise-or-raiselower
++ #Mouse 0 W M move
++ Mouse 0 W 4 move
++ Mouse 0 W 5 move
++ Mouse 0 F A resize-or-raiselower
++ Mouse 0 S A resize-or-raiselower
++ </pre>
+
+-<p>in place of the default section for moving and resizing. Your best
++ <p>in place of the default section for moving and resizing. Your best
+ performance is going to be on FVWM. Other window managers seem to slow
+ down video with extra event trapping and aren't as efficient in layout.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="SPEEDING%20UP%20THE%20FILE%20SYSTEM">SPEEDING UP THE FILE SYSTEM</a>,
+-Previous:<a rel=previous accesskey=p href="#ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS</a>,
+-Up:<a rel=up accesskey=u href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
++Previous:<a rel="previous" accesskey="p" href="#ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS</a>,
++Up:<a rel="up" accesskey="u" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>
+ <br>
++</div>
+
+-<h3>SPEEDING UP THE FILE SYSTEM</h3>
++<h3 class="section">SPEEDING UP THE FILE SYSTEM</h3>
+
+-<p>You'll often store video on an expensive, gigantic disk array separate
++ <p>You'll often store video on an expensive, gigantic disk array separate
+ from your boot disk. You'll thus have to manually install an EXT
+ filesystem on this disk array, using the <b>mke2fs</b> command. By far
+ the fastest file system is
+
+-<br><pre>
+-mke2fs -i 65536 -b 4096 my_device
+-tune2fs -r0 -c10000 my_device
+-
+-</pre>
++<pre class="example">
++ mke2fs -i 65536 -b 4096 my_device
++ tune2fs -r0 -c10000 my_device
++
++ </pre>
+
+-<p>This has no journaling, reserves as few blocks as possible for
++ <p>This has no journaling, reserves as few blocks as possible for
+ filenames, and accesses the largest amount of data per block possible.
+ A slightly slower file system, which is easier to recover after power
+ failures is
+
+-<br><pre>
+-mke2fs -j -i 65536 -b 4096 my_device
+-tune2fs -r0 -c10000 my_device
+-
+-</pre>
++<pre class="example">
++ mke2fs -j -i 65536 -b 4096 my_device
++ tune2fs -r0 -c10000 my_device
++
++ </pre>
+
+-<p>This adds a journal which slows down the writes but makes us immune to
++ <p>This adds a journal which slows down the writes but makes us immune to
+ power failures.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>,
+-Next:<a rel=next accesskey=n href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>,
+-Previous:<a rel=previous accesskey=p href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>,
++Previous:<a rel="previous" accesskey="p" href="#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>EFFECT DESCRIPTIONS</h2>
++<h2 class="chapter">EFFECT DESCRIPTIONS</h2>
+
+-<p>Most effects in Cinelerra can be figured out just by using them and
++ <p>Most effects in Cinelerra can be figured out just by using them and
+ tweeking. Here are brief descriptions of effects which you might not
+ utilize fully by mere experimentation.
+
+-<ul>
+-<li><a accesskey=1 href="#CHROMA%20KEY">CHROMA KEY</a>:
+-<li><a accesskey=2 href="#HISTOGRAM">HISTOGRAM</a>:
+-<li><a accesskey=3 href="#TIME%20AVERAGE">TIME AVERAGE</a>:
+-<li><a accesskey=4 href="#VIDEO%20SCOPE">VIDEO SCOPE</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#CHROMA%20KEY">CHROMA KEY</a>:
++<li><a accesskey="2" href="#HISTOGRAM">HISTOGRAM</a>:
++<li><a accesskey="3" href="#TIME%20AVERAGE">TIME AVERAGE</a>:
++<li><a accesskey="4" href="#VIDEO%20SCOPE">VIDEO SCOPE</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="CHROMA%20KEY">CHROMA KEY</a>,
+-Next:<a rel=next accesskey=n href="#HISTOGRAM">HISTOGRAM</a>,
+-Up:<a rel=up accesskey=u href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>
++Next:<a rel="next" accesskey="n" href="#HISTOGRAM">HISTOGRAM</a>,
++Up:<a rel="up" accesskey="u" href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>
+ <br>
++</div>
+
+-<h3>CHROMA KEY</h3>
++<h3 class="section">CHROMA KEY</h3>
+
+-<p>This effect replaces the selected color or intensity with black if
++ <p>This effect replaces the selected color or intensity with black if
+ there is no alpha channel and replaces it with transparency if there is
+ an alpha channel. The selection of color model is important.
+
+-<p>Chroma key uses either the value or the hue to determine what is
++ <p>Chroma key uses either the value or the hue to determine what is
+ erased. If this parameter is within a certain threshold it's erased.
+ It's not a simple on/off switch, however. As the selected parameter
+ approaches the edge of the threshold, it gradually gets erased if the
+ slope is low or is completely erased if the slope is high.
+
+-<p>The slope tries to soften the edges of the chroma key but it doesn't
++ <p>The slope tries to soften the edges of the chroma key but it doesn't
+ work well for compressed sources. A popular softening technique is to
+ use a maximum slope and chain a blur effect below the chroma key effect
+ to blur just the alpha.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="HISTOGRAM">HISTOGRAM</a>,
+-Next:<a rel=next accesskey=n href="#TIME%20AVERAGE">TIME AVERAGE</a>,
+-Previous:<a rel=previous accesskey=p href="#CHROMA%20KEY">CHROMA KEY</a>,
+-Up:<a rel=up accesskey=u href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>
++Next:<a rel="next" accesskey="n" href="#TIME%20AVERAGE">TIME AVERAGE</a>,
++Previous:<a rel="previous" accesskey="p" href="#CHROMA%20KEY">CHROMA KEY</a>,
++Up:<a rel="up" accesskey="u" href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>
+ <br>
++</div>
+
+-<h3>HISTOGRAM</h3>
++<h3 class="section">HISTOGRAM</h3>
+
+-<p>This shows the number of occurances of each value of a certain color
++ <p>This shows the number of occurances of each value of a certain color
+ channel. It is always performed in 16 bit RGB regardless of the
+ project colorspace. Use the upper gradient to determine the range of
+ input intensities to be expanded to the output. Use the lower gradient
+@@ -4027,321 +4166,333 @@
+ automatic mode and determines how sensitive to the upper and lower
+ boundaries of the histogram the automatic gain should be.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="TIME%20AVERAGE">TIME AVERAGE</a>,
+-Next:<a rel=next accesskey=n href="#VIDEO%20SCOPE">VIDEO SCOPE</a>,
+-Previous:<a rel=previous accesskey=p href="#HISTOGRAM">HISTOGRAM</a>,
+-Up:<a rel=up accesskey=u href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>
++Next:<a rel="next" accesskey="n" href="#VIDEO%20SCOPE">VIDEO SCOPE</a>,
++Previous:<a rel="previous" accesskey="p" href="#HISTOGRAM">HISTOGRAM</a>,
++Up:<a rel="up" accesskey="u" href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>
+ <br>
++</div>
+
+-<h3>TIME AVERAGE</h3>
++<h3 class="section">TIME AVERAGE</h3>
+
+-<p>Time average is one effect which has many uses besides creating nifty
++ <p>Time average is one effect which has many uses besides creating nifty
+ trail patterns of moving objects. It's main use is reducing noise in
+ still images. Merely point a video camera at a stationary subject for
+ 30 frames, capture the frames, and average them using TIME AVERAGE and
+ you'll have a super high quality print. In 16 bit colormodels, time
+ average can increase the dynamic range of lousy cameras.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="VIDEO%20SCOPE">VIDEO SCOPE</a>,
+-Previous:<a rel=previous accesskey=p href="#TIME%20AVERAGE">TIME AVERAGE</a>,
+-Up:<a rel=up accesskey=u href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>
++Previous:<a rel="previous" accesskey="p" href="#TIME%20AVERAGE">TIME AVERAGE</a>,
++Up:<a rel="up" accesskey="u" href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>
+ <br>
++</div>
+
+-<h3>VIDEO SCOPE</h3>
++<h3 class="section">VIDEO SCOPE</h3>
+
+-<p>The video scope plots two views of the image. One view plots the
++ <p>The video scope plots two views of the image. One view plots the
+ intensity of each pixel against horizontal position. They call this
+ the WAVEFORM. Another view translates hue to angle and saturation to
+ radius for each pixel. They call this the VECTORSCOPE.
+
+-<p>The vectorscope is actually very useful for determining if an image is
++ <p>The vectorscope is actually very useful for determining if an image is
+ saturated. When adjusting saturation, it's important to watch the
+ vectorscope to make sure pixels don't extend past the 100 radius.
+
+-<p>The waveform allows you to make sure image data extends from complete
++ <p>The waveform allows you to make sure image data extends from complete
+ black to complete white while adjusting the brightness/contrast.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>,
+-Next:<a rel=next accesskey=n href="#RELEASE%20NOTES">RELEASE NOTES</a>,
+-Previous:<a rel=previous accesskey=p href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Next:<a rel="next" accesskey="n" href="#RELEASE%20NOTES">RELEASE NOTES</a>,
++Previous:<a rel="previous" accesskey="p" href="#EFFECT%20DESCRIPTIONS">EFFECT DESCRIPTIONS</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>PLUGIN AUTHORING</h2>
++<h2 class="chapter">PLUGIN AUTHORING</h2>
+
+-<p>The plugin API in Cinelerra dates back to 1997, before the LADSPA and
++ <p>The plugin API in Cinelerra dates back to 1997, before the LADSPA and
+ before VST became popular. It's fundamentally the same as it was in
+ 1997, with minor modifications to handle keyframes and GUI feedback.
+ Unfortunately, the GUI is not abstracted from the programmer. This
+ allows the programmer to use whatever toolkit they want and allows more
+ flexibility in appearance but it costs more.
+
+-<p>There are several types of plugins, each with a common procedure
++ <p>There are several types of plugins, each with a common procedure
+ of implementation and specific changes for that particular type. The
+ easiest way to implement a plugin is to take the simplest out of the
+ group and rename the symbols.
+
+-<ul>
+-<li><a accesskey=1 href="#COMMON%20PROCEDURES">COMMON PROCEDURES</a>:
+-<li><a accesskey=2 href="#REALTIME%20PLUGINS">REALTIME PLUGINS</a>:
+-<li><a accesskey=3 href="#NONREALTIME%20PLUGINS">NONREALTIME PLUGINS</a>:
+-<li><a accesskey=4 href="#AUDIO%20PLUGINS">AUDIO PLUGINS</a>:
+-<li><a accesskey=5 href="#VIDEO%20PLUGINS">VIDEO PLUGINS</a>:
+-<li><a accesskey=6 href="#TRANSITION%20PLUGINS">TRANSITION PLUGINS</a>:
+-<li><a accesskey=7 href="#PLUGIN%20GUI'S%20WHICH%20UPDATE%20DURING%20PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#COMMON%20PROCEDURES">COMMON PROCEDURES</a>:
++<li><a accesskey="2" href="#REALTIME%20PLUGINS">REALTIME PLUGINS</a>:
++<li><a accesskey="3" href="#NONREALTIME%20PLUGINS">NONREALTIME PLUGINS</a>:
++<li><a accesskey="4" href="#AUDIO%20PLUGINS">AUDIO PLUGINS</a>:
++<li><a accesskey="5" href="#VIDEO%20PLUGINS">VIDEO PLUGINS</a>:
++<li><a accesskey="6" href="#TRANSITION%20PLUGINS">TRANSITION PLUGINS</a>:
++<li><a accesskey="7" href="#PLUGIN%20GUI'S%20WHICH%20UPDATE%20DURING%20PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="COMMON%20PROCEDURES">COMMON PROCEDURES</a>,
+-Next:<a rel=next accesskey=n href="#REALTIME%20PLUGINS">REALTIME PLUGINS</a>,
+-Up:<a rel=up accesskey=u href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
++Next:<a rel="next" accesskey="n" href="#REALTIME%20PLUGINS">REALTIME PLUGINS</a>,
++Up:<a rel="up" accesskey="u" href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
+ <br>
++</div>
+
+-<h3>COMMON PROCEDURES</h3>
++<h3 class="section">COMMON PROCEDURES</h3>
+
+-<p>All plugins inherit from a derivative of PluginClient. This derivative
++ <p>All plugins inherit from a derivative of PluginClient. This derivative
+ implements most of the required methods in PluginClient, but users must
+ still define methods for PluginClient. The most commonly used methods
+ are already implemented in macros.
+
+-<p>The files they include depend on the plugin type. Audio plugins
++ <p>The files they include depend on the plugin type. Audio plugins
+ include <b>pluginaclient.h</b> and video plugins include
+ <b>pluginvclient.h</b>. They inherit <b>PluginAClient</b> and
+ <b>PluginVClient</b> respectively.
+
+-<p>Another thing all plugins do is define at least three objects:
++ <p>Another thing all plugins do is define at least three objects:
+
+-<ul>
++ <ul>
+
+-<li>
++ <li>
+ Processing object - Contains pointers to all the other objects and
+ performs the signal processing. This object contains a number of
+ queries to identify itself and is the object you register to register
+ the plugin.
+
+-<li>
++ <li>
+ User interface object - This is defined according to the programmer's
+ discretion. It can either use Cinelerra's toolkit or another toolkit.
+ It shows data on the screen and collects parameters from the user.
+
+-<p>Using Cinelerra's toolkit, the only user interface object a developer
++ <p>Using Cinelerra's toolkit, the only user interface object a developer
+ needs to worry about is the Window. The window has pointers to a
+ number of widgets, a few initialization methods, and a back pointer to
+ the plugin's processing object. The documentation refers to usage of
+ Cinelerra's toolkit.
+
+-<p>Depending on the user interface toolkit, a user interface thread may be
++ <p>Depending on the user interface toolkit, a user interface thread may be
+ created to run the user interface asynchronous of everything else.
+ Synchronizing the user interface to changes in keyframes is the most
+ complicated aspect of the plugin, so the user interface thread and
+ object are heavily supported by macros if you use Cinelerra's toolkit.
+
+-</p><li>
++ </p><li>
+ Configuration object - This stores the user parameters and always needs
+ interpolation, copying, and comparison functions. The plugin client
+ automatically calls configuration methods to interpolate keyframes.
+
+-</ul>
++ </ul>
+
+-<ul>
+-<li><a accesskey=1 href="#THE%20PROCESSING%20OBJECT">THE PROCESSING OBJECT</a>:
+-<li><a accesskey=2 href="#THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT</a>:
+-<li><a accesskey=3 href="#THE%20USER%20INTERFACE%20OBJECT">THE USER INTERFACE OBJECT</a>:
++<ul class="menu">
++<li><a accesskey="1" href="#THE%20PROCESSING%20OBJECT">THE PROCESSING OBJECT</a>:
++<li><a accesskey="2" href="#THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT</a>:
++<li><a accesskey="3" href="#THE%20USER%20INTERFACE%20OBJECT">THE USER INTERFACE OBJECT</a>:
+ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="THE%20PROCESSING%20OBJECT">THE PROCESSING OBJECT</a>,
+-Next:<a rel=next accesskey=n href="#THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT</a>,
+-Up:<a rel=up accesskey=u href="#COMMON%20PROCEDURES">COMMON PROCEDURES</a>
++Next:<a rel="next" accesskey="n" href="#THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT</a>,
++Up:<a rel="up" accesskey="u" href="#COMMON%20PROCEDURES">COMMON PROCEDURES</a>
+ <br>
++</div>
+
+-<h4>THE PROCESSING OBJECT</h4>
++<h4 class="subsection">THE PROCESSING OBJECT</h4>
+
+-<p>The processing object should inherit from the intended PluginClient
++ <p>The processing object should inherit from the intended PluginClient
+ derivative. Its constructor should take a PluginServer argument.
+
+-<br><pre>MyPlugin(PluginServer *server);
+-</pre>
++<pre class="example"> MyPlugin(PluginServer *server);
++ </pre>
+
+-<p>In the implementation, the plugin must contain a registration line with
++ <p>In the implementation, the plugin must contain a registration line with
+ the name of the processing object like
+
+-<br><pre>REGISTER_PLUGIN(MyPlugin)
+-</pre>
++<pre class="example"> REGISTER_PLUGIN(MyPlugin)
++ </pre>
+
+-<p>The constructor should contain
++ <p>The constructor should contain
+
+-<br><pre>PLUGIN_CONSTRUCTOR_MACRO
+-</pre>
++<pre class="example"> PLUGIN_CONSTRUCTOR_MACRO
++ </pre>
+
+-<p>to initialize the most common variables.
++ <p>to initialize the most common variables.
+
+-<p>The processing object should have a destructor containing
++ <p>The processing object should have a destructor containing
+
+-<br><pre>PLUGIN_DESTRUCTOR_MACRO
+-</pre>
++<pre class="example"> PLUGIN_DESTRUCTOR_MACRO
++ </pre>
+
+-<p>to delete the most common variables.
++ <p>to delete the most common variables.
+
+-<p>Another function which is useful but not mandatory is
++ <p>Another function which is useful but not mandatory is
+
+-<br><pre>int is_multichannel();
+-</pre>
++<pre class="example"> int is_multichannel();
++ </pre>
+
+-<p>It should return 1 if one instance of the plugin handles multiple
++ <p>It should return 1 if one instance of the plugin handles multiple
+ channels simultaneously or 0 if one instance of the plugin only handles
+ one channel. The default is 0 if it is omitted. Multichannel plugins
+ should refer to the value of <b>PluginClient::total_in_buffers</b> to
+ determine the number of channels.
+
+-<p>To simplify the implementation of realtime plugins, a macro for
++ <p>To simplify the implementation of realtime plugins, a macro for
+ commonly used members should be put in the class header, taking the
+ configuration object and user interface thread object as arguments.
+ This is only useful for realtime plugins. Fortunately, nonrealtime
+ plugins are simpler.
+
+-<br><pre>PLUGIN_CLASS_MEMBERS(config_name, thread_name)
+-</pre>
++<pre class="example"> PLUGIN_CLASS_MEMBERS(config_name, thread_name)
++ </pre>
+
+-<p>Many other members may be defined in the processing object, depending
++ <p>Many other members may be defined in the processing object, depending
+ on the plugin type. The commonly used members in PLUGIN_CLASS_MEMBERS
+ are described below. Not all these members are used in nonrealtime
+ plugins.
+
+-<ul>
++ <ul>
+
+-<li>int load_configuration();
++ <li>int load_configuration();
+
+-<p>Loads the configuration based on surrounding keyframes and current
++ <p>Loads the configuration based on surrounding keyframes and current
+ position. The class definition should contain
+
+-<br><pre>LOAD_CONFIGURATION_MACRO(plugin_class, config_class)
+-</pre>
++ <pre class="example"> LOAD_CONFIGURATION_MACRO(plugin_class, config_class)
++ </pre>
+
+-<p>to implement load_configuration. This stores whatever the current
++ <p>to implement load_configuration. This stores whatever the current
+ configuration is inside the plugin's configuration object. The
+ plugin's configuration object is always called <b>config</b> when using
+ PLUGIN_CLASS_MEMBERS.
+
+-</p><li>VFrame* new_picon();
++ </p><li>VFrame* new_picon();
+
+-<p>Creates a picon for display in the resource window. Use
++ <p>Creates a picon for display in the resource window. Use
+
+-<br><pre>#include "picon_png.h"
+-NEW_PICON_MACRO(plugin_class)
+-</pre>
++ <pre class="example"> #include "picon_png.h"
++ NEW_PICON_MACRO(plugin_class)
++ </pre>
+
+-<p>to implement new_picon. In addition, the user should create a
++ <p>to implement new_picon. In addition, the user should create a
+ <em>picon_png.h</em> header file from a PNG image using <em>pngtoh</em>.
+ <em>pngtoh</em> is in <em>guicast</em> and compiled using a sequence like
+
+-<br><pre>gcc -o pngtoh pngtoh.c
+-</pre>
++ <pre class="example"> gcc -o pngtoh pngtoh.c
++ </pre>
+
+-<p>The source PNG image should be called picon.png and can be any format
++ <p>The source PNG image should be called picon.png and can be any format
+ supported by PNG.
+
+-</p><li>char* plugin_title();
++ </p><li>char* plugin_title();
+
+-<p>Returns a text string identifying the plugin in the resource window.
++ <p>Returns a text string identifying the plugin in the resource window.
+ The string has to be unique.
+
+-</p><li>void update_gui();
++ </p><li>void update_gui();
+
+-<p>Should first load the configuration and then redraw the GUI with the
++ <p>Should first load the configuration and then redraw the GUI with the
+ new parameters. All the plugins using GuiCast have a format like
+
+-<br><pre>void MyPlugin::update_gui()
+-{
+- if(thread)
+- {
+- load_configuration();
+- thread-&gt;window-&gt;lock_window();
+-// update widgets here
+- thread-&gt;window-&gt;unlock_window();
+- }
+-}
+-</pre>
++ <pre class="example"> void MyPlugin::update_gui()
++ {
++ if(thread)
++ {
++ load_configuration();
++ thread-&gt;window-&gt;lock_window();
++ // update widgets here
++ thread-&gt;window-&gt;unlock_window();
++ }
++ }
++ </pre>
+
+-<p>to handle concurrency and conditions of no GUI.
++ <p>to handle concurrency and conditions of no GUI.
+
+-</p><li>int show_gui();
++ </p><li>int show_gui();
+
+-<p>Instantiate the GUI and switch the plugin to GUI mode. This is implemented with
++ <p>Instantiate the GUI and switch the plugin to GUI mode. This is implemented with
+
+-<br><pre>SHOW_GUI_MACRO(plugin_class, thread_class)
+-</pre>
++ <pre class="example"> SHOW_GUI_MACRO(plugin_class, thread_class)
++ </pre>
+
+-</p><li>int set_string();
++ </p><li>int set_string();
+
+-<p>Changes the title of the GUI window to a certain string. This is implemented with
++ <p>Changes the title of the GUI window to a certain string. This is implemented with
+
+-<br><pre>SET_STRING_MACRO(plugin_class)
+-</pre>
++ <pre class="example"> SET_STRING_MACRO(plugin_class)
++ </pre>
+
+-</p><li>void raise_window();
++ </p><li>void raise_window();
+
+-<p>Raises the GUI window to the top of the stack. This is implemented with
++ <p>Raises the GUI window to the top of the stack. This is implemented with
+
+-<br><pre>RAISE_WINDOW_MACRO(plugin_class)
+-</pre>
++ <pre class="example"> RAISE_WINDOW_MACRO(plugin_class)
++ </pre>
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT</a>,
+-Next:<a rel=next accesskey=n href="#THE%20USER%20INTERFACE%20OBJECT">THE USER INTERFACE OBJECT</a>,
+-Previous:<a rel=previous accesskey=p href="#THE%20PROCESSING%20OBJECT">THE PROCESSING OBJECT</a>,
+-Up:<a rel=up accesskey=u href="#COMMON%20PROCEDURES">COMMON PROCEDURES</a>
++Next:<a rel="next" accesskey="n" href="#THE%20USER%20INTERFACE%20OBJECT">THE USER INTERFACE OBJECT</a>,
++Previous:<a rel="previous" accesskey="p" href="#THE%20PROCESSING%20OBJECT">THE PROCESSING OBJECT</a>,
++Up:<a rel="up" accesskey="u" href="#COMMON%20PROCEDURES">COMMON PROCEDURES</a>
+ <br>
++</div>
+
+-<h4>THE CONFIGURATION OBJECT</h4>
++<h4 class="subsection">THE CONFIGURATION OBJECT</h4>
+
+-<p>The configuration object is critical for GUI updates, signal
++ <p>The configuration object is critical for GUI updates, signal
+ processing, and default settings in realtime plugins. Be aware it is
+ not used in nonrealtime plugins. The configuration object inherits
+ from nothing and has no dependancies. It's merely a class containing
+ three functions and variables specific to the plugin's parameters.
+
+-<p>Usually the configuration object starts with the name of the plugin
++ <p>Usually the configuration object starts with the name of the plugin
+ followed by Config.
+
+-<br><pre>class MyPluginConfig
+-{
+-public:
+- MyPluginConfig();
+-</pre>
++<pre class="example"> class MyPluginConfig
++ {
++ public:
++ MyPluginConfig();
++ </pre>
+
+-<p>Following the name of the configuration class, we put the three
++ <p>Following the name of the configuration class, we put the three
+ required functions and the configuration variables.
+
+-<br><pre> int equivalent(MyPluginConfig &amp;that);
+- void copy_from(MyPluginConfig &amp;that);
+- void interpolate(MyPluginConfig &amp;prev,
+- MyPluginConfig &amp;next,
+- long prev_position,
+- long next_position,
+- long current_position);
+-
+-
+-
+- float parameter1;
+- float parameter2;
+- int parameter3;
+-};
++<pre class="example"> int equivalent(MyPluginConfig &amp;that);
++ void copy_from(MyPluginConfig &amp;that);
++ void interpolate(MyPluginConfig &amp;prev,
++ MyPluginConfig &amp;next,
++ long prev_position,
++ long next_position,
++ long current_position);
++
++
++
++ float parameter1;
++ float parameter2;
++ int parameter3;
++ };
++
++ </pre>
+
+-</pre>
+-
+-<p>Now you must define the three functions. <b>Equivalent</b> is called by
++ <p>Now you must define the three functions. <b>Equivalent</b> is called by
+ LOAD_CONFIGURATION_MACRO to get the return value. That is all it's
+ used for and if you don't care about load_configuration's return value,
+ you can leave this function empty. It normally returns 1 if the
+ argument's variables have the same values as the local variables.
+
+-<p>Then there's <b>copy_from</b> which transfers the configuration values
++ <p>Then there's <b>copy_from</b> which transfers the configuration values
+ from the argument to the local variables. This is once again used in
+ LOAD_CONFIGURATION_MACRO to store configurations in temporaries. Once
+ LOAD_CONFIGURATION_MACRO has replicated the configuration, it loads a
+@@ -4349,34 +4500,34 @@
+ get the current configuration. The interpolation function performs the
+ interpolation and stores the result in the local variables.
+
+-<p>Normally the interpolate function calculates a previous and next
++ <p>Normally the interpolate function calculates a previous and next
+ fraction, using the arguments.
+
+-<br><pre>void MyPluginConfig::interpolate(MyPluginConfig &amp;prev,
+- MyPluginConfig &amp;next,
+- long prev_position,
+- long next_position,
+- long current_position)
+-{
+- double next_scale = (double)(current_position - prev_position) / (next_position - prev_position);
+- double prev_scale = (double)(next_position - current_position) / (next_position - prev_position);
+-</pre>
++<pre class="example"> void MyPluginConfig::interpolate(MyPluginConfig &amp;prev,
++ MyPluginConfig &amp;next,
++ long prev_position,
++ long next_position,
++ long current_position)
++ {
++ double next_scale = (double)(current_position - prev_position) / (next_position - prev_position);
++ double prev_scale = (double)(next_position - current_position) / (next_position - prev_position);
++ </pre>
+
+-<p>Then the scales are applied to the previous and next configuration
++ <p>Then the scales are applied to the previous and next configuration
+ object to yield the current values.
+
+-<br><pre>
+- this-&gt;parameter1 = (float)(prev.parameter1 * prev_scale + next.parameter1 * next_scale);
+- this-&gt;parameter2 = (float)(prev.parameter2 * prev_scale + next.parameter2 * next_scale);
+- this-&gt;parameter3 = (int)(prev.parameter3 * prev_scale + next.parameter3 * next_scale);
+-}
+-
+-</pre>
++<pre class="example">
++ this-&gt;parameter1 = (float)(prev.parameter1 * prev_scale + next.parameter1 * next_scale);
++ this-&gt;parameter2 = (float)(prev.parameter2 * prev_scale + next.parameter2 * next_scale);
++ this-&gt;parameter3 = (int)(prev.parameter3 * prev_scale + next.parameter3 * next_scale);
++ }
++
++ </pre>
+
+-<p>Alternatively you can copy the values from the previous configuration
++ <p>Alternatively you can copy the values from the previous configuration
+ argument for no interpolation.
+
+-<p>This usage is the same in audio and video plugins. In video playback,
++ <p>This usage is the same in audio and video plugins. In video playback,
+ the interpolation function is called for every frame, yielding smooth
+ interpolation. In audio playback, the interpolation function is called
+ only once for every console fragment and once every time the insertion
+@@ -4384,7 +4535,7 @@
+ regions on the timeline but it may not be accurate enough for really
+ smooth rendering of the effect.
+
+-<p>For really smooth rendering of audio, you can still use
++ <p>For really smooth rendering of audio, you can still use
+ load_configuration when updating the GUI. For process_realtime;
+ however, ignore load_configuration and write your own interpolation
+ routine which loads all the keyframes in a console fragment and
+@@ -4392,67 +4543,69 @@
+ debug, yielding improvement which may not be audible. Then of course,
+ every century has its set of wierdos.
+
+-<p>An easier way to get smoother interpolation is to reduce the console
++ <p>An easier way to get smoother interpolation is to reduce the console
+ fragment to 1 sample. This would have to be rendered and played back
+ in a separate program of course. The Linux sound driver can't play
+ fragments of 1 sample.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="THE%20USER%20INTERFACE%20OBJECT">THE USER INTERFACE OBJECT</a>,
+-Previous:<a rel=previous accesskey=p href="#THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT</a>,
+-Up:<a rel=up accesskey=u href="#COMMON%20PROCEDURES">COMMON PROCEDURES</a>
++Previous:<a rel="previous" accesskey="p" href="#THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT</a>,
++Up:<a rel="up" accesskey="u" href="#COMMON%20PROCEDURES">COMMON PROCEDURES</a>
+ <br>
++</div>
+
+-<h4>THE USER INTERFACE OBJECT</h4>
++<h4 class="subsection">THE USER INTERFACE OBJECT</h4>
+
+-<p>The user interface object at the very least consists of a pointer to a
++ <p>The user interface object at the very least consists of a pointer to a
+ window and pointers to a set of widgets. Using Cinelerra's toolkit, it
+ consists of a <b>BCWindow</b> derivative and a <b>Thread</b> derivative. The
+ Thread derivative is declared in the plugin header using
+
+-<br><pre>PLUGIN_THREAD_HEADER(plugin_class, thread_class, window_class)
+-</pre>
++<pre class="example"> PLUGIN_THREAD_HEADER(plugin_class, thread_class, window_class)
++ </pre>
+
+-<p>Then it is defined using
++ <p>Then it is defined using
+
+-<br><pre>PLUGIN_THREAD_OBJECT(plugin_class, thread_class, window_class)
+-</pre>
++<pre class="example"> PLUGIN_THREAD_OBJECT(plugin_class, thread_class, window_class)
++ </pre>
+
+-<p>This in combination with the SHOW_GUI macro does all the work in
++ <p>This in combination with the SHOW_GUI macro does all the work in
+ instantiating the Window class. This is used in realtime plugins but
+ not in nonrealtime plugins. Nonrealtime plugins create and destroy
+ their GUI in <b>get_parameters</b> and there's no thread.
+
+-<p>Now the window class must be declared in the plugin header. It's
++ <p>Now the window class must be declared in the plugin header. It's
+ easiest to implement the window by copying an existing plugin and
+ renaming the symbols. The following is an outline of what happens.
+ The plugin header must declare the window's constructor using the
+ appropriate arguments.
+
+-<br><pre>
+-#include "guicast.h"
+-
+-class MyPluginWindow : public BC_Window
+-{
+-public:
+- MyPluginWindow(MyPluginMain *plugin, int x, int y);
+-
+-</pre>
+-
+-<p>This becomes a window on the screen, positioned at x and y.
++<pre class="example">
++ #include "guicast.h"
++
++ class MyPluginWindow : public BC_Window
++ {
++ public:
++ MyPluginWindow(MyPluginMain *plugin, int x, int y);
++
++ </pre>
++
++ <p>This becomes a window on the screen, positioned at x and y.
++
++ <p>It needs two methods
++
++<pre class="example"> int create_objects();
++ int close_event();
++ </pre>
+
+-<p>It needs two methods
++ <p>and a back pointer to the plugin
+
+-<br><pre> int create_objects();
+- int close_event();
+-</pre>
++<pre class="example"> MyPlugin *plugin;
++ </pre>
+
+-<p>and a back pointer to the plugin
+-
+-<br><pre> MyPlugin *plugin;
+-</pre>
+-
+-<p>The constructor's definition should contain extents and flags causing
++ <p>The constructor's definition should contain extents and flags causing
+ the window to be hidden when first created. The create_objects member
+ puts widgets in the window according to GuiCast's syntax. A pointer to
+ each widget which is to be synchronized to a keyframe is stored in the
+@@ -4461,353 +4614,365 @@
+ a GuiCast widget and they override functions in GuiCast to handle
+ events. Finally create_objects calls
+
+-<br><pre> show_window();
+- flush();
+-</pre>
++<pre class="example"> show_window();
++ flush();
++ </pre>
+
+-<p>to make the window appear all at once.
++ <p>to make the window appear all at once.
+
+-<p>The close_event member should be implemented using
++ <p>The close_event member should be implemented using
+
+-<br><pre>WINDOW_CLOSE_EVENT(window_class)
+-</pre>
++<pre class="example"> WINDOW_CLOSE_EVENT(window_class)
++ </pre>
+
+-<p>Every widget in the GUI needs to detect when its value changes. In
++ <p>Every widget in the GUI needs to detect when its value changes. In
+ GuiCast the <b>handle_event</b> method is called whenever the value
+ changes. In <b>handle_event</b>, the widget then needs to call
+ <b>plugin-&gt;send_configure_change()</b> to propogate the change to rendering.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="REALTIME%20PLUGINS">REALTIME PLUGINS</a>,
+-Next:<a rel=next accesskey=n href="#NONREALTIME%20PLUGINS">NONREALTIME PLUGINS</a>,
+-Previous:<a rel=previous accesskey=p href="#COMMON%20PROCEDURES">COMMON PROCEDURES</a>,
+-Up:<a rel=up accesskey=u href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
++Next:<a rel="next" accesskey="n" href="#NONREALTIME%20PLUGINS">NONREALTIME PLUGINS</a>,
++Previous:<a rel="previous" accesskey="p" href="#COMMON%20PROCEDURES">COMMON PROCEDURES</a>,
++Up:<a rel="up" accesskey="u" href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
+ <br>
++</div>
+
+-<h3>REALTIME PLUGINS</h3>
++<h3 class="section">REALTIME PLUGINS</h3>
+
+-<p>Realtime plugins should use PLUGIN_CLASS_MEMBERS to define the basic
++ <p>Realtime plugins should use PLUGIN_CLASS_MEMBERS to define the basic
+ set of members in their headers. All realtime plugins must define an
+
+-<br><pre>int is_realtime()
+-</pre>
++<pre class="example"> int is_realtime()
++ </pre>
+
+-<p>member returning 1. This causes a number of realtime methods to be
++ <p>member returning 1. This causes a number of realtime methods to be
+ called during playback and the plugin to be droppable on the timeline.
+
+-<p>Realtime plugins must define a member called
++ <p>Realtime plugins must define a member called
+
+-<br><pre>process_realtime
+-</pre>
++<pre class="example"> process_realtime
++ </pre>
+
+-<p>to be called during every audio fragment and video frame. It has an
++ <p>to be called during every audio fragment and video frame. It has an
+ input and an output argument and for audio, a size argument. The
+ process_realtime function should start by calling
+ <b>load_configuration</b>. The LOAD_CONFIGURATION_MACRO returns 1 if the
+ configuration changed. Then process_realtime should move the data from
+ the input to the output with processing.
+
+-<p>Additional members are implemented to maintain configuration in
++ <p>Additional members are implemented to maintain configuration in
+ realtime plugins. Some of these are also needed in nonrealtime
+ plugins.
+
+-<ul>
++ <ul>
+ <li>void read_data(KeyFrame *keyframe);
+
+-<p>Loads data from a keyframe into the plugin's configuration. Inside the
++ <p>Loads data from a keyframe into the plugin's configuration. Inside the
+ keyframe is an XML string. It's most easily parsed by creating a
+ <em>FileXML</em> object. See an existing plugin to see how the read_data
+ function is implemented.
+
+-<p>Read data loads data out of the XML object and stores values in the
++ <p>Read data loads data out of the XML object and stores values in the
+ plugin's configuration object.
+
+-</p><li>void save_data(KeyFrame *keyframe);
++ </p><li>void save_data(KeyFrame *keyframe);
+
+-<p>Saves data from the plugin's configuration to a keyframe. Inside the
++ <p>Saves data from the plugin's configuration to a keyframe. Inside the
+ keyframe you'll put an XML string which is normally created by a
+ FileXML object. See an existing plugin to see how the save_data
+ function is implemented.
+
+-<p>Save data saves data from the plugin's configuration object into the
++ <p>Save data saves data from the plugin's configuration object into the
+ XML object.
+
+-</p><li>int load_defaults();
++ </p><li>int load_defaults();
+
+-<p>Another way the plugin gets parameters is from a defaults file. The
++ <p>Another way the plugin gets parameters is from a defaults file. The
+ load and save defaults routines use a Defaults object to parse the
+ defaults file. The defaults object is created in <b>load_defaults</b> and
+ destroyed in the plugin's destructor. See an existing plugin to see
+ how the Defaults object is used.
+
+-</p><li>int save_defaults();
++ </p><li>int save_defaults();
+
+-<p>Saves the configuration in the defaults object.
++ <p>Saves the configuration in the defaults object.
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="NONREALTIME%20PLUGINS">NONREALTIME PLUGINS</a>,
+-Next:<a rel=next accesskey=n href="#AUDIO%20PLUGINS">AUDIO PLUGINS</a>,
+-Previous:<a rel=previous accesskey=p href="#REALTIME%20PLUGINS">REALTIME PLUGINS</a>,
+-Up:<a rel=up accesskey=u href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
++Next:<a rel="next" accesskey="n" href="#AUDIO%20PLUGINS">AUDIO PLUGINS</a>,
++Previous:<a rel="previous" accesskey="p" href="#REALTIME%20PLUGINS">REALTIME PLUGINS</a>,
++Up:<a rel="up" accesskey="u" href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
+ <br>
++</div>
+
+-<h3>NONREALTIME PLUGINS</h3>
++<h3 class="section">NONREALTIME PLUGINS</h3>
+
+-<p>Like realtime plugins, <b>load_defaults</b> and <b>save_defaults</b> must be
++ <p>Like realtime plugins, <b>load_defaults</b> and <b>save_defaults</b> must be
+ implemented. In nonrealtime plugins, these are not just used for
+ default parameters but to transfer values from the user interface to
+ the signal processor. There doesn't need to be a configuration class
+ in nonrealtime plugins.
+
+-<p>Unlike realtime plugins, the LOAD_CONFIGURATION_MACRO can't be used in
++ <p>Unlike realtime plugins, the LOAD_CONFIGURATION_MACRO can't be used in
+ the plugin header. Instead, the following methods must be defined.
+
+-<p>The nonrealtime plugin should contain a pointer to a defaults object.
+-
+-<br><pre>
+-Defaults *defaults;
++ <p>The nonrealtime plugin should contain a pointer to a defaults object.
+
+-</pre>
++<pre class="example">
++ Defaults *defaults;
++
++ </pre>
+
+-<p>It should also have a pointer to a MainProgressBar.
++ <p>It should also have a pointer to a MainProgressBar.
+
+-<br><pre>
+-MainProgressBar *progress;
+-</pre>
++<pre class="example">
++ MainProgressBar *progress;
++ </pre>
+
+-<p>The progress pointer allows nonrealtime plugins to display their
++ <p>The progress pointer allows nonrealtime plugins to display their
+ progress in Cinelerra's main window.
+
+-<p>The constructor for a nonrealtime plugin can't use
++ <p>The constructor for a nonrealtime plugin can't use
+ PLUGIN_CONSTRUCTOR_MACRO but must call <b>load_defaults</b> directly.
+
+-<p>The destructor, likewise, must call <b>save_defaults</b> and <b>delete
++ <p>The destructor, likewise, must call <b>save_defaults</b> and <b>delete
+ defaults</b> directly instead of PLUGIN_DESTRUCTOR_MACRO.
+
+-<ul>
++ <ul>
+
+-<li>VFrame* new_picon();
++ <li>VFrame* new_picon();
+
+-<p>char* plugin_title();
++ <p>char* plugin_title();
+
+-<p>The usage of these is the same as realtime plugins.
++ <p>The usage of these is the same as realtime plugins.
+
+-</p><li>int is_realtime();
++ </p><li>int is_realtime();
+
+-<p>This function must return 0 to indicate a nonrealtime plugin.
++ <p>This function must return 0 to indicate a nonrealtime plugin.
+
+-</p><li>
++ </p><li>
+ int get_parameters();
+
+-<p>Here, the user should create a GUI, wait for the user to hit an OK
++ <p>Here, the user should create a GUI, wait for the user to hit an OK
+ button or a cancel button, and store the parameters in plugin
+ variables. This routine must return 0 for success and 1 for failure.
+ This way the user can cancel the effect from the GUI.
+
+-<p>Unlike the realtime plugin, this GUI need not run asynchronously of the
++ <p>Unlike the realtime plugin, this GUI need not run asynchronously of the
+ plugin. It should block the get_parameters function until the user
+ selects OK or Cancel.
+
+-</p><li>int load_defaults();
++ </p><li>int load_defaults();
+
+-<p>This should create a defaults object and load parameters from the
++ <p>This should create a defaults object and load parameters from the
+ defaults object into plugin variables.
+
+-</p><li>int save_defaults();
++ </p><li>int save_defaults();
+
+-<p>This should save plugin variables to the defaults object.
++ <p>This should save plugin variables to the defaults object.
+
+-</p><li>int start_loop();
++ </p><li>int start_loop();
+
+-<p>If <b>get_parameters</b> returned 0 for success, this is called once to
++ <p>If <b>get_parameters</b> returned 0 for success, this is called once to
+ give the plugin a chance to initialize processing. The plugin should
+ instantiate the progress object with a line like
+
+-<br><pre>
+-progress = start_progress("MyPlugin progress...",
+- PluginClient::end - PluginClient::start);
+-
+-</pre>
++ <pre class="example">
++ progress = start_progress("MyPlugin progress...",
++ PluginClient::end - PluginClient::start);
++
++ </pre>
+
+-<p>The usage of <b>start_progress</b> depends on whether the plugin is
++ <p>The usage of <b>start_progress</b> depends on whether the plugin is
+ multichannel or single channel. If it's multichannel you always call
+ start_progress. If it's single channel, you first need to know whether
+ the progress bar has already started in another instance of the plugin.
+
+-<p>If <b>PluginClient::interactive</b> is 1, you need to start the progress
++ <p>If <b>PluginClient::interactive</b> is 1, you need to start the progress
+ bar. If it's 0, the progress bar has already been started.
+
+-<p>The PluginClient defines <b>end</b> and <b>start</b> for the timeline range
++ <p>The PluginClient defines <b>end</b> and <b>start</b> for the timeline range
+ to be processed. The units are either samples or frames.
+
+-</p><li>int process_loop
++ </p><li>int process_loop
+
+-<p>This is called repeatedly until the timeline range is processed. It
++ <p>This is called repeatedly until the timeline range is processed. It
+ takes either a samples or frames buffer and a reference to
+ write_length. The arguments are a location and length for the output
+ if it's audio.
+
+-<p>The plugin must use <b>read_samples</b> or <b>read_frame</b> to read the
++ <p>The plugin must use <b>read_samples</b> or <b>read_frame</b> to read the
+ input. These functions take a buffer and a position relative to the
+ start of the timeline. Then it must process it and put the output in
+ the arguments to process_loop. write_length should contain the number
+ of samples generated if it's audio.
+
+-<p>Finally, process_loop must test <b>PluginClient::interactive</b> and
++ <p>Finally, process_loop must test <b>PluginClient::interactive</b> and
+ update the progress bar if it's 1.
+
+-<br><pre>progress-&gt;update(total_written);
+-</pre>
++ <pre class="example"> progress-&gt;update(total_written);
++ </pre>
+
+-<p>returns 1 or 0 if the progress bar was cancelled. If it's 1,
++ <p>returns 1 or 0 if the progress bar was cancelled. If it's 1,
+ process_loop should return 1 to indicate a cancellation. In addition
+ to progress bar cancellation, <b>process_loop</b> should return 1 when the
+ entire timeline range is processed.
+
+-</p><li>int stop_loop();
++ </p><li>int stop_loop();
+
+-<p>This is called after process_loop processes its last buffer.
++ <p>This is called after process_loop processes its last buffer.
+
+-<p>If PluginClient::is_interactive is 1, this should call
++ <p>If PluginClient::is_interactive is 1, this should call
+ <b>stop_progress</b> in the progress bar pointer and delete the pointer.
+ Then it should delete any objects it created for processing in
+ <b>start_loop</b>.
+
+-</ul>
++ </ul>
+
++<div class="node">
+ <p><hr>
+ Node:<a name="AUDIO%20PLUGINS">AUDIO PLUGINS</a>,
+-Next:<a rel=next accesskey=n href="#VIDEO%20PLUGINS">VIDEO PLUGINS</a>,
+-Previous:<a rel=previous accesskey=p href="#NONREALTIME%20PLUGINS">NONREALTIME PLUGINS</a>,
+-Up:<a rel=up accesskey=u href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
++Next:<a rel="next" accesskey="n" href="#VIDEO%20PLUGINS">VIDEO PLUGINS</a>,
++Previous:<a rel="previous" accesskey="p" href="#NONREALTIME%20PLUGINS">NONREALTIME PLUGINS</a>,
++Up:<a rel="up" accesskey="u" href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
+ <br>
++</div>
+
+-<h3>AUDIO PLUGINS</h3>
++<h3 class="section">AUDIO PLUGINS</h3>
+
+-<p>The simplest audio plugin is Gain. The processing object should
++ <p>The simplest audio plugin is Gain. The processing object should
+ include <b>pluginaclient.h</b> and inherit from <b>PluginAClient</b>. Realtime audio plugins need to
+ define
+
+-<br><pre>int process_realtime(long size,
+- double **input_ptr,
+- double **output_ptr);
+-</pre>
+-
+-<p>if it's multichannel or
+-
+-<br><pre>int process_realtime(long size,
+- double *input_ptr,
+- double *output_ptr);
+-</pre>
++<pre class="example"> int process_realtime(long size,
++ double **input_ptr,
++ double **output_ptr);
++ </pre>
++
++ <p>if it's multichannel or
++
++<pre class="example"> int process_realtime(long size,
++ double *input_ptr,
++ double *output_ptr);
++ </pre>
+
+-<p>if it's single channel. These should return the number of samples
++ <p>if it's single channel. These should return the number of samples
+ generated. In the future, the number of samples return value will
+ synchronize plugins which delay audio.
+
+-<p>Nonrealtime audio plugins need to define
++ <p>Nonrealtime audio plugins need to define
+
+-<br><pre>int process_loop(double *buffer, long &amp;write_length);
+-</pre>
++<pre class="example"> int process_loop(double *buffer, long &amp;write_length);
++ </pre>
+
+-<p>for single channel or
++ <p>for single channel or
+
+-<br><pre>int process_loop(double **buffers, long &amp;write_length);
+-</pre>
++<pre class="example"> int process_loop(double **buffers, long &amp;write_length);
++ </pre>
+
+-<p>for multi channel.
++ <p>for multi channel.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="VIDEO%20PLUGINS">VIDEO PLUGINS</a>,
+-Next:<a rel=next accesskey=n href="#TRANSITION%20PLUGINS">TRANSITION PLUGINS</a>,
+-Previous:<a rel=previous accesskey=p href="#AUDIO%20PLUGINS">AUDIO PLUGINS</a>,
+-Up:<a rel=up accesskey=u href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
++Next:<a rel="next" accesskey="n" href="#TRANSITION%20PLUGINS">TRANSITION PLUGINS</a>,
++Previous:<a rel="previous" accesskey="p" href="#AUDIO%20PLUGINS">AUDIO PLUGINS</a>,
++Up:<a rel="up" accesskey="u" href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
+ <br>
++</div>
+
+-<h3>VIDEO PLUGINS</h3>
++<h3 class="section">VIDEO PLUGINS</h3>
+
+-<p>The simplest video plugin is Flip. The processing object should
++ <p>The simplest video plugin is Flip. The processing object should
+ include <b>pluginvclient.h</b> and inherit from <b>PluginVClient</b>.
+ Realtime video plugins need to define
+
+-<br><pre>int process_realtime(VFrame **input,
+- VFrame **output);
+-</pre>
++<pre class="example"> int process_realtime(VFrame **input,
++ VFrame **output);
++ </pre>
+
+-<p>if it's multichannel or
++ <p>if it's multichannel or
+
+-<br><pre>int process_realtime(VFrame *input,
+- VFrame *output);
+-</pre>
++<pre class="example"> int process_realtime(VFrame *input,
++ VFrame *output);
++ </pre>
+
+-<p>if it's single channel. They only get one frame per call but should
++ <p>if it's single channel. They only get one frame per call but should
+ return the number of frames generated anyway. In the future, the
+ number of frames return value will synchronize plugins which delay
+ video.
+
+-<p>The nonrealtime video plugins need to define
++ <p>The nonrealtime video plugins need to define
+
+-<br><pre>int process_loop(VFrame *buffer);
+-</pre>
++<pre class="example"> int process_loop(VFrame *buffer);
++ </pre>
+
+-<p>for single channel or
++ <p>for single channel or
+
+-<br><pre>int process_loop(VFrame **buffers);
+-</pre>
++<pre class="example"> int process_loop(VFrame **buffers);
++ </pre>
+
+-<p>for multi channel. They're always assumed to have a write length of 1
++ <p>for multi channel. They're always assumed to have a write length of 1
+ when they return 0.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="TRANSITION%20PLUGINS">TRANSITION PLUGINS</a>,
+-Next:<a rel=next accesskey=n href="#PLUGIN%20GUI'S%20WHICH%20UPDATE%20DURING%20PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>,
+-Previous:<a rel=previous accesskey=p href="#VIDEO%20PLUGINS">VIDEO PLUGINS</a>,
+-Up:<a rel=up accesskey=u href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
++Next:<a rel="next" accesskey="n" href="#PLUGIN%20GUI'S%20WHICH%20UPDATE%20DURING%20PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>,
++Previous:<a rel="previous" accesskey="p" href="#VIDEO%20PLUGINS">VIDEO PLUGINS</a>,
++Up:<a rel="up" accesskey="u" href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
+ <br>
++</div>
+
+-<h3>TRANSITION PLUGINS</h3>
++<h3 class="section">TRANSITION PLUGINS</h3>
+
+-<p>The simplest video transition is <b>dissolve</b> and the simplest audio
++ <p>The simplest video transition is <b>dissolve</b> and the simplest audio
+ transition is <b>crossfade</b>. These work identical to the single
+ channel, realtime audio and video plugins. The only difference is the
+ addition of an <b>is_transition</b> method to the processing object.
+ <b>is_transition</b> should return 1.
+
+-<p>Routines exist for determining where you are relative to the
++ <p>Routines exist for determining where you are relative to the
+ transition's start and end.
+
+-<ul>
++ <ul>
+
+-<li><b>PluginClient::get_source_position()</b> - returns an integer
++ <li><b>PluginClient::get_source_position()</b> - returns an integer
+ position since the start of the transition
+
+-<li><b>PluginClient::get_total_len()</b> - returns the integer length of
++ <li><b>PluginClient::get_total_len()</b> - returns the integer length of
+ the transition. The units are either samples or frames.
+
+-</ul>
++ </ul>
+
+-<p>Users should divide source position by total length to get the fraction
++ <p>Users should divide source position by total length to get the fraction
+ of the transition the current <b>process_realtime</b> function starts
+ at.
+
+-<p>Secondly, the meaning of the input and output arguments to
++ <p>Secondly, the meaning of the input and output arguments to
+ <b>process_realtime</b> is different for transitions than for realtime
+ plugins.
+
+-<p>The first argument to process_realtime is the data for the next edit.
++ <p>The first argument to process_realtime is the data for the next edit.
+ The second argument to process_realtime is the data for the previous
+ edit. Eventually the second argument becomes the output.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="PLUGIN%20GUI'S%20WHICH%20UPDATE%20DURING%20PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>,
+-Previous:<a rel=previous accesskey=p href="#TRANSITION%20PLUGINS">TRANSITION PLUGINS</a>,
+-Up:<a rel=up accesskey=u href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
++Previous:<a rel="previous" accesskey="p" href="#TRANSITION%20PLUGINS">TRANSITION PLUGINS</a>,
++Up:<a rel="up" accesskey="u" href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>
+ <br>
++</div>
+
+-<h3>PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</h3>
++<h3 class="section">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</h3>
+
+-<p>Effects like <b>Histogram</b> and <b>VideoScope</b> need to update the GUI
++ <p>Effects like <b>Histogram</b> and <b>VideoScope</b> need to update the GUI
+ during playback to display information about the signal. This is
+ achieved with the <b>send_render_gui</b> and <b>render_gui</b> methods.
+ Normally in process_realtime, when the processing object wants to
+@@ -4815,167 +4980,169 @@
+ called in process_realtime. Send_render_gui goes through a search and
+ eventually calls <b>render_gui</b> in the GUI instance of the plugin.
+
+-<p>Render_gui should have a sequence like
++ <p>Render_gui should have a sequence like
+
+-<br><pre>void MyPlugin::render_gui(void *data)
+-{
+- if(thread)
+- {
+- thread-&gt;window-&gt;lock_window();
++<pre class="example"> void MyPlugin::render_gui(void *data)
++ {
++ if(thread)
++ {
++ thread-&gt;window-&gt;lock_window();
++
++ // update GUI here
++
++ thread-&gt;window-&gt;unlock_window();
++ }
++ }
++
++ </pre>
+
+-// update GUI here
+-
+- thread-&gt;window-&gt;unlock_window();
+- }
+-}
+-
+-</pre>
+-
+-<p>The sequence uses one argument, a void pointer to transfer information
++ <p>The sequence uses one argument, a void pointer to transfer information
+ from the renderer to the GUI. The user should typecast this pointer
+ into something useful.
+
++<div class="node">
+ <p><hr>
+ Node:<a name="RELEASE%20NOTES">RELEASE NOTES</a>,
+-Previous:<a rel=previous accesskey=p href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>,
+-Up:<a rel=up accesskey=u href="#Top">Top</a>
++Previous:<a rel="previous" accesskey="p" href="#PLUGIN%20AUTHORING">PLUGIN AUTHORING</a>,
++Up:<a rel="up" accesskey="u" href="#Top">Top</a>
+ <br>
++</div>
+
+-<h2>RELEASE NOTES</h2>
++<h2 class="chapter">RELEASE NOTES</h2>
+
+-<ul>
++ <ul>
+
+-<p><b>1.0.0</b>
++ <p><b>1.0.0</b>
+
+-<p>First release since Broadcast 2000 migration.
++ <p>First release since Broadcast 2000 migration.
+
+-<p><b>1.1.0</b>
++ <p><b>1.1.0</b>
+
+-<p>Titler fonts installed by rpm.
++ <p>Titler fonts installed by rpm.
+
+-<p>XMovie decodes ac3 according to redesigned liba52 channel mappings.
++ <p>XMovie decodes ac3 according to redesigned liba52 channel mappings.
+
+-<p>Quicktime MPEG4 parameters debugged.
++ <p>Quicktime MPEG4 parameters debugged.
+
+-<p>Background rendering over a renderfarm.
++ <p>Background rendering over a renderfarm.
+
+-<p>Renderfarm clients automatically reduced to idle priority.
++ <p>Renderfarm clients automatically reduced to idle priority.
+
+-<p>Better MJPA decoding on single processors.
++ <p>Better MJPA decoding on single processors.
+
+-<p>Better title functionality in 16 bit colormodels.
++ <p>Better title functionality in 16 bit colormodels.
+
+-<p>Undo for effect keyframes.
++ <p>Undo for effect keyframes.
+
+-<p>Effect GUI's cleared during undo for effect attachment.
++ <p>Effect GUI's cleared during undo for effect attachment.
+
+-<p>Fewer lockups on startup.
++ <p>Fewer lockups on startup.
+
+-<p>Proper keyframe interpolation in scale effect.
++ <p>Proper keyframe interpolation in scale effect.
+
+-<p>Stamp timecode in titler.
++ <p>Stamp timecode in titler.
+
+-<p>Memory leaks in rendering stages removed.
++ <p>Memory leaks in rendering stages removed.
+
+-<p>Removed legacy plugin server code.
++ <p>Removed legacy plugin server code.
+
+-<p>Option to generate sequence header in every GOP for MPEG2.
++ <p>Option to generate sequence header in every GOP for MPEG2.
+
+-<p>LADSPA support.
++ <p>LADSPA support.
+
+-<p>Listbox doesn't enter drag_icon state when dragging column division.
++ <p>Listbox doesn't enter drag_icon state when dragging column division.
+
+-<p>Effect rendering bug fixed.
++ <p>Effect rendering bug fixed.
+
+-<p>64 bit mpeg transport stream seeking beyond 2 gigs.
++ <p>64 bit mpeg transport stream seeking beyond 2 gigs.
+
+-<p>More accurate mask drawing when projector is zoomed.
++ <p>More accurate mask drawing when projector is zoomed.
+
+-<p>Clear labels updates CWindow
++ <p>Clear labels updates CWindow
+
+-<p>More accurate YUV/RGB conversions.
++ <p>More accurate YUV/RGB conversions.
+
+-<p>Import partial tgas
++ <p>Import partial tgas
+
+-<p>Copy keyframes doesn't copy default keyframe.
++ <p>Copy keyframes doesn't copy default keyframe.
+
+-<p>Track highlighting offset by vertical scroll.
++ <p>Track highlighting offset by vertical scroll.
+
+-<p>Multiple video scope, spectrogram, and histogram displays may be opened.
++ <p>Multiple video scope, spectrogram, and histogram displays may be opened.
+
+-<p>HutSaturation in YUV colorspaces.
++ <p>HutSaturation in YUV colorspaces.
+
+-<p>Undo for masks.
++ <p>Undo for masks.
+
+-<p>Shared synthesis effects cause the sharing tracks to
++ <p>Shared synthesis effects cause the sharing tracks to
+ play back instead of just the owning track.
+
+-<p>Quicktime recovery utility improved.
++ <p>Quicktime recovery utility improved.
+
+-<p>Single frame recording with multiple batches doesn't crash.
++ <p>Single frame recording with multiple batches doesn't crash.
+
+-<p>DV encoding.
++ <p>DV encoding.
+
+-<p>New video effects:
++ <p>New video effects:
+ gradient, downsample video, radial blur, linear blur, zoom blur,
+ histogram, perspective.
+
+-<p>New audio effect:
++ <p>New audio effect:
+ Sound level
+
+-<p><b>1.1.5</b>
++ <p><b>1.1.5</b>
+
+-<p>More options for the ffmpeg/MPEG-4 codecs.
++ <p>More options for the ffmpeg/MPEG-4 codecs.
+
+-<p>Histogram works on SMP.
++ <p>Histogram works on SMP.
+
+-<p>Better 16 bit alpha blending.
++ <p>Better 16 bit alpha blending.
+
+-<p>BRender path updates from preferences.
++ <p>BRender path updates from preferences.
+
+-<p>Separate preroll for background rendering and rendering.
++ <p>Separate preroll for background rendering and rendering.
+
+-<p>Deinterlace by averaging lines 0 and 2 or 1 and 3 to get intervening lines.
++ <p>Deinterlace by averaging lines 0 and 2 or 1 and 3 to get intervening lines.
+
+-<p>Adaptive deinterlace.
++ <p>Adaptive deinterlace.
+
+-<p>Frame per second statistics in renderfarm are more reliable.
++ <p>Frame per second statistics in renderfarm are more reliable.
+
+-<p>Select and slide in the patchbay.
++ <p>Select and slide in the patchbay.
+
+-<p>Video scope can be resized.
++ <p>Video scope can be resized.
+
+-<p>Effect keyframes pasted in right positions more often.
++ <p>Effect keyframes pasted in right positions more often.
+
+-<p>Selective denoising of video based on color channel.
++ <p>Selective denoising of video based on color channel.
+
+-<p>More mouse wheel bindings in MainWindow and ListBox.
++ <p>More mouse wheel bindings in MainWindow and ListBox.
+
+-<p>Ctrl-w closes effect windows.
++ <p>Ctrl-w closes effect windows.
+
+-<p>Perspective doesn't crash when switching from stretch to sheer.
++ <p>Perspective doesn't crash when switching from stretch to sheer.
+
+-<p>Better text list searching and keyboard navigation.
++ <p>Better text list searching and keyboard navigation.
+
+-<p>Better Vorbis decoding after a pause.
++ <p>Better Vorbis decoding after a pause.
+
+-<p>Close recording without recording anything doesn't crash.
++ <p>Close recording without recording anything doesn't crash.
+
+-<p>Save backup now option.
++ <p>Save backup now option.
+
+-<p>OpenGL not required anymore.
++ <p>OpenGL not required anymore.
+
+-<p>Time format changes update the selection textboxes more often.
++ <p>Time format changes update the selection textboxes more often.
+
+-<p>MPEG-4 deblocking option in XMovie and Cinelerra.
++ <p>MPEG-4 deblocking option in XMovie and Cinelerra.
+
+-<p>Resize in Record GUI doesn't screw it up.
++ <p>Resize in Record GUI doesn't screw it up.
+
+-<p>Better export of YUVA16161616 to Component Y'CbCr 10-bit 4:4:4.
++ <p>Better export of YUVA16161616 to Component Y'CbCr 10-bit 4:4:4.
+
+-<p>Better import of Component Y'CbCr 10-bit 4:4:4 to RGB colorspaces.
++ <p>Better import of Component Y'CbCr 10-bit 4:4:4 to RGB colorspaces.
+
+-</ul>
++ </ul>
+
+-</body></html>
++ </body></html>
+
+Files cinelerra-1.1.5.orig/freetype-2.0.4/objs/.libs/libfreetype.so.6 and cinelerra-1.1.5/freetype-2.0.4/objs/.libs/libfreetype.so.6 differ
+Files cinelerra-1.1.5.orig/freetype-2.0.4/objs/.libs/libfreetype.so.6.1.0 and cinelerra-1.1.5/freetype-2.0.4/objs/.libs/libfreetype.so.6.1.0 differ
+diff -ruN cinelerra-1.1.5.orig/guicast/bctheme.C cinelerra-1.1.5/guicast/bctheme.C
+--- cinelerra-1.1.5.orig/guicast/bctheme.C 2002-12-21 04:01:43.000000000 +0100
++++ cinelerra-1.1.5/guicast/bctheme.C 2003-05-04 08:50:11.000000000 +0200
+@@ -86,7 +86,7 @@
+ }
+
+
+-void BC_Theme::overlay(VFrame *dst, VFrame *src, int in_x1 = -1, int in_x2 = -1)
++void BC_Theme::overlay(VFrame *dst, VFrame *src, int in_x1, int in_x2)
+ {
+ int w;
+ int h;
+diff -ruN cinelerra-1.1.5.orig/libmpeg3/Makefile cinelerra-1.1.5/libmpeg3/Makefile
+--- cinelerra-1.1.5.orig/libmpeg3/Makefile 2002-06-21 14:35:24.000000000 +0200
++++ cinelerra-1.1.5/libmpeg3/Makefile 2003-05-04 08:50:11.000000000 +0200
+@@ -25,7 +25,7 @@
+ ifeq ($(OBJDIR), i686)
+ USE_MMX = 1
+ ifneq ($(HAVE_CFLAGS), yes)
+- CFLAGS := -O2 -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 -malign-functions=2 -I/usr/local/include
++ CFLAGS := -O2 -fomit-frame-pointer -falign-loops=2 -falign-jumps=2 -falign-functions=2 -I/usr/include
+ endif
+ CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+ endif
+@@ -49,8 +49,7 @@
+
+ CFLAGS += \
+ -I. \
+- -I$(A52DIR)/include \
+- -I$(A52DIR)/liba52
++ -I/usr/include/a52dec
+
+ #CFLAGS += -g
+
+@@ -122,7 +121,7 @@
+ $(OBJDIR)/audio \
+ $(OBJDIR)/video
+
+-include Makefile.a52
++##include Makefile.a52
+
+ DIRS += $(A52DIRS)
+
+@@ -133,7 +132,7 @@
+ #$(OBJDIR)/mpeg3split
+
+
+-LIBS = -lm -lpthread
++LIBS = -lm -lpthread -la52
+
+ $(shell if ! test -d $(OBJDIR) \; then mkdir -p $(OBJDIR) \; fi )
+
+@@ -188,7 +187,7 @@
+ cat *.c *.h audio/*.c audio/*.h video/*.c video/*.h | wc
+
+ $(OBJS):
+- $(CC) -c `cat $(OBJDIR)/c_flags` $(subst $(OBJDIR)/,, $*.c) -o $*.o
++ $(CC) -c $(CFLAGS) $(subst $(OBJDIR)/,, $*.c) -o $*.o
+ $(ASMOBJS):
+ $(CC) -c `cat $(OBJDIR)/c_flags` $(subst $(OBJDIR)/,, $*.S) -o $*.o
+ $(NASMOBJS):
+diff -ruN cinelerra-1.1.5.orig/libmpeg3/Makefile.a52 cinelerra-1.1.5/libmpeg3/Makefile.a52
+--- cinelerra-1.1.5.orig/libmpeg3/Makefile.a52 2002-06-21 14:35:24.000000000 +0200
++++ cinelerra-1.1.5/libmpeg3/Makefile.a52 1970-01-01 01:00:00.000000000 +0100
+@@ -1,39 +0,0 @@
+-A52DIR := $(shell expr a52dec* )
+-
+-A52DIRS := \
+- $(OBJDIR)/$(A52DIR)/liba52/ \
+- $(OBJDIR)/$(A52DIR)/libao/ \
+- $(OBJDIR)/$(A52DIR)/src/ \
+- $(OBJDIR)/$(A52DIR)/test/
+-
+-
+-A52OBJS := \
+- $(OBJDIR)/$(A52DIR)/liba52/bit_allocate.o \
+- $(OBJDIR)/$(A52DIR)/liba52/bitstream.o \
+- $(OBJDIR)/$(A52DIR)/liba52/downmix.o \
+- $(OBJDIR)/$(A52DIR)/liba52/imdct.o \
+- $(OBJDIR)/$(A52DIR)/liba52/parse.o \
+- $(OBJDIR)/$(A52DIR)/libao/audio_out_float.o \
+- $(OBJDIR)/$(A52DIR)/libao/audio_out_null.o \
+- $(OBJDIR)/$(A52DIR)/libao/audio_out.o \
+- $(OBJDIR)/$(A52DIR)/libao/audio_out_oss.o \
+- $(OBJDIR)/$(A52DIR)/libao/audio_out_solaris.o \
+- $(OBJDIR)/$(A52DIR)/libao/audio_out_wav.o \
+- $(OBJDIR)/$(A52DIR)/libao/float2s16.o \
+- $(OBJDIR)/$(A52DIR)/src/a52dec.o \
+- $(OBJDIR)/$(A52DIR)/src/extract_a52.o \
+- $(OBJDIR)/$(A52DIR)/src/getopt.o \
+- $(OBJDIR)/$(A52DIR)/test/compare.o
+-
+-A52CFLAGS = \
+- $(CFLAGS) \
+- -DHAVE_CONFIG_H \
+- -I$(A52DIR)/ \
+- -I$(A52DIR)/include \
+- -I$(A52DIR)/liba52 \
+- -I$(A52DIR)/libao \
+- -I$(A52DIR)/src
+-
+-
+-
+-
+diff -ruN cinelerra-1.1.5.orig/libmpeg3/audio/Makefile cinelerra-1.1.5/libmpeg3/audio/Makefile
+--- cinelerra-1.1.5.orig/libmpeg3/audio/Makefile 2002-06-21 14:35:24.000000000 +0200
++++ cinelerra-1.1.5/libmpeg3/audio/Makefile 2003-05-04 08:50:11.000000000 +0200
+@@ -1,4 +1,4 @@
+-include ../global_config
++include ../../global_config
+ export CFLAGS
+
+ OBJS = \
+diff -ruN cinelerra-1.1.5.orig/libmpeg3/mpeg3private.h cinelerra-1.1.5/libmpeg3/mpeg3private.h
+--- cinelerra-1.1.5.orig/libmpeg3/mpeg3private.h 2002-10-18 03:38:19.000000000 +0200
++++ cinelerra-1.1.5/libmpeg3/mpeg3private.h 2003-05-04 08:50:11.000000000 +0200
+@@ -3,7 +3,7 @@
+
+ #include <stdint.h>
+ #include <stdio.h>
+-
++#include <pthread.h>
+
+
+
+diff -ruN cinelerra-1.1.5.orig/mplexlo/Makefile cinelerra-1.1.5/mplexlo/Makefile
+--- cinelerra-1.1.5.orig/mplexlo/Makefile 2002-07-13 04:19:23.000000000 +0200
++++ cinelerra-1.1.5/mplexlo/Makefile 2003-05-04 08:50:12.000000000 +0200
+@@ -7,7 +7,7 @@
+ OUTPUT := $(OBJDIR)/mplexlo
+
+ $(OUTPUT): $(OBJS)
+- $(CC) -o $(OUTPUT) $(OBJS) ../libmpeg3/$(OBJDIR)/libmpeg3.a -lpthread -lm
++ $(CC) -o $(OUTPUT) $(OBJS) ../libmpeg3/$(OBJDIR)/libmpeg3.a -lpthread -lm -la52
+
+ $(OBJS):
+ $(CC) -c $(CFLAGS) $(subst $(OBJDIR)/,, $*.c) -o $*.o
+diff -ruN cinelerra-1.1.5.orig/quicktime/Makefile cinelerra-1.1.5/quicktime/Makefile
+--- cinelerra-1.1.5.orig/quicktime/Makefile 2003-02-05 07:40:02.000000000 +0100
++++ cinelerra-1.1.5/quicktime/Makefile 2003-05-04 08:50:12.000000000 +0200
+@@ -23,7 +23,7 @@
+ endif
+
+ ifeq ($(OBJDIR), i686)
+- CFLAGS = -O3 -fmessage-length=0 -funroll-all-loops -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 -malign-functions=2 -I/usr/local/include
++ CFLAGS = -O3 -fmessage-length=0 -funroll-all-loops -fomit-frame-pointer -falign-loops=2 -falign-jumps=2 -falign-functions=2 -I/usr/include
+ endif
+
+
+diff -ruN cinelerra-1.1.5.orig/quicktime/Makefile.dv cinelerra-1.1.5/quicktime/Makefile.dv
+--- cinelerra-1.1.5.orig/quicktime/Makefile.dv 2002-11-11 06:19:11.000000000 +0100
++++ cinelerra-1.1.5/quicktime/Makefile.dv 2003-05-04 08:50:12.000000000 +0200
+@@ -1,4 +1,4 @@
+-DV_DIR := $(shell expr libdv-0.98 )
++DV_DIR := libdv-0.98
+
+ DV_OBJS := \
+ $(OBJDIR)/$(DV_DIR)/libdv/audio.o \
+diff -ruN cinelerra-1.1.5.orig/quicktime/libdv-0.98/libdv/asmoff.h cinelerra-1.1.5/quicktime/libdv-0.98/libdv/asmoff.h
+--- cinelerra-1.1.5.orig/quicktime/libdv-0.98/libdv/asmoff.h 2003-02-10 07:03:40.000000000 +0100
++++ cinelerra-1.1.5/quicktime/libdv-0.98/libdv/asmoff.h 2003-05-04 08:50:14.000000000 +0200
+@@ -1,14 +1,14 @@
+ #define dv_videosegment_t_i 0
+ #define dv_videosegment_t_k 4
+ #define dv_videosegment_t_bs 8
+-#define dv_videosegment_t_mb 12
+-#define dv_videosegment_t_isPAL 4992
+-#define dv_macroblock_t_size 996
+-#define dv_macroblock_t_b 20
+-#define dv_macroblock_t_eob_count 992
+-#define dv_macroblock_t_vlc_error 988
+-#define dv_macroblock_t_qno 980
+-#define dv_macroblock_t_sta 984
++#define dv_videosegment_t_mb 16
++#define dv_videosegment_t_isPAL 5016
++#define dv_macroblock_t_size 1000
++#define dv_macroblock_t_b 24
++#define dv_macroblock_t_eob_count 996
++#define dv_macroblock_t_vlc_error 992
++#define dv_macroblock_t_qno 984
++#define dv_macroblock_t_sta 988
+ #define dv_macroblock_t_i 0
+ #define dv_macroblock_t_j 4
+ #define dv_macroblock_t_k 8
+diff -ruN cinelerra-1.1.5.orig/quicktime/libdv-0.98/libdv/mmx.h cinelerra-1.1.5/quicktime/libdv-0.98/libdv/mmx.h
+--- cinelerra-1.1.5.orig/quicktime/libdv-0.98/libdv/mmx.h 2002-11-08 14:44:37.000000000 +0100
++++ cinelerra-1.1.5/quicktime/libdv-0.98/libdv/mmx.h 2003-05-04 08:50:14.000000000 +0200
+@@ -223,7 +223,7 @@
+
+ /* Function to test if mmx instructions are supported...
+ */
+-inline extern int
++inline static int
+ mmx_ok(void)
+ {
+ /* Returns 1 if MMX instructions are supported, 0 otherwise */
+diff -ruN cinelerra-1.1.5.orig/quicktime/libdv-0.98/libdv/vlc.h cinelerra-1.1.5/quicktime/libdv-0.98/libdv/vlc.h
+--- cinelerra-1.1.5.orig/quicktime/libdv-0.98/libdv/vlc.h 2002-11-08 14:44:37.000000000 +0100
++++ cinelerra-1.1.5/quicktime/libdv-0.98/libdv/vlc.h 2003-05-04 08:50:14.000000000 +0200
+@@ -69,7 +69,7 @@
+ extern void dv_decode_vlc(int bits,int maxbits, dv_vlc_t *result);
+ extern void __dv_decode_vlc(int bits, dv_vlc_t *result);
+
+-extern __inline__ void dv_peek_vlc(bitstream_t *bs,int maxbits, dv_vlc_t *result) {
++static __inline__ void dv_peek_vlc(bitstream_t *bs,int maxbits, dv_vlc_t *result) {
+ if(maxbits < 16)
+ dv_decode_vlc(bitstream_show(bs,16),maxbits,result);
+ else
diff --git a/media-video/cinelerra/files/digest-cinelerra-1.1.5 b/media-video/cinelerra/files/digest-cinelerra-1.1.5
new file mode 100644
index 000000000000..2132fa680b8d
--- /dev/null
+++ b/media-video/cinelerra/files/digest-cinelerra-1.1.5
@@ -0,0 +1 @@
+MD5 0c9082049bd7b05a80fe604493d8da02 cinelerra-1.1.5-src.tar.bz2 19098210