+++ /dev/null
-<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: <a rel="next" accesskey="n" href="#ABOUT-CINELERRA">ABOUT CINELERRA</a>,
-Up: <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 © 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 & 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 & 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 & 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: <a rel="next" accesskey="n" href="#INSTALLATION">INSTALLATION</a>,
-Previous: <a rel="previous" accesskey="p" href="#Top">Top</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</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: <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: <a rel="next" accesskey="n" href="#CONFIGURATION">CONFIGURATION</a>,
-Previous: <a rel="previous" accesskey="p" href="#ABOUT-CINELERRA">ABOUT CINELERRA</a>,
-Up: <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: <a rel="next" accesskey="n" href="#COMPILING-FROM-SCRATCH">COMPILING FROM SCRATCH</a>,
-Up: <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: <a rel="next" accesskey="n" href="#RUNNING-CINELERRA">RUNNING CINELERRA</a>,
-Previous: <a rel="previous" accesskey="p" href="#INSTALLING-AN-RPM">INSTALLING AN RPM</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#COMPILING-FROM-SCRATCH">COMPILING FROM SCRATCH</a>,
-Up: <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: <a rel="next" accesskey="n" href="#CREATING-A-NEW-PROJECT">CREATING A NEW PROJECT</a>,
-Previous: <a rel="previous" accesskey="p" href="#INSTALLATION">INSTALLATION</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>,
-Previous: <a rel="previous" accesskey="p" href="#ENVIRONMENT-VARIABLES">ENVIRONMENT VARIABLES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#OSS">OSS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#OSS-Envy24">OSS Envy24</a>,
-Previous: <a rel="previous" accesskey="p" href="#COMMON-SOUND-DRIVER-ATTRIBUTES">COMMON SOUND DRIVER ATTRIBUTES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#ALSA">ALSA</a>,
-Previous: <a rel="previous" accesskey="p" href="#OSS">OSS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#ESOUND">ESOUND</a>,
-Previous: <a rel="previous" accesskey="p" href="#OSS-Envy24">OSS Envy24</a>,
-Up: <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: <a rel="next" accesskey="n" href="#RAW-1394">RAW 1394</a>,
-Previous: <a rel="previous" accesskey="p" href="#ALSA">ALSA</a>,
-Up: <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: <a rel="next" accesskey="n" href="#DV-1394">DV 1394</a>,
-Previous: <a rel="previous" accesskey="p" href="#ESOUND">ESOUND</a>,
-Up: <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: <a rel="next" accesskey="n" href="#IEC-61883">IEC 61883</a>,
-Previous: <a rel="previous" accesskey="p" href="#RAW-1394">RAW 1394</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#DV-1394">DV 1394</a>,
-Up: <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: <a rel="next" accesskey="n" href="#PLAYBACK">PLAYBACK</a>,
-Previous: <a rel="previous" accesskey="p" href="#AUDIO-DRIVERS">AUDIO DRIVERS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#X11">X11</a>,
-Up: <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: <a rel="next" accesskey="n" href="#X11_002dXV">X11-XV</a>,
-Previous: <a rel="previous" accesskey="p" href="#COMMON-VIDEO-DRIVER-ATTRIBUTES">COMMON VIDEO DRIVER ATTRIBUTES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#X11_002dOPENGL">X11-OPENGL</a>,
-Previous: <a rel="previous" accesskey="p" href="#X11">X11</a>,
-Up: <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: <a rel="next" accesskey="n" href="#BUZ">BUZ</a>,
-Previous: <a rel="previous" accesskey="p" href="#X11_002dXV">X11-XV</a>,
-Up: <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: <a rel="next" accesskey="n" href="#RAW-1394-VIDEO-PLAYBACK">RAW 1394 VIDEO PLAYBACK</a>,
-Previous: <a rel="previous" accesskey="p" href="#X11_002dOPENGL">X11-OPENGL</a>,
-Up: <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: <a rel="next" accesskey="n" href="#DV-1394-VIDEO-PLAYBACK">DV 1394 VIDEO PLAYBACK</a>,
-Previous: <a rel="previous" accesskey="p" href="#BUZ">BUZ</a>,
-Up: <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: <a rel="next" accesskey="n" href="#IEC-61883-VIDEO-PLAYBACK">IEC 61883 VIDEO PLAYBACK</a>,
-Previous: <a rel="previous" accesskey="p" href="#RAW-1394-VIDEO-PLAYBACK">RAW 1394 VIDEO PLAYBACK</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#DV-1394-VIDEO-PLAYBACK">DV 1394 VIDEO PLAYBACK</a>,
-Up: <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: <a rel="next" accesskey="n" href="#RECORDING">RECORDING</a>,
-Previous: <a rel="previous" accesskey="p" href="#VIDEO-DRIVERS">VIDEO DRIVERS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#VIDEO-OUT">VIDEO OUT</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#AUDIO-OUT">AUDIO OUT</a>,
-Up: <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: <a rel="next" accesskey="n" href="#PERFORMANCE">PERFORMANCE</a>,
-Previous: <a rel="previous" accesskey="p" href="#PLAYBACK">PLAYBACK</a>,
-Up: <a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
-
-</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->Record...</b>. The intention was to make <b>File->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: <a rel="next" accesskey="n" href="#AUDIO-IN">AUDIO IN</a>,
-Up: <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: <a rel="next" accesskey="n" href="#VIDEO-IN">VIDEO IN</a>,
-Previous: <a rel="previous" accesskey="p" href="#FILE-FORMAT">FILE FORMAT</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#AUDIO-IN">AUDIO IN</a>,
-Up: <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: <a rel="next" accesskey="n" href="#INTERFACE">INTERFACE</a>,
-Previous: <a rel="previous" accesskey="p" href="#RECORDING">RECORDING</a>,
-Up: <a rel="up" accesskey="u" href="#CONFIGURATION">CONFIGURATION</a>
-
-</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: <a rel="next" accesskey="n" href="#RENDERFARM">RENDERFARM</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#BACKGROUND-RENDERING">BACKGROUND RENDERING</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#ABOUT">ABOUT</a>,
-Previous: <a rel="previous" accesskey="p" href="#PERFORMANCE">PERFORMANCE</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#INTERFACE">INTERFACE</a>,
-Up: <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: <a rel="next" accesskey="n" href="#THE-MAIN-WINDOWS">THE MAIN WINDOWS</a>,
-Previous: <a rel="previous" accesskey="p" href="#CONFIGURATION">CONFIGURATION</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#CHANGING-PARAMETERS-AFTER-LOADING">CHANGING PARAMETERS AFTER LOADING</a>,
-Up: <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->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 -> 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 -> 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 -> 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 -> 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 -> 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 -> 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 -> 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 -> 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 -> 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: <a rel="previous" accesskey="p" href="#USING-THE-NEW-PROJECT-DIALOG">USING THE NEW PROJECT DIALOG</a>,
-Up: <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->Set
-format</b>.
-
- <p>Most of the options are identical to the <b>File->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: <a rel="next" accesskey="n" href="#LOADING-AND-SAVING-FILES">LOADING AND SAVING FILES</a>,
-Previous: <a rel="previous" accesskey="p" href="#CREATING-A-NEW-PROJECT">CREATING A NEW PROJECT</a>,
-Up: <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: <a rel="next" accesskey="n" href="#COMPOSITOR">COMPOSITOR</a>,
-Up: <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: <a rel="next" accesskey="n" href="#PROGRAM">PROGRAM</a>,
-Previous: <a rel="previous" accesskey="p" href="#VIEWER">VIEWER</a>,
-Up: <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: <a rel="next" accesskey="n" href="#MAGNIFYING-GLASS">MAGNIFYING GLASS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#MASKS-TOOL">MASKS TOOL</a>,
-Previous: <a rel="previous" accesskey="p" href="#PROTECT-VIDEO">PROTECT VIDEO</a>,
-Up: <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: <a rel="next" accesskey="n" href="#CAMERA">CAMERA</a>,
-Previous: <a rel="previous" accesskey="p" href="#MAGNIFYING-GLASS">MAGNIFYING GLASS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#PROJECTOR">PROJECTOR</a>,
-Previous: <a rel="previous" accesskey="p" href="#MASKS-TOOL">MASKS TOOL</a>,
-Up: <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: <a rel="next" accesskey="n" href="#CROP-TOOL">CROP TOOL</a>,
-Previous: <a rel="previous" accesskey="p" href="#CAMERA">CAMERA</a>,
-Up: <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: <a rel="next" accesskey="n" href="#EYEDROPPER">EYEDROPPER</a>,
-Previous: <a rel="previous" accesskey="p" href="#PROJECTOR">PROJECTOR</a>,
-Up: <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: <a rel="next" accesskey="n" href="#TOOL-INFO">TOOL INFO</a>,
-Previous: <a rel="previous" accesskey="p" href="#CROP-TOOL">CROP TOOL</a>,
-Up: <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: <a rel="next" accesskey="n" href="#SAFE-REGIONS-TOOL">SAFE REGIONS TOOL</a>,
-Previous: <a rel="previous" accesskey="p" href="#EYEDROPPER">EYEDROPPER</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#TOOL-INFO">TOOL INFO</a>,
-Up: <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: <a rel="next" accesskey="n" href="#RESOURCES">RESOURCES</a>,
-Previous: <a rel="previous" accesskey="p" href="#COMPOSITOR">COMPOSITOR</a>,
-Up: <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: <a rel="next" accesskey="n" href="#SOUND-LEVEL-METERS">SOUND LEVEL METERS</a>,
-Previous: <a rel="previous" accesskey="p" href="#PROGRAM">PROGRAM</a>,
-Up: <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: <a rel="next" accesskey="n" href="#OTHER-WINDOWS">OTHER WINDOWS</a>,
-Previous: <a rel="previous" accesskey="p" href="#RESOURCES">RESOURCES</a>,
-Up: <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->preferences->interface</b> (See <a href="#INTERFACE">INTERFACE</a>.)
-
-<div class="node">
-<a name="OTHER-WINDOWS"></a>
-<p><hr>
-Previous: <a rel="previous" accesskey="p" href="#SOUND-LEVEL-METERS">SOUND LEVEL METERS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#NAVIGATING-THE-PROJECT">NAVIGATING THE PROJECT</a>,
-Previous: <a rel="previous" accesskey="p" href="#THE-MAIN-WINDOWS">THE MAIN WINDOWS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#LOADING-FILES">LOADING FILES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#MPEG_002d4-AUDIO">MPEG-4 AUDIO</a>,
-Up: <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: <a rel="next" accesskey="n" href="#IMAGE-SEQUENCES">IMAGE SEQUENCES</a>,
-Previous: <a rel="previous" accesskey="p" href="#QUICKTIME">QUICKTIME</a>,
-Up: <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: <a rel="next" accesskey="n" href="#STILL-IMAGES">STILL IMAGES</a>,
-Previous: <a rel="previous" accesskey="p" href="#MPEG_002d4-AUDIO">MPEG-4 AUDIO</a>,
-Up: <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: <a rel="next" accesskey="n" href="#AVI">AVI</a>,
-Previous: <a rel="previous" accesskey="p" href="#IMAGE-SEQUENCES">IMAGE SEQUENCES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#RAW-DIGITAL-CAMERA-IMAGES">RAW DIGITAL CAMERA IMAGES</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#OPEN-EXR-IMAGES">OPEN EXR IMAGES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#MPEG-FILES-CONTAINING-VIDEO">MPEG FILES CONTAINING VIDEO</a>,
-Previous: <a rel="previous" accesskey="p" href="#STILL-IMAGES">STILL IMAGES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#DVD-MOVIES">DVD MOVIES</a>,
-Previous: <a rel="previous" accesskey="p" href="#AVI">AVI</a>,
-Up: <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: <a rel="next" accesskey="n" href="#MPEG-1-AUDIO">MPEG 1 AUDIO</a>,
-Previous: <a rel="previous" accesskey="p" href="#MPEG-FILES-CONTAINING-VIDEO">MPEG FILES CONTAINING VIDEO</a>,
-Up: <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: <a rel="next" accesskey="n" href="#OGG-THEORA_002fVORBIS">OGG THEORA/VORBIS</a>,
-Previous: <a rel="previous" accesskey="p" href="#DVD-MOVIES">DVD MOVIES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#EDIT-DECISION-LIST">EDIT DECISION LIST</a>,
-Previous: <a rel="previous" accesskey="p" href="#MPEG-1-AUDIO">MPEG 1 AUDIO</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#OGG-THEORA_002fVORBIS">OGG THEORA/VORBIS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#LOADING-THE-BACKUP">LOADING THE BACKUP</a>,
-Previous: <a rel="previous" accesskey="p" href="#SUPPORTED-FILE-FORMATS">SUPPORTED FILE FORMATS</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#LOADING-MULTIPLE-FILES">LOADING MULTIPLE FILES</a>,
-Up: <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 & 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, & 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: <a rel="previous" accesskey="p" href="#INSERTION-STRATEGY">INSERTION STRATEGY</a>,
-Up: <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: <a rel="next" accesskey="n" href="#SAVING-FILES">SAVING FILES</a>,
-Previous: <a rel="previous" accesskey="p" href="#LOADING-FILES">LOADING FILES</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#RENDERING-FILES">RENDERING FILES</a>,
-Previous: <a rel="previous" accesskey="p" href="#LOADING-THE-BACKUP">LOADING THE BACKUP</a>,
-Up: <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->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: <a rel="previous" accesskey="p" href="#SAVING-FILES">SAVING FILES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#BATCH-RENDERING">BATCH RENDERING</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#THE-RENDER-FARM">THE RENDER FARM</a>,
-Previous: <a rel="previous" accesskey="p" href="#SINGLE-FILE-RENDERING">SINGLE FILE RENDERING</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#COMMAND-LINE-RENDERING">COMMAND LINE RENDERING</a>,
-Previous: <a rel="previous" accesskey="p" href="#BATCH-RENDERING">BATCH RENDERING</a>,
-Up: <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->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: <a rel="previous" accesskey="p" href="#THE-RENDER-FARM">THE RENDER FARM</a>,
-Up: <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->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->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: <a rel="next" accesskey="n" href="#EDITING">EDITING</a>,
-Previous: <a rel="previous" accesskey="p" href="#LOADING-AND-SAVING-FILES">LOADING AND SAVING FILES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#NAVIGATING-THE-VIEWER-AND-COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>,
-Up: <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: <a rel="next" accesskey="n" href="#THE-IN_002fOUT-POINTS">THE IN/OUT POINTS</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#USING-LABELS-IN-THE-PROGRAM-WINDOW">USING LABELS IN THE PROGRAM WINDOW</a>,
-Previous: <a rel="previous" accesskey="p" href="#THE-INSERTION-POINT">THE INSERTION POINT</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#THE-IN_002fOUT-POINTS">THE IN/OUT POINTS</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#NAVIGATING-THE-RESOURCES">NAVIGATING THE RESOURCES</a>,
-Previous: <a rel="previous" accesskey="p" href="#NAVIGATING-THE-PROGRAM-WINDOW">NAVIGATING THE PROGRAM WINDOW</a>,
-Up: <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: <a rel="next" accesskey="n" href="#USING-THE-TRANSPORT-CONTROLS">USING THE TRANSPORT CONTROLS</a>,
-Previous: <a rel="previous" accesskey="p" href="#NAVIGATING-THE-VIEWER-AND-COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR</a>,
-Up: <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: <a rel="next" accesskey="n" href="#USING-BACKGROUND-RENDERING">USING BACKGROUND RENDERING</a>,
-Previous: <a rel="previous" accesskey="p" href="#NAVIGATING-THE-RESOURCES">NAVIGATING THE RESOURCES</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#USING-THE-TRANSPORT-CONTROLS">USING THE TRANSPORT CONTROLS</a>,
-Up: <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->preferences->performance.
-It has one interactive function: <b>settings->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->set background render right before the effect to preview it
-in full framerates.
-
-<div class="node">
-<a name="EDITING"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#USING-EFFECTS">USING EFFECTS</a>,
-Previous: <a rel="previous" accesskey="p" href="#NAVIGATING-THE-PROJECT">NAVIGATING THE PROJECT</a>,
-Up: <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: <a rel="next" accesskey="n" href="#NUDGING-TRACKS">NUDGING TRACKS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#PANNING-TRACKS">PANNING TRACKS</a>,
-Previous: <a rel="previous" accesskey="p" href="#THE-PATCHBAY">THE PATCHBAY</a>,
-Up: <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: <a rel="next" accesskey="n" href="#AUTOMATIC-TRACK-PANNING">AUTOMATIC TRACK PANNING</a>,
-Previous: <a rel="previous" accesskey="p" href="#NUDGING-TRACKS">NUDGING TRACKS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#STANDARD-AUDIO-MAPPINGS">STANDARD AUDIO MAPPINGS</a>,
-Previous: <a rel="previous" accesskey="p" href="#PANNING-TRACKS">PANNING TRACKS</a>,
-Up: <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->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->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->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: <a rel="next" accesskey="n" href="#MANIPULATING-TRACKS">MANIPULATING TRACKS</a>,
-Previous: <a rel="previous" accesskey="p" href="#AUTOMATIC-TRACK-PANNING">AUTOMATIC TRACK PANNING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#TWO-SCREEN-EDITING">TWO SCREEN EDITING</a>,
-Previous: <a rel="previous" accesskey="p" href="#STANDARD-AUDIO-MAPPINGS">STANDARD AUDIO MAPPINGS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#DRAG-AND-DROP-EDITING">DRAG AND DROP EDITING</a>,
-Previous: <a rel="previous" accesskey="p" href="#MANIPULATING-TRACKS">MANIPULATING TRACKS</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#CUT-AND-PASTE-EDITING">CUT AND PASTE EDITING</a>,
-Previous: <a rel="previous" accesskey="p" href="#TWO-SCREEN-EDITING">TWO SCREEN EDITING</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#TRIMMING">TRIMMING</a>,
-Previous: <a rel="previous" accesskey="p" href="#DRAG-AND-DROP-EDITING">DRAG AND DROP EDITING</a>,
-Up: <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->clear</b>
-operation. If a region is highlighted or in/out points exist, the
-affected region is cleared by <b>edit->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: <a rel="previous" accesskey="p" href="#CUT-AND-PASTE-EDITING">CUT AND PASTE EDITING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#SETTING-PROJECT-ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>,
-Previous: <a rel="previous" accesskey="p" href="#EDITING">EDITING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#RENDERED-EFFECTS">RENDERED EFFECTS</a>,
-Up: <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->Attach effect...</b> or <b>Video->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: <a rel="next" accesskey="n" href="#EDITING-REALTIME-EFFECTS">EDITING REALTIME EFFECTS</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#REALTIME-EFFECT-TYPES">REALTIME EFFECT TYPES</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#TRANSITIONS">TRANSITIONS</a>,
-Previous: <a rel="previous" accesskey="p" href="#REALTIME-EFFECTS">REALTIME EFFECTS</a>,
-Up: <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 &
-was considered major number crunching.
-
- <p>The rendered effects are not listed in the resource window but instead
-are accessed through the <b>Audio->Render effect</b> and
-<b>Video->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: <a rel="next" accesskey="n" href="#LADSPA-EFFECTS">LADSPA EFFECTS</a>,
-Previous: <a rel="previous" accesskey="p" href="#RENDERED-EFFECTS">RENDERED EFFECTS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#EFFECT-PRESETS">EFFECT PRESETS</a>,
-Previous: <a rel="previous" accesskey="p" href="#TRANSITIONS">TRANSITIONS</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#LADSPA-EFFECTS">LADSPA EFFECTS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#COMPOSITING">COMPOSITING</a>,
-Previous: <a rel="previous" accesskey="p" href="#USING-EFFECTS">USING EFFECTS</a>,
-Up: <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->Set Format</b> and in
-to a more limited extent in <b>File->New</b>. When you adjust project
-settings in <b>file->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->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: <a rel="next" accesskey="n" href="#COLOR-MODEL">COLOR MODEL</a>,
-Up: <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: <a rel="next" accesskey="n" href="#ASPECT-RATIO">ASPECT RATIO</a>,
-Previous: <a rel="previous" accesskey="p" href="#AUDIO-CHANNEL-POSITIONS">AUDIO CHANNEL POSITIONS</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#COLOR-MODEL">COLOR MODEL</a>,
-Up: <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: <a rel="next" accesskey="n" href="#KEYFRAMES">KEYFRAMES</a>,
-Previous: <a rel="previous" accesskey="p" href="#SETTING-PROJECT-ATTRIBUTES">SETTING PROJECT ATTRIBUTES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#MASKS">MASKS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#CROPPING">CROPPING</a>,
-Previous: <a rel="previous" accesskey="p" href="#THE-CAMERA-AND-PROJECTOR">THE CAMERA AND PROJECTOR</a>,
-Up: <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: <a rel="next" accesskey="n" href="#SAFE-REGIONS">SAFE REGIONS</a>,
-Previous: <a rel="previous" accesskey="p" href="#MASKS">MASKS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#OVERLAY-MODES">OVERLAY MODES</a>,
-Previous: <a rel="previous" accesskey="p" href="#CROPPING">CROPPING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#TRACK-AND-OUTPUT-SIZES">TRACK AND OUTPUT SIZES</a>,
-Previous: <a rel="previous" accesskey="p" href="#SAFE-REGIONS">SAFE REGIONS</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#OVERLAY-MODES">OVERLAY MODES</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#CAPTURING-MEDIA">CAPTURING MEDIA</a>,
-Previous: <a rel="previous" accesskey="p" href="#COMPOSITING">COMPOSITING</a>,
-Up: <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->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 & 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: <a rel="next" accesskey="n" href="#CHANGING-BEZIER-_0026-LINEAR-MODE">CHANGING BEZIER & LINEAR MODE</a>,
-Up: <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->fade</b> or
-<b>view->...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: <a rel="next" accesskey="n" href="#SNAPPING-TO-NEIGHBOR-KEYFRAMES">SNAPPING TO NEIGHBOR KEYFRAMES</a>,
-Previous: <a rel="previous" accesskey="p" href="#CURVE-KEYFRAMES">CURVE KEYFRAMES</a>,
-Up: <a rel="up" accesskey="u" href="#KEYFRAMES">KEYFRAMES</a>
-
-</div>
-
-<h3 class="section">13.2 CHANGING BEZIER & 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->change to linear</b> or
-<b>Keyframes->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->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: <a rel="next" accesskey="n" href="#NAVIGATING-CURVE-KEYFRAMES">NAVIGATING CURVE KEYFRAMES</a>,
-Previous: <a rel="previous" accesskey="p" href="#CHANGING-BEZIER-_0026-LINEAR-MODE">CHANGING BEZIER & LINEAR MODE</a>,
-Up: <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: <a rel="next" accesskey="n" href="#TOGGLE-KEYFRAMES">TOGGLE KEYFRAMES</a>,
-Previous: <a rel="previous" accesskey="p" href="#SNAPPING-TO-NEIGHBOR-KEYFRAMES">SNAPPING TO NEIGHBOR KEYFRAMES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#AUTOMATIC-KEYFRAMES">AUTOMATIC KEYFRAMES</a>,
-Previous: <a rel="previous" accesskey="p" href="#NAVIGATING-CURVE-KEYFRAMES">NAVIGATING CURVE KEYFRAMES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#COMPOSITOR-KEYFRAMES">COMPOSITOR KEYFRAMES</a>,
-Previous: <a rel="previous" accesskey="p" href="#TOGGLE-KEYFRAMES">TOGGLE KEYFRAMES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#EDITING-KEYFRAMES">EDITING KEYFRAMES</a>,
-Previous: <a rel="previous" accesskey="p" href="#AUTOMATIC-KEYFRAMES">AUTOMATIC KEYFRAMES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#KEYFRAME-SPANNING">KEYFRAME SPANNING</a>,
-Previous: <a rel="previous" accesskey="p" href="#COMPOSITOR-KEYFRAMES">COMPOSITOR KEYFRAMES</a>,
-Up: <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->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->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->copy default keyframe</b> and <b>keyframes->paste
-default keyframe</b> allow conversion of the default keyframe to a
-non-default keyframe.
-
- <p><b>Keyframes->copy default keyframe</b> copies the default keyframe to
-the clipboard, no matter what region of the timeline is selected. The
-<b>keyframes->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->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->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: <a rel="previous" accesskey="p" href="#EDITING-KEYFRAMES">EDITING KEYFRAMES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>,
-Previous: <a rel="previous" accesskey="p" href="#KEYFRAMES">KEYFRAMES</a>,
-Up: <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->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->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: <a rel="next" accesskey="n" href="#EDITING-TUNER-INFORMATION">EDITING TUNER INFORMATION</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#BATCHES">BATCHES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#TROUBLESHOOTING">TROUBLESHOOTING</a>,
-Previous: <a rel="previous" accesskey="p" href="#CAPTURING-MEDIA">CAPTURING MEDIA</a>,
-Up: <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: <a rel="next" accesskey="n" href="#ENLARGING-SOUND-BUFFERS">ENLARGING SOUND BUFFERS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#FREEING-MORE-SHARED-MEMORY">FREEING MORE SHARED MEMORY</a>,
-Previous: <a rel="previous" accesskey="p" href="#DISABLING-SWAP-SPACE">DISABLING SWAP SPACE</a>,
-Up: <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 >= 0x10000)
-</pre>
- <p>change it to say
-
-<pre class="example"> if (bufsize > 0x40000)
-</pre>
- <p>Where is says
-
-<pre class="example"> for (i = 0; i < 8; i++)
- for (j = 0; j < 4; j++)
-</pre>
- <p>change it to say
-
-<pre class="example"> for (i = 0; i < 16; i++)
- for (j = 0; j < 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: <a rel="next" accesskey="n" href="#SPEEDING-UP-THE-HARD-DRIVE">SPEEDING UP THE HARD DRIVE</a>,
-Previous: <a rel="previous" accesskey="p" href="#ENLARGING-SOUND-BUFFERS">ENLARGING SOUND BUFFERS</a>,
-Up: <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" > /proc/sys/kernel/shmmax</b>
-
-<div class="node">
-<a name="SPEEDING-UP-THE-HARD-DRIVE"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#DISABLING-CRON">DISABLING CRON</a>,
-Previous: <a rel="previous" accesskey="p" href="#FREEING-MORE-SHARED-MEMORY">FREEING MORE SHARED MEMORY</a>,
-Up: <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: <a rel="next" accesskey="n" href="#REDUCING-USB-MOUSE-SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>,
-Previous: <a rel="previous" accesskey="p" href="#SPEEDING-UP-THE-HARD-DRIVE">SPEEDING UP THE HARD DRIVE</a>,
-Up: <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: <a rel="next" accesskey="n" href="#ASSORTED-X-TWEEKS">ASSORTED X TWEEKS</a>,
-Previous: <a rel="previous" accesskey="p" href="#DISABLING-CRON">DISABLING CRON</a>,
-Up: <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->packet.dx += value; break;
- case REL_Y: mousedev->packet.dy -= value; break;
- case REL_WHEEL: mousedev->packet.dz -= value; break;
- }
-</pre>
- <p>must be replaced by
-
-<pre class="example">
- switch (code) {
- case REL_X:
- mousedev->packet.x_accum += value * DOWNSAMPLE_N;
- mousedev->packet.dx += (int)mousedev->packet.x_accum / (int)DOWNSAMPLE_D;
- mousedev->packet.x_accum -= ((int)mousedev->packet.x_accum / (int)DOWNSAMPLE_D) * (int)DOWNSAMPLE_D;
- break;
- case REL_Y:
- mousedev->packet.y_accum += value * DOWNSAMPLE_N;
- mousedev->packet.dy -= (int)mousedev->packet.y_accum / (int)DOWNSAMPLE_D;
- mousedev->packet.y_accum -= ((int)mousedev->packet.y_accum / (int)DOWNSAMPLE_D) * (int)DOWNSAMPLE_D;
- break;
- case REL_WHEEL: mousedev->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: <a rel="next" accesskey="n" href="#SPEEDING-UP-THE-FILE-SYSTEM">SPEEDING UP THE FILE SYSTEM</a>,
-Previous: <a rel="previous" accesskey="p" href="#REDUCING-USB-MOUSE-SENSITIVITY">REDUCING USB MOUSE SENSITIVITY</a>,
-Up: <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: <a rel="next" accesskey="n" href="#IMPROVING-ZORAN-VIDEO">IMPROVING ZORAN VIDEO</a>,
-Previous: <a rel="previous" accesskey="p" href="#ASSORTED-X-TWEEKS">ASSORTED X TWEEKS</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#SPEEDING-UP-THE-FILE-SYSTEM">SPEEDING UP THE FILE SYSTEM</a>,
-Up: <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 -> 74)
- * (Maxim Yevtyushkin <max@linuxmedialabs.com>) */
- 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: <a rel="next" accesskey="n" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>,
-Previous: <a rel="previous" accesskey="p" href="#IMPROVING-PERFORMANCE">IMPROVING PERFORMANCE</a>,
-Up: <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: <a rel="next" accesskey="n" href="#DRAGGING-IN-AND-OUT-POINTS-DOESN_0027T-WORK">DRAGGING IN AND OUT POINTS DOESN'T WORK</a>,
-Up: <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->Recording</b> and <b>Preferences->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->Recording->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: <a rel="next" accesskey="n" href="#LOCKING-UP-WHEN-LOADING-FILES">LOCKING UP WHEN LOADING FILES</a>,
-Previous: <a rel="previous" accesskey="p" href="#BUZ-DRIVER-CRASHES">BUZ DRIVER CRASHES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#SYNCHRONIZATION-LOST-WHILE-RECORDING">SYNCHRONIZATION LOST WHILE RECORDING</a>,
-Previous: <a rel="previous" accesskey="p" href="#DRAGGING-IN-AND-OUT-POINTS-DOESN_0027T-WORK">DRAGGING IN AND OUT POINTS DOESN'T WORK</a>,
-Up: <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->preferences->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: <a rel="next" accesskey="n" href="#APPLYING-LINEARIZE-FOLLOWED-BY-BLUR-DOESN_0027T-WORK">APPLYING LINEARIZE FOLLOWED BY BLUR DOESN'T WORK</a>,
-Previous: <a rel="previous" accesskey="p" href="#LOCKING-UP-WHEN-LOADING-FILES">LOCKING UP WHEN LOADING FILES</a>,
-Up: <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->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: <a rel="previous" accesskey="p" href="#SYNCHRONIZATION-LOST-WHILE-RECORDING">SYNCHRONIZATION LOST WHILE RECORDING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>,
-Previous: <a rel="previous" accesskey="p" href="#TROUBLESHOOTING">TROUBLESHOOTING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#ANALOG-TV-CLEANING">ANALOG TV CLEANING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#DEFEATING-INTERLACING">DEFEATING INTERLACING</a>,
-Previous: <a rel="previous" accesskey="p" href="#DOLBY-PRO-LOGIC-ENCODING">DOLBY PRO LOGIC ENCODING</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#MAKING-VIDEO-LOOK-LIKE-FILM">MAKING VIDEO LOOK LIKE FILM</a>,
-Previous: <a rel="previous" accesskey="p" href="#ANALOG-TV-CLEANING">ANALOG TV CLEANING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#CLEARING-OUT-HAZE">CLEARING OUT HAZE</a>,
-Previous: <a rel="previous" accesskey="p" href="#DEFEATING-INTERLACING">DEFEATING INTERLACING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#MAKING-A-DVD">MAKING A DVD</a>,
-Previous: <a rel="previous" accesskey="p" href="#MAKING-VIDEO-LOOK-LIKE-FILM">MAKING VIDEO LOOK LIKE FILM</a>,
-Up: <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: <a rel="next" accesskey="n" href="#MAKING-A-RINGTONE">MAKING A RINGTONE</a>,
-Previous: <a rel="previous" accesskey="p" href="#CLEARING-OUT-HAZE">CLEARING OUT HAZE</a>,
-Up: <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: <a rel="next" accesskey="n" href="#TIME-STRETCHING-AUDIO">TIME STRETCHING AUDIO</a>,
-Previous: <a rel="previous" accesskey="p" href="#MAKING-A-DVD">MAKING A DVD</a>,
-Up: <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->Load files...</b> and
-load a sound file with Insertion strategy: <b>Replace current
-project</b>. Go to <b>Settings->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->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: <a rel="next" accesskey="n" href="#PITCH-SHIFTING-AUDIO">PITCH SHIFTING AUDIO</a>,
-Previous: <a rel="previous" accesskey="p" href="#MAKING-A-RINGTONE">MAKING A RINGTONE</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#TEXT-TO-MOVIE">TEXT TO MOVIE</a>,
-Previous: <a rel="previous" accesskey="p" href="#TIME-STRETCHING-AUDIO">TIME STRETCHING AUDIO</a>,
-Up: <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->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: <a rel="previous" accesskey="p" href="#PITCH-SHIFTING-AUDIO">PITCH SHIFTING AUDIO</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>,
-Previous: <a rel="previous" accesskey="p" href="#SECRETS-OF-CINELERRA">SECRETS OF CINELERRA</a>,
-Up: <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: <a rel="next" accesskey="n" href="#CHROMA-KEY">CHROMA KEY</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#COMPRESSOR">COMPRESSOR</a>,
-Previous: <a rel="previous" accesskey="p" href="#g_t1080-TO-480">1080 TO 480</a>,
-Up: <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: <a rel="next" accesskey="n" href="#DECIMATE">DECIMATE</a>,
-Previous: <a rel="previous" accesskey="p" href="#CHROMA-KEY">CHROMA KEY</a>,
-Up: <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: <a rel="next" accesskey="n" href="#DEINTERLACE">DEINTERLACE</a>,
-Previous: <a rel="previous" accesskey="p" href="#COMPRESSOR">COMPRESSOR</a>,
-Up: <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: <a rel="next" accesskey="n" href="#DIFFERENCE-KEY">DIFFERENCE KEY</a>,
-Previous: <a rel="previous" accesskey="p" href="#DECIMATE">DECIMATE</a>,
-Up: <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: <a rel="next" accesskey="n" href="#FIELDS-TO-FRAMES">FIELDS TO FRAMES</a>,
-Previous: <a rel="previous" accesskey="p" href="#DEINTERLACE">DEINTERLACE</a>,
-Up: <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: <a rel="next" accesskey="n" href="#FREEZE-FRAME">FREEZE FRAME</a>,
-Previous: <a rel="previous" accesskey="p" href="#DIFFERENCE-KEY">DIFFERENCE KEY</a>,
-Up: <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: <a rel="next" accesskey="n" href="#HISTOGRAM">HISTOGRAM</a>,
-Previous: <a rel="previous" accesskey="p" href="#FIELDS-TO-FRAMES">FIELDS TO FRAMES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#INVERSE-TELECINE">INVERSE TELECINE</a>,
-Previous: <a rel="previous" accesskey="p" href="#FREEZE-FRAME">FREEZE FRAME</a>,
-Up: <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: <a rel="next" accesskey="n" href="#INTERPOLATE-VIDEO">INTERPOLATE VIDEO</a>,
-Previous: <a rel="previous" accesskey="p" href="#HISTOGRAM">HISTOGRAM</a>,
-Up: <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: <a rel="next" accesskey="n" href="#LENS">LENS</a>,
-Previous: <a rel="previous" accesskey="p" href="#INVERSE-TELECINE">INVERSE TELECINE</a>,
-Up: <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: <a rel="next" accesskey="n" href="#LINEARIZE">LINEARIZE</a>,
-Previous: <a rel="previous" accesskey="p" href="#INTERPOLATE-VIDEO">INTERPOLATE VIDEO</a>,
-Up: <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: <a rel="next" accesskey="n" href="#LIVE-AUDIO">LIVE AUDIO</a>,
-Previous: <a rel="previous" accesskey="p" href="#LENS">LENS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#LIVE-VIDEO">LIVE VIDEO</a>,
-Previous: <a rel="previous" accesskey="p" href="#LINEARIZE">LINEARIZE</a>,
-Up: <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->Preferences->Playback->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: <a rel="next" accesskey="n" href="#LOOP">LOOP</a>,
-Previous: <a rel="previous" accesskey="p" href="#LIVE-AUDIO">LIVE AUDIO</a>,
-Up: <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->Preferences->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->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->Preferences->Playback->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: <a rel="next" accesskey="n" href="#MOTION">MOTION</a>,
-Previous: <a rel="previous" accesskey="p" href="#LIVE-VIDEO">LIVE VIDEO</a>,
-Up: <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->loop playback</b> option, the
-loop effects can be rendered where the <b>settings->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: <a rel="next" accesskey="n" href="#MOTION-2-POINT">MOTION 2 POINT</a>,
-Previous: <a rel="previous" accesskey="p" href="#LOOP">LOOP</a>,
-Up: <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: <a rel="next" accesskey="n" href="#g_t2-PASS-MOTION-TRACKING">2 PASS MOTION TRACKING</a>,
-Up: <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> -> <b>Do Nothing</b>. Set
-<b>Calculation</b> -> <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: <a rel="next" accesskey="n" href="#USING-BLUR-TO-IMPROVE-MOTION-TRACKING">USING BLUR TO IMPROVE MOTION TRACKING</a>,
-Previous: <a rel="previous" accesskey="p" href="#SECRETS-OF-MOTION-TRACKING">SECRETS OF MOTION TRACKING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#USING-HISTOGRAM-TO-IMPROVE-MOTION-TRACKING">USING HISTOGRAM TO IMPROVE MOTION TRACKING</a>,
-Previous: <a rel="previous" accesskey="p" href="#g_t2-PASS-MOTION-TRACKING">2 PASS MOTION TRACKING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#INTERPOLATING-MOTION-BETWEEN-FRAMES">INTERPOLATING MOTION BETWEEN FRAMES</a>,
-Previous: <a rel="previous" accesskey="p" href="#USING-BLUR-TO-IMPROVE-MOTION-TRACKING">USING BLUR TO IMPROVE MOTION TRACKING</a>,
-Up: <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: <a rel="next" accesskey="n" href="#FILLING-IN-THE-BLACK-AREAS">FILLING IN THE BLACK AREAS</a>,
-Previous: <a rel="previous" accesskey="p" href="#USING-HISTOGRAM-TO-IMPROVE-MOTION-TRACKING">USING HISTOGRAM TO IMPROVE MOTION TRACKING</a>,
-Up: <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->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: <a rel="previous" accesskey="p" href="#INTERPOLATING-MOTION-BETWEEN-FRAMES">INTERPOLATING MOTION BETWEEN FRAMES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#REFRAMERT">REFRAMERT</a>,
-Previous: <a rel="previous" accesskey="p" href="#MOTION">MOTION</a>,
-Up: <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: <a rel="next" accesskey="n" href="#REFRAME">REFRAME</a>,
-Previous: <a rel="previous" accesskey="p" href="#MOTION-2-POINT">MOTION 2 POINT</a>,
-Up: <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: <a rel="next" accesskey="n" href="#RESAMPLE">RESAMPLE</a>,
-Previous: <a rel="previous" accesskey="p" href="#REFRAMERT">REFRAMERT</a>,
-Up: <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: <a rel="next" accesskey="n" href="#REVERSE-VIDEO_002fAUDIO">REVERSE VIDEO/AUDIO</a>,
-Previous: <a rel="previous" accesskey="p" href="#REFRAME">REFRAME</a>,
-Up: <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: <a rel="next" accesskey="n" href="#SWAP-FRAMES">SWAP FRAMES</a>,
-Previous: <a rel="previous" accesskey="p" href="#RESAMPLE">RESAMPLE</a>,
-Up: <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: <a rel="next" accesskey="n" href="#THRESHOLD">THRESHOLD</a>,
-Previous: <a rel="previous" accesskey="p" href="#REVERSE-VIDEO_002fAUDIO">REVERSE VIDEO/AUDIO</a>,
-Up: <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: <a rel="next" accesskey="n" href="#TIME-AVERAGE">TIME AVERAGE</a>,
-Previous: <a rel="previous" accesskey="p" href="#SWAP-FRAMES">SWAP FRAMES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#TITLER">TITLER</a>,
-Previous: <a rel="previous" accesskey="p" href="#THRESHOLD">THRESHOLD</a>,
-Up: <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: <a rel="next" accesskey="n" href="#VIDEO-SCOPE">VIDEO SCOPE</a>,
-Previous: <a rel="previous" accesskey="p" href="#TIME-AVERAGE">TIME AVERAGE</a>,
-Up: <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: <a rel="next" accesskey="n" href="#THE-TITLE_002dSAFE-REGION">THE TITLE-SAFE REGION</a>,
-Up: <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 && 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: <a rel="next" accesskey="n" href="#MAKING-TITLES-LOOK-GOOD">MAKING TITLES LOOK GOOD</a>,
-Previous: <a rel="previous" accesskey="p" href="#ADDING-FONTS-TO-THE-TITLER">ADDING FONTS TO THE TITLER</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#THE-TITLE_002dSAFE-REGION">THE TITLE-SAFE REGION</a>,
-Up: <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 & 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: <a rel="previous" accesskey="p" href="#TITLER">TITLER</a>,
-Up: <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: <a rel="next" accesskey="n" href="#KEYBOARD-SHORTCUTS">KEYBOARD SHORTCUTS</a>,
-Previous: <a rel="previous" accesskey="p" href="#SECRETS-OF-CINELERRA-EFFECTS">SECRETS OF CINELERRA EFFECTS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#COMMON-PLUGIN-FUNCTIONS">COMMON PLUGIN FUNCTIONS</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#REALTIME-PLUGINS">REALTIME PLUGINS</a>,
-Previous: <a rel="previous" accesskey="p" href="#INTRODUCING-THE-PULL-METHOD">INTRODUCING THE PULL METHOD</a>,
-Up: <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: <a rel="next" accesskey="n" href="#THE-CONFIGURATION-OBJECT">THE CONFIGURATION OBJECT</a>,
-Up: <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->window->lock_window();
- // update widgets here
- thread->window->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: <a rel="next" accesskey="n" href="#THE-USER-INTERFACE-OBJECT">THE USER INTERFACE OBJECT</a>,
-Previous: <a rel="previous" accesskey="p" href="#THE-PROCESSING-OBJECT">THE PROCESSING OBJECT</a>,
-Up: <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 &that);
- void copy_from(MyPluginConfig &that);
- void interpolate(MyPluginConfig &prev,
- MyPluginConfig &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 &prev,
- MyPluginConfig &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->parameter1 = (float)(prev.parameter1 * prev_scale + next.parameter1 * next_scale);
- this->parameter2 = (float)(prev.parameter2 * prev_scale + next.parameter2 * next_scale);
- this->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: <a rel="previous" accesskey="p" href="#THE-CONFIGURATION-OBJECT">THE CONFIGURATION OBJECT</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#NONREALTIME-PLUGINS">NONREALTIME PLUGINS</a>,
-Previous: <a rel="previous" accesskey="p" href="#COMMON-PLUGIN-FUNCTIONS">COMMON PLUGIN FUNCTIONS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#AUDIO-PLUGINS">AUDIO PLUGINS</a>,
-Previous: <a rel="previous" accesskey="p" href="#REALTIME-PLUGINS">REALTIME PLUGINS</a>,
-Up: <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->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: <a rel="next" accesskey="n" href="#VIDEO-PLUGINS">VIDEO PLUGINS</a>,
-Previous: <a rel="previous" accesskey="p" href="#NONREALTIME-PLUGINS">NONREALTIME PLUGINS</a>,
-Up: <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 &write_length);
-</pre>
- <p>for single channel or
-
-<pre class="example"> int process_loop(double **buffers, int64_t &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: <a rel="next" accesskey="n" href="#TRANSITION-PLUGINS">TRANSITION PLUGINS</a>,
-Previous: <a rel="previous" accesskey="p" href="#AUDIO-PLUGINS">AUDIO PLUGINS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#PLUGIN-GUI_0027S-WHICH-UPDATE-DURING-PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>,
-Previous: <a rel="previous" accesskey="p" href="#VIDEO-PLUGINS">VIDEO PLUGINS</a>,
-Up: <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: <a rel="next" accesskey="n" href="#USING-OPENGL">USING OPENGL</a>,
-Previous: <a rel="previous" accesskey="p" href="#TRANSITION-PLUGINS">TRANSITION PLUGINS</a>,
-Up: <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->window->lock_window();
-
- // update GUI here
-
- thread->window->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: <a rel="previous" accesskey="p" href="#USING-OPENGL">USING OPENGL</a>,
-Up: <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: <a rel="next" accesskey="n" href="#TIMING-QUERIES">TIMING QUERIES</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#SYSTEM-QUERIES">SYSTEM QUERIES</a>,
-Up: <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: <a rel="next" accesskey="n" href="#PLUGIN-QUERIES">PLUGIN QUERIES</a>,
-Previous: <a rel="previous" accesskey="p" href="#PLUGIN-GUI_0027S-WHICH-UPDATE-DURING-PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK</a>,
-Up: <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: <a rel="next" accesskey="n" href="#DRAWING-USING-OPENGL">DRAWING USING OPENGL</a>,
-Up: <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: <a rel="next" accesskey="n" href="#USING-SHADERS">USING SHADERS</a>,
-Previous: <a rel="previous" accesskey="p" href="#GETTING-OPENGL-DATA">GETTING OPENGL DATA</a>,
-Up: <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()->to_texture();
- get_output()->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()->init_screen();
- get_output()->bind_texture(0);
- get_output()->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 & 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 & flat colormodels even
-though OpenGL always has an alpha channel. For RGB colormodels, you
-must multiply the alpha component by the RGB & 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: <a rel="next" accesskey="n" href="#AGGREGATING-PLUGINS">AGGREGATING PLUGINS</a>,
-Previous: <a rel="previous" accesskey="p" href="#DRAWING-USING-OPENGL">DRAWING USING OPENGL</a>,
-Up: <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: <a rel="previous" accesskey="p" href="#USING-SHADERS">USING SHADERS</a>,
-Up: <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()->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()->get_params()</b> if the
-fall through plugin set them.
-
-<div class="node">
-<a name="KEYBOARD-SHORTCUTS"></a>
-<p><hr>
-Previous: <a rel="previous" accesskey="p" href="#PLUGIN-AUTHORING">PLUGIN AUTHORING</a>,
-Up: <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 & In/Out Points</h4>
-
-<pre class="example"> [ Toggle In point
- ] Toggle Out point
- l Toggle label at current position
- Ctrl <- Go to Previous Label
- Ctrl -> 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 & 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 <- Go to Previous Label
- Ctrl -> 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>
-