Merge CV, ver=5.1; ops/methods from HV, and interface from CV where possible
[goodguy/history.git] / cinelerra-5.0 / doc / cinelerra.html
diff --git a/cinelerra-5.0/doc/cinelerra.html b/cinelerra-5.0/doc/cinelerra.html
deleted file mode 100644 (file)
index 0f2a1c4..0000000
+++ /dev/null
@@ -1,9991 +0,0 @@
-<html lang="en">
-<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.13">
-<link title="Top" rel="top" href="#Top">
-<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<style type="text/css"><!--
-  pre.display { font-family:inherit }
-  pre.format  { font-family:inherit }
-  pre.smalldisplay { font-family:inherit; font-size:smaller }
-  pre.smallformat  { font-family:inherit; font-size:smaller }
-  pre.smallexample { font-size:smaller }
-  pre.smalllisp    { font-size:smaller }
-  span.sc    { font-variant:small-caps }
-  span.roman { font-family:serif; font-weight:normal; } 
-  span.sansserif { font-family:sans-serif; font-weight:normal; } 
---></style>
-</head>
-<body>
-<div class="node">
-<a name="Top"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#ABOUT-CINELERRA">ABOUT CINELERRA</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#dir">(dir)</a>
-
-</div>
-
-<h2 class="unnumbered">SECRETS OF CINELERRA</h2>
-
-<div align="center"></div>
-
-   <p>Version 4.1
-
-   <p>by Adam Williams
-
-   <p>Copyright &copy; 2011
-
-<h2 class="chapter">1 SHORT CONTENTS</h2>
-
-<ul class="menu">
-<li><a accesskey="1" href="#ABOUT-CINELERRA">ABOUT CINELERRA</a>:           Cinelerra in brief. 
-<li><a accesskey="2" href="#INSTALLATION">INSTALLATION</a>:              Making Cinelerra work on your system. 
-<li><a accesskey="3" href="#CONFIGURATION">CONFIGURATION</a>:             Adjusting the behavior of Cinelerra. 
-<li><a accesskey="4" href="#CREATING-A-NEW-PROJECT">CREATING A NEW PROJECT</a>:    Creating a new project
-<li><a accesskey="5" href="#THE-MAIN-WINDOWS">THE MAIN WINDOWS</a>:          The most often used user interfaces. 
-<li><a accesskey="6" href="#LOADING-AND-SAVING-FILES">LOADING AND SAVING FILES</a>:  Moving media between disk and Cinelerra. 
-<li><a accesskey="7" href="#NAVIGATING-THE-PROJECT">NAVIGATING THE PROJECT</a>:    Moving around the media. 
-<li><a accesskey="8" href="#EDITING">EDITING</a>:                   Moving the media in time. 
-<li><a accesskey="9" href="#USING-EFFECTS">USING EFFECTS</a>:             Altering the media. 
-<li><a href="#SETTING-PROJECT-ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>:  Changing the way the media is displayed. 
-<li><a href="#COMPOSITING">COMPOSITING</a>:               Overlaying different sources of video. 
-<li><a href="#KEYFRAMES">KEYFRAMES</a>:                 Making effects change over time. 
-<li><a href="#CAPTURING-MEDIA">CAPTURING MEDIA</a>:           Moving media from the real world to disk. 
-<li><a href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>:     Making Cinelerra run better on Linux. 
-<li><a href="#TROUBLESHOOTING">TROUBLESHOOTING</a>:           Problems with Cinelerra. 
-<li><a href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>:      Unusual applications of Cinelerra to common problems. 
-<li><a href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>:       Secrets of the more complicated effects. 
-<li><a href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>:          How to write new effects. 
-<li><a href="#KEYBOARD-SHORTCUTS">KEYBOARD SHORTCUTS</a>:        How to accelerate most commands with the keyboard. 
-</ul>
-
-   <div class="contents">
-<h2>Table of Contents</h2>
-<ul>
-<li><a name="toc_Top" href="#Top">SECRETS OF CINELERRA</a>
-<li><a name="toc_Top" href="#Top">1 SHORT CONTENTS</a>
-<li><a name="toc_ABOUT-CINELERRA" href="#ABOUT-CINELERRA">2 ABOUT CINELERRA</a>
-<ul>
-<li><a href="#ABOUT-THIS-MANUAL">2.1 ABOUT THIS MANUAL</a>
-</li></ul>
-<li><a name="toc_INSTALLATION" href="#INSTALLATION">3 INSTALLATION</a>
-<ul>
-<li><a href="#INSTALLING-AN-RPM">3.1 INSTALLING AN RPM</a>
-<li><a href="#COMPILING-FROM-SCRATCH">3.2 COMPILING FROM SCRATCH</a>
-<li><a href="#RUNNING-CINELERRA">3.3 RUNNING CINELERRA</a>
-</li></ul>
-<li><a name="toc_CONFIGURATION" href="#CONFIGURATION">4 CONFIGURATION</a>
-<ul>
-<li><a href="#ENVIRONMENT-VARIABLES">4.1 ENVIRONMENT VARIABLES</a>
-<li><a href="#AUDIO-DRIVERS">4.2 AUDIO DRIVERS</a>
-<ul>
-<li><a href="#COMMON-SOUND-DRIVER-ATTRIBUTES">4.2.1 COMMON SOUND DRIVER ATTRIBUTES</a>
-<li><a href="#OSS">4.2.2 OSS</a>
-<li><a href="#OSS-Envy24">4.2.3 OSS Envy24</a>
-<li><a href="#ALSA">4.2.4 ALSA</a>
-<li><a href="#ESOUND">4.2.5 ESOUND</a>
-<li><a href="#RAW-1394">4.2.6 RAW 1394</a>
-<li><a href="#DV-1394">4.2.7 DV 1394</a>
-<li><a href="#IEC-61883">4.2.8 IEC 61883</a>
-</li></ul>
-<li><a href="#VIDEO-DRIVERS">4.3 VIDEO DRIVERS</a>
-<ul>
-<li><a href="#COMMON-VIDEO-DRIVER-ATTRIBUTES">4.3.1 COMMON VIDEO DRIVER ATTRIBUTES</a>
-<li><a href="#X11">4.3.2 X11</a>
-<li><a href="#X11_002dXV">4.3.3 X11-XV</a>
-<li><a href="#X11_002dOPENGL">4.3.4 X11-OPENGL</a>
-<li><a href="#BUZ">4.3.5 BUZ</a>
-<li><a href="#RAW-1394-VIDEO-PLAYBACK">4.3.6 RAW 1394 VIDEO PLAYBACK</a>
-<li><a href="#DV-1394-VIDEO-PLAYBACK">4.3.7 DV 1394 VIDEO PLAYBACK</a>
-<li><a href="#IEC-61883-VIDEO-PLAYBACK">4.3.8 IEC 61883 VIDEO PLAYBACK</a>
-</li></ul>
-<li><a href="#PLAYBACK">4.4 PLAYBACK</a>
-<ul>
-<li><a href="#AUDIO-OUT">4.4.1 AUDIO OUT</a>
-<li><a href="#VIDEO-OUT">4.4.2 VIDEO OUT</a>
-</li></ul>
-<li><a href="#RECORDING">4.5 RECORDING</a>
-<ul>
-<li><a href="#FILE-FORMAT">4.5.1 FILE FORMAT</a>
-<li><a href="#AUDIO-IN">4.5.2 AUDIO IN</a>
-<li><a href="#VIDEO-IN">4.5.3 VIDEO IN</a>
-</li></ul>
-<li><a href="#PERFORMANCE">4.6 PERFORMANCE</a>
-<ul>
-<li><a href="#BACKGROUND-RENDERING">4.6.1 BACKGROUND RENDERING</a>
-<li><a href="#RENDERFARM">4.6.2 RENDERFARM</a>
-</li></ul>
-<li><a href="#INTERFACE">4.7 INTERFACE</a>
-<li><a href="#ABOUT">4.8 ABOUT</a>
-</li></ul>
-<li><a name="toc_CREATING-A-NEW-PROJECT" href="#CREATING-A-NEW-PROJECT">5 CREATING A NEW PROJECT</a>
-<ul>
-<li><a href="#USING-THE-NEW-PROJECT-DIALOG">5.1 USING THE NEW PROJECT DIALOG</a>
-<li><a href="#CHANGING-PARAMETERS-AFTER-LOADING">5.2 CHANGING PARAMETERS AFTER LOADING</a>
-</li></ul>
-<li><a name="toc_THE-MAIN-WINDOWS" href="#THE-MAIN-WINDOWS">6 THE MAIN WINDOWS</a>
-<ul>
-<li><a href="#VIEWER">6.1 VIEWER</a>
-<li><a href="#COMPOSITOR">6.2 COMPOSITOR</a>
-<ul>
-<li><a href="#PROTECT-VIDEO">6.2.1 PROTECT VIDEO</a>
-<li><a href="#MAGNIFYING-GLASS">6.2.2 MAGNIFYING GLASS</a>
-<li><a href="#MASKS-TOOL">6.2.3 MASKS TOOL</a>
-<li><a href="#CAMERA">6.2.4 CAMERA</a>
-<li><a href="#PROJECTOR">6.2.5 PROJECTOR</a>
-<li><a href="#CROP-TOOL">6.2.6 CROP TOOL</a>
-<li><a href="#EYEDROPPER">6.2.7 EYEDROPPER</a>
-<li><a href="#TOOL-INFO">6.2.8 TOOL INFO</a>
-<li><a href="#SAFE-REGIONS-TOOL">6.2.9 SAFE REGIONS TOOL</a>
-</li></ul>
-<li><a href="#PROGRAM">6.3 PROGRAM</a>
-<li><a href="#RESOURCES">6.4 RESOURCES</a>
-<li><a href="#SOUND-LEVEL-METERS">6.5 SOUND LEVEL METERS</a>
-<li><a href="#OTHER-WINDOWS">6.6 OTHER WINDOWS</a>
-</li></ul>
-<li><a name="toc_LOADING-AND-SAVING-FILES" href="#LOADING-AND-SAVING-FILES">7 LOADING AND SAVING FILES</a>
-<ul>
-<li><a href="#SUPPORTED-FILE-FORMATS">7.1 SUPPORTED FILE FORMATS</a>
-<ul>
-<li><a href="#QUICKTIME">7.1.1 QUICKTIME</a>
-<li><a href="#MPEG_002d4-AUDIO">7.1.2 MPEG-4 AUDIO</a>
-<li><a href="#IMAGE-SEQUENCES">7.1.3 IMAGE SEQUENCES</a>
-<li><a href="#STILL-IMAGES">7.1.4 STILL IMAGES</a>
-<ul>
-<li><a href="#OPEN-EXR-IMAGES">7.1.4.1 OPEN EXR IMAGES</a>
-<li><a href="#RAW-DIGITAL-CAMERA-IMAGES">7.1.4.2 RAW DIGITAL CAMERA IMAGES</a>
-</li></ul>
-<li><a href="#AVI">7.1.5 AVI</a>
-<li><a href="#MPEG-FILES-CONTAINING-VIDEO">7.1.6 MPEG FILES CONTAINING VIDEO</a>
-<li><a href="#DVD-MOVIES">7.1.7 DVD MOVIES</a>
-<li><a href="#MPEG-1-AUDIO">7.1.8 MPEG 1 AUDIO</a>
-<li><a href="#OGG-THEORA_002fVORBIS">7.1.9 OGG THEORA/VORBIS</a>
-<li><a href="#EDIT-DECISION-LIST">7.1.10 EDIT DECISION LIST</a>
-</li></ul>
-<li><a href="#LOADING-FILES">7.2 LOADING FILES</a>
-<ul>
-<li><a href="#INSERTION-STRATEGY">7.2.1 INSERTION STRATEGY</a>
-<li><a href="#LOADING-MULTIPLE-FILES">7.2.2 LOADING MULTIPLE FILES</a>
-</li></ul>
-<li><a href="#LOADING-THE-BACKUP">7.3 LOADING THE BACKUP</a>
-<li><a href="#SAVING-FILES">7.4 SAVING FILES</a>
-<li><a href="#RENDERING-FILES">7.5 RENDERING FILES</a>
-<ul>
-<li><a href="#SINGLE-FILE-RENDERING">7.5.1 SINGLE FILE RENDERING</a>
-<li><a href="#BATCH-RENDERING">7.5.2 BATCH RENDERING</a>
-<li><a href="#THE-RENDER-FARM">7.5.3 THE RENDER FARM</a>
-<li><a href="#COMMAND-LINE-RENDERING">7.5.4 COMMAND LINE RENDERING</a>
-</li></ul>
-</li></ul>
-<li><a name="toc_NAVIGATING-THE-PROJECT" href="#NAVIGATING-THE-PROJECT">8 NAVIGATING THE PROJECT</a>
-<ul>
-<li><a href="#NAVIGATING-THE-PROGRAM-WINDOW">8.1 NAVIGATING THE PROGRAM WINDOW</a>
-<ul>
-<li><a href="#THE-INSERTION-POINT">8.1.1 THE INSERTION POINT</a>
-<li><a href="#THE-IN_002fOUT-POINTS">8.1.2 THE IN/OUT POINTS</a>
-<li><a href="#USING-LABELS-IN-THE-PROGRAM-WINDOW">8.1.3 USING LABELS IN THE PROGRAM WINDOW</a>
-</li></ul>
-<li><a href="#NAVIGATING-THE-VIEWER-AND-COMPOSITOR">8.2 NAVIGATING THE VIEWER AND COMPOSITOR</a>
-<li><a href="#NAVIGATING-THE-RESOURCES">8.3 NAVIGATING THE RESOURCES</a>
-<li><a href="#USING-THE-TRANSPORT-CONTROLS">8.4 USING THE TRANSPORT CONTROLS</a>
-<li><a href="#USING-BACKGROUND-RENDERING">8.5 USING BACKGROUND RENDERING</a>
-</li></ul>
-<li><a name="toc_EDITING" href="#EDITING">9 EDITING</a>
-<ul>
-<li><a href="#THE-PATCHBAY">9.1 THE PATCHBAY</a>
-<li><a href="#NUDGING-TRACKS">9.2 NUDGING TRACKS</a>
-<li><a href="#PANNING-TRACKS">9.3 PANNING TRACKS</a>
-<li><a href="#AUTOMATIC-TRACK-PANNING">9.4 AUTOMATIC TRACK PANNING</a>
-<li><a href="#STANDARD-AUDIO-MAPPINGS">9.5 STANDARD AUDIO MAPPINGS</a>
-<li><a href="#MANIPULATING-TRACKS">9.6 MANIPULATING TRACKS</a>
-<li><a href="#TWO-SCREEN-EDITING">9.7 TWO SCREEN EDITING</a>
-<li><a href="#DRAG-AND-DROP-EDITING">9.8 DRAG AND DROP EDITING</a>
-<li><a href="#CUT-AND-PASTE-EDITING">9.9 CUT AND PASTE EDITING</a>
-<li><a href="#TRIMMING">9.10 TRIMMING</a>
-</li></ul>
-<li><a name="toc_USING-EFFECTS" href="#USING-EFFECTS">10 USING EFFECTS</a>
-<ul>
-<li><a href="#REALTIME-EFFECTS">10.1 REALTIME EFFECTS</a>
-<ul>
-<li><a href="#REALTIME-EFFECT-TYPES">10.1.1 REALTIME EFFECT TYPES</a>
-<li><a href="#EDITING-REALTIME-EFFECTS">10.1.2 EDITING REALTIME EFFECTS</a>
-</li></ul>
-<li><a href="#RENDERED-EFFECTS">10.2 RENDERED EFFECTS</a>
-<li><a href="#TRANSITIONS">10.3 TRANSITIONS</a>
-<li><a href="#LADSPA-EFFECTS">10.4 LADSPA EFFECTS</a>
-<li><a href="#EFFECT-PRESETS">10.5 EFFECT PRESETS</a>
-</li></ul>
-<li><a name="toc_SETTING-PROJECT-ATTRIBUTES" href="#SETTING-PROJECT-ATTRIBUTES">11 SETTING PROJECT ATTRIBUTES</a>
-<ul>
-<li><a href="#AUDIO-CHANNEL-POSITIONS">11.1 AUDIO CHANNEL POSITIONS</a>
-<li><a href="#COLOR-MODEL">11.2 COLOR MODEL</a>
-<li><a href="#ASPECT-RATIO">11.3 ASPECT RATIO</a>
-</li></ul>
-<li><a name="toc_COMPOSITING" href="#COMPOSITING">12 COMPOSITING</a>
-<ul>
-<li><a href="#THE-CAMERA-AND-PROJECTOR">12.1 THE CAMERA AND PROJECTOR</a>
-<li><a href="#MASKS">12.2 MASKS</a>
-<li><a href="#CROPPING">12.3 CROPPING</a>
-<li><a href="#SAFE-REGIONS">12.4 SAFE REGIONS</a>
-<li><a href="#OVERLAY-MODES">12.5 OVERLAY MODES</a>
-<li><a href="#TRACK-AND-OUTPUT-SIZES">12.6 TRACK AND OUTPUT SIZES</a>
-</li></ul>
-<li><a name="toc_KEYFRAMES" href="#KEYFRAMES">13 KEYFRAMES</a>
-<ul>
-<li><a href="#CURVE-KEYFRAMES">13.1 CURVE KEYFRAMES</a>
-<li><a href="#CHANGING-BEZIER-_0026-LINEAR-MODE">13.2 CHANGING BEZIER &amp; LINEAR MODE</a>
-<li><a href="#SNAPPING-TO-NEIGHBOR-KEYFRAMES">13.3 SNAPPING TO NEIGHBOR KEYFRAMES</a>
-<li><a href="#NAVIGATING-CURVE-KEYFRAMES">13.4 NAVIGATING CURVE KEYFRAMES</a>
-<li><a href="#TOGGLE-KEYFRAMES">13.5 TOGGLE KEYFRAMES</a>
-<li><a href="#AUTOMATIC-KEYFRAMES">13.6 AUTOMATIC KEYFRAMES</a>
-<li><a href="#COMPOSITOR-KEYFRAMES">13.7 COMPOSITOR KEYFRAMES</a>
-<li><a href="#EDITING-KEYFRAMES">13.8 EDITING KEYFRAMES</a>
-<li><a href="#KEYFRAME-SPANNING">13.9 KEYFRAME SPANNING</a>
-</li></ul>
-<li><a name="toc_CAPTURING-MEDIA" href="#CAPTURING-MEDIA">14 CAPTURING MEDIA</a>
-<ul>
-<li><a href="#BATCHES">14.1 BATCHES</a>
-<li><a href="#EDITING-TUNER-INFORMATION">14.2 EDITING TUNER INFORMATION</a>
-</li></ul>
-<li><a name="toc_IMPROVING-PERFORMANCE" href="#IMPROVING-PERFORMANCE">15 IMPROVING PERFORMANCE</a>
-<ul>
-<li><a href="#DISABLING-SWAP-SPACE">15.1 DISABLING SWAP SPACE</a>
-<li><a href="#ENLARGING-SOUND-BUFFERS">15.2 ENLARGING SOUND BUFFERS</a>
-<li><a href="#FREEING-MORE-SHARED-MEMORY">15.3 FREEING MORE SHARED MEMORY</a>
-<li><a href="#SPEEDING-UP-THE-HARD-DRIVE">15.4 SPEEDING UP THE HARD DRIVE</a>
-<li><a href="#DISABLING-CRON">15.5 DISABLING CRON</a>
-<li><a href="#REDUCING-USB-MOUSE-SENSITIVITY">15.6 REDUCING USB MOUSE SENSITIVITY</a>
-<li><a href="#ASSORTED-X-TWEEKS">15.7 ASSORTED X TWEEKS</a>
-<li><a href="#SPEEDING-UP-THE-FILE-SYSTEM">15.8 SPEEDING UP THE FILE SYSTEM</a>
-<li><a href="#IMPROVING-ZORAN-VIDEO">15.9 IMPROVING ZORAN VIDEO</a>
-<ul>
-<li><a href="#IMPROVING-ZORAN-VIDEO">15.9.1 NEW IN 2.6.5</a>
-</li></ul>
-</li></ul>
-<li><a name="toc_TROUBLESHOOTING" href="#TROUBLESHOOTING">16 TROUBLESHOOTING</a>
-<ul>
-<li><a href="#BUZ-DRIVER-CRASHES">16.1 BUZ DRIVER CRASHES</a>
-<li><a href="#DRAGGING-IN-AND-OUT-POINTS-DOESN_0027T-WORK">16.2 DRAGGING IN AND OUT POINTS DOESN'T WORK</a>
-<li><a href="#LOCKING-UP-WHEN-LOADING-FILES">16.3 LOCKING UP WHEN LOADING FILES</a>
-<li><a href="#SYNCHRONIZATION-LOST-WHILE-RECORDING">16.4 SYNCHRONIZATION LOST WHILE RECORDING</a>
-<li><a href="#APPLYING-LINEARIZE-FOLLOWED-BY-BLUR-DOESN_0027T-WORK">16.5 APPLYING LINEARIZE FOLLOWED BY BLUR DOESN'T WORK</a>
-</li></ul>
-<li><a name="toc_SECRETS-OF-CINELERRA" href="#SECRETS-OF-CINELERRA">17 SECRETS OF CINELERRA</a>
-<ul>
-<li><a href="#DOLBY-PRO-LOGIC-ENCODING">17.1 DOLBY PRO LOGIC ENCODING</a>
-<li><a href="#ANALOG-TV-CLEANING">17.2 ANALOG TV CLEANING</a>
-<li><a href="#DEFEATING-INTERLACING">17.3 DEFEATING INTERLACING</a>
-<li><a href="#MAKING-VIDEO-LOOK-LIKE-FILM">17.4 MAKING VIDEO LOOK LIKE FILM</a>
-<li><a href="#CLEARING-OUT-HAZE">17.5 CLEARING OUT HAZE</a>
-<li><a href="#MAKING-A-DVD">17.6 MAKING A DVD</a>
-<li><a href="#MAKING-A-RINGTONE">17.7 MAKING A RINGTONE</a>
-<li><a href="#TIME-STRETCHING-AUDIO">17.8 TIME STRETCHING AUDIO</a>
-<li><a href="#PITCH-SHIFTING-AUDIO">17.9 PITCH SHIFTING AUDIO</a>
-<li><a href="#TEXT-TO-MOVIE">17.10 TEXT TO MOVIE</a>
-</li></ul>
-<li><a name="toc_SECRETS-OF-CINELERRA-EFFECTS" href="#SECRETS-OF-CINELERRA-EFFECTS">18 SECRETS OF CINELERRA EFFECTS</a>
-<ul>
-<li><a href="#1080-TO-480">18.1 1080 TO 480</a>
-<li><a href="#CHROMA-KEY">18.2 CHROMA KEY</a>
-<li><a href="#COMPRESSOR">18.3 COMPRESSOR</a>
-<li><a href="#DECIMATE">18.4 DECIMATE</a>
-<li><a href="#DEINTERLACE">18.5 DEINTERLACE</a>
-<li><a href="#DIFFERENCE-KEY">18.6 DIFFERENCE KEY</a>
-<li><a href="#FIELDS-TO-FRAMES">18.7 FIELDS TO FRAMES</a>
-<li><a href="#FREEZE-FRAME">18.8 FREEZE FRAME</a>
-<li><a href="#HISTOGRAM">18.9 HISTOGRAM</a>
-<li><a href="#INVERSE-TELECINE">18.10 INVERSE TELECINE</a>
-<li><a href="#INTERPOLATE-VIDEO">18.11 INTERPOLATE VIDEO</a>
-<li><a href="#LENS">18.12 LENS</a>
-<li><a href="#LINEARIZE">18.13 LINEARIZE</a>
-<li><a href="#LIVE-AUDIO">18.14 LIVE AUDIO</a>
-<li><a href="#LIVE-VIDEO">18.15 LIVE VIDEO</a>
-<li><a href="#LOOP">18.16 LOOP</a>
-<li><a href="#MOTION">18.17 MOTION</a>
-<ul>
-<li><a href="#SECRETS-OF-MOTION-TRACKING">18.17.1 SECRETS OF MOTION TRACKING</a>
-<li><a href="#2-PASS-MOTION-TRACKING">18.17.2 2 PASS MOTION TRACKING</a>
-<li><a href="#USING-BLUR-TO-IMPROVE-MOTION-TRACKING">18.17.3 USING BLUR TO IMPROVE MOTION TRACKING</a>
-<li><a href="#USING-HISTOGRAM-TO-IMPROVE-MOTION-TRACKING">18.17.4 USING HISTOGRAM TO IMPROVE MOTION TRACKING</a>
-<li><a href="#INTERPOLATING-MOTION-BETWEEN-FRAMES">18.17.5 INTERPOLATING MOTION BETWEEN FRAMES</a>
-<li><a href="#FILLING-IN-THE-BLACK-AREAS">18.17.6 FILLING IN THE BLACK AREAS</a>
-</li></ul>
-<li><a href="#MOTION-2-POINT">18.18 MOTION 2 POINT</a>
-<li><a href="#REFRAMERT">18.19 REFRAMERT</a>
-<li><a href="#REFRAME">18.20 REFRAME</a>
-<li><a href="#RESAMPLE">18.21 RESAMPLE</a>
-<li><a href="#REVERSE-VIDEO_002fAUDIO">18.22 REVERSE VIDEO/AUDIO</a>
-<li><a href="#SWAP-FRAMES">18.23 SWAP FRAMES</a>
-<li><a href="#THRESHOLD">18.24 THRESHOLD</a>
-<li><a href="#TIME-AVERAGE">18.25 TIME AVERAGE</a>
-<li><a href="#TITLER">18.26 TITLER</a>
-<ul>
-<li><a href="#ADDING-FONTS-TO-THE-TITLER">18.26.1 ADDING FONTS TO THE TITLER</a>
-<li><a href="#THE-TITLE_002dSAFE-REGION">18.26.2 THE TITLE-SAFE REGION</a>
-<li><a href="#MAKING-TITLES-LOOK-GOOD">18.26.3 MAKING TITLES LOOK GOOD</a>
-</li></ul>
-<li><a href="#VIDEO-SCOPE">18.27 VIDEO SCOPE</a>
-</li></ul>
-<li><a name="toc_PLUGIN-AUTHORING" href="#PLUGIN-AUTHORING">19 PLUGIN AUTHORING</a>
-<ul>
-<li><a href="#INTRODUCING-THE-PULL-METHOD">19.1 INTRODUCING THE PULL METHOD</a>
-<li><a href="#COMMON-PLUGIN-FUNCTIONS">19.2 COMMON PLUGIN FUNCTIONS</a>
-<ul>
-<li><a href="#THE-PROCESSING-OBJECT">19.2.1 THE PROCESSING OBJECT</a>
-<li><a href="#THE-CONFIGURATION-OBJECT">19.2.2 THE CONFIGURATION OBJECT</a>
-<li><a href="#THE-USER-INTERFACE-OBJECT">19.2.3 THE USER INTERFACE OBJECT</a>
-</li></ul>
-<li><a href="#REALTIME-PLUGINS">19.3 REALTIME PLUGINS</a>
-<li><a href="#NONREALTIME-PLUGINS">19.4 NONREALTIME PLUGINS</a>
-<li><a href="#AUDIO-PLUGINS">19.5 AUDIO PLUGINS</a>
-<li><a href="#VIDEO-PLUGINS">19.6 VIDEO PLUGINS</a>
-<li><a href="#TRANSITION-PLUGINS">19.7 TRANSITION PLUGINS</a>
-<li><a href="#PLUGIN-GUI_0027S-WHICH-UPDATE-DURING-PLAYBACK">19.8 PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>
-<li><a href="#PLUGIN-QUERIES">19.9 PLUGIN QUERIES</a>
-<ul>
-<li><a href="#SYSTEM-QUERIES">19.9.1 SYSTEM QUERIES</a>
-<li><a href="#TIMING-QUERIES">19.9.2 TIMING QUERIES</a>
-</li></ul>
-<li><a href="#USING-OPENGL">19.10 USING OPENGL</a>
-<ul>
-<li><a href="#GETTING-OPENGL-DATA">19.10.1 GETTING OPENGL DATA</a>
-<li><a href="#DRAWING-USING-OPENGL">19.10.2 DRAWING USING OPENGL</a>
-<li><a href="#USING-SHADERS">19.10.3 USING SHADERS</a>
-<li><a href="#AGGREGATING-PLUGINS">19.10.4 AGGREGATING PLUGINS</a>
-</li></ul>
-</li></ul>
-<li><a name="toc_KEYBOARD-SHORTCUTS" href="#KEYBOARD-SHORTCUTS">20 KEYBOARD SHORTCUTS</a>
-<ul>
-<li><a href="#KEYBOARD-SHORTCUTS">20.1 PROGRAM WINDOW</a>
-<ul>
-<li><a href="#KEYBOARD-SHORTCUTS">20.1.1 Editing Media</a>
-<li><a href="#KEYBOARD-SHORTCUTS">20.1.2 Editing Labels &amp; In/Out Points</a>
-<li><a href="#KEYBOARD-SHORTCUTS">20.1.3 Navigation</a>
-<li><a href="#KEYBOARD-SHORTCUTS">20.1.4 File operations</a>
-<li><a href="#KEYBOARD-SHORTCUTS">20.1.5 Key Frame Editing</a>
-<li><a href="#KEYBOARD-SHORTCUTS">20.1.6 Track Manipulation</a>
-<li><a href="#KEYBOARD-SHORTCUTS">20.1.7 What's drawn on the timeline</a>
-</li></ul>
-<li><a href="#KEYBOARD-SHORTCUTS">20.2 VIEWER &amp; COMPOSITOR WINDOWS</a>
-<li><a href="#KEYBOARD-SHORTCUTS">20.3 PLAYBACK TRANSPORT</a>
-<li><a href="#KEYBOARD-SHORTCUTS">20.4 RECORD WINDOW</a>
-</li></ul>
-</li></ul>
-</div>
-
-<div class="node">
-<a name="ABOUT-CINELERRA"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#INSTALLATION">INSTALLATION</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#Top">Top</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">2 ABOUT CINELERRA</h2>
-
-<p><b>BROADCAST 1.0</b>
-
-   <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><b>BROADCAST 2.0</b>
-
-   <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
-resulting waveform to disk.  More notably a few effects could be
-performed as the audio was playing back, in realtime.  A user could mix
-unlimited numbers of tracks, adjust fade, pan, and EQ, and hear the
-result instantly.   Amazingly this real time tweeking is still
-unavailable on most audio programs.
-
-   <p><b>BROADCAST 2000</b>
-
-   <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
-files up to 64 terabytes.  It could do everything Broadcast 2.1 did
-with audio except now all effects for video and audio could be chained
-and performed on the fly, with instant feedback as a user tweeked
-parameters during playback.  Broadcast 2000 made it very easy to do a
-lot of processing and editing on video and audio that would otherwise
-involve many hours setting up command line sequences and writing to
-disk. For a time it seemed as if the original dream of immersive movie
-making for everyone regardless of income level had arrived.
-
-   <p><b>CINELERRA</b>
-
-   <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. 
-Users likewise were maturing.  No longer would it be sufficient to just
-edit video on a UNIX box.  Most users expected on UNIX the same thing
-they got in Win or Mac. In mid 2000 designs for a Broadcast 2000
-replacement were drafted.  The Broadcast name was officially retired
-from the series and the software would now be called Cinelerra. 
-Cinelerra would allow users to configure certain effects in much less
-time than required with Broadcast 2000.  It would begin to emulate some
-of the features found in Win and Mac software while not attempting to
-become a clone.  It's interface would be designed for video from the
-ground up, while supplementing that with the Broadcast audio
-interface.  As always, quality improvements would happen.
-
-   <p><b>LINUX DERIVATIVES</b>
-
-   <p>Linux became more and more fragmented after corporations adopted it. 
-Threading once worked the same on all derivatives.  Today there are more
-threading models than days of the week.  We try to focus on 1 of the
-most popular Linux derivatives at any moment.  The threading model is
-ported to that Linux derivative shortly before a release, but Linux
-derivatives quickly evolve to new threading models and everything
-breaks.
-
-   <p>Also, there is no consistent behaviour for sound and video drivers.  The
-situation with video capture has improved in that modern video sources
-can all be mounted like disk drives.  The audio capture drivers have
-been a bit more reliable.
-
-<ul class="menu">
-<li><a accesskey="1" href="#ABOUT-THIS-MANUAL">ABOUT THIS MANUAL</a>
-</ul>
-
-<div class="node">
-<a name="ABOUT-THIS-MANUAL"></a>
-<p><hr>
-Up:&nbsp;<a rel="up" accesskey="u" href="#ABOUT-CINELERRA">ABOUT CINELERRA</a>
-
-</div>
-
-<h3 class="section">2.1 ABOUT THIS MANUAL</h3>
-
-<p>This is the original manual for Cinelerra.  This manual has been copied
-and translated into many languages on many websites in varying degrees
-of completeness.
-
-   <p>Organizing information in the easiest manner for users to find out what
-they need to know is sort of like cataloging the internet.  They've
-been trying to get it right for 30 years and will probably keep trying
-until the end of time.
-
-   <p>There a lot of fragments of documentation scattered throughout the
-internet about Cinelerra.  This document attempts to combine all the
-pieces of information in one piece.
-
-   <p>Like the operating system and compiler for a piece of software, the
-document writing format is the most important thing in choosing our
-document format.  We wanted a format which would be readable regardless
-of corporate whims and fads.  A piece of software which compiles on GCC
-and Linux will be usable as long as there are C compilers.  Documents
-written in Texinfo will be readable as long as there's a C compiler.
-
-   <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.
-
-   <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
-synchronized.  It is true that manuals should have screenshots, but our
-objective in omitting screenshots is to keep the software costs minimal
-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
-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">
-<a name="INSTALLATION"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#CONFIGURATION">CONFIGURATION</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#ABOUT-CINELERRA">ABOUT CINELERRA</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">3 INSTALLATION</h2>
-
-<p>The Cinelerra package contains Cinelerra and most of the libraries
-needed to run it.  We try to include all the dependancies because of
-the difficulty in tracking down the right versions.  Also included are
-some utilities for handling files.  The following are the general
-contents of all Cinelerra packages.
-
-     <ul>
-<li>
-<b>Foreign language translations</b> - These go into /usr/share/locale.
-
-     <li>
-<b>Cinelerra executable</b> - This goes into /usr/bin
-
-     <li>
-<b>Cinelerra plugins</b> - These go into /usr/lib/cinelerra in 32 bit
-systems and /usr/lib64/cinelerra in 64 bit systems.
-
-     <li>
-<b>soundtest</b> - Utility for determining sound card buffer size.
-
-     <li>
-<b>mplexlo</b> - Multiplexing of MPEG elementary streams without standards
-conformance but more efficiently.
-
-     <li>
-<b>mpeg3cat</b> - Utility for reading an MPEG file from a certain standard
-and outputting it to stdout.
-
-     <li>
-<b>mpeg3toc, mpeg3cat, mpeg3dump</b> - Utilities/ for indexing and reading MPEG files.
-
-     <li>
-<b>mpeg3peek</b> - Utility for displaying the byte offset of a frame in an
-MPEG file.
-
-   </ul>
-
-<ul class="menu">
-<li><a accesskey="1" href="#INSTALLING-AN-RPM">INSTALLING AN RPM</a>
-<li><a accesskey="2" href="#COMPILING-FROM-SCRATCH">COMPILING FROM SCRATCH</a>
-<li><a accesskey="3" href="#RUNNING-CINELERRA">RUNNING CINELERRA</a>
-</ul>
-
-<div class="node">
-<a name="INSTALLING-AN-RPM"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#COMPILING-FROM-SCRATCH">COMPILING FROM SCRATCH</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#INSTALLATION">INSTALLATION</a>
-
-</div>
-
-<h3 class="section">3.1 INSTALLING AN RPM</h3>
-
-<p>Cinelerra is easiest installed by downloading an RPM and running
-
-<pre class="example">     rpm -U --force --nodeps hvirtual*.rpm
-</pre>
-   <p>on a Fedora 4 system.
-
-   <p>On systems which don't support RPM look for a utility called
-<b>rpm2cpio</b>.  Download a Cinelerra RPM and from the /
-directory run
-
-<pre class="example">     rpm2cpio hvirtual*.rpm | cpio -i --make-directories
-</pre>
-   <p>This doesn't always work because there are many forks of the C library,
-each incompatible with the others.  This is the biggest reason to
-compile from scratch.
-
-<div class="node">
-<a name="COMPILING-FROM-SCRATCH"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#RUNNING-CINELERRA">RUNNING CINELERRA</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#INSTALLING-AN-RPM">INSTALLING AN RPM</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#INSTALLATION">INSTALLATION</a>
-
-</div>
-
-<h3 class="section">3.2 COMPILING FROM SCRATCH</h3>
-
-<p>It should be noted that the compiler used in building Cinelerra
-binaries is the free GNU compiler and very conservative optimization
-flags.  Alternative optimization flags and compilers produce varying
-results.  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.
-
-   <p>The compilation is verified on a vanilla Fedora 4 installation,
-workstation mode.  Fedora doesn't install a lot of dependancies like
-<b>nasm</b> and <b>yasm</b>.  Yes, 3 assemblers are now required to assemble
-x86 code.  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.
-
-<pre class="example">     tar jxf cinelerra*.tar.bz2
-</pre>
-   <p>The compilation is verified on a Fedora 4 installation.  Fedora 4
-doesn't install a lot of the reqiured compilers.  Mainly <b>nasm</b> and
-<b>yasm</b>, 2 of the 3 assemblers.  These have to be installed manually
-for compilation to succeed.
-
-   <p>Enter the hvirtual directory
-
-<pre class="example">     cd cinelerra
-</pre>
-   <p>Then run
-
-<pre class="example">     ./configure
-</pre>
-   <p>This checks the build environment for the right tools and should give
-you an error if a tool is missing.  Once that succeeds run
-
-<pre class="example">     make
-</pre>
-   <p>The make procedure should run through all the directories and put
-binaries in the <b>i686</b> or <b>x86_64</b> directories.  When NFS was
-a lot faster, we compiled Alpha and i686 binaries in the same
-filesystem with the objects in different subdirectories, so all the
-binaries are still put in subdirectories.
-
-   <p>A lot of libraries are included to get the version numbers right.  Some
-of the libraries don't compile on SMP systems.  One solution is to
-disable SMP when rebooting and reenable it when compilation is
-finished.  Another solution is to rerun make over and over until it
-gets through the offending libraries.
-
-   <p>Once finished, make sure you are root and run
-
-<pre class="example">     make install
-</pre>
-   <p>to install the binaries.  If installation fails it means something
-failed to compile or you weren't root.  Run <b>make</b> again and watch
-for errors.
-
-   <p>Sometimes you'll want to run <b>make clean</b> if you're programming
-something or the system libraries change.  In this case, you'll
-probably need to run <b>configure</b> again because some libraries delete
-their configuration files in <b>make clean</b>.
-
-<div class="node">
-<a name="RUNNING-CINELERRA"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#COMPILING-FROM-SCRATCH">COMPILING FROM SCRATCH</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#INSTALLATION">INSTALLATION</a>
-
-</div>
-
-<h3 class="section">3.3 RUNNING CINELERRA</h3>
-
-<p>The simplest way to run Cinelerra is by running
-
-<pre class="example">     /usr/bin/cinelerra
-</pre>
-   <p>This command hides a much more capable command line interface.  Run
-<b>cinelerra -h</b> to get a listing of command line options.  The use of
-these options is described in several sections.
-
-   <p>For rendering from the command line See <a href="#RENDERING-FILES">RENDERING FILES</a>.
-
-<div class="node">
-<a name="CONFIGURATION"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#CREATING-A-NEW-PROJECT">CREATING A NEW PROJECT</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#INSTALLATION">INSTALLATION</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">4 CONFIGURATION</h2>
-
-<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>Here we discuss not only the configuration options but which of the
-different API's in Linux are supported.
-
-   <p>Go to <b>settings-&gt;preferences</b> and to see the options.
-
-<ul class="menu">
-<li><a accesskey="1" href="#ENVIRONMENT-VARIABLES">ENVIRONMENT VARIABLES</a>:   These environment variables are recognized by Cinelerra
-<li><a accesskey="2" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>:           Information about the audio drivers
-<li><a accesskey="3" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>:           Information about the video drivers
-<li><a accesskey="4" href="#PLAYBACK">PLAYBACK</a>:                Configuring parameters related to playback. 
-<li><a accesskey="5" href="#RECORDING">RECORDING</a>:               Configuring parameters related to recording. 
-<li><a accesskey="6" href="#PERFORMANCE">PERFORMANCE</a>:             Configuring parameters related to how fast things go. 
-<li><a accesskey="7" href="#INTERFACE">INTERFACE</a>:               Configuring the user interface. 
-<li><a accesskey="8" href="#ABOUT">ABOUT</a>:                   Viewing information about the program. 
-</ul>
-
-<div class="node">
-<a name="ENVIRONMENT-VARIABLES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
-
-</div>
-
-<h3 class="section">4.1 ENVIRONMENT VARIABLES</h3>
-
-<p>In UNIX derivatives, environment variables are global variables in the
-shell which all applications can read.  They are set with a command
-like <b>set VARIABLE=value</b>.  All the environment variables can be
-viewed with a command like <b>env</b>.  Cinelerra recognizes the following
-environment variables:
-
-     <ul>
-<li><b>LADSPA_PATH</b> - If you want to use LADSPA plugins, this must be
-defined: a colon separated list of directories to search for LADSPA
-plugins.  These are not native Cinelerra plugins.  See <a href="#LADSPA-EFFECTS">LADSPA EFFECTS</a>.
-
-   </ul>
-
-<div class="node">
-<a name="AUDIO-DRIVERS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#ENVIRONMENT-VARIABLES">ENVIRONMENT VARIABLES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
-
-</div>
-
-<h3 class="section">4.2 AUDIO DRIVERS</h3>
-
-<p>The audio drivers are used for both recording and playback to get data
-to and from the hardware.  Since the same drivers are used for both
-recording and playback, their functionality is described here in a
-separate section.
-
-<ul class="menu">
-<li><a accesskey="1" href="#COMMON-SOUND-DRIVER-ATTRIBUTES">COMMON SOUND DRIVER ATTRIBUTES</a>:  Attributes used for more than one sound driver. 
-<li><a accesskey="2" href="#OSS">OSS</a>:  Notes about the OSS driver
-<li><a accesskey="3" href="#OSS-Envy24">OSS Envy24</a>:  Notes about the OSS driver for the Envy24 chip
-<li><a accesskey="4" href="#ALSA">ALSA</a>:  Notes about the ALSA driver
-<li><a accesskey="5" href="#ESOUND">ESOUND</a>:  Notes about the ESound driver
-<li><a accesskey="6" href="#RAW-1394">RAW 1394</a>:  Notes about the Raw1394 driver
-<li><a accesskey="7" href="#DV-1394">DV 1394</a>:  Notes about the DV1394 driver
-<li><a accesskey="8" href="#IEC-61883">IEC 61883</a>:  Notes about the IEC 61883 driver
-</ul>
-
-<div class="node">
-<a name="COMMON-SOUND-DRIVER-ATTRIBUTES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#OSS">OSS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.2.1 COMMON SOUND DRIVER ATTRIBUTES</h4>
-
-     <ul>
-<li>DEVICE PATH
-
-     <p>Usually a file in the <b>/dev/</b> directory which controls the
-device.
-
-     <li>
-BITS
-
-     <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.
-
-</ul>
-
-<div class="node">
-<a name="OSS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#OSS-Envy24">OSS Envy24</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#COMMON-SOUND-DRIVER-ATTRIBUTES">COMMON SOUND DRIVER ATTRIBUTES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.2.2 OSS</h4>
-
-<p>This was the first Linux sound driver.  It had an open source
-implementation and a commercial implementation with more sound cards
-supported.  It was the standard sound driver up to linux 2.4.  It still
-is the only sound driver which an i386 binary can use when running on
-an x86_64 system.
-
-<div class="node">
-<a name="OSS-Envy24"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#ALSA">ALSA</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#OSS">OSS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.2.3 OSS Envy24</h4>
-
-<p>The commercial version of OSS had a variant for 24 bit 96 Khz
-soundcards.  This variant required significant changes to the way the
-sound drivers were used, which is what the OSS Envy24 variant is for.
-
-<div class="node">
-<a name="ALSA"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#ESOUND">ESOUND</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#OSS-Envy24">OSS Envy24</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.2.4 ALSA</h4>
-
-<p>ALSA is the most common sound driver in Linux 2.6.  It supports the
-most sound cards now.  It takes advantage of low latency features in
-Linux 2.6 to get better performance than OSS had in 2.4 but roughly the
-same performance that OSS had in 2.0.  Unfortunately ALSA is constantly
-changing.  A program which works with it one day may not the next day. 
-New wrappers are being developed on top of ALSA at such a pace, we plan
-to support them at regular intervals, not at every new release of a new
-wrapper.
-
-   <p>ALSA is no longer portable between i386 and x86_64.  If an i386 binary
-tries to play back on an x86_64 kernel it'll crash.  For this scenario,
-use OSS.
-
-<div class="node">
-<a name="ESOUND"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#RAW-1394">RAW 1394</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#ALSA">ALSA</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.2.5 ESOUND</h4>
-
-<p>ESOUND was a sound server that sat on top of OSS.  It was written for a
-window manager called Enlightenment.  It supported a limited number of
-bits and had high latency compared to modern times but multiplexed
-multiple audio sources.  It's unknown whether it still works.
-
-<div class="node">
-<a name="RAW-1394"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#DV-1394">DV 1394</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#ESOUND">ESOUND</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.2.6 RAW 1394</h4>
-
-<p>The first interface between linux software and firewire camcorders. 
-This was the least reliable way to play audio to a camcorder.  It
-consisted of a library on top of the kernel commands.
-
-<div class="node">
-<a name="DV-1394"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#IEC-61883">IEC 61883</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#RAW-1394">RAW 1394</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.2.7 DV 1394</h4>
-
-<p>The second rewrite of DV camcorder support in Linux.  This was the most
-reliable way to play audio to a camcorder.  This consisted of direct
-kernel commands.
-
-<div class="node">
-<a name="IEC-61883"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DV-1394">DV 1394</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.2.8 IEC 61883</h4>
-
-<p>The third rewrite of DV camcorder support in Linux.  This is a library
-on top of RAW 1394 which is a library on top of the kernel commands. 
-It's less reliable than DV 1394 but more reliable than RAW 1394.  The
-next rewrite ought to fix that.
-
-<div class="node">
-<a name="VIDEO-DRIVERS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#PLAYBACK">PLAYBACK</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
-
-</div>
-
-<h3 class="section">4.3 VIDEO DRIVERS</h3>
-
-<p>The audio drivers are used for both recording and playback to get data
-to and from the hardware.  Since the same drivers are used for both
-recording and playback, their functionality is described here in a
-separate section.
-
-<ul class="menu">
-<li><a accesskey="1" href="#COMMON-VIDEO-DRIVER-ATTRIBUTES">COMMON VIDEO DRIVER ATTRIBUTES</a>:  Parameters used by more than one driver. 
-<li><a accesskey="2" href="#X11">X11</a>
-<li><a accesskey="3" href="#X11_002dXV">X11-XV</a>
-<li><a accesskey="4" href="#X11_002dOPENGL">X11-OPENGL</a>
-<li><a accesskey="5" href="#BUZ">BUZ</a>
-<li><a accesskey="6" href="#RAW-1394-VIDEO-PLAYBACK">RAW 1394 VIDEO PLAYBACK</a>
-<li><a accesskey="7" href="#DV-1394-VIDEO-PLAYBACK">DV 1394 VIDEO PLAYBACK</a>
-<li><a accesskey="8" href="#IEC-61883-VIDEO-PLAYBACK">IEC 61883 VIDEO PLAYBACK</a>
-</ul>
-
-<div class="node">
-<a name="COMMON-VIDEO-DRIVER-ATTRIBUTES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#X11">X11</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.3.1 COMMON VIDEO DRIVER ATTRIBUTES</h4>
-
-     <ul>
-<li>
-DISPLAY
-
-     <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.
-
-     <li>
-DEVICE PATH
-
-     <p>Usually a file in the <b>/dev/</b> directory
-which controls the device.
-
-     <li>
-SWAP FIELDS
-
-     <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.
-
-     <li>
-OUTPUT CHANNEL
-
-     <p>Devices with multiple outputs may need a
-specific connector to send video on.
-
-     <li>
-PORT
-
-     <p>The IEEE1394 standard specifies something known as the
-<b>port</b>.  This is probably the firewire card number in the system
-to use.
-
-     <li>
-CHANNEL
-
-     <p>The IEEE1394 standard specifies something known as the
-<b>channel</b>.  For DV cameras it's always <b>63</b>.
-
-</ul>
-
-<div class="node">
-<a name="X11"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#X11_002dXV">X11-XV</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#COMMON-VIDEO-DRIVER-ATTRIBUTES">COMMON VIDEO DRIVER ATTRIBUTES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.3.2 X11</h4>
-
-<p>This was the first method of video playback on any UNIX system, valid
-all the way until 1999.  It just writes the RGB triplet for each pixel
-directly to the window.  It's the slowest playback method.  It's still
-useful as a fallback when graphics hardware can't handle very large
-frames.
-
-<div class="node">
-<a name="X11-XV"></a>
-<a name="X11_002dXV"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#X11_002dOPENGL">X11-OPENGL</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#X11">X11</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.3.3 X11-XV</h4>
-
-<p>This was the second big method of video playback in UNIX starting in
-1999.  It converts YUV to RGB in hardware with scaling.  It's the
-preferred playback method but can't handle large frame sizes.  The
-maximum video size for XV is usually 1920x1080.
-
-<div class="node">
-<a name="X11-OPENGL"></a>
-<a name="X11_002dOPENGL"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#BUZ">BUZ</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#X11_002dXV">X11-XV</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.3.4 X11-OPENGL</h4>
-
-<p>The most powerful video playback method is OpenGL.  With this driver,
-most effects are done in hardware.  OpenGL allows video sizes up to the
-maximum texture size, which is usually larger than what XV supports,
-depending on the graphics driver.
-
-   <p>OpenGL doesn't affect rendering.  It just accelerates playback.  OpenGL
-relies on PBuffers and shaders to do video rendering.  The graphics
-driver must support OpenGL 2 and Cinelerra needs to be explicitely
-compiled with OpenGL 2 support.  This requires compiling it on a system
-with the OpenGL 2 headers.
-
-   <p>PBuffers are known to be fickle.  If the graphics card doesn't have
-enough memory or doesn't have the right visuals, PBuffers won't work. 
-Try seeking several frames or restarting Cinelerra if OpenGL doesn't
-work.
-
-   <p>Because of OpenGL limitations, X11-OpenGL processes everything in 8 bit
-colormodels, although the difference between YUV and RGB is retained.
-
-   <p>The <b>scaling equation</b> in Preferences is ignored by OpenGL.  OpenGL
-always uses linear scaling.
-
-   <p>Project and track sizes need to be multiples of 4 for OpenGL to work.
-
-   <p>To get the most acceleration, OpenGL-enabled effects must be placed
-after software-only effects.  All rendering before the last
-software-only effect is done in software.  The core Cinelerra
-operations like camera and projector are of course OpenGL.
-
-<div class="node">
-<a name="BUZ"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#RAW-1394-VIDEO-PLAYBACK">RAW 1394 VIDEO PLAYBACK</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#X11_002dOPENGL">X11-OPENGL</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.3.5 BUZ</h4>
-
-<p>This is a method for playing motion JPEG-A files directly to a
-composite analog signal.  It uses a popular hack of the Video4Linux 1
-driver from 2000 to decompress JPEG in hardware.  Sadly, even though
-analog output is largely obsolete, newer drivers have replaced BUZ.
-
-<div class="node">
-<a name="RAW-1394-VIDEO-PLAYBACK"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#DV-1394-VIDEO-PLAYBACK">DV 1394 VIDEO PLAYBACK</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#BUZ">BUZ</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.3.6 RAW 1394 VIDEO PLAYBACK</h4>
-
-<p>The first interface between linux software and firewire camcorders. 
-This was the least reliable way to play video to a camcorder.  It
-consisted of a library on top of the kernel commands.
-
-<div class="node">
-<a name="DV-1394-VIDEO-PLAYBACK"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#IEC-61883-VIDEO-PLAYBACK">IEC 61883 VIDEO PLAYBACK</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#RAW-1394-VIDEO-PLAYBACK">RAW 1394 VIDEO PLAYBACK</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.3.7 DV 1394 VIDEO PLAYBACK</h4>
-
-<p>The second rewrite of DV camcorder support in Linux.  This was the most
-reliable way to play video to a camcorder.  This consisted of direct
-kernel commands.
-
-<div class="node">
-<a name="IEC-61883-VIDEO-PLAYBACK"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DV-1394-VIDEO-PLAYBACK">DV 1394 VIDEO PLAYBACK</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>
-
-</div>
-
-<h4 class="subsection">4.3.8 IEC 61883 VIDEO PLAYBACK</h4>
-
-<p>The third rewrite of DV camcorder support in Linux.  This is a library
-on top of RAW 1394 which is a library on top of the kernel commands. 
-It's less reliable than DV 1394 but more reliable than RAW 1394.  The
-next rewrite ought to fix that.
-
-<div class="node">
-<a name="PLAYBACK"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#RECORDING">RECORDING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
-
-</div>
-
-<h3 class="section">4.4 PLAYBACK</h3>
-
-<ul class="menu">
-<li><a accesskey="1" href="#AUDIO-OUT">AUDIO OUT</a>
-<li><a accesskey="2" href="#VIDEO-OUT">VIDEO OUT</a>
-</ul>
-
-<div class="node">
-<a name="AUDIO-OUT"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#VIDEO-OUT">VIDEO OUT</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLAYBACK">PLAYBACK</a>
-
-</div>
-
-<h4 class="subsection">4.4.1 AUDIO OUT</h4>
-
-<p>These determine what happens when you play sound from the timeline.
-
-     <ul>
-<li>SAMPLES TO SEND TO CONSOLE:
-
-     <p>For playing audio, small fragments of sound are read from disk and
-processed in a virtual console sequentially.  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
-latency is unchanged no matter what this value is.
-
-     <p>A good way of ensuring high quality playback was to read bigger
-fragments from the disk and break them into smaller fragments for the
-soundcard.  That changed when the virtual console moved from the push
-model to the pull model.  Since different stages of the rendering
-pipeline can change the rate of the incoming data, it would now be real
-hard to disconnect size of the console fragments from the size of the
-fragments read from disk.
-
-     <li>
-AUDIO OFFSET:
-
-     <p>The ability to tell the exact playback position on Linux sound drivers
-is pretty bad if it's provided at all.  Since this information is
-required for proper video synchronization, it has to be accurate.  The
-<b>AUDIO OFFSET</b> allows users to adjust the position returned by the
-sound driver to reflect reality.  The audio offset doesn't affect the
-audio playback or rendering at all.  It merely changes the
-synchronization of video playback.
-
-     <p>The easiest way to set the audio offset is to create a timeline with 1
-video track and one audio track.  Expand the audio track and center the
-audio pan.  The frame rate should be something over 24fps and the
-sampling rate should be over 32000.  The frame size should be small
-enough for your computer to render it at the full framerate.  Highlight
-a region of the timeline starting at 10 seconds and ending at 20
-seconds.  Drop a <b>gradient</b> effect on the video track and configure
-it to be clearly visible.  Drop a <b>synthesizer</b> effect on the audio
-and configure it to be clearly audible.
-
-     <p>Play the timeline from 0 and watch to see if the gradient effect starts
-exactly when the audio starts.  If it doesn't, expand the audio track
-and adjust the nudge.  If the audio starts ahead of the video, decrease
-the nudge value.  If the audio starts after the video, increase the
-nudge value.  Once the tracks play back synchronized, copy the nudge
-value to the <b>AUDIO OFFSET</b> value in preferences.
-
-     <p><b>Note:</b> if you change sound drivers or you change the value of <b>USE
-SOFTWARE FOR POSITIONING INFORMATION</b>, you'll need to change the audio
-offset because different sound drivers are unequally inaccurate.
-
-     <li>
-VIEW FOLLOWS PLAYBACK
-
-     <p>Causes the timeline window to scroll when the playback cursor moves. 
-This can bog down the X Server or cause the timeline window to lock up
-for long periods of time while drawing the assetse.
-
-     <li>USE SOFTWARE FOR POSITIONING INFORMATION
-
-     <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.
-
-     <li>AUDIO PLAYBACK IN REALTIME:
-
-     <p>Back in the days when 150Mhz was the maximum, this allowed
-uninterrupted playback on heavy loads.  It forces the audio playback to
-the highest priority in the kernel.  Today it's most useful for
-achieving very low latency between console tweeks and soundcard
-output.  You must be root to get realtime priority.
-
-     <li>AUDIO DRIVER
-
-     <p>There are many sound drivers for Linux.  This allows selecting one
-sound driver and setting parameters specific to it.  The sound drivers
-and their parameters are described in the sound driver section. 
-See <a href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>.
-
-   </ul>
-
-<div class="node">
-<a name="VIDEO-OUT"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#AUDIO-OUT">AUDIO OUT</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLAYBACK">PLAYBACK</a>
-
-</div>
-
-<h4 class="subsection">4.4.2 VIDEO OUT</h4>
-
-<p>These determine how video gets from the timeline to your eyes.
-
-     <ul>
-<li>PLAY EVERY FRAME
-
-     <p>Causes every frame of video to be displayed even if it means falling
-behind the audio.  This should always be on unless you use mostly
-uncompressed codecs.  Most compressed codecs don't support frame
-dropping anymore.
-
-     <li>
-FRAMERATE ACHIEVED
-
-     <p>The number of frames per second being displayed during playback.  This
-is only updated during playback.
-
-     <li>DECODE FRAMES ASYNCHRONOUSLY
-
-     <p>If you have lots of memory and more than one CPU, this option can
-improve playback performance by decoding video on one CPU as fast as
-possible while dedicating other CPU to displaying video only.  It
-assumes all playback operations are forward and no frames are dropped. 
-Operations involving reverse playback or frame dropping are negatively
-impacted.
-
-     <p>Since this option requires enourmous amounts of memory, it may crash if
-the input frames are very large.
-
-     <li>
-SCALING EQUATION
-
-     <p>When video playback involves any kind of scaling or translation, this
-algorithm is used.  This doesn't affect 1:1 playback.
-
-          <ul>
-<li>NEAREST NEIGHBOR ENLARGE AND REDUCE
-
-          <p>lowest but fastest
-quality.  Produces jagged edges and uneven motion.
-
-          <li>
-BICUBIC ENLARGE AND BILINEAR REDUCE
-
-          <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.
-
-          <li>
-BILINEAR ENLARGE AND BILINEAR REDUCE
-
-          <p>when slight enlargement
-is needed a bilinear enlargement looks better than a bicubic
-enlargement.
-
-     </ul>
-
-     <li>
-PRELOAD BUFFER FOR QUICKTIME
-
-     <p>The Quicktime/AVI decoder can handle DVD sources better when this is
-around 10000000.  This reduces the amount of seeking required. 
-Unfortunately when reading high bitrate sources from a hard drive, this
-tends to slow it down.  For normal use this should be 0.
-
-     <li>
-DVD SUBTITLE TO DISPLAY
-
-     <p>DVD IFO files usually contain subtitle tracks.  These must be decoded
-with by the MPEG decoder.  Select <b>Enable subtitles</b> to enable
-subtitle decoding.  There are usually multiple subtitle tracks starting
-from 0.  The subtitle track to be decoded for all MPEG streams goes in
-the DVD subtitlee to display text box.  Go to the asset corresponding
-to the MPEG file in the Resources window and right click.  Click on
-Info.  The number of subtitle tracks is given at the bottom.
-
-     <li>
-INTERPOLATE CR2 IMAGES
-
-     <p>Enables interpolation of CR2 images.  This is required since the raw
-image in a CR2 file is a bayer pattern.  The interpolation uses dcraw's
-built-in interpolation and is very slow.  This operation can be
-disabled and the <b>Interpolate Pixels</b> effect used instead for fast
-previewing.
-
-     <li>
-WHITE BALANCE CR2 IMAGES
-
-     <p>This enables white balancing for CR2 images if interpolation is also
-enabled.  It uses the camera's matrix which is contained in the CR2
-file.  White balancing is not performed if interpolation is not
-performed because white balancing needs a blending of all 3 primary
-colors.
-
-     <p>Disabling white balancing is useful for operations involving dark frame
-subtraction.  The dark frame and the long exposure need to have the
-same color matrix.
-
-     <p>If you disable <b>Interpolate CR2 Images</b> and use the <b>Interpolate
-Pixels</b> effect, be aware the <b>Interpolate Pixels</b> effect always does
-both interpolation and white balancing using the camera's matrix,
-regardless of the settings in Preferences.  Dark frame subtraction
-needs to be performed before <b>Interpolate Pixels</b>.
-
-     <li>
-
-     <p>VIDEO DRIVER
-
-     <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>The video drivers and their parameters are described in the video
-driver section.  See <a href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>.
-
-   </ul>
-
-<div class="node">
-<a name="RECORDING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#PERFORMANCE">PERFORMANCE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#PLAYBACK">PLAYBACK</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
-
-</div>
-
-<h3 class="section">4.5 RECORDING</h3>
-
-<ul class="menu">
-<li><a accesskey="1" href="#FILE-FORMAT">FILE FORMAT</a>
-<li><a accesskey="2" href="#AUDIO-IN">AUDIO IN</a>
-<li><a accesskey="3" href="#VIDEO-IN">VIDEO IN</a>
-</ul>
-
-<p>The parameters here affect what happens when you go to
-<b>File-&gt;Record...</b>.  The intention was to make <b>File-&gt;Record...</b> go
-as fast as possible into the record monitoring window, without a
-lengthy dialog to configure the file format.  Instead the file format
-for recording is set here and it is applied to all recordings.  Also
-set here is the hardware for recording, since the hardware determines
-the supported file format in most cases.
-
-<div class="node">
-<a name="FILE-FORMAT"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#AUDIO-IN">AUDIO IN</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#RECORDING">RECORDING</a>
-
-</div>
-
-<h4 class="subsection">4.5.1 FILE FORMAT</h4>
-
-<p>This determines the output file format for recordings.  It depends
-heavily on the type of driver used.  The interface is the same as the
-rendering interface.  The <b>Record audio tracks</b> toggle must be
-enabled to record audio.  The <b>Record video tracks</b> toggle must be
-enabled to record video.  The wrench button left of each toggle opens a
-configuration dialog to set the codec corresponding to audio and
-video.  The audio and video is wrapped in a wrapper defined by the
-<b>File Format</b> menu.  Different wrappers may record audio only, video
-only, or both.
-
-   <p>Some video drivers can only record to a certain wrapper.  DV, for
-example, can only record to Quicktime with DV as the video compression. 
-If the video driver is changed, the file format may be updated to give
-the supported output.  If you change the file format to an unsupported
-format, it may not work with the video driver.
-
-<div class="node">
-<a name="AUDIO-IN"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#VIDEO-IN">VIDEO IN</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#FILE-FORMAT">FILE FORMAT</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#RECORDING">RECORDING</a>
-
-</div>
-
-<h4 class="subsection">4.5.2 AUDIO IN</h4>
-
-<p>These determine what happens when you record audio.
-
-     <ul>
-<li>
-RECORD DRIVER
-
-     <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>
-<li>
-DEVICE PATH
-
-          <p>Usually a file in the <b>/dev/</b> directory which controls the
-device.
-
-          <li>
-BITS
-
-          <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.
-
-     </ul>
-
-     <li>
-SAMPLES TO WRITE AT A TIME
-
-     <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.
-
-     <li>
-SAMPLE RATE FOR RECORDING
-
-     <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>
-
-<div class="node">
-<a name="VIDEO-IN"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#AUDIO-IN">AUDIO IN</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#RECORDING">RECORDING</a>
-
-</div>
-
-<h4 class="subsection">4.5.3 VIDEO IN</h4>
-
-<p>These determine what happens when you record video.
-
-     <ul>
-<li>
-RECORD DRIVER
-
-     <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.
-
-     <li>
-FRAMES TO RECORD TO DISK AT A TIME
-
-     <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.
-
-     <li>
-FRAMES TO BUFFER IN DEVICE
-
-     <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.
-
-     <li>USE SOFTWARE FOR POSITIONING INFORMATION
-
-     <p>Video uses audio for
-
-     <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.
-
-     <li>
-SYNC DRIVES AUTOMATICALLY
-
-     <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.
-
-     <li>
-SIZE OF CAPTURED FRAME
-
-     <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.
-
-     <li>FRAME RATE FOR RECORDING
-
-     <p>The frame rate recorded is different from the project settings.  This
-sets the recorded frame rate.
-
-   </ul>
-
-<div class="node">
-<a name="PERFORMANCE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#INTERFACE">INTERFACE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#RECORDING">RECORDING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
-
-</div>
-
-<h3 class="section">4.6 PERFORMANCE</h3>
-
-<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>
-<li>CACHE ITEMS
-
-     <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.
-
-     <li>
-SECONDS TO PREROLL RENDERS
-
-     <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
-renderfarm is prerolled by this value.  This does not affect background
-rendering, however.  Background rendering uses a different preroll
-value.
-
-     <li>
-FORCE SINGLE PROCESSOR USE
-
-     <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 class="menu">
-<li><a accesskey="1" href="#BACKGROUND-RENDERING">BACKGROUND RENDERING</a>
-<li><a accesskey="2" href="#RENDERFARM">RENDERFARM</a>
-</ul>
-
-<div class="node">
-<a name="BACKGROUND-RENDERING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#RENDERFARM">RENDERFARM</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PERFORMANCE">PERFORMANCE</a>
-
-</div>
-
-<h4 class="subsection">4.6.1 BACKGROUND RENDERING</h4>
-
-<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
-useful for transitions and previewing effects which are too slow to
-display in a reasonable amount of time.  If renderfarm is enabled, the
-renderfarm is used for background rendering, giving you the potential
-for realtime effects if enough network bandwidth and CPU nodes exist.
-
-     <ul>
-<li>FRAMES PER BACKGROUND RENDERING JOB
-
-     <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.
-
-     <li>FRAMES TO PREROLL 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.
-
-     <li>OUTPUT FOR BACKGROUND RENDERING
-
-     <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
-files are usually created, <b>ls</b> commands won't work in the
-background rendering directory.  The <img src="magnify.png" alt="magnify.png"> browse button for
-this option normally won't work either, but the <img src="wrench.png" alt="wrench.png">
-configuration button for this option works.
-
-     <li>FILE FORMAT
-
-     <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>
-
-<div class="node">
-<a name="RENDERFARM"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#BACKGROUND-RENDERING">BACKGROUND RENDERING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PERFORMANCE">PERFORMANCE</a>
-
-</div>
-
-<h4 class="subsection">4.6.2 RENDERFARM</h4>
-
-<p>To use the renderfarm set these options.  Ignore them for a standalone
-system
-
-     <ul>
-<li>
-USE RENDER FARM FOR RENDERING
-
-     <p>When selected, all the
-<b>file-&gt;render</b> operations use the renderfarm.
-
-     <li>
-NODES
-
-     <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
-value of <b>port</b> and hitting <b>add node</b>.
-
-     <p>Computer freaks may be better off editing the
-<b>~/.bcast/.Cinelerra_rc</b> file than this if they have hundreds of
-nodes.  Remember that .Cinelerra_rc is overwritten whenever a copy of
-Cinelerra exits.
-
-     <p>Select the <b>ON</b> column to activate and deactivate nodes once they
-are created.
-
-     <p>Nodes may be edited by highlighting a row and hitting <b>apply changes</b>.
-
-     <li>
-HOSTNAME
-
-     <p>Edit the hostname of an existing node or enter the hostname of a new
-node here.
-
-     <li>
-PORT
-
-     <p>Edit the port of an existing node or enter the port of a new node here.
-
-     <li>
-REPLACE NODE
-
-     <p>When editing an existing node, hit this to commit the changes to
-<b>HOSTNAME</b> and <b>PORT</b>.  The changes won't be committed if you
-don't hit this button.
-
-     <li>
-ADD NODE
-
-     <p>Create a new node with the <b>HOSTNAME</b> and <b>PORT</b> settings.
-
-     <li>
-DELETE NODE
-
-     <p>Deletes whatever node is highlighted in the <b>NODES</b> list.
-
-     <li>
-SORT NODES
-
-     <p>Sorts the <b>NODES</b> list based on the hostname.
-
-     <li>
-RESET RATES
-
-     <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.
-
-     <li>
-TOTAL JOBS TO CREATE
-
-     <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
-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>
-
-<div class="node">
-<a name="INTERFACE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#ABOUT">ABOUT</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#PERFORMANCE">PERFORMANCE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
-
-</div>
-
-<h3 class="section">4.7 INTERFACE</h3>
-
-<p>These parameters affect purely how the user interface works.
-
-     <ul>
-<li>
-INDEX FILES GO HERE
-
-     <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.
-
-     <li>
-SIZE OF INDEX FILE
-
-     <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.
-
-     <li>
-NUMBER OF INDEX FILES TO KEEP
-
-     <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.
-
-     <li>
-DELETE ALL INDEXES
-
-     <p>When you change the index size or you want to clean out excessive index
-files, this deletes all the index files.
-
-     <li>USE HOURS:MINUTES:SECONDS.XXX
-
-     <p>Various representations of time are given.  Select the most convenient
-one.  The time representation can also be changed by <b>CTRL</b>
-clicking on the time ruler.
-
-     <li>USE THUMBNAILS
-
-     <p>The Resource Window displays thumbnails of assets by default.  This can
-take a long time to set up.  This option disables the thumbnails.
-
-     <li>CLICKING IN/OUT POINTS DOES WHAT
-
-     <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.
-
-     <li>MIN DB FOR METER
-
-     <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. 
-See <a href="#SOUND-LEVEL-METERS">SOUND LEVEL METERS</a>.
-
-     <li>MAX DB FOR METER
-
-     <p>This sets the maximum sound level represented by the sound meters.  No
-matter what this value is, no soundcard can play sound over 0 db.  This
-value is presented merely to show how far over the limit a sound wave
-is. 
-See <a href="#SOUND-LEVEL-METERS">SOUND LEVEL METERS</a>.
-
-     <li>THEME
-
-     <p>Cinelerra supports variable themes.  Select one here and restart
-Cinelerra to see it.
-
-   </ul>
-
-<div class="node">
-<a name="ABOUT"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#INTERFACE">INTERFACE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
-
-</div>
-
-<h3 class="section">4.8 ABOUT</h3>
-
-<p>This section gives you information about the copyright, the time of the
-current build, the lack of a warranty, and the versions of some of the
-libraries.  Be sure to agree to the terms of the lack of the warranty.
-
-<div class="node">
-<a name="CREATING-A-NEW-PROJECT"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#THE-MAIN-WINDOWS">THE MAIN WINDOWS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#CONFIGURATION">CONFIGURATION</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">5 CREATING A NEW PROJECT</h2>
-
-<p>There are 2 ways to create a new project: going to <b>File-&gt;New</b> or
-loading new files See <a href="#LOADING-FILES">LOADING FILES</a>.  Once a new project is
-created, all the parameters can be changed later without creating a new
-project.
-
-<ul class="menu">
-<li><a accesskey="1" href="#USING-THE-NEW-PROJECT-DIALOG">USING THE NEW PROJECT DIALOG</a>
-<li><a accesskey="2" href="#CHANGING-PARAMETERS-AFTER-LOADING">CHANGING PARAMETERS AFTER LOADING</a>
-</ul>
-
-<div class="node">
-<a name="USING-THE-NEW-PROJECT-DIALOG"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#CHANGING-PARAMETERS-AFTER-LOADING">CHANGING PARAMETERS AFTER LOADING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CREATING-A-NEW-PROJECT">CREATING A NEW PROJECT</a>
-
-</div>
-
-<h3 class="section">5.1 USING THE NEW PROJECT DIALOG</h3>
-
-<p>One way is to go to <b>File-&gt;New</b>.  This dialog contains the parameters
-for the new project.  The sections of the <b>New</b> dialog are described
-here:
-
-     <ul>
-<li>
-<b>Presets</b> - Select an option from this menu to have all the project
-settings set to one of the known standards.
-
-     <li><b>Audio -&gt; Tracks</b> - Sets the number of audio tracks the new project
-should have.  Tracks can be added or deleted later, but options are
-provided here for convenience.
-
-     <li><b>Audio -&gt; Channels</b> - Sets the number of audio channels the new
-project should have.  The number of audio channels doesn't have to be
-the same as the number of tracks.
-
-     <li><b>Audio -&gt; Samplerate</b> - Sets the samplerate of the audio.  The
-project samplerate doesn't have to be the same as the media sample rate
-that you load.  Media is resampled to match the project sample rate.
-
-     <li><b>Video -&gt; Tracks</b> - Sets the number of video tracks the new project
-should have.  Tracks can be added or deleted later, but options are
-provided here for convenience.
-
-     <li><b>Video -&gt; Framerate</b> - Sets the framerate of the video.  The project
-framerate doesn't have to be the same as the media frame rate that you
-load.  Media is reframed to match the project framerate.
-
-     <li><b>Video -&gt; Canvas size</b> - Sets the size of the video output.  Each
-track also has its own frame size.  Initially the <b>New</b> dialog
-creates video tracks whose sizes all match the video output, but the
-video track sizes can be changed later without changing the video
-output.
-
-     <li><b>Video -&gt; Aspect ratio</b> - Sets the aspect ratio.  The aspect ratio is
-applied to the video output.  The aspect ratio can be different than
-the number of horizontal pixels / the number of vertical pixels. 
-Setting a different aspect ratio than the number of pixels results in
-nonsquare pixels.
-
-     <li><b>Video -&gt; Auto aspect ratio</b> - If this is checked, the <b>New</b> dialog
-always recalculates the <b>Aspect ratio</b> setting when the <b>Canvas
-size</b> is changed.  This ensures pixels are always square.
-
-     <li><b>Video -&gt; Color model</b> - This sets the color model video intermediates
-in the project will be stored in.  Color models are described in a
-separate section See <a href="#COLOR-MODEL">COLOR MODEL</a>.
-
-   </ul>
-
-<div class="node">
-<a name="CHANGING-PARAMETERS-AFTER-LOADING"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#USING-THE-NEW-PROJECT-DIALOG">USING THE NEW PROJECT DIALOG</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CREATING-A-NEW-PROJECT">CREATING A NEW PROJECT</a>
-
-</div>
-
-<h3 class="section">5.2 CHANGING PARAMETERS AFTER LOADING</h3>
-
-<p>After a project is created, you have to use the set format dialog to
-change parameters without deleting the project.  Go to <b>Settings-&gt;Set
-format</b>.
-
-   <p>Most of the options are identical to the <b>File-&gt;New</b>
-options except the lack of a number of tracks to create and the
-addition of audio channel locations.
-
-   <p>This section is discussed in See <a href="#SETTING-PROJECT-ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>.
-
-<div class="node">
-<a name="THE-MAIN-WINDOWS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#LOADING-AND-SAVING-FILES">LOADING AND SAVING FILES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#CREATING-A-NEW-PROJECT">CREATING A NEW PROJECT</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">6 THE MAIN WINDOWS</h2>
-
-<p>When Cinelerra first starts, you'll get four main windows.  Hitting
-<b>CTRL-w</b> in any window closes it.
-
-<ul class="menu">
-<li><a accesskey="1" href="#VIEWER">VIEWER</a>
-<li><a accesskey="2" href="#COMPOSITOR">COMPOSITOR</a>
-<li><a accesskey="3" href="#PROGRAM">PROGRAM</a>
-<li><a accesskey="4" href="#RESOURCES">RESOURCES</a>
-<li><a accesskey="5" href="#SOUND-LEVEL-METERS">SOUND LEVEL METERS</a>
-<li><a accesskey="6" href="#OTHER-WINDOWS">OTHER WINDOWS</a>
-</ul>
-
-<div class="node">
-<a name="VIEWER"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#COMPOSITOR">COMPOSITOR</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#THE-MAIN-WINDOWS">THE MAIN WINDOWS</a>
-
-</div>
-
-<h3 class="section">6.1 VIEWER</h3>
-
-<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.
-
-<div class="node">
-<a name="COMPOSITOR"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#PROGRAM">PROGRAM</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#VIEWER">VIEWER</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#THE-MAIN-WINDOWS">THE MAIN WINDOWS</a>
-
-</div>
-
-<h3 class="section">6.2 COMPOSITOR</h3>
-
-<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>The video output has several navigation functions.  The video output
-size is either locked to the window size or unlocked with scrollbars
-for navigation.  The video output can be zoomed in and out and panned. 
-Navigating the video output this way doesn't affect the rendered
-output, it just changes the point of view in the compositor window.
-
-   <p>If it is unlocked from the window size, middle clicking and dragging
-anywhere in the video pans the point of view.
-
-   <p>Hitting the + and - keys zooms in and out of the video output.
-
-   <p>Underneath the video output are copies of many of the functions
-available in the main window.  In addition there is a
-<img src="cwindow_zoom.png" alt="cwindow_zoom.png"> zoom menu and a <img src="cwindow_light.png" alt="cwindow_light.png"> tally light.
-
-   <p>The zoom menu jumps to all the possible zoom settings and, through the
-<b>Auto</b> option, locks the video to the window size.  The zoom menu
-does not affect the window size.
-
-   <p>The tally light turns red when rendering is happening.  This is useful
-for knowing if the output is current.
-
-   <p>Right clicking anywhere in the video output brings up a menu with all
-the zoom levels and some other options.  In this particular case the
-zoom levels resize the entire window and not just the video.
-
-   <p>The <b>reset camera</b> and <b>reset projector</b> options center the camera
-and projector See <a href="#COMPOSITING">COMPOSITING</a>.
-
-   <p>The <b>Hide controls</b> option hides everything except the video.
-
-   <p>On the left of the video output is a toolbar specific to the compositor
-window.  Here are the functions in the toolbar:
-
-<ul class="menu">
-<li><a accesskey="1" href="#PROTECT-VIDEO">PROTECT VIDEO</a>
-<li><a accesskey="2" href="#MAGNIFYING-GLASS">MAGNIFYING GLASS</a>
-<li><a accesskey="3" href="#MASKS-TOOL">MASKS TOOL</a>
-<li><a accesskey="4" href="#CAMERA">CAMERA</a>
-<li><a accesskey="5" href="#PROJECTOR">PROJECTOR</a>
-<li><a accesskey="6" href="#CROP-TOOL">CROP TOOL</a>
-<li><a accesskey="7" href="#EYEDROPPER">EYEDROPPER</a>
-<li><a accesskey="8" href="#TOOL-INFO">TOOL INFO</a>
-<li><a accesskey="9" href="#SAFE-REGIONS-TOOL">SAFE REGIONS TOOL</a>
-</ul>
-
-<div class="node">
-<a name="PROTECT-VIDEO"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MAGNIFYING-GLASS">MAGNIFYING GLASS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITOR">COMPOSITOR</a>
-
-</div>
-
-<h4 class="subsection">6.2.1 PROTECT VIDEO</h4>
-
-<div class="block-image"><img src="protect.png" alt="protect.png"></div>
-
-   <p>This disables changes to the compositor output from clicks in it.  It
-is an extra layer on top of the track arming toggle to prevent
-unwanted changes.
-
-<div class="node">
-<a name="MAGNIFYING-GLASS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MASKS-TOOL">MASKS TOOL</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#PROTECT-VIDEO">PROTECT VIDEO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITOR">COMPOSITOR</a>
-
-</div>
-
-<h4 class="subsection">6.2.2 MAGNIFYING GLASS</h4>
-
-<div class="block-image"><img src="magnify.png" alt="magnify.png"></div>
-
-   <p>This zooms in and out of the compositor output without resizing the
-window.  If the video output is currently locked to the size of the
-window, clicking in it with the magnifying glass unlocks it and
-creates scrollbars for navigation.
-
-   <p>Left clicking in the video zooms in.
-
-   <p>Ctrl clicking in the video zooms out.
-
-   <p>Rotating the wheel on a wheel mouse zooms in and out.
-
-<div class="node">
-<a name="MASKS-TOOL"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#CAMERA">CAMERA</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MAGNIFYING-GLASS">MAGNIFYING GLASS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITOR">COMPOSITOR</a>
-
-</div>
-
-<h4 class="subsection">6.2.3 MASKS TOOL</h4>
-
-<div class="block-image"><img src="mask.png" alt="mask.png"></div>
-
-   <p>This brings up the mask editing tool See <a href="#MASKS">MASKS</a>.  Enable the
-<img src="toolwindow.png" alt="toolwindow.png"> tool window to see options for this tool.
-
-<div class="node">
-<a name="CAMERA"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#PROJECTOR">PROJECTOR</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MASKS-TOOL">MASKS TOOL</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITOR">COMPOSITOR</a>
-
-</div>
-
-<h4 class="subsection">6.2.4 CAMERA</h4>
-
-<div class="block-image"><img src="camera.png" alt="camera.png"></div>
-
-   <p>This brings up the camera editing tool See <a href="#THE-CAMERA-AND-PROJECTOR">THE CAMERA AND PROJECTOR</a>.  Enable the <img src="toolwindow.png" alt="toolwindow.png"> tool window to see options
-for this tool.
-
-<div class="node">
-<a name="PROJECTOR"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#CROP-TOOL">CROP TOOL</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#CAMERA">CAMERA</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITOR">COMPOSITOR</a>
-
-</div>
-
-<h4 class="subsection">6.2.5 PROJECTOR</h4>
-
-<div class="block-image"><img src="projector.png" alt="projector.png"></div>
-
-   <p>This brings up the projector editing tool See <a href="#THE-CAMERA-AND-PROJECTOR">THE CAMERA AND PROJECTOR</a>.  Enable the <img src="toolwindow.png" alt="toolwindow.png"> tool window to see options
-for this tool.
-
-<div class="node">
-<a name="CROP-TOOL"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#EYEDROPPER">EYEDROPPER</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#PROJECTOR">PROJECTOR</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITOR">COMPOSITOR</a>
-
-</div>
-
-<h4 class="subsection">6.2.6 CROP TOOL</h4>
-
-<div class="block-image"><img src="crop.png" alt="crop.png"></div>
-
-   <p>This brings up the cropping tool See <a href="#CROPPING">CROPPING</a>.  The
-<img src="toolwindow.png" alt="toolwindow.png"> tool window must be enabled to use this tool.
-
-<div class="node">
-<a name="EYEDROPPER"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TOOL-INFO">TOOL INFO</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#CROP-TOOL">CROP TOOL</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITOR">COMPOSITOR</a>
-
-</div>
-
-<h4 class="subsection">6.2.7 EYEDROPPER</h4>
-
-<div class="block-image"><img src="eyedrop.png" alt="eyedrop.png"></div>
-
-   <p>This brings up the eyedropper.  The eyedropper detects whatever color
-is under it and stores it in a temporary area.  Enabling the
-<img src="toolwindow.png" alt="toolwindow.png"> tool info shows the currently selected color.  Click
-anywhere in the video output to select the color at that point.
-
-   <p>The eyedropper not only lets you see areas which are clipped, but its
-value can be applied to many effects.  Different effects handle the
-eyedropper differently.
-
-<div class="node">
-<a name="TOOL-INFO"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SAFE-REGIONS-TOOL">SAFE REGIONS TOOL</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#EYEDROPPER">EYEDROPPER</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITOR">COMPOSITOR</a>
-
-</div>
-
-<h4 class="subsection">6.2.8 TOOL INFO</h4>
-
-<div class="block-image"><img src="toolwindow.png" alt="toolwindow.png"></div>
-
-   <p>This brings up a window containing options for the currently selected
-tool.
-
-<div class="node">
-<a name="SAFE-REGIONS-TOOL"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#TOOL-INFO">TOOL INFO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITOR">COMPOSITOR</a>
-
-</div>
-
-<h4 class="subsection">6.2.9 SAFE REGIONS TOOL</h4>
-
-<div class="block-image"><img src="titlesafe.png" alt="titlesafe.png"></div>
-
-   <p>This draws the safe regions in the video output.  This doesn't affect
-the rendered output See <a href="#SAFE-REGIONS">SAFE REGIONS</a>.
-
-<div class="node">
-<a name="PROGRAM"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#RESOURCES">RESOURCES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#COMPOSITOR">COMPOSITOR</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#THE-MAIN-WINDOWS">THE MAIN WINDOWS</a>
-
-</div>
-
-<h3 class="section">6.3 PROGRAM</h3>
-
-<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.  Left of
-the timeline is the patchbay which contains options affecting each
-track.
-
-   <p>Under the <b>Window</b> menu you'll find options affecting the main
-windows.  <b>default positions</b> repositions all the windows to a 4
-screen editing configuration.  On dual headed displays, the
-<b>default positions</b> operation fills only one monitor with windows.
-
-<div class="node">
-<a name="RESOURCES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SOUND-LEVEL-METERS">SOUND LEVEL METERS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#PROGRAM">PROGRAM</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#THE-MAIN-WINDOWS">THE MAIN WINDOWS</a>
-
-</div>
-
-<h3 class="section">6.4 RESOURCES</h3>
-
-<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.
-
-<div class="node">
-<a name="SOUND-LEVEL-METERS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#OTHER-WINDOWS">OTHER WINDOWS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#RESOURCES">RESOURCES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#THE-MAIN-WINDOWS">THE MAIN WINDOWS</a>
-
-</div>
-
-<h3 class="section">6.5 SOUND LEVEL METERS</h3>
-
-<p>An additional window, the <b>levels window</b> can be brought up from
-the <b>Window</b> menu.  The <b>levels</b> window displays the output
-audio levels after all mixing is done.
-
-   <p>Sound level meters appear in many locations.  They can be toggled in
-the viewer and compositor windows with the <img src="show_meters.png" alt="show_meters.png"> level
-toggle. They appear in the patchbay when a track is expanded (See <a href="#THE-PATCHBAY">THE PATCHBAY</a>.)  They appear in the recording monitor when audio is being
-recorded.
-
-   <p>The sound levels in the <b>levels window, compositor, and viewer</b>
-correspond to the final output levels before they are clipped to the
-soundcard range.  In the <b>record monitor</b> they are the input values
-from the sound card.  In the <b>patchbay</b> they are the sound levels for
-each track after all effects are processed and before downmixing for
-the output.
-
-   <p>Most of the time, audio levels have numerical markings in DB but in the
-patchbay there isn't enough room.
-
-   <p>The sound level is color coded as an extra means of determining the
-sound level.  Even without numerical markings, the sound level color
-can distinguish between several ranges and overload.  Look at the color
-codings in a meter with numerical markings to see what colors
-correspond to what sound level.  Then for meters in the patchbay in
-expanded audio tracks, use the color codings to see if it's overloading.
-
-   <p>Be aware that sound levels in Cinelerra can go above 0DB.  This allows
-not only seeing if a track is overloading but how much information is
-being lost by the overloading.  Overloading by less than 3DB is usually
-acceptable.  While overloading is treated as positive numbers in
-Cinelerra, it is clipped to 0 when sent to a sound card or file.
-
-   <p>The visible range of the sound level meters is configurable in
-<b>settings-&gt;preferences-&gt;interface</b> (See <a href="#INTERFACE">INTERFACE</a>.)
-
-<div class="node">
-<a name="OTHER-WINDOWS"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SOUND-LEVEL-METERS">SOUND LEVEL METERS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#THE-MAIN-WINDOWS">THE MAIN WINDOWS</a>
-
-</div>
-
-<h3 class="section">6.6 OTHER WINDOWS</h3>
-
-<p>The <b>Overlays window</b> can be brought up from the <b>Window</b>
-menu.  This is a quick way to toggle what is drawn in the timeline. 
-Every option in the <b>View</b> menu is available here.
-
-<div class="node">
-<a name="LOADING-AND-SAVING-FILES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#NAVIGATING-THE-PROJECT">NAVIGATING THE PROJECT</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#THE-MAIN-WINDOWS">THE MAIN WINDOWS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">7 LOADING AND SAVING FILES</h2>
-
-<ul class="menu">
-<li><a accesskey="1" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>:      What formats Cinelerra can import and export
-<li><a accesskey="2" href="#LOADING-FILES">LOADING FILES</a>:               Loading all types of files
-<li><a accesskey="3" href="#LOADING-THE-BACKUP">LOADING THE BACKUP</a>:          Recovering the session from before a crash
-<li><a accesskey="4" href="#SAVING-FILES">SAVING FILES</a>:                Saving edit decision lists
-<li><a accesskey="5" href="#RENDERING-FILES">RENDERING FILES</a>:             Saving media files
-</ul>
-
-<div class="node">
-<a name="SUPPORTED-FILE-FORMATS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#LOADING-FILES">LOADING FILES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#LOADING-AND-SAVING-FILES">LOADING AND SAVING FILES</a>
-
-</div>
-
-<h3 class="section">7.1 SUPPORTED FILE FORMATS</h3>
-
-<p>Here are most of the supported file formats and notes regarding their
-compression.  You may be able to load other formats not described here.
-
-   <p>The format of the file affects what Cinelerra does with it.  Edit
-decision lists replace the project settings.  Formats which contain
-media but no edit decisions just add data to the tracks.  If your
-project sample rate is 48khz and you load a sound file with 96khz,
-you'll still be playing it at 48khz.   If you load an EDL file at 96khz
-and the current project sample rate is 48khz, you'll change it to
-96khz.
-
-   <p>Some file formats are very slow to display on the timeline.  These
-usually have video which is highly compressed.  Drawing highly
-compressed video picons can be very slow.  Disable picon drawing for
-these files with the <b>draw media</b> toggle to speed up operations.
-
-   <pre class="sp">
-
-</pre>
-<img src="track_attributes.png" alt="track_attributes.png">
-<b>Track attributes</b>
-
-   <p>Supported file formats are currently:
-
-     <ul>
-<li>WAV
-<li>FLAC
-<li>PCM
-<li>AIFF
-<li>AC3 audio
-</ul>
-
-<ul class="menu">
-<li><a accesskey="1" href="#QUICKTIME">QUICKTIME</a>
-<li><a accesskey="2" href="#MPEG_002d4-AUDIO">MPEG-4 AUDIO</a>
-<li><a accesskey="3" href="#IMAGE-SEQUENCES">IMAGE SEQUENCES</a>
-<li><a accesskey="4" href="#STILL-IMAGES">STILL IMAGES</a>
-<li><a accesskey="5" href="#AVI">AVI</a>
-<li><a accesskey="6" href="#MPEG-FILES-CONTAINING-VIDEO">MPEG FILES CONTAINING VIDEO</a>
-<li><a accesskey="7" href="#DVD-MOVIES">DVD MOVIES</a>
-<li><a accesskey="8" href="#MPEG-1-AUDIO">MPEG 1 AUDIO</a>
-<li><a accesskey="9" href="#OGG-THEORA_002fVORBIS">OGG THEORA/VORBIS</a>
-<li><a href="#EDIT-DECISION-LIST">EDIT DECISION LIST</a>
-</ul>
-
-<div class="node">
-<a name="QUICKTIME"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MPEG_002d4-AUDIO">MPEG-4 AUDIO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>
-
-</div>
-
-<h4 class="subsection">7.1.1 QUICKTIME</h4>
-
-<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 most compressed Quicktime movies
-but does support some.  If it crashes when loading a Quicktime movie,
-that means the format probably wasn't supported.
-
-   <p><b>NOTES ON QUICKTIME ENCODING</b>
-
-   <p>Here are some notes regarding making Quicktime movies in Cinelerra:
-
-   <p>Quicktime is a wrapper for 2 codecs, a video codec and an audio codec. 
-The video and audio codecs are picked separately.  The preferred
-encoding for Quicktime output is MPEG-4 Video and MPEG-4 Audio.  This
-format plays in the commercial players for Windows and has good
-compression quality.  For better compression, use H-264 Video. 
-Unfortunately H-264 decoding is so slow it can't play very large frame
-sizes.
-
-   <p>Cinelerra supports 2 nonstandard codecs: Dual MPEG-4 video and dual
-H.264 video.  These won't play in anything but Cinelerra and XMovie. 
-They are designed for movies where the frames have been divided into 2
-fields, each field displayed sequentially.  The dual codecs interleave
-2 video streams to improve efficiency without requiring major changes
-to the player.
-
-<div class="node">
-<a name="MPEG-4-AUDIO"></a>
-<a name="MPEG_002d4-AUDIO"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#IMAGE-SEQUENCES">IMAGE SEQUENCES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#QUICKTIME">QUICKTIME</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>
-
-</div>
-
-<h4 class="subsection">7.1.2 MPEG-4 AUDIO</h4>
-
-<p>This is the same as Quicktime with MPEG-4 Audio as the audio codec.
-
-<div class="node">
-<a name="IMAGE-SEQUENCES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#STILL-IMAGES">STILL IMAGES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MPEG_002d4-AUDIO">MPEG-4 AUDIO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>
-
-</div>
-
-<h4 class="subsection">7.1.3 IMAGE SEQUENCES</h4>
-
-<p>Rendering an image sequence is not the same as rendering a single
-image.  When rendering an image sequence Cinelerra generates a table of
-contents file for the image sequence and makes a different image file
-for every timeline position.  The table of contents can be loaded
-instead of the individual images to get better performance.  To learn
-more about the different image formats supported in an image sequence,
-read about still images.
-
-<div class="node">
-<a name="STILL-IMAGES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#AVI">AVI</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#IMAGE-SEQUENCES">IMAGE SEQUENCES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>
-
-</div>
-
-<h4 class="subsection">7.1.4 STILL IMAGES</h4>
-
-<p>Rendering a single image causes the image file to be overwritten for
-every timeline position.  No table of contents is created.  When
-loaded, the image takes up one frame in length and doesn't change the
-project attributes.
-
-   <p>Several still image formats not normally found in other programs are
-described here.
-
-<ul class="menu">
-<li><a accesskey="1" href="#OPEN-EXR-IMAGES">OPEN EXR IMAGES</a>
-<li><a accesskey="2" href="#RAW-DIGITAL-CAMERA-IMAGES">RAW DIGITAL CAMERA IMAGES</a>
-</ul>
-
-<div class="node">
-<a name="OPEN-EXR-IMAGES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#RAW-DIGITAL-CAMERA-IMAGES">RAW DIGITAL CAMERA IMAGES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#STILL-IMAGES">STILL IMAGES</a>
-
-</div>
-
-<h5 class="subsubsection">7.1.4.1 OPEN EXR IMAGES</h5>
-
-<p>You may not know about Open EXR.  This format stores floating point RGB
-images.  It also supports a small amount of compression.  Projects
-which render to EXR should be in a floating point color model to take
-advantage of it See <a href="#SETTING-PROJECT-ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>.  Several compression
-options are available for EXR.
-
-     <ul>
-<li>
-<b>PIZ</b> Lossless wavelet compression.  This is the best compression.
-
-     <li><b>ZIP</b> Lossless gzip algorithm.
-
-     <li><b>RLE</b> Lossless run length encoding.  This is the fastest and worst
-compression.
-
-     <li><b>PXR24</b> Lossy compression where the floating point numbers are
-converted to 24 bits and compressed with gzip.
-
-   </ul>
-
-   <p>Select <b>Use Alpha</b> if the project colormodel has an alpha channel and
-you want to retain it in the file.  Otherwise the primary colors are
-multiplied by the alpha channel.
-
-<div class="node">
-<a name="RAW-DIGITAL-CAMERA-IMAGES"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#OPEN-EXR-IMAGES">OPEN EXR IMAGES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#STILL-IMAGES">STILL IMAGES</a>
-
-</div>
-
-<h5 class="subsubsection">7.1.4.2 RAW DIGITAL CAMERA IMAGES</h5>
-
-<p>RAW digital camera images are a special kind of image file which
-Cinelerra only imports.  These must be processed in a floating point
-color space once they are on the timeline.  Raw images from Canon
-cameras are the only ones tested.  They need to have the <b>Linearize</b>
-effect applied to correct gamma.  Because raw images take a long time
-to interpolate, they are usually viewed first in a proxy file and then
-touched up.
-
-   <p>First apply the Linearize effect to a track of raw images and set it to
-<b>automatic</b> with <b>0.6</b> gamma.  Then render the timeline to a
-Quicktime JPEG file.  Append the Quicktime JPEG file in a new track and
-disable playback of the old track.  Now the gamma corrected copy of
-each raw image can be previewed relatively fast in the same timeline
-position as the original image.
-
-<div class="node">
-<a name="AVI"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MPEG-FILES-CONTAINING-VIDEO">MPEG FILES CONTAINING VIDEO</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#STILL-IMAGES">STILL IMAGES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>
-
-</div>
-
-<h4 class="subsection">7.1.5 AVI</h4>
-
-<p>AVI with assorted audio and video codecs.  Because AVI is so
-fragmented, your luck will vary.
-
-<div class="node">
-<a name="MPEG-FILES-CONTAINING-VIDEO"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#DVD-MOVIES">DVD MOVIES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#AVI">AVI</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>
-
-</div>
-
-<h4 class="subsection">7.1.6 MPEG FILES CONTAINING VIDEO</h4>
-
-<p>MPEG files containing video can be loaded directly into Cinelerra.  If
-the file is supported, a table of contents is built.  If the file is
-unsupported, it usually crashes or shows very short tracks. 
-Unfortunately, this method of loading MPEG files isn't good enough if
-you intend to use the files in a renderfarm.
-
-   <p>To use MPEG files in a renderfarm you need to run <b>mpeg3toc</b> to
-generate a table of contents for the file, then load the table of
-contents.  Mpeg3toc needs the absolute path of the MPEG file.  If you
-don't use an absolute path, it assumes the MPEG file is in the same
-directory that Cinelerra is run from.
-
-   <p>MPEG 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.
-
-   <p><b>NOTES ON MPEG VIDEO ENCODING</b>
-
-   <p>MPEG video encoding is done separately from MPEG audio encoding.  In
-MPEG video there are 2 colormodels.  The YUV 4:2:0 colormodel is
-encoded by a highly optimized version of mpeg2enc with presets for
-standard consumer electronics.  In the process of optimizing mpeg2enc,
-they got rid of YUV 4:2:2 encoding.  The YUV 4:2:2 colormodel is
-encoded by a less optimized version of mpeg2enc.
-
-   <p>YUV 4:2:2 encoding was kept around because the NTSC version of DV video
-loses too much quality when transferred to YUV 4:2:0.  This DV video
-must be transferred to YUV 4:2:2.
-
-   <p>When encoding YUV 4:2:0, the bitrate parameter changes meaning
-depending on whether the bitrate or quantization is fixed.  If the
-bitrate is fixed, it's the target bitrate.  If the quantization is
-fixed, it's the maximum bitrate allowed.  This is a quirk of the
-mpeg2enc version.
-
-<div class="node">
-<a name="DVD-MOVIES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MPEG-1-AUDIO">MPEG 1 AUDIO</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MPEG-FILES-CONTAINING-VIDEO">MPEG FILES CONTAINING VIDEO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>
-
-</div>
-
-<h4 class="subsection">7.1.7 DVD MOVIES</h4>
-
-<p>DVD's are spit into a number of programs, each identified by a unique
-<b>IFO</b> file.  If you want to load a DVD, find the corresponding
-<b>IFO</b> file for the program of interest.  Load the IFO file directly
-and a table of contents will be built.  Alternatively for renderfarm
-usage, a table of contents can be created separately.
-
-   <p>Run
-
-<pre class="example">     mpeg3toc -v /cdrom/video_ts/vts_01_0.ifo dvd.toc
-</pre>
-   <p>or something similar.  Then load <b>dvd.toc</b>.
-
-<div class="node">
-<a name="MPEG-1-AUDIO"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#OGG-THEORA_002fVORBIS">OGG THEORA/VORBIS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DVD-MOVIES">DVD MOVIES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>
-
-</div>
-
-<h4 class="subsection">7.1.8 MPEG 1 AUDIO</h4>
-
-<p>These are .mp2 and .mp3 files.  If fixed bitrate, they can be loaded
-directly with no table of contents.  Variable bitrate streams need to
-have a table of contents created with <b>mpeg3toc</b>.
-
-<div class="node">
-<a name="OGG-THEORA%2fVORBIS"></a>
-<a name="OGG-THEORA_002fVORBIS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#EDIT-DECISION-LIST">EDIT DECISION LIST</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MPEG-1-AUDIO">MPEG 1 AUDIO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>
-
-</div>
-
-<h4 class="subsection">7.1.9 OGG THEORA/VORBIS</h4>
-
-<p>The OGG format is an antiquated but supposedly unpatented way of
-compressing audio and video.  The quality isn't as good as H.264 or
-MPEG-4 Audio.  In reality, anyone with enough money and desire can find
-a patent violation so the justification for OGG is questionable.
-
-<div class="node">
-<a name="EDIT-DECISION-LIST"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#OGG-THEORA_002fVORBIS">OGG THEORA/VORBIS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>
-
-</div>
-
-<h4 class="subsection">7.1.10 EDIT DECISION LIST</h4>
-
-<p>Edit decision lists are generated by Cinelerra for storing projects. 
-They end in .xml.  They change project attributes when loaded.
-
-   <p>Because edit decision lists consist of text, they can be edited in a
-text editor.
-
-<div class="node">
-<a name="LOADING-FILES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#LOADING-THE-BACKUP">LOADING THE BACKUP</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#LOADING-AND-SAVING-FILES">LOADING AND SAVING FILES</a>
-
-</div>
-
-<h3 class="section">7.2 LOADING FILES</h3>
-
-<p>All data that you work with in Cinelerra is acquired either by
-<b>recording from a device</b> or by <b>loading from disk</b>.  This
-section describes loading.
-
-   <p>The loading and playing of files is just as you would expect. Just go
-to <b>file-&gt;Load</b>, select a file for loading, and hit <b>ok</b>. 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
-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
-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 class="menu">
-<li><a accesskey="1" href="#INSERTION-STRATEGY">INSERTION STRATEGY</a>
-<li><a accesskey="2" href="#LOADING-MULTIPLE-FILES">LOADING MULTIPLE FILES</a>
-</ul>
-
-<div class="node">
-<a name="INSERTION-STRATEGY"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#LOADING-MULTIPLE-FILES">LOADING MULTIPLE FILES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#LOADING-FILES">LOADING FILES</a>
-
-</div>
-
-<h4 class="subsection">7.2.1 INSERTION STRATEGY</h4>
-
-<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>In the file selection box there is a range of options for <b>Insertion
-strategy</b>.  Each of these options loads the file a different way.
-
-   <div class="block-image"><img src="insertion_strategy.png" alt="insertion_strategy.png"></div>
-
-     <ul>
-<li><b>Replace current project</b>
-<img src="loadmode_new.png" alt="loadmode_new.png">
-
-     <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.
-
-     <li><b>Replace current project and concatenate tracks</b>
-<img src="loadmode_newcat.png" alt="loadmode_newcat.png">
-
-     <p>Same as replace current project except if multiple files are selected
-it concatenates the tracks of every file after the first.
-
-     <li><b>Append in new tracks</b>
-<img src="loadmode_newtracks.png" alt="loadmode_newtracks.png">
-
-     <p>The current project is not deleted and new tracks are created for the
-source.
-
-     <li><b>Concatenate to existing tracks</b>
-<img src="loadmode_cat.png" alt="loadmode_cat.png">
-
-     <p>The current project is not deleted and new files are concatenated to
-the existing tracks.
-
-     <li><b>Paste at insertion point</b>
-<img src="loadmode_paste.png" alt="loadmode_paste.png">
-
-     <p>The file is pasted in like a normal paste operation.
-
-     <li><b>Create new resources only</b>
-<img src="loadmode_resource.png" alt="loadmode_resource.png">
-
-     <p>The timeline is unchanged and new resources are created in the Resource
-Window.
-
-     <li><b>Nested EDL</b>
-<img src="loadmode_nested.png" alt="loadmode_nested.png">
-
-     <p>If the file is an EDL, the output of the EDL is pasted in like a media
-file.  Nested EDLs have 1 video track &amp; a number of audio tracks
-corresponding to the number of output channels.  They allow larger
-sequences composed of many smaller sequences, transitions to be applied
-to the output of another EDL, &amp; global processing on the output of an
-EDL without having to manipulate each track.
-
-   </ul>
-
-   <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
-files are loaded with <b>Replace current project</b> rules.
-
-<div class="node">
-<a name="LOADING-MULTIPLE-FILES"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#INSERTION-STRATEGY">INSERTION STRATEGY</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#LOADING-FILES">LOADING FILES</a>
-
-</div>
-
-<h4 class="subsection">7.2.2 LOADING MULTIPLE FILES</h4>
-
-<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 <b>CTRL</b>.  This
-selects one additional file.  Go to another file and select it while
-holding down <b>SHIFT</b>.  This selects every intervening file.  This
-behavior is available in most every list box.
-
-   <p>Select a bunch of mp3 files and <b>Replace current project and
-concatenate tracks</b> in the insertion strategy to create a song
-playlist.
-
-<div class="node">
-<a name="LOADING-THE-BACKUP"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SAVING-FILES">SAVING FILES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#LOADING-FILES">LOADING FILES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#LOADING-AND-SAVING-FILES">LOADING AND SAVING FILES</a>
-
-</div>
-
-<h3 class="section">7.3 LOADING THE BACKUP</h3>
-
-<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
-<b>$HOME/.bcast/backup.xml</b>.  In the event of a crash go to
-<b>file-&gt;load backup</b> to load the backup.  It is important after a
-crash to reboot Cinelerra without performing any editing operations. 
-Loading the backup should be the first operation or you'll overwrite
-the backup.
-
-<div class="node">
-<a name="SAVING-FILES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#RENDERING-FILES">RENDERING FILES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#LOADING-THE-BACKUP">LOADING THE BACKUP</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#LOADING-AND-SAVING-FILES">LOADING AND SAVING FILES</a>
-
-</div>
-
-<h3 class="section">7.4 SAVING FILES</h3>
-
-<p>When Cinelerra saves a file it saves an edit decision list of the
-current project but doesn't save any media.  Go to <b>File-&gt;save
-as...</b>.  Select a file to overwrite or enter a new file.  Cinelerra
-automatically concatenates <b>.xml</b> to the filename if no
-<b>.xml</b> extension is given.
-
-   <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
-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
-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
-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
-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
-play it back.  The XML file also requires you to maintain copies of all
-the source assets on hard drives, which can take up space and cost a
-lot of electricity to spin.  For a more persistent storage of the
-output there's rendering.
-
-<div class="node">
-<a name="RENDERING-FILES"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SAVING-FILES">SAVING FILES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#LOADING-AND-SAVING-FILES">LOADING AND SAVING FILES</a>
-
-</div>
-
-<h3 class="section">7.5 RENDERING FILES</h3>
-
-<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
-difficult to retouch any editing decisions in the pure movie file,
-however, so keep the original assets and XML file around several days
-after you render it.
-
-   <p>All rendering operations are based on a region of the timeline to be
-rendered.  You need to define this region on the timeline.  The
-navigation section describes methods of defining regions. 
-See <a href="#NAVIGATING-THE-PROJECT">NAVIGATING THE PROJECT</a>.  The rendering functions define the
-region based on a set of rules.  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.  Merely
-by positioning the insertion point at the beginning of a track and
-unsetting all in/out points, the entire track is rendered.
-
-<ul class="menu">
-<li><a accesskey="1" href="#SINGLE-FILE-RENDERING">SINGLE FILE RENDERING</a>:       Rendering a single file
-<li><a accesskey="2" href="#BATCH-RENDERING">BATCH RENDERING</a>:             Rendering several files unattended
-<li><a accesskey="3" href="#THE-RENDER-FARM">THE RENDER FARM</a>:             Rendering using many computers
-<li><a accesskey="4" href="#COMMAND-LINE-RENDERING">COMMAND LINE RENDERING</a>:      Rendering from the command line without a GUI
-</ul>
-
-<div class="node">
-<a name="SINGLE-FILE-RENDERING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#BATCH-RENDERING">BATCH RENDERING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#RENDERING-FILES">RENDERING FILES</a>
-
-</div>
-
-<h4 class="subsection">7.5.1 SINGLE FILE RENDERING</h4>
-
-<p>The fastest way to get media to disk is to use the single file
-rendering function.
-
-   <p>Go to <b>File-&gt;render</b> to bring up the render dialog.  Select the
-magnifying glass <img src="magnify.png" alt="magnify.png"> to bring up a file selection dialog.  This determines
-the filename to write the rendered file to and the encoding parameters.
-
-   <p>In the render dialog select a format from the <b>File Format</b> menu. 
-The format of the file determines whether you can render audio or video
-or both.  Select the <b>Render audio tracks</b> toggle to generate
-audio tracks and <b>Render video tracks</b> to generate video tracks.
-
-   <p>Select the wrench <img src="wrench.png" alt="wrench.png"> next to each toggle to set compression
-parameters.  If the file format can't store audio or video the
-compression parameters will be blank.  If <b>Render audio tracks</b> or
-<b>Render video tracks</b> is selected and the file format doesn't
-support it, trying to render will pop up an error.
-
-   <p>The <b>Create new file at each label</b> 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, <b>Create new file at each label</b> causes one
-renderfarm job to be created at every label instead of using the
-internal load balancing algorithm to space jobs.
-
-   <p>When <b>Create new file at each label</b> 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 <b>/hmov/track01.wav</b> the <b>01</b> would be
-overwritten for every output file.  The filename
-<b>/hmov/track.wav</b>; however, would become <b>/hmov/track.wav001</b>
-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
-insertion modes are the same as with loading files.  In this case if
-you select <b>insert nothing</b> the file will be written out to disk
-without changing the current project.  For other insertion strategies
-be sure to prepare the timeline to have the output inserted at the
-right position before the rendering operation is finished. 
-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
-rendered, a <b>paste</b> 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">
-<a name="BATCH-RENDERING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#THE-RENDER-FARM">THE RENDER FARM</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SINGLE-FILE-RENDERING">SINGLE FILE RENDERING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#RENDERING-FILES">RENDERING FILES</a>
-
-</div>
-
-<h4 class="subsection">7.5.2 BATCH RENDERING</h4>
-
-<p>If you want to render many projects to media files without having to
-repeatedly attend to the <b>Render</b> dialog, <b>batch rendering</b> is the
-function to use.  In this function, you specify many EDL files to
-render and the unique output files for each.  Then Cinelerra loads each
-EDL file and renders it automatically, without any user intervention. 
-Each EDL file and its output to be rendered is called a <b>batch</b>. 
-This allows a huge amount of media to be processed and greatly
-increases the value of an expensive computer.
-
-   <p>The first thing to do when preparing to do batch rendering is define
-projects to be rendered.  The batch renderer requires a separate EDL
-file for every batch to be rendered.  Set up a project and define the
-region to be rendered either by highlighting it, setting in/out points
-around it, or positioning the insertion point before it.  Then save the
-project as an EDL.  Define as many projects as needed this way.  The
-batch renderer takes the active region from the EDL file for rendering.
-
-   <p>With all the EDL files prepared with active regions, go to
-<b>File-&gt;batch render</b>.  This brings up the batch rendering dialog. 
-The interface for batch rendering is a bit more complex than for single
-file rendering.
-
-   <p>A list of batches must be defined before starting a batch rendering
-operation.  The table of batches appears on the bottom of the batch
-render dialog and is called <b>batches to render</b>.  Above this are
-the configuration parameters for a single batch.
-
-   <p>Set the <b>output path</b>, <b>file format</b>, <b>Audio</b>, <b>Video</b>, and
-<b>Create new file at each label</b> parameters as if it was a single
-file.  These parameters apply to only one batch.  In addition to the
-standard rendering parameters, you must select the source EDL to use in
-the batch.  Do this by setting the <b>EDL path</b>.
-
-   <p>If the <b>batches to render</b> list is empty or nothing is highlighted,
-click <b>New</b> to create a new batch.  The new batch will contain all
-the parameters you just set.
-
-   <p>Repeatedly press the <b>New</b> button to create more batches with the
-same parameters.  Highlight any batch and edit the configuration on the
-top of the batch render window.  The highlighted batch is always
-synchronized to the information displayed.
-
-   <p>Click and drag batches to change the order in which they're rendered. 
-Hit <b>delete</b> to permanently remove the highlighted batch.
-
-   <p>In the list box is a column which enables or disables the batch.  This
-way batches can be skipped without being deleted.  Click on the
-<b>Enabled</b> column in the list box to enable or disable a batch.  If it
-is checked, the batch is rendered.  If it is blank, the batch is
-skipped.
-
-   <p>The other columns in the batch list are informative.
-
-     <ul>
-<li><b>Output</b> The output path of the batch. 
-<li><b>EDL</b> The source EDL of the batch. 
-<li><b>Elapsed</b> The amount of time taken to render the batch if it is finished.
-
-   </ul>
-
-   <p>To start rendering from the first enabled batch, hit <b>Start</b>.
-
-   <p>Once rendering, the main window shows the progress of the batch.  Once
-the batch finishes, the elapsed column in the batch list is updated and
-the next batch is rendered until all the enabled batches are finished. 
-The currently rendering batch is always highlighted red.
-
-   <p>To stop rendering before the batches are finished without closing the
-batch render dialog, hit <b>Stop</b>.
-
-   <p>To stop rendering before the batches are finished and close the batch
-render dialog, hit <b>Cancel</b>.
-
-   <p>To exit the batch render dialog whether or not anything is being
-rendered, hit <b>Cancel</b>.
-
-<div class="node">
-<a name="THE-RENDER-FARM"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#COMMAND-LINE-RENDERING">COMMAND LINE RENDERING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#BATCH-RENDERING">BATCH RENDERING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#RENDERING-FILES">RENDERING FILES</a>
-
-</div>
-
-<h4 class="subsection">7.5.3 THE RENDER FARM</h4>
-
-<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
-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>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 to have access
-to the same filesystem on the same mount point for assets.
-
-   <p>If a node can't access an input asset it'll display error messages to
-its console but probably not die.  If it can't access an output asset
-it'll cause the rendering to abort.
-
-   <p>It should be noted that in the render dialog, the <b>Create new file at
-each label</b> option causes a new renderfarm job to be created at each
-label instead of by the load balancer.  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
-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.  Run a slave node from the command line with
-
-   <p><b>cinelerra -d</b>
-
-   <p>That is the simplest configuration.  Type <b>cinelerra -h</b> to see more
-options.  The default port number may be overridden by passing a port
-number after the -d.
-
-   <p>Most of the time you'll want to bring in the rendered output and fine
-tune the timing on the timeline.  Also some file formats like MPEG
-can't be direct copied.  Because of this, the jobs are left in
-individual files.
-
-   <p>You can load these by creating a new track and specifying
-<b>concatenate to existing tracks</b> in the load dialog.  Files which
-support direct copy can be concatenated into a single file by rendering
-to the same file format with renderfarm disabled.  Also to get direct
-copy, the track dimensions, output dimensions, and asset dimensions
-must be equal.
-
-   <p>MPEG files or files which don't support direct copy have to be
-concatenated with a command line utility.  MPEG files can be
-concatenated with <b>cat</b>.
-
-   <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. 
-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">
-<a name="COMMAND-LINE-RENDERING"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#THE-RENDER-FARM">THE RENDER FARM</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#RENDERING-FILES">RENDERING FILES</a>
-
-</div>
-
-<h4 class="subsection">7.5.4 COMMAND LINE RENDERING</h4>
-
-<p>The command line rendering facility consists of a way to load the
-current set of batch rendering jobs and process them without a GUI. 
-This is useful if you're planning on crashing X repeatedly or want to
-do rendering on the other side of a low bandwidth network.  You might
-have access to a supercomputer in India but still be stuck in America,
-exhiled you might say.  A command line interface is ideal for this.
-
-   <p>To perform rendering from the command line, first run Cinelerra in
-graphical mode.  Go to <b>file-&gt;batch render</b>.  Create the batches you
-intend to render in the batch window and close the window.  This saves
-the batches in a file.  Set up the desired renderfarm attributes in
-<b>settings-&gt;preferences</b> and exit Cinelerra.  These settings are used
-the next time command line rendering is used.
-
-   <p>On the command line run
-
-   <p><b>cinelerra -r</b>
-
-   <p>to processes the current batch jobs without a GUI.  Setting up all the
-parameters for this operation is hard.  That's why the command line
-aborts if any output files already exist.
-
-   <p>Other parameters exist for specifying alternative files for the
-preferences and the batches.  Attempting to use anything but the
-defaults is very involved so it hasn't been tested.
-
-<div class="node">
-<a name="NAVIGATING-THE-PROJECT"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#EDITING">EDITING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#LOADING-AND-SAVING-FILES">LOADING AND SAVING FILES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">8 NAVIGATING THE PROJECT</h2>
-
-<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 class="menu">
-<li><a accesskey="1" href="#NAVIGATING-THE-PROGRAM-WINDOW">NAVIGATING THE PROGRAM WINDOW</a>
-<li><a accesskey="2" href="#NAVIGATING-THE-VIEWER-AND-COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>
-<li><a accesskey="3" href="#NAVIGATING-THE-RESOURCES">NAVIGATING THE RESOURCES</a>
-<li><a accesskey="4" href="#USING-THE-TRANSPORT-CONTROLS">USING THE TRANSPORT CONTROLS</a>
-<li><a accesskey="5" href="#USING-BACKGROUND-RENDERING">USING BACKGROUND RENDERING</a>
-</ul>
-
-<div class="node">
-<a name="NAVIGATING-THE-PROGRAM-WINDOW"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#NAVIGATING-THE-VIEWER-AND-COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#NAVIGATING-THE-PROJECT">NAVIGATING THE PROJECT</a>
-
-</div>
-
-<h3 class="section">8.1 NAVIGATING THE PROGRAM WINDOW</h3>
-
-<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 horizontall.  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
-values for <b>sample zoom</b>, <b>amplitude</b>, <b>track zoom</b>, and
-<b>curve zoom</b>.  These values in addition to the scrollbars are the
-main tools for positioning the timeline.
-
-   <pre class="sp">
-
-</pre>
-
-<img src="zoompanel.png" alt="zoompanel.png">
-
-   <p>Changing the <b>sample zoom</b> causes the amount of time visible to
-change.  <b>If your mouse has a wheel and it works in X11 go over
-the tumblers and use the wheel to zoom in and out.</b>
-
-   <p>The <b>amplitude</b> only affects audio.  It determines how big the
-waveform is if the waveform is drawn.
-
-   <p>The <b>track zoom</b> 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>The <b>curve zoom</b> affects the curves in all the tracks.  It
-determines the amplitude and offset of the curves.  The tumbler affects
-curve amplitude but the only way to change curve offset is to use the
-<b>fit curves</b> button.  <img src="fit_curves.png" alt="fit_curves.png">
-
-   <p>In addition to the graphical tools, you'll probably more often use the
-keyboard to navigate.  Use <b>PAGE UP</b> and <b>PAGE DOWN</b> to
-scroll up and down the tracks.
-
-   <p>Use the <b>LEFT</b> and <b>RIGHT</b> arrows to move across time in
-small increments.  You'll often need to scroll beyond the end of the
-timeline but scrollbars won't let you do it.  Instead use the
-<b>RIGHT</b> arrow to scroll past the end of timeline.
-
-   <p>Use the <b>HOME</b> and <b>END</b> keys to instantly go to the
-beginning or end of the timeline.  In <b>I-beam</b> mode, hold down
-shift while pressing <b>HOME</b> or <b>END</b> to select the region of
-the timeline between the insertion point and the key pressed.
-
-   <p>Use the <b>UP</b> and <b>DOWN</b> arrows to change the sample zoom by a
-power of 2.
-
-   <p><b>CTRL-UP</b> and <b>CTRL-DOWN</b> cause the amplitude zoom to change.
-
-   <p><b>CTRL-PGUP</b> and <b>CTRL-PGDOWN</b> cause the track zoom to change.
-
-   <p><b>ALT-UP</b> and <b>ALT-DOWN</b> cause the curve amplitude to change.
-
-<ul class="menu">
-<li><a accesskey="1" href="#THE-INSERTION-POINT">THE INSERTION POINT</a>
-<li><a accesskey="2" href="#THE-IN_002fOUT-POINTS">THE IN/OUT POINTS</a>
-<li><a accesskey="3" href="#USING-LABELS-IN-THE-PROGRAM-WINDOW">USING LABELS IN THE PROGRAM WINDOW</a>
-</ul>
-
-<div class="node">
-<a name="THE-INSERTION-POINT"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#THE-IN_002fOUT-POINTS">THE IN/OUT POINTS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#NAVIGATING-THE-PROGRAM-WINDOW">NAVIGATING THE PROGRAM WINDOW</a>
-
-</div>
-
-<h4 class="subsection">8.1.1 THE INSERTION POINT</h4>
-
-<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. 
-Any region of the timebar not obscured by labels and in/out points is a
-hotspot for repositioning the insertion point.
-
-   <pre class="sp">
-
-</pre>
-<img src="main_timebar.png" alt="main_timebar.png">
-<b>The main timebar</b>
-
-   <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>
-<li>drag and drop mode
-
-     <li>cut and paste mode
-
-   </ul>
-
-   <p>The mode of operation is determined by selecting the arrow or the
-i-beam in the buttonbar.
-
-   <pre class="sp">
-
-</pre>
-<img src="editing_mode.png" alt="editing_mode.png">
-<b>The editing mode buttons</b>
-
-   <p>If the arrow is highlighted it enables <b>drag and drop</b> 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 <b>cut and paste mode</b>.  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><b>Shift-clicking</b> in the timeline extends the highlighted region.
-
-   <p><b>Double-clicking</b> in the timeline selects the entire edit the
-cursor is over.
-
-   <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
-<b>settings-&gt;align cursor on frames</b>.
-
-   <p>If the highlighted region is the region affected by cut and paste
-operations, how do I cut and paste in <b>drag and drop</b> mode?  In
-this case you need to set <b>in/out points</b> to define an affected region.
-
-<div class="node">
-<a name="THE-IN%2fOUT-POINTS"></a>
-<a name="THE-IN_002fOUT-POINTS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#USING-LABELS-IN-THE-PROGRAM-WINDOW">USING LABELS IN THE PROGRAM WINDOW</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#THE-INSERTION-POINT">THE INSERTION POINT</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#NAVIGATING-THE-PROGRAM-WINDOW">NAVIGATING THE PROGRAM WINDOW</a>
-
-</div>
-
-<h4 class="subsection">8.1.2 THE IN/OUT POINTS</h4>
-
-<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 the highlighted area overrides the in/out points.  If a
-highlighted area and in/out points are set, the highlighted area is
-affected by editing operations and the in/out points are ignored.  If
-no region is highlighted, the in/out points are used.
-
-   <p>Normally, in/out points do not affect the playback region.  Only if you
-hold down CTRL while issuing a playback command do the in/out points
-determine the playback region.
-
-   <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"> <b>in point button</b>.  Go
-to a position after the in point and hit the <img src="out_point_button.png" alt="out_point_button.png">
-<b>out point button</b>.
-
-   <pre class="sp">
-
-</pre>
-<img src="inout_points.png" alt="inout_points.png"> <b>Timebar with in/out points set</b>.
-
-   <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
-<b>in point button</b> the in point will be deleted.  After selecting
-an out point, if you hit the <b>out point button</b> the out point will
-be deleted.
-
-   <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><b>Shift-clicking</b> on an in/out point extends the highlighted region
-to that point.
-
-   <p>Instead of using the button bar you can use the <b>[</b> and <b>]</b>
-keys to toggle in/out points.
-
-   <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">
-<a name="USING-LABELS-IN-THE-PROGRAM-WINDOW"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#THE-IN_002fOUT-POINTS">THE IN/OUT POINTS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#NAVIGATING-THE-PROGRAM-WINDOW">NAVIGATING THE PROGRAM WINDOW</a>
-
-</div>
-
-<h4 class="subsection">8.1.3 USING LABELS IN THE PROGRAM WINDOW</h4>
-
-<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"> <b>label button</b> a new label appears on the
-timeline.
-
-   <pre class="sp">
-
-</pre>
-<img src="timebar_label.png" alt="timebar_label.png"> <b>Timebar with a label on it</b>
-
-   <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><b>Shift-clicking</b> on a label extends the highlighted region.
-
-   <p><b>Double-clicking</b> between two labels highlights the region between
-the labels.
-
-   <p>Hitting the <b>l</b> key has the same effect as the label button.
-
-   <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
-they can also be traversed with the <img src="label_traversal.png" alt="label_traversal.png"> <b>label
-traversal</b> 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><b>CTRL-LEFT</b> repositions the insertion point on the previous label.
-
-   <p><b>CTRL-RIGHT</b> repositions the insertion point on the next label.
-
-   <p>With label traversal you can quickly seek back and forth on the
-timeline but you can also select regions.
-
-   <p><b>SHIFT-CTRL-LEFT</b> extends the highlighted region to the previous
-label.
-
-   <p><b>SHIFT-CTRL-RIGHT</b> extends the highlighted region to the next label.
-
-   <p>Manually hitting the label button or <b>l</b> 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 <b>Edit-&gt;Clear
-labels</b> function.  If in/out points exist, the labels between the
-in/out points are cleared and the highlighted region ignored.
-
-<div class="node">
-<a name="NAVIGATING-THE-VIEWER-AND-COMPOSITOR"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#NAVIGATING-THE-RESOURCES">NAVIGATING THE RESOURCES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#NAVIGATING-THE-PROGRAM-WINDOW">NAVIGATING THE PROGRAM WINDOW</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#NAVIGATING-THE-PROJECT">NAVIGATING THE PROJECT</a>
-
-</div>
-
-<h3 class="section">8.2 NAVIGATING THE VIEWER AND COMPOSITOR</h3>
-
-<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.
-
-   <pre class="sp">
-
-</pre>
-
-<img src="timebarslider.png" alt="timebarslider.png">
-
-   <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 <b>preview region</b>.
-
-   <p>The <b>preview region</b> 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
-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
-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. 
-Drag left so the preview region shrinks.
-
-   <p>Go to the center of the preview region in the timebar and drag it
-around to convince yourself if can be moved.
-
-   <pre class="sp">
-
-</pre>
-
-<img src="previewregion.png" alt="previewregion.png">
-
-   <p><b>Preview region in compositor</b>
-
-   <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
-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 <b>label button</b> 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
-window jumps to that position.
-
-   <pre class="sp">
-
-</pre>
-<img src="viewer_labels.png" alt="viewer_labels.png"> <b>Labels and in/out points in the viewer</b>.
-
-   <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,
-the pulldown menu on the bottom of the compositor window has a number
-of zoom options.  When set to <b>Auto</b> the video is zoomed to match
-the compositor window size as closely as possible.  When set to any
-other percentage, the video is zoomed a power of 2 and scrollbars can
-be used to scroll around the output.  When the video is zoomed bigger
-than the window size, not only do scrollbars scan around it but
-<b>middle mouse button</b> 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
-window to enter zoom mode.  In zoom mode, clicking in the video output
-zooms in while <b>ctrl-clicking</b> 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
-output, mind you.  It's merely for scrutinizing video or fitting it in
-the desktop.
-
-<div class="node">
-<a name="NAVIGATING-THE-RESOURCES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#USING-THE-TRANSPORT-CONTROLS">USING THE TRANSPORT CONTROLS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#NAVIGATING-THE-VIEWER-AND-COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#NAVIGATING-THE-PROJECT">NAVIGATING THE PROJECT</a>
-
-</div>
-
-<h3 class="section">8.3 NAVIGATING THE RESOURCES</h3>
-
-<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><b>Right clicking</b> in the folder or contents area brings up a menu
-containing formatting options.  Select <b>Display text</b> to display a
-text listing.  Select <b>Sort items</b> to sort the contents of the
-folder alphabetically.
-
-<div class="node">
-<a name="USING-THE-TRANSPORT-CONTROLS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#USING-BACKGROUND-RENDERING">USING BACKGROUND RENDERING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#NAVIGATING-THE-RESOURCES">NAVIGATING THE RESOURCES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#NAVIGATING-THE-PROJECT">NAVIGATING THE PROJECT</a>
-
-</div>
-
-<h3 class="section">8.4 USING THE TRANSPORT CONTROLS</h3>
-
-<p>Transport controls are just as useful in navigation as they are in
-playing back footage, hence they are described here in the navigation
-section.  Each of the Viewer, Compositor, and Program windows has a
-transport panel.
-
-   <pre class="sp">
-
-</pre>
-<img src="transport_panel.png" alt="transport_panel.png"> <b>The transport panel</b>.
-
-   <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 in the Program
-window and the slider in the Compositor window.  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
-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, the
-insertion point stays where playback 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
-transport keys are arranged in a sideways <b>T</b> on the number pad.
-
-     <ul>
-<li><b>+</b> Fast reverse
-<li><b>6</b> Normal reverse
-<li><b>5</b> Slow reverse
-<li><b>4</b> Frame reverse
-<li><b>1</b> Frame forward
-<li><b>2</b> Slow forward
-<li><b>3</b> Normal forward
-<li><b>Enter</b> Fast forward
-<li><b>0</b> Stop
-<li><b>Spacebar</b> Normal forward
-</ul>
-
-   <p>Hitting any key on the keyboard twice pauses it.
-
-   <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
-that the playback position crosses.  When you increment the time
-between two frames by one and decrement it by one, you cross the same
-frame both times and so the same frame is displayed.
-
-   <p>The transport behavior changes if you hold down CTRL when issuing any
-of the transport commands.  This causes the starting point to be the in
-point if playing forward and the out point if playing backward.  If
-playing forward, the out point becomes the ending point and if playing
-backward, the in point becomes the ending point.  If no in/out points
-are specified, the behavior falls back to using the insertion point and
-track boundaries as the starting and ending points.
-
-<div class="node">
-<a name="USING-BACKGROUND-RENDERING"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#USING-THE-TRANSPORT-CONTROLS">USING THE TRANSPORT CONTROLS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#NAVIGATING-THE-PROJECT">NAVIGATING THE PROJECT</a>
-
-</div>
-
-<h3 class="section">8.5 USING BACKGROUND RENDERING</h3>
-
-<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. 
-It has one interactive function: <b>settings-&gt;set background render</b>.  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
-settings-&gt;set background render right before the effect to preview it
-in full framerates.
-
-<div class="node">
-<a name="EDITING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#USING-EFFECTS">USING EFFECTS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#NAVIGATING-THE-PROJECT">NAVIGATING THE PROJECT</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">9 EDITING</h2>
-
-<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
-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
-all the methods.  The <b>timeline</b> is where all editing decisions are
-represented.  This is a stack of tracks in the center of the main
-window.  It can be scrolled up, down, left and right with the
-scrollbars on the right and bottom of it.  It can also be scrolled up
-and down with a mouse wheel.
-
-   <p>The <b>active region</b> is the range of time which is affected by editing
-commands 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 start of the active region.  Some
-commands treat all the space to the right of the insertion point as
-active, like <b>Render</b>, while others treat the active length as 0 if no
-end point for the active region is defined.
-
-   <p>Finally, editing decisions never affect source material.  This is
-<b>non destructive editing</b> and it became popular with audio because it
-was much faster than if you had to copy all the media affected by an
-edit.  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 <b>render</b> it. 
-See <a href="#RENDERING-FILES">RENDERING FILES</a>.
-
-   <p>Every track on the timeline has a set of attributes on
-the left, the most important of which is the <b>arm track</b>
-attribute.
-
-<ul class="menu">
-<li><a accesskey="1" href="#THE-PATCHBAY">THE PATCHBAY</a>:            Enabling different features on different tracks
-<li><a accesskey="2" href="#NUDGING-TRACKS">NUDGING TRACKS</a>:          Move entire tracks horizontally
-<li><a accesskey="3" href="#PANNING-TRACKS">PANNING TRACKS</a>:          Changing the audio output channels
-<li><a accesskey="4" href="#AUTOMATIC-TRACK-PANNING">AUTOMATIC TRACK PANNING</a>:   Panning tracks to common speaker arrangements
-<li><a accesskey="5" href="#STANDARD-AUDIO-MAPPINGS">STANDARD AUDIO MAPPINGS</a>:   Making audio panning that works on other players. 
-<li><a accesskey="6" href="#MANIPULATING-TRACKS">MANIPULATING TRACKS</a>:     Moving whole tracks around
-<li><a accesskey="7" href="#TWO-SCREEN-EDITING">TWO SCREEN EDITING</a>:      Using two video windows to edit
-<li><a accesskey="8" href="#DRAG-AND-DROP-EDITING">DRAG AND DROP EDITING</a>:   Dragging objects to edit
-<li><a accesskey="9" href="#CUT-AND-PASTE-EDITING">CUT AND PASTE EDITING</a>:   Editing media like text
-<li><a href="#TRIMMING">TRIMMING</a>:                Changing in and out points
-</ul>
-
-<div class="node">
-<a name="THE-PATCHBAY"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#NUDGING-TRACKS">NUDGING TRACKS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
-
-</div>
-
-<h3 class="section">9.1 THE PATCHBAY</h3>
-
-<p>On the left of the timeline is a region affectionately known as the
-patchbay.  The patchbay enables features specific to each track.  All
-tracks have a text area for naming the track.
-
-   <p>All tracks have an <b>expander</b> <img src="expandpatch_checked.png" alt="expandpatch_checked.png"> for viewing
-more options and for viewing the effects on the track.  Click on the
-expander to expand or collapse the track.  If it's pointing sideways,
-the track is collapsed.  If it's pointing down, the track is expanded. 
-The effects appear below the media for the track if they exist.
-
-   <p>All tracks have the following row of toggles for several features.
-
-   <pre class="sp">
-
-</pre>
-<img src="track_attributes.png" alt="track_attributes.png">
-<b>Track attributes</b>
-
-   <p>If the toggle is colored, it is enabled.  If the toggle is the
-background color of most of the windows, it is disabled.  Click on the
-toggle to enable or disable the feature.  Several mouse operations
-speed up the configuration of several tracks at a time.
-
-   <p>Click on an attribute and drag across adjacent tracks to copy the same
-attribute to those tracks.
-
-   <p>Hold down <b>shift</b> while clicking a track's attribute to enable the
-attribute in the current track and toggle the attribute in all the
-other tracks.
-
-   <p>Hold down <b>shift</b> while clicking an attribute.  Click until all the
-tracks except the selected one are disabled.  Then drag the cursor over
-the adjacent track to enable the attribute in the adjacent track.
-
-   <p>The other attributes affect the output of the track.
-
-     <ul>
-<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.
-     <pre class="sp">
-     
-     </pre>
-     
-<li>
-<b>Arm track</b> determines whether the track is armed or not.   Only the
-<b>armed tracks</b> 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>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>Press <b>Tab</b> while the cursor is anywhere over a track to toggle the
-track arming status.
-
-     <p>Press <b>Shift-Tab</b> while the cursor is over a track to toggle the
-arming status of every other track.
-
-     <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.  Gang also causes <b>Nudge</b> parameters to
-synchronise across all the ganged tracks.
-
-     <pre class="sp">
-     
-     </pre>
-     
-<li>
-<b>Draw media</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.
-     <pre class="sp">
-     
-     </pre>
-     
-<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
-chain track is overlayed on the final output even though it's routed
-back to another track.  Mute track is used to keep the effect chain
-track from overlapping the output of the source track.
-     <pre class="sp">
-     
-     </pre>
-     
-<li>
-<b>Fader</b> All tracks have a fader, but the units of each fader depend
-on whether it's audio or video.  Click and drag the fader to fade the
-track in and out.  If it is ganged to other tracks of the same media
-type, with the <b>arm</b> option enabled, the other faders should follow.
-
-     <p>Hold down <b>shift</b> and drag a fader to center it on 0.
-
-   </ul>
-
-<div class="node">
-<a name="NUDGING-TRACKS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#PANNING-TRACKS">PANNING TRACKS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#THE-PATCHBAY">THE PATCHBAY</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
-
-</div>
-
-<h3 class="section">9.2 NUDGING TRACKS</h3>
-
-<p>Each track has a nudge textbox in its patchbay.  You may have to expand
-the track to see it.  These are views of the patchbays when expanded.
-
-   <div class="block-image"><img src="apatches.png" alt="apatches.png"></div>
-
-   <p>Pan and nudge for an audio track.
-
-   <div class="block-image"><img src="vpatches.png" alt="vpatches.png"></div>
-
-   <p>Overlay mode and nudge for a video track.
-
-   <p>The nudge is the amount the track is shifted left or right during
-playback.  The track is not displayed shifted on the timeline, but it
-is shifted when it's played back.  This is useful for synchronizing
-audio with video, creating fake stereo, or compensating for an effect
-which shifts time, all without tampering with any edits.
-
-   <p>Merely enter in the amount of time to shift by to instantly shift the
-track.  Negative numbers make the track play later.  Positive numbers
-make the track play sooner.  The nudge units are either <b>seconds</b> or
-the native units for the track.  Select the units by <b>right clicking</b>
-on the nudge textbox and using the context sensitive menu.
-
-   <p>Nudge settings are ganged with the <b>Gang faders</b> toggle and the
-<b>Arm track</b> toggle.
-
-   <p>Use the mouse wheel over the nudge textbox to increment and decriment
-it.
-
-<div class="node">
-<a name="PANNING-TRACKS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#AUTOMATIC-TRACK-PANNING">AUTOMATIC TRACK PANNING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#NUDGING-TRACKS">NUDGING TRACKS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
-
-</div>
-
-<h3 class="section">9.3 PANNING TRACKS</h3>
-
-<p>Audio tracks have a panning box in their patchbay.  It may have to be
-expanded to see it.  The panning box is shown here.
-
-   <div class="block-image"><img src="apatches.png" alt="apatches.png"></div>
-
-   <p>Pan and nudge for an audio track.
-
-   <p>Position the pointer in the panning box and click/drag to reposition
-the audio output among the speaker arrangement.  The loudness of each
-speaker is printed during the dragging operation.  The panning box uses
-a special algorithm to try to allow audio to be focused through one
-speaker or branched between the nearest speakers when more than 2
-speakers are used.
-
-<div class="node">
-<a name="AUTOMATIC-TRACK-PANNING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#STANDARD-AUDIO-MAPPINGS">STANDARD AUDIO MAPPINGS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#PANNING-TRACKS">PANNING TRACKS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
-
-</div>
-
-<h3 class="section">9.4 AUTOMATIC TRACK PANNING</h3>
-
-<p>Several convenience functions are provided for automatically setting
-the panning to several common standards.  They are listed in the
-<b>Audio</b> menu.  These functions only affect audio tracks with
-<b>recording</b> enabled.
-
-   <p><b>Audio-&gt;Map 1:1</b> - This maps every track to its own channel and wraps
-around when all the channels are allocated.  It's most useful for
-making 2 tracks with 2 channels map to stereo and for making 6 tracks
-with 6 channels map to a 6 channel soundcard.
-
-   <p><b>Audio-&gt;Map 5.1:2</b> - This maps 6 tracks to 2 channels.  The project
-should have 2 channels when using this function.  Go to
-<b>Settings-&gt;format</b> to set the output channels to 2.  This is most
-useful for downmixing 5.1 audio to stereo.
-
-<div class="node">
-<a name="STANDARD-AUDIO-MAPPINGS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MANIPULATING-TRACKS">MANIPULATING TRACKS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#AUTOMATIC-TRACK-PANNING">AUTOMATIC TRACK PANNING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
-
-</div>
-
-<h3 class="section">9.5 STANDARD AUDIO MAPPINGS</h3>
-
-<p>Although Cinelerra lets you map any audio track to any speaker, there
-are standard mappings you should use to ensure the media can be played
-back elsewhere.  Also, most audio encoders require the audio tracks to
-be mapped to standard speaker numbers or they won't work.
-
-   <p>In the <b>channel position</b> widget See <a href="#SETTING-PROJECT-ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>,
-the channels are numbered to correspond to the output tracks they are
-rendered to.  For stereo, the source of channel 1 needs to be the left
-track and the source of channel 2 needs to be the right track.
-
-   <p>For 5.1 surround sound, the sources of the 6 channels need to be in the
-order of center, front left, front right, back left, back right, low
-frequency effects.  If the right tracks aren't mapped to the right
-speakers, most audio encoders won't encode the right information if
-they encode anything at all.  The low frequency effects track
-specifically can't store high frequencies in most cases.
-
-<div class="node">
-<a name="MANIPULATING-TRACKS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TWO-SCREEN-EDITING">TWO SCREEN EDITING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#STANDARD-AUDIO-MAPPINGS">STANDARD AUDIO MAPPINGS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
-
-</div>
-
-<h3 class="section">9.6 MANIPULATING TRACKS</h3>
-
-<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. 
-The <b>Tracks</b> menu contains a number of options for dealing with
-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
-popup menu affects the track whether it's armed or not.
-
-   <p><b>Move up</b> and <b>move down</b> moves the one track up or down in
-the stack.  <b>Delete track</b> deletes the track.
-
-   <p>Operations in the <b>Tracks</b> menu affect only tracks which are
-armed.
-
-   <p><b>Move tracks up</b> and <b>Move tracks down</b> shift all the armed
-tracks up or down the stack.
-
-   <p><b>Delete tracks</b> deletes the armed tracks.
-
-   <p><b>Delete last track</b> deletes the last track, whether it's armed or
-not.  Holding down the <b>d</b> key quickly deletes all the tracks.
-
-   <p><b>Concatenate tracks</b> is more complicated.  It takes every
-<b>playable</b> track and concatenates it to the end of the first
-<b>armed tracks</b>.  If there are two armed tracks followed by two
-playable tracks, the concatenate operation puts the two playable tracks
-after the two armed tracks.  If there are three playable tracks
-instead, two tracks are put after the armed tracks and a third track is
-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 <b>Audio</b> and
-<b>Video</b> 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
-incremented by one.  In the case of video, the new track is put on the
-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">
-<a name="TWO-SCREEN-EDITING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#DRAG-AND-DROP-EDITING">DRAG AND DROP EDITING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MANIPULATING-TRACKS">MANIPULATING TRACKS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
-
-</div>
-
-<h3 class="section">9.7 TWO SCREEN EDITING</h3>
-
-<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
-resources.  In <b>file-&gt;load</b> load some movies with the insertion
-mode <b>create new resources</b>.  You want the timeline to stay
-unchanged while new resources are brought in.  Go to the Resource
-Window and select the <b>media</b> folder.  The newly loaded resources
-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
-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
-use.  Use either the <b>slider</b> or the <b>transport controls</b>. 
-Use the <b>preview region</b> to narrow down the search.  Set the
-starting point with the <img src="in_point_button.png" alt="in_point_button.png"> <b>in point button</b>.
-
-   <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"> <b>out point button</b>.  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.
-
-     <ul>
-<li>
-Splice <img src="splice_button.png" alt="splice_button.png"> inserts the clip in the timeline, pushing
-everything back.  If an <b>in point</b> or <b>out point</b> exists on
-the timeline it's inserted there, otherwise it's inserted after the
-insertion point.  After that, the insertion point moves to the end of
-the clip.  If there is no in/out point, the insertion point will be
-used as the next splice location.  This way you can continuously build
-up the program by splicing.
-
-     <li>
-Overwrite <img src="overwrite_button.png" alt="overwrite_button.png"> overwrites the region of the
-timeline with the clip.  If an <b>in point</b> or <b>out point</b>
-exists on the timeline it's overwritten there, otherwise it's
-overwritten after the insertion point.  If a region is highlighted or
-both in and out points exist the difference between the active region
-and the clip length is deleted.
-
-     <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>
-Copy behaves the same as in cut and paste editing.
-
-   </ul>
-
-   <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 <b>[ ] v</b> keys perform in/out points
-and splicing.
-
-<div class="node">
-<a name="DRAG-AND-DROP-EDITING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#CUT-AND-PASTE-EDITING">CUT AND PASTE EDITING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#TWO-SCREEN-EDITING">TWO SCREEN EDITING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
-
-</div>
-
-<h3 class="section">9.8 DRAG AND DROP EDITING</h3>
-
-<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 <b>file-&gt;load</b>.  Set the insertion mode to
-<b>Create new resources</b>.  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 <b>Media</b> 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
-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
-and two audio tracks on the timeline and the media should be dragged
-over the first video track.  If the media has audio only you'll need
-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
-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
-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
-list.  Select either <b>display icons</b> or <b>display text</b> to
-change the list format.
-
-   <p>When displaying text in the resource window <b>SHIFT-clicking</b> on
-media files extends the number of highlighted selections. 
-<b>CTRL-clicking</b> on media files in text mode selects additional
-files one at a time.
-
-   <p>When displaying icons in the resource window <b>SHIFT-clicking</b> or
-<b>CTRL-clicking</b> selects media files one at a time.
-
-   <p>In addition to dragging media files, if you create clips and open the
-<b>clip</b> folder you can drag clips on the timeline.
-
-   <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,
-sort movie scenes, and give better NAB demos but not much else.
-
-<div class="node">
-<a name="CUT-AND-PASTE-EDITING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TRIMMING">TRIMMING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DRAG-AND-DROP-EDITING">DRAG AND DROP EDITING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
-
-</div>
-
-<h3 class="section">9.9 CUT AND PASTE EDITING</h3>
-
-<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
-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
-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
-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,
-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
-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 <b>edit-&gt;clear</b>
-operation.  If a region is highlighted or in/out points exist, the
-affected region is cleared by <b>edit-&gt;clear</b>.  But if the insertion
-point is over an edit boundary and the edits on each side of the edit
-boundary are the same resource, the edits are combined into one edit
-comprised by the resource.  The start of this one edit is the start of
-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">
-<a name="TRIMMING"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#CUT-AND-PASTE-EDITING">CUT AND PASTE EDITING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#EDITING">EDITING</a>
-
-</div>
-
-<h3 class="section">9.10 TRIMMING</h3>
-
-<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
-expand left or an expand right.  If the cursor is an expand left, the
-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
-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
-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 <b>Drag all following edits</b> 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
-the end of the edit if you move it backward.  All the edits thereafter
-shift.  Finally, if you drag the end of the edit past the start of the
-edit, the edit is deleted.
-
-   <p>In a <b>Drag only one edit</b> 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 <b>Drag source only</b> 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
-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
-as the cursor when the drag operation begins are affected.  Unarm
-tracks to prevent edits from getting affected.
-
-<div class="node">
-<a name="USING-EFFECTS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SETTING-PROJECT-ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#EDITING">EDITING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">10 USING EFFECTS</h2>
-
-<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
-applied using the same procedure.
-
-<ul class="menu">
-<li><a accesskey="1" href="#REALTIME-EFFECTS">REALTIME EFFECTS</a>
-<li><a accesskey="2" href="#RENDERED-EFFECTS">RENDERED EFFECTS</a>
-<li><a accesskey="3" href="#TRANSITIONS">TRANSITIONS</a>
-<li><a accesskey="4" href="#LADSPA-EFFECTS">LADSPA EFFECTS</a>
-<li><a accesskey="5" href="#EFFECT-PRESETS">EFFECT PRESETS</a>
-</ul>
-
-<div class="node">
-<a name="REALTIME-EFFECTS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#RENDERED-EFFECTS">RENDERED EFFECTS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#USING-EFFECTS">USING EFFECTS</a>
-
-</div>
-
-<h3 class="section">10.1 REALTIME EFFECTS</h3>
-
-<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><b>APPLYING REALTIME EFFECTS</b>
-
-   <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
-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
-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
-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, there are 2 other
-methods of applying them:
-
-     <ul>
-<li><b>APPLYING FROM THE TRACK POPUP MENU:</b>
-
-     <p>Right click on a track and select <b>Attach effect</b> from the popup.  The attach effect
-dialog gives you more control than pure dragging and dropping.  For one
-thing, the attach effect dialog lets you attach two more types of
-effects: shared effects and shared tracks.  Select a plugin from the
-<b>Plugins</b> column and hit <b>Attach</b> under the plugins column to attach
-it.  The effect is the same as if the effect was dragged from the
-resource window.
-
-     <li><b>APPLYING FROM THE AUDIO AND VIDEO MENUS:</b>
-
-     <p>Select <b>Audio-&gt;Attach effect...</b> or <b>Video-&gt;Attach effect</b> to attach
-a realtime effect to all the recordable tracks simultaneously.  The
-advantage with this is most of the time you want to attach the same
-effect to all the audio tracks and the other two methods require
-repeating the same work for every track.
-
-     <p>The menu interface has an option called  <b>Attach single standalone and
-share others</b>.  Enable this to make the first track get a standalone
-effect and to have the other tracks share the standalone effect.  Most
-of the time, you want this to be on.
-
-   </ul>
-
-   <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 <b>show</b> option.  The show
-option causes the GUI for the effect to appear under the cursor.  Most
-effects have GUI's but some don't.  If the effect doesn't have a GUI,
-nothing pops up when the <b>show</b> option is selected.  When you
-tweek parameters in the effect GUI, the parameters normally effect the
-entire duration of the effect.
-
-<ul class="menu">
-<li><a accesskey="1" href="#REALTIME-EFFECT-TYPES">REALTIME EFFECT TYPES</a>
-<li><a accesskey="2" href="#EDITING-REALTIME-EFFECTS">EDITING REALTIME EFFECTS</a>
-</ul>
-
-<div class="node">
-<a name="REALTIME-EFFECT-TYPES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#EDITING-REALTIME-EFFECTS">EDITING REALTIME EFFECTS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#REALTIME-EFFECTS">REALTIME EFFECTS</a>
-
-</div>
-
-<h4 class="subsection">10.1.1 REALTIME EFFECT TYPES</h4>
-
-<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>
-<li>There must be other effects in the timeline.
-
-     <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>
-The insertion point or selected region must start inside the other effects.
-
-   </ul>
-
-   <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
-be anything in the <b>shared tracks</b> column if no other video track
-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
-<b>shared effects</b> and <b>shared tracks</b> columns.  The
-<b>attach</b> 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. 
-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
-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
-them and either mix the two tracks together or use one track to stage
-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 <b>shared track</b> as one of its effects,
-the shared track itself is used as a realtime effect.  This is more
-commonly known as <b>bouncing tracks</b> but Cinelerra achieves the
-same operation by attaching shared tracks.  The fade and any effects in
-the shared track are applied to the original track.  Once the shared
-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
-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
-you don't want the shared track to mix the same data as the original
-track on the output.  You want it to stop right before the mixing stage
-and give the data back to the original track.  Do this by enabling the
-<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
-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
-on top of the original track.  This is because shared tracks are
-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">
-<a name="EDITING-REALTIME-EFFECTS"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#REALTIME-EFFECT-TYPES">REALTIME EFFECT TYPES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#REALTIME-EFFECTS">REALTIME EFFECTS</a>
-
-</div>
-
-<h4 class="subsection">10.1.2 EDITING REALTIME EFFECTS</h4>
-
-<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
-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 <b>Settings-&gt;edit effects</b> 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
-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
-and they are bound to the mouse buttons that you set in <b>interface
-preferences</b>. 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
-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
-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 some cases you'll want a trimming operation to change only one row
-of effects.  This can be achieved by first positioning the insertion
-point on the start or end of the effect.  Then press <b>shift</b> while
-beginning the trimming operation.  This causes the operation to change
-only one row of effects.
-
-   <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
-<b>Move up</b> and <b>Move down</b> options move the effect up or down.
-
-   <p>When you're moving effects up or down, be aware that if they're shared
-as <b>shared effects</b>, 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
-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
-<b>attach...</b> to change the effect or change the reference if it is
-a shared effect.
-
-<div class="node">
-<a name="RENDERED-EFFECTS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TRANSITIONS">TRANSITIONS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#REALTIME-EFFECTS">REALTIME EFFECTS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#USING-EFFECTS">USING EFFECTS</a>
-
-</div>
-
-<h3 class="section">10.2 RENDERED EFFECTS</h3>
-
-<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>In 15 years, the only effect we actually ever rendered with this feature
-was <b>normalize</b>.  We've never rendered an effect which could be
-applied on the timeline, even though this feature supports rendering
-realtime effects.
-
-   <p>This feature was implemented back when computers were too slow to play
-back anything in realtime.  Decent sounding reverb took a long time &amp;
-was considered major number crunching.
-
-   <p>The rendered effects are not listed in the resource window but instead
-are accessed through the <b>Audio-&gt;Render effect</b> and
-<b>Video-&gt;Render effect</b> 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
-selecting <b>Render effect...</b>.  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>Secondly, the tracks to apply the rendered affect to need to be
-<b>armed</b>.  All other tracks are ignored.
-
-   <p>Finally, the rendered affect processes certain track attributes when it
-reads its input data but not others.  Transitions in the affected track
-are applied.  Nudge is not and effects are not.  This allows the new
-data to be pasted into the existing position without changing the nudge
-value.
-
-   <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 <b>Select a file to
-render to</b> 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
-<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
-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. 
-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 <b>OK</b> 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">
-<a name="TRANSITIONS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#LADSPA-EFFECTS">LADSPA EFFECTS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#RENDERED-EFFECTS">RENDERED EFFECTS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#USING-EFFECTS">USING EFFECTS</a>
-
-</div>
-
-<h3 class="section">10.3 TRANSITIONS</h3>
-
-<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
-in the resource window.  Transitions may only apply to the matching
-track type.  Transitions under <b>audio transitions</b> can only apply
-to audio tracks.  Transitions under <b>video transitions</b> can only
-apply to video tracks.
-
-   <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
-<b>Video transitions</b> 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
-watch the output in the <b>Compositor window</b>.  Scrubbing with the
-insertion point doesn't normally show transitions because the
-transition durations are usually too short.  The exact point in time
-when the transition takes effect isn't straightforward.  It starts when
-the second edit begins and lasts a certain amount of time into the
-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
-effect.  Move the pointer over the transition and right click to bring
-up the transition menu.  The <b>show</b> option brings up specific
-parameters for the transition in question if there are any.  The
-<b>length</b> option adjusts the length of the transition in seconds. 
-Once these two parameters are set, they are applied to future
-transitions until they are changed again.  Finally, the <b>detach</b>
-option removes the transition from the timeline.
-
-   <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 <b>U</b> and <b>u</b>
-keys will paste the same transition.  The <b>U</b> key pastes the last
-video transition and the <b>u</b> key pastes the last audio transition
-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
-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">
-<a name="LADSPA-EFFECTS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#EFFECT-PRESETS">EFFECT PRESETS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#TRANSITIONS">TRANSITIONS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#USING-EFFECTS">USING EFFECTS</a>
-
-</div>
-
-<h3 class="section">10.4 LADSPA EFFECTS</h3>
-
-<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
-a lack of reentrancy.  Although Cinelerra implements the LADSPA
-interface as accurately as possible, multiple tracks of realtime,
-simultaneous processing go beyond the majority of LADSPA users.  LADSPA
-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 <b>LADSPA_PATH</b>
-environment variable to the location of your LADSPA plugins or putting
-them in the <b>/usr/lib/cinelerra</b> directory.
-
-<div class="node">
-<a name="EFFECT-PRESETS"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#LADSPA-EFFECTS">LADSPA EFFECTS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#USING-EFFECTS">USING EFFECTS</a>
-
-</div>
-
-<h3 class="section">10.5 EFFECT PRESETS</h3>
-
-<p>Save and recall all the settings for an effect by using the <b>presets</b>
-window.  Bring up the effect context menu by right clicking on the
-effect on the timeline.  Go to <b>Presets...</b> to bring up the window. 
-Save all the settings to a preset by entering a title in <b>Preset
-title</b> and clicking <b>save</b>.  Recall the settings in a preset by
-highlighting it and clicking <b>Apply</b>.  Delete a preset by highlighting
-it and clicking <b>Delete</b>.
-
-<div class="node">
-<a name="SETTING-PROJECT-ATTRIBUTES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#COMPOSITING">COMPOSITING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#USING-EFFECTS">USING EFFECTS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">11 SETTING PROJECT ATTRIBUTES</h2>
-
-<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
-file's samplerate is different than the project attributes, it is
-resampled.  If a video file's frame size is different than the project
-attributes, it is composited on a black frame, either cropped or
-bordered with black.
-
-   <p>The project attributes are adjusted in <b>Settings-&gt;Set Format</b> and in
-to a more limited extent in <b>File-&gt;New</b>.  When you adjust project
-settings in <b>file-&gt;new</b> a new timeline is created with no data. 
-Every timeline created from this point uses the same settings.  When
-you adjust settings in <b>settings-&gt;format</b>, the timeline is not
-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,
-frame size, Cinelerra uses some unusual settings like <b>channel
-positions, color model, and aspect ratio.</b>
-
-<ul class="menu">
-<li><a accesskey="1" href="#AUDIO-CHANNEL-POSITIONS">AUDIO CHANNEL POSITIONS</a>
-<li><a accesskey="2" href="#COLOR-MODEL">COLOR MODEL</a>
-<li><a accesskey="3" href="#ASPECT-RATIO">ASPECT RATIO</a>
-</ul>
-
-<div class="node">
-<a name="AUDIO-CHANNEL-POSITIONS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#COLOR-MODEL">COLOR MODEL</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SETTING-PROJECT-ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>
-
-</div>
-
-<h3 class="section">11.1 AUDIO CHANNEL POSITIONS</h3>
-
-<p>The currently enabled audio channels and their positions in the user
-interface boxes are displayed in the channel position widget.
-
-   <pre class="sp">
-
-
-</pre>
-<img src="channelpositions.png" alt="channelpositions.png">
-   <pre class="sp">
-
-
-</pre>
-
-   <p>The channels are numbered.  When rendered, the output from channel 1 is
-rendered to the first output track in the file or the first soundcard
-channel of the soundcard.  Later channels are rendered to their
-successively numbered output tracks.
-
-   <p>The audio channel locations correspond to where in the panning widgets
-each of the audio outputs is.  The closer the panning position is to
-one of the audio outputs, the more signal that speaker gets.  Click on
-a speaker icon and drag to change the audio channel location.
-
-   <p>The speakers can be in any orientation.  A different speaker
-arrangement is stored for every number of audio channels since normally
-you don't want the same speaker arrangement for different numbers of
-channels.
-
-   <p>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
-are used, the pan controls on the timeline can distinguish between
-them.  It has nothing to do with the actual arrangement of speakers.
-
-   <p>But different channels can be positioned very close together to make
-them have the same output.
-
-<div class="node">
-<a name="COLOR-MODEL"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#ASPECT-RATIO">ASPECT RATIO</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#AUDIO-CHANNEL-POSITIONS">AUDIO CHANNEL POSITIONS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SETTING-PROJECT-ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>
-
-</div>
-
-<h3 class="section">11.2 COLOR MODEL</h3>
-
-<p>Color model is very important for video playback because video has the
-disadvantage of being very slow.  Although it isn't noticable, audio
-intermediates contain much more information than the audio on disk and
-the audio which is played.  Audio always uses the highest bandwidth
-intermediate because it's fast.
-
-   <p>Video intermediates must use the least amount of data for the required
-quality because it's slow, but video intermediates still use a higher
-bandwidth color model than video which is stored and video which is
-played.  This allows more processing to be done with less destruction
-of the original data.
-
-   <p>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 directly into the format of the output device.  If
-effects are processed, the decompression is into an intermediate
-colormodel first and the intermediate colormodel is then converted to
-the format of the output device.  The selection of intermediate
-colormodel determines how accurate and fast the effects are.
-
-   <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.
-
-     <ul>
-<li>
-<b>RGB-888</b>
-
-     <p>This allocates 8 bits for the R, G, and B channels and no alpha. This
-is normally used for uncompressed media with low dynamic range.
-
-     <li>
-<b>RGBA-8888</b>
-
-     <p>This allocates an alpha channel to the 8 bit RGB colormodel.  It's used
-for overlaying multiple tracks.
-
-     <li>
-<b>YUV-888</b>
-
-     <p>This allocates 8 bits for Y, U, and V.  This is used for low dynamic
-range operations in which the media is compressed in the YUV color
-space.  Most compressed media is in YUV and this allows it to be
-processed fast with the least color degradation.
-
-     <li>
-<b>YUVA-8888</b>
-
-     <p>This allocates an alpha channel to the 8 bit YUV colormodel for
-transparency.
-
-     <li>
-<b>RGB-Float</b>
-
-     <p>This allocates a 32 bit float for the R, G, and B channels and no
-alpha.  This is used for high dynamic range processing with no
-transparency.
-
-     <li>
-<b>RGBA-Float</b> This adds a 32 bit float for alpha to RGB-Float.  This
-is used for high dynamic range processing with transparency.
-
-   </ul>
-
-   <p>In order to do effects which involve alpha channels, a colormodel with
-an alpha channel must be selected.  These are RGBA8888, YUVA8888, and
-RGBA Float.  The 4 channel colormodels are notoriously slower than 3
-channel colormodels, with the slowest being RGBA Float.  Some effects,
-like fade, work around the need for alpha channels while other effects,
-like chromakey, require an alpha channel to do anything, so it's a good
-idea to try the effect without alpha channels to see if it works before
-settling on an alpha channel and slowing it down.
-
-   <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>Years of working with high dynamic range footage have shown floating
-point RGB to be the best format for high dynamic range.  While 16 bit
-integers were used in the past, these were too lossy and slow for the
-amount of improvement.
-
-   <p>RGB float doesn't destroy information when used with YUV source
-footage.  It also supports brightness above 100%.  Be aware that some
-effects, like Histogram, still clip above 100% when in floating point.
-
-<div class="node">
-<a name="ASPECT-RATIO"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#COLOR-MODEL">COLOR MODEL</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SETTING-PROJECT-ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>
-
-</div>
-
-<h3 class="section">11.3 ASPECT RATIO</h3>
-
-<p>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.
-
-   <p>Some file formats, like MPEG video, write the project aspect ratio to
-the file.
-
-<div class="node">
-<a name="COMPOSITING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#KEYFRAMES">KEYFRAMES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SETTING-PROJECT-ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">12 COMPOSITING</h2>
-
-<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
-operations in Cinelerra.  Cinelerra detects when it's in a compositing
-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
-window.  Shortcuts exist in the Resource window for changing some
-compositing attributes.  Once some video files are on the timeline, the
-compositor window is a good place to try compositing.
-
-<ul class="menu">
-<li><a accesskey="1" href="#THE-CAMERA-AND-PROJECTOR">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-REGIONS">SAFE REGIONS</a>
-<li><a accesskey="5" href="#OVERLAY-MODES">OVERLAY MODES</a>
-<li><a accesskey="6" href="#TRACK-AND-OUTPUT-SIZES">TRACK AND OUTPUT SIZES</a>
-</ul>
-
-<div class="node">
-<a name="THE-CAMERA-AND-PROJECTOR"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MASKS">MASKS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
-
-</div>
-
-<h3 class="section">12.1 THE CAMERA AND PROJECTOR</h3>
-
-<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
-source video the temporary is copied from.  The projector determines
-where in the output the temporary is copied to.  The temporary is a
-frame of video in Cinelerra's memory where all graphics processing is
-done.  Each track has a different temporary which is defined by the
-track size.  By resizing the tracks you can create splitscreens, pans,
-and zooms.
-
-   <pre class="sp">
-
-
-</pre>
-<img src="compositing_pipeline.png" alt="compositing_pipeline.png">
-   <pre class="sp">
-
-
-</pre>
-<b>Visual representation of the compositing pipeline</b>.
-
-   <p>When editing the camera and projector in the compositing window, the
-first track with <b>record</b> 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 <b>shift-click</b> on the record icon of the track.  This
-solos the track.
-
-   <p>When the <b>projector</b> 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.  <b>shift-dragging</b> anywhere
-in the video window causes the guide box to shrink and grow along with
-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. 
-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. 
-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
-camera and projector.  Right click over the video portion of the
-compositing window to bring up the menu.
-
-     <ul>
-<li>Reset Camera causes the camera to return to the center position.
-
-     <li>Reset Projector causes the projector to return to the center.
-
-   </ul>
-
-   <p>The camera and projector have shortcut operations neither in the popup
-menu or represented in video overlays.  These are accessed in the
-<b>Tool window</b>.  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,
-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
-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
-output size is set to the reduced size of the video.  Without any
-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
-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
-offsetting <b>out x and out y</b> by a complicated calculation. 
-Instead, we leave <b>out x and out y</b> 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
-<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">
-<a name="MASKS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#CROPPING">CROPPING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#THE-CAMERA-AND-PROJECTOR">THE CAMERA AND PROJECTOR</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
-
-</div>
-
-<h3 class="section">12.2 MASKS</h3>
-
-<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
-interference but the other copy doesn't.  Color correction may be
-needed in one section of a frame but not another.  A mask can be
-applied to just a section of the color corrected track while the
-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
-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
-possible masks per track.  Each mask is defined separately, although
-they each perform the same operation, whether it's addition or
-subtraction.
-
-   <pre class="sp">
-
-
-</pre>
-<img src="compositing_pipeline2.png" alt="compositing_pipeline2.png">
-   <pre class="sp">
-
-
-</pre>
-<b>Compositing pipeline with masks</b>
-
-   <p>To define a mask, go into the Compositor window and enable the
-<img src="mask.png" alt="mask.png"> <b>mask</b> 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
-curve behavior, this masking interface performs in realtime what the
-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 <b>ctrl-dragging</b> 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
-<b>shift-dragging</b> in the vicinity of the corner.  Then
-<b>shift-dragging</b> 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
-by <b>alt-dragging</b> 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
-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 <b>mode</b> 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 <b>value</b> 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
-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 <b>mask number</b> 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
-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. 
-The <b>feather</b> 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
-mask instead of the whole mask.  These are <b>Delete, x, y</b>.  The
-active point is defined as the last point dragged in the compositor
-window.  Any point can be activated merely by <b>ctrl-clicking</b> near
-it without moving the pointer.  Once a point is activated,
-<b>Delete</b> deletes it and <b>x, y</b> allow repositioning by numeric
-entry.
-
-<div class="node">
-<a name="CROPPING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SAFE-REGIONS">SAFE REGIONS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MASKS">MASKS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
-
-</div>
-
-<h3 class="section">12.3 CROPPING</h3>
-
-<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 in the <b>compositing
-window</b> to perform cropping.
-
-   <p>This draws a rectangle over the video.  Click-drag anywhere in the
-video to start a new rectangle.  Click-drag over any corner of the
-rectangle to reposition the corner.
-
-   <p>Alt-click in the cropping rectangle to translate the rectangle to any
-position without resizing it.
-
-   <p>The tool window allows text entry of the coordinates and executes the
-cropping operation.  When the rectangle is positioned, hit the <b>do
-it</b> button in the tool window to execute the cropping operation.
-
-<div class="node">
-<a name="SAFE-REGIONS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#OVERLAY-MODES">OVERLAY MODES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#CROPPING">CROPPING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
-
-</div>
-
-<h3 class="section">12.4 SAFE REGIONS</h3>
-
-<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">
-<a name="OVERLAY-MODES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TRACK-AND-OUTPUT-SIZES">TRACK AND OUTPUT SIZES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SAFE-REGIONS">SAFE REGIONS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
-
-</div>
-
-<h3 class="section">12.5 OVERLAY MODES</h3>
-
-<p>Every video track has an overlay mode, accessible by expanding the
-track.  The overlay mode is a pulldown menu on the left under the
-fader.  When collapsed, it displays an icon representing the current
-overlay mode.
-
-   <p>Select the <img src="expandpatch_checked.png" alt="expandpatch_checked.png"> expand track toggle to view all
-the options for a video track if you can't see the overlay mode.  The
-overlay mode of video tracks is <b>normal</b> by default.  Select other
-modes by clicking the overlay button and selecting an item from the
-popup menu.
-
-   <p>Overlay modes are processed inside the projector stage of compositing. 
-The different modes are summarized below.
-
-     <ul>
-<li>
-<b>Normal</b> uses a traditional Porter-Diff equation to blend tracks with
-alpha.  When no alpha exists in the project color model, the new track
-always replaces the output.
-
-     <li>
-<b>Addition</b>  In this mode, 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>
-<b>Subtraction</b> In this mode, the current track is subtracted from the
-output and the result is alpha blended onto the output.
-
-     <li>
-<b>Multiply</b> 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>
-<b>Divide</b> divides the current track by the output and the result is
-blended into the output.  It usually results in overloaded levels.
-
-     <li>
-<b>Replace</b> does no blending and overwrites the output with the current
-track.
-
-   </ul>
-
-<div class="node">
-<a name="TRACK-AND-OUTPUT-SIZES"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#OVERLAY-MODES">OVERLAY MODES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMPOSITING">COMPOSITING</a>
-
-</div>
-
-<h3 class="section">12.6 TRACK AND OUTPUT SIZES</h3>
-
-<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. 
-Projectors are rendered to the output and are affected by the output
-size.  If the temporary is smaller than the output, the temporary is
-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
-different size.  Right click on a track to bring up the track's menu. 
-Select <b>Resize Track</b> to resize the track to any arbitrary size. 
-Alternatively you can select <b>Match output size</b> to make the track
-the same size as the output.
-
-   <p>The output size is set in either <b>New</b> when creating a new project
-or <b>Settings-&gt;Format</b>.  In the Resource window there is another
-way to change the output size.  Right click on a video asset and select
-<b>Match project size</b> 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">
-<a name="KEYFRAMES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#CAPTURING-MEDIA">CAPTURING MEDIA</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#COMPOSITING">COMPOSITING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">13 KEYFRAMES</h2>
-
-<p>When you change the fade, camera, projector, or other parameters for a
-track, they stay by default the same for the entire durection of the
-timeline.   Setting static parameters isn't very useful sometimes. 
-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. 
-If the value is stored in a keyframe, why doesn't it always change? 
-The keyframe it is stored in by default is known as the <b>default
-keyframe</b>.  The default keyframe applies to the entire duration if no
-other keyframes are present.  The default keyframe is not drawn
-anywhere 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 <b>view</b> menu.  A
-faster way to toggle multiple keyframe types is to bring up
-<b>window-&gt;overlays</b>.  This window allows toggling of every parameter
-in the view menu.  When keyframes are selected, they are drawn on the
-timeline over the tracks they apply to.
-
-   <p>Keyframes come in many forms: curves, toggles, modes, and so on. 
-How to handle the different types of keyframes is described here.
-
-<ul class="menu">
-<li><a accesskey="1" href="#CURVE-KEYFRAMES">CURVE KEYFRAMES</a>:   Using rubber band curves
-<li><a accesskey="2" href="#CHANGING-BEZIER-_0026-LINEAR-MODE">CHANGING BEZIER &amp; LINEAR MODE</a>:   Change curves from linear to curved
-<li><a accesskey="3" href="#SNAPPING-TO-NEIGHBOR-KEYFRAMES">SNAPPING TO NEIGHBOR KEYFRAMES</a>
-<li><a accesskey="4" href="#NAVIGATING-CURVE-KEYFRAMES">NAVIGATING CURVE KEYFRAMES</a>
-<li><a accesskey="5" href="#TOGGLE-KEYFRAMES">TOGGLE KEYFRAMES</a>
-<li><a accesskey="6" href="#AUTOMATIC-KEYFRAMES">AUTOMATIC KEYFRAMES</a>
-<li><a accesskey="7" href="#COMPOSITOR-KEYFRAMES">COMPOSITOR KEYFRAMES</a>
-<li><a accesskey="8" href="#EDITING-KEYFRAMES">EDITING KEYFRAMES</a>:    Moving keyframes around
-<li><a accesskey="9" href="#KEYFRAME-SPANNING">KEYFRAME SPANNING</a>:    How to change 1 parameter in many keyframes simultaneously
-</ul>
-
-<div class="node">
-<a name="CURVE-KEYFRAMES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#CHANGING-BEZIER-_0026-LINEAR-MODE">CHANGING BEZIER &amp; LINEAR MODE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
-
-</div>
-
-<h3 class="section">13.1 CURVE KEYFRAMES</h3>
-
-<p>Many parameters are stored in rubber band curves.  Go to <b>view-&gt;fade</b> or
-<b>view-&gt;...zoom</b> to show curves on the timeline for those parameters. 
-In either arrow editing mode or i-beam editing mode, move the cursor
-over the curves in the 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
-it.  When you click-drag a second keyframe on the curve, it creates a
-smooth ramp.
-
-<div class="node">
-<a name="CHANGING-BEZIER-%26-LINEAR-MODE"></a>
-<a name="CHANGING-BEZIER-_0026-LINEAR-MODE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SNAPPING-TO-NEIGHBOR-KEYFRAMES">SNAPPING TO NEIGHBOR KEYFRAMES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#CURVE-KEYFRAMES">CURVE KEYFRAMES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
-
-</div>
-
-<h3 class="section">13.2 CHANGING BEZIER &amp; LINEAR MODE</h3>
-
-<p>The curve keyframes have bezier and linear modes.  In linear mode, the
-keyframe looks like a square and the lines emanating from it are
-straight.  In bezier mode, the keyframe is rounded and has 2 control
-lines in addition to the rubber band curve lines.
-
-   <p>These are keyframes in linear mode.
-
-   <div class="block-image"><img src="linear.png" alt="linear.png"></div>
-
-   <p>These are keyframes in bezier mode.
-
-   <div class="block-image"><img src="bezier.png" alt="bezier.png"></div>
-
-   <p>Change the mode of an existing keyframe by right clicking on it to bring
-up the context menu and selecting <b>make linear</b> or <b>make bezier</b>.
-
-   <p>Change the mode of several keyframes by highlighting the entire region of the
-timeline and selecting <b>Keyframes-&gt;change to linear</b> or
-<b>Keyframes-&gt;change to bezier</b>.
-
-   <p>When keyframes are created, they can be linear or bezier by default. 
-Change the default mode by checking or unchecking <b>Keyframes-&gt;create
-bezier</b>.
-
-   <p>For bezier keyframes, <b>ctrl-dragging</b> on the control lines of a
-keyframe changes the value of either the input control or the output
-control.  Without <b>ctrl</b> the cursor only affects the central
-keyframe.  This affects the sharpness of the curve.  The input and
-output controls can only be moved vertically.
-
-   <p>If the control lines aren't visible, <b>ctrl-drag</b> on the left or right
-of the keyframe.
-
-<div class="node">
-<a name="SNAPPING-TO-NEIGHBOR-KEYFRAMES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#NAVIGATING-CURVE-KEYFRAMES">NAVIGATING CURVE KEYFRAMES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#CHANGING-BEZIER-_0026-LINEAR-MODE">CHANGING BEZIER &amp; LINEAR MODE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
-
-</div>
-
-<h3 class="section">13.3 SNAPPING TO NEIGHBOR KEYFRAMES</h3>
-
-<p><b>shift-drag</b> on a curve keyframe to make the keyframe snap 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">
-<a name="NAVIGATING-CURVE-KEYFRAMES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TOGGLE-KEYFRAMES">TOGGLE KEYFRAMES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SNAPPING-TO-NEIGHBOR-KEYFRAMES">SNAPPING TO NEIGHBOR KEYFRAMES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
-
-</div>
-
-<h3 class="section">13.4 NAVIGATING CURVE KEYFRAMES</h3>
-
-<p>There isn't much room on the timeline for a wide range of curve
-values.  You need to zoom the curves in and out vertically to have any
-variability.  This is done by 2 tools: the automation fit button
-<img src="fitautos.png" alt="fitautos.png"> and automation zoom menu <img src="autozoom.png" alt="autozoom.png">.
-
-   <p>The automation fit button scales and offsets the vertical range so the
-selected curve area appears in the timeline.  If a region of the
-timeline is highlighted by the cursor, only that region is scaled. 
-In/out points don't affect the zoomed region.  <b>Alt-f</b> also performs
-automation fitting.
-
-   <p>The automation zoom menu manually changes the vertical scaling of the
-curves in multiples of 2.  Click on its tumbler to change the zoom. 
-<b>Alt-Up and Alt-Dn</b> change the automation zoom from the keyboard.
-
-<div class="node">
-<a name="TOGGLE-KEYFRAMES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#AUTOMATIC-KEYFRAMES">AUTOMATIC KEYFRAMES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#NAVIGATING-CURVE-KEYFRAMES">NAVIGATING CURVE KEYFRAMES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
-
-</div>
-
-<h3 class="section">13.5 TOGGLE KEYFRAMES</h3>
-
-<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">
-<a name="AUTOMATIC-KEYFRAMES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#COMPOSITOR-KEYFRAMES">COMPOSITOR KEYFRAMES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#TOGGLE-KEYFRAMES">TOGGLE KEYFRAMES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
-
-</div>
-
-<h3 class="section">13.6 AUTOMATIC KEYFRAMES</h3>
-
-<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
-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 <b>View</b> 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
-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
-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
-parameters in each individual effect.
-
-   <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">
-<a name="COMPOSITOR-KEYFRAMES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#EDITING-KEYFRAMES">EDITING KEYFRAMES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#AUTOMATIC-KEYFRAMES">AUTOMATIC KEYFRAMES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
-
-</div>
-
-<h3 class="section">13.7 COMPOSITOR KEYFRAMES</h3>
-
-<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
-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
-boxes.  The joining line is the motion path.  If you create more
-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
-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
-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
-because, halfway between two keyframes the projector translation is
-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
-with control points.  <b>Ctrl-drag</b> to set either the in or out
-control point of the preceeding keyframe.  Once again, we depart from
-The Gimp because <b>shift</b> is already used for zoom.  After the in
-or out control points are extrapolated from the keyframe,
-<b>Ctrl-dragging</b> anywhere in the video adjusts the nearest control
-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
-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
-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">
-<a name="EDITING-KEYFRAMES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#KEYFRAME-SPANNING">KEYFRAME SPANNING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#COMPOSITOR-KEYFRAMES">COMPOSITOR KEYFRAMES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
-
-</div>
-
-<h3 class="section">13.8 EDITING KEYFRAMES</h3>
-
-<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 <b>view</b> menu are affected by keyframe
-editing operations, however.
-
-   <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.png" alt="recordpatch.png"> patch
-by <b>shift-clicking</b> on it.  Then either set in/out points or
-highlight the desired region of keyframes.  Go to <b>keyframes-&gt;copy
-keyframes</b> to copy them to the clipboard.  Solo the destination track's
-record <img src="recordpatch.png" alt="recordpatch.png"> patch by <b>shift-clicking</b> on it and
-go to <b>keyframes-&gt;paste keyframes</b> to paste the clipboard.
-
-   <p>The media editing commands are mapped to the keyframe editing commands
-by using the <b>shift</b> key instead of just the keyboard shortcut.
-
-   <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
-always exists.  What if the default keyframe is a good value which you
-want to transpose between other non-default keyframes?  The
-<b>keyframes-&gt;copy default keyframe</b> and <b>keyframes-&gt;paste
-default keyframe</b> allow conversion of the default keyframe to a
-non-default keyframe.
-
-   <p><b>Keyframes-&gt;copy default keyframe</b> copies the default keyframe to
-the clipboard, no matter what region of the timeline is selected.  The
-<b>keyframes-&gt;paste keyframes</b> 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
-default keyframe by calling <b>keyframes-&gt;paste default keyframe</b>. 
-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
-selecting a region and calling <b>keyframes-&gt;clear keyframes</b>. 
-Merely click-drag a keyframe before its preceeding keyframe or after
-its following keyframe on the track.
-
-<div class="node">
-<a name="KEYFRAME-SPANNING"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#EDITING-KEYFRAMES">EDITING KEYFRAMES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
-
-</div>
-
-<h3 class="section">13.9 KEYFRAME SPANNING</h3>
-
-<p>To change a single parameter in multiple keyframes without changing the
-other parameters, highlight a region on the timeline and adjust the
-parameter.  Instead of a new keyframe being created, the existing
-keyframes are modified and only the changed parameter is modified.
-
-   <p>It doesn't matter if <img src="autokeyframe.png" alt="autokeyframe.png"> auto keyframe is enabled.  It
-only works when the keyframe stores multiple parameters.  Only mask and
-effect keyframes do this.  Other types of keyframes are generated as usual.
-
-<div class="node">
-<a name="CAPTURING-MEDIA"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#KEYFRAMES">KEYFRAMES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">14 CAPTURING MEDIA</h2>
-
-<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
-<b>Settings-&gt;preferences</b> 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 <b>File-&gt;record</b> 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
-depending on if the file has audio or video, the discrete sections are
-always the same.
-
-     <ul>
-<li>
-The output format area describes the format of the output file and the
-current position within it.
-
-     <li>
-The edit batch area lets you change parameters in the current batch.
-
-     <li>
-The transport controls start and stop recording different ways.
-
-     <li>
-The batch list displays all the defined batches.
-
-     <li>
-The confirmation area lets you determine how the output files are
-imported into the timeline and quit.
-
-   </ul>
-
-   <div class="block-image"><img src="recording.png" alt="recording.png"></div>
-   <pre class="sp">
-
-
-</pre>
-<b>Recording window areas</b>
-
-   <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
-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
-<b>Insertion Strategy</b> menu and hit <b>close</b>.
-
-<ul class="menu">
-<li><a accesskey="1" href="#BATCHES">BATCHES</a>
-<li><a accesskey="2" href="#EDITING-TUNER-INFORMATION">EDITING TUNER INFORMATION</a>
-</ul>
-
-<div class="node">
-<a name="BATCHES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#EDITING-TUNER-INFORMATION">EDITING TUNER INFORMATION</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CAPTURING-MEDIA">CAPTURING MEDIA</a>
-
-</div>
-
-<h3 class="section">14.1 BATCHES</h3>
-
-<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. 
-Because of the high cost of developing frame-accurate deck control
-mechanisms, the only use of batches now is recording different programs
-during different times of day.  This is still useful for recording TV
-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:
-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 <b>start</b> button is pressed.  In
-batch recording, the <b>start time</b> is the time the batch starts
-recording.
-
-   <p>First, you'll want to create some batches.  Each batch has certain
-parameters and methods of adjustment.
-
-     <ul>
-<li>
-<b>On</b> determines whether the batch is included in batch recording
-operations.  Click the list row under <b>On</b> to enable or disable
-batches.
-
-     <li>
-<b>Path</b> 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 <b>edit batch</b> area.
-
-     <li>
-<b>News</b> 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
-file exists at this point it's erased.  News says <b>File exists</b> if
-it exists and <b>OK</b> if it doesn't.  Every time you resume recording
-in the same batch, the news should say <b>Open</b>, 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
-closed.  Next time you change into the batch, the file will be erased.
-
-     <li>
-<b>Start time</b> 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>
-<b>Duration</b> is the length of the batch.  It only has meaning if the
-<b>Mode</b> of the batch is <b>Timed</b>.  Once the recording length
-reaches <b>duration</b> the recording stops, whether in interactive or
-batch mode.
-
-     <li>
-<b>Source</b> 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>
-
-   <p>The record window has a notion of the <b>current batch</b>.  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
-highlighting it, without changing the batch to be recorded.
-
-   <p>All recording operations take place in the current batch.   If there
-are multiple batches, highlight the desired batch and hit
-<b>activate</b> to make it the current batch.  If the <b>start</b>
-button is pressed, the current batch flashes to indicate it's waiting
-for the start time in batch mode.  If the <b>record</b> button is
-pressed, the current batch is recorded immediately in interactive mode.
-
-   <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
-stop button.
-
-   <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">
-<a name="EDITING-TUNER-INFORMATION"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#BATCHES">BATCHES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#CAPTURING-MEDIA">CAPTURING MEDIA</a>
-
-</div>
-
-<h3 class="section">14.2 EDITING TUNER INFORMATION</h3>
-
-<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 and Buz recording
-drivers, tuner channels define the source.  When the Buz driver is also
-used for playback, tuner channels define the destination.
-
-   <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 <b>add</b> 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
-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 <b>move
-up</b> or <b>move down</b> to move it.
-
-   <p>Once channels are defined, the <b>source</b> 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.
-
-   <p>For some drivers an option to <b>swap fields</b> may be visible.  These
-drivers don't get the field order right every time without human
-intervention.  Toggle this to get the odd and even lines to record in
-the right order.
-
-<div class="node">
-<a name="IMPROVING-PERFORMANCE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TROUBLESHOOTING">TROUBLESHOOTING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#CAPTURING-MEDIA">CAPTURING MEDIA</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">15 IMPROVING PERFORMANCE</h2>
-
-<p>Let's get one thing perfectly clear.  Linux is not a very good
-desktop.  It's a server.  Most of what you'll find on modern Linux
-distributions are faceless, network-only programs strategicly designed
-to counteract one Microsoft server feature or another and not to
-perform very well at user interaction.  There are a number of
-parameters on Linux, which ordinary people can adjust to make it behave
-more like a thoroughbred in desktop usage.
-
-<ul class="menu">
-<li><a accesskey="1" href="#DISABLING-SWAP-SPACE">DISABLING SWAP SPACE</a>
-<li><a accesskey="2" href="#ENLARGING-SOUND-BUFFERS">ENLARGING SOUND BUFFERS</a>
-<li><a accesskey="3" href="#FREEING-MORE-SHARED-MEMORY">FREEING MORE SHARED MEMORY</a>
-<li><a accesskey="4" href="#SPEEDING-UP-THE-HARD-DRIVE">SPEEDING UP THE HARD DRIVE</a>
-<li><a accesskey="5" href="#DISABLING-CRON">DISABLING CRON</a>
-<li><a accesskey="6" href="#REDUCING-USB-MOUSE-SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>
-<li><a accesskey="7" href="#ASSORTED-X-TWEEKS">ASSORTED X TWEEKS</a>
-<li><a accesskey="8" href="#SPEEDING-UP-THE-FILE-SYSTEM">SPEEDING UP THE FILE SYSTEM</a>
-<li><a accesskey="9" href="#IMPROVING-ZORAN-VIDEO">IMPROVING ZORAN VIDEO</a>
-</ul>
-
-<div class="node">
-<a name="DISABLING-SWAP-SPACE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#ENLARGING-SOUND-BUFFERS">ENLARGING SOUND BUFFERS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>
-
-</div>
-
-<h3 class="section">15.1 DISABLING SWAP SPACE</h3>
-
-<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
-space in any case.  There's a reason for this.  Linux only allows half
-the available memory to be used.  Beyond that, it starts searching for
-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. 
-Theoretically it should be a matter of running
-
-<pre class="example">     swapoff -a
-</pre>
-   <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
-
-<pre class="example">          /*
-        * Kswapd main loop.
-        */
-</pre>
-   <p>Then recompile the kernel.
-
-<div class="node">
-<a name="ENLARGING-SOUND-BUFFERS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#FREEING-MORE-SHARED-MEMORY">FREEING MORE SHARED MEMORY</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DISABLING-SWAP-SPACE">DISABLING SWAP SPACE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>
-
-</div>
-
-<h3 class="section">15.2 ENLARGING SOUND BUFFERS</h3>
-
-<p>In order to improve realtime performance, the audio buffers for all the
-Linux sound drivers were limited from 128k 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>To see if your sound buffers are suitable, run the included
-<b>soundtest</b> program with nothing playing or recording.  This
-allocates the largest possible buffers and displays them.  If the
-<b>TOTAL BYTES AVAILABLE</b> is under 131072, you need to see about
-getting the buffers enlarged in the driver.  While many drivers differ,
-we have a hack for at least one 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
-
-<pre class="example">     if (bufsize &gt;= 0x10000)
-</pre>
-   <p>change it to say
-
-<pre class="example">     if (bufsize &gt; 0x40000)
-</pre>
-   <p>Where is says
-
-<pre class="example">                  for (i = 0; i &lt; 8; i++)
-                       for (j = 0; j &lt; 4; j++)
-</pre>
-   <p>change it to say
-
-<pre class="example">                  for (i = 0; i &lt; 16; i++)
-                       for (j = 0; j &lt; 4; j++)
-</pre>
-   <p>In <b>linux/drivers/sound/emu10k1/hwaccess.h</b>
-
-   <p>Change
-
-   <p><b>#define MAXBUFSIZE    65536</b>
-
-   <p>to
-
-   <p><b>#define MAXBUFSIZE    262144</b>
-
-   <p>Finally, in <b>linux/drivers/sound/emu10k1/cardwi.h</b>
-
-   <p><b>#define WAVEIN_MAXBUFSIZE         65536</b>
-
-   <p>to
-
-   <p><b>#define WAVEIN_MAXBUFSIZE         262144</b>
-
-   <p>Then recompile the kernel modules.
-
-<div class="node">
-<a name="FREEING-MORE-SHARED-MEMORY"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SPEEDING-UP-THE-HARD-DRIVE">SPEEDING UP THE HARD DRIVE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#ENLARGING-SOUND-BUFFERS">ENLARGING SOUND BUFFERS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>
-
-</div>
-
-<h3 class="section">15.3 FREEING MORE SHARED MEMORY</h3>
-
-<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>
-
-<div class="node">
-<a name="SPEEDING-UP-THE-HARD-DRIVE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#DISABLING-CRON">DISABLING CRON</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#FREEING-MORE-SHARED-MEMORY">FREEING MORE SHARED MEMORY</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>
-
-</div>
-
-<h3 class="section">15.4 SPEEDING UP THE HARD DRIVE</h3>
-
-<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>-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
-data transfers.
-
-   <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
-glitch.
-
-<div class="node">
-<a name="DISABLING-CRON"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#REDUCING-USB-MOUSE-SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SPEEDING-UP-THE-HARD-DRIVE">SPEEDING UP THE HARD DRIVE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>
-
-</div>
-
-<h3 class="section">15.5 DISABLING CRON</h3>
-
-<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>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
-anyways?
-
-<div class="node">
-<a name="REDUCING-USB-MOUSE-SENSITIVITY"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#ASSORTED-X-TWEEKS">ASSORTED X TWEEKS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DISABLING-CRON">DISABLING CRON</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>
-
-</div>
-
-<h3 class="section">15.6 REDUCING USB MOUSE SENSITIVITY</h3>
-
-<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 but it requires editing
-the kernel source code.  Even though USB mice have been supported for
-years, the kernel source code for USB mice is constantly being
-rewritten.  These instructions were relevant for 2.6.12.3.  Edit
-<b>/usr/src/linux/drivers/input/mousedev.c</b>.
-
-   <p>After the line saying
-
-<pre class="example">     struct mousedev_hw_data {
-</pre>
-   <p>put
-
-<pre class="example">     #define DOWNSAMPLE_N 100
-     #define DOWNSAMPLE_D 350
-     int x_accum, y_accum;
-</pre>
-   <p>Next, the section which says something like:
-
-<pre class="example">     switch (code) {
-       case REL_X:     mousedev-&gt;packet.dx += value; break;
-       case REL_Y:     mousedev-&gt;packet.dy -= value; break;
-       case REL_WHEEL: mousedev-&gt;packet.dz -= value; break;
-     }
-</pre>
-   <p>must be replaced by
-
-<pre class="example">     
-       switch (code) {
-                       case REL_X:
-                               mousedev-&gt;packet.x_accum += value * DOWNSAMPLE_N;
-                               mousedev-&gt;packet.dx += (int)mousedev-&gt;packet.x_accum / (int)DOWNSAMPLE_D;
-                               mousedev-&gt;packet.x_accum -= ((int)mousedev-&gt;packet.x_accum / (int)DOWNSAMPLE_D) * (int)DOWNSAMPLE_D;
-                               break;
-                       case REL_Y:
-                               mousedev-&gt;packet.y_accum += value * DOWNSAMPLE_N;
-                               mousedev-&gt;packet.dy -= (int)mousedev-&gt;packet.y_accum / (int)DOWNSAMPLE_D;
-                               mousedev-&gt;packet.y_accum -= ((int)mousedev-&gt;packet.y_accum / (int)DOWNSAMPLE_D) * (int)DOWNSAMPLE_D;
-                               break;
-                       case REL_WHEEL: mousedev-&gt;packet.dz -= value; break;
-       }
-     
-     
-     
-</pre>
-   <p>Change the value of <b>DOWNSAMPLE_N</b> to change the mouse sensitivity.
-
-<div class="node">
-<a name="ASSORTED-X-TWEEKS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SPEEDING-UP-THE-FILE-SYSTEM">SPEEDING UP THE FILE SYSTEM</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#REDUCING-USB-MOUSE-SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>
-
-</div>
-
-<h3 class="section">15.7 ASSORTED X TWEEKS</h3>
-
-<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><b>Option "XaaNoOffscreenPixmaps"</b>
-
-   <p>and restart the X server.
-
-   <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
-
-<pre class="example">     xset s off
-     xset s noblank
-</pre>
-   <p>before the first <b>if</b> statement.
-
-   <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.
-
-<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
-for ALT are complex.  In <b>FVWM</b> at least, you can edit
-<b>/etc/X11/fvwm/system.fvwm2rc</b> and put
-
-<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
-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">
-<a name="SPEEDING-UP-THE-FILE-SYSTEM"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#IMPROVING-ZORAN-VIDEO">IMPROVING ZORAN VIDEO</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#ASSORTED-X-TWEEKS">ASSORTED X TWEEKS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>
-
-</div>
-
-<h3 class="section">15.8 SPEEDING UP THE FILE SYSTEM</h3>
-
-<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
-
-<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
-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
-
-<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
-power failures.
-
-<div class="node">
-<a name="IMPROVING-ZORAN-VIDEO"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SPEEDING-UP-THE-FILE-SYSTEM">SPEEDING UP THE FILE SYSTEM</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>
-
-</div>
-
-<h3 class="section">15.9 IMPROVING ZORAN VIDEO</h3>
-
-<p>Video recorded from the ZORAN inputs is normally unaligned or not
-completely encoded on the right.  This can be slightly compensated by
-adjusting parameters in the driver sourcecode.
-
-   <p>In <b>/usr/src/linux/drivers/media/video/zr36067.c</b> the structures
-defined near line 623 affect alignment.  At least for NTSC, the 2.4.20
-version of the driver could be improved by changing
-
-<pre class="example">     static struct tvnorm f60ccir601 = { 858, 720, 57, 788, 525, 480, 16 };
-</pre>
-   <p>to
-
-<pre class="example">     static struct tvnorm f60ccir601 = { 858, 720, 57, 788, 525, 480, 17 };
-</pre>
-   <p>In <b>/usr/src/linux/drivers/media/video/bt819.c</b> more structures near
-line 76 affect alignment and encoding.
-
-   <p>For NTSC
-
-<pre class="example">     {858 - 24, 2, 523, 1, 0x00f8, 0x0000},
-</pre>
-   <p>could be changed to
-<pre class="example">     {868 - 24, 2, 523, 1, 0x00f8, 0x0000},
-</pre>
-   <p>Adjusting these parameters may or may not move your picture closer to
-the center.  More of the time, they'll cause the driver to lock up
-before capturing the first frame.
-
-<h4 class="subsection">15.9.1 NEW IN 2.6.5</h4>
-
-<p>In the 2.6 kernels, the video subsystem was rewritten again from
-scratch.  To adjust the Zoran parameters go to
-<b>drivers/media/video/zoran_card.c</b> and look for a group of lines like
-
-<pre class="example">     static struct tvnorm f50sqpixel = { 944, 768, 83, 880, 625, 576, 16 };
-     static struct tvnorm f60sqpixel = { 780, 640, 51, 716, 525, 480, 12 };
-     static struct tvnorm f50ccir601 = { 864, 720, 75, 804, 625, 576, 18 };
-     static struct tvnorm f60ccir601 = { 858, 720, 57, 788, 525, 480, 16 };
-     
-     static struct tvnorm f50ccir601_lml33 = { 864, 720, 75+34, 804, 625, 576, 18 };
-     static struct tvnorm f60ccir601_lml33 = { 858, 720, 57+34, 788, 525, 480, 16 };
-     
-     /* The DC10 (57/16/50) uses VActive as HSync, so HStart must be 0 */
-     static struct tvnorm f50sqpixel_dc10 = { 944, 768, 0, 880, 625, 576, 0 };
-     static struct tvnorm f60sqpixel_dc10 = { 780, 640, 0, 716, 525, 480, 12 };
-     
-     /* FIXME: I cannot swap U and V in saa7114, so i do one
-      * pixel left shift in zoran (75 -&gt; 74)
-      * (Maxim Yevtyushkin &lt;max@linuxmedialabs.com&gt;) */
-     static struct tvnorm f50ccir601_lm33r10 = { 864, 720, 74+54, 804, 625, 576, 18 };
-     static struct tvnorm f60ccir601_lm33r10 = { 858, 720, 56+54, 788, 525, 480, 16 };
-</pre>
-   <p>These seem to control the image position.  At least for the LML33 the
-following definition for <b>f60ccir601_lml33</b> does the trick.
-
-<pre class="example">     static struct tvnorm f60ccir601_lml33 = { 858, 720, 67+34, 788, 525, 480, 13 };
-</pre>
-   <div class="node">
-<a name="TROUBLESHOOTING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">16 TROUBLESHOOTING</h2>
-
-<ul class="menu">
-<li><a accesskey="1" href="#BUZ-DRIVER-CRASHES">BUZ DRIVER CRASHES</a>
-<li><a accesskey="2" href="#DRAGGING-IN-AND-OUT-POINTS-DOESN_0027T-WORK">DRAGGING IN AND OUT POINTS DOESN'T WORK</a>
-<li><a accesskey="3" href="#LOCKING-UP-WHEN-LOADING-FILES">LOCKING UP WHEN LOADING FILES</a>
-<li><a accesskey="4" href="#SYNCHRONIZATION-LOST-WHILE-RECORDING">SYNCHRONIZATION LOST WHILE RECORDING</a>
-<li><a accesskey="5" href="#APPLYING-LINEARIZE-FOLLOWED-BY-BLUR-DOESN_0027T-WORK">APPLYING LINEARIZE FOLLOWED BY BLUR DOESN'T WORK</a>
-</ul>
-
-<div class="node">
-<a name="BUZ-DRIVER-CRASHES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#DRAGGING-IN-AND-OUT-POINTS-DOESN_0027T-WORK">DRAGGING IN AND OUT POINTS DOESN'T WORK</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#TROUBLESHOOTING">TROUBLESHOOTING</a>
-
-</div>
-
-<h3 class="section">16.1 BUZ DRIVER CRASHES</h3>
-
-<p>First, Zoran capture boards must be accessed using the <b>Buz</b> video
-driver in <b>Preferences-&gt;Recording</b> and <b>Preferences-&gt;Playback</b>. 
-Some performance tweeks are available in another section. 
-See <a href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>.
-
-   <p>Once tweeked, the Buz driver seems to crash if the number of recording
-buffers is too high.  Make sure <b>Preferences-&gt;Recording-&gt;Frames to
-buffer in device</b> is below 10.
-
-<div class="node">
-<a name="DRAGGING-IN-AND-OUT-POINTS-DOESN'T-WORK"></a>
-<a name="DRAGGING-IN-AND-OUT-POINTS-DOESN_0027T-WORK"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#LOCKING-UP-WHEN-LOADING-FILES">LOCKING UP WHEN LOADING FILES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#BUZ-DRIVER-CRASHES">BUZ DRIVER CRASHES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#TROUBLESHOOTING">TROUBLESHOOTING</a>
-
-</div>
-
-<h3 class="section">16.2 DRAGGING IN AND OUT POINTS DOESN'T WORK</h3>
-
-<p>Sometimes there will be two edits really close together.  The point
-selected for dragging may be next to the indended edit on an edit too
-small to see at the current zoom level.  Zoom in horizontally.
-
-<div class="node">
-<a name="LOCKING-UP-WHEN-LOADING-FILES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SYNCHRONIZATION-LOST-WHILE-RECORDING">SYNCHRONIZATION LOST WHILE RECORDING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DRAGGING-IN-AND-OUT-POINTS-DOESN_0027T-WORK">DRAGGING IN AND OUT POINTS DOESN'T WORK</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#TROUBLESHOOTING">TROUBLESHOOTING</a>
-
-</div>
-
-<h3 class="section">16.3 LOCKING UP WHEN LOADING FILES</h3>
-
-<p>The most common reason loading files locks up is because the codec
-isn't supported.  Another reason is because Cinelerra is building
-picons for the Resources window.  If you load a large number of images,
-it needs to decompress every single image to build a picon.  Go into
-settings-&gt;preferences-&gt;interface and disable <b>Use thumbnails in
-resource window</b> to skip this process.
-
-<div class="node">
-<a name="SYNCHRONIZATION-LOST-WHILE-RECORDING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#APPLYING-LINEARIZE-FOLLOWED-BY-BLUR-DOESN_0027T-WORK">APPLYING LINEARIZE FOLLOWED BY BLUR DOESN'T WORK</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#LOCKING-UP-WHEN-LOADING-FILES">LOCKING UP WHEN LOADING FILES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#TROUBLESHOOTING">TROUBLESHOOTING</a>
-
-</div>
-
-<h3 class="section">16.4 SYNCHRONIZATION LOST WHILE RECORDING</h3>
-
-<p>If the framerate of the recording is much lower than the framerate of
-the source, the video will accumulate in the recording buffers over
-time while the audio and video are well out of sync.  Decrease the
-<b>number of frames to buffer in the device</b> in
-<b>preferences-&gt;recording</b> so the excess frames are dropped instead of
-buffered.
-
-<div class="node">
-<a name="APPLYING-LINEARIZE-FOLLOWED-BY-BLUR-DOESN'T-WORK"></a>
-<a name="APPLYING-LINEARIZE-FOLLOWED-BY-BLUR-DOESN_0027T-WORK"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SYNCHRONIZATION-LOST-WHILE-RECORDING">SYNCHRONIZATION LOST WHILE RECORDING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#TROUBLESHOOTING">TROUBLESHOOTING</a>
-
-</div>
-
-<h3 class="section">16.5 APPLYING LINEARIZE FOLLOWED BY BLUR DOESN'T WORK</h3>
-
-<p>The linearize effect uses the pow function while the blur effect uses a
-number of exp functions in the math library.  For some reason, using
-the pow function breaks later calls to the exp functions in the math
-library.  You need to apply linearize after blur to get it to work.
-
-<div class="node">
-<a name="SECRETS-OF-CINELERRA"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#TROUBLESHOOTING">TROUBLESHOOTING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">17 SECRETS OF CINELERRA</h2>
-
-<p>In this section, you'll find ways to apply Cinelerra to common
-problems.  Other sections are arranged in order of the tools and what
-the tools are used for.  This section is arranged in order of the
-problems and what tools are used to solve the problems.
-
-<ul class="menu">
-<li><a accesskey="1" href="#DOLBY-PRO-LOGIC-ENCODING">DOLBY PRO LOGIC ENCODING</a>
-<li><a accesskey="2" href="#ANALOG-TV-CLEANING">ANALOG TV CLEANING</a>
-<li><a accesskey="3" href="#DEFEATING-INTERLACING">DEFEATING INTERLACING</a>
-<li><a accesskey="4" href="#MAKING-VIDEO-LOOK-LIKE-FILM">MAKING VIDEO LOOK LIKE FILM</a>
-<li><a accesskey="5" href="#CLEARING-OUT-HAZE">CLEARING OUT HAZE</a>
-<li><a accesskey="6" href="#MAKING-A-DVD">MAKING A DVD</a>
-<li><a accesskey="7" href="#MAKING-A-RINGTONE">MAKING A RINGTONE</a>
-<li><a accesskey="8" href="#TIME-STRETCHING-AUDIO">TIME STRETCHING AUDIO</a>
-<li><a accesskey="9" href="#PITCH-SHIFTING-AUDIO">PITCH SHIFTING AUDIO</a>
-<li><a href="#TEXT-TO-MOVIE">TEXT TO MOVIE</a>
-</ul>
-
-<div class="node">
-<a name="DOLBY-PRO-LOGIC-ENCODING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#ANALOG-TV-CLEANING">ANALOG TV CLEANING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>
-
-</div>
-
-<h3 class="section">17.1 DOLBY PRO LOGIC ENCODING</h3>
-
-<p>Dolby pro logic is an easy way to output 6 channel audio from a 2
-channel soundcard with degraded but useful results.  Rudimentary Dolby
-pro logic encoding can be achieved with clever usage of the effects.
-
-   <p>Create 2 audio tracks with the same audio.  Apply <b>invert audio</b> to
-one track.  The signal comes out of the back speakers.
-
-   <p>Create a single audio track with monaural audio of a different source. 
-Center it in the <b>pan</b> control.  The signal comes out of the center
-speaker.
-
-   <p>Create other tracks with different signals and pan them left or right
-to put signals in the front left or right speaker.
-
-   <p>Finally, if a copy of the signal in the back speakers is desired in any
-single front speaker, the signal in the back speakers must be delayed
-by at least 0.05 seconds and a single new track should be created.  Pan
-the new track to orient the signal in the front speakers.
-
-   <p>If the same signal is desired in all the speakers except the center
-speaker, delay the back speakers by 0.5 seconds and delay either the
-front left or front right by 0.2 seconds.
-
-   <p>If you want to hear something from the subwoofer, create a new track,
-select a range, drop a synthesizer effect, and set the frequency below
-60 Hz.  The subwoofer merely plays anything below around 60Hz.
-
-   <p>Other tricks you can perform to separate the speakers are parametric
-equalization to play only selected ranges of frequencies through
-different speakers and lowpass filtering to play signals through the
-subwoofer.
-
-<div class="node">
-<a name="ANALOG-TV-CLEANING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#DEFEATING-INTERLACING">DEFEATING INTERLACING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DOLBY-PRO-LOGIC-ENCODING">DOLBY PRO LOGIC ENCODING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>
-
-</div>
-
-<h3 class="section">17.2 ANALOG TV CLEANING</h3>
-
-<p>Unless you live in a rich nation like China or are a terrorist, you
-probably record analog TV more than you record digital TV.  The picture
-quality on analog TV is horrible but you can do things in Cinelerra to
-make it look more like it did in the studio.
-
-   <p>First, when capturing the video, capture it in the highest resolution
-possible.  For Europeans it's 720x576 and for Americans it's 720x480. 
-Don't bother adjusting the brightness or contrast in the recording
-monitor, although maxing out the color is useful.  Capture it using
-MJPEG or uncompressed Component Video if possible.  If those are too
-demanding, then capture it using JPEG.  RGB should be a last resort.
-
-   <p>Now on the timeline use <b>Settings-&gt;Format</b> to set a YUV colorspace. 
-Drop a <b>Downsample</b> effect on the footage.  Set it for
-
-<pre class="example">     Horizontal:        2
-     Horizontal offset: 0
-     Vertical:          2
-     Vertical offset:   0
-     
-           red
-       x   green
-       x   blue
-           alpha
-</pre>
-   <p>Use the camera tool to shift the picture up or down a line to remove
-the most color interference from the image.  This is the difference
-we're looking for:
-
-   <pre class="sp">
-
-</pre>
-
-<img src="cleaning1.png" alt="cleaning1.png">
-
-   <p>If you have vertical blanking information or crawls which constantly
-change in each frame, block them out with the <b>Mask</b> tool.  This
-improves compression ratios.
-
-   <p>This is about all you can do without destroying more data than you
-would naturally lose in compression.  The more invasive cleaning
-techniques involve deinterlacing.
-
-<div class="node">
-<a name="DEFEATING-INTERLACING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MAKING-VIDEO-LOOK-LIKE-FILM">MAKING VIDEO LOOK LIKE FILM</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#ANALOG-TV-CLEANING">ANALOG TV CLEANING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>
-
-</div>
-
-<h3 class="section">17.3 DEFEATING INTERLACING</h3>
-
-<p>Interlacing is done on most video sources because it costs too much to
-build progressive scanning cameras and progressive scanning CRT's. 
-Many a consumer has been dissapointed to spend 5 paychecks on a
-camcorder and discover what horrible jagged images it produces on a
-computer monitor.
-
-   <p>As for progressive scanning camcorders, forget it.  Cost factors are
-probably going to keep progressive scanning cameras from ever equalling
-the spatial resolution of interlaced cameras.  Interlacing is here to
-stay.  That's why they made deinterlacing effects in Cinelerra.
-
-   <p>We don't believe there has ever been a perfect deinterlacing effect. 
-They're either irreversible or don't work.  Cinelerra cuts down the
-middle by providing deinterlacing tools that are irreversible sometimes
-and don't work sometimes but are neither one or the other.
-
-   <p><b>Line Doubling</b>
-
-   <p>This one is done by the <b>Deinterlace</b> effect when set to <b>Odd
-lines</b> or <b>Even lines</b>.  When applied to a track it reduces the
-vertical resolution by 1/2 and gives you progressive frames with
-stairstepping.  This is only useful when followed by a scale effect
-which reduces the image to half its size.
-
-   <p><b>Line averaging</b>
-
-   <p>The <b>Deinterlace</b> effect when set to <b>Average even lines</b> or
-<b>Average odd lines</b> does exactly what line doubling does except
-instead of making straight copies of the lines it makes averages of the
-lines.  This is actually useful for all scaling.
-
-   <p>There's an option for adaptive line averaging which selects which lines
-to line average and which lines to leave interlaced based on the
-difference between the lines.  It doesn't work.
-
-   <p><b>Inverse Telecine</b>
-
-   <p>This is the most effective deinterlacing tool when the footage is an
-NTSC TV broadcast of a film.  See <a href="#INVERSE-TELECINE">INVERSE TELECINE</a>.
-
-   <p><b>Time base correction</b>
-
-   <p>The first three tools either destroy footage irreversibly or don't work
-sometimes.  <b>Time base correction</b> is last because it's the perfect
-deinterlacing tool.  It leaves the footage intact.  It doesn't reduce
-resolution, perceptually at least.  It doesn't cause jittery timing.
-
-   <p>The <b>Frames to Fields</b> effect converts each frame to two frames, so
-it must be used on a timeline whose project frame rate is twice the
-footage's frame rate.  In the first frame it puts a line averaged copy
-of the even lines.  In the second frame it puts a line averaged copy of
-the odd lines.  When played back at full framerates it gives the
-illusion of progressive video with no loss of detail.
-
-   <p>Best of all, this effect can be reversed with the <b>Fields to frames</b>
-effect.  That one combines two frames of footage back into the one
-original interlaced frame of half the framerate.
-
-   <p>Be aware that frames to fields inputs frames at half the framerate as
-the project.  Effects before frames to fields process at the reduced
-framerate.
-
-   <p>Unfortunately, the output of <b>Frames to Fields</b> can't be compressed
-as efficiently as the original because it introduces vertical twitter
-and a super high framerate.
-
-   <p>Interlaced 29.97fps footage can be made to look like film by applying
-<b>Frames to Fields</b> and then reducing the project frame rate of the
-resulting 59.94fps footage to 23.97fps.  This produces no timing jitter
-and the occasional odd field gives the illusion of more detail than
-there would be if you just line averaged the original.
-
-   <p><b>HDTV exceptions</b>
-
-   <p>1920x1080 HDTV is encoded a special way.  If it's a broadcast of
-original HDTV film, an inverse telecine works fine.  If it's a
-rebroadcast of a 720x480 source, you need to use a time base and line
-doubling algorithm to deinterlace it, See <a href="#g_t1080-TO-480">1080 TO 480</a>.
-
-<div class="node">
-<a name="MAKING-VIDEO-LOOK-LIKE-FILM"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#CLEARING-OUT-HAZE">CLEARING OUT HAZE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DEFEATING-INTERLACING">DEFEATING INTERLACING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>
-
-</div>
-
-<h3 class="section">17.4 MAKING VIDEO LOOK LIKE FILM</h3>
-
-<p>Video sweetening is constantly getting better.  Lately the best thing
-you can do for dirt cheap consumer camcorder video is to turn it into
-progressive 24fps output.  While you can't really do that, you can get
-pretty close for the money.  Mind you, this procedure can degrade high
-quality video just as easily as it improves low quality video.  It
-should only be used for low quality video.
-
-     <ul>
-<li>
-Step 1 - Set project framerate to twice the video framerate.
-
-     <li>
-Step 2 - Apply a <b>Sharpen</b> effect.  Set it to sharpness: 25, no
-interlacing, and horizontal only.
-
-     <li>
-Step 3 - Drop a <b>Frame to Fields</b> effect on the same track.  Set
-Average Empty Rows on and play through the video a few times to figure
-out which field is first.  If the wrong field is first, the motion is
-shaky.  Secondly, any editing in the doubled frame rate may now screw
-up the field order.  We're still figuring out the easiest way to
-support warnings for field glitches but for now you need to go back to
-the normal framerate to do editing or play test to make sure the fields
-are right.
-
-     <li>
-Step 4 - Render just the video to the highest quality file possible.
-
-     <li>
-Step 5 - Import the video back to a new track.  Set the project
-framerate to 24.  The new track should now display more filmish and
-sharper images than the original footage.
-
-   </ul>
-
-   <p>This entire procedure could be implemented in one nonrealtime effect,
-but the biggest problem with that is you'll most often want to keep the
-field based output and the 24fps output for posterity.  A nonrealtime
-effect would require all that processing just for the 24fps copy. 
-Still debating that one.
-
-<div class="node">
-<a name="CLEARING-OUT-HAZE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MAKING-A-DVD">MAKING A DVD</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MAKING-VIDEO-LOOK-LIKE-FILM">MAKING VIDEO LOOK LIKE FILM</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>
-
-</div>
-
-<h3 class="section">17.5 CLEARING OUT HAZE</h3>
-
-<p>Let's face it, if you're employed you live in Silicon Valley.  As such
-you probably photograph a lot of haze and never see blue sky ever. 
-Even if you can afford to briefly go somewhere where there is blue sky,
-horizon shots usually can stand for more depth.  This is what the
-<b>gradient effect</b> is for.
-
-   <p>Drop the gradient effect on hazy tracks.  Set the following parameters:
-
-<pre class="example">     Angle: 0
-     Inner radius: 0
-     Outer radius: 40
-     Inner color: blue 100% alpha
-     Outer color: blue 0% alpha
-</pre>
-   <p>It's important to set the 0% alpha color to blue even though it's 0%
-alpha.  The color of the outer alpha is still interpolated with the
-inner color.  This is a generally applicable setting for the gradient. 
-Some scenes may work better with orange or brown for an evening feel.
-
-<div class="node">
-<a name="MAKING-A-DVD"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MAKING-A-RINGTONE">MAKING A RINGTONE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#CLEARING-OUT-HAZE">CLEARING OUT HAZE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>
-
-</div>
-
-<h3 class="section">17.6 MAKING A DVD</h3>
-
-<p><b>A single chapter DVD</b>
-
-   <p>Make a single chapter DVD by rendering video to an MPEG video file. 
-The video should be 720x480, 29.97fps.  The aspect ratio should be 16x9
-or 4x3.
-
-   <p>Use the YUV 4:2:0 color model and DVD preset.  Set the bitrate to the
-desired bitrate.  It's not clear exactly what other parameters the MPEG
-encoder uses in the DVD preset but we've enabled the following:
-
-<pre class="example">     Derivative: MPEG-2
-     Fixed bitrate
-     I frame distance: 15
-     P frame distance: 0
-     Sequence start codes in every GOP
-</pre>
-   <p>Render the audio to an AC3 audio file.  Any bitrate can be used.
-
-   <p><b>Dvdrtools</b> must be downloaded to generate the actual DVD
-filesystem.  The actual usage of dvdrtools changes frequently but
-currently it involves the mkisofs and ifogen programs.  Mkisofs is
-built automatically in dvdrtools but ifogen may have to be built
-manually by entering the <b>video</b> directory and running <b>make
-ifogen</b>.  Mkisofs and ifogen must be put into /usr/bin manually.
-
-   <p>Also, the <b>mplex</b> program from <b>mjpegtools</b> must be installed.  The
-mjpegtools package is built in the hvirtual distribution and the mplex
-utility may be extracted from there.
-
-   <p>Given the files audio.ac3 and video.m2v, rendered by Cinelerra, the
-following commands pack them into a dvd readable by commercial
-appliances.
-
-<pre class="example">     mplex -M -f 8 -o final.mpg audio.ac3 video.m2v
-     mkdir -p dvd/VIDEO_TS
-     ifogen final.mpg -o dvd
-     ifogen -T -o dvd
-     mkisofs -dvd-video -udf -o dvd.iso dvd/
-</pre>
-   <p>Chapters may be set with the following.  The units are seconds.  Version
-0.3.1 ignores the 1st chapter, so it has to be specified as 0.
-
-<pre class="example">     ifogen -o dvd --chapters=0,0021.788,0047.447,0077.043 final.mpg
-</pre>
-   <p>Replace the chapter times.
-
-   <p>dvd.iso can be burned directly to a DVD with the following:
-
-<pre class="example">     dvdrecord -ignsize -dao -v dev=/dev/hdc fs=67108864 dvd.iso
-</pre>
-   <p>The argument to dev= is the IDE device of the DVD drive.  Burning DVD's
-through SCSI is currently not supported.
-
-<div class="node">
-<a name="MAKING-A-RINGTONE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TIME-STRETCHING-AUDIO">TIME STRETCHING AUDIO</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MAKING-A-DVD">MAKING A DVD</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>
-
-</div>
-
-<h3 class="section">17.7 MAKING A RINGTONE</h3>
-
-<p>This is how we made ringtones for the low end Motorola V180's and it'll
-probably work with any new phone.  Go to <b>File-&gt;Load files...</b> and
-load a sound file with Insertion strategy: <b>Replace current
-project</b>.  Go to <b>Settings-&gt;Format</b> change <b>Channels</b> to 1 and
-<b>Samplerate</b> to 16000 or 22050.
-
-   <p>Either highlight a region of the timeline or set in/out points to use
-for the ringtone.  To improve sound quality on the cell phone, you need
-the maximum amplitude in as many parts of the sound as possible.  Right
-click on track Audio 1 and select <b>Attach effect..</b>.  Highlight the
-<b>Compressor</b> effect and hit <b>Attach</b> in the attachment popup.
-
-   <p>Make sure the insertion point or highlighted area is in the region with
-the Compressor effect. Right click on track Audio 2 and select
-<b>Attach effect..</b>.  Highlight <b>Audio 1: Compressor</b> and hit
-<b>Attach</b>.  Click the Audio1 Compressor's magnifying glass
-<img src="magnify.png" alt="magnify.png"> to bring up the compressor GUI.
-
-   <p>Set the following parameters:
-
-<pre class="example">     Reaction secs: <b>-0.1</b>
-     Decay secs: <b>0.1</b>
-     Trigger Type: <b>Total</b>
-     Trigger: <b>0</b>
-     Smooth only: <b>No</b>
-</pre>
-   <p>Click <b>Clear</b> to clear the graph.  Click anywhere in the
-grid area and drag a new point to 0 Output and -50 Input.  The graph
-should look like this.
-
-   <pre class="sp">
-
-</pre>
-<img src="compress.png" alt="compress.png">
-
-   <p>Go to <b>File-&gt;Render</b>.  Specify the name of an mp3 file to output to. 
-Set the file format to <b>MPEG Audio</b>.  Click the wrench <img src="wrench.png" alt="wrench.png">
-for Audio and set <b>Layer</b> to <b>III</b> and <b>Kbits per second</b> to
-<b>24</b> or <b>32</b>.  Check <b>Render audio tracks</b> and uncheck <b>Render
-video tracks</b>.  Hit OK to render the file.
-
-   <p>The resulting .mp3 file must be uploaded to a web server.  Then, the
-phone's web browser must download the .mp3 file directly from the URL. 
-There also may be a size limit on the file.
-
-<div class="node">
-<a name="TIME-STRETCHING-AUDIO"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#PITCH-SHIFTING-AUDIO">PITCH SHIFTING AUDIO</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MAKING-A-RINGTONE">MAKING A RINGTONE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>
-
-</div>
-
-<h3 class="section">17.8 TIME STRETCHING AUDIO</h3>
-
-<p>It may appear that time stretching audio is a matter of selecting a
-region of the audio tracks, enabling recording for the desired tracks,
-going to <b>Audio-&gt;Render Effect</b>, and applying <b>Time Stretch</b>.  In
-actuality there are 3 audio effects for time stretching: <b>Time
-Stretch</b>, <b>Resample</b>, and <b>Asset info dialog</b>.
-
-   <p>Time Stretch applies a fast fourier transform to try to change the
-duration without changing the pitch, but this introduces windowing
-artifacts to the audio.  It's only useful for large changes in time
-because obvious changes in duration make windowing artifacts less
-obtrusive.
-
-   <p>For smaller changes in duration, in the range of 5%, <b>Resample</b>
-should be used.  This changes the pitch of the audio but small enough
-changes aren't noticable.  Resample doesn't introduce any windowing
-artifacts, so this is most useful for slight duration changes where the
-listener isn't supposed to know what's going on.
-
-   <p>Another way to change duration slightly is to go to the <b>Resources</b>
-window, highlight the <b>media</b> folder, right click on an audio file,
-click on <b>Info</b>.  Adjust the sample rate in the <b>Info</b> dialog to
-adjust the duration.  This method also requires left clicking on the
-right boundary of the audio tracks and dragging left or right to
-correspond to the length changes.
-
-<div class="node">
-<a name="PITCH-SHIFTING-AUDIO"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TEXT-TO-MOVIE">TEXT TO MOVIE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#TIME-STRETCHING-AUDIO">TIME STRETCHING AUDIO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>
-
-</div>
-
-<h3 class="section">17.9 PITCH SHIFTING AUDIO</h3>
-
-<p>Like the time stretching methods, there are three pitch shifting
-methods: <b>Pitch shift</b>, <b>Resample</b>, and <b>Asset info dialog</b>. 
-Pitch shift is a realtime effect which can be dragged and dropped onto
-recordable audio tracks.  Pitch shift uses a fast fourier transform to
-try to change the pitch without changing the duration, but this
-introduces windowing artifacts.
-
-   <p>Because the windowing artifacts are less obtrusive in audio which is
-obvously pitch shifted, Pitch shift is mainly useful for extreme pitch
-changes.  For mild pitch changes, use <b>Resample</b> from the
-<b>Audio-&gt;Render Effect</b> interface.  Resample can change the pitch
-within 5% without a noticable change in duration.
-
-   <p>Another way to change pitch slightly is to go to the <b>Resources</b>
-window, highlight the <b>media</b> folder, right click on an audio file,
-click on <b>Info</b>.  Adjust the sample rate in the <b>Info</b> dialog to
-adjust the pitch.  This method also requires left clicking on the right
-boundary of the audio tracks and dragging left or right to correspond
-to the length changes.
-
-<div class="node">
-<a name="TEXT-TO-MOVIE"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#PITCH-SHIFTING-AUDIO">PITCH SHIFTING AUDIO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>
-
-</div>
-
-<h3 class="section">17.10 TEXT TO MOVIE</h3>
-
-<p>Text to movie was added when another one of those startups whose name
-was an unmemorable combination of farting noises that the venture
-capitalist heard, started charging money for a ridulously simple program
-that converted scripts directly to movies.  It was such a simple
-program, we decided to add most of the functionality to Cinelerra.
-
-   <p>The easiest way to make a movie is to copy <b>tests/text2movie</b> and
-<b>tests/text2movie.xml</b> as a starting point.  Load the
-<b>text2movie.xml</b> file to see the movie.
-
-   <p>The <b>text2movie</b> file acts like a normal asset, except changes to it
-are immediately reflected on the timeline, without reloading.  Also, the
-length is infiinite.  Edit the <b>text2movie</b> file to change the
-script.  If the length of the movie increases, drag the right edit
-handle to extend the edit or use <b>edit-&gt;edit length</b>.
-
-   <p>1 audio channel is created for every character.  The frame rate, sample
-rate, and frame size are fixed.  Get it from the <b>asset window</b>. 
-Right click on the asset and go to <b>Asset info...</b>  Camera angles are
-fixed.
-
-   <p>Since its only use was to show dialog between 2 people, that's the
-functionality we focused on.  The character model and voice is selected
-separately in the script, because that was how it was done with the fee
-service.  The models are defined in model files, in the Cinelerra
-executable directory.  Usually <b>/opt/cinelerra/models</b>.
-
-   <p>There is a search path for models, starting with the directory the
-script is in.  You can define new models for the script, without
-affecting the entire system.  The model files are the exact name that
-appears in the script.  They define the total size of the model and the
-images used in the model.
-
-   <p>The models are 2D png images, because all the animations are baked.  No
-custom movement is currently supported, that would require a 3D
-renderer.
-
-   <p>Some actions are implemented.  Character2 can cut off character1 if
-character1's dialog ends in <b>...</b>
-
-   <p>Inserting <b>[pause]</b> anywhere causes the character to pause.  Useful
-for adjusting the timing of dialog.
-
-   <p>Speech synthesis is pretty lousy.  Punctuation and spelling needs to be
-adjusted based on the sound.  The dialog is rendered on-demand, so there
-is a delay when each character starts to speak.  Split dialog into
-shorter blocks to reduce the delay.
-
-<div class="node">
-<a name="SECRETS-OF-CINELERRA-EFFECTS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">18 SECRETS OF CINELERRA EFFECTS</h2>
-
-<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 class="menu">
-<li><a accesskey="1" href="#g_t1080-TO-480">1080 TO 480</a>:        How to convert HDTV into SD
-<li><a accesskey="2" href="#CHROMA-KEY">CHROMA KEY</a>:         Create transparency based on color similarities. 
-<li><a accesskey="3" href="#COMPRESSOR">COMPRESSOR</a>:         How to reduce the dynamic range of audio. 
-<li><a accesskey="4" href="#DECIMATE">DECIMATE</a>:           How to reduce frame rates by eliminating similar frames. 
-<li><a accesskey="5" href="#DEINTERLACE">DEINTERLACE</a>:        How to convert interlaced video to progressive video. 
-<li><a accesskey="6" href="#DIFFERENCE-KEY">DIFFERENCE KEY</a>:     Create transparency based on color differences. 
-<li><a accesskey="7" href="#FIELDS-TO-FRAMES">FIELDS TO FRAMES</a>:   How to recover interlaced video from bobbed video
-<li><a accesskey="8" href="#FREEZE-FRAME">FREEZE FRAME</a>:       How to stop action in the timeline. 
-<li><a accesskey="9" href="#HISTOGRAM">HISTOGRAM</a>:          How to change the mapping of different brightness values. 
-<li><a href="#INVERSE-TELECINE">INVERSE TELECINE</a>:   How to convert pulled down frames to progressive frames. 
-<li><a href="#INTERPOLATE-VIDEO">INTERPOLATE VIDEO</a>:  How to create the illusion of higher framerates. 
-<li><a href="#LENS">LENS</a>:               Correcting spherical aberration
-<li><a href="#LINEARIZE">LINEARIZE</a>:          Fix gamma in raw camera images
-<li><a href="#LIVE-AUDIO">LIVE AUDIO</a>:         Pass audio from the soundcard directly to the timeline. 
-<li><a href="#LIVE-VIDEO">LIVE VIDEO</a>:         Pass video from the capture card directly to the timeline. 
-<li><a href="#LOOP">LOOP</a>:               How to loop regions of the timeline. 
-<li><a href="#MOTION">MOTION</a>:             Motion tracking with rotation. 
-<li><a href="#MOTION-2-POINT">MOTION 2 POINT</a>:     Motion and rotation tracking from translation only. 
-<li><a href="#REFRAMERT">REFRAMERT</a>:          Changing the number of frames in a sequence. 
-<li><a href="#REFRAME">REFRAME</a>:            Changing the number of frames in a sequence with rendering. 
-<li><a href="#RESAMPLE">RESAMPLE</a>:           Change the number of samples in a sequence with rendering. 
-<li><a href="#REVERSE-VIDEO_002fAUDIO">REVERSE VIDEO/AUDIO</a>:  How to play regions in reverse. 
-<li><a href="#SWAP-FRAMES">SWAP FRAMES</a>:        Fixing temporal field order
-<li><a href="#THRESHOLD">THRESHOLD</a>:          How to get monochrome out of a region of the image. 
-<li><a href="#TIME-AVERAGE">TIME AVERAGE</a>:       How to stack images. 
-<li><a href="#TITLER">TITLER</a>:             How to add text to a track from inside Cinelerra. 
-<li><a href="#VIDEO-SCOPE">VIDEO SCOPE</a>:        How to view the dynamic range of intensity and hue. 
-</ul>
-
-<div class="node">
-<a name="g_t1080-TO-480"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#CHROMA-KEY">CHROMA KEY</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.1 1080 TO 480</h3>
-
-<p>Most TV broadcasts are recieved with a 1920x1080 resolution but
-originate from a 720x480 source at the studio.  It's a waste of space
-to compress the entire 1920x1080 if the only resolvable details are
-720x480.  Unfortunately resizing 1920x1080 video to 720x480 isn't as
-simple as shrinking it.
-
-   <p>At the TV station the original 720x480 footage was first converted to
-fields of 720x240.  Each field was then scaled up to 1920x540.  The two
-1920x540 fields were finally combined with interlacing to form the
-1920x1080 image.  This technique allows a consumer TV to display the
-resampled image without extra circuitry to handle 720x480 interlacing
-in a 1920x1080 image.
-
-   <p>If you merely deinterlaced the 1920x1080 images, you would end up with
-resolution of 720x240.  The <b>1080 to 480</b> effect properly extracts
-two 1920x540 size fields from the image, resizes them separately, and
-combines them again to restore a 1920x480 interlaced image.  The
-<b>scale</b> effect must then be applied to reduce the horizontal size to
-960 or 720 depending on the original aspect ratio.
-
-   <p>The tracks to which <b>1080 to 480</b> is applied need to be at 1920x1080
-resolution.  The project settings in <b>settings-&gt;format</b> should be at
-least 720x480 resolution.
-
-   <p>The effect doesn't know if the first row in the 1920x1080 image belongs
-to the first row of the 720x480 original.  You have to specify what the
-first row is in the effect configuration.
-
-   <p>The output of this effect is a small image in the middle of the
-original 1920x1080 frame.  Use the projector to center the output image
-in the playback.
-
-   <p>Finally, once you have 720x480 interlaced video you can either apply
-<b>frames to fields</b> of <b>inverse telecine</b> to further recover original
-progressive frames.
-
-<div class="node">
-<a name="CHROMA-KEY"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#COMPRESSOR">COMPRESSOR</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#g_t1080-TO-480">1080 TO 480</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.2 CHROMA KEY</h3>
-
-<p>This effect erases pixels which match the selected color.  They are
-replaced with black if there is no alpha channel and transparency if
-there is an alpha channel.  The selection of color model is important
-to determine the behavior.
-
-   <p>Chroma key uses either the lightness or the hue to determine what is
-erased.  <b>Use value</b> singles out only the lightness to determine
-transparency.  Select a center color to erase using the <b>Color</b>
-button.  Alternatively a color can be picked directly from the output
-frame by first using the <b>color picker</b> in the compositor window and
-then selecting the <b>Use color picker</b> button.  This sets the chroma
-key color to the current color picker color.
-
-   <p>Be aware that the output of the chroma key is fed back to the
-compositor, so selecting a color again from the compositor will use the
-output of the chroma key effect.  The chroma key should be disabled
-when selecting colors with the color picker.
-
-   <p>If the lightness or hue is within a certain threshold it's erased. 
-Increasing the threshold determines the range of colors to be erased. 
-It's not a simple on/off switch, however.  As the color approaches the
-edge of the threshold, it gradually gets erased if the slope is high or
-is rapidly erased if the slope is low.  The slope as defined here is
-the number of extra values flanking the threshold required to go from
-opaque to transparent.
-
-   <p>Normally threshold is very low when using a high slope.  The two
-parameters tend to be exclusive because slope fills in extra threshold.
-
-   <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">
-<a name="COMPRESSOR"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#DECIMATE">DECIMATE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#CHROMA-KEY">CHROMA KEY</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.3 COMPRESSOR</h3>
-
-<p>Contrary to computer science experience, the audio compressor does not
-reduce the amount of data required to store the audio.  The audio
-compressor reduces the dynamic range of the audio.  In Cinelerra the
-compressor actually performs the function of an expander and
-compressor.
-
-   <p>The compressor works by calculating the maximum sound level within a
-certain time period of the current position.  The maximum sound level
-is taken as the input sound level.  For every input sound level there
-is an output sound level specified by the user.  The gain at the
-current position is adjusted so the maximum sound level in the time
-range is the user specified value.
-
-   <p>The compressor has a graph which correlates every input sound level to
-an output level.  The horizontal direction is the input sound level in
-dB.  The vertical direction is the ouptut sound level in dB.  The user
-specifies output sound levels by creating points on the graph.  Click
-in the graph to create a point.  If 2 points exist, drag one point
-across another point to delete it.  The most recent point selected has
-its vales displayed in textboxes for more precise adjustment.
-
-   <p>To make the compressor reduce the dynamic range of the audio, make all
-the output values greater than the input values except 0 db.  To make
-the compressor expand the dynamic range of the audio, make all the
-output values except 0 db less than the input values.  The algorithm
-currently limits all sound levels above 0 db to 0 db so to get an
-overloaded effect put a gain effect before the compressor to reduce all
-the levels and follow it with another gain effect to amplify all the
-levels back over 0 db.
-
-   <p><b>Reaction secs:</b> This determines where in relation to the current
-position the maximum sound level is taken and how fast the gain is
-adjusted to reach that peak.  It's notated in seconds.  If it's
-negative the compressor reads ahead of the current position to get the
-future peak.  The gain is ramped to that peak over one reaction time. 
-This allows it to hit the desired output level exactly when the input
-peak occurs at the current position.
-
-   <p>If the reaction time is positive the compressor scans only the current
-position for the gain and ramps gain over one reaction time to hit the
-desired output level.  It hits the output level exactly one reaction
-time after detecting the input peak.
-
-   <p><b>Decay secs:</b> If the peak is higher than the current level, the
-compressor ramps the gain up to the peak value.  Then if a future peak
-is less than the current peak it ramps the gain down.  The time taken
-to ramp the gain down can be greater than the time taken to ramp the
-gain up.  This ramping down time is the decay seconds.
-
-   <p><b>Trigger type:</b>  The compressor is a multichannel effect.  Several
-tracks can share one compressor.  How the signal from many tracks is
-interpreted is determined by the trigger type.
-
-   <p>The <b>Trigger</b> trigger type uses the value supplied in the <b>Trigger</b>
-textbox as the number of the track to use as input for the compressor. 
-This allows a track which isn't even heard to determine the loudness of
-the other tracks.
-
-   <p>The <b>Maximum</b> trigger takes the loudest track and uses it as the
-input for the compressor.
-
-   <p>The <b>Total</b> trigger type adds the signals from all the tracks and
-uses the total as the input for the compressor.  This is the most
-natural sounding compression and is ideal when multiple tracks are
-averaged into single speakers.
-
-   <p><b>Trigger:</b> The compressor is a multichannel effect.  Several tracks
-can share one compressor.  Normally only one track is scanned for the
-input peak.  This track is specified by the <b>Trigger</b>.  By sharing
-several tracks and playing with the trigger value, you can make a sine
-wave on one track follow the amplitude of a drum on another track for
-example.
-
-   <p><b>Smooth only:</b> For visualizing what the compressor is doing to the
-soundlevel, this option causes it to replace the soundwave with just
-the current peak value.  It makes it very easy to see how <b>reaction
-secs</b> affects the detected peak values.
-
-<div class="node">
-<a name="DECIMATE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#DEINTERLACE">DEINTERLACE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#COMPRESSOR">COMPRESSOR</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.4 DECIMATE</h3>
-
-<p>This effect drops frames from a track which are most similar in order
-to reduce the frame rate.  This is usually applied to a DVD to convert
-the 29.97 fps video to the 23.97 fps film rate but this decimate effect
-can take any input rate and convert it to any lower output rate.
-
-   <p>The output rate of <b>decimate</b> is the project frame rate.  The input
-rate is set in the <b>decimate</b> user interface.  To convert 29.97fps
-progressive video to 23.97fps film, apply a decimate effect to the
-track.  Set the decimate input rate to 29.97 and the project rate to
-23.97.
-
-   <p>Be aware every effect layered before decimate processes video at the
-decimate input rate and every effect layered after decimate processes
-video at the project frame rate.  Computationally intensive effects
-should come below decimate.
-
-<div class="node">
-<a name="DEINTERLACE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#DIFFERENCE-KEY">DIFFERENCE KEY</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DECIMATE">DECIMATE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.5 DEINTERLACE</h3>
-
-<p>The deinterlace effect has evolved over the years to deinterlacing and
-a whole lot more.  In fact two of the deinterlacing methods, <b>Inverse
-Telecine</b> and <b>Frames to Fields</b>, are separate effects.  The
-deinterlace effect offers several variations of line replication to
-eliminate comb artifacts in interlaced video.  It also has some line
-swapping tools to fix improperly captured video or make the result of a
-reverse effect display fields in the right order.
-
-<div class="node">
-<a name="DIFFERENCE-KEY"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#FIELDS-TO-FRAMES">FIELDS TO FRAMES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DEINTERLACE">DEINTERLACE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.6 DIFFERENCE KEY</h3>
-
-<p>The differency key creates transparency in areas which are similar
-between 2 frames.  The Difference key effect must be applied to 2
-tracks.  One track contains the action in front of a constant
-background and another track contains the background with nothing in
-front of it.  Apply the difference key to the track with the action and
-apply a shared copy of it to the track with the background.  The track
-with the background should be muted and underneath the track with the
-action and the colormodel should have an alpha channel.
-
-   <p>Pixels which are different between the background and action track are
-treated as opaque.  Pixels which are similar are treated as
-transparent.  Change <b>threshold</b> in the differency key window to make
-more pixels which aren't the same color transparent. Change <b>slope</b>
-to change the rate at which the transparency tapers off as pixels get
-more different.
-
-   <p>The slope as defined here is the number of extra values flanking the
-threshold required to go from opaque to transparent.  A high slope is
-more useful with a low threshold because slope fills in extra
-threshold.
-
-   <p><b>Use value</b> causes the intensity of pixels to be compared instead of
-the color.
-
-   <p>Applying a blur to the top track with just the alpha channel blurred
-can soften the transparency border.
-
-<div class="node">
-<a name="FIELDS-TO-FRAMES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#FREEZE-FRAME">FREEZE FRAME</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DIFFERENCE-KEY">DIFFERENCE KEY</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.7 FIELDS TO FRAMES</h3>
-
-<p>This effects reads frames at twice the project framerate, combining 2
-input frames into a single interlaced output frame.  Effects preceeding
-<b>fields to frames</b> process frames at twice the project frame rate. 
-Each input frame is called a field.
-
-   <p><b>Fields to frames</b> needs to know what field corresponds to what lines
-in the output frame.  The easiest way to figure it out is to try both
-options in the window.  If the input fields are the result of a line
-doubling process like <b>frames to fields</b>, the wrong setting results
-in blurrier output.  If the input fields are the result of a standards
-conversion process like <b>1080 to 480</b>, the wrong setting won't make
-any difference.
-
-   <p>The debobber which converts 720x480 interlaced into 1920x1080
-interlaced or 1280x720 progressive seems to degrade the vertical
-resolution to the point that it can't be recovered.
-
-<div class="node">
-<a name="FREEZE-FRAME"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#HISTOGRAM">HISTOGRAM</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#FIELDS-TO-FRAMES">FIELDS TO FRAMES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.8 FREEZE FRAME</h3>
-
-<p>In its simplest form, highlight a region of the track to freeze, drop
-the freeze frame effect on the highlighted region, and the lowest
-numbered frame in the affected area will play throughout the entire
-region.
-
-   <p>Freezeframe has an <b>enabled</b> option which can be keyframed.  Regions
-of a freeze frame effect which are enabled repeat the lowest numbered
-frame since the last keyframe.  This has unique possibilities.
-
-   <p>If a freeze frame effect has a keyframe in the middle of it set to
-<b>enabled</b>, the frame in the middle is repeated in the entire effect.
-
-   <p>If a freeze frame effect has several keyframes, each set to
-<b>enabled</b>, every time a keyframe is encountered the frame under it
-becomes the frozen one.
-
-   <p>If a freeze frame effect alternates between <b>enabled</b> and
-<b>disabled</b>, each time an <b>enabled</b> keyframe is encountered the
-frame under it is replicated until the next <b>disabled</b> keyframe.  The
-disabled regions play through.
-
-<div class="node">
-<a name="HISTOGRAM"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#INVERSE-TELECINE">INVERSE TELECINE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#FREEZE-FRAME">FREEZE FRAME</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.9 HISTOGRAM</h3>
-
-<p>This shows the number of occurances of each color on a histogram plot.
-
-   <p>It is always performed in floating point RGB regardless of
-the project colorspace.  The histogram has two sets of transfer
-parameters: the input transfer and the output transfer.
-
-   <p>4 histograms are possible in the histogram viewer.  The red, green,
-blue histograms show the input histograms for red, green, blue and
-multiply them by an input transfer to get the output red, green, blue. 
-Then the output red, green, blue is scaled by an output transfer.  The
-scaled red, green, blue is converted into a value and plotted on the
-value histogram.  The value histogram thus changes depending on the
-settings for red, green, blue.  The value transfers are applied
-uniformly to R, G, B after their color transfers are applied.
-
-   <p>Select which transfer to view by selecting one of the channels on the
-top of the histogram.
-
-   <p>The input transfer is defined by a graph overlaid on the histogram. 
-The horizontal direction corresponds to every possible input color. 
-The vertical direction corresponds to the output color for every input
-color.  Video entering the histogram is first plotted on the histogram
-plot, then it is translated so output values now equal the output
-values for each input value on the input graph.
-
-   <p>The input graph is edited by adding and removing any number of points. 
-Click and drag anywhere in the input graph to create a point and move
-it.  Click on an existing point to make it active and move it.  The
-active point is always indicated by being filled in.  The active
-point's input and output color are given in text boxes on top of the
-window.  The input and output color of the point can be changed through
-these text boxes.
-
-   <p>Points can be deleted by first selecting a point and then dragging it
-to the other side of an adjacent point.  They can also be deleted by
-selecting them and hitting <b>delete</b>.
-
-   <p>After the input transfer, the image is processed by the output
-transfer.  The output transfer is simply a minimum and maximum to scale
-the input colors to.  Input values of 100% are scaled down to the
-output's maximum.  Input values of 0% are scaled up to the output
-minimum.
-
-   <p>Input values below 0 are always clamped to 0 and input values above
-100% are always clamped to 100%.  Click and drag on the output
-gradient's triangles to change it.  It also has textboxes to enter
-values into.
-
-   <p>Enable the <b>automatic</b> toggle to have the histogram calculate an
-automatic input transfer for the red, green, blue but not the value. 
-It does this by scaling the middle 99% of the pixels to take 100% of
-the histogram width.  The number of pixels permitted to pass through is
-set by the <b>Threshold</b> textbox.  A threshold of 0.99 scales the input
-so 99% of the pixels pass through.  Smaller thresholds permit fewer
-pixels to pass through and make the output look more contrasty.
-
-   <p>Automatic input transfer is calculated for the R, G, and B channels but
-not the value.
-
-   <p><b>PLOT HISTOGRAM</b>
-
-   <p><b>SPLIT OUTPUT</b>
-
-<div class="node">
-<a name="INVERSE-TELECINE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#INTERPOLATE-VIDEO">INTERPOLATE VIDEO</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#HISTOGRAM">HISTOGRAM</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.10 INVERSE TELECINE</h3>
-
-<p>This is the most effective deinterlacing tool when the footage is a
-video transfer of a film.  Here the film was converted from 24fps to
-60fps.  Then the 60fps was downsampled to 30fps by extracting odd and
-even lines and interlacing the lines.  The IVTC effect is primarily a
-way to convert interlaced video to progressive video.  It undoes three
-patterns of interlacing.
-
-<pre class="example">       A AB BC CD D
-       AB CD CD DE EF
-       Automatic
-</pre>
-   <p>The first two options are fixed patterns and affected by the <b>pattern
-offset</b> and <b>odd field first</b> parameters.  The last option creates
-several combinations of lines for each frame and picks the most
-progressive combination.  It's a brute force algorithm.
-
-   <p>This technique doesn't rely on a pattern like other techniques and is
-less destructive but the timing is going to be jittery because of the
-lack of a frame rate reduction.  In order to smooth out the timing, you
-need to follow inverse telecine with a decimate effect.
-
-<div class="node">
-<a name="INTERPOLATE-VIDEO"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#LENS">LENS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#INVERSE-TELECINE">INVERSE TELECINE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.11 INTERPOLATE VIDEO</h3>
-
-<p>The interpolate video effect tries to create the illusion of a higher
-frame rate from source footage of very low framerates by averaging
-frames over time.  It averages two input frames for each output frame. 
-The input frames are at different times, resulting in a dissolve for
-all output frames between the input frames.  There are two ways of
-specifying the input frames.  You can specify an input frame rate which
-is lower than the project frame rate.  This causes input frames to be
-taken at even intervals,
-
-   <p>You can also specify keyframe locations as the positions of the input
-frames.  In this mode the output frame rate is used as the input frame
-rate and you just create keyframes wherever you want to specify an
-input frame.
-
-<div class="node">
-<a name="LENS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#LINEARIZE">LINEARIZE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#INTERPOLATE-VIDEO">INTERPOLATE VIDEO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.12 LENS</h3>
-
-<p>The lens affect stretches or shrinks to convert lens distorted images to
-rectilinear images.  The most common use is converting fish eye lenses
-to rectilinear lenses.  It is also useful for star tracking.
-
-   <p><b>R, G, B, A Field of view:</b> These determine how much the image is
-stretched in each channel.
-
-   <p><b>Lock:</b> This causes changes to 1 channel to affect all the channels. 
-This is normally the desired behavior.
-
-   <p><b>Aspect Ratio:</b> This changes the amount of stretching done in the X
-axis vs the Y axis.  To crop less data from stretched images, this
-allows more stretching to be done on 1 axis without creating black
-borders in the other axis.
-
-   <p><b>Radius:</b> This determines the size of the stretched region.  While
-adjusting the <b>field of view</b>, black borders may appear.  Adjust the
-<b>radius</b> to shrink or expand the output so black borders are out of
-frame.
-
-   <p><b>Center X, Y:</b> The center of the stretched region.  This is only
-useful if the image was previously translated by the software so the
-center of the lens is now off center.
-
-   <p><b>Draw center:</b> This is a visual aid when adjusting the <b>Center X, Y</b>
-but doesn't affect the results.
-
-   <p><b>Mode:</b> The type of stretching algorithm.
-
-     <ul>
-<li><b>Sphere shrink:</b> This is for making an image look like it's mapped to a sphere.
-
-     <li><b>Sphere expand:</b> This is for unmapping an image mapped to a sphere and
-flattening it.
-
-     <li><b>Rectilinear Stretch:</b> This is for flattening a fish eye lens.
-
-     <li><b>Rectilinear Shrink:</b> This is for making something flat look like it
-was taken by a fish eye lens.
-
-   </ul>
-
-<div class="node">
-<a name="LINEARIZE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#LIVE-AUDIO">LIVE AUDIO</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#LENS">LENS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.13 LINEARIZE</h3>
-
-<p>Raw camera images store colors in a logarithmic scale.  The blacks in
-these images are nearly 0 and the whites are supposed to be infinity. 
-The graphics card and most video codecs store colors in a linear scale
-but Cinelerra keeps raw camera images in their original logarithmic
-scale when it renders them.  This is necessary because the raw image
-parser can't always decode the proper gamma values for the images.  It
-also does its processing in 16 bit integers, which takes away a lot of
-information.
-
-   <p>The linearize effect converts the logarithmic colors to linear colors
-through a gamma value and a maximum value.  The gamma value determines
-how steep the output curve is and the maximum value is where 1.0 in the
-output corresponds to maximum brightness in the input.
-
-   <p>The linearize effect has 2 more parameters to simplify gamma
-correction.  The <b>automatic</b> option causes it to calculate <b>max</b>
-from the histogram of the image.  Use this when making a preview of a
-long list of images since it changes for every image.
-
-   <p>The <b>use color picker</b> option uses the value currently in the color
-picker to set the <b>max</b> value.  Note that every time you pick a color
-from the compositor window, you need to hit <b>use color picker</b> to
-apply the new value.
-
-<div class="node">
-<a name="LIVE-AUDIO"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#LIVE-VIDEO">LIVE VIDEO</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#LINEARIZE">LINEARIZE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.14 LIVE AUDIO</h3>
-
-<p>This effect reads audio directly from the soundcard input.  It replaces
-any audio on the track so it's normally applied to an empty track.
-
-   <p>To use Live Audio, highlight a horizontal region of an audio track or
-define in and out points.  Then drop the Live Audio effect into it. 
-Create extra tracks and attach shared copies of the first Live Audio
-effect to the other tracks to have extra channels recorded.
-
-   <p>Live Audio uses the sound driver selected in
-<b>Settings-&gt;Preferences-&gt;Playback-&gt;Audio Out</b> for recording, but
-unlike recording it uses the <b>playback buffer size</b> as the recording
-buffer size and it uses the <b>project sample rate</b> as the sampling
-rate.
-
-   <p>These settings are critical since some sound drivers can't record in
-the same sized buffer they play back in.  Live audio has been most
-reliable when ALSA is the recording driver and the playback fragment
-size is 2048.
-
-   <p>Drop other effects after Live Audio to process soundcard input in
-realtime.
-
-   <p>Now the bad news.  With live audio there is no readahead so effects
-like compressor will either delay if they have readahead enabled or
-playback will underrun.
-
-   <p>Another problem is sometimes the recording clock on the soundcard is
-slightly slower than the playback clock.  The recording eventually
-falls behind and playback sounds choppy.
-
-   <p>Finally, live audio doesn't work in reverse.
-
-<div class="node">
-<a name="LIVE-VIDEO"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#LOOP">LOOP</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#LIVE-AUDIO">LIVE AUDIO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.15 LIVE VIDEO</h3>
-
-<p>This effect reads video directly from the capture card input.  It
-replaces any video on the track so it's normally applied to an empty
-track.  The configuration for the capture card is taken from the
-recording preferences.  Go to <b>Settings-&gt;Preferences-&gt;Recording</b> to
-set up the capture card.
-
-   <p>Go to the <b>Video In</b> section where it says <b>Record driver</b>.  It
-must be set to either <b>Video4Linux2</b> or <b>IEC 61883</b>.  Other video
-drivers haven't been tested with Live Video and probably won't work.
-
-   <p>For live video, the selection for <b>File Format</b> and <b>Video</b> needs
-to be set to a format the timeline can use.  The file format must be
-<b>Quicktime for Linux</b> and video recording must be enabled for it. 
-Click on the wrench <img src="wrench.png" alt="wrench.png"> to set the video compression.
-
-   <p>The video compression depends on the recording driver.  For the
-<b>Video4Linux2</b> recording driver, the compression must be <b>Motion
-JPEG A</b>.  For the <b>IEC 61883</b> driver, the compression must be
-<b>DV</b>.  This gets the driver to generate output in a colormodel that
-the timeline can use.
-
-   <p>Some cards provide color and channel settings.  Live video takes the
-color settings from the values set in the <b>Video In</b> window.  Go to
-<b>File-&gt;Record</b> to bring up the recording interface and the Video In
-window.  Values set in the <b>Video in</b> window are used by <b>Live
-Video</b>.  Any channels the capture card supports need to be configured
-in the <b>Video in</b> interface since the same channels are used by the
-<b>Live Video</b> effect.
-
-   <p>With the video recording configured, highlight a horizontal region of a
-video track or define in and out points.  Then drop the Live Video
-effect into it.  Drop other effects after Live Video to process the
-live video in realtime.  For best results, you should use OpenGL and a
-video card which supports GL shading language.  Go to
-<b>Settings-&gt;Preferences-&gt;Playback-&gt;Video Out</b> to enable the OpenGL
-driver.
-
-   <p>Only one Live Video effect can exist at any time on the timeline.  It
-can't be shared by more than one track.
-
-<div class="node">
-<a name="LOOP"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MOTION">MOTION</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#LIVE-VIDEO">LIVE VIDEO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.16 LOOP</h3>
-
-<p>Sections of audio or video can be looped by dropping a <b>loop</b> effect
-on them.  Contrary to the the <b>settings-&gt;loop playback</b> option, the
-loop effects can be rendered where the <b>settings-&gt;loop playback</b>
-option can not be.  The loop effects are also convenient for short
-regions.
-
-   <p>The loop effects have one option: the number of <b>frames</b> or
-<b>samples</b> to loop.  This specifies the length of the region to loop
-starting from either the beginning of the effect or the latest
-keyframe.  The region is replicated for the entire effect.
-
-   <p>Every time a keyframe is set in a loop effect, the keyframe becomes the
-beginning of the region to loop.  Setting several keyframes in
-succession causes several regions to loop.  Setting a single keyframe
-causes the region after the keyframe to be looped throughout the
-effect, no matter where the keyframe is.  The end of an effect can be
-looped from the beginning by setting the keyframe near the end.
-
-<div class="node">
-<a name="MOTION"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MOTION-2-POINT">MOTION 2 POINT</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#LOOP">LOOP</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.17 MOTION</h3>
-
-<p>The motion tracker is almost a complete application in itself.  The
-motion tracker tracks two types of motion: translation and rotation. 
-It can track both simultaneously or one only.  It can do 1/4 pixel
-tracking or single pixel tracking.  It can stabilize motion or cause
-one track to follow the motion of another track.
-
-   <p>Although the motion tracker is applied as a realtime effect, it usually
-must be rendered to see useful results.  The effect takes a long time
-to precisely detect motion.
-
-   <p>The motion tracker works by using one region of the frame as the region
-to track.  It compares this region between 2 frames to calculate the
-motion.  This region can be defined anywhere on the screen.  Once the
-motion between 2 frames has been calculated, a number of things can be
-done with that motion vector.  It can be scaled by a user value and
-clamped to a maximum range.  It can be thrown away or accumulated with
-all the motion vectors leading up to the current position.
-
-   <p>To save time the motion result can be saved for later reuse, recalled
-from a previous calculation, or discarded.
-
-   <p>The motion tracker has a notion of 2 tracks, the master layer and the
-target layer.  The master layer is where the comparison between 2
-frames takes place.  The target layer is where motion is applied either
-to track or compensate for the motion in the master layer.
-
-   <p>The intricacies of motion tracking are enough to sustain entire
-companies and build careers around.  The motion tracker in Cinelerra
-isn't as sophisticated as some world class motion trackers but it's
-enough to sweeten some camcorder footage.
-
-   <p>Here is a brief description of the motion tracking parameters:
-
-     <ul>
-<li><b>Track translation:</b> Enables translation operations. 
-The motion tracker tracks X and Y motion in the master layer and
-adjusts X and Y motion in the target layer.
-
-     <li>
-<b>Translation block size:</b> For the translation operations, a block is
-compared to a number of neighboring blocks to find the one with the
-least difference.  The size of the block to search for is given by this
-parameter.
-
-     <li>
-<b>Translation search radius:</b> The size of the area to scan for the
-translation block.
-
-     <li>
-<b>Translation search steps:</b> Ideally the search operation would
-compare the  translation block with every other pixel in the
-translation search radius.  To  speed this operation up, a subset of
-the total positions is searched.   Then the search area is narrowed and
-rescanned by the same number of search steps until the motion is known
-to 1/4 pixel accuracy.
-
-     <li>
-<b>Block X, Y:</b> These coordinates determine the center of the
-translation  block based on percentages of the width and height of the
-image.  The center of the block should be part of the image which is
-visible at all times.
-
-     <li>
-<b>Maximum absolute offset:</b> In <b>track previous frame</b> and <b>previous
-frame same block</b> modes, the motion detected between every frame is
-accumulated to form an absolute motion vector for the entire sequence. 
-The amount of motion detected by the motion tracker is unlimited if this
-is 100.  If it's under 100 the amount of motion is limited to that
-percentage of the image size.  The value must be smaller for larger
-<b>translation block sizes</b> so there is enough area under the block to
-sense motion with.
-
-     <li>
-<b>Settling speed</b> In <b>track previous frame</b> and <b>previous frame
-same block</b> modes, the motion detected between every frame is
-accumulated to form an absolute motion vector for the entire sequence. 
-To keep the absolute motion from exceeding limits, it can be
-automatically reset over time by the settling speed.  If the settling
-speed is 100 the absolute vector resets to 0 after every frame.  If the
-settling speed is less than 100 the absolute vector is reduced slightly
-before the next frame is added.
-
-     <li>
-<b>Track rotation:</b> Enables rotation operations.  The motion tracker
-tracks rotation in the master layer and adjusts rotation in the target
-layer.
-
-     <li>
-<b>Rotation block size:</b> For rotation operations a single block is
-compared to equally sized blocks, each rotated by a different amount. 
-This is the size of the rotation block.
-
-     <li>
-<b>Rotation search radius:</b> This is the maximum angle of rotation from
-the starting frame the rotation scanner can detect.  The rotation scan
-is from this angle counterclockwise to this angle clockwise.  Thus the
-rotation search radius is half the total range scanned.
-
-     <li>
-<b>Rotation search steps:</b> Ideally every possible angle would be tested
-to get the rotation.  To speed up the rotation search, the rotation
-search radius is divided into a finite number of angles and only those
-angles compared to the starting frame.  Then the search radius is
-narrowed and an equal number of angles is compared in the smaller
-radius until the highest possible accuracy is achieved.
-
-     <p>Normally you need one search step for every degree scanned.  Since the
-rotation scanner scans the rotation search radius in two directions,
-you need two steps for every degree in the search radius to search the
-complete range.
-
-     <li>
-<b>Draw vectors:</b> When translation is enabled, 2 boxes are drawn on the
-frame.  One box represents the translation block.  Another box outside
-the translation block represents the extent of the translation search
-radius.  In the center of these boxes is an arrow showing the
-translation between the 2 master frames.
-
-     <p>When rotation is enabled a single box the size of the rotation block is
-drawn rotated by the amount of rotation detected.
-
-     <li>
-<b>Track single frame:</b> When this option is used the motion between a
-single starting frame and the frame currently under the insertion point
-is calculated.  The starting frame is specified in the <b>Frame number</b>
-blank.  The motion calculated this way is taken as the absolute motion
-vector.  The absolute motion vector for each frame replaces the
-absolute motion vector for the previous frame.  Settling speed has no
-effect on it since it doesn't contain any previous motion vectors. 
-Playback can start anywhere on the timeline since there is no
-dependance on previous results.
-
-     <li>
-<b>Track previous frame:</b> Causes only the motion between the previous
-frame and the current frame to be calculated.  This is added to an
-absolute motion vector to get the new motion from the start of the
-sequence to the current position.  After every frame processed this
-way, the block position is shifted to always cover the same region of
-the image.  Playback must be started from the start of the motion
-effect in order to accumulate all the necessary motion vectors.
-
-     <li>
-<b>Previous frame same block:</b> This is useful for stabilizing jerky
-camcorder footage.  In this mode the motion between the previous frame
-and the current frame is calculated.  Instead of adjusting the block
-position to reflect the new location of the image, like Track Previous
-Frame does, the block position is unchanged between each frame.  Thus a
-new region is compared for each frame.
-
-     <li>
-<b>Master layer:</b> This determines the track which supplies the starting
-frame and ending frame for the motion calculation.  If it's <b>Bottom</b>
-the bottom track of all the tracks sharing this effect is the master
-layer.  The top track of all the tracks is the target layer.
-
-     <li>
-<b>Calculation:</b> This determines whether to calculate the motion at all
-and whether to save it to disk.  If it's <b>Don't Calculate</b> the motion
-calculation is skipped.  If it's <b>Recalculate</b> the motion calculation
-is performed every time each frame is rendered.  If it's <b>Save</b> the
-motion calculation is always performed but a copy is also saved.  If
-it's <b>Load</b>, the motion calculation is loaded from a previous save
-calculation.  If there is no previous save calculation on disk, a new
-motion calculation is performed.
-
-     <li>
-<b>Action:</b> Once the motion vector is known this determines whether to
-move the target layer opposing the motion vector or following the
-motion vector.  If it's <b>Do Nothing</b> the target layer is untouched. 
-If it's <b>Track...</b> the target layer is moved by the same amount as
-the master layer.  This is useful for matching titles to objects in the
-frame.  If it's <b>Stabilize...</b> the target layer is moved opposite to
-the motion vector.  This is useful for stabilizing an object in the
-frame.  The motion operations can be accurate to single pixels or
-subpixels by changing the action setting.
-
-   </ul>
-
-<ul class="menu">
-<li><a accesskey="1" href="#SECRETS-OF-MOTION-TRACKING">SECRETS OF MOTION TRACKING</a>
-<li><a accesskey="2" href="#g_t2-PASS-MOTION-TRACKING">2 PASS MOTION TRACKING</a>
-<li><a accesskey="3" href="#USING-BLUR-TO-IMPROVE-MOTION-TRACKING">USING BLUR TO IMPROVE MOTION TRACKING</a>
-<li><a accesskey="4" href="#USING-HISTOGRAM-TO-IMPROVE-MOTION-TRACKING">USING HISTOGRAM TO IMPROVE MOTION TRACKING</a>
-<li><a accesskey="5" href="#INTERPOLATING-MOTION-BETWEEN-FRAMES">INTERPOLATING MOTION BETWEEN FRAMES</a>
-<li><a accesskey="6" href="#FILLING-IN-THE-BLACK-AREAS">FILLING IN THE BLACK AREAS</a>
-</ul>
-
-<div class="node">
-<a name="SECRETS-OF-MOTION-TRACKING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#g_t2-PASS-MOTION-TRACKING">2 PASS MOTION TRACKING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#MOTION">MOTION</a>
-
-</div>
-
-<h4 class="subsection">18.17.1 SECRETS OF MOTION TRACKING</h4>
-
-<p>Since it is a very slow effect, there is a method to applying the
-motion tracker to get the most out of it.  First disable playback for
-the track to do motion tracking on.  Then drop the effect on a region
-of video with some motion to track.  Then rewind the insertion point to
-the start of the region.  Set <b>Action</b> -&gt; <b>Do Nothing</b>.  Set
-<b>Calculation</b> -&gt; <b>Don't calculate</b>.  Enable <b>Draw vectors</b>. Then
-enable playback of the track to see the motion tracking areas.
-
-   <p>Enable which of <b>translation motion</b> or <b>rotation motion</b> vectors
-you want to track.  By watching the compositor window and adjusting the
-<b>Block x,y</b> settings, center the block on the part of the image you
-want to track.  Then set search radius, block size, and block
-coordinates for translation and rotation.
-
-   <p>Once this is configured, set the calculation to <b>Save coords</b> and do
-test runs through the sequence to see if the motion tracker works and
-to save the motion vectors.  Once this is done, disable playback for
-the track, disable <b>Draw vectors</b>, set the motion action to perform
-on the target layer and change the calculation to <b>Load coords</b>. 
-Finally enable playback for the track.
-
-   <p>When using a single starting frame to calculate the motion of a
-sequence, the starting frame should be a single frame with the least
-motion to any of the other frames.  This is rarely frame 0.  Usually
-it's a frame near the middle of the sequence.  This way the search
-radius need only reach halfway to the full extent of the motion in the
-sequence.
-
-   <p>If the motion tracker is used on a render farm, <b>Save coords</b> and
-<b>previous frame</b> mode won't work.  The results of the save coords
-operation are saved to the hard drives on the render nodes, not the
-master node.  Future rendering operations on these nodes will process
-different frames and read the wrong coordinates from the node
-filesystems.  The fact that render nodes only visualize a portion of
-the timeline also prevents <b>previous frame</b> from working since it
-depends on calculating an absolute motion vector starting on frame 0.
-
-<div class="node">
-<a name="g_t2-PASS-MOTION-TRACKING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#USING-BLUR-TO-IMPROVE-MOTION-TRACKING">USING BLUR TO IMPROVE MOTION TRACKING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SECRETS-OF-MOTION-TRACKING">SECRETS OF MOTION TRACKING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#MOTION">MOTION</a>
-
-</div>
-
-<h4 class="subsection">18.17.2 2 PASS MOTION TRACKING</h4>
-
-<p>The method described above is 2 pass motion tracking.  One pass is used
-just to calculate the motion vectors.  A second pass is used to apply
-the motion vectors to the footage.  This is faster than a single pass
-because errors in the motion vector calculation can be discovered
-quickly.
-
-   <p>This also allows the motion tracking to use a less demanding colormodel
-like RGB888 in the scanning step and a more demanding colormodel like
-RGB Float in the action step.  The scanning step takes much longer than
-action.
-
-   <p>This suffers the disadvantage of not being practical for extremely long
-sequences where some error is acceptable and the picture quality is
-lousy to begin with, like stabilizing camcorder footage.
-
-   <p>The slower method is to calculate the motion vectors and apply them
-simultaneously.  This method can use one track as the motion vector
-calculation track and another track as the target track for motion
-vector actions.  This is useful for long sequences where some error is
-acceptable.
-
-<div class="node">
-<a name="USING-BLUR-TO-IMPROVE-MOTION-TRACKING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#USING-HISTOGRAM-TO-IMPROVE-MOTION-TRACKING">USING HISTOGRAM TO IMPROVE MOTION TRACKING</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#g_t2-PASS-MOTION-TRACKING">2 PASS MOTION TRACKING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#MOTION">MOTION</a>
-
-</div>
-
-<h4 class="subsection">18.17.3 USING BLUR TO IMPROVE MOTION TRACKING</h4>
-
-<p>With extremely noisy or interlaced footage, applying a blur effect
-before the motion tracking can improve accuracy.  Either save the
-motion vectors in a <b>tracking pass</b> and disable the blur for the
-<b>action pass</b> or apply the blur just to the <b>master layer</b>.
-
-<div class="node">
-<a name="USING-HISTOGRAM-TO-IMPROVE-MOTION-TRACKING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#INTERPOLATING-MOTION-BETWEEN-FRAMES">INTERPOLATING MOTION BETWEEN FRAMES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#USING-BLUR-TO-IMPROVE-MOTION-TRACKING">USING BLUR TO IMPROVE MOTION TRACKING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#MOTION">MOTION</a>
-
-</div>
-
-<h4 class="subsection">18.17.4 USING HISTOGRAM TO IMPROVE MOTION TRACKING</h4>
-
-<p>A histogram is almost always applied before motion tracking to clamp
-out noise in the darker pixels.  Either save the motion vectors in a
-<b>tracking pass</b> and disable the histogram for the <b>action pass</b> or
-apply the histogram just to the <b>master layer</b>.
-
-<div class="node">
-<a name="INTERPOLATING-MOTION-BETWEEN-FRAMES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#FILLING-IN-THE-BLACK-AREAS">FILLING IN THE BLACK AREAS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#USING-HISTOGRAM-TO-IMPROVE-MOTION-TRACKING">USING HISTOGRAM TO IMPROVE MOTION TRACKING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#MOTION">MOTION</a>
-
-</div>
-
-<h4 class="subsection">18.17.5 INTERPOLATING MOTION BETWEEN FRAMES</h4>
-
-<p>The motion tracker can simulate higher frame rates than the media frame
-rate by interpolating the motion.  Interpolation is enabled with the
-<b>maximum absolute offset</b> and <b>settling speed</b> options.
-
-   <p>First, go to <b>Settings-&gt;Format</b> in the main window and set the
-<b>video frame rate</b> to a number higher than the media frame rate.
-
-   <p>In the <b>Motion</b> window, select a tracking option which accumulates
-motion.  This is either <b>Track previous frame</b> or <b>Previous frame
-same block</b>.  These cause the <b>maximum absolute offset</b> and
-<b>settling speed</b> options to take effect.
-
-   <p><b>maximum absolute offset</b> must be set to the maximum motion to be
-accumulated as a percentage of the video size.  A value of 50 limits the
-motion to 50% of the video size.  50 works well.  The value must be
-smaller for larger <b>translation block sizes</b> so there is enough area
-under the block to sense motion with.
-
-   <p><b>settling speed</b> must be set to the rate at which the accumulated
-motion resets to 0 over time.  The reset happens whether or not any
-motion was detected, so when the project frame rate is higher than the
-media frame rate, the frames between media frames regress towards the
-center.  For interpolated motion, the <b>settling speed</b> value should be
-small, so the movement is smooth.  3 works well.
-
-<div class="node">
-<a name="FILLING-IN-THE-BLACK-AREAS"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#INTERPOLATING-MOTION-BETWEEN-FRAMES">INTERPOLATING MOTION BETWEEN FRAMES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#MOTION">MOTION</a>
-
-</div>
-
-<h4 class="subsection">18.17.6 FILLING IN THE BLACK AREAS</h4>
-
-<p>Stabilization always creates black borders in the track resolution.  One
-solution is to shrink the project resolution so the borders are always
-cropped off the output.  Another solution is to apply a <b>Time Average</b>
-effect after stabilization.
-
-   <p>Configure <b>Time Average</b> the following way:
-
-     <ul>
-<li><b>Frame count:</b> 1
-<li><b>Accumulate sequence again:</b> No
-<li><b>Replace:</b> Yes
-<li><b>Threshold:</b> 1
-<li><b>Border:</b> 4
-</ul>
-
-   <p>This makes new frames replace only the pixels in the previous frames
-where there is new data.  The black areas in new frames don't replace
-previous data so the previous data shows through and fills them in.
-
-<div class="node">
-<a name="MOTION-2-POINT"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#REFRAMERT">REFRAMERT</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MOTION">MOTION</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.18 MOTION 2 POINT</h3>
-
-<p>The 2 point motion tracker is the same as using 2 of the translation
-motion trackers to track 2 points.  It doesn't have a rotation tracker. 
-Instead, it uses the angle between the 2 translation points to
-determine  rotation.  The 2 points can be enabled separately.
-
-   <p>If 1 point is enabled, only translation is tracked.
-
-   <p>If 2 points are enabled, translation is tracked by point 1 and rotation
-is tracked by point 2.  Stabilization is performed with point 1 as the center.
-
-   <p>The other parameters for the 2 point tracker are the same as the single
-point tracker.  In addition, the 2 point tracker supports <b>TRANSLATION
-SEARCH OFFSET</b>.
-
-   <p><b>TRANSLATION SEARCH OFFSET</b> forces the motion search to look in a
-region other than directly next to the translation block position.  The
-<b>translation search offset</b> is added to the new search result, giving
-contiguous motion results throughout any changes in translation search area.
-
-   <p>This is useful if the camera position changed in the middle of a
-sequence of images but the subject stayed the same.  Offset the
-translation search area when the camera position changes and the
-detected motion stays contiguous through the entire sequence.
-
-   <p>2 point tracking works best if the points don't change shape between
-frames.  It is more prone to rotation errors than single point motion
-tracking if the points change shape.  2 point tracking is mainly used
-for tracking stars.
-
-   <p>Use the smallest search blocks possible since larger blocks are harder
-to compare when they're rotated.
-
-<div class="node">
-<a name="REFRAMERT"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#REFRAME">REFRAME</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#MOTION-2-POINT">MOTION 2 POINT</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.19 REFRAMERT</h3>
-
-<p>ReframeRT changes number of frames in a sequence of video directly from
-the timeline.  It has 2 modes, selected by the 2 toggles in the GUI.
-
-   <p><b>Stretch</b> mode multiplies the current frame number of its output by
-the scale factor to arrive at the frame to read from its input.  If its
-current output frame is #55 and the scale factor is 2, frame #110 is
-read from its input.  The stretch mode has the effect of changing the
-length of output video by the inverse of the scale factor.  If the
-scale factor is greater than 1, the output will end before the end of
-the sequence on the timeline.  If it's less than 1, the output will end
-after the end of the sequence on the timeline.  The ReframeRT effect
-must be lengthened to the necessary length to accomodate the scale
-factor.  Change the length of the effect by clicking on the endpoint of
-the effect and dragging.
-
-   <p>Although stretch mode changes the number of the frame read from its
-input, it doesn't change the frame rate of the input.  Effects before
-ReframeRT assume the same frame rate as ReframeRT.
-
-   <p><b>Downsample</b> mode doesn't change the length of the output sequence. 
-It multiplies the frame rate of the output by the scale factor to
-arrive at a frame rate rate to read the input.  This has the effect of
-replicating the input frames so that they only change at the scaled
-frame rate when sent to the output.  It doesn't change the length of
-the sequence.  If the scale factor is 0.5 and the output frame rate is
-30 fps, only 15 frames will be shown per second and the input will be
-read at 15 fps.  Downsample is only useful for scalefactors below 1,
-hence the name downsample.
-
-   <p>Downsample mode changes the frame rate of the input as well as the
-number of the frame to read, so effects before ReframeRT see the frame
-rate * the scale factor as their frame rate.  If the scale factor is 2
-and the output frame rate is 30, the input frame rate will be 60 and
-the input frame number will by doubled.  This won't normally do
-anything but some input effects may behave differently at the higher
-frame rate.
-
-<div class="node">
-<a name="REFRAME"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#RESAMPLE">RESAMPLE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#REFRAMERT">REFRAMERT</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.20 REFRAME</h3>
-
-<p>This does exactly the same thing as <b>ReframeRT</b> in <b>Stretch</b> mode. 
-It multiplies the output frame number by the scale factor to arrive at
-the input frame number and changes the length of the sequence.  Unlike
-ReframeRT, this must run from the <b>Video</b> menu and render its output.
-
-   <p>Be aware <b>Reframe</b> doesn't write the scaled frame rate as the frame
-rate of the rendered file.  It produces a file of scaled length and
-equal frame rate as the project.  The new length is 1/scale factor as
-big as the original sequence.
-
-<div class="node">
-<a name="RESAMPLE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#REVERSE-VIDEO_002fAUDIO">REVERSE VIDEO/AUDIO</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#REFRAME">REFRAME</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.21 RESAMPLE</h3>
-
-<p>This multiplies the number of each output sample by a scale factor to
-arrive at the number of the input sample.  The output file's sample
-rate is set to the project sample rate but its length is changed to
-reflect the scaled number of samples.  It also filters the resampled
-audio to remove aliasing.
-
-   <p>If the scale factor is 2, every 2 input samples will be reduced to 1
-output sample and the output file will have half as many samples as the
-input sequence.  If it's 0.5, every 0.5 input samples will be stretched
-to 1 output sample and the output file will have twice as many samples
-as the input sequence.
-
-<div class="node">
-<a name="REVERSE-VIDEO%2fAUDIO"></a>
-<a name="REVERSE-VIDEO_002fAUDIO"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#SWAP-FRAMES">SWAP FRAMES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#RESAMPLE">RESAMPLE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.22 REVERSE VIDEO/AUDIO</h3>
-
-<p>Media can be reversed on the timeline in realtime.  This isn't to be
-confused with using the reverse playback on the transport.  The reverse
-effects reverse the region covered by the effect regardless of the
-transport direction.  Apply <b>reverse audio</b> to an audio track and
-play it backwards.  The sound plays forward.
-
-   <p>The region to be reversed is first determined by what part of the track
-the effect is under and second by the locations of keyframes in the
-effect.  The reverse effects have an <b>enabled</b> option which allows
-you to set keyframes.  This allows may possibilities.
-
-   <p>Every <b>enabled</b> keyframe is treated as the start of a new reversed
-region and the end of a previous reversed region.  Several <b>enabled</b>
-keyframes in succession yield several regions reversed independant of
-each other.  An <b>enabled</b> keyframe followed by a <b>disabled</b>
-keyframe yields one reversed region followed by a forward region.
-
-   <p>Finally, be aware when reversing audio that the waveform on the
-timeline doesn't reflect the actual reversed output.
-
-<div class="node">
-<a name="SWAP-FRAMES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#THRESHOLD">THRESHOLD</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#REVERSE-VIDEO_002fAUDIO">REVERSE VIDEO/AUDIO</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.23 SWAP FRAMES</h3>
-
-<p>This is normally used on interlaced video which has been converted to
-fields.  One set of lines becomes one frame and the other set of lines
-becomes the next frame.  Now the frame rate is double and is showing
-fields of the original video sequentially.  The fields may be out of
-order, which is what <b>SWAP FRAMES</b> can correct.
-
-<div class="node">
-<a name="THRESHOLD"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TIME-AVERAGE">TIME AVERAGE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SWAP-FRAMES">SWAP FRAMES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.24 THRESHOLD</h3>
-
-<p>Threshold converts the image to pure luminance.  Then luminance values
-below and above the threshold range are converted to black and
-luminance values inside the threshold range are converted to white. 
-The threshold window shows a histogram of luminance values for the
-current frame.  Click dragging inside the histogram creates a range to
-convert to white.  Shift-clicking extends one border of this range. 
-Values for the threshold range can also be specified in the text boxes.
-
-   <p>This effect is basically a primitive luminance key.  A second track
-above the track with the threshold effect can be multiplied, resulting
-in only the parts of the second track within the threshold being
-displayed.
-
-<div class="node">
-<a name="TIME-AVERAGE"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TITLER">TITLER</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#THRESHOLD">THRESHOLD</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.25 TIME AVERAGE</h3>
-
-<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 floating point colormodels, time
-average can increase the dynamic range of lousy cameras.
-
-   <p>Inside the time average effect is an accumulation buffer and a
-divisor.  A number of frames are accumulated in the accumulation buffer
-and divided by the divisor to get the average.
-
-   <p>Because the time average can consume enourmous amounts of memory, it is
-best applied by first disabling playback for the track, dropping the
-time average in it, configuring time average for the desired number of
-frames, and re-enabling playback for the track.
-
-   <p><b>Frames count:</b> This determines the number of frames to be accumulated
-in the accumulation buffer.  For extremely large integrations it's
-easier to edit the EDL in a text editor and put in the number of frames.
-
-   <p><b>Accumulate sequence again:</b> If an effect before the time average is
-adjusted the time average normally doesn't reread the accumulation
-buffer to get the change.  This forces it to reread the accumulation
-buffer when any other effects change.
-
-   <p><b>Average:</b> This causes the accumulation buffer to be divided before
-being output.  The result is the average of all the frames.
-
-   <p><b>Accumulate:</b> This outputs the accumulation buffer without dividing
-it.  The result is the sum of all the frames.
-
-   <p><b>Accumulate only:</b>
-
-   <p>In order to accumulate only the specified number of frames, the time
-average retains all the previous frames in memory and subtracts them out
-as it plays forward.  <b>Accumulate only:</b> causes the history buffer to
-not be used in <b>averaging</b> and <b>accumulating</b>.  Without the history
-buffer, frames are added endlessly without ever being subtracted.  It's
-the same as an infinitely long accumulation buffer.  The only difference
-is for <b>Average</b> mode, the output is still divided by the <b>Frame
-count</b>.  <b>Accumulate only</b> is used where the number of frames in the
-accumulation would be too big to fit in memory.
-
-   <p><b>Replace:</b> This causes the accumulation buffer to be replaced by only
-pixels which aren't transparent.  This allows black borders from motion
-tracking to be filled in.
-
-   <p><b>Threshold:</b> The value a pixel must be before it replaces the previous
-pixel.  If alpha channels are enabled, the alpha is the value compared. 
-If there is no alpha channel, the brightness is the value compared.
-
-   <p><b>Border:</b> The number of pixels on the border of the image to never
-replace.  This hides errors in the replacement operation from the
-output, since errors occur at the transition between the replaced area
-and the ignored area.
-
-   <p><b>Greater:</b> Pixels are replaced if their value is greater than the
-previous pixel.  Use this to create star trails in stacks of many night
-sky photos or paint many copies of an object from its motion if it is
-lighter than the background.
-
-   <p><b>Less:</b> Pixels are replaced if their value is less than the previous
-pixel.  Use this to paint copies of an object from its motion if it is
-darker than the background.
-
-<div class="node">
-<a name="TITLER"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#VIDEO-SCOPE">VIDEO SCOPE</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#TIME-AVERAGE">TIME AVERAGE</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.26 TITLER</h3>
-
-<p>While it is possible to add text to movies by importing still images
-from The Gimp and compositing them, the Titler allows you to add text
-from within Cinelerra.
-
-   <p>The titler has standard options for <b>font, size, and style</b>.  The
-best font is a generic, normal font like Arial in a large size.
-
-   <p>The titler also has options you'll only find in moving pictures.  The
-<b>Justify</b> operation justifies the text relative to the entire frame. 
-Once justified, the <b>X and Y</b> offset is applied.  This allows text to
-be justified while at the same time letting you push it within the
-title safe region.
-
-   <p>The <b>motion type</b> scrolls the text in any of the four directions. 
-When using this, the text may dissappear.  Move the insertion point
-along the timeline until the text is far enough along the animation to
-reappear.  The text scrolls on and scrolls off.
-
-   <p>Setting <b>loop</b> causes the text to scroll completely off and repeat. 
-Without <b>loop</b> the text scrolls off and never reappears.
-
-   <p>The speed of the animation is determined by <b>speed</b>  Set it higher to
-speed up the animation.
-
-   <p><b>Drop shadow</b> draws a black copy of the text to the bottom right of
-the original text.  Useful when drawing text over changing video to
-keep the border always visible.
-
-   <p>In addition to the scrolling, <b>Fade in/Fade out</b> are a second type of
-animation.  If the fade seconds are 0, no fading is done.
-
-   <p><b>Outline</b> draws an outline on the characters if it's greater than 0. 
-Set the outline size by changing the number.  Set the outline color with
-the <b>OUTLINE COLOR</b> button.  If no outline is visible, make sure the
-alpha in <b>OUTLINE COLOR</b> is nonzero.  To get pure outline characters,
-set <b>COLOR</b> alpha to 0.
-
-   <p><b>COLOR</b> picks the color to draw the text in.  Usually white is the
-only practical color.
-
-   <p><b>OUTLINE COLOR</b> picks the color to draw the text outline in.
-
-   <p><b>Stamp timecode</b> replaces the text with the current position on the
-timeline in seconds and frames.
-
-   <p><b>SECRETS OF THE TITLER</b>
-
-<ul class="menu">
-<li><a accesskey="1" href="#ADDING-FONTS-TO-THE-TITLER">ADDING FONTS TO THE TITLER</a>:  How to add fonts to the titler
-<li><a accesskey="2" href="#THE-TITLE_002dSAFE-REGION">THE TITLE-SAFE REGION</a>:       How to keep text visible on output
-<li><a accesskey="3" href="#MAKING-TITLES-LOOK-GOOD">MAKING TITLES LOOK GOOD</a>:     How to make your titles look good. 
-</ul>
-
-<div class="node">
-<a name="ADDING-FONTS-TO-THE-TITLER"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#THE-TITLE_002dSAFE-REGION">THE TITLE-SAFE REGION</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#TITLER">TITLER</a>
-
-</div>
-
-<h4 class="subsection">18.26.1 ADDING FONTS TO THE TITLER</h4>
-
-<p>The X Window system originally didn't have a suitable font renderer for
-video.  It also is restricted to the current bit depth.  It doesn't
-have a convenient way to know which fonts work with the suitable font
-renderer in the desired bit depth.  The easiest way we've found to
-support fonts in the titler is to have a directory for them at
-<b>/usr/lib/cinelerra/fonts</b>.
-
-   <p>The titler supports mainly <b>TTF</b>, true type fonts.  It supports
-others but TTF are the most reliable.  To add true type fonts, copy the
-<b>.TTF</b> files to the <b>/usr/lib/cinelerra/fonts</b> directory.  In that
-directory run <b>ttmkfdir &amp;&amp; mv fonts.scale fonts.dir</b> and restart
-Cinelerra.  The new fonts should appear.  The usage of ttmkfdir changes
-frequently so this technique might not work.
-
-<div class="node">
-<a name="THE-TITLE-SAFE-REGION"></a>
-<a name="THE-TITLE_002dSAFE-REGION"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#MAKING-TITLES-LOOK-GOOD">MAKING TITLES LOOK GOOD</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#ADDING-FONTS-TO-THE-TITLER">ADDING FONTS TO THE TITLER</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#TITLER">TITLER</a>
-
-</div>
-
-<h4 class="subsection">18.26.2 THE TITLE-SAFE REGION</h4>
-
-<p>If the video is displayed on a consumer TV, the outer border is going
-to be cropped by 5% on each side.  Moreover, text which is too close to
-the edge looks sloppy.  Make sure when adding titles to have the
-<b>title-safe</b> <img src="titlesafe.png" alt="titlesafe.png"> tool active in the <b>compositor</b> window. 
-The text shouldn't cross the inner rectangle.
-
-<div class="node">
-<a name="MAKING-TITLES-LOOK-GOOD"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#THE-TITLE_002dSAFE-REGION">THE TITLE-SAFE REGION</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#TITLER">TITLER</a>
-
-</div>
-
-<h4 class="subsection">18.26.3 MAKING TITLES LOOK GOOD</h4>
-
-<p>No-one else is going to tell you this, but to make good looking titles,
-ignore most of the features of the titler.  The best settings are:
-
-     <ul>
-<li>Font: <b>Arial</b>
-<li>Italic: <b>off</b>
-<li>Motion: <b>No motion</b>
-<li>Bold: <b>on or off</b>
-<li>Fade in: <b>0</b>
-<li>Fade out: <b>0</b>
-<li>Color: <b>white</b>
-<li>Outline color: <b>black</b>
-<li>Drop Shadow or outline: <b>use either to improve contrast but not both</b>
-</ul>
-
-   <p>Don't waste the audience's time with fading &amp; crawls.  Use crawls only
-if there's too much text to fit on the screen.  The title should be
-legible enough to take the least amount of time to read.  You're
-supposed to show the story, not write it.  If they wanted to read a
-story, they would be reading a book instead of watching video.
-
-<div class="node">
-<a name="VIDEO-SCOPE"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#TITLER">TITLER</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>
-
-</div>
-
-<h3 class="section">18.27 VIDEO SCOPE</h3>
-
-<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
-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
-black to complete white while adjusting the brightness/contrast.
-
-   <p>Some thought is being given to having a video scope for recording. 
-Unfortunately, this would require a lot of variations of the video
-scope for all the different video drivers.
-
-<div class="node">
-<a name="PLUGIN-AUTHORING"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#KEYBOARD-SHORTCUTS">KEYBOARD SHORTCUTS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">19 PLUGIN AUTHORING</h2>
-
-<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. 
-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 method of
-implementation and specific changes for that particular type.  The
-easiest way to implement a plugin is to take the simplest existing one
-out of the group and rename the symbols.
-
-<ul class="menu">
-<li><a accesskey="1" href="#INTRODUCING-THE-PULL-METHOD">INTRODUCING THE PULL METHOD</a>:  The current paradigm for plugin writing
-<li><a accesskey="2" href="#COMMON-PLUGIN-FUNCTIONS">COMMON PLUGIN FUNCTIONS</a>:  What all effects have to do. 
-<li><a accesskey="3" href="#REALTIME-PLUGINS">REALTIME PLUGINS</a>:  What realtime effects have to do. 
-<li><a accesskey="4" href="#NONREALTIME-PLUGINS">NONREALTIME PLUGINS</a>:  What rendered effects have to do. 
-<li><a accesskey="5" href="#AUDIO-PLUGINS">AUDIO PLUGINS</a>:  What audio effects have to do. 
-<li><a accesskey="6" href="#VIDEO-PLUGINS">VIDEO PLUGINS</a>:  What video effects have to do. 
-<li><a accesskey="7" href="#TRANSITION-PLUGINS">TRANSITION PLUGINS</a>:  What transitions have to do. 
-<li><a accesskey="8" href="#PLUGIN-GUI_0027S-WHICH-UPDATE-DURING-PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>:  How to use currently playing data to draw the GUI. 
-<li><a accesskey="9" href="#USING-OPENGL">USING OPENGL</a>:  How to use hardware to speed up operations. 
-<li><a href="#PLUGIN-QUERIES">PLUGIN QUERIES</a>:  How plugins get information about the data to be processed. 
-</ul>
-
-<div class="node">
-<a name="INTRODUCING-THE-PULL-METHOD"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#COMMON-PLUGIN-FUNCTIONS">COMMON PLUGIN FUNCTIONS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>
-
-</div>
-
-<h3 class="section">19.1 INTRODUCING THE PULL METHOD</h3>
-
-<p>Originally plugins were designed with the push method.  The push method
-is intuitive and simple.  A source pushes data to a plugin, the plugin
-does math operations on it, and the plugin pushes it to a destination. 
-For 6 years this was the way all realtime plugins were driven
-internally but it didn't allow you to reduce the rate of playback in
-realtime.  While plugins can still be designed as if they're pushing
-data, this is not the way they're processed internally anymore.
-
-   <p>The latest evolution in Cinelerra's plugin design is the pull method. 
-The rendering pipeline starts at the final output and the final steps
-in the rendering pipeline are reading the data from disk.  Every step
-in the rendering chain involves requesting data from the previous
-step.  When the rendering pipleline eventually requests data from a
-plugin chain, each plugin requests data from the plugin before it.
-
-   <p>This is less intuitive than the push method but is much more powerful. 
-Realtime plugins written using the pull method can change the rate data
-is presented to the viewer and the direction of playback.  The pull
-method allows plugins to take in data at a higher rate than they send
-it out.
-
-   <p>To get the power of rate independance, the pull method requires plugins
-to know more about the data than they needed to under the push method. 
-Plugins need to know what rate the project is at, what rate their
-output is supposed to be at and what rate their input is supposed to be
-at.  These different data rates have to be correlated for a plugin to
-configure itself properly.
-
-   <p>Keyframes for a plugin are stored relative to the project frame rate. 
-Queries from a plugin for for the current playback position are given
-relative to the project frame rate.  If the plugin's output was
-requested to be at twice the project frame rate, the positions need to
-be converted to the project rate for keyframes to match up.  Two
-classes of data rates were created to handle this problem.
-
-   <p>Rate conversions are done in terms of the <b>project rate</b> and the
-<b>requested rate</b>.  The project rate is identical for all plugins.  It
-is determined by the <b>settings-&gt;format</b> window.  The requested rate
-is determined by the downstream plugin requesting data from the current
-plugin.  The requested rate is arbitrary.  Exactly how to use these
-rates is described below.
-
-<div class="node">
-<a name="COMMON-PLUGIN-FUNCTIONS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#REALTIME-PLUGINS">REALTIME PLUGINS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#INTRODUCING-THE-PULL-METHOD">INTRODUCING THE PULL METHOD</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>
-
-</div>
-
-<h3 class="section">19.2 COMMON PLUGIN FUNCTIONS</h3>
-
-<p>All plugins inherit from a derivative of PluginClient.  This
-PluginClient derivative implements most of the required methods in
-PluginClient, but users must still define methods for PluginClient. 
-The most commonly used methods are predefined in macros to reduce the
-typing yet still allow flexibility.
-
-   <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>Cinelerra instantiates all plugins at least twice when they are used in
-a movie.  Once instance is the GUI.  The other instance is the signal
-processor.  User input, through a complicated sequence, is propogated
-from the GUI instance to the signal processor instance.  If the signal
-processor wants to alter the GUI, it propogates data back to the GUI
-instance.  There are utility functions for doing all this.
-
-   <p>All plugins define at least three objects:
-
-     <ul>
-<li>
-<b>Processing object</b> - 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>
-<b>User interface object</b> - This is a subclass of
-<b>PluginClientWindow</b>.  It shows data on the screen and collects
-parameters from the user.
-
-     <p>The window has pointers to a number of widgets, a few initialization
-methods, and a back pointer to the plugin's processing object.  The GUI
-uses Cinelerra's toolkit.  The plugin abstraction layer handles creating
-a thread for the GUI.
-
-     <li>
-<b>Configuration object</b> - This stores the user parameters and always
-needs interpolation, copying, and comparison functions.  Macros for the
-plugin client automatically call configuration methods to interpolate
-keyframes.
-
-   </ul>
-
-<ul class="menu">
-<li><a accesskey="1" href="#THE-PROCESSING-OBJECT">THE PROCESSING OBJECT</a>
-<li><a accesskey="2" href="#THE-CONFIGURATION-OBJECT">THE CONFIGURATION OBJECT</a>
-<li><a accesskey="3" href="#THE-USER-INTERFACE-OBJECT">THE USER INTERFACE OBJECT</a>
-</ul>
-
-<div class="node">
-<a name="THE-PROCESSING-OBJECT"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#THE-CONFIGURATION-OBJECT">THE CONFIGURATION OBJECT</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMMON-PLUGIN-FUNCTIONS">COMMON PLUGIN FUNCTIONS</a>
-
-</div>
-
-<h4 class="subsection">19.2.1 THE PROCESSING OBJECT</h4>
-
-<p>Load up a simple plugin like gain to see what this object looks like. 
-The processing object should inherit from the intended PluginClient
-derivative.  Its constructor should take a PluginServer argument.
-
-<pre class="example">     MyPlugin(PluginServer *server);
-</pre>
-   <p>In the implementation, the plugin must contain a registration line with
-the name of the processing object like
-
-<pre class="example">     REGISTER_PLUGIN(MyPlugin)
-</pre>
-   <p>Another function which is useful but not mandatory is
-
-<pre class="example">     int is_multichannel();
-</pre>
-   <p>It should return 1 if one instance of the plugin handles multiple
-tracks simultaneously or 0 if one instance of the plugin only handles
-one track.  The default is 0 if it is omitted.
-
-   <p>Multichannel plugins in their processing function should refer to a
-function called <b>PluginClient::get_total_buffers()</b> to determine the
-number of channels.
-
-   <p>To simplify the implementation of realtime plugins, a macro for
-commonly used members has been created for the class header, taking the
-configuration object and user interface thread object as arguments. 
-The macro definitions apply mainly to realtime plugins and are not
-useful in nonrealtime plugins.  Fortunately, nonrealtime plugins are
-simpler.
-
-<pre class="example">     PLUGIN_CLASS_MEMBERS(config_name, thread_name)
-</pre>
-   <p>The commonly used members in PLUGIN_CLASS_MEMBERS are described below.
-
-     <ul>
-<li>int load_configuration();
-
-     <p>Loads the configuration based on surrounding keyframes and current
-position.  The class definition for load_configuration should contain
-
-     <pre class="example">          LOAD_CONFIGURATION_MACRO(plugin_class, config_class)
-</pre>
-     <p>to implement the default behavior for load_configuration.  This stores
-whatever the current configuration is inside the plugin's configuration
-object and returns 1 if the new configuration differs from the previous
-configuration.  The return value of load_configuration is used by
-another commonly used function, update_gui to determine if the GUI really needs to be updated.
-
-     <p>The plugin's configuration object is always called <b>config</b> inside
-PLUGIN_CLASS_MEMBERS.
-
-     <li>VFrame* new_picon();
-
-     <p>Creates a picon for display in the resource window.  Use
-
-     <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
-<b>picon_png.h</b> header file from a PNG image using <b>pngtoh</b>. 
-<b>pngtoh</b> is compiled in the <b>guicast/ARCH</b> directory.
-
-     <p>The source PNG image should be called picon.png and can be any format
-supported by PNG.
-
-     <li>char* plugin_title();
-
-     <p>Returns a text string identifying the plugin in the resource window. 
-The string has to be unique.
-
-     <li>void update_gui();
-
-     <p>Should first load the configuration, test for a return of 1, and then
-redraw the GUI with the new parameters.  All the plugins using GuiCast
-have a format like
-
-     <pre class="example">          void MyPlugin::update_gui()
-          {
-               if(thread)
-               {
-                       if(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.
-
-   </ul>
-
-   <p>Important functions the processing object must define are the
-functions which load and save configuration data from keyframes.  These
-functions are called by the macros so all you need to worry about is
-accessing the keyframe data.
-
-<pre class="example">     void save_data(KeyFrame *keyframe);
-     void read_data(KeyFrame *keyframe);
-</pre>
-   <p>The read data functions are only used in realtime plugins.  The read
-data functions translate the plugin configuration between the KeyFrame
-argument and the configuration object for the plugin.  The keyframes
-are stored on the timeline and can change for every project.
-
-   <p>Use an object called <b>FileXML</b> to do the translation and some
-specific commands to get the data out of the KeyFrame argument.  See
-any existing plugin to see the usage of KeyFrame and FileXML.
-
-<pre class="example">     int load_defaults();
-     int save_defaults();
-</pre>
-   <p>The load defaults functions are used in realtime and non-realtime
-plugins.  The load defaults functions translate the plugin
-configuration between a BC_Hash object and the plugin's
-configuration.  The BC_Hash object stores configurations in a discrete
-file on disk for each plugin but doesn't isolate different
-configurations for different projects.
-
-   <p>The function overriding <b>load_defaults</b> also needs to call <b>defaults
-= new BC_Hash(path);</b> with the configuration path.  See any existing
-plugin to see the usage of BC_Hash.   The function overriding
-<b>save_defaults</b> does not create <b>defaults</b>.
-
-   <p>Other standard members may be defined in the processing object,
-depending on the plugin type.
-
-<div class="node">
-<a name="THE-CONFIGURATION-OBJECT"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#THE-USER-INTERFACE-OBJECT">THE USER INTERFACE OBJECT</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#THE-PROCESSING-OBJECT">THE PROCESSING OBJECT</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMMON-PLUGIN-FUNCTIONS">COMMON PLUGIN FUNCTIONS</a>
-
-</div>
-
-<h4 class="subsection">19.2.2 THE CONFIGURATION OBJECT</h4>
-
-<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
-followed by Config.
-
-<pre class="example">     class MyPluginConfig
-     {
-     public:
-       MyPluginConfig();
-</pre>
-   <p>Following the name of the configuration class, we put in three
-required functions and the configuration variables.
-
-<pre class="example">          int equivalent(MyPluginConfig &amp;that);
-       void copy_from(MyPluginConfig &amp;that);
-       void interpolate(MyPluginConfig &amp;prev,
-               MyPluginConfig &amp;next,
-               int64_t prev_position,
-               int64_t next_position,
-               int64_t current_position);
-     
-     
-     
-       float parameter1;
-       float parameter2;
-       int parameter3;
-     };
-     
-</pre>
-   <p>Now you must define the three functions.  <b>Equivalent</b> is called by
-LOAD_CONFIGURATION_MACRO to determine if the local configuration
-parameters are identical to the configuration parameters in the
-arguement.  If equivalent returns 0, the LOAD_CONFIGURATION_MACRO
-causes the GUI to redraw.  If equivalent returns 1, the
-LOAD_CONFIGURATION_MACRO doesn't redraw the GUI.
-
-   <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
-second configuration.  Then it interpolates the two configurations to
-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
-fraction, using the arguments.
-
-<pre class="example">     void MyPluginConfig::interpolate(MyPluginConfig &amp;prev,
-               MyPluginConfig &amp;next,
-               int64_t prev_position,
-               int64_t next_position,
-               int64_t 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 fractions are applied to the previous and next configuration
-variables to yield the current values.
-
-<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
-argument if no interpolation is desired.
-
-   <p>This usage of the configuration object 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 point moves.  This is good enough for
-updating the GUI while selecting 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
-load_configuration when updating the GUI.  For process_buffer; however,
-ignore load_configuration and write your own interpolation routine
-which loads all the keyframes in a console fragment and interpolates
-every sample.  This would be really slow and hard to debug, yielding
-improvement which may not be audible.  Then of course, every country
-has its own wierdos.
-
-   <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
-with the console fragment back over 2048 of course.  The Linux sound
-drivers can't play fragments of 1 sample.
-
-<div class="node">
-<a name="THE-USER-INTERFACE-OBJECT"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#THE-CONFIGURATION-OBJECT">THE CONFIGURATION OBJECT</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#COMMON-PLUGIN-FUNCTIONS">COMMON PLUGIN FUNCTIONS</a>
-
-</div>
-
-<h4 class="subsection">19.2.3 THE USER INTERFACE OBJECT</h4>
-
-<p>The user interface object is derived from <b>PluginClientWindow</b>.  The
-user must call <b>NEW_WINDOW_MACRO</b> in the processing object to create
-the <b>PluginClientWindow</b>.  This system is used in realtime plugins but
-not in nonrealtime plugins.
-
-   <p>Nonrealtime plugins create and destroy their own GUI in their
-<b>get_parameters</b> function and there's no need for a
-<b>PluginClientWindow</b> subclass.
-
-   <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.
-
-<pre class="example">     
-     #include "guicast.h"
-     
-     MyWindow::MyWindow(MyPlugin *plugin)
-      : PluginClientWindow(plugin,
-       440,
-       500,
-       440,
-       500,
-       0)
-     {
-     
-</pre>
-   <p>This becomes a window on the screen with the size given by the arguments
-to <b>PluginClientWindow</b>.
-
-   <p>It needs two methods
-
-<pre class="example">          void create_objects();
-</pre>
-   <p>and a back pointer to the plugin
-
-<pre class="example">          MyPlugin *plugin;
-</pre>
-   <p>The create_objects member puts widgets in the window according to
-GuiCast's syntax.  A pointer to each widget which you want to
-synchronize to a configuration parameter is stored in the window class. 
-These are updated in the <b>update_gui</b> function you earlier defined for
-the plugin.  The widgets are usually derivatives of a GuiCast widget and
-they override functions in GuiCast to handle events.  Finally
-create_objects calls
-
-<pre class="example">          show_window();
-</pre>
-   <p>to make the window appear all at once.
-
-   <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 any
-copies of the plugin which are processing data.
-
-<div class="node">
-<a name="REALTIME-PLUGINS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#NONREALTIME-PLUGINS">NONREALTIME PLUGINS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#COMMON-PLUGIN-FUNCTIONS">COMMON PLUGIN FUNCTIONS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>
-
-</div>
-
-<h3 class="section">19.3 REALTIME PLUGINS</h3>
-
-<p>Realtime plugins should use PLUGIN_CLASS_MEMBERS to define the basic
-set of members in their headers.  All realtime plugins must define an
-
-<pre class="example">     int is_realtime()
-</pre>
-   <p>member returning 1.  This causes a number of methods to be called
-during live playback and the plugin to be usable on the timeline.
-
-   <p>Realtime plugins must override a member called
-
-<pre class="example">     process_buffer
-</pre>
-   <p>This function takes different arguments depending on if the plugin
-handles video or audio.  See an existing plugin to find out which usage
-applies.
-
-   <p>The main features of the process_buffer function are a buffer to store
-the output, the starting position of the output, and the requested
-output rate.  For audio, there's also a size argument for the number of
-samples.
-
-   <p>The starting position of the output buffer is the lowest numbered
-sample on the timeline if playback is forward and the highest numbered
-sample on the timeline if playback is reverse.  The direction of
-playback is determined by one of the plugin queries described below.
-
-   <p>The position and size arguments are all relative to the frame rate and
-sample rate passed to process_buffer.  This is the requested data rate
-and may not be the same as the project data rate.
-
-   <p>The process_realtime function should start by calling
-<b>load_configuration</b>.  The LOAD_CONFIGURATION_MACRO returns 1 if the
-configuration changed.
-
-   <p>After determining the plugin's configuration, input media has to be
-loaded for processing.  Call
-
-<pre class="example">     read_frame(VFrame *buffer,
-               int channel,
-               int64_t start_position,
-               double frame_rate)
-</pre>
-   <p>or
-
-<pre class="example">     read_samples(double *buffer,
-               int channel,
-               int sample_rate,
-               int64_t start_position,
-               int64_t len)
-</pre>
-   <p>to request input data from the object which comes before this plugin. 
-The read function needs a buffer to store the input data in.  This can
-either be a temporary you create in the plugin or the output buffer
-supplied to process_buffer if you don't need a temporary.
-
-   <p>It also needs a set of position arguments to determine when you want to
-read the data from.  The start position, rate, and len passed to a read
-function need not be the same as the values recieved by the
-process_buffer function.  This way plugins can read data at a different
-rate than they output data.
-
-   <p>The channel argument is only meaningful if this is a multichannel
-plugin.  They need to read data for each track in the
-get_total_buffers() value and process all the tracks.  Single channel
-plugins should pass 0 for channel.
-
-   <p>Additional members are implemented to maintain configuration in
-realtime plugins.  Some of these are also needed in nonrealtime
-plugins.
-
-     <ul>
-<li>void read_data(KeyFrame *keyframe);
-
-     <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
-<b>FileXML</b> 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
-plugin's configuration object.  Since configuration objects vary from
-plugin to plugin, these functions can't be automated.
-
-     <li>void save_data(KeyFrame *keyframe);
-
-     <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
-XML object.
-
-     <li>int load_defaults();
-
-     <p>Another way the plugin gets parameters is from a defaults file.  The
-load and save defaults routines use a BC_Hash 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 BC_Hash object is used.
-
-     <li>int save_defaults();
-
-     <p>Saves the configuration in the defaults object.
-
-   </ul>
-
-<div class="node">
-<a name="NONREALTIME-PLUGINS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#AUDIO-PLUGINS">AUDIO PLUGINS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#REALTIME-PLUGINS">REALTIME PLUGINS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>
-
-</div>
-
-<h3 class="section">19.4 NONREALTIME PLUGINS</h3>
-
-<p>Some references for non-realtime plugins are <b>Normalize</b> for audio
-and <b>Reframe</b> for video.
-
-   <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
-the plugin header.  Instead, the following methods must be defined.
-
-   <p>The nonrealtime plugin should contain a pointer to a defaults object.
-
-<pre class="example">     
-     BC_Hash *defaults;
-     
-</pre>
-   <p>It should also have a pointer to a MainProgressBar.
-
-<pre class="example">     
-     MainProgressBar *progress;
-</pre>
-   <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
-PLUGIN_CONSTRUCTOR_MACRO but must call <b>load_defaults</b> directly.
-
-   <p>The destructor, likewise, must call <b>save_defaults</b> and <b>delete
-defaults</b> directly instead of PLUGIN_DESTRUCTOR_MACRO.
-
-     <ul>
-<li>VFrame* new_picon();
-
-     <p>char* plugin_title();
-
-     <p>The usage of these is the same as realtime plugins.
-
-     <li>int is_realtime();
-
-     <p>This function must return 0 to indicate a nonrealtime plugin.
-
-     <li>
-int get_parameters();
-
-     <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
-plugin.  It should block the get_parameters function until the user
-selects OK or Cancel.
-
-     <li>int load_defaults();
-
-     <p>This should set the <b>defaults</b> variable to a new <b>Defaults</b> object
-and load parameters from the defaults object into plugin variables.
-
-     <li>int save_defaults();
-
-     <p>This should save plugin variables to the defaults object.  It should not
-create the defaults object.
-
-     <li>int start_loop();
-
-     <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
-
-     <pre class="example">          
-          progress = start_progress("MyPlugin progress...",
-               PluginClient::get_total_len());
-          
-</pre>
-     <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
-bar.  If it's 0, the progress bar has already been started.
-
-     <p>The PluginClient defines <b>get_total_len()</b> and <b>get_source_start()</b>
-to describe the timeline range to be processed.  The units are either
-samples or frames and in the project rate.
-
-     <li>int process_loop
-
-     <p>This is called repeatedly until the timeline range is processed.  It
-has either a samples or frames buffer for output and a reference to
-write_length to store the number of samples processed.  If this is an
-audio plugin, the user needs to call <b>get_buffer_size()</b> to know how
-many samples the output buffer can hold.
-
-     <p>The plugin must use <b>read_samples</b> or <b>read_frame</b> to read the
-input.  These functions are a bit different for a non realtime plugin
-than they are for a realtime plugin.
-
-     <p>They take a buffer and a position relative to the start of the
-timeline, in the timeline's rate.  Then you must process it and put the
-output in the buffer argument 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
-update the progress bar if it's 1.
-
-     <pre class="example">          progress-&gt;update(total_written);
-</pre>
-     <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.
-
-     <li>int stop_loop();
-
-     <p>This is called after process_loop processes its last buffer.
-
-     <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>
-
-<div class="node">
-<a name="AUDIO-PLUGINS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#VIDEO-PLUGINS">VIDEO PLUGINS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#NONREALTIME-PLUGINS">NONREALTIME PLUGINS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>
-
-</div>
-
-<h3 class="section">19.5 AUDIO PLUGINS</h3>
-
-<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
-
-<pre class="example">     int process_buffer(int64_t size,
-               double **buffer,
-               int64_t start_position,
-               int sample_rate);
-</pre>
-   <p>if it's multichannel or
-
-<pre class="example">     int process_buffer(int64_t size,
-               double *buffer,
-               int64_t start_position,
-               int sample_rate);
-</pre>
-   <p>if it's single channel.  These should return 0 on success and 1 on
-failure.  In the future, the return value may abort failed rendering.
-
-   <p>The processing function needs to request input samples with
-
-<pre class="example">     int read_samples(double *buffer,
-               int channel,
-               int sample_rate,
-               int64_t start_position,
-               int64_t len);
-</pre>
-   <p>It always returns 0.  The user may specify any desired sample rate and
-start position.
-
-   <p>Nonrealtime audio plugins need to define
-
-<pre class="example">     int process_loop(double *buffer, int64_t &amp;write_length);
-</pre>
-   <p>for single channel or
-
-<pre class="example">     int process_loop(double **buffers, int64_t &amp;write_length);
-</pre>
-   <p>for multi channel.  Non realtime plugins use a different set of
-read_samples functions to request input data.  These are fixed to the
-project sample rate.
-
-<div class="node">
-<a name="VIDEO-PLUGINS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TRANSITION-PLUGINS">TRANSITION PLUGINS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#AUDIO-PLUGINS">AUDIO PLUGINS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>
-
-</div>
-
-<h3 class="section">19.6 VIDEO PLUGINS</h3>
-
-<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
-
-<pre class="example">     int process_buffer(VFrame **frame,
-       int64_t start_position,
-       double frame_rate);
-</pre>
-   <p>if it's multichannel or
-
-<pre class="example">     int process_buffer(VFrame *frame,
-       int64_t start_position,
-       double frame_rate);
-</pre>
-   <p>if it's single channel.
-
-   <p>The nonrealtime video plugins need to define
-
-<pre class="example">     int process_loop(VFrame *buffer);
-</pre>
-   <p>for single channel or
-
-<pre class="example">     int process_loop(VFrame **buffers);
-</pre>
-   <p>for multi channel.  The amount of frames generated in a single
-process_loop is always assumed to be 1, hence the lack of a
-write_length argument.  Returning 0 causes the rendering to continue. 
-Returning 1 causes the rendering to abort.
-
-   <p>A set of read_frame functions exist for requesting input frames in
-non-realtime video plugins.  These are fixed to the project frame rate.
-
-<div class="node">
-<a name="TRANSITION-PLUGINS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#PLUGIN-GUI_0027S-WHICH-UPDATE-DURING-PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#VIDEO-PLUGINS">VIDEO PLUGINS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>
-
-</div>
-
-<h3 class="section">19.7 TRANSITION PLUGINS</h3>
-
-<p>The simplest video transition is <b>wipe</b> and the simplest audio
-transition is <b>crossfade</b>.  These use a subset of the default class
-members of realtime plugins, but so far no analogue to
-PLUGIN_CLASS_MEMBERS has been done for transitions.
-
-   <p>The processing object for audio transitions still inherits from
-PluginAClient and for video transitions it still inherits from
-PluginVClient.
-
-   <p>Transitions may or may not have a GUI.  If they have a GUI, they must
-also manage a thread like realtime plugins.  Do this with the same
-PLUGIN_THREAD_OBJECT and PLUGIN_THREAD_HEADER macros as realtime
-plugins.  Since there is only one keyframe in a transition, you don't
-need to worry about updating the GUI from the processing object like
-you do in a realtime plugin.
-
-   <p>If the transition has a GUI, you can use PLUGIN_CONSTRUCTOR_MACRO and
-PLUGIN_DESTRUCTOR_MACRO to initialize the processing object.  You'll
-also need a BC_Hash object and a Thread object for these macros.
-
-   <p>Since the GUI is optional, overwrite a function called <b>uses_gui()</b>
-to signifiy whether or not the transition has a GUI.  Return 1 if it
-does and 0 if it doesn't.
-
-   <p>Transitions need a <b>load_defaults</b> and <b>save_defaults</b> function so
-the first time they're dropped on the timeline they'll have useful
-settings.
-
-   <p>A <b>read_data</b> and <b>save_data</b> function takes over after insertion
-to access data specific to each instance of the transition.
-
-   <p>The most important difference between transitions and realtime plugins
-is the addition of an <b>is_transition</b> method to the processing
-object.  <b>is_transition</b> should return 1 to signify the plugin is a
-transition.
-
-   <p>Transitions process data in a <b>process_realtime</b> function.
-
-<pre class="example">     int process_realtime(VFrame *input,
-               VFrame *output);
-</pre>
-   <pre class="example">     int process_realtime(int64_t size,
-               double *input_ptr,
-               double *output_ptr);
-</pre>
-   <p>The input argument to process_realtime is the data for the next edit. 
-The output argument to process_realtime is the data for the previous
-edit.
-
-   <p>Routines exist for determining where you are relative to the
-transition's start and end.
-
-     <ul>
-<li><b>PluginClient::get_source_position()</b> - returns the current
-position since the start of the transition of the lowest sample in the
-buffers.
-
-     <li><b>PluginClient::get_total_len()</b> - returns the integer length of
-the transition.  The units are either samples or frames, in the data
-rate requested by the first plugin.
-
-   </ul>
-
-   <p>Users should divide the source position by total length to get the
-fraction of the transition the current <b>process_realtime</b> function is
-at.
-
-   <p>Transitions run in the data rate requested by the first plugin in the
-track.  This may be different than the project data rate.  Since
-process_realtime lacks a rate argument, use <b>get_framerate()</b> or
-<b>get_samplerate</b> to get the requested rate.
-
-<div class="node">
-<a name="PLUGIN-GUI'S-WHICH-UPDATE-DURING-PLAYBACK"></a>
-<a name="PLUGIN-GUI_0027S-WHICH-UPDATE-DURING-PLAYBACK"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#USING-OPENGL">USING OPENGL</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#TRANSITION-PLUGINS">TRANSITION PLUGINS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>
-
-</div>
-
-<h3 class="section">19.8 PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</h3>
-
-<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_buffer, when the processing object wants to update
-the GUI it should call <b>send_render_gui</b>.  This should only be called
-in process_buffer.  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
-
-<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>
-   <p>Send_render_gui and render_gui use one argument, a void pointer to
-transfer information from the processing object to the GUI.  The user
-should typecast this pointer into something useful.
-
-<div class="node">
-<a name="PLUGIN-QUERIES"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#USING-OPENGL">USING OPENGL</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>
-
-</div>
-
-<h3 class="section">19.9 PLUGIN QUERIES</h3>
-
-<p>There are several useful queries in PluginClient which can be accessed
-from the processing object.  Some of them have different meaning in
-realtime and non-realtime mode.  They all give information about the
-operating system or the project which can be used to improve the
-quality of the processing.
-
-<ul class="menu">
-<li><a accesskey="1" href="#SYSTEM-QUERIES">SYSTEM QUERIES</a>:  Utilities for determining the system resources. 
-<li><a accesskey="2" href="#TIMING-QUERIES">TIMING QUERIES</a>:  Utilities for performing time-dependant processing. 
-</ul>
-
-<div class="node">
-<a name="SYSTEM-QUERIES"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#TIMING-QUERIES">TIMING QUERIES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-QUERIES">PLUGIN QUERIES</a>
-
-</div>
-
-<h4 class="subsection">19.9.1 SYSTEM QUERIES</h4>
-
-     <ul>
-<li>
-<b>get_interpolation_type()</b> returns the type of interpolation the user
-wants for all scaling operations.  This is a macro from
-overlayframe.inc.  It can be applied to any call to the
-<b>OverlayFrame</b> object.
-
-     <li>
-<b>get_project_smp()</b> Gives the number of CPU's on the system minus 1. 
-If it's a uniprocessor it's 0.  If it's a dual processor, it's 1.  This
-number should be used to gain parallelism.
-
-     <li>
-<b>get_total_buffers()</b> Gives the number of tracks a multichannel
-plugin needs to process.
-
-</ul>
-
-<div class="node">
-<a name="TIMING-QUERIES"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#SYSTEM-QUERIES">SYSTEM QUERIES</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-QUERIES">PLUGIN QUERIES</a>
-
-</div>
-
-<h4 class="subsection">19.9.2 TIMING QUERIES</h4>
-
-<p>There are two rates for media a realtime plugin has to be aware of: the
-project rate and the requested rate.  Functions are provided for
-getting the project and requested rate.  In addition, doing time
-dependant effects requires using several functions which tell where you
-are in the effect.
-
-     <ul>
-<li>
-<b>get_project_framerate()</b> Gives the frames per second of the video as
-defined by the project settings.
-
-     <li>
-<b>get_project_samplerate()</b> Gives the samples per second of the audio as
-defined by the project settings.
-
-     <li>
-<b>get_framerate()</b> Gives the frames per second requested by the plugin
-after this one.  This is the requested frame rate and is the same as
-the frame_rate argument to process_buffer.
-
-     <li>
-<b>get_samplerate()</b> Gives the samples per second requested by the plugin
-after this one.  This is the requested sample rate and is the same as
-the sample_rate argument to process_buffer.
-
-     <li>
-<b>get_total_len()</b> Gives the number of samples or frames in the
-range covered by the effect, relative to the requested data rate.
-
-     <li>
-<b>get_source_start()</b> For realtime plugins it gives the lowest sample
-or frame in the effect range in the requested data rate.  For
-nonrealtime plugins it's the start of the range of the timeline to
-process.
-
-     <li>
-<b>get_source_position()</b> For realtime plugins it's the lowest numbered
-sample in the requested region to process if playing forward and the
-highest numbered sample in the region if playing backward.  For video
-it's the start of the frame if playing forward and the end of the frame
-if playing in reverse.  The position is relative to the start of the
-EDL and in the requested data rate.
-
-     <p>For transitions this is always the lowest numbered sample of the region
-to process relative to the start of the transition.
-
-     <li>
-<b>get_direction()</b> Gives the direction of the current playback
-operation.  This is a macro defined in transportque.inc.  This is
-useful for calling read functions since the read functions position
-themselves at the start or end of the region to read, depending on the
-playback operation.
-
-     <li>
-<b>local_to_edl()</b>
-
-     <li>
-<b>edl_to_local()</b>
-
-     <p>These convert between the requested data rate and the project data
-rate.  They are used to convert keyframe positions into numbers which
-can be interpolated at the requested data rate.  The conversion is
-automatically based on frame rate or sample rate depending on the type
-of plugin.
-
-     <li><b>get_prev_keyframe(int64_t position, int is_local)</b>
-
-     <li><b>get_next_keyframe(int64_t position, int is_local)</b>
-
-     <p>These give the nearest keyframe before or after the position given. 
-The macro defined version of load_configuration automatically retrieves
-the right keyframes but you may want to do this on your own.
-
-     <p>The position argument can be either in the project rate or the
-requested rate.  Set is_local to 1 if it's in the requested rate and 0
-if it's in the project rate.
-
-     <p>In each keyframe, another position value tells the keyframe's position
-relative to the start of the timeline and in the project rate.
-
-     <p>The only way to get smooth interpolation between keyframes is to
-convert the positions in the keyframe objects to the requested rate. 
-Do this by using edl_to_local on the keyframe positions.
-
-   </ul>
-
-<div class="node">
-<a name="USING-OPENGL"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#PLUGIN-QUERIES">PLUGIN QUERIES</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#PLUGIN-GUI_0027S-WHICH-UPDATE-DURING-PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>
-
-</div>
-
-<h3 class="section">19.10 USING OPENGL</h3>
-
-<p>Realtime video plugins support OpenGL.  Using OpenGL to do plugin
-routines can speed up playback greatly since it does most of the work
-in hardware.  Unfortunately, every OpenGL routine needs a software
-counterpart for rendering, doubling the amount of software to
-maintain.  Fortunately, having an OpenGL routine means the software
-version doesn't need to be as optimized as it did when software was the
-only way.
-
-   <p>As always, the best way to design a first OpenGL plugin is to copy an
-existing one and alter it.  The <b>Brightness</b> plugin is a simple
-OpenGL plugin to copy.  There are 3 main points in OpenGL rendering and
-1 point for optimizing OpenGL rendering.
-
-<ul class="menu">
-<li><a accesskey="1" href="#GETTING-OPENGL-DATA">GETTING OPENGL DATA</a>:  Getting video data in a form usable by OpenGL
-<li><a accesskey="2" href="#DRAWING-USING-OPENGL">DRAWING USING OPENGL</a>:  The method of drawing video in OpenGL
-<li><a accesskey="3" href="#USING-SHADERS">USING SHADERS</a>:  Routines to simplify shader usage
-<li><a accesskey="4" href="#AGGREGATING-PLUGINS">AGGREGATING PLUGINS</a>:  Combining OpenGL routines from different plugins into one. 
-</ul>
-
-<div class="node">
-<a name="GETTING-OPENGL-DATA"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#DRAWING-USING-OPENGL">DRAWING USING OPENGL</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#USING-OPENGL">USING OPENGL</a>
-
-</div>
-
-<h4 class="subsection">19.10.1 GETTING OPENGL DATA</h4>
-
-<p>The first problem is getting OpenGL-enabled plugins to interact with
-software-only plugins.  To solve this, all the information required to
-do OpenGL playback is stored in the VFrame object which is passed to
-<b>process_buffer</b>.  To support 3D, the VFrame contains a PBuffer and a
-texture, in addition to VFrame's original rows.
-
-   <p>In OpenGL mode, VFrame has 3 states corresponding to the location of
-its video data.  The opengl state is recovered by calling
-<b>get_opengl_state</b> and is set by calling <b>set_opengl_state</b>.  The
-states are:
-
-     <ul>
-<li>
-<b>VFrame::RAM</b> - This means the video data is stored in the
-traditional row pointers.  It must be loaded into a texture before
-being drawn using OpenGL routines.
-
-     <li><b>VFrame::TEXTURE</b> - The video data is stored in texture
-memory.  It's ready to be drawn using OpenGL routines.
-
-     <li><b>VFrame::SCREEN</b> - The video data is stored in a frame buffer
-in the graphics card.  For plugins, the frame buffer is always a
-PBuffer.  The image on the frame buffer can't be replicated again
-unless it is read back into the texture and the opengl state is reset
-to TEXTURE.  The frame buffer is limited to 8 bits per channel.  If an
-OpenGL effect is used in a floating point project, it only retains 8
-bits.
-
-   </ul>
-
-   <p>In the plugin's <b>process_buffer</b> routine, there is normally a call to
-<b>read_frame</b> to get data from the previous plugin in the chain. 
-<b>read_frame</b> takes a new parameter called <b>use_opengl</b>.
-
-   <p>The plugin passes 1 to <b>use_opengl</b> if it intends to handle the data
-using OpenGL.  It passes 0 to <b>use_opengl</b> if it can only handle the
-data using software.  The value of <b>use_opengl</b> is passed up the
-chain to ensure a plugin which only does software only gets the data in
-the row pointers.  If <b>use_opengl</b> is 0, the opengl state in VFrame
-is RAM.
-
-   <p>The plugin must not only know if it is software-only but if its output
-must be software only.  Call <b>get_use_opengl</b> to determine if the
-output can be handled by OpenGL.  If <b>get_use_opengl</b> returns 0, the
-plugin must pass 0 for <b>use_opengl</b> in <b>read_frame</b> and do its
-processing in software.  If <b>get_use_opengl</b> is 1, the plugin can
-decide based on its implementation whether to use OpenGL.
-
-   <p>The main problem with OpenGL is that all the gl... calls need to be run
-from the same thread.  To work around this, the plugin interface has
-routines for running OpenGL in a common thread.
-
-   <p><b>run_opengl</b> transfers control to the common OpenGL thread.  This is
-normally called by the plugin in <b>process_buffer</b> after it calls
-<b>read_frame</b> and only if <b>get_use_opengl</b> is 1.
-
-   <p>Through a series of indirections, <b>run_opengl</b> eventually transfers
-control to a virtual function called <b>handle_opengl</b>. 
-<b>handle_opengl</b> must be overridden with a function to perform all the
-OpenGL routines.  The contents of <b>handle_opengl</b> must be enclosed in
-<b>#ifdef HAVE_GL</b> ... <b>#endif</b> to allow it to be compiled on systems
-with no graphics support, like render nodes.  The return value of
-<b>handle_opengl</b> is passed back from <b>run_opengl</b>.
-
-   <p><b>read_frame</b> can't be called from inside <b>handle_opengl</b>.  This
-would create a recursive lockup because it would cause other objects to
-call <b>run_opengl</b>.
-
-   <p>Once inside <b>handle_opengl</b>, the plugin has full usage of all the
-OpenGL features.  VFrame provides some functions to automate common
-OpenGL sequences.
-
-   <p>The VFrame argument to <b>process_buffer</b> is always available through
-the <b>get_output(int layer)</b> function.  If the plugin is multichannel,
-the layer argument retrieves a specific layer of the output buffers. 
-The PBuffer of the output buffer is where the OpenGL output must go if
-any processing is done.
-
-<div class="node">
-<a name="DRAWING-USING-OPENGL"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#USING-SHADERS">USING SHADERS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#GETTING-OPENGL-DATA">GETTING OPENGL DATA</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#USING-OPENGL">USING OPENGL</a>
-
-</div>
-
-<h4 class="subsection">19.10.2 DRAWING USING OPENGL</h4>
-
-<p>The sequence of commands to draw on the output PBuffer stars with
-getting the video in a memory area where it can be recalled for
-drawing:
-
-<pre class="example">     get_output()-&gt;to_texture();
-     get_output()-&gt;enable_opengl();
-</pre>
-   <p><b>to_texture</b> transfers the OpenGL data from wherever it is to the
-output's texture memory and sets the output state to TEXTURE.
-
-   <p><b>enable_opengl</b> makes the OpenGL context relative to the output's
-PBuffer.
-
-   <p>The next step is to draw the texture with some processing on the
-PBuffer.  The normal sequence of commands to draw a texture is:
-
-<pre class="example">     get_output()-&gt;init_screen();
-     get_output()-&gt;bind_texture(0);
-     get_output()-&gt;draw_texture();
-</pre>
-   <p><b>VFrame::init_screen</b> sets the OpenGL frustum and parameters to known
-values.
-
-   <p><b>VFrame::bind_texture(int texture_unit)</b> binds the texture to the given
-texture unit and enables it.
-
-   <p><b>VFrame::draw_texture()</b> calls the vertex functions to draw the
-texture normalized to the size of the PBuffer.  Copy this if you want
-custom vertices.
-
-   <p>The last step in the handle_opengl routine, after the texture has been
-drawn on the PBuffer, is to set the output's opengl state to SCREEN
-with a call to <b>VFrame::set_opengl_state</b>.  The plugin should not
-read back the frame buffer into a texture or row pointers if it has no
-further processing.  Plugins should only leave the output in the
-texture or RAM if its location results from normal processing.  They
-should set the opengl state to RAM or TEXTURE if they do.
-
-   <p><b>Colormodels in OpenGL</b>
-
-   <p>The colormodel exposed to OpenGL routines is always floating point since
-that is what OpenGL uses, but it may be YUV or RGB depending on the
-project settings.  If it's YUV, the U &amp; V are offset by 0.5 just like in
-software.  Passing YUV colormodels to plugins was necessary for speed. 
-The other option was to convert YUV to RGB in the first step that needed
-OpenGL.  Every effect and rendering step would have needed a YUV to RGB
-routine.  With the YUV retained, only the final compositing step needs a
-YUV to RGB routine.
-
-   <p>The OpenGL mode differentiates between alpha &amp; flat colormodels even
-though OpenGL always has an alpha channel.  For RGB colormodels, you
-must multiply the alpha component by the RGB &amp; set the alpha component
-to 1 whenever the colormodel has no alpha to ensure consistency with the
-software mode.
-
-<pre class="example">     Rout = Rin * Ain
-     Gout = Gin * Ain
-     Bout = Bin * Ain
-     Aout = 1
-</pre>
-   <p>For YUV colormodels, you must multiply the alpha using the following
-formula.
-
-<pre class="example">     Yout = Yin * Ain
-     Uout = Uin * Ain + 0.5 * (1 - Ain)
-     Vout = Vin * Ain + 0.5 * (1 - Ain)
-     Aout = 1
-</pre>
-   <div class="node">
-<a name="USING-SHADERS"></a>
-<p><hr>
-Next:&nbsp;<a rel="next" accesskey="n" href="#AGGREGATING-PLUGINS">AGGREGATING PLUGINS</a>,
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#DRAWING-USING-OPENGL">DRAWING USING OPENGL</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#USING-OPENGL">USING OPENGL</a>
-
-</div>
-
-<h4 class="subsection">19.10.3 USING SHADERS</h4>
-
-<p>Very few effects can do anything useful with just a straight drawing of
-the texture on the PBuffer.  It's also not easy to figure out exactly
-what math is being used by the different OpenGL blending macros. 
-Normally you'll use shaders.  The shader is a C program which runs on
-the graphics card.  Since the graphics card is optimized for graphics,
-it can be much faster than running it on the CPU.
-
-   <p>Shaders are written in OpenGL Shading Language.  The shader source code
-is contained in a string.  The normal sequence for using a shader comes
-after a call to <b>enable_opengl</b>.
-
-<pre class="example">     char *shader_source = "...";
-     unsigned char shader_id = VFrame::make_shader(0, shader_source, 0);
-     glUseProgram(shader_id);
-     // Set uniform variables using glUniform commands
-</pre>
-   <p>The compilation and linking step for shaders is encapsulated by the
-VFrame::make_shader command.  It returns a shader_id which can be
-passed to OpenGL functions.  The first and last arguments must always
-by 0.  And arbitrary number of source strings may be put between the
-0's.  The source strings are concatenated by make_shader into one huge
-shader source.  If multiple main functions are in the sources, the main
-functions are renamed and run in order.
-
-   <p>There are a number of useful macros for shaders in playback3d.h.  All
-the shaders so far have been fragment shaders.  After the shader is
-initialized, draw the texture starting from <b>init_screen</b>.  The
-shader program must be disabled with another call to
-<b>glUseProgram(0)</b> and 0 as the argument.
-
-   <p>The shader_id and source code is stored in memory as long as Cinelerra
-runs.  Future calls to make_shader with the same source code run much
-faster.
-
-<div class="node">
-<a name="AGGREGATING-PLUGINS"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#USING-SHADERS">USING SHADERS</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#USING-OPENGL">USING OPENGL</a>
-
-</div>
-
-<h4 class="subsection">19.10.4 AGGREGATING PLUGINS</h4>
-
-<p>Further speed improvements may be obtained by combining OpenGL routines
-from two plugins into a single handle_opengl function.  This is done
-when <b>Frame to Fields</b> and <b>RGB to 601</b> are attached in order. 
-Aggregations of more than two plugins are possible but very hard to get
-working.  Aggregation is useful for OpenGL because each plugin must
-copy the video from a texture to a PBuffer.  In software there was no
-copy operation.
-
-   <p>In aggregation, one plugin processes everything from the other plugins
-and the other plugins fall through.  The fall through plugins must copy
-their parameters to the output buffer so they can be detected by the
-processing plugin.
-
-   <p>The VFrame used as the output buffer contains a parameter table for
-parameter passing between plugins and it's accessed with
-<b>get_output()-&gt;get_params()</b>.  Parameters are set and retrieved in
-the table with calls to <b>update</b> and <b>get</b> just like with defaults.
-
-   <p>The fall through plugins must determine if the processor plugin is
-attached with calls to <b>next_effect_is</b> and <b>prev_effect_is</b>. 
-These take the name of the processor plugin as a string argument and
-return 1 if the next or previous plugin is the processor plugin.  If
-either returns 1, the fall through plugin must still call <b>read_frame</b> to
-propogate the data but return after that.
-
-   <p>The processor plugin must call <b>next_effect_is</b> and
-<b>prev_effect_is</b> to determine if it's aggregated with a fall through
-plugin.  If it is, it must perform the operations of the fall through
-plugin in its OpenGL routine.  The parameters for the the fall through
-plugin should be available by <b>get_output()-&gt;get_params()</b> if the
-fall through plugin set them.
-
-<div class="node">
-<a name="KEYBOARD-SHORTCUTS"></a>
-<p><hr>
-Previous:&nbsp;<a rel="previous" accesskey="p" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>,
-Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">20 KEYBOARD SHORTCUTS</h2>
-
-<p>Alex Ferrer started summarizing most of the keyboard shortcuts.  Most
-of the keys work without any modifier like shift or ctrl.  Most windows
-can be closed with a <b>Ctrl-w</b>.  Most operations can be cancelled with
-<b>ESC</b> and accepted with <b>Enter</b>.
-
-<h3 class="section">20.1 PROGRAM WINDOW</h3>
-
-<h4 class="subsection">20.1.1 Editing Media</h4>
-
-<pre class="example">     z         Undo
-     Shift Z   Re-Do
-     x         Cut
-     c         Copy
-     v         Paste
-     Del       Clear
-     Shift Spc Paste Silence
-     m         Mute region
-     a         Select all
-     shift + click   When done over an edit causes the highlighted selection to extend to the cursor position.
-                     When done over the boundary of an effect causes the trim operation to apply to one effect.
-</pre>
-<h4 class="subsection">20.1.2 Editing Labels &amp; In/Out Points</h4>
-
-<pre class="example">     [             Toggle In point
-     ]             Toggle Out point
-     l             Toggle label at current position
-     Ctrl &lt;-       Go to Previous Label
-     Ctrl -&gt;       Go to Next Label
-</pre>
-<h4 class="subsection">20.1.3 Navigation</h4>
-
-<pre class="example">     Right arrow      Move right*
-     Left arrow       Move left*
-     Up arrow         Zoom out*
-     Down arrow       Zoom in*
-     Ctrl Up          Expand waveform amplitude
-     Ctrl Dn          Shrink waveform amplitude
-     Alt Up           Expand curve amplitude
-     Alt Dn           Shrink curve amplitude
-     f                Fit time displayed to selection
-     Alt f            Fit curve amplitude to highlighted section of curves
-     Alt Left         Move left one edit
-     Alt Right        Move right one edit
-     Page Up          Move up*
-     Page Dn          Move down*
-     Ctrl Page Up     Expand track height
-     Ctrl Page Dn     Shrink track height
-     Home             Go to beginning of timeline*
-     End              Go to end of timeline*
-     
-</pre>
-   <p>* You may have to click on the timeline to deactivate any text boxes or
-tumblers before these work.
-
-<h4 class="subsection">20.1.4 File operations</h4>
-
-<pre class="example">     n         New project
-     o         Load Files
-     s         Save Project
-     r         Record
-     Shift R   Render
-     q         Quit
-     Shift P   Preferences
-     Shift B   Batch Render
-     Shift F   Set Format
-</pre>
-<h4 class="subsection">20.1.5 Key Frame Editing</h4>
-
-<pre class="example">     
-     Shift X    Cut keyframes
-     Shift C    Copy keyframes
-     Shift V    Paste keyframes
-     Shift Del  Clear keyframes
-     Alt c      Copy default keyframe
-     Alt v      Paste default keyframe
-     
-</pre>
-<h4 class="subsection">20.1.6 Track Manipulation</h4>
-
-<pre class="example">     
-     t          Add Audio Track
-     u          Insert default Audio Transition
-     Shift T    Add Video Track
-     Shift U    Insert Default Video Transition
-     d          Delete last Track
-     Shift L    Loop playback
-     Tab        Toggle single track arming status
-     Shift-Tab  Toggle every other track's arming status
-     
-</pre>
-<h4 class="subsection">20.1.7 What's drawn on the timeline</h4>
-
-<pre class="example">     
-     1         Show titles
-     2         Show transitions
-     3         Fade keyframes
-     4         Mute keyframes
-     5         Mode keyframes
-     6         Pan keyframes
-     7         Camera keyframes
-     8         Projector keyframes
-     9         Plugin keyframes
-     0         Mask keyframes
-     -         Camera Zoom
-     =         Projector Zoom
-     
-</pre>
-<h3 class="section">20.2 VIEWER &amp; COMPOSITOR WINDOWS</h3>
-
-<pre class="example">     
-     x         Cut
-     c         Copy
-     v         Paste
-     v         Splice
-     b         Overwrite
-     [         Toggle In point
-     ]         Toggle Out point
-     l         Toggle label at current position
-     Ctrl &lt;-   Go to Previous Label
-     Ctrl -&gt;   Go to Next Label
-     Home      Go to beginning
-     End       Go to end
-     z         Undo
-     Shift Z   Re-Do
-     +         Zoom in
-     -         Zoom out
-     
-</pre>
-<h3 class="section">20.3 PLAYBACK TRANSPORT</h3>
-
-<p>Transport controls work in any window which has a playback transport.  They are
-accessed through the number pad with num lock disabled.
-
-<pre class="example">     4 Frame back         5 Reverse Slow     6 Reverse      + Reverse Fast
-     1 Frame Forward      2 Forward Slow     3 Play     Enter Fast Forward
-     0 Stop
-     
-</pre>
-   <p>[ Space bar ] is normal Play, Hitting any key twice is Pause.
-
-   <p>Hitting any transport control with CTRL down causes only the region
-between the in/out points to be played, if in/out points are defined.
-
-<h3 class="section">20.4 RECORD WINDOW</h3>
-
-<pre class="example">     
-     Space              Start and pause recording of the current batch
-     l                  Toggle label at current position.
-     
-</pre>
-</body></html>
-