3 <title>Secrets of Cinelerra
</title>
4 <meta http-equiv=
"Content-Type" content=
"text/html">
5 <meta name=
"description" content=
"Secrets of Cinelerra">
6 <meta name=
"generator" content=
"makeinfo 4.6">
7 <meta http-equiv=
"Content-Style-Type" content=
"text/css">
8 <style type=
"text/css"><!--
9 pre
.display
{ font-family:inherit
}
10 pre
.format
{ font-family:inherit
}
11 pre
.smalldisplay
{ font-family:inherit
; font-size:smaller
}
12 pre
.smallformat
{ font-family:inherit
; font-size:smaller
}
13 pre
.smallexample
{ font-size:smaller
}
14 pre
.smalllisp
{ font-size:smaller
}
18 <h1 class=
"settitle">Secrets of Cinelerra
</h1>
21 Node:
<a name=
"Top">Top
</a>,
22 Next:
<a rel=
"next" accesskey=
"n" href=
"#ABOUT%20CINELERRA">ABOUT CINELERRA
</a>,
23 Up:
<a rel=
"up" accesskey=
"u" href=
"#dir">(dir)
</a>
27 <h2 class=
"unnumbered"></h2>
30 <div class=
"contents">
31 <h2>Table of Contents
</h2>
33 <li><a name=
"toc_Top" href=
"#Top"></a>
34 <li><a name=
"toc_ABOUT%20CINELERRA" href=
"#ABOUT%20CINELERRA">ABOUT CINELERRA
</a>
36 <li><a href=
"#ABOUT%20THIS%20MANUAL">ABOUT THIS MANUAL
</a>
38 <li><a name=
"toc_INSTALLATION" href=
"#INSTALLATION">INSTALLATION
</a>
40 <li><a href=
"#INSTALLING%20AN%20RPM">INSTALLING AN RPM
</a>
41 <li><a href=
"#COMPILING%20FROM%20SCRATCH">COMPILING FROM SCRATCH
</a>
42 <li><a href=
"#RUNNING%20CINELERRA">RUNNING CINELERRA
</a>
44 <li><a name=
"toc_CONFIGURATION" href=
"#CONFIGURATION">CONFIGURATION
</a>
46 <li><a href=
"#ENVIRONMENT%20VARIABLES">ENVIRONMENT VARIABLES
</a>
47 <li><a href=
"#PLAYBACK">PLAYBACK
</a>
49 <li><a href=
"#AUDIO%20OUT">AUDIO OUT
</a>
50 <li><a href=
"#VIDEO%20OUT">VIDEO OUT
</a>
52 <li><a href=
"#RECORDING">RECORDING
</a>
54 <li><a href=
"#AUDIO%20IN">AUDIO IN
</a>
55 <li><a href=
"#VIDEO%20IN">VIDEO IN
</a>
57 <li><a href=
"#PERFORMANCE">PERFORMANCE
</a>
59 <li><a href=
"#BACKGROUND%20RENDERING">BACKGROUND RENDERING
</a>
60 <li><a href=
"#RENDERFARM">RENDERFARM
</a>
62 <li><a href=
"#INTERFACE">INTERFACE
</a>
63 <li><a href=
"#ABOUT">ABOUT
</a>
65 <li><a name=
"toc_THE%20MAIN%20WINDOWS" href=
"#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS
</a>
66 <li><a name=
"toc_LOADING%20AND%20SAVING%20FILES" href=
"#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES
</a>
68 <li><a href=
"#LOADING%20FILES">LOADING FILES
</a>
70 <li><a href=
"#SUPPORTED%20FILE%20FORMATS">SUPPORTED FILE FORMATS
</a>
71 <li><a href=
"#INSERTION%20STRATEGY">INSERTION STRATEGY
</a>
72 <li><a href=
"#LOADING%20MULTIPLE%20FILES">LOADING MULTIPLE FILES
</a>
74 <li><a href=
"#LOADING%20THE%20BACKUP">LOADING THE BACKUP
</a>
75 <li><a href=
"#SAVING%20FILES">SAVING FILES
</a>
76 <li><a href=
"#RENDERING%20FILES">RENDERING FILES
</a>
78 <li><a href=
"#SINGLE%20FILE%20RENDERING">SINGLE FILE RENDERING
</a>
79 <li><a href=
"#BATCH%20RENDERING">BATCH RENDERING
</a>
80 <li><a href=
"#THE%20RENDER%20FARM">THE RENDER FARM
</a>
81 <li><a href=
"#COMMAND%20LINE%20RENDERING">COMMAND LINE RENDERING
</a>
84 <li><a name=
"toc_NAVIGATING%20THE%20PROJECT" href=
"#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT
</a>
86 <li><a href=
"#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW
</a>
88 <li><a href=
"#THE%20INSERTION%20POINT">THE INSERTION POINT
</a>
89 <li><a href=
"#THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS
</a>
90 <li><a href=
"#USING%20LABELS%20IN%20THE%20PROGRAM%20WINDOW">USING LABELS IN THE PROGRAM WINDOW
</a>
92 <li><a href=
"#NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR
</a>
93 <li><a href=
"#NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES
</a>
94 <li><a href=
"#USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS
</a>
95 <li><a href=
"#USING%20BACKGROUND%20RENDERING">USING BACKGROUND RENDERING
</a>
97 <li><a name=
"toc_EDITING" href=
"#EDITING">EDITING
</a>
99 <li><a href=
"#THE%20PATCHBAY">THE PATCHBAY
</a>
100 <li><a href=
"#NUDGING%20TRACKS">NUDGING TRACKS
</a>
101 <li><a href=
"#MANIPULATING%20TRACKS">MANIPULATING TRACKS
</a>
102 <li><a href=
"#TWO%20SCREEN%20EDITING">TWO SCREEN EDITING
</a>
103 <li><a href=
"#DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING
</a>
104 <li><a href=
"#CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING
</a>
105 <li><a href=
"#TRIMMING">TRIMMING
</a>
107 <li><a name=
"toc_USING%20EFFECTS" href=
"#USING%20EFFECTS">USING EFFECTS
</a>
109 <li><a href=
"#REALTIME%20EFFECTS">REALTIME EFFECTS
</a>
111 <li><a href=
"#REALTIME%20EFFECT%20TYPES">REALTIME EFFECT TYPES
</a>
112 <li><a href=
"#EDITING%20REALTIME%20EFFECTS">EDITING REALTIME EFFECTS
</a>
114 <li><a href=
"#RENDERED%20EFFECTS">RENDERED EFFECTS
</a>
115 <li><a href=
"#TRANSITIONS">TRANSITIONS
</a>
116 <li><a href=
"#LADSPA%20EFFECTS">LADSPA EFFECTS
</a>
118 <li><a name=
"toc_SETTING%20PROJECT%20ATTRIBUTES" href=
"#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES
</a>
119 <li><a name=
"toc_COMPOSITING" href=
"#COMPOSITING">COMPOSITING
</a>
121 <li><a href=
"#THE%20CAMERA%20AND%20PROJECTOR">THE CAMERA AND PROJECTOR
</a>
122 <li><a href=
"#MASKS">MASKS
</a>
123 <li><a href=
"#CROPPING">CROPPING
</a>
124 <li><a href=
"#SAFE%20REGIONS">SAFE REGIONS
</a>
125 <li><a href=
"#OVERLAY%20MODES">OVERLAY MODES
</a>
126 <li><a href=
"#TRACK%20AND%20OUTPUT%20SIZES">TRACK AND OUTPUT SIZES
</a>
128 <li><a name=
"toc_KEYFRAMES" href=
"#KEYFRAMES">KEYFRAMES
</a>
130 <li><a href=
"#CURVE%20KEYFRAMES">CURVE KEYFRAMES
</a>
131 <li><a href=
"#TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES
</a>
132 <li><a href=
"#AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES
</a>
133 <li><a href=
"#COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES
</a>
134 <li><a href=
"#EDITING%20KEYFRAMES">EDITING KEYFRAMES
</a>
136 <li><a name=
"toc_CAPTURING%20MEDIA" href=
"#CAPTURING%20MEDIA">CAPTURING MEDIA
</a>
138 <li><a href=
"#BATCHES">BATCHES
</a>
139 <li><a href=
"#EDITING%20TUNER%20INFORMATION">EDITING TUNER INFORMATION
</a>
141 <li><a name=
"toc_IMPROVING%20PERFORMANCE" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>
143 <li><a href=
"#DISABLING%20SWAP%20SPACE">DISABLING SWAP SPACE
</a>
144 <li><a href=
"#ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS
</a>
145 <li><a href=
"#FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY
</a>
146 <li><a href=
"#SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE
</a>
147 <li><a href=
"#DISABLING%20CRON">DISABLING CRON
</a>
148 <li><a href=
"#REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY
</a>
149 <li><a href=
"#ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS
</a>
150 <li><a href=
"#SPEEDING%20UP%20THE%20FILE%20SYSTEM">SPEEDING UP THE FILE SYSTEM
</a>
151 <li><a href=
"#IMPROVING%20ZORAN%20VIDEO">IMPROVING ZORAN VIDEO
</a>
153 <li><a href=
"#IMPROVING%20ZORAN%20VIDEO">NEW IN
2.6.5</a>
156 <li><a name=
"toc_TROUBLESHOOTING" href=
"#TROUBLESHOOTING">TROUBLESHOOTING
</a>
158 <li><a href=
"#BUZ%20DRIVER%20CRASHES">BUZ DRIVER CRASHES
</a>
159 <li><a href=
"#DRAGGING%20IN%20AND%20OUT%20POINTS%20DOESN'T%20WORK">DRAGGING IN AND OUT POINTS DOESN'T WORK
</a>
160 <li><a href=
"#SYNCHRONIZATION%20LOST%20WHILE%20RECORDING">SYNCHRONIZATION LOST WHILE RECORDING
</a>
162 <li><a name=
"toc_SECRETS%20OF%20CINELERRA" href=
"#SECRETS%20OF%20CINELERRA">SECRETS OF CINELERRA
</a>
164 <li><a href=
"#DOLBY%20PRO%20LOGIC%20ENCODING">DOLBY PRO LOGIC ENCODING
</a>
165 <li><a href=
"#ANALOG%20TV%20CLEANING">ANALOG TV CLEANING
</a>
166 <li><a href=
"#DEFEATING%20INTERLACING">DEFEATING INTERLACING
</a>
167 <li><a href=
"#MAKING%20VIDEO%20LOOK%20LIKE%20FILM">MAKING VIDEO LOOK LIKE FILM
</a>
168 <li><a href=
"#CLEARING%20OUT%20HAZE">CLEARING OUT HAZE
</a>
170 <li><a name=
"toc_SECRETS%20OF%20CINELERRA%20EFFECTS" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
172 <li><a href=
"#1080%20TO%20480">1080 TO
480</a>
173 <li><a href=
"#CHROMA%20KEY">CHROMA KEY
</a>
174 <li><a href=
"#DECIMATE">DECIMATE
</a>
175 <li><a href=
"#DEINTERLACE">DEINTERLACE
</a>
176 <li><a href=
"#FREEZE%20FRAME">FREEZE FRAME
</a>
177 <li><a href=
"#HISTOGRAM">HISTOGRAM
</a>
178 <li><a href=
"#INVERSE%20TELECINE">INVERSE TELECINE
</a>
179 <li><a href=
"#LOOP">LOOP
</a>
180 <li><a href=
"#REVERSE%20VIDEO%2fAUDIO">REVERSE VIDEO/AUDIO
</a>
181 <li><a href=
"#TIME%20AVERAGE">TIME AVERAGE
</a>
182 <li><a href=
"#TITLER">TITLER
</a>
184 <li><a href=
"#ADDING%20FONTS%20TO%20THE%20TITLER">ADDING FONTS TO THE TITLER
</a>
185 <li><a href=
"#THE%20TITLE-SAFE%20REGION">THE TITLE-SAFE REGION
</a>
187 <li><a href=
"#VIDEO%20SCOPE">VIDEO SCOPE
</a>
189 <li><a name=
"toc_PLUGIN%20AUTHORING" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>
191 <li><a href=
"#INTRODUCING%20THE%20PULL%20METHOD">INTRODUCING THE PULL METHOD
</a>
192 <li><a href=
"#COMMON%20PLUGIN%20FUNCTIONS">COMMON PLUGIN FUNCTIONS
</a>
194 <li><a href=
"#THE%20PROCESSING%20OBJECT">THE PROCESSING OBJECT
</a>
195 <li><a href=
"#THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT
</a>
196 <li><a href=
"#THE%20USER%20INTERFACE%20OBJECT">THE USER INTERFACE OBJECT
</a>
198 <li><a href=
"#REALTIME%20PLUGINS">REALTIME PLUGINS
</a>
199 <li><a href=
"#NONREALTIME%20PLUGINS">NONREALTIME PLUGINS
</a>
200 <li><a href=
"#AUDIO%20PLUGINS">AUDIO PLUGINS
</a>
201 <li><a href=
"#VIDEO%20PLUGINS">VIDEO PLUGINS
</a>
202 <li><a href=
"#TRANSITION%20PLUGINS">TRANSITION PLUGINS
</a>
203 <li><a href=
"#PLUGIN%20GUI'S%20WHICH%20UPDATE%20DURING%20PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK
</a>
204 <li><a href=
"#PLUGIN%20QUERIES">PLUGIN QUERIES
</a>
206 <li><a href=
"#SYSTEM%20QUERIES">SYSTEM QUERIES
</a>
207 <li><a href=
"#TIMING%20QUERIES">TIMING QUERIES
</a>
210 <li><a name=
"toc_KEYBOARD%20SHORTCUTS" href=
"#KEYBOARD%20SHORTCUTS">KEYBOARD SHORTCUTS
</a>
212 <li><a href=
"#KEYBOARD%20SHORTCUTS">PROGRAM WINDOW
</a>
214 <li><a href=
"#KEYBOARD%20SHORTCUTS">Editing Media
</a>
215 <li><a href=
"#KEYBOARD%20SHORTCUTS">Editing Labels
& In/Out Points
</a>
216 <li><a href=
"#KEYBOARD%20SHORTCUTS">Navigation
</a>
217 <li><a href=
"#KEYBOARD%20SHORTCUTS">File operations
</a>
218 <li><a href=
"#KEYBOARD%20SHORTCUTS">Key Frame Editing
</a>
219 <li><a href=
"#KEYBOARD%20SHORTCUTS">Track Manipulation
</a>
220 <li><a href=
"#KEYBOARD%20SHORTCUTS">What's drawn on the timeline
</a>
222 <li><a href=
"#KEYBOARD%20SHORTCUTS">VIEWER
& COMPOSITOR WINDOWS
</a>
223 <li><a href=
"#KEYBOARD%20SHORTCUTS">PLAYBACK TRANSPORT
</a>
224 <li><a href=
"#KEYBOARD%20SHORTCUTS">RECORD WINDOW
</a>
230 <li><a accesskey=
"1" href=
"#ABOUT%20CINELERRA">ABOUT CINELERRA
</a>: Cinelerra in brief.
231 <li><a accesskey=
"2" href=
"#INSTALLATION">INSTALLATION
</a>: Making Cinelerra work on your system.
232 <li><a accesskey=
"3" href=
"#CONFIGURATION">CONFIGURATION
</a>: Adjusting the behavior of Cinelerra.
233 <li><a accesskey=
"4" href=
"#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS
</a>: The most often used user interface.
234 <li><a accesskey=
"5" href=
"#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES
</a>: Moving media between disk and Cinelerra.
235 <li><a accesskey=
"6" href=
"#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT
</a>: Moving around the media.
236 <li><a accesskey=
"7" href=
"#EDITING">EDITING
</a>: Moving the media in time.
237 <li><a accesskey=
"8" href=
"#USING%20EFFECTS">USING EFFECTS
</a>: Altering the media.
238 <li><a accesskey=
"9" href=
"#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES
</a>: Changing the way the media is displayed.
239 <li><a href=
"#COMPOSITING">COMPOSITING
</a>: Overlaying different sources of video.
240 <li><a href=
"#KEYFRAMES">KEYFRAMES
</a>: Making effects change over time.
241 <li><a href=
"#CAPTURING%20MEDIA">CAPTURING MEDIA
</a>: Moving media from the real world to disk.
242 <li><a href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>: Making Cinelerra run better on Linux.
243 <li><a href=
"#TROUBLESHOOTING">TROUBLESHOOTING
</a>: Problems with Cinelerra.
244 <li><a href=
"#SECRETS%20OF%20CINELERRA">SECRETS OF CINELERRA
</a>: Unusual applications of Cinelerra to common problems.
245 <li><a href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>: How to use the more complicated effects.
246 <li><a href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>: How to write new effects.
247 <li><a href=
"#KEYBOARD%20SHORTCUTS">KEYBOARD SHORTCUTS
</a>: How to accelerate most commands with the keyboard.
252 Node:
<a name=
"ABOUT%20CINELERRA">ABOUT CINELERRA
</a>,
253 Next:
<a rel=
"next" accesskey=
"n" href=
"#INSTALLATION">INSTALLATION
</a>,
254 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#Top">Top
</a>,
255 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
259 <h2 class=
"chapter">ABOUT CINELERRA
</h2>
261 <p>For years some people have wanted a way to edit their audio and video
262 in one place as fluidly as writing text. Cinelerra tries to be a
263 single location for all audio and video editing needs. All the
264 recording, editing, and playback are handled here. It can be used as
265 an audio player. It can be used to record audio or video. It can even
266 be used as a photo retoucher.
268 <p>There are two types of moviegoers: producers who create new content,
269 going back over their content at future points for further refinement,
270 and consumers who want to acquire the content and watch it. Cinelerra
271 is not intended for consumers. Cinelerra has many features for
272 uncompressed content, high resolution processing, and compositing, with
273 very few shortcuts. Producers need these features because of the need
274 to retouch many generations of footage with alterations to the format,
275 which makes Cinelerra very complex. There are many more standard tools
276 for consumers like MainActor, Kino, or Moxy, which you should consider
277 before using Cinelerra.
279 <p>In
1996 our first editor came out: Broadcast
1.0. It was just a window
280 with a waveform in it, it could cut and paste stereo audio waveforms on
281 a UNIX box, except unlike other audio editors it could handle files up
282 to
2 gigabytes with only
64 megs of RAM. That was a feature normally
283 only accessible to the highest end professional audio houses.
285 <p>In
1997 Broadcast
1.0 was replaced by Broadcast
2.0. This time the
286 window had a menubar, patchbay, console, and transport control.
287 Broadcast
2.0 still only handled audio but this time it handled
288 unlimited tracks, and it could perform effects on audio and save the
289 resulting waveform to disk. More notably a few effects could be
290 performed as the audio was playing back, in realtime. A user could mix
291 unlimited numbers of tracks, adjust fade, pan, and EQ, and hear the
292 result instantly. Amazingly this real time tweeking is still
293 unavailable on most audio programs.
295 <p>But Broadcast
2.0 still didn't handle video and it wasn't very graceful
296 at audio either. In
1999 video broke into the story with Broadcast
297 2000. This iteration of the Broadcast series could do wonders with
298 audio and offered a pretty good video feature set. It could edit video
299 files up to
64 terabytes. It could do everything Broadcast
2.1 did
300 with audio except now all effects for video and audio could be chained
301 and performed on the fly, with instant feedback as a user tweeked
302 parameters during playback. Broadcast
2000 made it very easy to do a
303 lot of processing and editing on video and audio that would otherwise
304 involve many hours setting up command line sequences and writing to
305 disk. For a time it seemed as if the original dream of immersive movie
306 making for everyone regardless of income level had arrived.
308 <p>Later on Broadcast
2000 began to come short. Its audio and video was
309 graceful if you knew how to use it efficiently, but quality issues and
310 new user interface techniques were emerging. Broadcast
2000 kept the
311 audio interface from its ancestors, which didn't apply well to video.
312 Users likewise were maturing. No longer would it be sufficient to just
313 edit video on a UNIX box. Most users expected on UNIX the same thing
314 they got in Win or Mac. In mid
2000 designs for a Broadcast
2000
315 replacement were drafted. The Broadcast name was officially retired
316 from the series and the software would now be called Cinelerra.
317 Cinelerra would allow users to configure certain effects in much less
318 time than required with Broadcast
2000. It would begin to emulate some
319 of the features found in Win and Mac software while not attempting to
320 become a clone. It's interface would be designed for video from the
321 ground up, while supplementing that with the Broadcast audio
322 interface. As always, quality improvements would happen.
325 <li><a accesskey=
"1" href=
"#ABOUT%20THIS%20MANUAL">ABOUT THIS MANUAL
</a>:
330 Node:
<a name=
"ABOUT%20THIS%20MANUAL">ABOUT THIS MANUAL
</a>,
331 Up:
<a rel=
"up" accesskey=
"u" href=
"#ABOUT%20CINELERRA">ABOUT CINELERRA
</a>
335 <h3 class=
"section">ABOUT THIS MANUAL
</h3>
337 <p>In a way we feel sorry for users who are trying to figure out how to
338 use Cinelerra from this document. Organizing information in the
339 easiest manner for users to find out what they need to know is sort of
340 like cataloging the internet. They've been trying to get it right for
341 30 years and will probably keep trying until the end of time.
343 <p>There a lot of fragments of documentation scattered throughout the
344 internet about Cinelerra. This document attempts to combine all the
345 pieces of information in one piece.
347 <p>Like the operating system and compiler for a piece of software, the
348 document writing format is the most important thing in choosing our
349 document format. We wanted a format which would be readable regardless
350 of corporate whims and fads. A piece of software which compiles on GCC
351 and Linux will be usable as long as there are C compilers. Documents
352 written in Texinfo will be readable as long as there's a C compiler.
354 <p>After many years of searching for the perfect documentation format
355 we've arrived at TexInfo. This format can be converted to HTML,
356 printed, automatically indexed, but most importantly is not bound to
357 any commercial word processor.
359 <p>There are no screenshots in this manual. Screenshots become obsolete
360 quickly and as a result confuse the users. What looks one way in a
361 screenshot will always look different in the real program because the
362 real program and the manual are always evolving, never perfectly
363 synchronized. It is true that manuals should have screenshots, but our
364 objective in omitting screenshots is to keep the software costs minimal
365 so you don't have to pay for it. That includes additional labor to
366 synchronize the manual with the software.
368 <p>In addition to telling you the basic editing features of Cinelerra this
369 manual covers tricks that won't be described anywhere else. We're
370 going to try to come up with certain things you can do with Cinelerra
371 that you wouldn't think of on your own.
375 Node:
<a name=
"INSTALLATION">INSTALLATION
</a>,
376 Next:
<a rel=
"next" accesskey=
"n" href=
"#CONFIGURATION">CONFIGURATION
</a>,
377 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#ABOUT%20CINELERRA">ABOUT CINELERRA
</a>,
378 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
382 <h2 class=
"chapter">INSTALLATION
</h2>
384 <p>The Cinelerra package contains Cinelerra and most of the libraries
385 needed to run it. We try to include all the dependancies because of
386 the difficulty in tracking down the right versions. Also included are
387 some utilities for handling files. The following are the general
388 contents of all Cinelerra packages.
393 <b>Foreign language translations
</b> - These go into /usr/share/locale.
396 <b>Cinelerra executable
</b> - This goes into /usr/bin
399 <b>Cinelerra plugins
</b> - These go into /usr/lib/cinelerra
402 <b>soundtest
</b> - Utility for determining sound card buffer size.
405 <b>mplexhi
</b> - Multiplexing of MPEG elementary streams with standards conformance.
408 <b>mplexlo
</b> - Multiplexing of MPEG elementary streams without standards
409 conformance but more efficiently.
412 <b>mpeg3toc
</b> - Utility for indexing and reading MPEG files.
417 <li><a accesskey=
"1" href=
"#INSTALLING%20AN%20RPM">INSTALLING AN RPM
</a>:
418 <li><a accesskey=
"2" href=
"#COMPILING%20FROM%20SCRATCH">COMPILING FROM SCRATCH
</a>:
419 <li><a accesskey=
"3" href=
"#RUNNING%20CINELERRA">RUNNING CINELERRA
</a>:
424 Node:
<a name=
"INSTALLING%20AN%20RPM">INSTALLING AN RPM
</a>,
425 Next:
<a rel=
"next" accesskey=
"n" href=
"#COMPILING%20FROM%20SCRATCH">COMPILING FROM SCRATCH
</a>,
426 Up:
<a rel=
"up" accesskey=
"u" href=
"#INSTALLATION">INSTALLATION
</a>
430 <h3 class=
"section">INSTALLING AN RPM
</h3>
432 <p>Cinelerra is best installed by downloading an RPM and running
434 <pre class=
"example"> rpm -U --force --nodeps hvirtual*.rpm
437 <p>on a RedHat system.
439 <p>On systems which don't support RPM look for a utility called
440 <em>rpm2cpio
</em>. Download a Cinelerra RPM and from the /
443 <pre class=
"example"> rpm2cpio hvirtual*.rpm | cpio -i --make-directories
448 Node:
<a name=
"COMPILING%20FROM%20SCRATCH">COMPILING FROM SCRATCH
</a>,
449 Next:
<a rel=
"next" accesskey=
"n" href=
"#RUNNING%20CINELERRA">RUNNING CINELERRA
</a>,
450 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#INSTALLING%20AN%20RPM">INSTALLING AN RPM
</a>,
451 Up:
<a rel=
"up" accesskey=
"u" href=
"#INSTALLATION">INSTALLATION
</a>
455 <h3 class=
"section">COMPILING FROM SCRATCH
</h3>
457 <p>It should be noted that the compiler used in building Cinelerra
458 binaries is the free GNU compiler and very conservative optimization
459 flags. You can try different compilers and optimization flags by
460 compiling the source but this is hard.
462 <p>The compilation is verified on a vanilla RedHat
9.0 installation,
463 workstation mode. RedHat
9.0 doesn't install
<b>nasm
</b>. This has to be
464 installed manually for compilation to succeed. Compiling the source is
465 hard and there's no warranty if the source code fails to compile, but
466 the method for compiling starts by downloading the source code and
469 <pre class=
"example"> tar jxf cinelerra*.tar.bz2
472 <p>Enter the hvirtual directory
474 <pre class=
"example"> cd cinelerra
477 <p>and set the CFLAGS environment variable. The flags for the GCC
478 compiler are constantly changing. These are our most recent flags.
481 <pre class=
"example"> export CFLAGS='-O3 -march=i686 -fmessage-length=
0 -funroll-all-loops -fomit-frame-pointer -falign-loops=
2 -falign-jumps=
2 -falign-functions=
2'
484 <p>For Pentium I and old AMD's use:
486 <pre class=
"example"> export CFLAGS='-O3 -fmessage-length=
0 -funroll-all-loops -fomit-frame-pointer -falign-loops=
2 -falign-jumps=
2 -falign-functions=
2'
489 <p>For new AMD's use:
491 <pre class=
"example"> export CFLAGS='-O3 -march=athlon -fmessage-length=
0 -funroll-all-loops -fomit-frame-pointer -falign-loops=
2 -falign-jumps=
2 -falign-functions=
2'
496 <pre class=
"example"> ./configure
499 <p>This checks the build environment for the right tools and should give
500 you an error if a tool is missing. Once that succeeds run
502 <pre class=
"example"> make
505 <p>The make procedure should run through all the directories and put
506 binaries in the
<em>i686
</em> directories. When we originally supported
507 Alpha it was convenient to compile Alpha and i686 binaries
508 simultaneously, in different directories, so all the binaries are put in
513 <pre class=
"example"> make install
516 <p>to install the binaries. The output is put in the following directories:
519 <li>Executables -
> /usr/bin
520 <li>Plugins -
> /usr/lib/cinelerra
521 <li>Translations -
> /usr/share/locale/*/LC_MESSAGES/cinelerra.mo
524 <p>The main binaries are /usr/bin/cinelerra and several utilities for
525 reading MPEG transport streams.
529 Node:
<a name=
"RUNNING%20CINELERRA">RUNNING CINELERRA
</a>,
530 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#COMPILING%20FROM%20SCRATCH">COMPILING FROM SCRATCH
</a>,
531 Up:
<a rel=
"up" accesskey=
"u" href=
"#INSTALLATION">INSTALLATION
</a>
535 <h3 class=
"section">RUNNING CINELERRA
</h3>
537 <p>The simplest way to run Cinelerra is by running
539 <pre class=
"example"> /usr/bin/cinelerra
542 <p>This command hides a much more capable command line interface. Run
543 <b>cinelerra -h
</b> to get a listing of command line options. The use of
544 these options is described in several sections.
546 <p>For rendering from the command line See
<a href=
"#RENDERING%20FILES">RENDERING FILES
</a>.
550 Node:
<a name=
"CONFIGURATION">CONFIGURATION
</a>,
551 Next:
<a rel=
"next" accesskey=
"n" href=
"#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS
</a>,
552 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#INSTALLATION">INSTALLATION
</a>,
553 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
557 <h2 class=
"chapter">CONFIGURATION
</h2>
559 <p>Because of the variety of uses, Cinelerra cannot be run optimally
560 without some intimate configuration for your specific needs. Very few
561 parameters are adjustible at compile time. Runtime configuration is
562 the only option for most configuration because of the multitude of
565 <p>Go to
<em>settings-
>preferences
</em> and run through the options.
568 <li><a accesskey=
"1" href=
"#ENVIRONMENT%20VARIABLES">ENVIRONMENT VARIABLES
</a>: These environment variables are recognized by Cinelerra
569 <li><a accesskey=
"2" href=
"#PLAYBACK">PLAYBACK
</a>: Configuring parameters related to playback.
570 <li><a accesskey=
"3" href=
"#RECORDING">RECORDING
</a>: Configuring parameters related to recording.
571 <li><a accesskey=
"4" href=
"#PERFORMANCE">PERFORMANCE
</a>: Configuring parameters related to how fast things go.
572 <li><a accesskey=
"5" href=
"#INTERFACE">INTERFACE
</a>: Configuring the user interface.
573 <li><a accesskey=
"6" href=
"#ABOUT">ABOUT
</a>: Viewing information about the program.
578 Node:
<a name=
"ENVIRONMENT%20VARIABLES">ENVIRONMENT VARIABLES
</a>,
579 Next:
<a rel=
"next" accesskey=
"n" href=
"#PLAYBACK">PLAYBACK
</a>,
580 Up:
<a rel=
"up" accesskey=
"u" href=
"#CONFIGURATION">CONFIGURATION
</a>
584 <h3 class=
"section">ENVIRONMENT VARIABLES
</h3>
586 <p>In UNIX derivatives, environment variables are global variables in the
587 shell which all applications can read. They are set with a command
588 like
<b>set VARIABLE=value
</b>. All the environment variables can be
589 viewed with a command like
<b>env
</b>. Cinelerra recognizes the following
590 environment variables:
594 <li><b>LADSPA_PATH
</b> - A colon separated list of directories to search
595 for LADSPA plugins. These are not native Cinelerra plugins.
596 See
<a href=
"#LADSPA%20EFFECTS">LADSPA EFFECTS
</a>.
598 <li><b>GLOBAL_PLUGIN_DIR
</b> - The directory Cinelerra should look for
599 native plugins in. The default is /usr/lib/cinelerra but you may need an
600 alternate directory if you're sharing the same executable directory
601 among many machines via NFS. Plugins of different binary formats need
602 to be in different directories.
608 Node:
<a name=
"PLAYBACK">PLAYBACK
</a>,
609 Next:
<a rel=
"next" accesskey=
"n" href=
"#RECORDING">RECORDING
</a>,
610 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#ENVIRONMENT%20VARIABLES">ENVIRONMENT VARIABLES
</a>,
611 Up:
<a rel=
"up" accesskey=
"u" href=
"#CONFIGURATION">CONFIGURATION
</a>
615 <h3 class=
"section">PLAYBACK
</h3>
618 <li><a accesskey=
"1" href=
"#AUDIO%20OUT">AUDIO OUT
</a>:
619 <li><a accesskey=
"2" href=
"#VIDEO%20OUT">VIDEO OUT
</a>:
624 Node:
<a name=
"AUDIO%20OUT">AUDIO OUT
</a>,
625 Next:
<a rel=
"next" accesskey=
"n" href=
"#VIDEO%20OUT">VIDEO OUT
</a>,
626 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLAYBACK">PLAYBACK
</a>
630 <h3 class=
"subsection">AUDIO OUT
</h4>
632 <p>These determine what happens when you play sound from the timeline.
636 <li>SAMPLES TO SEND TO CONSOLE:
638 <p>For playing audio, small fragments of sound are read from disk and
639 processed in a virtual console sequentially. A larger value here
640 causes more latency when you change mixing parameters but gives more
643 <p>Some sound drivers don't allow changing of the console fragment so
644 latency is unchanged no matter what this value is.
646 <p>Unfortunately, since different stages of the rendering pipeline can
647 change the rate of the data, there was no way to disconnect size of the
648 console fragments from the size of the fragments read from disk.
651 VIEW FOLLOWS PLAYBACK
653 <p>Causes the timeline window to scroll when the playback cursor moves out
654 of view. This can bog down the X Server.
656 </p><li>USE SOFTWARE FOR POSITIONING INFORMATION
658 <p>Most soundcards and sound drivers don't give reliable information on
659 the number of samples the card has played. When playing video you need
660 this information for synchronization. This option causes the sound
661 driver to be ignored and a software timer to be used for
664 </p><li>AUDIO PLAYBACK IN REALTIME:
666 <p>Back in the days when
150Mhz was the maximum, this allowed
667 uninterrupted playback on heavy loads. Now you'll probably only need it
668 for playing video and audio when the load is to high for uninterrupted
673 <p>There are many sound drivers for Linux. This allows selecting one and
674 setting parameters specific to it. Some of the common parameters for a
681 <p>Usually a file in the
<em>/dev/
</em> directory which controls the
687 <p>The number of bits of precision Cinelerra should set the device for.
688 This sometimes has a figuritive meaning. Some sound drivers need to be
689 set to
32 bits to perform
24 bit playback and won't play anything when
690 set to
24 bits. Some sound drivers need to be set to
24 bits for
24
696 <p>The number of channels Cinelerra should set the device for. Regardless
697 of the number of channels in the project, the number of channels set
698 here will be written to the device. When this is set to
2 and the
699 project has
1 channel you'll hear sound through the left speaker and
700 not centered as expected for a monaural project. When this is set to
1
701 and the project has
2 channels you'll hear the left channel centered
702 and not
2 channels mixed together.
709 Node:
<a name=
"VIDEO%20OUT">VIDEO OUT
</a>,
710 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#AUDIO%20OUT">AUDIO OUT
</a>,
711 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLAYBACK">PLAYBACK
</a>
715 <h3 class=
"subsection">VIDEO OUT
</h4>
717 <p>These determine what happens when you play video from the timeline.
724 <p>The number of frames per second being
725 displayed during playback.
730 <p>The algorithm used in all video resizing in
731 the virtual console. This doesn't affect scaling to the size of the
736 <li>NEAREST NEIGHBOR ENLARGE AND REDUCE
738 <p>lowest but fastest
739 quality. Produces jagged edges and uneven motion.
742 BICUBIC ENLARGE AND BILINEAR REDUCE
744 <p>highest but slowest
745 quality. For enlarging a bicubic interpolation is used, which blurs
746 slightly but doesn't reveal stair steps. For reduction a bilinear
747 interpolation is used, which produces very sharp images and reduces
748 noise. The bilinear reduced images can be sharpened with a sharpen
749 effect with less noise than a normal sized image.
752 BILINEAR ENLARGE AND BILINEAR REDUCE
754 <p>when slight enlargement
755 is needed a bilinear enlargement looks better than a bicubic
761 PRELOAD BUFFER FOR QUICKTIME
763 <p>The Quicktime/AVI decoder can
764 handle CDROM sources better when this is around
1000000. This reduces
765 the amount of seeking. For normal use this should be
0.
770 <p>For assets which are compressed in OpenDivx and Quicktime, this enables
771 deblocking. This greatly improves the picture quality during decoding
772 while slowing it down.
777 <p>Normally video on the timeline goes to the
778 compositor window during continuous playback and when the insertion
779 point is repositioned. Instead of sending video to the Compositor
780 window the video driver can be set to send video to another output
781 device during continuous playback. This doesn't affect where video
782 goes when the insertion point is repositioned, however.
784 <p>Various parameters are given for Video Driver depending on the driver.
791 <p>The is intended for dual monitor
792 displays. Depending on the value of Display, the Compositor window
793 will appear on a different monitor from the rest of the windows.
798 <p>Usually a file in the
<em>/dev/
</em> directory
799 which controls the device.
804 <p>Make the even lines odd and the odd lines even
805 when sending to the device. On an NTSC or
1080i monitor the fields may
806 need to be swapped to prevent jittery motion.
811 <p>Devices with multiple outputs may need a
812 specific connector to send video on.
817 <p>The IEEE1394 standard specifies something known as the
818 <em>port
</em>. This is probably the firewire card number in the system
824 <p>The IEEE1394 standard specifies something known as the
825 <em>channel
</em>. For DV cameras it's always
<em>63</em>.
833 Node:
<a name=
"RECORDING">RECORDING
</a>,
834 Next:
<a rel=
"next" accesskey=
"n" href=
"#PERFORMANCE">PERFORMANCE
</a>,
835 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#PLAYBACK">PLAYBACK
</a>,
836 Up:
<a rel=
"up" accesskey=
"u" href=
"#CONFIGURATION">CONFIGURATION
</a>
840 <h3 class=
"section">RECORDING
</h3>
843 <li><a accesskey=
"1" href=
"#AUDIO%20IN">AUDIO IN
</a>:
844 <li><a accesskey=
"2" href=
"#VIDEO%20IN">VIDEO IN
</a>:
849 Node:
<a name=
"AUDIO%20IN">AUDIO IN
</a>,
850 Next:
<a rel=
"next" accesskey=
"n" href=
"#VIDEO%20IN">VIDEO IN
</a>,
851 Up:
<a rel=
"up" accesskey=
"u" href=
"#RECORDING">RECORDING
</a>
855 <h3 class=
"subsection">AUDIO IN
</h4>
857 <p>These determine what happens when you record audio.
863 <p>This is used for recording audio in the Record window. It may be
864 shared with the Record Driver for video if the audio and video are
865 wrapped in the same stream. It takes variable parameters depending on
866 the driver. The parameters have the same meaning as they do for
873 <p>Usually a file in the
<em>/dev/
</em> directory which controls the
879 <p>The number of bits of precision Cinelerra should set the device for.
880 This sometimes has a figuritive meaning. Some sound drivers need to be
881 set to
32 bits to perform
24 bit recording and won't record anything
882 when set to
24 bits. Some sound drivers need to be set to
24 bits for
887 <p>The number of channels Cinelerra should set the device for. Regardless
888 of the number of channels in the record operation, the number of
889 channels set here will be read from the device. When this is set to
2
890 and the record operation has
1 channel you'll record the left speaker
891 and not a mix of the left and right speakers as expected for a monaural
892 project. When this is set to
1 and the project has
2 channels you'll
893 record the left and right channels mixed into the left speaker and not
894 1 channel spead across two speakers.
899 SAMPLES TO WRITE AT A TIME
901 <p>Audio is first read in small fragments from the device. Many small
902 fragments are combined into a large fragment before writing to disk.
903 The disk writing process is done in a different thread. The value here
904 determines how large the combination of fragments is for each disk
908 SAMPLE RATE FOR RECORDING
910 <p>Regardless of what the project settings are. This is the sample rate
911 used for recording. This should be the highest the audio device
918 Node:
<a name=
"VIDEO%20IN">VIDEO IN
</a>,
919 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#AUDIO%20IN">AUDIO IN
</a>,
920 Up:
<a rel=
"up" accesskey=
"u" href=
"#RECORDING">RECORDING
</a>
924 <h3 class=
"subsection">VIDEO IN
</h4>
926 <p>These determine what happens when you record video.
932 <p>This is used for recording video in the Record window. It may be
933 shared with the Record Driver for audio if the audio and video are
934 wrapped in the same stream. It takes variable parameters depending on
935 the driver. The parameters have the same meaning as they do for
939 FRAMES TO RECORD TO DISK AT A TIME
941 <p>Frames are recorded in a pipeline. First frames are buffered in the
942 device. Then they're read into a larger buffer for writing to disk.
943 The disk writing is done in a different thread as the device reading.
944 For certain codecs the disk writing uses multiple processors. This
945 value determines how many frames are written to disk at a time.
948 FRAMES TO BUFFER IN DEVICE
950 <p>The number of frames to store in the device before reading. This
951 determines how much latency there can be in the system before frames
954 </p><li>USE SOFTWARE FOR POSITIONING INFORMATION
956 <p>Video uses audio for
958 <p>synchronization but most soundcards don't give accurate position
959 information. This calculates an estimation of audio position in
960 software instead of the hardware for synchronization.
963 SYNC DRIVES AUTOMATICALLY
965 <p>For high bitrate recording the drives may be fast enough to store the
966 data but Linux may wait several minutes and stall as it writes several
967 minutes of data at a time. This forces Linux to flush its buffers
968 every second instead of every few minutes and produce slightly better
972 SIZE OF CAPTURED FRAME
974 <p>This is the size of the frames recorded. It is independant of the
975 project frame size because most video devices only record a fixed frame
976 size. If the frame size given here isn't supported by the device it
977 might crash Cinelerra.
979 </p><li>FRAME RATE FOR RECORDING
981 <p>The frame rate recorded is different from the project settings. This
982 sets the recorded frame rate.
988 Node:
<a name=
"PERFORMANCE">PERFORMANCE
</a>,
989 Next:
<a rel=
"next" accesskey=
"n" href=
"#INTERFACE">INTERFACE
</a>,
990 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#RECORDING">RECORDING
</a>,
991 Up:
<a rel=
"up" accesskey=
"u" href=
"#CONFIGURATION">CONFIGURATION
</a>
995 <h3 class=
"section">PERFORMANCE
</h3>
997 <p>You'll spend most of your time configuring this section. The main
998 focus of performance is rendering parameters not available in the
1005 <p>To speed up rendering, several assets are kept open simultaneously.
1006 This determines how many are kept open. A number too large may exhaust
1007 your memory pretty fast and result in a crash. A number too small may
1008 result in slow playback as assets need to be reopened more frequently.
1011 SECONDS TO PREROLL RENDERS
1013 <p>Some effects need a certain amount of time to settle in. This sets a
1014 number of seconds to render without writing to disk before the selected
1015 region is rendered. When using the renderfarm you'll sometimes need to
1016 preroll to get seemless transitions between the jobs. Every job in a
1017 renderfarm is prerolled by this value. This does not affect background
1018 rendering, however. Background rendering uses a different preroll
1022 FORCE SINGLE PROCESSOR USE
1024 <p>Cinelerra tries to use all processors on the system by default but
1025 sometimes you'll only want to use one processor, like in a renderfarm
1026 client. This forces only one processer to be used. The operating
1027 system, however, usually uses the second processor anyway for disk
1028 access so this option is really a
1.25 processor mode. The value of
1029 this parameter is used in renderfarm clients.
1034 <li><a accesskey=
"1" href=
"#BACKGROUND%20RENDERING">BACKGROUND RENDERING
</a>:
1035 <li><a accesskey=
"2" href=
"#RENDERFARM">RENDERFARM
</a>:
1040 Node:
<a name=
"BACKGROUND%20RENDERING">BACKGROUND RENDERING
</a>,
1041 Next:
<a rel=
"next" accesskey=
"n" href=
"#RENDERFARM">RENDERFARM
</a>,
1042 Up:
<a rel=
"up" accesskey=
"u" href=
"#PERFORMANCE">PERFORMANCE
</a>
1046 <h3 class=
"subsection">BACKGROUND RENDERING
</h4>
1048 <p>Background rendering was originally concieved to allow HDTV effects to
1049 be displayed in realtime. Background rendering causes temporary output
1050 to constantly be rendered while the timeline is being modified. The
1051 temporary output is played during playack whenever possible. It's very
1052 useful for transitions and previewing effects which are too slow to
1053 display in a reasonable amount of time. If renderfarm is enabled, the
1054 renderfarm is used for background rendering, giving you the potential
1055 for realtime effects if enough network bandwidth and CPU nodes exist.
1059 <li>FRAMES PER BACKGROUND RENDERING JOB
1061 <p>This only works if renderfarm is being used, otherwise background
1062 rendering creates a single job for the entire timeline. The number of
1063 frames specified here is scaled to the relative CPU speed of rendering
1064 nodes and used in a single renderfarm job. The optimum number is
10 -
1065 30 since network bandwidth is used to initialize each job.
1067 </p><li>FRAMES TO PREROLL BACKGROUND
1069 <p>This is the number of frames to render ahead of each background
1070 rendering job. Background rendering is degraded when preroll is used
1071 since the jobs are small. When using background rendering, this number
1072 is ideally
0. Some effects may require
3 frames of preroll.
1074 </p><li>OUTPUT FOR BACKGROUND RENDERING
1076 <p>Background rendering generates a sequence of image files in a certain
1077 directory. This parameter determines the filename prefix of the image
1078 files. It should be on a fast disk, accessible to every node in the
1079 renderfarm by the same path. Since hundreds of thousands of image
1080 files are usually created,
<em>ls
</em> commands won't work in the
1081 background rendering directory. The
<img src=
"magnify.png" alt=
"magnify.png"> browse button for
1082 this option normally won't work either, but the
<img src=
"wrench.png" alt=
"wrench.png">
1083 configuration button for this option works.
1087 <p>The file format for background rendering has to be a sequence of
1088 images. The format of the image sequence determines the quality and
1089 speed of playback. JPEG is good most of the time.
1095 Node:
<a name=
"RENDERFARM">RENDERFARM
</a>,
1096 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#BACKGROUND%20RENDERING">BACKGROUND RENDERING
</a>,
1097 Up:
<a rel=
"up" accesskey=
"u" href=
"#PERFORMANCE">PERFORMANCE
</a>
1101 <h3 class=
"subsection">RENDERFARM
</h4>
1103 <p>To use the renderfarm set these options. Ignore them for a standalone
1109 USE RENDER FARM FOR RENDERING
1111 <p>When selected, all the
1112 <em>file-
>render
</em> operations use the renderfarm.
1117 <p>Displays all the nodes on the renderfarm and which ones are active.
1119 <p>Nodes are added by entering the host name of the node, verifying the
1120 value of
<em>port
</em> and hitting
<em>add node
</em>.
1122 <p>Computer freaks may be better off editing the
1123 <em>~/.bcast/.Cinelerra_rc
</em> file than this if they have hundreds of
1124 nodes. Remember that .Cinelerra_rc is overwritten whenever a copy of
1127 <p>Select the
<em>ON
</em> column to activate and deactivate nodes once they
1130 <p>Nodes may be edited by highlighting a row and hitting
<em>apply changes
</em>.
1135 <p>Edit the hostname of an existing node or enter the hostname of a new
1141 <p>Edit the port of an existing node or enter the port of a new node here.
1146 <p>When editing an existing node, hit this to commit the changes to
1147 <em>HOSTNAME
</em> and
<em>PORT
</em>. The changes won't be committed if you
1148 don't hit this button.
1153 <p>Create a new node with the
<em>HOSTNAME
</em> and
<em>PORT
</em> settings.
1158 <p>Deletes whatever node is highlighted in the
<em>NODES
</em> list.
1163 <p>Sorts the
<em>NODES
</em> list based on the hostname.
1168 <p>This sets the framerate for all the nodes to
0. Frame rates are used
1169 to scale job sizes based on CPU speed of the node. Frame rates are
1170 only calculated when renderfarm is enabled.
1173 USE VIRTUAL FILESYSTEM
1175 <p>Normally the directory on the master node containing the source and
1176 destination assets is mounted on the clients. The assets on the
1177 clients should be visible in the same locations as they are on the
1178 master node. This can be hard to set up and requires root access.
1180 <p>A user level version of NFS was built into Cinelerra and called the
1181 Virtual File System. This transparently redirects all file I/O over
1182 the network without requiring a replication of the master node's
1183 directory structure or root access on the client. The client sees the
1184 exact directory structure on the master node but in reality is sending
1185 network packets to access it.
1187 <p>There is a penalty for doing this though, since Virtual Filesystem
1188 isn't as refined as NFS. Operations that access one byte at a time are
1191 <p>Certain file format parsers are extemely slow over the Virtual
1192 Filesystem because they access very small amounts of data at a time.
1193 The PCM audio formats do this. These are best rendered using NFS.
1195 <p>Unless you need to run rendering clients without root access or have a
1196 lot of assets in different directories, use NFS instead.
1199 TOTAL JOBS TO CREATE
1201 <p>Determines the number of jobs to dispatch to the renderfarm. The more
1202 jobs you create, the more finely balanced the renderfarm becomes.
1204 <p>Determine the total jobs to create by multiplying the number of nodes
1205 including the master node by some number. Multiply them by
1 to have
1206 one job dispatched for every node. Multiply them by
3 to have
3 jobs
1207 dispatched for every node. If you have
10 slave nodes and one master
1208 node, specify
33 to have a well balanced renderfarm.
1214 Node:
<a name=
"INTERFACE">INTERFACE
</a>,
1215 Next:
<a rel=
"next" accesskey=
"n" href=
"#ABOUT">ABOUT
</a>,
1216 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#PERFORMANCE">PERFORMANCE
</a>,
1217 Up:
<a rel=
"up" accesskey=
"u" href=
"#CONFIGURATION">CONFIGURATION
</a>
1221 <h3 class=
"section">INTERFACE
</h3>
1223 <p>These parameters affect purely how the user interface works.
1230 <p>Back in the days when
4 MB/sec was unearthly speed for a hard drive,
1231 index files were introduced to speed up drawing the audio tracks. This
1232 option determines where index files are placed on the hard drive.
1237 <p>Determines the size of an index file. Larger index sizes allow smaller
1238 files to be drawn faster while slowing down the drawing of large files.
1239 Smaller index sizes allow large files to be drawn faster while slowing
1243 NUMBER OF INDEX FILES TO KEEP
1245 <p>To keep the index directory from becoming unruly, old index files are
1246 deleted. This determines the maximum number of index files to keep in
1252 <p>When you change the index size or you want to clean out excessive index
1253 files, this deletes all the index files.
1255 </p><li>USE HOURS:MINUTES:SECONDS.XXX
1257 <p>Various representations of time are given. Select the most convenient
1258 one. The time representation can also be changed by
<em>CTRL
</em>
1259 clicking on the time ruler.
1261 </p><li>USE THUMBNAILS
1263 <p>The Resource Window displays thumbnails of assets by default. This can
1264 take a long time to set up. This option disables the thumbnails.
1266 </p><li>CLICKING IN/OUT POINTS DOES WHAT
1268 <p>Cinelerra not only allows you to perform editing by dragging in/out
1269 points but also defines three seperate operations which occur when you
1270 drag an in/out point. For each mouse button you select the behavior in
1271 this window. The usage of each editing mode is described in editing.
1273 </p><li>MIN DB FOR METER
1275 <p>Some sound sources have a lower noise threshold than others.
1276 Everything below the noise threshold is meaningless. This option sets
1277 the meters to clip below a certain level. Consumer soundcards usually
1278 bottom out at -
65. Professional soundcards bottom out at -
90.
1280 </p><li>FORMAT FOR METER
1282 <p>This option allows you to select the format for all the VU meters. If
1283 you're a CS major select percentage and if you're a EE major select DB.
1284 With that, be aware all levels in Cinelerra are input as DB.
1288 <p>Cinelerra supports variable themes. Select one here and restart
1289 Cinelerra to see it.
1295 Node:
<a name=
"ABOUT">ABOUT
</a>,
1296 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#INTERFACE">INTERFACE
</a>,
1297 Up:
<a rel=
"up" accesskey=
"u" href=
"#CONFIGURATION">CONFIGURATION
</a>
1301 <h3 class=
"section">ABOUT
</h3>
1303 <p>This section gives you information about the copyright, the time of the
1304 current build, the lack of a warranty, and the versions of some of the
1305 libraries. Be sure to agree to the terms of the lack of the warranty.
1309 Node:
<a name=
"THE%20MAIN%20WINDOWS">THE MAIN WINDOWS
</a>,
1310 Next:
<a rel=
"next" accesskey=
"n" href=
"#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES
</a>,
1311 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#CONFIGURATION">CONFIGURATION
</a>,
1312 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
1316 <h2 class=
"chapter">THE MAIN WINDOWS
</h2>
1318 <p>When Cinelerra first starts, you'll get four main windows. Hitting
1319 <em>CTRL-w
</em> in any window closes it.
1325 <p>In here you'll scrub around source media and clips, selecting regions
1326 to paste into the project. Operations done in the viewer affect a
1327 temporary EDL or a clip but not the timeline.
1331 <p>This window displays the output of the timeline. It's the interface
1332 for most compositing operations or operations that affect the
1333 appearance of the timeline output. Operations done in the Compositor
1334 affect the timeline but don't affect clips.
1338 <p>This contains the timeline and the entry point for all menu driven
1339 operations. The timeline consists of a vertical stack of tracks with
1340 horizontal representation of time. This defines the output of
1341 rendering operations and what is saved when you save files.
1345 <p>Effects, transitions, clips, and assets are accessed here. Most of the
1346 resources are inserted into the project by dragging them out of the
1347 resource window. Management of resource allocation is also performed
1352 <p>Under the
<em>Window
</em> menu you'll find options affecting the main
1353 windows.
<em>default positions
</em> repositions all the windows to a
4
1354 screen editing configuration. On dual headed displays, the
1355 <em>default positions
</em> operation fills only one monitor with windows.
1357 <p>An additional window, the
<em>levels window
</em> can be brought up from
1358 the
<em>Window
</em> menu. The
<em>levels
</em> window displays the output
1359 audio levels after all mixing is done.
1363 Node:
<a name=
"LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES
</a>,
1364 Next:
<a rel=
"next" accesskey=
"n" href=
"#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT
</a>,
1365 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#THE%20MAIN%20WINDOWS">THE MAIN WINDOWS
</a>,
1366 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
1370 <h2 class=
"chapter">LOADING AND SAVING FILES
</h2>
1373 <li><a accesskey=
"1" href=
"#LOADING%20FILES">LOADING FILES
</a>: Loading all types of files
1374 <li><a accesskey=
"2" href=
"#LOADING%20THE%20BACKUP">LOADING THE BACKUP
</a>: Recovering the session from before a crash
1375 <li><a accesskey=
"3" href=
"#SAVING%20FILES">SAVING FILES
</a>: Saving edit decision lists
1376 <li><a accesskey=
"4" href=
"#RENDERING%20FILES">RENDERING FILES
</a>: Saving media files
1381 Node:
<a name=
"LOADING%20FILES">LOADING FILES
</a>,
1382 Next:
<a rel=
"next" accesskey=
"n" href=
"#LOADING%20THE%20BACKUP">LOADING THE BACKUP
</a>,
1383 Up:
<a rel=
"up" accesskey=
"u" href=
"#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES
</a>
1387 <h3 class=
"section">LOADING FILES
</h3>
1389 <p>All data that you work with in Cinelerra is acquired either by
1390 <em>recording from a device
</em> or by
<em>loading from disk
</em>. This
1391 section describes loading.
1393 <p>The loading and playing of files is just as you would expect. Just go
1394 to
<em>file-
>Load
</em>, select a file for loading, and hit
<em>ok
</em>. Hit
1395 the forward play button and it should start playing, regardless of
1396 whether a progress bar has popped up.
1398 <p>Another way to load files is to pass the filenames as arguments on the
1399 command line. This creates new tracks for every file and starts the
1400 program with all the arguments loaded.
1402 <p>If the file is a still image, the project's attributes are not changed
1403 and the first frame of the track becomes the image. If the file has
1404 audio, Cinelerra may build an index file for it to speed up drawing.
1405 You can edit and play the file while the index file is being built.
1408 <li><a accesskey=
"1" href=
"#SUPPORTED%20FILE%20FORMATS">SUPPORTED FILE FORMATS
</a>:
1409 <li><a accesskey=
"2" href=
"#INSERTION%20STRATEGY">INSERTION STRATEGY
</a>:
1410 <li><a accesskey=
"3" href=
"#LOADING%20MULTIPLE%20FILES">LOADING MULTIPLE FILES
</a>:
1415 Node:
<a name=
"SUPPORTED%20FILE%20FORMATS">SUPPORTED FILE FORMATS
</a>,
1416 Next:
<a rel=
"next" accesskey=
"n" href=
"#INSERTION%20STRATEGY">INSERTION STRATEGY
</a>,
1417 Up:
<a rel=
"up" accesskey=
"u" href=
"#LOADING%20FILES">LOADING FILES
</a>
1421 <h3 class=
"subsection">SUPPORTED FILE FORMATS
</h4>
1423 <p>The format of the file affects what Cinelerra does with it. Some
1424 formats replace all the project settings. Some just insert data with
1425 existing project settings. If your project sample rate is
48khz and
1426 you load a sound file with
96khz, you'll still be playing it at
1427 48khz. XML files, however, replace the project settings. If you load
1428 an XML file at
96khz and the current project sample rate is
48khz,
1429 you'll change it to
96khz. Supported file formats are currently:
1435 <li>Uncompresed Quicktime
1437 <p>Quicktime is not the standard for UNIX but we use it because it's well
1438 documented. All of the Quicktime movies on the internet are
1439 compressed. Cinelerra doesn't support compressed Quicktime movies.
1440 Most of the Quicktime footage dealt with in Cinelerra is generated by
1441 Cinelerra either recording from a device or rendering. The best
1442 Quicktime settings to use are JPEG video and twos audio.
1444 </p><li>JPEG, PNG, TIFF, TGA sequences
1446 <p>Cinelerra generates a special table of contents file when you render an
1447 image sequence. You can either select every image file to load or
1448 select the table of contents when the rendering is done. Selecting the
1449 table of contents is faster and doesn't fill up the resource window
1450 with thousands of images.
1452 </p><li>JPEG, PNG, TIFF, TGA still images
1454 <p>When loaded, the image takes up one frame in length and doesn't change
1455 the project attributes.
1457 </p><li>AVI with mp3 audio and MPEG-
4 video
1461 <p>You need to run
<em>mpeg3toc
</em> to generate a table of contents for
1462 these, then load the table of contents. Mpeg3toc needs the absolute
1463 path of the MPEG file. If you want to edit a DVD, find the
1464 corresponding
<em>ifo
</em> file for the program of interest and run
1466 <pre class=
"example"> mpeg3toc /cdrom/video_ts/vts_01_0.ifo dvd.toc
1469 <p>or something similar. Then load
<em>dvd.toc
</em>. This allows frame
1470 accurate editing where none would be possible otherwise.
1472 </p><li>MPEG program streams and transport streams
1474 <p>You need to run
<em>mpeg3toc
</em> on these just like MPEG
1,
2 video.
1475 Program and transport streams are structured into multiple tracks.
1476 Each track can be video or audio. Each audio track can have
1-
6
1477 channels. Cinelerra converts each channel of audio into a track, so
1478 for MPEG streams with multiple tracks, the tracks will be flattened.
1480 </p><li>MPEG audio layer II, III
1482 <p>These can be loaded directly with no table of contents. Variable
1483 bitrate streams may need a table of contents but are playable without
1490 <p>These are generated by Cinelerra for storing edit lists. They change
1491 project attributes when loaded.
1497 Node:
<a name=
"INSERTION%20STRATEGY">INSERTION STRATEGY
</a>,
1498 Next:
<a rel=
"next" accesskey=
"n" href=
"#LOADING%20MULTIPLE%20FILES">LOADING MULTIPLE FILES
</a>,
1499 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#SUPPORTED%20FILE%20FORMATS">SUPPORTED FILE FORMATS
</a>,
1500 Up:
<a rel=
"up" accesskey=
"u" href=
"#LOADING%20FILES">LOADING FILES
</a>
1504 <h3 class=
"subsection">INSERTION STRATEGY
</h4>
1506 <p>Usually three things happen when you load a file. First the existing
1507 project is cleared from the screen, second the project's attributes are
1508 changed to match the file's, and finally the new file's tracks are
1509 created in the timeline.
1511 <p>But Cinelerra lets you change what happens when you load a file.
1513 <p>In the file selection box go to the
<em>Insertion strategy
</em> box and
1514 select it. Each of these options loads the file a different way.
1518 <li>Replace current project
1520 <p>All tracks in the current project are deleted and new tracks are
1521 created to match the source. Project attributes are only changed when
1522 loading XML. If multiple files are selected it adds new tracks for
1525 </p><li>Replace current project and concatenate tracks
1527 <p>Same as replace current project except if multiple files are selected
1528 it concatenates the tracks of every file after the first.
1530 </p><li>Append in new tracks
1532 <p>The current project is not deleted and new tracks are created for the
1535 </p><li>Concatenate to existing tracks
1537 <p>The current project is not deleted and new files are concatenated to
1538 the existing tracks.
1540 </p><li>Paste at insertion point
1542 <p>The file is pasted in like a normal paste operation.
1544 </p><li>Create new resources only
1546 <p>The timeline is unchanged and new resources are created in the Resource
1551 <p>The insertion strategy is a recurring option in many of Cinelerra's
1552 functions. In each place the options do the same thing. With these
1553 options you can almost do all your editing by loading files.
1555 <p>If you load files by passing command line arguments to Cinelerra, the
1556 files are loaded with
<em>Replace current project
</em> rules.
1560 Node:
<a name=
"LOADING%20MULTIPLE%20FILES">LOADING MULTIPLE FILES
</a>,
1561 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#INSERTION%20STRATEGY">INSERTION STRATEGY
</a>,
1562 Up:
<a rel=
"up" accesskey=
"u" href=
"#LOADING%20FILES">LOADING FILES
</a>
1566 <h3 class=
"subsection">LOADING MULTIPLE FILES
</h4>
1568 <p>In the file selection box go to the list of files. Select a file. Go
1569 to another file and select it while holding down
<em>CTRL
</em>. This
1570 selects one additional file. Go to another file and select it while
1571 holding down
<em>SHIFT
</em>. This selects every intervening file. This
1572 behavior is available in most every list box.
1574 <p>Select a bunch of mp3 files and
<em>Replace current project and
1575 concatenate tracks
</em> in the insertion strategy to create a song
1580 Node:
<a name=
"LOADING%20THE%20BACKUP">LOADING THE BACKUP
</a>,
1581 Next:
<a rel=
"next" accesskey=
"n" href=
"#SAVING%20FILES">SAVING FILES
</a>,
1582 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#LOADING%20FILES">LOADING FILES
</a>,
1583 Up:
<a rel=
"up" accesskey=
"u" href=
"#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES
</a>
1587 <h3 class=
"section">LOADING THE BACKUP
</h3>
1589 <p>There is one special XML file on disk at all times. After every
1590 editing operation Cinelerra saves the current project to a backup in
1591 <em>$HOME/.bcast/backup.xml
</em>. In the event of a crash go to
1592 <em>file-
>load backup
</em> to load the backup. It is important after a
1593 crash to reboot Cinelerra without performing any editing operations.
1594 Loading the backup should be the first operation or you'll overwrite
1599 Node:
<a name=
"SAVING%20FILES">SAVING FILES
</a>,
1600 Next:
<a rel=
"next" accesskey=
"n" href=
"#RENDERING%20FILES">RENDERING FILES
</a>,
1601 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#LOADING%20THE%20BACKUP">LOADING THE BACKUP
</a>,
1602 Up:
<a rel=
"up" accesskey=
"u" href=
"#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES
</a>
1606 <h3 class=
"section">SAVING FILES
</h3>
1608 <p>When Cinelerra saves a file it saves an edit decision list of the
1609 current project but doesn't save any media. Go to
<em>File-
>save
1610 as...
</em>. Select a file to overwrite or enter a new file. Cinelerra
1611 automatically concatenates
<em>.xml
</em> to the filename if no
1612 <em>.xml
</em> extension is given.
1614 <p>The saved file contains all the project settings and locations of every
1615 edit but instead of media it contains pointers to the original media
1618 <p>For each media file the XML file stores either an absolute path or just
1619 the relative path. If the media is in the same directory as the XML
1620 file a relative path is saved. If it's in a different directory an
1621 absolute path is saved.
1623 <p>In order to move XML files around without breaking the media linkages
1624 you either need to keep the media in the same directory as XML file
1625 forever or save the XML file in a different directory than the media
1626 and not move the media ever again.
1628 <p>If you want to create an audio playlist and burn it on CD-ROM, save the
1629 XML file in the same directory as the audio files and burn the entire
1630 directory. This keeps the media paths relative.
1632 <p>XML files are useful for saving the current state before going to sleep
1633 and saving audio playlists but they're limited in that they're specific
1634 to Cinelerra. You can't play XML files in a dedicated movie player.
1635 Realtime effects in an XML file have to be resynthesized every time you
1636 play it back. The XML file also requires you to maintain copies of all
1637 the source assets on hard drives, which can take up space and cost a
1638 lot of electricity to spin. For a more persistent storage of the
1639 output there's rendering.
1643 Node:
<a name=
"RENDERING%20FILES">RENDERING FILES
</a>,
1644 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#SAVING%20FILES">SAVING FILES
</a>,
1645 Up:
<a rel=
"up" accesskey=
"u" href=
"#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES
</a>
1649 <h3 class=
"section">RENDERING FILES
</h3>
1651 <p>Rendering takes a section of the timeline, performs all the editing,
1652 effects and compositing, and stores it in a pure movie file. You can
1653 then delete all the source assets, play the rendered file in a movie
1654 player, or bring it back into Cinelerra for more editing. It's very
1655 difficult to retouch any editing decisions in the pure movie file,
1656 however, so keep the original assets and XML file around several days
1657 after you render it.
1659 <p>All rendering operations are based on a region of the timeling to be
1660 rendered. You need to define this region on the timeline. The
1661 navigation section describes methods of defining regions.
1662 See
<a href=
"#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT
</a>. The rendering functions define the
1663 region based on a set of rules. When a region is highlighted or in/out
1664 points are set, the affected region is rendered. When no region is
1665 highlighted, everything after the insertion point is rendered. Merely
1666 by positioning the insertion point at the beginning of a track and
1667 unsetting all in/out points, the entire track is rendered.
1670 <li><a accesskey=
"1" href=
"#SINGLE%20FILE%20RENDERING">SINGLE FILE RENDERING
</a>: Rendering a single file
1671 <li><a accesskey=
"2" href=
"#BATCH%20RENDERING">BATCH RENDERING
</a>: Rendering several files unattended
1672 <li><a accesskey=
"3" href=
"#THE%20RENDER%20FARM">THE RENDER FARM
</a>: Rendering using many computers
1673 <li><a accesskey=
"4" href=
"#COMMAND%20LINE%20RENDERING">COMMAND LINE RENDERING
</a>: Rendering from the command line without a GUI
1678 Node:
<a name=
"SINGLE%20FILE%20RENDERING">SINGLE FILE RENDERING
</a>,
1679 Next:
<a rel=
"next" accesskey=
"n" href=
"#BATCH%20RENDERING">BATCH RENDERING
</a>,
1680 Up:
<a rel=
"up" accesskey=
"u" href=
"#RENDERING%20FILES">RENDERING FILES
</a>
1684 <h3 class=
"subsection">SINGLE FILE RENDERING
</h4>
1686 <p>The fastest way to get media to disk is to use the single file
1689 <p>Go to
<b>File-
>render
</b> to bring up the render dialog. Select the
1690 magnifying glass
<img src=
"magnify.png" alt=
"magnify.png"> to bring up a file selection dialog. This determines
1691 the filename to write the rendered file to and the encoding parameters.
1693 <p>In the render dialog select a format from the
<b>File Format
</b> menu.
1694 The format of the file determines whether you can render audio or video
1695 or both. Select the
<b>Render audio tracks
</b> toggle to generate
1696 audio tracks and
<b>Render video tracks
</b> to generate video tracks.
1698 <p>Select the wrench
<img src=
"wrench.png" alt=
"wrench.png"> next to each toggle to set compression
1699 parameters. If the file format can't store audio or video the
1700 compression parameters will be blank. If
<b>Render audio tracks
</b> or
1701 <b>Render video tracks
</b> is selected and the file format doesn't
1702 support it, trying to render will pop up an error.
1704 <p>The
<b>Create new file at each label
</b> option causes a new file to be
1705 created when every label in the timeline is encountered. This is
1706 useful for dividing long audio recordings into individual tracks. When
1707 using the renderfarm,
<b>Create new file at each label
</b> causes one
1708 renderfarm job to be created at every label instead of using the
1709 internal load balancing algorithm to space jobs.
1711 <p>When
<b>Create new file at each label
</b> is selected, a new filename
1712 is created for every output file. If the filename given in the render
1713 dialog has a
2 digit number in it, the
2 digit number is overwritten
1714 with a different incremental number for every output file. If no
2
1715 digit number is given, Cinelerra automatically concatenates a number to
1716 the end of the given filename for every output file.
1718 <p>In the filename
<b>/hmov/track01.wav
</b> the
<b>01</b> would be
1719 overwritten for every output file. The filename
1720 <b>/hmov/track.wav
</b>; however, would become
<b>/hmov/track.wav001
</b>
1721 and so on and so forth. Filename regeneration is only used when either
1722 renderfarm mode is active or creating new files for every label is
1725 <p>Finally the render dialog lets you select an insertion mode. The
1726 insertion modes are the same as with loading files. In this case if
1727 you select
<b>insert nothing
</b> the file will be written out to disk
1728 without changing the current project. For other insertion strategies
1729 be sure to prepare the timeline to have the output inserted at the
1730 right position before the rendering operation is finished.
1731 See
<a href=
"#EDITING">EDITING
</a>. Editing describes how to cause output to be inserted
1732 at the right position.
1734 <p>It should be noted that even if you only have audio or only have video
1735 rendered, a
<b>paste
</b> insertion strategy will behave like a normal
1736 paste operation, erasing any selected region of the timeline and
1737 pasting just the data that was rendered. If you render only audio and
1738 have some video tracks armed, the video tracks will get truncated while
1739 the audio output is pasted into the audio tracks.
1743 Node:
<a name=
"BATCH%20RENDERING">BATCH RENDERING
</a>,
1744 Next:
<a rel=
"next" accesskey=
"n" href=
"#THE%20RENDER%20FARM">THE RENDER FARM
</a>,
1745 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#SINGLE%20FILE%20RENDERING">SINGLE FILE RENDERING
</a>,
1746 Up:
<a rel=
"up" accesskey=
"u" href=
"#RENDERING%20FILES">RENDERING FILES
</a>
1750 <h3 class=
"subsection">BATCH RENDERING
</h4>
1752 <p>If you want to render many projects to media files without having to
1753 repeatedly attend to the
<b>Render
</b> dialog,
<b>batch rendering
</b> is the
1754 function to use. In this function, you specify many EDL files to
1755 render and the unique output files for each. Then Cinelerra loads each
1756 EDL file and renders it automatically, without any user intervention.
1757 Each EDL file and its output to be rendered is called a
<b>batch
</b>.
1758 This allows a huge amount of media to be processed and greatly
1759 increases the value of an expensive computer.
1761 <p>The first thing to do when preparing to do batch rendering is define
1762 projects to be rendered. The batch renderer requires a separate EDL
1763 file for every batch to be rendered. Set up a project and define the
1764 region to be rendered either by highlighting it, setting in/out points
1765 around it, or positioning the insertion point before it. Then save the
1766 project as an EDL. Define as many projects as needed this way. The
1767 batch renderer takes the active region from the EDL file for rendering.
1769 <p>With all the EDL files prepared with active regions, go to
1770 <b>File-
>batch render
</b>. This brings up the batch rendering dialog.
1771 The interface for batch rendering is a bit more complex than for single
1774 <p>A list of batches must be defined before starting a batch rendering
1775 operation. The table of batches appears on the bottom of the batch
1776 render dialog and is called
<b>batches to render
</b>. Above this are
1777 the configuration parameters for a single batch.
1779 <p>Set the
<b>output path
</b>,
<b>file format
</b>,
<b>Audio
</b>,
<b>Video
</b>, and
1780 <b>Create new file at each label
</b> parameters as if it was a single
1781 file. These parameters apply to only one batch. In addition to the
1782 standard rendering parameters, you must select the source EDL to use in
1783 the batch. Do this by setting the
<b>EDL path
</b>.
1785 <p>If the
<b>batches to render
</b> list is empty or nothing is highlighted,
1786 click
<b>New
</b> to create a new batch. The new batch will contain all
1787 the parameters you just set.
1789 <p>Repeatedly press the
<b>New
</b> button to create more batches with the
1790 same parameters. Highlight any batch and edit the configuration on the
1791 top of the batch render window. The highlighted batch is always
1792 synchronized to the information displayed.
1794 <p>Click and drag batches to change the order in which they're rendered.
1795 Hit
<b>delete
</b> to permanently remove the highlighted batch.
1797 <p>In the list box is a column which enables or disables the batch. This
1798 way batches can be skipped without being deleted. Click on the
1799 <b>Enabled
</b> column in the list box to enable or disable a batch. If it
1800 is checked, the batch is rendered. If it is blank, the batch is
1803 <p>The other columns in the batch list are informative.
1807 <li><b>Output
</b> The output path of the batch.
1808 <li><b>EDL
</b> The source EDL of the batch.
1809 <li><b>Elapsed
</b> The amount of time taken to render the batch if it is finished.
1813 <p>To start rendering from the first enabled batch, hit
<b>Start
</b>.
1815 <p>Once rendering, the main window shows the progress of the batch. Once
1816 the batch finishes, the elapsed column in the batch list is updated and
1817 the next batch is rendered until all the enabled batches are finished.
1818 The currently rendering batch is always highlighted red.
1820 <p>To stop rendering before the batches are finished without closing the
1821 batch render dialog, hit
<b>Stop
</b>.
1823 <p>To stop rendering before the batches are finished and close the batch
1824 render dialog, hit
<b>Cancel
</b>.
1826 <p>To exit the batch render dialog whether or not anything is being
1827 rendered, hit
<b>Cancel
</b>.
1831 Node:
<a name=
"THE%20RENDER%20FARM">THE RENDER FARM
</a>,
1832 Next:
<a rel=
"next" accesskey=
"n" href=
"#COMMAND%20LINE%20RENDERING">COMMAND LINE RENDERING
</a>,
1833 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#BATCH%20RENDERING">BATCH RENDERING
</a>,
1834 Up:
<a rel=
"up" accesskey=
"u" href=
"#RENDERING%20FILES">RENDERING FILES
</a>
1838 <h3 class=
"subsection">THE RENDER FARM
</h4>
1840 <p>When bicubic interpolation and HDTV was first done on Cinelerra, the
1841 time needed to produce the simplest output became unbearable even on
1842 the fastest dual
1.7Ghz Xeon of the time. Renderfarm support even in
1843 the simplest form brings HDTV times back in line with SD while making
1844 SD faster than realtime.
1846 <p>While the renderfarm interface isn't spectacular, it's simple enough to
1847 use inside an editing suite with less than a dozen nodes without going
1848 through the same amount of hassle you would with a several hundred node
1849 farm. Renderfarm is invoked transparently for all file-
>render
1850 operations when it is enabled in the preferences.
1852 <p>It should be noted that
<b>Create new file at each label
</b> causes a
1853 new renderfarm job to be created at each label instead of the default
1854 load balancing. If this option is selected when no labels exist, only
1855 one job will be created.
1857 <p>A Cinelerra renderfarm is organized into a master node and any number
1858 of slave nodes. The master node is the computer which is running the
1859 GUI. The slave nodes are anywhere else on the network and are run from
1860 the command line. Run a slave node from the command line with
1862 <p><b>cinelerra -d
</b>
1864 <p>The default port number may be overridden by passing a port number
1867 <p>Cinelerra divides the selected region of the timeline into a certain
1868 number of jobs which are then dispatched to the different nodes
1869 depending on the load balance. The nodes process the jobs and write
1870 their output to individual files on the filesystem. The output files
1871 are not concatenated. It's important for all the nodes and the master
1872 node to use the same filesystem for assets, mounted over the network.
1874 <p>Since most of the time you'll want to bring in the rendered output and
1875 fine tune it on the timeline, the jobs are left in individual files.
1876 You can load these using
<b>concatenate mode
</b> and render them again
1877 with renderfarm disabled. If the track and output dimensions equal the
1878 asset dimensions, Cinelerra will do a direct copy of all the jobs into
1879 a single file. Note that direct copying doesn't work for MPEG Video.
1880 MPEG has the distinction that you can concatenate the subfiles with the
1883 <p>Configuration of the renderfarm is described in the configuration
1884 chapter See
<a href=
"#RENDERFARM">RENDERFARM
</a>. The slave nodes traditionally read and
1885 write data to a common filesystem over a network, thus they don't need
1888 <p>Ideally all the nodes on the renderfarm have similar CPU performance.
1889 Cinelerra load balances on a first come first serve basis. If the last
1890 segment is dispatched to the slowest node, all the fastest nodes may
1891 end up waiting for the slowest node to finish while they themselves
1892 could have rendered it faster.
1896 Node:
<a name=
"COMMAND%20LINE%20RENDERING">COMMAND LINE RENDERING
</a>,
1897 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#THE%20RENDER%20FARM">THE RENDER FARM
</a>,
1898 Up:
<a rel=
"up" accesskey=
"u" href=
"#RENDERING%20FILES">RENDERING FILES
</a>
1902 <h3 class=
"subsection">COMMAND LINE RENDERING
</h4>
1904 <p>The command line rendering facility consists of a way to load the
1905 current set of batch rendering jobs and process them without a GUI.
1906 This is useful if you're planning on crashing X repeatedly or want to
1907 do rendering on the other side of a low bandwidth network. You might
1908 have access to a supercomputer in India but still be stuck in America,
1909 exhiled you might say. A command line interface is ideal for this.
1911 <p>To perform rendering from the command line, first run Cinelerra in
1912 graphical mode. Go to
<b>file-
>batch render
</b>. Create the batches you
1913 intend to render in the batch window and close the window. This saves
1914 the batches in a file. Set up the desired renderfarm attributes in
1915 <b>settings-
>preferences
</b> and exit Cinelerra. These settings are used
1916 the next time command line rendering is used.
1918 <p>On the command line run
1920 <p><b>cinelerra -r
</b>
1922 <p>to processes the current batch jobs without a GUI. Setting up all the
1923 parameters for this operation is hard. That's why the command line
1924 aborts if any output files already exist.
1926 <p>Other parameters exist for specifying alternative files for the
1927 preferences and the batches. Attempting to use anything but the
1928 defaults is very involved so it hasn't been tested.
1932 Node:
<a name=
"NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT
</a>,
1933 Next:
<a rel=
"next" accesskey=
"n" href=
"#EDITING">EDITING
</a>,
1934 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#LOADING%20AND%20SAVING%20FILES">LOADING AND SAVING FILES
</a>,
1935 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
1939 <h2 class=
"chapter">NAVIGATING THE PROJECT
</h2>
1941 <p>The thing you want to do most of the time is get to a certain time and
1942 place in the media. Internally the media is organized into tracks.
1943 Each track extends across time. Navigation involves both getting to a
1944 track and getting to a certain time in the track.
1947 <li><a accesskey=
"1" href=
"#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW
</a>:
1948 <li><a accesskey=
"2" href=
"#NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR
</a>:
1949 <li><a accesskey=
"3" href=
"#NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES
</a>:
1950 <li><a accesskey=
"4" href=
"#USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS
</a>:
1951 <li><a accesskey=
"5" href=
"#USING%20BACKGROUND%20RENDERING">USING BACKGROUND RENDERING
</a>:
1956 Node:
<a name=
"NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW
</a>,
1957 Next:
<a rel=
"next" accesskey=
"n" href=
"#NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR
</a>,
1958 Up:
<a rel=
"up" accesskey=
"u" href=
"#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT
</a>
1962 <h3 class=
"section">NAVIGATING THE PROGRAM WINDOW
</h3>
1964 <p>The program window contains many features for navigation and displays
1965 the timeline as it is structured in memory: tracks stacked vertically
1966 and extending across time. The horizontal scroll bar allows you to
1967 scan across time. The vertical scroll bar allows you to scan across
1970 <p>Below the timeline you'll find the zoom panel. The zoom panel contains
1971 values for
<em>sample zoom
</em>,
<em>amplitude
</em>, and
<em>track
1972 zoom
</em>. These values in addition to the scrollbars are all that's
1973 needed to position the timeline, but at the heart of the batch
1974 rendering dialog are the same parameters you found in single file
1978 <img src=
"zoompanel.png" alt=
"zoompanel.png">
1980 <p>Changing the
<em>sample zoom
</em> causes the amount of time visible to
1981 change.
<em>If your mouse has a wheel and it works in X11 go over
1982 the tumblers and use the wheel to zoom in and out.
</em>
1984 <p>The
<em>amplitude
</em> only affects audio. It determines how big the
1985 waveform is if the waveform is drawn.
1987 <p>The
<em>track zoom
</em> affects all tracks. It determines the height of
1988 each track. If you change the track zoom the amplitude zoom
1989 compensates so audio waveforms look proportional.
1991 <p>In addition to the graphical tools, you'll probably more often use the
1992 keyboard to navigate. Use
<em>PAGE UP
</em> and
<em>PAGE DOWN
</em> to
1993 scroll up and down the tracks.
1995 <p>Use the
<em>LEFT
</em> and
<em>RIGHT
</em> arrows to move across time in
1996 small increments. You'll often need to scroll beyond the end of the
1997 timeline but scrollbars won't let you do it. Instead use the
1998 <em>RIGHT
</em> arrow to scroll past the end of timeline.
2000 <p>Use the
<em>HOME
</em> and
<em>END
</em> keys to instantly go to the
2001 beginning or end of the timeline. In
<em>I-beam
</em> mode, hold down
2002 shift while pressing
<em>HOME
</em> or
<em>END
</em> to select the region of
2003 the timeline between the insertion point and the key pressed.
2005 <p>Use the
<em>UP
</em> and
<em>DOWN
</em> arrows to change the sample zoom by a
2008 <p><em>CTRL-UP
</em> and
<em>CTRL-DOWN
</em> cause the amplitude zoom to change.
2010 <p><em>CTRL-PGUP
</em> and
<em>CTRL-PGDOWN
</em> cause the track zoom to change.
2013 <li><a accesskey=
"1" href=
"#THE%20INSERTION%20POINT">THE INSERTION POINT
</a>:
2014 <li><a accesskey=
"2" href=
"#THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS
</a>:
2015 <li><a accesskey=
"3" href=
"#USING%20LABELS%20IN%20THE%20PROGRAM%20WINDOW">USING LABELS IN THE PROGRAM WINDOW
</a>:
2020 Node:
<a name=
"THE%20INSERTION%20POINT">THE INSERTION POINT
</a>,
2021 Next:
<a rel=
"next" accesskey=
"n" href=
"#THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS
</a>,
2022 Up:
<a rel=
"up" accesskey=
"u" href=
"#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW
</a>
2026 <h3 class=
"subsection">THE INSERTION POINT
</h4>
2028 <p>By default you'll see a flashing insertion point in the program window
2029 the first time you boot it up. This is where new media is pasted onto
2030 the timeline. It's also the starting point of all playback
2031 operations. When rendering it defines the region of the timeline to be
2034 <p>The insertion point is normally moved by clicking inside the timebar.
2035 Any region of the timebar not obscured by labels and in/out points is a
2036 hotspot for repositioning the insertion point.
2039 <img src=
"main_timebar.png" alt=
"main_timebar.png">
2040 <em>The main timebar
</em>
2042 <p>The insertion point also can be moved by clicking in the timeline
2043 itself, but not always. The insertion point has two modes of
2047 <li>drag and drop mode
2049 <li>cut and paste mode
2053 <p>The mode of operation is determined by selecting the arrow or the
2054 i-beam in the buttonbar.
2057 <img src=
"editing_mode.png" alt=
"editing_mode.png">
2058 <em>The editing mode buttons
</em>
2060 <p>If the arrow is highlighted it enables
<em>drag and drop
</em> mode. In
2061 drag and drop mode, clicking in the timeline doesn't reposition the
2062 insertion point. Instead it selects an entire edit. Dragging in the
2063 timeline repositions the edit, snapping it to other edit boundaries.
2064 This is normally useful for reordering audio playlists and moving
2067 <p>If the i-beam is highlighted it enables
<em>cut and paste mode
</em>. In
2068 cut and paste mode clicking in the timeline repositions the insertion
2069 point. Dragging in the timeline highlights a region. The highlighted
2070 region becomes the playback range during the next playback operation,
2071 the rendered range during the next render operation, and the region
2072 affected by cut and paste operations.
2074 <p><em>Shift-clicking
</em> in the timeline extends the highlighted region.
2076 <p><em>Double-clicking
</em> in the timeline selects the entire edit the
2079 <p>It should be noted that when moving the insertion point and selecting
2080 regions, the positions are either aligned to frames or aligned to
2081 samples. When editing video you'll want to align to frames. When
2082 editing audio you'll want to align to samples. This is set in
2083 <em>settings-
>align cursor on frames
</em>.
2085 <p>If the highlighted region is the region affected by cut and paste
2086 operations, how do I cut and paste in
<em>drag and drop
</em> mode? In
2087 this case you need to set
<em>in/out points
</em> to define an affected region.
2091 Node:
<a name=
"THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS
</a>,
2092 Next:
<a rel=
"next" accesskey=
"n" href=
"#USING%20LABELS%20IN%20THE%20PROGRAM%20WINDOW">USING LABELS IN THE PROGRAM WINDOW
</a>,
2093 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#THE%20INSERTION%20POINT">THE INSERTION POINT
</a>,
2094 Up:
<a rel=
"up" accesskey=
"u" href=
"#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW
</a>
2098 <h3 class=
"subsection">THE IN/OUT POINTS
</h4>
2100 <p>In both editing modes you can set in/out points. The in/out points
2101 define the affected region. In drag and drop mode they are the only
2102 way to define an affected region. In both cut and paste mode and drag
2103 and drop mode they override the highlighted area. If a highlighted
2104 area and in/out points are set, the highlighted area affects playback
2105 while the in/out points affect editing operations. To avoid confusion
2106 it's best to use either highlighting or in/out points but not both
2109 <p>To set in/out points go to the timebar and position the insertion point
2110 somewhere. Hit the
<img src=
"in_point_button.png" alt=
"in_point_button.png"> <em>in point button
</em>. Go
2111 to a position after the in point and hit the
<img src=
"out_point_button.png" alt=
"out_point_button.png">
2112 <em>out point button
</em>.
2115 <img src=
"inout_points.png" alt=
"inout_points.png"> <em>Timebar with in/out points set
</em>.
2117 <p>Select either the in point or the out point and the insertion point
2118 jumps to that location. After selecting an in point, if you hit the
2119 <em>in point button
</em> the in point will be deleted. After selecting
2120 an out point, if you hit the
<em>out point button
</em> the out point will
2123 <p>If you select a region somewhere else while in/out points already
2124 exist, the existing points will be repositioned when you hit the in/out
2127 <p><em>Shift-clicking
</em> on an in/out point extends the highlighted region
2130 <p>Instead of using the button bar you can use the
<em>[
</em> and
<em>]
</em>
2131 keys to toggle in/out points.
2133 <p>The insertion point and the in/out points allow you to define an
2134 affected region but they don't let you jump to exact points on the
2135 timeline very easily. For this purpose there are labels.
2139 Node:
<a name=
"USING%20LABELS%20IN%20THE%20PROGRAM%20WINDOW">USING LABELS IN THE PROGRAM WINDOW
</a>,
2140 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#THE%20IN%2fOUT%20POINTS">THE IN/OUT POINTS
</a>,
2141 Up:
<a rel=
"up" accesskey=
"u" href=
"#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW
</a>
2145 <h3 class=
"subsection">USING LABELS IN THE PROGRAM WINDOW
</h4>
2147 <p>Labels are an easy way to set exact locations on the timeline you want
2148 to jump to. When you position the insertion point somewhere and hit
2149 the
<img src=
"label_button.png" alt=
"label_button.png"> <em>label button
</em> a new label appears on the
2153 <img src=
"timebar_label.png" alt=
"timebar_label.png"> <em>Timebar with a label on it
</em>
2155 <p>No matter what the zoom settings are, clicking on the label positions
2156 the insertion point exactly where you set it. Hitting the label button
2157 again when a label is selected deletes it.
2159 <p><em>Shift-clicking
</em> on a label extends the highlighted region.
2161 <p><em>Double-clicking
</em> between two labels highlights the region between
2164 <p>Hitting the
<em>l
</em> key has the same effect as the label button.
2166 <p>If you hit the label button when a region is highlighted, two labels
2167 are toggled at each end of the highlighted region. If one end already
2168 has a label, then the existing label is deleted and a label is created
2169 at the opposite end.
2171 <p>Labels can reposition the insertion point when they are selected but
2172 they can also be traversed with the
<img src=
"label_traversal.png" alt=
"label_traversal.png"> <em>label
2173 traversal
</em> buttons. When a label is out of view, the label traversal
2174 buttons reposition the timeline so the label is visible. There are
2175 keyboard shortcuts for label traversal, too.
2177 <p><em>CTRL-LEFT
</em> repositions the insertion point on the previous label.
2179 <p><em>CTRL-RIGHT
</em> repositions the insertion point on the next label.
2181 <p>With label traversal you can quickly seek back and forth on the
2182 timeline but you can also select regions.
2184 <p><em>SHIFT-CTRL-LEFT
</em> extends the highlighted region to the previous
2187 <p><em>SHIFT-CTRL-RIGHT
</em> extends the highlighted region to the next label.
2189 <p>Manually hitting the label button or
<em>l
</em> key over and over again
2190 to delete a series of labels can get tedious. For deleting a set of
2191 labels, first highlight a region and second use the
<em>Edit-
>Clear
2192 labels
</em> function. If in/out points exist, the labels between the
2193 in/out points are cleared and the highlighted region ignored.
2197 Node:
<a name=
"NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR
</a>,
2198 Next:
<a rel=
"next" accesskey=
"n" href=
"#NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES
</a>,
2199 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#NAVIGATING%20THE%20PROGRAM%20WINDOW">NAVIGATING THE PROGRAM WINDOW
</a>,
2200 Up:
<a rel=
"up" accesskey=
"u" href=
"#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT
</a>
2204 <h3 class=
"section">NAVIGATING THE VIEWER AND COMPOSITOR
</h3>
2206 <p>The navigation features of the Viewer and Compositor behave very
2207 similarly. Each has a timebar and slider below the video output. The
2208 timebar and slider are critical for navigation.
2211 <img src=
"timebarslider.png" alt=
"timebarslider.png">
2213 <p>The timebar represents the entire time covered by the program. When
2214 you define labels and in/out points it defines those, too. Finally the
2215 timebar defines a region known as the
<em>preview region
</em>.
2217 <p>The
<em>preview region
</em> is the region of the timeline which the
2218 slider effects. The slider only covers the time covered by the preview
2219 region. By using a preview region inside the entire program and using
2220 the slider inside the preview region you can quickly and precisely seek
2221 in the compositor and viewer.
2223 <p>When you replace the current project with a file the preview region
2224 automatically resizes to cover the entire file. When you append data
2225 or change the size of the current project, the preview region stays the
2226 same size and shrinks. Therefore, you need to resize the preview
2229 <p>Load a file and then slide around it using the compositor slider. The
2230 insertion point in the main window follows the compositor. Move the
2231 pointer over the compositor's timebar until it turns into a left resize
2232 pointer. The click and drag right. The preview region should have
2233 changed and the slider resized proportionally.
2235 <p>Go to the right of the timebar until a right resize pointer appears.
2236 Drag left so the preview region shrinks.
2238 <p>Go to the center of the preview region in the timebar and drag it
2239 around to convince yourself if can be moved.
2242 <img src=
"previewregion.png" alt=
"previewregion.png">
2244 <p><em>Preview region in compositor
</em>
2246 <p>If you go to the slider and slide it around with the preview region
2247 shrunk, you'll see the slider only affects the preview region. The
2248 timebar and slider in the viewer window work exactly the same.
2250 <p>Labels and in/out points are fully supported in the viewer and
2251 compositor. The only difference between the viewer and compositor is
2252 the compositor reflects the state of the program while the viewer
2253 reflects the state of a clip but not the program.
2255 <p>When you hit the
<em>label button
</em> in the compositor, the label
2256 appears both in the compositor timebar and the program timebar.
2258 <p>When you select a label or in/out point in the compositor, the program
2259 window jumps to that position.
2262 <img src=
"viewer_labels.png" alt=
"viewer_labels.png"> <em>Labels and in/out points in the viewer
</em>.
2264 <p>In the viewer and compositor, labels and in/out points are displayed in
2265 the timebar. Instead of displaying just a region of the program, the
2266 timebar displays the entire program here.
2268 <p>Like the Program window, the Compositor has a zoom capability. First,
2269 the pulldown menu on the bottom of the compositor window has a number
2270 of zoom options. When set to
<em>Auto
</em> the video is zoomed to match
2271 the compositor window size as closely as possible. When set to any
2272 other percentage, the video is zoomed a power of
2 and scrollbars can
2273 be used to scroll around the output. When the video is zoomed bigger
2274 than the window size, not only do scrollbars scan around it but
2275 <em>middle mouse button
</em> dragging in the video output scans around
2276 it. This is exactly when The Gimp does.
2278 <p>Furthermore, the zoom
<img src=
"magnify.png" alt=
"magnify.png"> toggle causes the Compositor
2279 window to enter zoom mode. In zoom mode, clicking in the video output
2280 zooms in while
<em>ctrl-clicking
</em> in the video output zooms out. If
2281 you have a wheel mouse, rotating the wheel zooms in or out too.
2283 <p>Zooming in or out with the zoom tool does not change the rendered
2284 output, mind you. It's merely for scrutinizing video or fitting it in
2289 Node:
<a name=
"NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES
</a>,
2290 Next:
<a rel=
"next" accesskey=
"n" href=
"#USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS
</a>,
2291 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#NAVIGATING%20THE%20VIEWER%20AND%20COMPOSITOR">NAVIGATING THE VIEWER AND COMPOSITOR
</a>,
2292 Up:
<a rel=
"up" accesskey=
"u" href=
"#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT
</a>
2296 <h3 class=
"section">NAVIGATING THE RESOURCES
</h3>
2298 <p>The resource window is divided into two areas. One area lists folders
2299 and another area lists folder contents. Going into the folder list and
2300 clicking on a folder updates the contents area with the contents of
2303 <p>The folder and contents can be displayed as icons or text.
2305 <p><em>Right clicking
</em> in the folder or contents area brings up a menu
2306 containing formatting options. Select
<em>Display text
</em> to display a
2307 text listing. Select
<em>Sort items
</em> to sort the contents of the
2308 folder alphabetically.
2312 Node:
<a name=
"USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS
</a>,
2313 Next:
<a rel=
"next" accesskey=
"n" href=
"#USING%20BACKGROUND%20RENDERING">USING BACKGROUND RENDERING
</a>,
2314 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#NAVIGATING%20THE%20RESOURCES">NAVIGATING THE RESOURCES
</a>,
2315 Up:
<a rel=
"up" accesskey=
"u" href=
"#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT
</a>
2319 <h3 class=
"section">USING THE TRANSPORT CONTROLS
</h3>
2321 <p>Transport controls are just as useful in navigation as they are in
2322 playing back footage, hence they are described here. Each of the
2323 Viewer, Compositor, and Program windows has a transport panel.
2326 <img src=
"transport_panel.png" alt=
"transport_panel.png"> <em>The transport panel
</em>.
2328 <p>The transport panel is controlled by the keyboard as well as the
2329 graphical interface. For each of the operations it performs, the
2330 starting position is the position of the insertion point or slider.
2331 The ending position is either the end or start of the timeline or the
2332 end or start of the selected region if there is one.
2334 <p>The orientation of the end or start depends on the direction of
2335 playback. If it's forward the end position is the end of the selected
2336 region. If it's backward the end position is the start of the selected
2339 <p>The insertion point moves to track playback. When playback stops it
2340 leaves the insertion point where it stopped. Thus, by playing back you
2341 change the position of the insertion point.
2343 <p>The keyboard interface is usually the fastest and has more speeds. The
2344 transport keys are arranged in a
<em>T
</em> on the number pad.
2348 <li><em>+
</em> Fast reverse
2349 <li><em>6</em> Normal reverse
2350 <li><em>5</em> Slow reverse
2351 <li><em>4</em> Frame reverse
2352 <li><em>1</em> Frame forward
2353 <li><em>2</em> Slow forward
2354 <li><em>3</em> Normal forward
2355 <li><em>Enter
</em> Fast forward
2357 <li><em>Spacebar
</em> Normal forward
2360 <p>Hitting any key on the keyboard twice pauses it.
2362 <p>When using frame advance functions the behavior may seem odd. If you
2363 frame advance forward and then frame advance backward, the displayed
2364 frame doesn't change. This is because the playback position isn't the
2365 frame but the time between two frames. The rendered frame is the area
2366 that the playback position crosses. When you increment the time
2367 between two frames by one and decrement it by one, you cross the same
2368 frame both times and so the same frame is displayed.
2372 Node:
<a name=
"USING%20BACKGROUND%20RENDERING">USING BACKGROUND RENDERING
</a>,
2373 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#USING%20THE%20TRANSPORT%20CONTROLS">USING THE TRANSPORT CONTROLS
</a>,
2374 Up:
<a rel=
"up" accesskey=
"u" href=
"#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT
</a>
2378 <h3 class=
"section">USING BACKGROUND RENDERING
</h3>
2380 <p>Background rendering allows impossibly slow effects to play back in
2381 realtime shortly after the effect is pasted in the timeline. It
2382 continuously renders temporary output. When renderfarm is enabled,
2383 background rendering uses the renderfarm continuously. This way, any
2384 size video can be seen in realtime merely by creating a fast enough
2385 network with enough nodes.
2387 <p>Background rendering is enabled in settings-
>preferences-
>performance.
2388 It has one interactive function:
<em>settings-
>set background render
</em>. This
2389 sets the point where background rendering begins to where the in point
2390 is. If any video exists, a red bar appears in the time bar showing
2391 what has been background rendered.
2393 <p>It's often useful to insert an effect or a transition and then select
2394 settings-
>set background render right before the effect to preview it
2399 Node:
<a name=
"EDITING">EDITING
</a>,
2400 Next:
<a rel=
"next" accesskey=
"n" href=
"#USING%20EFFECTS">USING EFFECTS
</a>,
2401 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#NAVIGATING%20THE%20PROJECT">NAVIGATING THE PROJECT
</a>,
2402 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
2406 <h2 class=
"chapter">EDITING
</h2>
2408 <p>Editing comprises both the time domain and the track domain. Since the
2409 timeline consists of a stack of tracks, you need to worry about how to
2410 sort and create tracks in addition to what time certain media appears
2413 <p>In the time domain, Cinelerra offers many ways to approach the editing
2414 process. The three main methods are two screen editing, drag and drop
2415 editing, and cut and paste editing.
2417 <p>There are several concepts Cinelerra uses when editing which apply to
2418 all the methods. The
<b>timeline
</b> is where all editing decisions are
2419 represented. This is a stack of tracks in the center of the main
2420 window. It can be scrolled up, down, left and right with the
2421 scrollbars on the right and bottom of it. It can also be scrolled up
2422 and down with a mouse wheel.
2424 <p>The
<b>active region
</b> is the range of time which is affected by editing
2425 commands on the timeline. The active region is determined first by the
2426 presence of in/out points in the timeline. If those don't exist the
2427 highlighted region is used. If no highlighted region exists the
2428 insertion point is used as the start of the active region. Some
2429 commands treat all the space to the right of the insertion point as
2430 active, like
<b>Render
</b>, while others treat the active length as
0 if no
2431 end point for the active region is defined.
2433 <p>Finally, editing decisions never affect source material. This is
2434 <b>non destructive editing
</b> and it became popular with audio because it
2435 was much faster than if you had to copy all the media affected by an
2436 edit. Editing only affects pointers to source material, so if you want
2437 to have a media file at the end of your editing session which
2438 represents the editing decisions, you need to
<em>render
</em> it.
2439 See
<a href=
"#RENDERING%20FILES">RENDERING FILES
</a>.
2441 <p>Every track on the timeline has a set of attributes on
2442 the left, the most important of which is the
<em>arm track
</em>
2446 <li><a accesskey=
"1" href=
"#THE%20PATCHBAY">THE PATCHBAY
</a>: Enabling different features on different tracks
2447 <li><a accesskey=
"2" href=
"#NUDGING%20TRACKS">NUDGING TRACKS
</a>: Moving entire tracks horizontally
2448 <li><a accesskey=
"3" href=
"#MANIPULATING%20TRACKS">MANIPULATING TRACKS
</a>: Moving whole tracks around
2449 <li><a accesskey=
"4" href=
"#TWO%20SCREEN%20EDITING">TWO SCREEN EDITING
</a>: Using two video windows to edit
2450 <li><a accesskey=
"5" href=
"#DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING
</a>: Dragging objects to edit
2451 <li><a accesskey=
"6" href=
"#CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING
</a>: Editing media like text
2452 <li><a accesskey=
"7" href=
"#TRIMMING">TRIMMING
</a>: Changing in and out points
2457 Node:
<a name=
"THE%20PATCHBAY">THE PATCHBAY
</a>,
2458 Next:
<a rel=
"next" accesskey=
"n" href=
"#NUDGING%20TRACKS">NUDGING TRACKS
</a>,
2459 Up:
<a rel=
"up" accesskey=
"u" href=
"#EDITING">EDITING
</a>
2463 <h3 class=
"section">THE PATCHBAY
</h3>
2465 <p>On the left of the timeline is a region affectionately known as the
2466 patchbay. The patchbay enables features specific to each track. All
2467 tracks have a text area for naming the track.
2469 <p>All tracks have an
<b>expander
</b> <img src=
"expandpatch_checked.png" alt=
"expandpatch_checked.png"> for viewing
2470 more options and for viewing the effects on the track. Click on the
2471 expander to expand or collapse the track. If it's pointing sideways,
2472 the track is collapsed. If it's pointing down, the track is expanded.
2473 The effects appear below the media for the track if they exist.
2475 <p>All tracks have the following row of toggles for several features.
2478 <img src=
"track_attributes.png" alt=
"track_attributes.png">
2479 <em>Track attributes
</em>
2481 <p>If the toggle is colored, it is enabled. If the toggle is the
2482 background color of most of the windows, it is disabled. Click on the
2483 toggle to enable or disable the feature. Several mouse operations
2484 speed up the configuration of several tracks at a time.
2486 <p>Click on an attribute and drag across adjacent tracks to toggle the
2487 same attribute in those tracks.
2489 <p>Hold down
<b>shift
</b> while clicking a track's attribute to toggle the
2490 attribute in all the tracks.
2492 <p>Hold down
<b>shift
</b> while clicking an attribute. Click until all the
2493 tracks except the selected one are disabled. Then drag the cursor over
2494 the adjacent track to enable the attribute in the adjacent track.
2496 <p>The other attributes affect the output of the track.
2501 <b>Play track
</b> determines whether the track is rendered or not. If
2502 it's off, the track is not rendered. However, if the track is chained
2503 to any other tracks, the other tracks perform all the effects in the
2504 chained track, regardless of play status.
2507 <b>Arm track
</b> determines whether the track is armed or not. Only the
2508 <em>armed tracks
</em> are affected by editing operations. Make sure you
2509 have enough armed destination tracks when you paste or splice material
2510 or some tracks in the material will get left out.
2512 <p>In addition to restricting editing operations, the armed tracks in
2513 combination with the active region determine where material is inserted
2514 when loading files. If the files are loaded with one of the insertion
2515 strategies which doesn't delete the existing project, the armed tracks
2516 will be used as destination tracks.
2519 <b>Gang fader
</b> causes the fader to track the movement of whatever other
2520 fader you're adjusting. A fader is only ganged if the
<b>arm track
</b> is
2521 also on. This is normally used to adjust audio levels on all the
2522 tracks simultaneously.
2525 <b>Draw media
</b> determines if picons or waveforms are drawn on the
2526 track. By default, some file formats load with this off while other
2527 file formats load with it on. This depends on whether the file format
2528 takes a long time to draw on the timeline. Merely set it to on if you
2529 want to see picons for any file format.
2532 <b>Mute track
</b> causes the output to be thrown away once the track is
2533 completely rendered. This happens whether or not
<b>play track
</b> is
2534 on. If the track is part of an effect chain, the output of the effect
2535 chain track is overlayed on the final output even though it's routed
2536 back to another track. Mute track is used to keep the effect chain
2537 track from overlapping the output of the source track.
2540 <b>Fader
</b> All tracks have a fader, but the units of each fader depend
2541 on whether it's audio or video. Click and drag the fader to fade the
2542 track in and out. If it is ganged to other tracks of the same media
2543 type, with the
<b>arm
</b> option enabled, the other faders should follow.
2545 <p>Hold down
<b>shift
</b> and drag a fader to center it on
0.
2551 Node:
<a name=
"NUDGING%20TRACKS">NUDGING TRACKS
</a>,
2552 Next:
<a rel=
"next" accesskey=
"n" href=
"#MANIPULATING%20TRACKS">MANIPULATING TRACKS
</a>,
2553 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#THE%20PATCHBAY">THE PATCHBAY
</a>,
2554 Up:
<a rel=
"up" accesskey=
"u" href=
"#EDITING">EDITING
</a>
2558 <h3 class=
"section">NUDGING TRACKS
</h3>
2560 <p>Each track has a nudge textbox in the patchbay under the fader and on
2561 the right. You may have to expand the track to see it. The nudge is
2562 the amount the track is shifted left or right during playback. The
2563 track is not displayed shifted on the timeline, but it is shifted when
2564 it's played back. This is useful for synchronizing audio with video,
2565 creating fake stereo, or compensating for an effect which shifts time,
2566 all without tampering with any edits.
2568 <p>Merely enter in the amount of time to shift by to instantly shift the
2569 track. Negative numbers make the track play later. Positive numbers
2570 make the track play sooner. The nudge units are either
<b>seconds
</b> or
2571 the native units for the track. Select the units by
<b>right clicking
</b>
2572 on the nudge textbox and using the context sensitive menu.
2576 Node:
<a name=
"MANIPULATING%20TRACKS">MANIPULATING TRACKS
</a>,
2577 Next:
<a rel=
"next" accesskey=
"n" href=
"#TWO%20SCREEN%20EDITING">TWO SCREEN EDITING
</a>,
2578 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#NUDGING%20TRACKS">NUDGING TRACKS
</a>,
2579 Up:
<a rel=
"up" accesskey=
"u" href=
"#EDITING">EDITING
</a>
2583 <h3 class=
"section">MANIPULATING TRACKS
</h3>
2585 <p>Tracks in Cinelerra either contain audio or video. There is no special
2586 designation for tracks other than the type of media they contain. When
2587 you create a new project, it contains a certain mumber of default
2588 tracks. You can still add or delete tracks from a number of menus.
2589 The
<em>Tracks
</em> menu contains a number of options for dealing with
2590 multiple tracks simultaneously. Each track itself has a popup menu
2591 which affects one track.
2593 <p>Bring up the popup menu by moving over a track and right clicking. The
2594 popup menu affects the track whether it's armed or not.
2596 <p><em>Move up
</em> and
<em>move down
</em> moves the one track up or down in
2597 the stack.
<em>Delete track
</em> deletes the track.
2599 <p>Operations in the
<em>Tracks
</em> menu affect only tracks which are
2602 <p><em>Move tracks up
</em> and
<em>Move tracks down
</em> shift all the armed
2603 tracks up or down the stack.
2605 <p><em>Delete tracks
</em> deletes the armed tracks.
2607 <p><em>Delete last track
</em> deletes the last track, whether it's armed or
2608 not. Holding down the
<em>d
</em> key quickly deletes all the tracks.
2610 <p><em>Concatenate tracks
</em> is more complicated. It takes every
2611 <em>playable
</em> track and concatenates it to the end of the first
2612 <em>armed tracks
</em>. If there are two armed tracks followed by two
2613 playable tracks, the concatenate operation puts the two playable tracks
2614 after the two armed tracks. If there are three playable tracks
2615 instead, two tracks are put after the armed tracks and a third track is
2616 put on the end of the first armed track. The destination track wraps
2617 around until all the playable tracks are concatenated.
2619 <p>Finally, you'll want to create new tracks. The
<em>Audio
</em> and
2620 <em>Video
</em> menus each contain an option to add a track of their
2621 specific type. In the case of audio, the new track is put on the
2622 bottom of the timeline and the output channel of the audio track is
2623 incremented by one. In the case of video, the new track is put on the
2624 top of the timeline. This way, video has a natural compositing order.
2625 New video tracks are overlayed on top of old tracks.
2629 Node:
<a name=
"TWO%20SCREEN%20EDITING">TWO SCREEN EDITING
</a>,
2630 Next:
<a rel=
"next" accesskey=
"n" href=
"#DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING
</a>,
2631 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#MANIPULATING%20TRACKS">MANIPULATING TRACKS
</a>,
2632 Up:
<a rel=
"up" accesskey=
"u" href=
"#EDITING">EDITING
</a>
2636 <h3 class=
"section">TWO SCREEN EDITING
</h3>
2638 <p>This is the fastest way to construct a program out of movie files. The
2639 idea consists of viewing a movie file in one window and viewing the
2640 program in another window. Sections of the movie file are defined in
2641 one window and transferred to the end of the program in the other
2644 <p>The way to begin a two screen editing session is to load some
2645 resources. In
<em>file-
>load
</em> load some movies with the insertion
2646 mode
<em>create new resources
</em>. You want the timeline to stay
2647 unchanged while new resources are brought in. Go to the Resource
2648 Window and select the
<em>media
</em> folder. The newly loaded resources
2649 should appear. Drag a resource from the media side of the window over
2652 <p>There should be enough armed tracks on the timeline to put the sections
2653 of source material that you want. If there aren't, create new tracks
2656 <p>In the viewer window seek to the starting point of a clip you want to
2657 use. Use either the
<em>slider
</em> or the
<em>transport controls
</em>.
2658 Use the
<em>preview region
</em> to narrow down the search. Set the
2659 starting point with the
<img src=
"in_point_button.png" alt=
"in_point_button.png"> <em>in point button
</em>.
2661 <p>Seek to the ending point of the clip you want to use. Set the ending
2662 point with the
<img src=
"out_point_button.png" alt=
"out_point_button.png"> <em>out point button
</em>. The
2663 two points should now appear on the timebar and define a clip.
2665 <p>There are several things you can do with the clip now.
2670 Splice
<img src=
"splice_button.png" alt=
"splice_button.png"> inserts the clip in the timeline, pushing
2671 everything back. If an
<em>in point
</em> or
<em>out point
</em> exists on
2672 the timeline it's inserted there, otherwise it's inserted after the
2673 insertion point. After that, the insertion point moves to the end of
2674 the clip. If there is no in/out point, the insertion point will be
2675 used as the next splice location. This way you can continuously build
2676 up the program by splicing.
2679 Overwrite
<img src=
"overwrite_button.png" alt=
"overwrite_button.png"> overwrites the region of the
2680 timeline with the clip. If an
<em>in point
</em> or
<em>out point
</em>
2681 exists on the timeline it's overwritten there, otherwise it's
2682 overwritten after the insertion point. If a region is highlighted or
2683 both in and out points exist the difference between the active region
2684 and the clip length is deleted.
2687 Create a clip
<img src=
"toclip_button.png" alt=
"toclip_button.png"> generates a new clip for the
2688 resource window containing the affected region but doesn't change the
2689 timeline. Every clip has a title and a description. These are
2693 Copy behaves the same as in cut and paste editing.
2697 <p>Two screen editing can be done purely by keybard shortcuts. When you
2698 move the pointer over any button a tooltip should appear, showing what
2699 key is bound to that button. In the Viewer window, the number pad keys
2700 control the transport and the
<em>[ ] v
</em> keys perform in/out points
2705 Node:
<a name=
"DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING
</a>,
2706 Next:
<a rel=
"next" accesskey=
"n" href=
"#CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING
</a>,
2707 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#TWO%20SCREEN%20EDITING">TWO SCREEN EDITING
</a>,
2708 Up:
<a rel=
"up" accesskey=
"u" href=
"#EDITING">EDITING
</a>
2712 <h3 class=
"section">DRAG AND DROP EDITING
</h3>
2714 <p>The answer is yes, you can you create a bunch of clips and drag them on
2715 the timeline. You can also drag edits around the timeline.
2717 <p>Load some files using
<em>file-
>load
</em>. Set the insertion mode to
2718 <em>Create new resources
</em>. This loads the files into the Resource
2719 Window. Create some audio and video tracks on the timeline using the
2720 video and audio menus.
2722 <p>Open the
<em>Media
</em> folder in the resource window. Drag a media file
2723 from the resource window to the timeline. If the media has video, drag
2724 it onto a video track. If the media is pure audio, drag it onto an
2727 <p>Cinelerra fills out the audio and video tracks below the dragging
2728 cursor with data from the file. This affects what tracks you should
2729 create initially and which track to drag the media onto. If the media
2730 has one video track and two audio tracks, you'll need one video track
2731 and two audio tracks on the timeline and the media should be dragged
2732 over the first video track. If the media has audio only you'll need
2733 one audio track on the timeline for every audio track in the media and
2734 the media should be dragged over the first audio track.
2736 <p>When dragging, the media snaps to the start of track if the track is
2737 empty. If there are edits on the track, the media snaps to the nearest
2740 <p>You can also drag multiple files from the resource window. Either draw
2741 a box around the files, use SHIFT, or use CTRL when selecting files.
2742 When you drop the files in the timeline, they are concatenated. The
2743 behavior of SHIFT and CTRL changes depending on if the resources are in
2746 <p>To display the resources as text or icons, right click inside the media
2747 list. Select either
<em>display icons
</em> or
<em>display text
</em> to
2748 change the list format.
2750 <p>When displaying text in the resource window
<em>SHIFT-clicking
</em> on
2751 media files extends the number of highlighted selections.
2752 <em>CTRL-clicking
</em> on media files in text mode selects additional
2753 files one at a time.
2755 <p>When displaying icons in the resource window
<em>SHIFT-clicking
</em> or
2756 <em>CTRL-clicking
</em> selects media files one at a time.
2758 <p>In addition to dragging media files, if you create clips and open the
2759 <em>clip
</em> folder you can drag clips on the timeline.
2761 <p>In the timeline there is further dragging functionality. To enable the
2762 dragging functionality of the timeline, select the arrow toggle
2763 <img src=
"arrow.png" alt=
"arrow.png">. Move over an edit and drag it. If more than one
2764 track is armed, Cinelerra will drag any edits which start on the same
2765 position as the edit the cursur is currently over. During a dragging
2766 operation the edit snaps to the nearest boundary.
2768 <p>Dragging edits around the timeline allows you to sort music playlists,
2769 sort movie scenes, and give better NAB demos but not much else.
2773 Node:
<a name=
"CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING
</a>,
2774 Next:
<a rel=
"next" accesskey=
"n" href=
"#TRIMMING">TRIMMING
</a>,
2775 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#DRAG%20AND%20DROP%20EDITING">DRAG AND DROP EDITING
</a>,
2776 Up:
<a rel=
"up" accesskey=
"u" href=
"#EDITING">EDITING
</a>
2780 <h3 class=
"section">CUT AND PASTE EDITING
</h3>
2782 <p>This is the traditional method of editing in audio editors. In the
2783 case of Cinelerra, you either need to start a second copy of Cinelerra
2784 and copy from one copy to the other, copy from different tracks in the
2785 same copy, or load a media file into the Viewer and copy from there.
2787 <p>Load some files onto the timeline. To perform cut and paste editing
2788 select the
<img src=
"ibeam.png" alt=
"ibeam.png"> i-beam toggle. Select a region of the
2789 timeline and select the
<img src=
"cut.png" alt=
"cut.png"> cut button to cut it. Move the
2790 insertion point to another point in the timeline and select the
2791 <img src=
"paste.png" alt=
"paste.png"> paste button. Assuming no in/out points are defined on
2792 the timeline this performs a cut and paste operation.
2794 <p>If in/out points are defined, the insertion point and highlighted
2795 region are overridden by the in/out points for clipboard operations.
2796 Thus, with in/out points you can perform cut and paste in drag and drop
2797 mode as well as cut and paste mode.
2799 <p>When editing audio, it is customary to cut from one part of a waveform
2800 into the same part of another waveform. The start and stop points of
2801 the cut are identical in each waveform and might be offset slightly,
2802 while the wave data is different. It would be very hard to highlight
2803 one waveform to cut it and highlight the second waveform to paste it
2804 without changing the relative start and stop positions.
2806 <p>One option for simplifying this is to open a second copy of Cinelerra,
2807 cutting and pasting to transport media between the two copies. This
2808 way two highlighed regions can exist simultanously.
2810 <p>Another option is to set in/out points for the source region of the
2811 source waveform and set labels for the destination region of the
2812 destination waveform. Perform a cut, clear the in/out points, select
2813 the region between the labels, and perform a paste.
2815 <p>A final operation in cut and paste editing is the
<em>edit-
>clear
</em>
2816 operation. If a region is highlighted or in/out points exist, the
2817 affected region is cleared by
<em>edit-
>clear
</em>. But if the insertion
2818 point is over an edit boundary and the edits on each side of the edit
2819 boundary are the same resource, the edits are combined into one edit
2820 comprised by the resource. The start of this one edit is the start of
2821 the first edit and the end of this one edit is the end of the second
2822 edit. This either results in the edit expanding or shrinking.
2826 Node:
<a name=
"TRIMMING">TRIMMING
</a>,
2827 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#CUT%20AND%20PASTE%20EDITING">CUT AND PASTE EDITING
</a>,
2828 Up:
<a rel=
"up" accesskey=
"u" href=
"#EDITING">EDITING
</a>
2832 <h3 class=
"section">TRIMMING
</h3>
2834 <p>With some edits on the timeline it's possible to do trimming. By
2835 trimming you shrink or grow the edit boundaries by dragging them. In
2836 either drag and drop mode or cut and paste mode, move the cursor over
2837 an edit boundary until it changes shape. The cursor will either be an
2838 expand left or an expand right. If the cursor is an expand left, the
2839 dragging operation affects the beginning of the edit. If the cursor is
2840 an expand right, the dragging operation affects the end of the edit.
2842 <p>When you click on an edit boundary to start dragging, the mouse button
2843 number determines which dragging behavior is going to be followed.
3
2844 possible behaviors are bound to mouse buttons in the interface
2845 preferences. See
<a href=
"#INTERFACE">INTERFACE
</a>.
2847 <p>The effect of each drag operation not only depends on the behavior
2848 button but whether the beginning or end of the edit is being dragged.
2849 When you release the mouse button, the trimming operation is performed.
2851 <p>In a
<em>Drag all following edits
</em> operation, the beginning of the
2852 edit either cuts data from the edit if you move it forward or pastes
2853 new data from before the edit if you move it backward. The end of the
2854 edit pastes data into the edit if you move it forward or cuts data from
2855 the end of the edit if you move it backward. All the edits thereafter
2856 shift. Finally, if you drag the end of the edit past the start of the
2857 edit, the edit is deleted.
2859 <p>In a
<em>Drag only one edit
</em> operation, the behavior is the same when
2860 you drag the beginning or end of an edit. The only difference is none
2861 of the other edits in the track shift. Instead, anything adjacent to
2862 the current edit expands or shrinks to fill gaps left by the drag
2865 <p>In a
<em>Drag source only
</em> operation, nothing is cut or pasted. If
2866 you move the beginning or end of the edit forward, the source reference
2867 in the edit shifts forward. If you move the beginning or end of the
2868 edit backward, the source reference shifts backward. Where the edit
2869 appears in the timeline remains the same but the source shifts.
2871 <p>For all file formats besides still images, the extent of the trimming
2872 operation is clamped to the source file length. Attempting to drag the
2873 start of the edit beyond the start of the source clamps it to the
2876 <p>In all trimming operations, all edits which start on the same position
2877 as the cursor when the drag operation begins are affected. Unarm
2878 tracks to prevent edits from getting affected.
2882 Node:
<a name=
"USING%20EFFECTS">USING EFFECTS
</a>,
2883 Next:
<a rel=
"next" accesskey=
"n" href=
"#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES
</a>,
2884 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#EDITING">EDITING
</a>,
2885 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
2889 <h2 class=
"chapter">USING EFFECTS
</h2>
2891 <p>It would be sufficient to perform all changes to the timeline using
2892 editing operations, but this isn't very extensible. Certain timeline
2893 changes should produce a different effect in the output without
2894 involving a unique procedure to apply each change. This is why we have
2897 <p>Effects fall into three categories, and each effect in a category is
2898 applied using the same procedure.
2901 <li><a accesskey=
"1" href=
"#REALTIME%20EFFECTS">REALTIME EFFECTS
</a>:
2902 <li><a accesskey=
"2" href=
"#RENDERED%20EFFECTS">RENDERED EFFECTS
</a>:
2903 <li><a accesskey=
"3" href=
"#TRANSITIONS">TRANSITIONS
</a>:
2904 <li><a accesskey=
"4" href=
"#LADSPA%20EFFECTS">LADSPA EFFECTS
</a>:
2909 Node:
<a name=
"REALTIME%20EFFECTS">REALTIME EFFECTS
</a>,
2910 Next:
<a rel=
"next" accesskey=
"n" href=
"#RENDERED%20EFFECTS">RENDERED EFFECTS
</a>,
2911 Up:
<a rel=
"up" accesskey=
"u" href=
"#USING%20EFFECTS">USING EFFECTS
</a>
2915 <h3 class=
"section">REALTIME EFFECTS
</h3>
2917 <p>These are layered under the track they apply to. They process the
2918 track when the track is played back, with no permanent storage of the
2919 output except when the project is rendered.
2921 <p>All the realtime effects are listed in the resource window, divided
2922 into two groups: audio effects and video effects. Audio effects should
2923 be dragged from the resource window onto audio tracks. Video effects
2924 should be dragged onto video tracks.
2926 <p>If there is data on the destination track, the effect is applied to the
2927 entire track. If there is no data on the track the effect is deleted.
2928 Finally, if a region of the track is selected the effect is pasted into
2929 the region, regardless of whether there is data.
2931 <p>Some of the effects don't process data but synthesize data. In the
2932 case of a synthesis effect, you'll want to select a region of the
2933 track so the dragging operation pastes it without deleting it.
2935 <p>When dragging more than one effect onto a track, you'll see the effects
2936 layering from top to bottom, on the bottom of the track. When the
2937 track is played back, effects are processed from top to bottom. The
2938 output of the top effect becomes the input of the bottom effect and so
2941 <p>In addition to dragging from the resource window, effects may be
2942 applied to a track by a popup menu. Right click on a track and select
2943 <em>Attach effect
</em> from the popup. The attach effect dialog gives
2944 you more control than pure dragging and dropping. For one thing, the
2945 attach effect dialog lets you attach two more types of effects: shared
2946 effects and shared tracks. Select a plugin from the
<em>Plugins
</em>
2947 column and hit
<em>Attach
</em> under the plugins column to attach it.
2948 The effect is the same as if the effect was dragged from the resource
2951 <p>When an effect exists under a track, it most often needs to be
2952 configured. Go to the effect and right click on it to bring up the
2953 effect popup. In the effect popup is a
<em>show
</em> option. The show
2954 option causes the GUI for the effect to appear under the cursor. Most
2955 effects have GUI's but some don't. If the effect doesn't have a GUI,
2956 nothing pops up when the
<em>show
</em> option is selected. When you
2957 tweek parameters in the effect GUI, the parameters normally effect the
2958 entire duration of the effect.
2961 <li><a accesskey=
"1" href=
"#REALTIME%20EFFECT%20TYPES">REALTIME EFFECT TYPES
</a>:
2962 <li><a accesskey=
"2" href=
"#EDITING%20REALTIME%20EFFECTS">EDITING REALTIME EFFECTS
</a>:
2967 Node:
<a name=
"REALTIME%20EFFECT%20TYPES">REALTIME EFFECT TYPES
</a>,
2968 Next:
<a rel=
"next" accesskey=
"n" href=
"#EDITING%20REALTIME%20EFFECTS">EDITING REALTIME EFFECTS
</a>,
2969 Up:
<a rel=
"up" accesskey=
"u" href=
"#REALTIME%20EFFECTS">REALTIME EFFECTS
</a>
2973 <h3 class=
"subsection">REALTIME EFFECT TYPES
</h4>
2975 <p>The two other effect types supported by the Attach Effect dialog are
2976 recycled effects. In order to use a recycled effect, three requiremenets
2981 <li>There must be other effects in the timeline.
2984 The other effects must be of the same type as the track you're
2985 attaching an effect to. If the track is an audio track, the effects
2986 must be audio effects. If the track is a video track, the effects must
2990 The insertion point or selected region must start inside the other effects.
2994 <p>In the case of a shared effect, these conditions must be true. In the
2995 case of a shared track, there merely must be another track on the
2996 timeline of the same type as the track you're applying an effect to.
2997 If you right clicked on a video track to attach an effect, there won't
2998 be anything in the
<em>shared tracks
</em> column if no other video track
2999 exists. If you right clicked on an audio track there won't be anything
3000 in the shared track column if no other audio track exists.
3002 <p>If shared effects or shared tracks are available, they appear in the
3003 <em>shared effects
</em> and
<em>shared tracks
</em> columns. The
3004 <em>attach
</em> button under each column causes anything highlighted in
3005 the column to be attached under the current track.
3007 <p>Shared effects and shared tracks allow very unique things to be done.
3008 In the case of a shared effect, the shared effect is treated like a
3009 copy of the original effect except in the shared effect the GUI can't
3010 be brought up. All configuration of the shared effect is determined by
3011 the GUI of the original effect and only the GUI of the original effect
3014 <p>When a shared effect is played back, it's processed just like a normal
3015 effect except the configuration is copied from the original effect.
3016 Some effects detect when they are being shared, like the reverb effects
3017 and the compressor. These effects determine what tracks are sharing
3018 them and either mix the two tracks together or use one track to stage
3019 some value. The reverb mixes tracks together to simulate ambience.
3020 The compressor uses one of the sharing tracks as the trigger.
3022 <p>When an original track has a
<em>shared track
</em> as one of its effects,
3023 the shared track itself is used as a realtime effect. This is more
3024 commonly known as
<em>bouncing tracks
</em> but Cinelerra achieves the
3025 same operation by attaching shared tracks. The fade and any effects in
3026 the shared track are applied to the original track. Once the shared
3027 track has processed the data, the original track performs any effects
3028 which come below the shared track and then composites it on the output.
3030 <p>In addition, once the shared track has processed the output of the
3031 original track like a realtime effect, the shared track mixes itself
3032 into the output with it's settings for pan, mode, and projector. Thus,
3033 two tracks are mixing the same data on the output. Most of the time
3034 you don't want the shared track to mix the same data as the original
3035 track on the output. You want it to stop right before the mixing stage
3036 and give the data back to the original track. Do this by enabling the
3037 <img src=
"mutepatch_up.png" alt=
"mutepatch_up.png"> mute toggle next to each track for whom you don't
3038 want to mix on the output.
3040 <p>Suppose you were making video and you did want the shared track to
3041 composite the original track's data on the output a second time. In
3042 the case of video, the video from the shared track would always appear
3043 under the video from the original track, regardless of whether it was
3044 on top of the original track. This is because shared tracks are
3045 composited in order of their attachment. Since it's part of the original
3046 track it has to be composited before the original track is composited.
3050 Node:
<a name=
"EDITING%20REALTIME%20EFFECTS">EDITING REALTIME EFFECTS
</a>,
3051 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#REALTIME%20EFFECT%20TYPES">REALTIME EFFECT TYPES
</a>,
3052 Up:
<a rel=
"up" accesskey=
"u" href=
"#REALTIME%20EFFECTS">REALTIME EFFECTS
</a>
3056 <h3 class=
"subsection">EDITING REALTIME EFFECTS
</h4>
3058 <p>Many operations exist for manipulating effects once they are in the
3059 timeline. Because mixing effects and media is such complex business,
3060 the methods used in editing effects aren't as concise as cutting and
3061 pasting. Some of the editing happens by dragging in/out points, some
3062 of the editing happens through popup menus, and some of it happens by
3065 <p>Normally when you edit tracks, the effects follow the editing
3066 decisions. If you cut from a track, the effect shrinks. If you drag
3067 edit in/out points, the effect changes length. This behavior can be
3068 disabled by selecting
<em>Settings-
>edit effects
</em> in the project
3069 window. This decouples effects from editing operations, but what if
3070 you just want to edit the effects?
3072 <p>Move the timeline cursor over the effect borders until it changes to a
3073 resize left or resize right icon. In this state, if you drag the end
3074 of the effect, it performs an edit just like dragging the end of a
3077 <p>The three editing behaviors of track trimming apply to effect trimming
3078 and they are bound to the mouse buttons that you set in
<em>interface
3079 preferences
</em>. See
<a href=
"#INTERFACE">INTERFACE
</a>. When you perform a trim edit on an
3080 effect, the effect boundary is moved by dragging on it. Unlike track
3081 editing, the effect has no source length. You can extend the end of an
3082 effect as much as desired without being limited.
3084 <p>Also unlike track editing, the starting position of the drag operation
3085 doesn't bind the edit decision to media. The media the effect is bound
3086 to doesn't follow effect edits. Other effects; however, do follow
3087 editing decisions made on an effect. If you drag the end of an effect
3088 which is lined up to effects on other tracks, the effects on the other
3089 tracks will be edited while the media stays the same.
3091 <p>What happens if you trim the end of an effect in, leaving a lot of
3092 unaffected time near the end of the track? When you drag an effect in
3093 from the Resource Window you can insert the effect in the portion of
3094 the row unoccupied by the trimming operation. Realtime effects are
3095 organized into rows under the track. Each row can have multiple
3098 <p>In addition to trimming, you can move effects up or down. Every track
3099 can have a stack of effects under it. By moving an effect up or down
3100 you change the order in which effects are processed in the stack. Go
3101 to an effect and right click to bring up the effect menu. The
3102 <em>Move up
</em> and
<em>Move down
</em> options move the effect up or down.
3104 <p>When you're moving effects up or down, be aware that if they're shared
3105 as
<em>shared effects
</em>, any references will be pointing to a
3106 different effect after the move operation.
3108 <p>Finally, there's dragging of effects. Dragging effects works just like
3109 dragging edits. You must select the
<img src=
"arrow.png" alt=
"arrow.png"> arrow to enter drag and
3110 drop mode before dragging effects. The effects snap to media
3111 boundaries, effect boundaries, and tracks. Be aware if you drag a
3112 reference to a shared effect, the reference will usually point to the
3113 wrong effect afterwards.
3115 <p>Right click on an effect to bring up a menu for the effect. Select
3116 <em>attach...
</em> to change the effect or change the reference if it is
3121 Node:
<a name=
"RENDERED%20EFFECTS">RENDERED EFFECTS
</a>,
3122 Next:
<a rel=
"next" accesskey=
"n" href=
"#TRANSITIONS">TRANSITIONS
</a>,
3123 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#REALTIME%20EFFECTS">REALTIME EFFECTS
</a>,
3124 Up:
<a rel=
"up" accesskey=
"u" href=
"#USING%20EFFECTS">USING EFFECTS
</a>
3128 <h3 class=
"section">RENDERED EFFECTS
</h3>
3130 <p>Another type of effect is performed on a section of the track and the
3131 result stored somewhere before it is played back. The result is
3132 usually pasted into the track to replace the original data.
3134 <p>The rendered effects are not listed in the resource window but instead
3135 are accessed through the
<em>Audio-
>Render effect
</em> and
3136 <em>Video-
>Render effect
</em> menu options. Each of these menu options
3137 brings up a dialog for the rendered effect. Rendered effects apply to
3138 only one type of track, either audio or video. If no tracks of the
3139 type exist, an error pops up.
3141 <p>A region of the timeline to apply the effect to must be defined before
3142 selecting
<em>Render effect...
</em>. If no in/out points and no
3143 highlighted region exists, the entire region after the insertion point
3144 is treated as the affected region. Otherwise, the region between the
3145 in/out points or the highlighted region is the affected region.
3147 <p>In the render effect dialog is a list of all the realtime and all the
3148 rendered effects. The difference here is that the realtime effects are
3149 rendered to disk and not applied under the track. Highlight an effect
3150 in the list to designate it as the one being performed.
3152 <p>Define a file to render the effect to in the
<em>Select a file to
3153 render to
</em> box. The
<img src=
"magnify.png" alt=
"magnify.png"> magnifying glass allows file
3154 selection from a list.
3156 <p>Select a file format which can handle the track type. The
3157 <img src=
"wrench.png" alt=
"wrench.png"> wrench allows configuration specific to the file format.
3159 <p>There is also an option for creating a new file at each label. If you
3160 have a CD rip on the timeline which you want to divide into different
3161 files, the labels would become dividing points between the files if
3162 this option were selected. When the timeline is divided by labels, the
3163 effect is re-initialized at every label. Normalize operations take the
3164 peak in the current file and not in the entire timeline.
3166 <p>Finally there is an insertion strategy just like in the render dialog.
3167 It should be noted that even though the effect applies only to audio or
3168 video, the insertion strategy applies to all tracks just like a
3169 clipboard operation.
3171 <p>When you click
<em>OK
</em> in the effect dialog, it calls the GUI of the
3172 effect. If the effect is also a realtime effect, a second GUI appears
3173 to prompt for acceptance or rejection of the current settings. After
3174 accepting the settings, the effect is processed.
3178 Node:
<a name=
"TRANSITIONS">TRANSITIONS
</a>,
3179 Next:
<a rel=
"next" accesskey=
"n" href=
"#LADSPA%20EFFECTS">LADSPA EFFECTS
</a>,
3180 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#RENDERED%20EFFECTS">RENDERED EFFECTS
</a>,
3181 Up:
<a rel=
"up" accesskey=
"u" href=
"#USING%20EFFECTS">USING EFFECTS
</a>
3185 <h3 class=
"section">TRANSITIONS
</h3>
3187 <p>When one edit ends and another edit begins, the default behaviour is to
3188 have the first edit's output immediately become the output of the
3189 second edit when played back. Transitions are a way for the first
3190 edit's output to become the second edit's output with different
3193 <p>Cinelerra supports audio and video transitions, all of which are listed
3194 in the resource window. Transitions may only apply to the matching
3195 track type. Transitions under
<em>audio transitions
</em> can only apply
3196 to audio tracks. Transitions under
<em>video transitions
</em> can only
3197 apply to video tracks.
3199 <p>Load a video file and cut a section from the center so the edit point
3200 is visible on the timeline. Go the resource window and click on the
3201 <em>Video transitions
</em> folder. Drag a transition from the transition
3202 list onto the second video edit on the timeline. A box highlights over
3203 where the transition will appear. Releasing it over the second edit
3204 applies the transition between the first and second edit.
3206 <p>You can now scrub over the transition with the transport controls and
3207 watch the output in the
<em>Compositor window
</em>. Scrubbing with the
3208 insertion point doesn't normally show transitions because the
3209 transition durations are usually too short. The exact point in time
3210 when the transition takes effect isn't straightforward. It starts when
3211 the second edit begins and lasts a certain amount of time into the
3212 second edit. Therefore, the first asset needs to have enough data
3213 after the edit point to fill the transition into the second edit.
3215 <p>Once the transition is in place, it can be edited similarly to an
3216 effect. Move the pointer over the transition and right click to bring
3217 up the transition menu. The
<em>show
</em> option brings up specific
3218 parameters for the transition in question if there are any. The
3219 <em>length
</em> option adjusts the length of the transition in seconds.
3220 Once these two parameters are set, they are applied to future
3221 transitions until they are changed again. Finally, the
<em>detach
</em>
3222 option removes the transition from the timeline.
3224 <p>Dragging and dropping transitions from the Resource window to the
3225 Program window can be really slow and tiring. Fortunately, once you
3226 drag a transition from the Resource window, the
<em>U
</em> and
<em>u
</em>
3227 keys will paste the same transition. The
<em>U
</em> key pastes the last
3228 video transition and the
<em>u
</em> key pastes the last audio transition
3229 on all the recordable tracks. If the insertion point or in point is
3230 over an edit, the beginning of the edit is covered by the transition.
3232 <p>It should be noted that when playing transitions from the timeline to a
3233 hardware accelerated video device, the hardware acceleration will
3234 usually be turned off momentarily during the transition and on after
3235 the transition in order to render the transition. Using an
3236 unaccelerated video device for the entire timeline normally removes the
3241 Node:
<a name=
"LADSPA%20EFFECTS">LADSPA EFFECTS
</a>,
3242 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#TRANSITIONS">TRANSITIONS
</a>,
3243 Up:
<a rel=
"up" accesskey=
"u" href=
"#USING%20EFFECTS">USING EFFECTS
</a>
3247 <h3 class=
"section">LADSPA EFFECTS
</h3>
3249 <p>LADSPA effects are supported in realtime and rendered mode for audio.
3250 The LADSPA plugins you get from the internet vary in quality. Most
3251 can't be tweeked in realtime very easily and work better when
3252 rendered. Some crash and some can only be applied to one track due to
3253 a lack of reentrancy. Although Cinelerra implements the LADSPA
3254 interface as accurately as possible, multiple tracks of realtime,
3255 simultaneous processing go beyond the majority of LADSPA users. LADSPA
3256 effects appear in the audio folder as the hammer and screwdriver, to
3257 signify that they are Plugins for Linux Audio Developers.
3259 <p>LADSPA Effects are enabled merely by setting the
<em>LADSPA_PATH
</em>
3260 environment variable to the location of your LADSPA plugins or putting
3261 them in the
<em>/usr/lib/cinelerra
</em> directory.
3265 Node:
<a name=
"SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES
</a>,
3266 Next:
<a rel=
"next" accesskey=
"n" href=
"#COMPOSITING">COMPOSITING
</a>,
3267 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#USING%20EFFECTS">USING EFFECTS
</a>,
3268 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
3272 <h2 class=
"chapter">SETTING PROJECT ATTRIBUTES
</h2>
3274 <p>When you play media files in Cinelerra, the media files have a certain
3275 number of tracks, a certain frame size, a certain sample size, and so
3276 on and so forth. No matter what the media file has; however, it is
3277 still played back according to the project attributes. If an audio
3278 file's samplerate is different than the project attributes, it is
3279 resampled. If a video file's frame size is different than the project
3280 attributes, it is composited on a black frame, either cropped or
3281 bordered with black.
3283 <p>The project attributes are adjusted in
<em>settings-
>format
</em> and in
3284 to a more limited extent in
<em>file-
>new
</em>. When you adjust project
3285 settings in
<em>file-
>new
</em> a new timeline is created with no data.
3286 Every timeline created from this point uses the same settings. When
3287 you adjust settings in
<em>settings-
>format
</em>, the timeline is not
3288 recreated with no data but every timeline created from this point uses
3291 <p>In addition to the traditional settings for sample rate, frame rate,
3292 frame size, Cinelerra uses some unusual settings like
<em>channel
3293 positions, color model, and aspect ratio.
</em>
3298 Channel positions is the only setting which doesn't affect the output
3299 necessarily. Click on a speaker icon and drag to change the position
3300 of a channel. It is merely a convenience so when more than
2 channels
3301 are used, the pan controls on the timeline are effective. Channels
3,
3302 4, and
5 wouldn't be very adjustible if they occupied the same
3303 locations as channels
1 and
2 on a pan control. Normally a
6 channel
3304 configuration would look like this:
3308 <img src=
"channelpositions.png" alt=
"channelpositions.png">
3311 <p>But different channels can be positioned very close together to make
3312 them have the same output.
3315 Color model is very important for video playback. The video is stored
3316 on disk in one colormodel, normally compressed using a YUV derivative.
3317 When played back, Cinelerra decompresses it from the file format
3318 directly into the format of the output device. If effects are
3319 processed, the decompression is into an internal colormodel first and
3320 the internal colormodel is then converted to the format of the output
3321 device. The selection of internal colormodel determines how accurate
3322 and fast the effects are.
3324 <p>Cinelerra colormodels are described using a certain packing order of
3325 components and a certain number of bits for each component. The
3326 packing order is printed on the left and the bit allocation is printed
3329 <p><em>RGBA8888
</em> uses red, green, blue, and alpha with
8 bits per
3332 <p>In order to do effects which involve alpha channels, a colormodel with
3333 an alpha channel must be selected. These are RGBA8888, YUVA8888,
3334 RGBA16161616, YUVA16161616. The
4 channel colormodels are notoriously
3335 slower than
3 channel colormodels, with the slowest being
3336 RGBA16161616. Some effects, like fade, work around the need for alpha
3337 channels while other effects, like chromakey, require an alpha channel
3338 to do anything, so it's a good idea to try the effect without alpha
3341 <p>The YUV colormodels are usually faster than RGB colormodels when using
3342 compressed footage. They also destroy fewer colors than RGB
3343 colormodels. If footage stored as JPEG or MPEG is processed many times
3344 in RGB, the colors will fade while they won't if processed in YUV.
3347 Aspect ratio determines the shape of the video output when using the
3348 X11 video output. The numbers in each direction can be any floating
3349 point number. When drawn on the screen, video pixels are stretched to
3350 match the aspect ratio.
3356 Node:
<a name=
"COMPOSITING">COMPOSITING
</a>,
3357 Next:
<a rel=
"next" accesskey=
"n" href=
"#KEYFRAMES">KEYFRAMES
</a>,
3358 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#SETTING%20PROJECT%20ATTRIBUTES">SETTING PROJECT ATTRIBUTES
</a>,
3359 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
3363 <h2 class=
"chapter">COMPOSITING
</h2>
3365 <p>A large amount of Cinelerra's binary size is directed towards
3366 compositing. When you remove the letterboxing from a widescreen show,
3367 you're compositing. Changing the resolution of a show, making a split
3368 screen, and fading in and out among other things are all compositing
3369 operations in Cinelerra. Cinelerra detects when it's in a compositing
3370 operation and plays back through the compositing engine only then.
3371 Otherwise, it uses the fastest decoder available in the hardware.
3373 <p>Compositing operations are done on the timeline and in the Compositor
3374 window. Shortcuts exist in the Resource window for changing project
3375 attributes. Once some video files are on the timeline, the compositor
3376 window is a good place to try compositing.
3379 <li><a accesskey=
"1" href=
"#THE%20CAMERA%20AND%20PROJECTOR">THE CAMERA AND PROJECTOR
</a>:
3380 <li><a accesskey=
"2" href=
"#MASKS">MASKS
</a>:
3381 <li><a accesskey=
"3" href=
"#CROPPING">CROPPING
</a>:
3382 <li><a accesskey=
"4" href=
"#SAFE%20REGIONS">SAFE REGIONS
</a>:
3383 <li><a accesskey=
"5" href=
"#OVERLAY%20MODES">OVERLAY MODES
</a>:
3384 <li><a accesskey=
"6" href=
"#TRACK%20AND%20OUTPUT%20SIZES">TRACK AND OUTPUT SIZES
</a>:
3389 Node:
<a name=
"THE%20CAMERA%20AND%20PROJECTOR">THE CAMERA AND PROJECTOR
</a>,
3390 Next:
<a rel=
"next" accesskey=
"n" href=
"#MASKS">MASKS
</a>,
3391 Up:
<a rel=
"up" accesskey=
"u" href=
"#COMPOSITING">COMPOSITING
</a>
3395 <h3 class=
"section">THE CAMERA AND PROJECTOR
</h3>
3397 <p>In the compositor window, the most important functions are the
3398 <img src=
"camera.png" alt=
"camera.png"> camera button and the
<img src=
"projector.png" alt=
"projector.png"> projector
3399 button. These control operation of the camera and projector. Inside
3400 Cinelerra's compositing pipeline, the camera determines where in the
3401 source video the temporary is copied from. The projector determines
3402 where in the output the temporary is copied to. The temporary is a
3403 frame of video in Cinelerra's memory where all graphics processing is
3404 done. Each track has a different temporary which is defined by the
3405 track size. By resizing the tracks you can create splitscreens, pans,
3410 <img src=
"compositing_pipeline.png" alt=
"compositing_pipeline.png">
3413 <p><em>Visual representation of the compositing pipeline
</em>.
3415 <p>When editing the camera and projector in the compositing window, the
3416 first track with
<em>record
</em> enabled is the track affected. Even if
3417 the track is completely transparent, it's still the affected track. If
3418 multiple video tracks exist, the easiest way to select one track for
3419 editing is to
<em>shift-click
</em> on the record icon of the track. This
3422 <p>When the
<em>projector
</em> button is enabled in the compositor window,
3423 you're in projector editing mode. A guide box appears in the video
3424 window. Dragging anywhere in the video window causes the guide box to
3425 move, hopefully along with the video.
<em>shift-dragging
</em> anywhere
3426 in the video window causes the guide box to shrink and grow along with
3427 the video. Once you've positioned the video with the projector, you're
3428 ready to master the camera.
3430 <p>Select the
<img src=
"camera.png" alt=
"camera.png"> camera button to enable camera editing mode.
3431 In this mode, the guide box shows where the camera position is in
3432 relation to past and future camera positions but not where it is in
3433 relation to the source video. Dragging the camera box in the
3434 compositor window doesn't move the box but instead moves the location
3435 of the video inside the box.
3437 <p>For example, when you drag the camera left, the video moves right.
3438 When you drag the camera up, the video moves down. When you shift-drag
3439 the camera, the effect is the same as if you zoomed in or out of the
3440 source. The intention of the camera is to produce still photo panning,
3441 while the intention of the projector is to composite several sources in
3444 <p>In the compositing window, there is a popup menu of options for the
3445 camera and projector. Right click over the video portion of the
3446 compositing window to bring up the menu.
3450 <li>Reset Camera causes the camera to return to the center position.
3452 <li>Reset Projector causes the projector to return to the center.
3456 <p>The camera and projector have shortcut operations neither in the popup
3457 menu or represented in video overlays. These are accessed in the
3458 <em>Tool window
</em>. Most operations in the Compositor window have a
3459 tool window which is enabled by activating the
<img src=
"toolwindow.png" alt=
"toolwindow.png">
3462 <p>In the case of the camera and projector, the tool window shows x, y,
3463 and z coordinates. By either tumbling or entering text directly, the
3464 camera and projector can be precisely positioned.
9 justification
3465 types are also defined for easy access. A popular justification
3466 operation is upper left projection after image reduction. This is used
3467 when reducing the size of video with aspect ratio adjustment.
3469 <p>The translation effect allows simultaneous aspect ratio conversion and
3470 reduction but is easier to use if the reduced video is put in the upper
3471 left of the temporary instead of in the center. The track size is set
3472 to the original size of the video and the camera is centered. The
3473 output size is set to the reduced size of the video. Without any
3474 effects, this produces just the cropped center portion of the video in
3477 <p>The translation effect is dropped onto the video track. The input
3478 dimensions of the translation effect are set to the original size and
3479 the output dimensions are set to the reduced size. To put the reduced
3480 video in the center section that the projector shows would require
3481 offsetting
<em>out x and out y
</em> by a complicated calculation.
3482 Instead, we leave
<em>out x and out y
</em> at
0 and use the projector's
3485 <p>Merely by selecting
<img src=
"left_justify.png" alt=
"left_justify.png"> left justify and
3486 <img src=
"top_justify.png" alt=
"top_justify.png"> top justify, the projector displays the reduced
3487 image from the top left corner of the temporary in the center of the
3492 Node:
<a name=
"MASKS">MASKS
</a>,
3493 Next:
<a rel=
"next" accesskey=
"n" href=
"#CROPPING">CROPPING
</a>,
3494 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#THE%20CAMERA%20AND%20PROJECTOR">THE CAMERA AND PROJECTOR
</a>,
3495 Up:
<a rel=
"up" accesskey=
"u" href=
"#COMPOSITING">COMPOSITING
</a>
3499 <h3 class=
"section">MASKS
</h3>
3501 <p>Masks select a region of the video for either displaying or hiding.
3502 Masks are also used in conjunction with another effect to isolate the
3503 effect to a certain region of the frame. A copy of one video track may
3504 be delayed slightly and unmasked in locations where the one copy has
3505 interference but the other copy doesn't. Color correction may be
3506 needed in one section of a frame but not another. A mask can be
3507 applied to just a section of the color corrected track while the
3508 vanilla track shows through. Removal of boom microphones, airplanes,
3509 and housewives are other mask uses.
3511 <p>The order of the compositing pipeline affects what can be done with
3512 masks. Mainly, masks are performed on the temporary after effects and
3513 before the projector. This means multiple tracks can be bounced to a
3514 masked track and projected with the same mask.
3516 <p>Our compositing pipeline graph now has a masking stage. There are
8
3517 possible masks per track. Each mask is defined separately, although
3518 they each perform the same operation, whether it's addition or
3523 <img src=
"compositing_pipeline2.png" alt=
"compositing_pipeline2.png">
3526 <p><em>Compositing pipeline with masks
</em>
3528 <p>To define a mask, go into the Compositor window and enable the
3529 <img src=
"mask.png" alt=
"mask.png"> <em>mask
</em> toggle. Now go over the video and
3530 click-drag. Click-drag again in another part of the image to create
3531 each new point of the mask. While it isn't the conventional bezier
3532 curve behavior, this masking interface performs in realtime what the
3533 effect of the mask is going to be. Creating each point of the mask
3534 expands a rubber band curve.
3536 <p>Once points are defined, they can be moved by
<em>ctrl-dragging
</em> in
3537 the vicinity of the corner. This; however, doesn't smooth out the
3538 curve. The in-out points of the bezier curve are accessed by
3539 <em>shift-dragging
</em> in the vicinity of the corner. Then
3540 <em>shift-dragging
</em> near the in or out point causes the point to
3543 <p>Finally, once you have a mask, the mask can be translated in one piece
3544 by
<em>alt-dragging
</em> the mask. Mask editing in Cinelerra is
3545 identical to how The Gimp edits masks except in this case the effect of
3546 the mask is always on.
3548 <p>The masks have many more parameters which couldn't be represented with
3549 video overlays. These are represented in the tool window for masks.
3550 Selecting the
<img src=
"toolwindow.png" alt=
"toolwindow.png"> question mark when the
<img src=
"mask.png" alt=
"mask.png">
3551 mask toggle is highlighted brings up the mask options.
3553 <p>The
<em>mode
</em> of the mask determines if the mask removes data or
3554 makes data visible. If the mode is subtractive, the mask causes video
3555 to disappear. If the mode is additive, the mask causes video to appear
3556 and everything outside the mask to disappear.
3558 <p>The
<em>value
</em> of the mask determines how extreme the addition or
3559 subtraction is. In the subtractive mode, higher values subtract more
3560 alpha. In the additive mode, higher values make the region in the mask
3561 brighter while the region outside the mask is always hidden.
3563 <p>The mask number determines which one of the
8 possible masks we're
3564 editing. Each track has
8 possible masks. When you click-drag in the
3565 compositor window, you're only editing one of the masks. Change the
3566 value of
<em>mask number
</em> to cause another mask to be edited. The
3567 previous mask is still active but only the curve overlay for the
3568 currently selected mask is visible.
3570 <p>When multiple masks are used, their effects are ORed together. Every
3571 mask in a single track uses the same value and mode.
3573 <p>The edges of a mask are hard by default but this rarely is desired.
3574 The
<em>feather
</em> parameter determines how many pixels to feather the
3575 mask. This creates softer edges but takes longer to render.
3577 <p>Finally, there are parameters which affect one point on the current
3578 mask instead of the whole mask. These are
<em>Delete, x, y
</em>. The
3579 active point is defined as the last point dragged in the compositor
3580 window. Any point can be activated merely by
<em>ctrl-clicking
</em> near
3581 it without moving the pointer. Once a point is activated,
3582 <em>Delete
</em> deletes it and
<em>x, y
</em> allow repositioning by numeric
3587 Node:
<a name=
"CROPPING">CROPPING
</a>,
3588 Next:
<a rel=
"next" accesskey=
"n" href=
"#SAFE%20REGIONS">SAFE REGIONS
</a>,
3589 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#MASKS">MASKS
</a>,
3590 Up:
<a rel=
"up" accesskey=
"u" href=
"#COMPOSITING">COMPOSITING
</a>
3594 <h3 class=
"section">CROPPING
</h3>
3596 <p>Cropping changes the value of the output dimensions and the projector
3597 to reduce the visible picture area. Enable the
<img src=
"crop.png" alt=
"crop.png"> crop
3598 toggle and the
<img src=
"toolwindow.png" alt=
"toolwindow.png"> tool window to perform cropping in
3599 the compositing window. This draws a rectangle over the video.
3600 Click-drag anywhere in the video to create a new rectangle. Click-drag
3601 over any corner of the rectangle to reposition the corner. The tool
3602 window allows text entry of the coordinates. When the rectangle is
3603 positioned, hit the
<em>do it
</em> button in the tool window.
3607 Node:
<a name=
"SAFE%20REGIONS">SAFE REGIONS
</a>,
3608 Next:
<a rel=
"next" accesskey=
"n" href=
"#OVERLAY%20MODES">OVERLAY MODES
</a>,
3609 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#CROPPING">CROPPING
</a>,
3610 Up:
<a rel=
"up" accesskey=
"u" href=
"#COMPOSITING">COMPOSITING
</a>
3614 <h3 class=
"section">SAFE REGIONS
</h3>
3616 <p>On consumer displays the borders of the image are cut off and within
3617 the cutoff point is a region which isn't always square like it is in
3618 the compositor window. The borders are intended for scratch room and
3619 vertical blanking data. You can show where these borders are by
3620 enabling the
<img src=
"titlesafe.png" alt=
"titlesafe.png"> safe regions toggle. Keep titles inside
3621 the inner rectangle and keep action inside the outer rectangle.
3625 Node:
<a name=
"OVERLAY%20MODES">OVERLAY MODES
</a>,
3626 Next:
<a rel=
"next" accesskey=
"n" href=
"#TRACK%20AND%20OUTPUT%20SIZES">TRACK AND OUTPUT SIZES
</a>,
3627 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#SAFE%20REGIONS">SAFE REGIONS
</a>,
3628 Up:
<a rel=
"up" accesskey=
"u" href=
"#COMPOSITING">COMPOSITING
</a>
3632 <h3 class=
"section">OVERLAY MODES
</h3>
3634 <p>Every video track has an overlay mode, accessible by expanding the
3635 track. The overlay mode is a pulldown menu on the left under the
3636 fader. When collapsed, it displays an icon representing the current
3639 <p>Select the
<img src=
"expandpatch_checked.png" alt=
"expandpatch_checked.png"> expand track toggle to view all
3640 the options for a video track if you can't see the overlay mode. The
3641 overlay mode of video tracks is
<em>normal
</em> by default. Select other
3642 modes by clicking the overlay button and selecting an item from the
3645 <p>Overlay modes are processed inside the projector stage of compositing.
3646 The different modes are summarized below.
3651 <b>Normal
</b> uses a traditional Porter-Diff equation to blend tracks with
3652 alpha. When no alpha exists in the project color model, the new track
3653 always replaces the output.
3656 <b>Addition
</b> In this mode, whatever is in the output is added to the
3657 current track. The result is blended based on the current track's
3658 alpha onto the output.
3661 <b>Subtraction
</b> In this mode, the current track is subtracted from the
3662 output and the result is alpha blended onto the output.
3665 <b>Multiply
</b> is the most useful operation. The current track is multiplied
3666 by the output and the result blended onto the output. Usually a black
3667 and white image with no alpha channel or a white title on a black image
3668 is used as the current track. With the multiply operation, only the
3669 output portions under the white area show.
3672 <b>Divide
</b> divides the current track by the output and the result is
3673 blended into the output. It usually results in overloaded levels.
3676 <b>Replace
</b> does no blending and overwrites the output with the current
3683 Node:
<a name=
"TRACK%20AND%20OUTPUT%20SIZES">TRACK AND OUTPUT SIZES
</a>,
3684 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#OVERLAY%20MODES">OVERLAY MODES
</a>,
3685 Up:
<a rel=
"up" accesskey=
"u" href=
"#COMPOSITING">COMPOSITING
</a>
3689 <h3 class=
"section">TRACK AND OUTPUT SIZES
</h3>
3691 <p>The size of the temporary and the size of the output in our compositing
3692 pipeline are independant and variable. This fits into everything
3693 covered so far. The camera's viewport is the temporary size. Effects
3694 are processed in the temporary and are affected by the temporary size.
3695 Projectors are rendered to the output and are affected by the output
3696 size. If the temporary is smaller than the output, the temporary is
3697 bordered by blank regions in the output. If the temporary is bigger
3698 than the output, the temporary is cropped.
3700 <p>The temporary size is defined as the track size. Each track has a
3701 different size. Right click on a track to bring up the track's menu.
3702 Select
<em>Resize Track
</em> to resize the track to any arbitrary size.
3703 Alternatively you can select
<em>Match output size
</em> to make the track
3704 the same size as the output.
3706 <p>The output size is set in either
<em>New
</em> when creating a new project
3707 or
<em>Settings-
>Format
</em>. In the Resource window there is another
3708 way to change the output size. Right click on a video asset and select
3709 <em>Match project size
</em> to conform the output to the asset. When new
3710 tracks are created, the track size always conforms to the output size
3711 specified by these methods.
3715 Node:
<a name=
"KEYFRAMES">KEYFRAMES
</a>,
3716 Next:
<a rel=
"next" accesskey=
"n" href=
"#CAPTURING%20MEDIA">CAPTURING MEDIA
</a>,
3717 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#COMPOSITING">COMPOSITING
</a>,
3718 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
3722 <h2 class=
"chapter">KEYFRAMES
</h2>
3724 <p>Setting static compositing parameters isn't very useful most of the
3725 time. Normally you need to move the camera around over time or change
3726 mask positions. Masks need to follow objects. We create dymanic
3727 changes by defining keyframes. A keyframe is a certain point in time
3728 when the settings for one operation change. In Cinelerra, there are
3729 keyframes for almost every compositing parameter and effect parameter.
3731 <p>Whenever you adjust any parameter, the value is stored in a keyframe.
3732 If the value is stored in a keyframe, why doesn't it always change?
3733 The keyframe it is stored in is known as the
<em>default keyframe
</em>.
3734 The default keyframe applies to the entire duration if no other
3735 keyframes are present. The default keyframe is not drawn anywhere
3736 because it always exists. The only way change occurs over time is if
3737 non-default keyframes are created.
3739 <p>Display keyframes for any parameter by using the
<em>view
</em> menu.
3740 When keyframes are selected, they are drawn on the timeline over the
3741 tracks they apply to.
3744 <li><a accesskey=
"1" href=
"#CURVE%20KEYFRAMES">CURVE KEYFRAMES
</a>:
3745 <li><a accesskey=
"2" href=
"#TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES
</a>:
3746 <li><a accesskey=
"3" href=
"#AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES
</a>:
3747 <li><a accesskey=
"4" href=
"#COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES
</a>:
3748 <li><a accesskey=
"5" href=
"#EDITING%20KEYFRAMES">EDITING KEYFRAMES
</a>:
3753 Node:
<a name=
"CURVE%20KEYFRAMES">CURVE KEYFRAMES
</a>,
3754 Next:
<a rel=
"next" accesskey=
"n" href=
"#TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES
</a>,
3755 Up:
<a rel=
"up" accesskey=
"u" href=
"#KEYFRAMES">KEYFRAMES
</a>
3759 <h3 class=
"section">CURVE KEYFRAMES
</h3>
3761 <p>Fade and zoom settings are stored in bezier curves. Go to
3762 <em>view-
>fade keyframes
</em> or
<em>view-
>...zoom
</em> to show curves on
3763 the timeline. It's sometimes easier to pull down the
<em>view
</em> menu
3764 and then use the keyboard shortcuts listed in the menu to enable or
3765 disable keyframes while the menu is visible. In either arrow editing
3766 mode or i-beam editing mode, move the cursor over the curves in the
3767 timeline until it changes shape. Then merely by clicking and dragging
3768 on the curve you can create a keyframe at the position.
3770 <p>After the keyframe is created, click drag on it again to reposition
3771 it. When you click-drag a second keyframe on the curve, it creates a
3772 smooth ramp.
<em>ctrl-dragging
</em> on a keyframe changes the value of
3773 either the input control or the output control. This affects the
3774 sharpness of the curve. While the input control and the output control
3775 can be moved horizontally as well as vertically, the horizontal
3776 movement is purely for legibility and isn't used in the curve value.
3778 <p>You may remember that The Gimp and the Compositing masks all use
3779 <em>shift
</em> to select control points so why does the timeline use
3780 <em>ctrl
</em>? When you
<em>shift-drag
</em> on a timeline curve, the
3781 keyframe jumps to the value of either the next or previous keyframe,
3782 depending on which exists. This lets you set a constant curve value
3783 without having to copy the next or previous keyframe.
3787 Node:
<a name=
"TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES
</a>,
3788 Next:
<a rel=
"next" accesskey=
"n" href=
"#AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES
</a>,
3789 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#CURVE%20KEYFRAMES">CURVE KEYFRAMES
</a>,
3790 Up:
<a rel=
"up" accesskey=
"u" href=
"#KEYFRAMES">KEYFRAMES
</a>
3794 <h3 class=
"section">TOGGLE KEYFRAMES
</h3>
3796 <p>Mute is the only toggle keyframe. Mute keyframes determine where the
3797 track is processed but not rendered to the output. Click-drag on these
3798 curves to create a keyframe. Unlike curves, the toggle keyframe has
3799 only two values: on or off. Ctrl and shift do nothing on toggle
3804 Node:
<a name=
"AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES
</a>,
3805 Next:
<a rel=
"next" accesskey=
"n" href=
"#COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES
</a>,
3806 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#TOGGLE%20KEYFRAMES">TOGGLE KEYFRAMES
</a>,
3807 Up:
<a rel=
"up" accesskey=
"u" href=
"#KEYFRAMES">KEYFRAMES
</a>
3811 <h3 class=
"section">AUTOMATIC KEYFRAMES
</h3>
3813 <p>You may have noticed when a few fade curves are set up, moving the
3814 insertion point around the curves causes the faders to reflect the
3815 curve value under the insertion point. This isn't just to look cool.
3816 The faders themselves can set keyframes in automatic keyframe mode.
3817 Automatic keyframe mode is usually more useful than dragging curves.
3819 <p>Enable automatic keyframe mode by enabling the automatic keyframe
3820 toggle
<img src=
"autokeyframe.png" alt=
"autokeyframe.png">. In automatic keyframe mode, every time
3821 you tweek a keyframeable parameter it creates a keyframe on the
3822 timeline. Since automatic keyframes affect many parameters, it's best
3823 enabled just before you need a keyframe and disabled immediately
3826 <p>It's useful to go into the
<em>View
</em> menu and make the desired
3827 parameter visible before performing a change. The location where the
3828 automatic keyframe is generated is under the insertion point. If the
3829 timeline is playing back during a tweek, several automatic keyframes
3830 will be generated as you change the parameter.
3832 <p>When automatic keyframe mode is disabled, a similarly strange thing
3833 happens. Adjusting a parameter adjusts the keyframe immediately
3834 preceeding the insertion point. If two fade keyframes exist and the
3835 insertion point is between them, changing the fader changes the first
3838 <p>There are many parameters which can only be keyframed in automatic
3839 keyframe mode. These are parameters for which curves would take up too
3840 much space on the track or which can't be represented easily by a
3843 <p>Effects are only keyframable in automatic mode because of the number of
3844 parameters in each individual effect.
3846 <p>Camera and projector translation can only be keyframed in automatic
3847 keyframe mode while camera and projector zoom can be keyframed with
3848 curves. It is here that we conclude the discussion of compositing,
3849 since compositing is highly dependant on the ability to change over
3854 Node:
<a name=
"COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES
</a>,
3855 Next:
<a rel=
"next" accesskey=
"n" href=
"#EDITING%20KEYFRAMES">EDITING KEYFRAMES
</a>,
3856 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#AUTOMATIC%20KEYFRAMES">AUTOMATIC KEYFRAMES
</a>,
3857 Up:
<a rel=
"up" accesskey=
"u" href=
"#KEYFRAMES">KEYFRAMES
</a>
3861 <h3 class=
"section">COMPOSITOR KEYFRAMES
</h3>
3863 <p>Camera and projector translation is represented by two parameters: x
3864 and y. Therefore it is cumbersome to adjust with curves. Cinelerra
3865 solves this problem by relying on automatic keyframes. With a video
3866 track loaded, move the insertion point to the beginning of the track
3867 and enable automatic keyframe mode.
3869 <p>Move the projector slightly in the compositor window to create a
3870 keyframe. Then go forward several seconds. Move the projector a long
3871 distance to create another keyframe and emphasize motion. This creates
3872 a second projector box in the compositor, with a line joining the two
3873 boxes. The joining line is the motion path. If you create more
3874 keyframes, more boxes are created. Once all the desired keyframes are
3875 created, disable automatic keyframe mode.
3877 <p>Now when scrubbing around with the compositor window's slider, the
3878 video projection moves over time. At any point between two keyframes,
3879 the motion path is read for all time before the insertion point and
3880 green for all time after the insertion point. It's debatable if this
3881 is a very useful feature but it makes you feel good to know what
3882 keyframe is going to be affected by the next projector tweek.
3884 <p>Click-drag when automatic keyframes are off to adjust the preceeding
3885 keyframe. If you're halfway between two keyframes, the first projector
3886 box is adjusted while the second one stays the same. Furthermore, the
3887 video doesn't appear to move in step with the first keyframe. This is
3888 because, halfway between two keyframes the projector translation is
3889 interpolated. In order to set the second keyframe you'll need to scrub
3890 after the second keyframe.
3892 <p>By default the motion path is a straight line, but it can be curved
3893 with control points.
<em>Ctrl-drag
</em> to set either the in or out
3894 control point of the preceeding keyframe. Once again, we depart from
3895 The Gimp because
<em>shift
</em> is already used for zoom. After the in
3896 or out control points are extrapolated from the keyframe,
3897 <em>Ctrl-dragging
</em> anywhere in the video adjusts the nearest control
3898 point. A control point can be out of view entirely yet still
3901 <p>When editing the camera translation, the behavior of the camera boxes
3902 is slightly different. Camera automation is normally used for still
3903 photo panning. The current camera box doesn't move during a drag, but
3904 if multiple keyframes are set, every camera box except the current
3905 keyframe appears to move. This is because the camera display shows
3906 every other camera position relative to the current one.
3908 <p>The situation becomes more intuitive if you bend the motion path
3909 between two keyframes and scrub between the two keyframes. The
3910 division between red and green, the current position between the
3911 keyframes, is always centered while the camera boxes move.
3915 Node:
<a name=
"EDITING%20KEYFRAMES">EDITING KEYFRAMES
</a>,
3916 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#COMPOSITOR%20KEYFRAMES">COMPOSITOR KEYFRAMES
</a>,
3917 Up:
<a rel=
"up" accesskey=
"u" href=
"#KEYFRAMES">KEYFRAMES
</a>
3921 <h3 class=
"section">EDITING KEYFRAMES
</h3>
3923 <p>Keyframes can be shifted around and moved between tracks on the
3924 timeline using similar cut and paste operations to editing media. Only
3925 the keyframes selected in the
<em>view
</em> menu are affected by keyframe
3926 editing operations, however.
3928 <p>The most popular keyframe editing operation is replication of some
3929 curve from one track to the other, to make a stereo pair. The first
3930 step is to solo the source track's record
<img src=
"recordpatch_up.png" alt=
"recordpatch_up.png"> patch
3931 by
<em>shift-clicking
</em> on it. Then either set in/out points or
3932 highlight the desired region of keyframes. Go to
<em>keyframes-
>copy
3933 keyframes
</em> to copy them to the clipboard. Solo the destination track's
3934 record
<img src=
"recordpatch_up.png" alt=
"recordpatch_up.png"> patch by
<em>shift-clicking
</em> on it and
3935 go to
<em>keyframes-
>paste keyframes
</em> to paste the clipboard.
3937 <p>The media editing commands are mapped to the keyframe editing commands
3938 by using the
<em>shift
</em> key instead of just the keyboard shortcut.
3940 <p>This leads to the most complicated part of keyframe editing, the
3941 default keyframe. Remember that when no keyframes are set at all,
3942 there is still a default keyframe which stores a global parameter for
3943 the entire duration. The default keyframe isn't drawn because it
3944 always exists. What if the default keyframe is a good value which you
3945 want to transpose between other non-default keyframes? The
3946 <em>keyframes-
>copy default keyframe
</em> and
<em>keyframes-
>paste
3947 default keyframe
</em> allow conversion of the default keyframe to a
3948 non-default keyframe.
3950 <p><em>Keyframes-
>copy default keyframe
</em> copies the default keyframe to
3951 the clipboard, no matter what region of the timeline is selected. The
3952 <em>keyframes-
>paste keyframes
</em> function may then be used to paste
3953 the clipboard as a non-default keyframe.
3955 <p>If you've copied a non-default keyframe, it can be stored as the
3956 default keyframe by calling
<em>keyframes-
>paste default keyframe
</em>.
3957 After using paste default keyframe to convert a non-default keyframe
3958 into a default keyframe, you won't see the value of the default
3959 keyframe reflected until all the non-default keyframes are removed.
3961 <p>Finally, there is a convenient way to delete keyframes besides
3962 selecting a region and calling
<em>keyframes-
>clear keyframes
</em>.
3963 Merely click-drag a keyframe before its preceeding keyframe or after
3964 its following keyframe on the track.
3968 Node:
<a name=
"CAPTURING%20MEDIA">CAPTURING MEDIA
</a>,
3969 Next:
<a rel=
"next" accesskey=
"n" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>,
3970 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#KEYFRAMES">KEYFRAMES
</a>,
3971 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
3975 <h2 class=
"chapter">CAPTURING MEDIA
</h2>
3977 <p>Ideally, all media would be stored on hard drives, CD-ROM, flash, or
3978 DVD and loading it into Cinelerra would be a matter of loading a file.
3979 In reality, very few sources of media can be accessed like a filesystem
3980 but instead rely on tape transport mechanisms and dumb I/O mechanisms
3981 to transfer the data to computers. These media types are imported into
3982 Cinelerra through the Record dialog.
3984 <p>The first step in recording is to configure the input device. In
3985 <em>Settings-
>preferences
</em> are a number of recording parameters
3986 described in configuration See
<a href=
"#RECORDING">RECORDING
</a>. These parameters apply to
3987 recording no matter what the project settings are, because the
3988 recording parameters are usually the maximum capability of the
3989 recording hardware while project settings come and go.
3991 <p>Go to
<em>File-
>record
</em> to record a dumb I/O source. This prompts
3992 for an output format much like rendering does. Once that's done, the
3993 record window and the record monitor pop up.
3995 <p>The record window has discrete sections. While many parameters change
3996 depending on if the file has audio or video, the discrete sections are
4002 The output format area describes the format of the output file and the
4003 current position within it.
4006 The edit batch area lets you change parameters in the current batch.
4009 The transport controls start and stop recording different ways.
4012 The batch list displays all the defined batches.
4015 The confirmation area lets you determine how the output files are
4016 imported into the timeline and quit.
4020 <img src=
"recording.png" alt=
"recording.png">
4023 <p><em>Recording window areas
</em>
4025 <p>Recording in Cinelerra is organized around batches. A batch
4026 essentially defines a distinct output file for the recording. For now
4027 you can ignore the batch concept entirely and record merely by hitting
4028 the record button
<img src=
"record.png" alt=
"record.png">.
4030 <p>The record button opens the current output file if it isn't opened and
4031 writes captured data to it. Use the stop button to stop the
4032 recording. Recording can be resumed with the record button without
4033 erasing the file at this point. In the case of a video file, there is
4034 a single frame record button
<img src=
"singleframe.png" alt=
"singleframe.png"> which records a single
4037 <p>When enough media is recorded, choose an insertion method from the
4038 <em>Insertion Strategy
</em> menu and hit
<em>close
</em>.
4041 <li><a accesskey=
"1" href=
"#BATCHES">BATCHES
</a>:
4042 <li><a accesskey=
"2" href=
"#EDITING%20TUNER%20INFORMATION">EDITING TUNER INFORMATION
</a>:
4047 Node:
<a name=
"BATCHES">BATCHES
</a>,
4048 Next:
<a rel=
"next" accesskey=
"n" href=
"#EDITING%20TUNER%20INFORMATION">EDITING TUNER INFORMATION
</a>,
4049 Up:
<a rel=
"up" accesskey=
"u" href=
"#CAPTURING%20MEDIA">CAPTURING MEDIA
</a>
4053 <h3 class=
"section">BATCHES
</h3>
4055 <p>Now we come to the concept of batches. Batches try to make the dumb
4056 I/O look more like a filesystem. Batches are traditionally used to
4057 divide tape into different programs and save the different programs as
4058 different files instead of recording straight through an entire tape.
4059 Because of the high cost of developing frame-accurate deck control
4060 mechanisms, the only use of batches now is recording different programs
4061 during different times of day. This is still useful for recording TV
4062 shows or time lapse movies as anyone who can't afford proper appliances
4065 <p>The record window supports a list of batches and two recording modes:
4066 interactive and batch recording. Interactive recording happens when
4067 the record button is pressed. Interactive recording starts immediately
4068 and uses the current batch to determine everything except start time.
4069 By default, the current batch is configured to behave like tape.
4071 <p>Batch recording happens when the
<em>start
</em> button is pressed. In
4072 batch recording, the
<em>start time
</em> is the time the batch starts
4075 <p>First, you'll want to create some batches. Each batch has certain
4076 parameters and methods of adjustment.
4081 <em>On
</em> determines whether the batch is included in batch recording
4082 operations. Click the list row under
<em>On
</em> to enable or disable
4086 <em>Path
</em> is the file the batch is going to be recorded to. The
4087 filename specified in the record dialog is the name of the first batch,
4088 to simplify interactive recording, but the filename may be changed in
4089 the record window for any batch in the
<em>edit batch
</em> area.
4092 <em>News
</em> shows whether the file exists or not. This is a very
4093 important attribute since there is no confirmation dialog if the file
4094 exists. The first time you hit record, the file is opened. If the
4095 file exists at this point it's erased. News says
<em>File exists
</em> if
4096 it exists and
<em>OK
</em> if it doesn't. Every time you resume recording
4097 in the same batch, the news should say
<em>Open
</em>, indicating the file
4098 is already opened and won't be erased in the next record button press.
4100 <p>If you change out of the current batch after recording, the file is
4101 closed. Next time you change into the batch, the file will be erased.
4104 <em>Start time
</em> is the
24 hour time of day the batch will start
4105 recording if in batch mode. The start time may become a time of tape
4106 and reel number if deck control is implemented but for now it's a time
4110 <em>Duration
</em> is the length of the batch. It only has meaning if the
4111 <em>Mode
</em> of the batch is
<em>Timed
</em>. Once the recording length
4112 reaches
<em>duration
</em> the recording stops, whether in interactive or
4116 <em>Source
</em> has meaning only when the capturing hardware has multiple
4117 sources. Usually the source is a tuner channel or input. When the
4118 current batch finishes and the next batch begins recording, the source
4119 is changed to what the next batch is set to. This way multiple TV
4120 stations can be recorded at different times.
4124 <p>The record window has a notion of the
<em>current batch
</em>. The
4125 current batch is not the same as the batch which is highlighted in the
4126 batch list. The current batch text is colored red in the batch list.
4127 The highlighted batch is merely displayed in the edit batch section for
4130 <p>By coloring the current batch red, any batch can be edited by
4131 highlighting it, without changing the batch to be recorded.
4133 <p>All recording operations take place in the current batch. If there
4134 are multiple batches, highlight the desired batch and hit
4135 <em>activate
</em> to make it the current batch. If the
<em>start
</em>
4136 button is pressed, the current batch flashes to indicate it's waiting
4137 for the start time in batch mode. If the
<em>record
</em> button is
4138 pressed, the current batch is recorded immediately in interactive mode.
4140 <p>In batch and interactive recording modes, when the current batch
4141 finishes recording the next batch is activated and performed. All
4142 future recording is done in batch mode. When the first batch finishes,
4143 the next batch flashes until its start time is reached.
4145 <p>Interrupt either the batch or the interactive operation by hitting the
4148 <p>Finally there is the
<img src=
"rewind.png" alt=
"rewind.png"> rewind button. In either
4149 interactive or batch recording, the rewind button causes the current
4150 batch to close its file. The next recording operation in the current
4151 batch deletes the file.
4155 Node:
<a name=
"EDITING%20TUNER%20INFORMATION">EDITING TUNER INFORMATION
</a>,
4156 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#BATCHES">BATCHES
</a>,
4157 Up:
<a rel=
"up" accesskey=
"u" href=
"#CAPTURING%20MEDIA">CAPTURING MEDIA
</a>
4161 <h3 class=
"section">EDITING TUNER INFORMATION
</h3>
4163 <p>Sometimes in the recording process and the configuration process,
4164 you'll need to define and select tuner channels to either record or
4165 play back to. In the case of the Video4Linux and Buz recording
4166 drivers, tuner channels define the source. When the Buz driver is also
4167 used for playback, tuner channels define the destination.
4169 <p>Defining tuner channels is accomplished by pushing the
<img src=
"channel.png" alt=
"channel.png">
4170 channel button. This brings up the channel editing window. In this
4171 window you add, edit, and sort channels. Also, for certain video
4172 drivers, you can adjust the picture quality.
4174 <p>The
<em>add
</em> operation brings up a channel editing box. The title of
4175 the channel appears in the channel list. The source of the channel is
4176 the entry in the physical tuner's frequency table corresponding to the
4179 <p>Fine tuning in the channel edit dialog adjusts the physical frequency
4180 slightly if the driver supports it. The norm and frequency table
4181 together define which frequency table is selected for defining
4182 sources. If the device supports multiple inputs, the input menu
4185 <p>To sort channels, highlight the channel in the list and push
<em>move
4186 up
</em> or
<em>move down
</em> to move it.
4188 <p>Once channels are defined, the
<em>source
</em> item in the record window
4189 can be used to select channels for recording. The same channel
4190 selecting ability also exists in the record monitor window. Be aware
4191 channel selections in the record monitor window and the record window
4192 are stored in the current batch.
4194 <p>For some drivers an option to
<b>swap fields
</b> may be visible. These
4195 drivers don't get the field order right every time without human
4196 intervention. Toggle this to get the odd and even lines to record in
4201 Node:
<a name=
"IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>,
4202 Next:
<a rel=
"next" accesskey=
"n" href=
"#TROUBLESHOOTING">TROUBLESHOOTING
</a>,
4203 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#CAPTURING%20MEDIA">CAPTURING MEDIA
</a>,
4204 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
4208 <h2 class=
"chapter">IMPROVING PERFORMANCE
</h2>
4210 <p>Let's get one thing perfectly clear. Linux is not a very good
4211 desktop. It's a server. Most of what you'll find on modern Linux
4212 distributions are faceless, network-only programs strategicly designed
4213 to counteract one Microsoft server feature or another and not to
4214 perform very well at user interaction. There are a number of
4215 parameters on Linux, which ordinary people can adjust to make it behave
4216 more like a thoroughbred in desktop usage.
4219 <li><a accesskey=
"1" href=
"#DISABLING%20SWAP%20SPACE">DISABLING SWAP SPACE
</a>:
4220 <li><a accesskey=
"2" href=
"#ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS
</a>:
4221 <li><a accesskey=
"3" href=
"#FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY
</a>:
4222 <li><a accesskey=
"4" href=
"#SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE
</a>:
4223 <li><a accesskey=
"5" href=
"#DISABLING%20CRON">DISABLING CRON
</a>:
4224 <li><a accesskey=
"6" href=
"#REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY
</a>:
4225 <li><a accesskey=
"7" href=
"#ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS
</a>:
4226 <li><a accesskey=
"8" href=
"#SPEEDING%20UP%20THE%20FILE%20SYSTEM">SPEEDING UP THE FILE SYSTEM
</a>:
4227 <li><a accesskey=
"9" href=
"#IMPROVING%20ZORAN%20VIDEO">IMPROVING ZORAN VIDEO
</a>:
4232 Node:
<a name=
"DISABLING%20SWAP%20SPACE">DISABLING SWAP SPACE
</a>,
4233 Next:
<a rel=
"next" accesskey=
"n" href=
"#ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS
</a>,
4234 Up:
<a rel=
"up" accesskey=
"u" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>
4238 <h3 class=
"section">DISABLING SWAP SPACE
</h3>
4240 <p>On systems with lots of memory, Cinelerra sometimes runs better without
4241 a swap space. If you have
4 GB of RAM, you're probably better off
4242 without a swap space. If you have
512MB of RAM, you should keep the
4243 swap. If you want to do recording, you should probably disable swap
4244 space in any case. There's a reason for this. Linux only allows half
4245 the available memory to be used. Beyond that, it starts searching for
4246 free pages to swap, in order to cache more disk access. In a
4 GB
4247 system, you start waiting for page swaps after using only
2 GB.
4249 <p>The question then is how to make Linux run without a swap space.
4250 Theoretically it should be a matter of running
4252 <pre class=
"example"> swapoff -a
4255 <p>Unfortunately, without a swap space the
<b>kswapd
</b> tasklet normally
4256 spins at
100%. To eliminate this problem, edit
<b>linux/mm/vmscan.c
</b>.
4257 In this file, put a line saying
<b>return
0;
</b> before it says
4259 <pre class=
"example"> /*
4264 <p>Then recompile the kernel.
4268 Node:
<a name=
"ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS
</a>,
4269 Next:
<a rel=
"next" accesskey=
"n" href=
"#FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY
</a>,
4270 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#DISABLING%20SWAP%20SPACE">DISABLING SWAP SPACE
</a>,
4271 Up:
<a rel=
"up" accesskey=
"u" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>
4275 <h3 class=
"section">ENLARGING SOUND BUFFERS
</h3>
4277 <p>In order to improve realtime performance, the audio buffers for all the
4278 Linux sound drivers were limited from
128k to
64k. For recording audio
4279 and video simultaneously and for most audio recording this causes
4280 dropouts. Application of low latency and preemtible kernel patches
4281 make it possible to record more audio recordings but it doesn't improve
4282 recording video with audio. This is where you need to hack the kernel.
4284 <p>To see if your sound buffers are suitable, run the included
4285 <b>soundtest
</b> program with nothing playing or recording. This
4286 allocates the largest possible buffers and displays them. If the
4287 <b>TOTAL BYTES AVAILABLE
</b> is under
131072, you need to see about
4288 getting the buffers enlarged in the driver. While many drivers differ,
4289 we have a hack for at least one driver.
4291 <p>This only applies to the OSS version of the Soundblaster Live driver.
4292 Since every sound card and every sound driver derivative has a
4293 different implementation you'll need to do some searching for other
4294 sound cards. Edit
<b>linux/drivers/sound/emu10k1/audio.c
</b>
4298 <pre class=
"example"> if (bufsize
>=
0x10000)
4303 <pre class=
"example"> if (bufsize
> 0x40000)
4308 <pre class=
"example"> for (i =
0; i
< 8; i++)
4309 for (j =
0; j
< 4; j++)
4314 <pre class=
"example"> for (i =
0; i
< 16; i++)
4315 for (j =
0; j
< 4; j++)
4318 <p>In
<b>linux/drivers/sound/emu10k1/hwaccess.h
</b>
4322 <p><b>#define MAXBUFSIZE
65536</b>
4326 <p><b>#define MAXBUFSIZE
262144</b>
4328 <p>Finally, in
<b>linux/drivers/sound/emu10k1/cardwi.h
</b>
4330 <p><b>#define WAVEIN_MAXBUFSIZE
65536</b>
4334 <p><b>#define WAVEIN_MAXBUFSIZE
262144</b>
4336 <p>Then recompile the kernel modules.
4340 Node:
<a name=
"FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY
</a>,
4341 Next:
<a rel=
"next" accesskey=
"n" href=
"#SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE
</a>,
4342 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#ENLARGING%20SOUND%20BUFFERS">ENLARGING SOUND BUFFERS
</a>,
4343 Up:
<a rel=
"up" accesskey=
"u" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>
4347 <h3 class=
"section">FREEING MORE SHARED MEMORY
</h3>
4349 <p>The Linux kernel only allows
32MB of shared memory to be allocated by
4350 default. This needs to be increased to do anything useful. Run the
4353 <p><b>echo
"0x7fffffff" > /proc/sys/kernel/shmmax
</b>
4357 Node:
<a name=
"SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE
</a>,
4358 Next:
<a rel=
"next" accesskey=
"n" href=
"#DISABLING%20CRON">DISABLING CRON
</a>,
4359 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#FREEING%20MORE%20SHARED%20MEMORY">FREEING MORE SHARED MEMORY
</a>,
4360 Up:
<a rel=
"up" accesskey=
"u" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>
4364 <h3 class=
"section">SPEEDING UP THE HARD DRIVE
</h3>
4366 <p>This is a very popular command sequence among Linux gurus, which is not
4367 done by default on Linux distributions.
4369 <p><b>hdparm -c3 -d1 -u1 -k1 /dev/hda
</b>
4371 <p><b>-c3
</b> puts the hard drive into
32 bit I/O with sync. This normally
4372 doesn't work due to inept kernel support for most IDE controllers. If
4373 you get lost interrupt or SeekComplete errors, quickly use
<b>-c0
</b>
4374 instead of
<b>-c3
</b> in your command.
4376 <p><b>-d1
</b> enables DMA of course. This frees up the CPU partially during
4379 <p><b>-u1
</b> allows multiple interrupts to be handled during hard drive
4380 transactions. This frees up even more CPU time.
4382 <p><b>-k1
</b> prevents Linux from resetting your settings in case of a
4387 Node:
<a name=
"DISABLING%20CRON">DISABLING CRON
</a>,
4388 Next:
<a rel=
"next" accesskey=
"n" href=
"#REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY
</a>,
4389 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#SPEEDING%20UP%20THE%20HARD%20DRIVE">SPEEDING UP THE HARD DRIVE
</a>,
4390 Up:
<a rel=
"up" accesskey=
"u" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>
4394 <h3 class=
"section">DISABLING CRON
</h3>
4396 <p>Linux runs some daily operations like compressing man pages. These may
4397 be acceptable background tasks while compiling or word processing but
4398 not while playing video. Disable these operations by editing
4399 <b>/etc/rc.d/init.d/anacron
</b>.
4401 <p>Put
<b>exit
</b> before the first line not beginning in
<b>#
</b>.
4403 <p>In
<b>/etc/rc.d/init.d/crond
</b> put
<b>exit
</b> before the first line not
4404 beginning in
<b>#
</b>. Then make like Win
2000 and reboot.
4406 <p>You can't use the
<b>at
</b> command anymore, but who uses that command
4411 Node:
<a name=
"REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY
</a>,
4412 Next:
<a rel=
"next" accesskey=
"n" href=
"#ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS
</a>,
4413 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#DISABLING%20CRON">DISABLING CRON
</a>,
4414 Up:
<a rel=
"up" accesskey=
"u" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>
4418 <h3 class=
"section">REDUCING USB MOUSE SENSITIVITY
</h3>
4420 <p>Gamers like high resolution mice, but this can be painful for precisely
4421 positioning the mouse on a timeline or video screen. XFree86 once
4422 allowed you to reduce PS/
2 mouse sensitivity using commands like
4423 <b>xset m
1 1</b> but you're out of luck with USB mice or KVM's.
4425 <p>We have a way to reduce USB mouse sensitivity. Edit
4426 <b>/usr/src/linux/drivers/input/mousedev.c
</b>.
4428 <p>After the line saying
4430 <pre class=
"example"> struct mousedev_list {
4435 <pre class=
"example"> #define DOWNSAMPLE_N
100
4436 #define DOWNSAMPLE_D
350
4437 int x_accum, y_accum;
4440 <p>Next, the section which says something like:
4442 <pre class=
"example"> case EV_REL:
4444 case REL_X: list-
>dx += value; break;
4445 case REL_Y: list-
>dy -= value; break;
4446 case REL_WHEEL: if (list-
>mode) list-
>dz -= value; break;
4451 <p>must be replaced by
4453 <pre class=
"example">
4457 list-
>x_accum += value * DOWNSAMPLE_N;
4458 list-
>dx += (int)list-
>x_accum / (int)DOWNSAMPLE_D;
4459 list-
>x_accum -= ((int)list-
>x_accum / (int)DOWNSAMPLE_D) * (int)DOWNSAMPLE_D;
4462 list-
>y_accum += value * DOWNSAMPLE_N;
4463 list-
>dy -= (int)list-
>y_accum / (int)DOWNSAMPLE_D;
4464 list-
>y_accum -= ((int)list-
>y_accum / (int)DOWNSAMPLE_D) * (int)DOWNSAMPLE_D;
4466 case REL_WHEEL: if (list-
>mode) list-
>dz -= value; break;
4474 <p>Change the value of
<b>DOWNSAMPLE_N
</b> to change the mouse sensitivity.
4478 Node:
<a name=
"ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS
</a>,
4479 Next:
<a rel=
"next" accesskey=
"n" href=
"#SPEEDING%20UP%20THE%20FILE%20SYSTEM">SPEEDING UP THE FILE SYSTEM
</a>,
4480 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#REDUCING%20USB%20MOUSE%20SENSITIVITY">REDUCING USB MOUSE SENSITIVITY
</a>,
4481 Up:
<a rel=
"up" accesskey=
"u" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>
4485 <h3 class=
"section">ASSORTED X TWEEKS
</h3>
4487 <p>XFree86 by default can't display Cinelerra's advanced pixmap rendering
4488 very fast. The X server stalls during list box drawing. Fix this by
4489 adding a line to your XF86Config* files.
4491 <p>In the
<b>Section
"Device"</b> area, add a line saying:
4493 <p><b>Option
"XaaNoOffscreenPixmaps"</b>
4495 <p>and restart the X server.
4497 <p>Screen blanking is really annoying, unless you're fabulously rich and
4498 can afford to leave your monitor on
24 hours a day without power saving
4499 mode. In
<b>/etc/X11/xinit/xinitrc
</b> put
4501 <pre class=
"example"> xset s off
4505 <p>before the first
<b>if
</b> statement.
4507 <p>How about those windows keys which no Linux distribution even thinks to
4508 use. You can make the window keys provide ALT functionality by editing
4509 <b>/etc/X11/Xmodmap
</b>. Append the following to it.
4511 <pre class=
"example"> keycode
115 = Hyper_L
4512 keycode
116 = Hyper_R
4517 <p>The actual changes to a window manager to make it recognize window keys
4518 for ALT are complex. In
<b>FVWM
</b> at least, you can edit
4519 <b>/etc/X11/fvwm/system.fvwm2rc
</b> and put
4521 <pre class=
"example"> Mouse
0 T A move-and-raise-or-raiselower
4525 Mouse
0 F A resize-or-raiselower
4526 Mouse
0 S A resize-or-raiselower
4529 <p>in place of the default section for moving and resizing. Your best
4530 performance is going to be on FVWM. Other window managers seem to slow
4531 down video with extra event trapping and aren't as efficient in layout.
4535 Node:
<a name=
"SPEEDING%20UP%20THE%20FILE%20SYSTEM">SPEEDING UP THE FILE SYSTEM
</a>,
4536 Next:
<a rel=
"next" accesskey=
"n" href=
"#IMPROVING%20ZORAN%20VIDEO">IMPROVING ZORAN VIDEO
</a>,
4537 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#ASSORTED%20X%20TWEEKS">ASSORTED X TWEEKS
</a>,
4538 Up:
<a rel=
"up" accesskey=
"u" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>
4542 <h3 class=
"section">SPEEDING UP THE FILE SYSTEM
</h3>
4544 <p>You'll often store video on an expensive, gigantic disk array separate
4545 from your boot disk. You'll thus have to manually install an EXT
4546 filesystem on this disk array, using the
<b>mke2fs
</b> command. By far
4547 the fastest file system is
4549 <pre class=
"example">
4550 mke2fs -i
65536 -b
4096 my_device
4551 tune2fs -r0 -c10000 my_device
4555 <p>This has no journaling, reserves as few blocks as possible for
4556 filenames, and accesses the largest amount of data per block possible.
4557 A slightly slower file system, which is easier to recover after power
4560 <pre class=
"example">
4561 mke2fs -j -i
65536 -b
4096 my_device
4562 tune2fs -r0 -c10000 my_device
4566 <p>This adds a journal which slows down the writes but makes us immune to
4571 Node:
<a name=
"IMPROVING%20ZORAN%20VIDEO">IMPROVING ZORAN VIDEO
</a>,
4572 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#SPEEDING%20UP%20THE%20FILE%20SYSTEM">SPEEDING UP THE FILE SYSTEM
</a>,
4573 Up:
<a rel=
"up" accesskey=
"u" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>
4577 <h3 class=
"section">IMPROVING ZORAN VIDEO
</h3>
4579 <p>Video recorded from the ZORAN inputs is normally unaligned or not
4580 completely encoded on the right. This can be slightly compensated by
4581 adjusting parameters in the driver sourcecode.
4583 <p>In
<b>/usr/src/linux/drivers/media/video/zr36067.c
</b> the structures
4584 defined near line
623 affect alignment. At least for NTSC, the
2.4.20
4585 version of the driver could be improved by changing
4587 <pre class=
"example"> static struct tvnorm f60ccir601 = {
858,
720,
57,
788,
525,
480,
16 };
4592 <pre class=
"example"> static struct tvnorm f60ccir601 = {
858,
720,
57,
788,
525,
480,
17 };
4595 <p>In
<b>/usr/src/linux/drivers/media/video/bt819.c
</b> more structures near
4596 line
76 affect alignment and encoding.
4600 <pre class=
"example"> {
858 -
24,
2,
523,
1,
0x00f8,
0x0000},
4603 <p>could be changed to
4604 <pre class=
"example"> {
868 -
24,
2,
523,
1,
0x00f8,
0x0000},
4607 <p>Adjusting these parameters may or may not move your picture closer to
4608 the center. More of the time, they'll cause the driver to lock up
4609 before capturing the first frame.
4611 <h3 class=
"subsection">NEW IN
2.6.5</h4>
4613 <p>In the
2.6 kernels, the video subsystem was rewritten again from
4614 scratch. To adjust the Zoran parameters go to
4615 <b>drivers/media/video/zoran_card.c
</b> and look for a group of lines like
4617 <pre class=
"example"> static struct tvnorm f50sqpixel = {
944,
768,
83,
880,
625,
576,
16 };
4618 static struct tvnorm f60sqpixel = {
780,
640,
51,
716,
525,
480,
12 };
4619 static struct tvnorm f50ccir601 = {
864,
720,
75,
804,
625,
576,
18 };
4620 static struct tvnorm f60ccir601 = {
858,
720,
57,
788,
525,
480,
16 };
4622 static struct tvnorm f50ccir601_lml33 = {
864,
720,
75+
34,
804,
625,
576,
18 };
4623 static struct tvnorm f60ccir601_lml33 = {
858,
720,
57+
34,
788,
525,
480,
16 };
4625 /* The DC10 (
57/
16/
50) uses VActive as HSync, so HStart must be
0 */
4626 static struct tvnorm f50sqpixel_dc10 = {
944,
768,
0,
880,
625,
576,
0 };
4627 static struct tvnorm f60sqpixel_dc10 = {
780,
640,
0,
716,
525,
480,
12 };
4629 /* FIXME: I cannot swap U and V in saa7114, so i do one
4630 * pixel left shift in zoran (
75 -
> 74)
4631 * (Maxim Yevtyushkin
<max@linuxmedialabs.com
>) */
4632 static struct tvnorm f50ccir601_lm33r10 = {
864,
720,
74+
54,
804,
625,
576,
18 };
4633 static struct tvnorm f60ccir601_lm33r10 = {
858,
720,
56+
54,
788,
525,
480,
16 };
4636 <p>These seem to control the image position. At least for the LML33 the
4637 following definition for
<b>f60ccir601_lml33
</b> does the trick.
4639 <pre class=
"example"> static struct tvnorm f60ccir601_lml33 = {
858,
720,
67+
34,
788,
525,
480,
13 };
4644 Node:
<a name=
"TROUBLESHOOTING">TROUBLESHOOTING
</a>,
4645 Next:
<a rel=
"next" accesskey=
"n" href=
"#SECRETS%20OF%20CINELERRA">SECRETS OF CINELERRA
</a>,
4646 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>,
4647 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
4651 <h2 class=
"chapter">TROUBLESHOOTING
</h2>
4654 <li><a accesskey=
"1" href=
"#BUZ%20DRIVER%20CRASHES">BUZ DRIVER CRASHES
</a>:
4655 <li><a accesskey=
"2" href=
"#DRAGGING%20IN%20AND%20OUT%20POINTS%20DOESN'T%20WORK">DRAGGING IN AND OUT POINTS DOESN'T WORK
</a>:
4656 <li><a accesskey=
"3" href=
"#SYNCHRONIZATION%20LOST%20WHILE%20RECORDING">SYNCHRONIZATION LOST WHILE RECORDING
</a>:
4661 Node:
<a name=
"BUZ%20DRIVER%20CRASHES">BUZ DRIVER CRASHES
</a>,
4662 Next:
<a rel=
"next" accesskey=
"n" href=
"#DRAGGING%20IN%20AND%20OUT%20POINTS%20DOESN'T%20WORK">DRAGGING IN AND OUT POINTS DOESN'T WORK
</a>,
4663 Up:
<a rel=
"up" accesskey=
"u" href=
"#TROUBLESHOOTING">TROUBLESHOOTING
</a>
4667 <h3 class=
"section">BUZ DRIVER CRASHES
</h3>
4669 <p>First, Zoran capture boards must be accessed using the
<b>Buz
</b> video
4670 driver in
<b>Preferences-
>Recording
</b> and
<b>Preferences-
>Playback
</b>.
4671 Some performance tweeks are available in another section.
4672 See
<a href=
"#IMPROVING%20PERFORMANCE">IMPROVING PERFORMANCE
</a>.
4674 <p>Once tweeked, the Buz driver seems to crash if the number of recording
4675 buffers is too high. Make sure
<b>Preferences-
>Recording-
>Frames to
4676 buffer in device
</b> is below
10.
4680 Node:
<a name=
"DRAGGING%20IN%20AND%20OUT%20POINTS%20DOESN'T%20WORK">DRAGGING IN AND OUT POINTS DOESN'T WORK
</a>,
4681 Next:
<a rel=
"next" accesskey=
"n" href=
"#SYNCHRONIZATION%20LOST%20WHILE%20RECORDING">SYNCHRONIZATION LOST WHILE RECORDING
</a>,
4682 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#BUZ%20DRIVER%20CRASHES">BUZ DRIVER CRASHES
</a>,
4683 Up:
<a rel=
"up" accesskey=
"u" href=
"#TROUBLESHOOTING">TROUBLESHOOTING
</a>
4687 <h3 class=
"section">DRAGGING IN AND OUT POINTS DOESN'T WORK
</h3>
4689 <p>Sometimes there will be two edits really close together. The point
4690 selected for dragging may be next to the indended edit on an edit too
4691 small to see at the current zoom level. Zoom in horizontally.
4695 Node:
<a name=
"SYNCHRONIZATION%20LOST%20WHILE%20RECORDING">SYNCHRONIZATION LOST WHILE RECORDING
</a>,
4696 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#DRAGGING%20IN%20AND%20OUT%20POINTS%20DOESN'T%20WORK">DRAGGING IN AND OUT POINTS DOESN'T WORK
</a>,
4697 Up:
<a rel=
"up" accesskey=
"u" href=
"#TROUBLESHOOTING">TROUBLESHOOTING
</a>
4701 <h3 class=
"section">SYNCHRONIZATION LOST WHILE RECORDING
</h3>
4703 <p>If the framerate of the recording is much lower than the framerate of
4704 the source, the video will accumulate in the recording buffers over
4705 time while the audio and video are well out of sync. Decrease the
4706 <b>number of frames to buffer in the device
</b> in
4707 <b>preferences-
>recording
</b> so the excess frames are dropped instead of
4712 Node:
<a name=
"SECRETS%20OF%20CINELERRA">SECRETS OF CINELERRA
</a>,
4713 Next:
<a rel=
"next" accesskey=
"n" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>,
4714 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#TROUBLESHOOTING">TROUBLESHOOTING
</a>,
4715 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
4719 <h2 class=
"chapter">SECRETS OF CINELERRA
</h2>
4722 <li><a accesskey=
"1" href=
"#DOLBY%20PRO%20LOGIC%20ENCODING">DOLBY PRO LOGIC ENCODING
</a>:
4723 <li><a accesskey=
"2" href=
"#ANALOG%20TV%20CLEANING">ANALOG TV CLEANING
</a>:
4724 <li><a accesskey=
"3" href=
"#DEFEATING%20INTERLACING">DEFEATING INTERLACING
</a>:
4725 <li><a accesskey=
"4" href=
"#MAKING%20VIDEO%20LOOK%20LIKE%20FILM">MAKING VIDEO LOOK LIKE FILM
</a>:
4726 <li><a accesskey=
"5" href=
"#CLEARING%20OUT%20HAZE">CLEARING OUT HAZE
</a>:
4731 Node:
<a name=
"DOLBY%20PRO%20LOGIC%20ENCODING">DOLBY PRO LOGIC ENCODING
</a>,
4732 Next:
<a rel=
"next" accesskey=
"n" href=
"#ANALOG%20TV%20CLEANING">ANALOG TV CLEANING
</a>,
4733 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA">SECRETS OF CINELERRA
</a>
4737 <h3 class=
"section">DOLBY PRO LOGIC ENCODING
</h3>
4739 <p>Dolby pro logic is an easy way to output
6 channel audio from a
2
4740 channel soundcard with degraded but useful results. Rudimentary Dolby
4741 pro logic encoding can be achieved with clever usage of the effects.
4743 <p>Create
2 audio tracks with the same audio. Apply
<b>invert audio
</b> to
4744 one track. The signal comes out of the back speakers.
4746 <p>Create a single audio track with monaural audio of a different source.
4747 Center it in the
<b>pan
</b> control. The signal comes out of the center
4750 <p>Create other tracks with different signals and pan them left or right
4751 to put signals in the front left or right speaker.
4753 <p>Finally, if a copy of the signal in the back speakers is desired in any
4754 single front speaker, the signal in the back speakers must be delayed
4755 by at least
0.05 seconds and a single new track should be created. Pan
4756 the new track to orient the signal in the front speakers.
4758 <p>If the same signal is desired in all the speakers except the center
4759 speaker, delay the back speakers by
0.5 seconds and delay either the
4760 front left or front right by
0.2 seconds.
4762 <p>If you want to hear something from the subwoofer, create a new track,
4763 select a range, drop a synthesizer effect, and set the frequency below
4764 60 Hz. The subwoofer merely plays anything below around
60Hz.
4766 <p>Other tricks you can perform to separate the speakers are parametric
4767 equalization to play only selected ranges of frequencies through
4768 different speakers and lowpass filtering to play signals through the
4773 Node:
<a name=
"ANALOG%20TV%20CLEANING">ANALOG TV CLEANING
</a>,
4774 Next:
<a rel=
"next" accesskey=
"n" href=
"#DEFEATING%20INTERLACING">DEFEATING INTERLACING
</a>,
4775 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#DOLBY%20PRO%20LOGIC%20ENCODING">DOLBY PRO LOGIC ENCODING
</a>,
4776 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA">SECRETS OF CINELERRA
</a>
4780 <h3 class=
"section">ANALOG TV CLEANING
</h3>
4782 <p>Unless you live in a rich nation like China or are a terrorist, you
4783 probably record analog TV more than you record digital TV. The picture
4784 quality on analog TV is horrible but you can do things in Cinelerra to
4785 make it look more like it did in the studio.
4787 <p>First, when capturing the video, capture it in the highest resolution
4788 possible. For Europeans it's
720x576 and for Americans it's
720x480.
4789 Don't bother adjusting the brightness or contrast in the recording
4790 monitor, although maxing out the color is useful. Capture it using
4791 MJPEG or uncompressed Component Video if possible. If those are too
4792 demanding, then capture it using JPEG. RGB should be a last resort.
4794 <p>Now on the timeline use
<b>Settings-
>Format
</b> to set a YUV colorspace.
4795 Drop a
<b>Downsample
</b> effect on the footage. Set it for
4797 <pre class=
"example"> Horizontal:
2
4798 Horizontal offset:
0
4808 <p>Use the camera tool to shift the picture up or down a line to remove
4809 the most color interference from the image. This is the difference
4813 <img src=
"cleaning1.png" alt=
"cleaning1.png">
4815 <p>If you have vertical blanking information or crawls which constantly
4816 change in each frame, block them out with the
<b>Mask
</b> tool. This
4817 improves compression ratios.
4819 <p>This is about all you can do without destroying more data than you
4820 would naturally lose in compression. The more invasive cleaning
4821 techniques involve deinterlacing.
4825 Node:
<a name=
"DEFEATING%20INTERLACING">DEFEATING INTERLACING
</a>,
4826 Next:
<a rel=
"next" accesskey=
"n" href=
"#MAKING%20VIDEO%20LOOK%20LIKE%20FILM">MAKING VIDEO LOOK LIKE FILM
</a>,
4827 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#ANALOG%20TV%20CLEANING">ANALOG TV CLEANING
</a>,
4828 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA">SECRETS OF CINELERRA
</a>
4832 <h3 class=
"section">DEFEATING INTERLACING
</h3>
4834 <p>Interlacing is done on most video sources because it costs too much to
4835 build progressive scanning cameras and progressive scanning CRT's.
4836 Many a consumer has been dissapointed to spend
5 paychecks on a
4837 camcorder and discover what horrible jagged images it produces on a
4840 <p>As for progressive scanning camcorders, forget it. Cost factors are
4841 probably going to keep progressive scanning cameras from ever equalling
4842 the spatial resolution of interlaced cameras. Interlacing is here to
4843 stay. That's why they made deinterlacing effects in Cinelerra.
4845 <p>We don't believe there has ever been a perfect deinterlacing effect.
4846 They're either irreversible or don't work. Cinelerra cuts down the
4847 middle by providing deinterlacing tools that are irreversible sometimes
4848 and don't work sometimes but are neither one or the other.
4850 <p><b>Line Doubling
</b>
4852 <p>This one is done by the
<b>Deinterlace
</b> effect when set to
<b>Odd
4853 lines
</b> or
<b>Even lines
</b>. When applied to a track it reduces the
4854 vertical resolution by
1/
2 and gives you progressive frames with
4855 stairstepping. This is only useful when followed by a scale effect
4856 which reduces the image to half its size.
4858 <p><b>Line averaging
</b>
4860 <p>The
<b>Deinterlace
</b> effect when set to
<b>Average even lines
</b> or
4861 <b>Average odd lines
</b> does exactly what line doubling does except
4862 instead of making straight copies of the lines it makes averages of the
4863 lines. This is actually useful for all scaling.
4865 <p>There's an option for adaptive line averaging which selects which lines
4866 to line average and which lines to leave interlaced based on the
4867 difference between the lines. It doesn't work.
4869 <p><b>Inverse Telecine
</b>
4871 <p>This is the most effective deinterlacing tool when the footage is an
4872 NTSC TV broadcast of a film. See
<a href=
"#INVERSE%20TELECINE">INVERSE TELECINE
</a>.
4874 <p><b>Time base correction
</b>
4876 <p>The first three tools either destroy footage irreversibly or don't work
4877 sometimes.
<b>Time base correction
</b> is last because it's the perfect
4878 deinterlacing tool. It leaves the footage intact. It doesn't reduce
4879 resolution, perceptually at least. It doesn't cause jittery timing.
4881 <p>The
<b>Frames to Fields
</b> effect converts each frame to two frames, so
4882 it must be used on a timeline whose project frame rate is twice the
4883 footage's frame rate. In the first frame it puts a line averaged copy
4884 of the even lines. In the second frame it puts a line averaged copy of
4885 the odd lines. When played back at full framerates it gives the
4886 illusion of progressive video with no loss of detail.
4888 <p>Best of all, this effect can be reversed with the
<b>Fields to frames
</b>
4889 nonrealtime effect. That one combines two frames of footage back into
4890 the one original interlaced frame of half the framerate.
4892 <p>Unfortunately, the output of
<b>Frames to Fields
</b> can't be compressed
4893 as efficiently as the original because it introduces vertical twitter
4894 and a super high framerate.
4896 <p>Interlaced
29.97fps footage can be made to look like film by applying
4897 <b>Frames to Fields
</b> and then reducing the project frame rate of the
4898 resulting
59.94fps footage to
23.97fps. This produces no timing jitter
4899 and the occasional odd field gives the illusion of more detail than
4900 there would be if you just line averaged the original.
4902 <p><b>HDTV exceptions
</b>
4904 <p>1920x1080 HDTV is encoded a special way. If it's a broadcast of
4905 original HDTV film, an inverse telecine works fine. If it's a
4906 rebroadcast of a
720x480 source, you need to use a time base and line
4907 doubling algorithm to deinterlace it, See
<a href=
"#1080%20TO%20480">1080 TO
480</a>.
4911 Node:
<a name=
"MAKING%20VIDEO%20LOOK%20LIKE%20FILM">MAKING VIDEO LOOK LIKE FILM
</a>,
4912 Next:
<a rel=
"next" accesskey=
"n" href=
"#CLEARING%20OUT%20HAZE">CLEARING OUT HAZE
</a>,
4913 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#DEFEATING%20INTERLACING">DEFEATING INTERLACING
</a>,
4914 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA">SECRETS OF CINELERRA
</a>
4918 <h3 class=
"section">MAKING VIDEO LOOK LIKE FILM
</h3>
4920 <p>Video sweetening is constantly getting better. Lately the best thing
4921 you can do for dirt cheap consumer camcorder video is to turn it into
4922 progressive
24fps output. While you can't really do that, you can get
4923 pretty close for the money. Mind you, this procedure can degrade high
4924 quality video just as easily as it improves low quality video. It
4925 should only be used for low quality video.
4930 Step
1 - Set project framerate to twice the video framerate.
4933 Step
2 - Apply a
<b>Sharpen
</b> effect. Set it to sharpness:
25, no
4934 interlacing, and horizontal only.
4937 Step
3 - Drop a
<b>Frame to Fields
</b> effect on the same track. Set
4938 Average Empty Rows on and play through the video a few times to figure
4939 out which field is first. If the wrong field is first, the motion is
4940 shaky. Secondly, any editing in the doubled frame rate may now screw
4941 up the field order. We're still figuring out the easiest way to
4942 support warnings for field glitches but for now you need to go back to
4943 the normal framerate to do editing or play test to make sure the fields
4947 Step
4 - Render just the video to the highest quality file possible.
4950 Step
5 - Import the video back to a new track. Set the project
4951 framerate to
24. The new track should now display more filmish and
4952 sharper images than the original footage.
4956 <p>This entire procedure could be implemented in one nonrealtime effect,
4957 but the biggest problem with that is you'll most often want to keep the
4958 field based output and the
24fps output for posterity. A nonrealtime
4959 effect would require all that processing just for the
24fps copy.
4960 Still debating that one.
4964 Node:
<a name=
"CLEARING%20OUT%20HAZE">CLEARING OUT HAZE
</a>,
4965 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#MAKING%20VIDEO%20LOOK%20LIKE%20FILM">MAKING VIDEO LOOK LIKE FILM
</a>,
4966 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA">SECRETS OF CINELERRA
</a>
4970 <h3 class=
"section">CLEARING OUT HAZE
</h3>
4972 <p>Let's face it, if you're employed you live in Silicon Valley. As such
4973 you probably photograph a lot of haze and never see blue sky ever.
4974 Even if you can afford to briefly go somewhere where there is blue sky,
4975 horizon shots usually can stand for more depth. This is what the
4976 <b>gradient effect
</b> is for.
4978 <p>Drop the gradient effect on hazy tracks. Set the following parameters:
4980 <pre class=
"example"> Angle:
0
4983 Inner color: blue
100% alpha
4984 Outer color: blue
0% alpha
4987 <p>It's important to set the
0% alpha color to blue even though it's
0%
4988 alpha. The color of the outer alpha is still interpolated with the
4989 inner color. This is a generally applicable setting for the gradient.
4990 Some scenes may work better with orange or brown for an evening feel.
4994 Node:
<a name=
"SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>,
4995 Next:
<a rel=
"next" accesskey=
"n" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>,
4996 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#SECRETS%20OF%20CINELERRA">SECRETS OF CINELERRA
</a>,
4997 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
5001 <h2 class=
"chapter">SECRETS OF CINELERRA EFFECTS
</h2>
5003 <p>Most effects in Cinelerra can be figured out just by using them and
5004 tweeking. Here are brief descriptions of effects which you might not
5005 utilize fully by mere experimentation.
5008 <li><a accesskey=
"1" href=
"#1080%20TO%20480">1080 TO
480</a>: How to convert HDTV into SD
5009 <li><a accesskey=
"2" href=
"#CHROMA%20KEY">CHROMA KEY
</a>: How to make areas transparent based on color.
5010 <li><a accesskey=
"3" href=
"#DECIMATE">DECIMATE
</a>: How to reduce frame rates by eliminating similar frames.
5011 <li><a accesskey=
"4" href=
"#DEINTERLACE">DEINTERLACE
</a>: How to convert interlaced video to progressive video.
5012 <li><a accesskey=
"5" href=
"#FREEZE%20FRAME">FREEZE FRAME
</a>: How to stop action in the timeline.
5013 <li><a accesskey=
"6" href=
"#HISTOGRAM">HISTOGRAM
</a>: How to change the mapping of different brightness values.
5014 <li><a accesskey=
"7" href=
"#INVERSE%20TELECINE">INVERSE TELECINE
</a>: How to convert pulled down frames to progressive frames.
5015 <li><a accesskey=
"8" href=
"#LOOP">LOOP
</a>: How to loop regions of the timeline.
5016 <li><a accesskey=
"9" href=
"#REVERSE%20VIDEO%2fAUDIO">REVERSE VIDEO/AUDIO
</a>: How to play regions in reverse.
5017 <li><a href=
"#TIME%20AVERAGE">TIME AVERAGE
</a>: How to add trail patterns or increase still image quality.
5018 <li><a href=
"#TITLER">TITLER
</a>: How to add text to a track from inside Cinelerra.
5019 <li><a href=
"#VIDEO%20SCOPE">VIDEO SCOPE
</a>: How to view the dynamic range of intensity and hue.
5024 Node:
<a name=
"1080%20TO%20480">1080 TO
480</a>,
5025 Next:
<a rel=
"next" accesskey=
"n" href=
"#CHROMA%20KEY">CHROMA KEY
</a>,
5026 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5030 <h3 class=
"section">1080 TO
480</h3>
5032 <p>Most TV broadcasts are recieved with a
1920x1080 resolution but
5033 originate from a
720x480 source at the studio. It's a waste of space
5034 to compress the entire
1920x1080 if the only resolvable details are
5035 720x480. Unfortunately resizing
1920x1080 video to
720x480 isn't as
5036 simple as shrinking it.
5038 <p>At the TV station the original
720x480 footage was first converted to
5039 fields of
720x240. Each field was then scaled up to
1920x540. The two
5040 1920x540 fields were finally combined with interlacing to form the
5041 1920x1080 image. This technique allows a consumer TV to display the
5042 resampled image without extra circuitry to handle
720x480 interlacing
5043 in a
1920x1080 image.
5045 <p>If you merely deinterlaced the
1920x1080 images, you would end up with
5046 details of
720x240. The
1080 to
480 effect properly extracts two
5047 1920x540 size fields from the image, resizes them separately, and
5048 combines them again to restore the original
720x480. Tracks to which
5049 it is applied need to be at
1920x1080 resolution. The project settings
5050 in
<b>settings-
>format
</b> should be at
720x480 resolution.
5052 <p>The effect doesn't know if the first row in the
1920x1080 image belongs
5053 to the first row of the
720x480 original. You have to specify what the
5054 first row is in the effect configuration.
5056 <p>The output of this effect is a small image in the middle of the
5057 original
1920x1080 frame. Use the projector to center the output image
5060 <p>Finally, once you have
720x480 interlaced video you can either apply
5061 <b>frames to fields
</b> of
<b>inverse telecine
</b> to further recover original
5066 Node:
<a name=
"CHROMA%20KEY">CHROMA KEY
</a>,
5067 Next:
<a rel=
"next" accesskey=
"n" href=
"#DECIMATE">DECIMATE
</a>,
5068 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#1080%20TO%20480">1080 TO
480</a>,
5069 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5073 <h3 class=
"section">CHROMA KEY
</h3>
5075 <p>This effect replaces the selected color or intensity with black if
5076 there is no alpha channel and replaces it with transparency if there is
5077 an alpha channel. The selection of color model is important.
5079 <p>Chroma key uses either the value or the hue to determine what is
5080 erased. If this parameter is within a certain threshold it's erased.
5081 It's not a simple on/off switch, however. As the selected parameter
5082 approaches the edge of the threshold, it gradually gets erased if the
5083 slope is low or is completely erased if the slope is high.
5085 <p>The slope tries to soften the edges of the chroma key but it doesn't
5086 work well for compressed sources. A popular softening technique is to
5087 use a maximum slope and chain a blur effect below the chroma key effect
5088 to blur just the alpha.
5092 Node:
<a name=
"DECIMATE">DECIMATE
</a>,
5093 Next:
<a rel=
"next" accesskey=
"n" href=
"#DEINTERLACE">DEINTERLACE
</a>,
5094 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#CHROMA%20KEY">CHROMA KEY
</a>,
5095 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5099 <h3 class=
"section">DECIMATE
</h3>
5101 <p>This effect drops frames from a track which are most similar in order
5102 to reduce the frame rate. This is usually applied to a DVD to convert
5103 the
29.97 fps video to the
23.97 fps film rate but this decimate effect
5104 can take any input rate and convert it to any lower output rate.
5106 <p>The output rate of
<b>decimate
</b> is the project frame rate. The input
5107 rate is set in the
<b>decimate
</b> user interface. To convert
29.97fps
5108 progressive video to
23.97fps film, apply a decimate effect to the
5109 track. Set the decimate input rate to
29.97 and the project rate to
5112 <p>Be aware every effect layered before decimate processes video at the
5113 decimate input rate and every effect layered after decimate processes
5114 video at the project frame rate. Computationally intensive effects
5115 should come below decimate.
5117 <p>Decimate is not to be confused with
<b>frames to fields
</b>. Frames to
5118 fields does not have a different input rate than output rate. It
5119 merely replicates each frame.
5123 Node:
<a name=
"DEINTERLACE">DEINTERLACE
</a>,
5124 Next:
<a rel=
"next" accesskey=
"n" href=
"#FREEZE%20FRAME">FREEZE FRAME
</a>,
5125 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#DECIMATE">DECIMATE
</a>,
5126 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5130 <h3 class=
"section">DEINTERLACE
</h3>
5132 <p>The deinterlace effect has evolved over the years to deinterlacing and
5133 a whole lot more. In fact two of the deinterlacing methods,
<b>Inverse
5134 Telecine
</b> and
<b>Frames to Fields
</b>, are separate effects. The
5135 deinterlace effect offers several variations of line replication to
5136 eliminate comb artifacts in interlaced video. It also has some line
5137 swapping tools to fix improperly captured video or make the result of a
5138 reverse effect display fields in the right order.
5142 Node:
<a name=
"FREEZE%20FRAME">FREEZE FRAME
</a>,
5143 Next:
<a rel=
"next" accesskey=
"n" href=
"#HISTOGRAM">HISTOGRAM
</a>,
5144 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#DEINTERLACE">DEINTERLACE
</a>,
5145 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5149 <h3 class=
"section">FREEZE FRAME
</h3>
5151 <p>In its simplest form, highlight a region of the track to freeze, drop
5152 the freeze frame effect on the highlighted region, and the lowest
5153 numbered frame in the affected area will play throughout the entire
5156 <p>Freezeframe has an
<b>enabled
</b> option which can be keyframed. Regions
5157 of a freeze frame effect which are enabled repeat the lowest numbered
5158 frame since the last keyframe. This has unique possibilities.
5160 <p>If a freeze frame effect has a keyframe in the middle of it set to
5161 <b>enabled
</b>, the frame in the middle is repeated in the entire effect.
5163 <p>If a freeze frame effect has several keyframes, each set to
5164 <b>enabled
</b>, every time a keyframe is encountered the frame under it
5165 becomes the frozen one.
5167 <p>If a freeze frame effect alternates between
<b>enabled
</b> and
5168 <b>disabled
</b>, each time an
<b>enabled
</b> keyframe is encountered the
5169 frame under it is replicated until the next
<b>disabled
</b> keyframe. The
5170 disabled regions play through.
5174 Node:
<a name=
"HISTOGRAM">HISTOGRAM
</a>,
5175 Next:
<a rel=
"next" accesskey=
"n" href=
"#INVERSE%20TELECINE">INVERSE TELECINE
</a>,
5176 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#FREEZE%20FRAME">FREEZE FRAME
</a>,
5177 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5181 <h3 class=
"section">HISTOGRAM
</h3>
5183 <p>This shows the number of occurances of each value of a certain color
5184 channel. It is always performed in
16 bit RGB regardless of the
5185 project colorspace. Use the upper gradient to determine the range of
5186 input intensities to be expanded to the output. Use the lower gradient
5187 to determine the range of output intensities to target the expansion
5188 to. Enable
<em>automatic
</em> mode to have the histogram calculate
5189 automatic input values for every frame. The threshold is only used in
5190 automatic mode and determines how sensitive to the upper and lower
5191 boundaries of the histogram the automatic gain should be.
5195 Node:
<a name=
"INVERSE%20TELECINE">INVERSE TELECINE
</a>,
5196 Next:
<a rel=
"next" accesskey=
"n" href=
"#LOOP">LOOP
</a>,
5197 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#HISTOGRAM">HISTOGRAM
</a>,
5198 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5202 <h3 class=
"section">INVERSE TELECINE
</h3>
5204 <p>This is the most effective deinterlacing tool when the footage is a
5205 video transfer of a film. Here the film was converted from
24fps to
5206 60fps. Then the
60fps was downsampled to
30fps by extracting odd and
5207 even lines and interlacing the lines. The IVTC effect is primarily a
5208 way to convert interlaced video to progressive video. It undoes three
5209 patterns of interlacing.
5211 <pre class=
"example"> A AB BC CD D
5216 <p>The first two options are fixed patterns and affected by the
<b>pattern
5217 offset
</b> and
<b>odd field first
</b> parameters. The last option creates
5218 several combinations of lines for each frame and picks the most
5219 progressive combination. It's a brute force algorithm.
5221 <p>This technique doesn't rely on a pattern like other techniques and is
5222 less destructive but the timing is going to be jittery because of the
5223 lack of a frame rate reduction.
5227 Node:
<a name=
"LOOP">LOOP
</a>,
5228 Next:
<a rel=
"next" accesskey=
"n" href=
"#REVERSE%20VIDEO%2fAUDIO">REVERSE VIDEO/AUDIO
</a>,
5229 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#INVERSE%20TELECINE">INVERSE TELECINE
</a>,
5230 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5234 <h3 class=
"section">LOOP
</h3>
5236 <p>Sections of audio or video can be looped by dropping a
<b>loop
</b> effect
5237 on them. Contrary to the the
<b>settings-
>loop playback
</b> option, the
5238 loop effects can be rendered where the
<b>settings-
>loop playback
</b>
5239 option can not be. The loop effects are also convenient for short
5242 <p>The loop effects have one option: the number of
<b>frames
</b> or
5243 <b>samples
</b> to loop. This specifies the length of the region to loop
5244 starting from either the beginning of the effect or the latest
5245 keyframe. The region is replicated for the entire effect.
5247 <p>Every time a keyframe is set in a loop effect, the keyframe becomes the
5248 beginning of the region to loop. Setting several keyframes in
5249 succession causes several regions to loop. Setting a single keyframe
5250 causes the region after the keyframe to be looped throughout the
5251 effect, no matter where the keyframe is. The end of an effect can be
5252 looped from the beginning by setting the keyframe near the end.
5256 Node:
<a name=
"REVERSE%20VIDEO%2fAUDIO">REVERSE VIDEO/AUDIO
</a>,
5257 Next:
<a rel=
"next" accesskey=
"n" href=
"#TIME%20AVERAGE">TIME AVERAGE
</a>,
5258 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#LOOP">LOOP
</a>,
5259 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5263 <h3 class=
"section">REVERSE VIDEO/AUDIO
</h3>
5265 <p>Media can be reversed on the timeline in realtime. This isn't to be
5266 confused with using the reverse playback on the transport. The reverse
5267 effects reverse the region covered by the effect regardless of the
5268 transport direction. Apply
<b>reverse audio
</b> to an audio track and
5269 play it backwards. The sound plays forward.
5271 <p>The region to be reversed is first determined by what part of the track
5272 the effect is under and second by the locations of keyframes in the
5273 effect. The reverse effects have an
<b>enabled
</b> option which allows
5274 you to set keyframes. This allows may possibilities.
5276 <p>Every
<b>enabled
</b> keyframe is treated as the start of a new reversed
5277 region and the end of a previous reversed region. Several
<b>enabled
</b>
5278 keyframes in succession yield several regions reversed independant of
5279 each other. An
<b>enabled
</b> keyframe followed by a
<b>disabled
</b>
5280 keyframe yields one reversed region followed by a forward region.
5282 <p>Finally, be aware when reversing audio that the waveform on the
5283 timeline doesn't reflect the actual reversed output.
5287 Node:
<a name=
"TIME%20AVERAGE">TIME AVERAGE
</a>,
5288 Next:
<a rel=
"next" accesskey=
"n" href=
"#TITLER">TITLER
</a>,
5289 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#REVERSE%20VIDEO%2fAUDIO">REVERSE VIDEO/AUDIO
</a>,
5290 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5294 <h3 class=
"section">TIME AVERAGE
</h3>
5296 <p>Time average is one effect which has many uses besides creating nifty
5297 trail patterns of moving objects. It's main use is reducing noise in
5298 still images. Merely point a video camera at a stationary subject for
5299 30 frames, capture the frames, and average them using TIME AVERAGE and
5300 you'll have a super high quality print. In
16 bit colormodels, time
5301 average can increase the dynamic range of lousy cameras.
5305 Node:
<a name=
"TITLER">TITLER
</a>,
5306 Next:
<a rel=
"next" accesskey=
"n" href=
"#VIDEO%20SCOPE">VIDEO SCOPE
</a>,
5307 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#TIME%20AVERAGE">TIME AVERAGE
</a>,
5308 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5312 <h3 class=
"section">TITLER
</h3>
5314 <p>While it is possible to add text to movies by importing still images
5315 from The Gimp and compositing them, the Titler allows you to add text
5316 from within Cinelerra.
5318 <p>The titler has standard options for
<b>font, size, and style
</b>. The
5319 best font is a generic, normal font like Arial in a large size.
5321 <p>The titler also has options you'll only find in moving pictures. The
5322 <b>Justify
</b> operation justifies the text relative to the entire frame.
5323 Once justified, the
<b>X and Y
</b> offset is applied. This allows text to
5324 be justified while at the same time letting you push it within the
5327 <p>The
<b>motion type
</b> scrolls the text in any of the four directions.
5328 When using this, the text may dissappear. Move the insertion point
5329 along the timeline until the text is far enough along the animation to
5330 reappear. The text scrolls on and scrolls off.
5332 <p>Setting
<b>loop
</b> causes the text to scroll completely off and repeat.
5333 Without
<b>loop
</b> the text scrolls off and never reappears.
5335 <p>The speed of the animation is determined by
<b>speed
</b> Set it higher to
5336 speed up the animation.
5338 <p><b>Drop shadow
</b> draws a black copy of the text to the bottom right of
5339 the original text. Useful when drawing text over changing video to
5340 keep the border always visible.
5342 <p>In addition to the scrolling,
<b>Fade in/Fade out
</b> are a second type of
5343 animation. If the fade seconds are
0, no fading is done.
5345 <p><b>Color
</b> picks the color to draw the text in. Usually white is the
5346 only practical color.
5348 <p><b>Stamp timecode
</b> replaces the text with the current position on the
5349 timeline in seconds and frames.
5352 <li><a accesskey=
"1" href=
"#ADDING%20FONTS%20TO%20THE%20TITLER">ADDING FONTS TO THE TITLER
</a>: How to add fonts to the titler
5353 <li><a accesskey=
"2" href=
"#THE%20TITLE-SAFE%20REGION">THE TITLE-SAFE REGION
</a>: How to keep text visible on output
5358 Node:
<a name=
"ADDING%20FONTS%20TO%20THE%20TITLER">ADDING FONTS TO THE TITLER
</a>,
5359 Next:
<a rel=
"next" accesskey=
"n" href=
"#THE%20TITLE-SAFE%20REGION">THE TITLE-SAFE REGION
</a>,
5360 Up:
<a rel=
"up" accesskey=
"u" href=
"#TITLER">TITLER
</a>
5364 <h3 class=
"subsection">ADDING FONTS TO THE TITLER
</h4>
5366 <p>The X Window system originally didn't have a suitable font renderer for
5367 video. It also is restricted to the current bit depth. It doesn't
5368 have a convenient way to know which fonts work with the suitable font
5369 renderer in the desired bit depth. The easiest way we've found to
5370 support fonts in the titler is to have a directory for them at
5371 <b>/usr/lib/cinelerra/fonts
</b>.
5373 <p>The titler supports mainly
<b>TTF
</b>, true type fonts. It supports
5374 others but TTF are the most reliable. To add true type fonts, copy the
5375 <b>.TTF
</b> files to the
<b>/usr/lib/cinelerra/fonts
</b> directory. In that
5376 directory run
<b>ttmkfdir
> fonts.dir
</b> and restart Cinelerra. The new
5377 fonts should appear.
5381 Node:
<a name=
"THE%20TITLE-SAFE%20REGION">THE TITLE-SAFE REGION
</a>,
5382 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#ADDING%20FONTS%20TO%20THE%20TITLER">ADDING FONTS TO THE TITLER
</a>,
5383 Up:
<a rel=
"up" accesskey=
"u" href=
"#TITLER">TITLER
</a>
5387 <h3 class=
"subsection">THE TITLE-SAFE REGION
</h4>
5389 <p>If the video is displayed on a consumer TV, the outer border is going
5390 to be cropped by
5% on each side. Moreover, text which is too close to
5391 the edge looks sloppy. Make sure when adding titles to have the
5392 <b>title-safe
</b> <img src=
"titlesafe.png" alt=
"titlesafe.png"> tool active in the
<b>compositor
</b> window.
5393 The text shouldn't cross the inner rectangle.
5397 Node:
<a name=
"VIDEO%20SCOPE">VIDEO SCOPE
</a>,
5398 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#TITLER">TITLER
</a>,
5399 Up:
<a rel=
"up" accesskey=
"u" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>
5403 <h3 class=
"section">VIDEO SCOPE
</h3>
5405 <p>The video scope plots two views of the image. One view plots the
5406 intensity of each pixel against horizontal position. They call this
5407 the WAVEFORM. Another view translates hue to angle and saturation to
5408 radius for each pixel. They call this the VECTORSCOPE.
5410 <p>The vectorscope is actually very useful for determining if an image is
5411 saturated. When adjusting saturation, it's important to watch the
5412 vectorscope to make sure pixels don't extend past the
100 radius.
5414 <p>The waveform allows you to make sure image data extends from complete
5415 black to complete white while adjusting the brightness/contrast.
5417 <p>Some thought is being given to having a video scope for recording.
5418 Unfortunately, this would require a lot of variations of the video
5419 scope for all the different video drivers.
5423 Node:
<a name=
"PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>,
5424 Next:
<a rel=
"next" accesskey=
"n" href=
"#KEYBOARD%20SHORTCUTS">KEYBOARD SHORTCUTS
</a>,
5425 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#SECRETS%20OF%20CINELERRA%20EFFECTS">SECRETS OF CINELERRA EFFECTS
</a>,
5426 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
5430 <h2 class=
"chapter">PLUGIN AUTHORING
</h2>
5432 <p>The plugin API in Cinelerra dates back to
1997, before the LADSPA and
5433 before VST became popular. It's fundamentally the same as it was in
5434 1997, with minor modifications to handle keyframes and GUI feedback.
5435 Unfortunately, the GUI is not abstracted from the programmer. This
5436 allows the programmer to use whatever toolkit they want and allows more
5437 flexibility in appearance but it costs more.
5439 <p>There are several types of plugins, each with a common procedure of
5440 implementation and specific changes for that particular type. The
5441 easiest way to implement a plugin is to take the simplest existing one
5442 out of the group and rename the symbols.
5445 <li><a accesskey=
"1" href=
"#INTRODUCING%20THE%20PULL%20METHOD">INTRODUCING THE PULL METHOD
</a>: The current paradigm for plugin writing
5446 <li><a accesskey=
"2" href=
"#COMMON%20PLUGIN%20FUNCTIONS">COMMON PLUGIN FUNCTIONS
</a>: What all effects have to do.
5447 <li><a accesskey=
"3" href=
"#REALTIME%20PLUGINS">REALTIME PLUGINS
</a>: What realtime effects have to do.
5448 <li><a accesskey=
"4" href=
"#NONREALTIME%20PLUGINS">NONREALTIME PLUGINS
</a>: What rendered effects have to do.
5449 <li><a accesskey=
"5" href=
"#AUDIO%20PLUGINS">AUDIO PLUGINS
</a>: What audio effects have to do.
5450 <li><a accesskey=
"6" href=
"#VIDEO%20PLUGINS">VIDEO PLUGINS
</a>: What video effects have to do.
5451 <li><a accesskey=
"7" href=
"#TRANSITION%20PLUGINS">TRANSITION PLUGINS
</a>: What transitions have to do.
5452 <li><a accesskey=
"8" href=
"#PLUGIN%20GUI'S%20WHICH%20UPDATE%20DURING%20PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK
</a>: How to use currently playing data to draw the GUI.
5453 <li><a accesskey=
"9" href=
"#PLUGIN%20QUERIES">PLUGIN QUERIES
</a>: How plugins get information about the data to be processed.
5458 Node:
<a name=
"INTRODUCING%20THE%20PULL%20METHOD">INTRODUCING THE PULL METHOD
</a>,
5459 Next:
<a rel=
"next" accesskey=
"n" href=
"#COMMON%20PLUGIN%20FUNCTIONS">COMMON PLUGIN FUNCTIONS
</a>,
5460 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>
5464 <h3 class=
"section">INTRODUCING THE PULL METHOD
</h3>
5466 <p>The simplest way to design plugins is with the push method. The push
5467 method is intuitive. A source pushes data to a plugin, the plugin does
5468 math operations on it, and the plugin pushes it to a destination. For
5469 6 years this was the way all realtime plugins were driven internally
5470 but it didn't allow you to reduce the rate of data in realtime. While
5471 plugins can still be written as if they're being pushed data, this is
5472 not the way they're processed internally anymore.
5474 <p>The latest evolution in Cinelerra's plugin design is the pull method.
5475 The rendering pipeline starts at the end and the final steps in the
5476 rendering pipeline request data from the steps before them. When the
5477 rendering pipleline eventually requests data from a plugin chain, each
5478 plugin requests data from the plugin before it.
5480 <p>This is less intuitive than the push method but is much more powerful.
5481 Realtime plugins written using the pull method can change the rate data
5482 is presented to the viewer and the direction of playback. The pull
5483 method allows plugins to take in data at a higher rate than they send
5486 <p>To get the power of rate independance, the pull method requires plugins
5487 to know more about the data than they needed to under the push method.
5488 Plugins need to know what rate the project is at and what rate their
5489 individual requested output is at. These two data rates have to be
5490 interchanged for a plugin to configure itself properly.
5492 <p>Keyframes for a plugin are stored relative to the project frame rate.
5493 Queries for the current playback position are given relative to the
5494 project frame rate. This is useless if the plugin was requested data
5495 at twice the project frame rate since the keyframes wouldn't match up
5496 to the right data positions. Two classes of data rates were created to
5497 handle this problem.
5499 <p>Rate conversions are done in terms of the
<b>project rate
</b> and the
5500 <b>requested rate
</b>. The project rate is identical for all plugins. It
5501 is determined by the
<b>settings-
>format
</b> window. The requested rate
5502 is determined by the downstream plugin requesting data from the current
5503 plugin. It is arbitrary. Exactly how to use these rates is described
5508 Node:
<a name=
"COMMON%20PLUGIN%20FUNCTIONS">COMMON PLUGIN FUNCTIONS
</a>,
5509 Next:
<a rel=
"next" accesskey=
"n" href=
"#REALTIME%20PLUGINS">REALTIME PLUGINS
</a>,
5510 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#INTRODUCING%20THE%20PULL%20METHOD">INTRODUCING THE PULL METHOD
</a>,
5511 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>
5515 <h3 class=
"section">COMMON PLUGIN FUNCTIONS
</h3>
5517 <p>All plugins inherit from a derivative of PluginClient. This
5518 PluginClient derivative implements most of the required methods in
5519 PluginClient, but users must still define methods for PluginClient.
5520 The most commonly used methods are predefined in macros to reduce the
5521 typing yet still allow flexibility.
5523 <p>The files they include depend on the plugin type. Audio plugins
5524 include
<b>pluginaclient.h
</b> and video plugins include
5525 <b>pluginvclient.h
</b>. They inherit
<b>PluginAClient
</b> and
5526 <b>PluginVClient
</b> respectively.
5528 <p>Cinelerra instantiates all plugins at least twice when they are used in
5529 a movie. Once instance is the GUI. The other instance is the signal
5530 processor. User input, through a complicated sequence, is propogated
5531 from the GUI instance to the signal processor instance. If the signal
5532 processor wants to alter the GUI, it propogates data back to the GUI
5533 instance. There are utility functions for doing all this.
5535 <p>All plugins define at least three objects:
5540 <b>Processing object
</b> - Contains pointers to all the other objects and
5541 performs the signal processing. This object contains a number of
5542 queries to identify itself and is the object you register to register
5546 <b>User interface object
</b> - This is defined according to the programmer's
5547 discretion. It can either use Cinelerra's toolkit or another toolkit.
5548 It shows data on the screen and collects parameters from the user.
5550 <p>Using Cinelerra's toolkit, the only user interface object a developer
5551 needs to worry about is the Window. The window has pointers to a
5552 number of widgets, a few initialization methods, and a back pointer to
5553 the plugin's processing object. The documentation refers to the usage
5554 of Cinelerra's toolkit.
5556 <p>Depending on the user interface toolkit, a user interface thread may be
5557 created to run the user interface asynchronous of everything else.
5558 Synchronizing the user interface to changes in the plugin's
5559 configuration is the most complicated aspect of the plugin, so the user
5560 interface thread and object are heavily supported by macros if you use
5561 Cinelerra's toolkit.
5564 <b>Configuration object
</b> - This stores the user parameters and always
5565 needs interpolation, copying, and comparison functions. Macros for the
5566 plugin client automatically call configuration methods to interpolate
5572 <li><a accesskey=
"1" href=
"#THE%20PROCESSING%20OBJECT">THE PROCESSING OBJECT
</a>:
5573 <li><a accesskey=
"2" href=
"#THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT
</a>:
5574 <li><a accesskey=
"3" href=
"#THE%20USER%20INTERFACE%20OBJECT">THE USER INTERFACE OBJECT
</a>:
5579 Node:
<a name=
"THE%20PROCESSING%20OBJECT">THE PROCESSING OBJECT
</a>,
5580 Next:
<a rel=
"next" accesskey=
"n" href=
"#THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT
</a>,
5581 Up:
<a rel=
"up" accesskey=
"u" href=
"#COMMON%20PLUGIN%20FUNCTIONS">COMMON PLUGIN FUNCTIONS
</a>
5585 <h3 class=
"subsection">THE PROCESSING OBJECT
</h4>
5587 <p>Load up a simple plugin like gain to see what this object looks like.
5588 The processing object should inherit from the intended PluginClient
5589 derivative. Its constructor should take a PluginServer argument.
5591 <pre class=
"example"> MyPlugin(PluginServer *server);
5594 <p>In the implementation, the plugin must contain a registration line with
5595 the name of the processing object like
5597 <pre class=
"example"> REGISTER_PLUGIN(MyPlugin)
5600 <p>The constructor should contain
5602 <pre class=
"example"> PLUGIN_CONSTRUCTOR_MACRO
5605 <p>to initialize the most common variables.
5607 <p>The processing object should have a destructor containing
5609 <pre class=
"example"> PLUGIN_DESTRUCTOR_MACRO
5612 <p>to delete the most common variables.
5614 <p>Another function which is useful but not mandatory is
5616 <pre class=
"example"> int is_multichannel();
5619 <p>It should return
1 if one instance of the plugin handles multiple
5620 tracks simultaneously or
0 if one instance of the plugin only handles
5621 one track. The default is
0 if it is omitted.
5623 <p>Multichannel plugins in their processing function should refer to a
5624 function called
<b>PluginClient::get_total_buffers()
</b> to determine the
5627 <p>To simplify the implementation of realtime plugins, a macro for
5628 commonly used members has been created for the class header, taking the
5629 configuration object and user interface thread object as arguments.
5630 The macro definitions apply mainly to realtime plugins and are not
5631 useful in nonrealtime plugins. Fortunately, nonrealtime plugins are
5634 <pre class=
"example"> PLUGIN_CLASS_MEMBERS(config_name, thread_name)
5637 <p>The commonly used members in PLUGIN_CLASS_MEMBERS are described below.
5641 <li>int load_configuration();
5643 <p>Loads the configuration based on surrounding keyframes and current
5644 position. The class definition for load_configuration should contain
5646 <pre class=
"example"> LOAD_CONFIGURATION_MACRO(plugin_class, config_class)
5649 <p>to implement the default behavior for load_configuration. This stores
5650 whatever the current configuration is inside the plugin's configuration
5651 object and returns
1 if the new configuration differs from the previous
5652 configuration. The return value of load_configuration is used by
5653 another commonly used function, update_gui to determine if the GUI really needs to be updated.
5655 <p>The plugin's configuration object is always called
<b>config
</b> inside
5656 PLUGIN_CLASS_MEMBERS.
5658 </p><li>VFrame* new_picon();
5660 <p>Creates a picon for display in the resource window. Use
5662 <pre class=
"example"> #include
"picon_png.h"
5663 NEW_PICON_MACRO(plugin_class)
5666 <p>to implement new_picon. In addition, the user should create a
5667 <em>picon_png.h
</em> header file from a PNG image using
<em>pngtoh
</em>.
5668 <em>pngtoh
</em> is compiled in the
<em>guicast/ARCH
</em> directory.
5670 <p>The source PNG image should be called picon.png and can be any format
5673 </p><li>char* plugin_title();
5675 <p>Returns a text string identifying the plugin in the resource window.
5676 The string has to be unique.
5678 </p><li>void update_gui();
5680 <p>Should first load the configuration, test for a return of
1, and then
5681 redraw the GUI with the new parameters. All the plugins using GuiCast
5684 <pre class=
"example"> void MyPlugin::update_gui()
5688 if(load_configuration())
5690 thread-
>window-
>lock_window();
5691 // update widgets here
5692 thread-
>window-
>unlock_window();
5698 <p>to handle concurrency and conditions of no GUI.
5700 </p><li>int show_gui();
5702 <p>Instantiate the GUI and switch the plugin to GUI mode. This is implemented with
5704 <pre class=
"example"> SHOW_GUI_MACRO(plugin_class, thread_class)
5707 </p><li>int set_string();
5709 <p>Changes the title of the GUI window to a certain string. This is implemented with
5711 <pre class=
"example"> SET_STRING_MACRO(plugin_class)
5714 </p><li>void raise_window();
5716 <p>Raises the GUI window to the top of the stack. This is implemented with
5718 <pre class=
"example"> RAISE_WINDOW_MACRO(plugin_class)
5723 <p>Iimportant functions the processing object must define are the
5724 functions which load and save configuration data from keyframes. These
5725 functions are called by the macros so all you need to worry about is
5726 accessing the keyframe data.
5728 <pre class=
"example"> void save_data(KeyFrame *keyframe);
5729 void read_data(KeyFrame *keyframe);
5732 <p>The read data functions are only used in realtime plugins. The read
5733 data functions translate the plugin configuration between the KeyFrame
5734 argument and the configuration object for the plugin. The keyframes
5735 are stored on the timeline and can change for every project.
5737 <p>Use an object called
<b>FileXML
</b> to do the translation and some
5738 specific commands to get the data out of the KeyFrame argument. See
5739 any existing plugin to see the usage of KeyFrame and FileXML.
5741 <pre class=
"example"> int load_defaults();
5742 int save_defaults();
5745 <p>The load defaults functions are used in realtime and non-realtime
5746 plugins. The load defaults functions translate the plugin
5747 configuration between a Defaults object and the plugin's
5748 configuration. The Defaults object stores configurations in a discrete
5749 file on disk for each plugin but doesn't isolate different
5750 configurations for different projects.
5752 <p>The function overriding
<b>load_defaults
</b> also needs to create the
5753 Defaults object. See any existing plugin to see the usage of
5756 <p>Other standard members may be defined in the processing object,
5757 depending on the plugin type.
5761 Node:
<a name=
"THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT
</a>,
5762 Next:
<a rel=
"next" accesskey=
"n" href=
"#THE%20USER%20INTERFACE%20OBJECT">THE USER INTERFACE OBJECT
</a>,
5763 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#THE%20PROCESSING%20OBJECT">THE PROCESSING OBJECT
</a>,
5764 Up:
<a rel=
"up" accesskey=
"u" href=
"#COMMON%20PLUGIN%20FUNCTIONS">COMMON PLUGIN FUNCTIONS
</a>
5768 <h3 class=
"subsection">THE CONFIGURATION OBJECT
</h4>
5770 <p>The configuration object is critical for GUI updates, signal
5771 processing, and default settings in realtime plugins. Be aware it is
5772 not used in nonrealtime plugins. The configuration object inherits
5773 from nothing and has no dependancies. It's merely a class containing
5774 three functions and variables specific to the plugin's parameters.
5776 <p>Usually the configuration object starts with the name of the plugin
5779 <pre class=
"example"> class MyPluginConfig
5785 <p>Following the name of the configuration class, we put in three
5786 required functions and the configuration variables.
5788 <pre class=
"example"> int equivalent(MyPluginConfig
&that);
5789 void copy_from(MyPluginConfig
&that);
5790 void interpolate(MyPluginConfig
&prev,
5791 MyPluginConfig
&next,
5792 int64_t prev_position,
5793 int64_t next_position,
5794 int64_t current_position);
5805 <p>Now you must define the three functions.
<b>Equivalent
</b> is called by
5806 LOAD_CONFIGURATION_MACRO to get the return value. If equivalent
5807 returns
0, the load configuration function causes the GUI to redraw.
5808 If equivalent returns
1, the GUI doesn't redraw.
5810 <p>Then there's
<b>copy_from
</b> which transfers the configuration values
5811 from the argument to the local variables. This is once again used in
5812 LOAD_CONFIGURATION_MACRO to store configurations in temporaries. Once
5813 LOAD_CONFIGURATION_MACRO has replicated the configuration, it loads a
5814 second configuration. Then it interpolates the two configurations to
5815 get the current configuration. The interpolation function performs the
5816 interpolation and stores the result in the local variables.
5818 <p>Normally the interpolate function calculates a previous and next
5819 fraction, using the arguments.
5821 <pre class=
"example"> void MyPluginConfig::interpolate(MyPluginConfig
&prev,
5822 MyPluginConfig
&next,
5823 int64_t prev_position,
5824 int64_t next_position,
5825 int64_t current_position)
5827 double next_scale = (double)(current_position - prev_position) / (next_position - prev_position);
5828 double prev_scale = (double)(next_position - current_position) / (next_position - prev_position);
5831 <p>Then the scales are applied to the previous and next configuration
5832 object to yield the current values.
5834 <pre class=
"example">
5835 this-
>parameter1 = (float)(prev.parameter1 * prev_scale + next.parameter1 * next_scale);
5836 this-
>parameter2 = (float)(prev.parameter2 * prev_scale + next.parameter2 * next_scale);
5837 this-
>parameter3 = (int)(prev.parameter3 * prev_scale + next.parameter3 * next_scale);
5842 <p>Alternatively you can copy the values from the previous configuration
5843 argument for no interpolation.
5845 <p>This usage is the same in audio and video plugins. In video playback,
5846 the interpolation function is called for every frame, yielding smooth
5847 interpolation. In audio playback, the interpolation function is called
5848 only once for every console fragment and once every time the insertion
5849 point moves. This is good enough for updating the GUI while selecting
5850 regions on the timeline but it may not be accurate enough for really
5851 smooth rendering of the effect.
5853 <p>For really smooth rendering of audio, you can still use
5854 load_configuration when updating the GUI. For process_realtime;
5855 however, ignore load_configuration and write your own interpolation
5856 routine which loads all the keyframes in a console fragment and
5857 interpolates every sample. This would be really slow and hard to
5858 debug, yielding improvement which may not be audible. Then of course,
5859 every century has its set of wierdos.
5861 <p>An easier way to get smoother interpolation is to reduce the console
5862 fragment to
1 sample. This would have to be rendered and played back
5863 in a separate program of course. The Linux sound driver can't play
5864 fragments of
1 sample.
5868 Node:
<a name=
"THE%20USER%20INTERFACE%20OBJECT">THE USER INTERFACE OBJECT
</a>,
5869 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#THE%20CONFIGURATION%20OBJECT">THE CONFIGURATION OBJECT
</a>,
5870 Up:
<a rel=
"up" accesskey=
"u" href=
"#COMMON%20PLUGIN%20FUNCTIONS">COMMON PLUGIN FUNCTIONS
</a>
5874 <h3 class=
"subsection">THE USER INTERFACE OBJECT
</h4>
5876 <p>The user interface object at the very least consists of a pointer to a
5877 window and pointers to all the widgets in the window. Using
5878 Cinelerra's toolkit, it consists of a
<b>BCWindow
</b> derivative and a
5879 <b>Thread
</b> derivative. The Thread derivative is declared in the plugin
5882 <pre class=
"example"> PLUGIN_THREAD_HEADER(plugin_class, thread_class, window_class)
5885 <p>Then it is defined using
5887 <pre class=
"example"> PLUGIN_THREAD_OBJECT(plugin_class, thread_class, window_class)
5890 <p>This, in combination with the SHOW_GUI macro does all the work in
5891 instantiating the Window. This two class system is used in realtime
5892 plugins but not in nonrealtime plugins. Nonrealtime plugins create and
5893 destroy their GUI in their
<b>get_parameters
</b> function and there's no
5896 <p>Now the window class must be declared in the plugin header. It's
5897 easiest to implement the window by copying an existing plugin and
5898 renaming the symbols. The following is an outline of what happens.
5899 The plugin header must declare the window's constructor using the
5900 appropriate arguments.
5902 <pre class=
"example">
5903 #include
"guicast.h"
5905 class MyPluginWindow : public BC_Window
5908 MyPluginWindow(MyPluginMain *plugin, int x, int y);
5912 <p>This becomes a window on the screen, positioned at x and y.
5914 <p>It needs two methods
5916 <pre class=
"example"> int create_objects();
5920 <p>and a back pointer to the plugin
5922 <pre class=
"example"> MyPlugin *plugin;
5925 <p>The constructor's definition should contain extents and flags causing
5926 the window to be hidden when first created. The create_objects member
5927 puts widgets in the window according to GuiCast's syntax. A pointer to
5928 each widget which you want to synchronize to a configuration parameter
5929 is stored in the window class. These are updated in the
<b>update_gui
</b>
5930 function you earlier defined for the plugin. The widgets are usually
5931 derivatives of a GuiCast widget and they override functions in GuiCast
5932 to handle events. Finally create_objects calls
5934 <pre class=
"example"> show_window();
5938 <p>to make the window appear all at once.
5940 <p>The close_event member should be implemented using
5942 <pre class=
"example"> WINDOW_CLOSE_EVENT(window_class)
5945 <p>Every widget in the GUI needs to detect when its value changes. In
5946 GuiCast the
<b>handle_event
</b> method is called whenever the value
5947 changes. In
<b>handle_event
</b>, the widget then needs to call
5948 <b>plugin-
>send_configure_change()
</b> to propogate the change to any
5949 copies of the plugin which are processing data.
5953 Node:
<a name=
"REALTIME%20PLUGINS">REALTIME PLUGINS
</a>,
5954 Next:
<a rel=
"next" accesskey=
"n" href=
"#NONREALTIME%20PLUGINS">NONREALTIME PLUGINS
</a>,
5955 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#COMMON%20PLUGIN%20FUNCTIONS">COMMON PLUGIN FUNCTIONS
</a>,
5956 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>
5960 <h3 class=
"section">REALTIME PLUGINS
</h3>
5962 <p>Realtime plugins should use PLUGIN_CLASS_MEMBERS to define the basic
5963 set of members in their headers. All realtime plugins must define an
5965 <pre class=
"example"> int is_realtime()
5968 <p>member returning
1. This causes a number of methods to be called
5969 during live playback and the plugin to be usable on the timeline.
5971 <p>Realtime plugins must override a member called
5973 <pre class=
"example"> process_buffer
5976 <p>This function takes different arguments depending on if the plugin
5977 handles video or audio. See an existing plugin to find out which usage
5980 <p>The main features of the process_buffer function are a buffer to store
5981 the output, the starting position of the output, and the requested
5982 output rate. For audio, there's also a size argument for the number of
5985 <p>The starting position of the output buffer is the lowest numbered
5986 sample on the timeline if playback is forward and the highest numbered
5987 sample on the timeline if playback is reverse. The direction of
5988 playback is determined by one of the plugin queries described below.
5990 <p>The position and size arguments are all relative to the frame rate and
5991 sample rate passed to process_buffer. This is the requested data rate
5992 and may not be the same as the project data rate.
5994 <p>The process_realtime function should start by calling
5995 <b>load_configuration
</b>. The LOAD_CONFIGURATION_MACRO returns
1 if the
5996 configuration changed.
5998 <p>After determining the plugin's configuration, input media has to be
5999 loaded for processing. Call
6001 <pre class=
"example"> read_frame(VFrame *buffer,
6003 int64_t start_position,
6009 <pre class=
"example"> read_samples(double *buffer,
6012 int64_t start_position,
6016 <p>to request input data from the object which comes before this plugin.
6017 The read function needs a buffer to store the input data in. This can
6018 either be a temporary you create in the plugin or the output buffer
6019 supplied to process_buffer if you don't need a temporary.
6021 <p>It also needs a set of position arguments to determine when you want to
6022 read the data from. The start position, rate, and len passed to a read
6023 function need not be the same as the values recieved by the
6024 process_buffer function. This way plugins can read data at a different
6025 rate than they output data.
6027 <p>The channel argument is only meaningful if this is a multichannel
6028 plugin. They need to read data for each track in the
6029 get_total_buffers() value and process all the tracks. Single channel
6030 plugins should pass
0 for channel.
6032 <p>Additional members are implemented to maintain configuration in
6033 realtime plugins. Some of these are also needed in nonrealtime
6037 <li>void read_data(KeyFrame *keyframe);
6039 <p>Loads data from a keyframe into the plugin's configuration. Inside the
6040 keyframe is an XML string. It's most easily parsed by creating a
6041 <em>FileXML
</em> object. See an existing plugin to see how the read_data
6042 function is implemented.
6044 <p>Read data loads data out of the XML object and stores values in the
6045 plugin's configuration object. Since configuration objects vary from
6046 plugin to plugin, these functions can't be automated.
6048 </p><li>void save_data(KeyFrame *keyframe);
6050 <p>Saves data from the plugin's configuration to a keyframe. Inside the
6051 keyframe you'll put an XML string which is normally created by a
6052 FileXML object. See an existing plugin to see how the save_data
6053 function is implemented.
6055 <p>Save data saves data from the plugin's configuration object into the
6058 </p><li>int load_defaults();
6060 <p>Another way the plugin gets parameters is from a defaults file. The
6061 load and save defaults routines use a Defaults object to parse the
6062 defaults file. The defaults object is created in
<b>load_defaults
</b> and
6063 destroyed in the plugin's destructor. See an existing plugin to see
6064 how the Defaults object is used.
6066 </p><li>int save_defaults();
6068 <p>Saves the configuration in the defaults object.
6074 Node:
<a name=
"NONREALTIME%20PLUGINS">NONREALTIME PLUGINS
</a>,
6075 Next:
<a rel=
"next" accesskey=
"n" href=
"#AUDIO%20PLUGINS">AUDIO PLUGINS
</a>,
6076 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#REALTIME%20PLUGINS">REALTIME PLUGINS
</a>,
6077 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>
6081 <h3 class=
"section">NONREALTIME PLUGINS
</h3>
6083 <p>Some references for non-realtime plugins are
<b>Normalize
</b> for audio
6084 and
<b>Reframe
</b> for video.
6086 <p>Like realtime plugins,
<b>load_defaults
</b> and
<b>save_defaults
</b> must be
6087 implemented. In nonrealtime plugins, these are not just used for
6088 default parameters but to transfer values from the user interface to
6089 the signal processor. There doesn't need to be a configuration class
6090 in nonrealtime plugins.
6092 <p>Unlike realtime plugins, the LOAD_CONFIGURATION_MACRO can't be used in
6093 the plugin header. Instead, the following methods must be defined.
6095 <p>The nonrealtime plugin should contain a pointer to a defaults object.
6097 <pre class=
"example">
6102 <p>It should also have a pointer to a MainProgressBar.
6104 <pre class=
"example">
6105 MainProgressBar *progress;
6108 <p>The progress pointer allows nonrealtime plugins to display their
6109 progress in Cinelerra's main window.
6111 <p>The constructor for a nonrealtime plugin can't use
6112 PLUGIN_CONSTRUCTOR_MACRO but must call
<b>load_defaults
</b> directly.
6114 <p>The destructor, likewise, must call
<b>save_defaults
</b> and
<b>delete
6115 defaults
</b> directly instead of PLUGIN_DESTRUCTOR_MACRO.
6119 <li>VFrame* new_picon();
6121 <p>char* plugin_title();
6123 <p>The usage of these is the same as realtime plugins.
6125 </p><li>int is_realtime();
6127 <p>This function must return
0 to indicate a nonrealtime plugin.
6130 int get_parameters();
6132 <p>Here, the user should create a GUI, wait for the user to hit an OK
6133 button or a cancel button, and store the parameters in plugin
6134 variables. This routine must return
0 for success and
1 for failure.
6135 This way the user can cancel the effect from the GUI.
6137 <p>Unlike the realtime plugin, this GUI need not run asynchronously of the
6138 plugin. It should block the get_parameters function until the user
6139 selects OK or Cancel.
6141 </p><li>int load_defaults();
6143 <p>This should create a defaults object and load parameters from the
6144 defaults object into plugin variables.
6146 </p><li>int save_defaults();
6148 <p>This should save plugin variables to the defaults object.
6150 </p><li>int start_loop();
6152 <p>If
<b>get_parameters
</b> returned
0 for success, this is called once to
6153 give the plugin a chance to initialize processing. The plugin should
6154 instantiate the progress object with a line like
6156 <pre class=
"example">
6157 progress = start_progress(
"MyPlugin progress...",
6158 PluginClient::get_total_len());
6162 <p>The usage of
<b>start_progress
</b> depends on whether the plugin is
6163 multichannel or single channel. If it's multichannel you always call
6164 start_progress. If it's single channel, you first need to know whether
6165 the progress bar has already started in another instance of the plugin.
6167 <p>If
<b>PluginClient::interactive
</b> is
1, you need to start the progress
6168 bar. If it's
0, the progress bar has already been started.
6170 <p>The PluginClient defines
<b>get_total_len()
</b> and
<b>get_source_start()
</b>
6171 to describe the timeline range to be processed. The units are either
6172 samples or frames and in the project rate.
6174 </p><li>int process_loop
6176 <p>This is called repeatedly until the timeline range is processed. It
6177 has either a samples or frames buffer for output and a reference to
6178 write_length to store the number of samples processed. If this is an
6179 audio plugin, the user needs to call
<b>get_buffer_size()
</b> to know how
6180 many samples the output buffer can hold.
6182 <p>The plugin must use
<b>read_samples
</b> or
<b>read_frame
</b> to read the
6183 input. These functions are a bit different for a non realtime plugin
6184 than they are for a realtime plugin.
6186 <p>They take a buffer and a position relative to the start of the
6187 timeline, in the timeline's rate. Then you must process it and put the
6188 output in the buffer argument to process_loop. write_length should
6189 contain the number of samples generated if it's audio.
6191 <p>Finally, process_loop must test
<b>PluginClient::interactive
</b> and
6192 update the progress bar if it's
1.
6194 <pre class=
"example"> progress-
>update(total_written);
6197 <p>returns
1 or
0 if the progress bar was cancelled. If it's
1,
6198 process_loop should return
1 to indicate a cancellation. In addition
6199 to progress bar cancellation,
<b>process_loop
</b> should return
1 when the
6200 entire timeline range is processed.
6202 </p><li>int stop_loop();
6204 <p>This is called after process_loop processes its last buffer.
6206 <p>If PluginClient::is_interactive is
1, this should call
6207 <b>stop_progress
</b> in the progress bar pointer and delete the pointer.
6208 Then it should delete any objects it created for processing in
6215 Node:
<a name=
"AUDIO%20PLUGINS">AUDIO PLUGINS
</a>,
6216 Next:
<a rel=
"next" accesskey=
"n" href=
"#VIDEO%20PLUGINS">VIDEO PLUGINS
</a>,
6217 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#NONREALTIME%20PLUGINS">NONREALTIME PLUGINS
</a>,
6218 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>
6222 <h3 class=
"section">AUDIO PLUGINS
</h3>
6224 <p>The simplest audio plugin is Gain. The processing object should
6225 include
<b>pluginaclient.h
</b> and inherit from
<b>PluginAClient
</b>. Realtime audio plugins need to
6228 <pre class=
"example"> int process_buffer(int64_t size,
6230 int64_t start_position,
6234 <p>if it's multichannel or
6236 <pre class=
"example"> int process_buffer(int64_t size,
6238 int64_t start_position,
6242 <p>if it's single channel. These should return
0 on success and
1 on
6243 failure. In the future, the return value may abort failed rendering.
6245 <p>The processing function needs to request input samples with
6247 <pre class=
"example"> int read_samples(double *buffer,
6250 int64_t start_position,
6254 <p>It always returns
0. The user may specify any desired sample rate and
6257 <p>Nonrealtime audio plugins need to define
6259 <pre class=
"example"> int process_loop(double *buffer, int64_t
&write_length);
6262 <p>for single channel or
6264 <pre class=
"example"> int process_loop(double **buffers, int64_t
&write_length);
6267 <p>for multi channel. Non realtime plugins use a different set of
6268 read_samples functions to request input data. These are fixed to the
6269 project sample rate.
6273 Node:
<a name=
"VIDEO%20PLUGINS">VIDEO PLUGINS
</a>,
6274 Next:
<a rel=
"next" accesskey=
"n" href=
"#TRANSITION%20PLUGINS">TRANSITION PLUGINS
</a>,
6275 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#AUDIO%20PLUGINS">AUDIO PLUGINS
</a>,
6276 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>
6280 <h3 class=
"section">VIDEO PLUGINS
</h3>
6282 <p>The simplest video plugin is Flip. The processing object should
6283 include
<b>pluginvclient.h
</b> and inherit from
<b>PluginVClient
</b>.
6284 Realtime video plugins need to define
6286 <pre class=
"example"> int process_buffer(VFrame **frame,
6287 int64_t start_position,
6291 <p>if it's multichannel or
6293 <pre class=
"example"> int process_buffer(VFrame *frame,
6294 int64_t start_position,
6298 <p>if it's single channel.
6300 <p>The nonrealtime video plugins need to define
6302 <pre class=
"example"> int process_loop(VFrame *buffer);
6305 <p>for single channel or
6307 <pre class=
"example"> int process_loop(VFrame **buffers);
6310 <p>for multi channel. The amount of frames generated in a single
6311 process_loop is always assumed to be
1, hence the lack of a
6312 write_length argument. Returning
0 causes the rendering to continue.
6313 Returning
1 causes the rendering to abort.
6315 <p>A set of read_frame functions exist for requesting input frames in
6316 non-realtime video plugins. These are fixed to the project frame rate.
6320 Node:
<a name=
"TRANSITION%20PLUGINS">TRANSITION PLUGINS
</a>,
6321 Next:
<a rel=
"next" accesskey=
"n" href=
"#PLUGIN%20GUI'S%20WHICH%20UPDATE%20DURING%20PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK
</a>,
6322 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#VIDEO%20PLUGINS">VIDEO PLUGINS
</a>,
6323 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>
6327 <h3 class=
"section">TRANSITION PLUGINS
</h3>
6329 <p>The simplest video transition is
<b>wipe
</b> and the simplest audio
6330 transition is
<b>crossfade
</b>. These use a subset of the default class
6331 members of realtime plugins, but so far no analogue to
6332 PLUGIN_CLASS_MEMBERS has been done for transitions.
6334 <p>The processing object for audio transitions still inherits from
6335 PluginAClient and for video transitions it still inherits from
6338 <p>Transitions may or may not have a GUI. If they have a GUI, they must
6339 also manage a thread like realtime plugins. Do this with the same
6340 PLUGIN_THREAD_OBJECT and PLUGIN_THREAD_HEADER macros as realtime
6341 plugins. Since there is only one keyframe in a transition, you don't
6342 need to worry about updating the GUI from the processing object like
6343 you do in a realtime plugin.
6345 <p>If the transition has a GUI, you can use PLUGIN_CONSTRUCTOR_MACRO and
6346 PLUGIN_DESTRUCTOR_MACRO to initialize the processing object. You'll
6347 also need a Defaults object and a Thread object for these macros.
6349 <p>Since the GUI is optional, overwrite a function called
<b>uses_gui()
</b>
6350 to signifiy whether or not the transition has a GUI. Return
1 if it
6351 does and
0 if it doesn't.
6353 <p>Transitions need a
<b>load_defaults
</b> and
<b>save_defaults
</b> function so
6354 the first time they're dropped on the timeline they'll have useful
6357 <p>A
<b>read_data
</b> and
<b>save_data
</b> function takes over after insertion
6358 to access data specific to each instance of the transition.
6360 <p>The most important difference between transitions and realtime plugins
6361 is the addition of an
<b>is_transition
</b> method to the processing
6362 object.
<b>is_transition
</b> should return
1 to signify the plugin is a
6365 <p>Transitions process data in a
<b>process_realtime
</b> function.
6367 <pre class=
"example"> int process_realtime(VFrame *input,
6371 <pre class=
"example"> int process_realtime(int64_t size,
6373 double *output_ptr);
6376 <p>The input argument to process_realtime is the data for the next edit.
6377 The output argument to process_realtime is the data for the previous
6380 <p>Routines exist for determining where you are relative to the
6381 transition's start and end.
6385 <li><b>PluginClient::get_source_position()
</b> - returns the current
6386 position since the start of the transition of the lowest sample in the
6389 <li><b>PluginClient::get_total_len()
</b> - returns the integer length of
6390 the transition. The units are either samples or frames, in the data
6391 rate requested by the first plugin.
6395 <p>Users should divide the source position by total length to get the
6396 fraction of the transition the current
<b>process_realtime
</b> function is
6399 <p>Transitions run in the data rate requested by the first plugin in the
6400 track. This may be different than the project data rate. Since
6401 process_realtime lacks a rate argument, use
<b>get_framerate()
</b> or
6402 <b>get_samplerate
</b> to get the requested rate.
6406 Node:
<a name=
"PLUGIN%20GUI'S%20WHICH%20UPDATE%20DURING%20PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK
</a>,
6407 Next:
<a rel=
"next" accesskey=
"n" href=
"#PLUGIN%20QUERIES">PLUGIN QUERIES
</a>,
6408 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#TRANSITION%20PLUGINS">TRANSITION PLUGINS
</a>,
6409 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>
6413 <h3 class=
"section">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK
</h3>
6415 <p>Effects like
<b>Histogram
</b> and
<b>VideoScope
</b> need to update the GUI
6416 during playback to display information about the signal. This is
6417 achieved with the
<b>send_render_gui
</b> and
<b>render_gui
</b> methods.
6418 Normally in process_buffer, when the processing object wants to update
6419 the GUI it should call
<b>send_render_gui
</b>. This should only be called
6420 in process_buffer. Send_render_gui goes through a search and
6421 eventually calls
<b>render_gui
</b> in the GUI instance of the plugin.
6423 <p>Render_gui should have a sequence like
6425 <pre class=
"example"> void MyPlugin::render_gui(void *data)
6429 thread-
>window-
>lock_window();
6433 thread-
>window-
>unlock_window();
6439 <p>Send_render_gui and render_gui use one argument, a void pointer to
6440 transfer information from the processing object to the GUI. The user
6441 should typecast this pointer into something useful.
6445 Node:
<a name=
"PLUGIN%20QUERIES">PLUGIN QUERIES
</a>,
6446 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#PLUGIN%20GUI'S%20WHICH%20UPDATE%20DURING%20PLAYBACK">PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK
</a>,
6447 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>
6451 <h3 class=
"section">PLUGIN QUERIES
</h3>
6453 <p>There are several useful queries in PluginClient which can be accessed
6454 from the processing object. Some of them have different meaning in
6455 realtime and non-realtime mode. They all give information about the
6456 operating system or the project which can be used to improve the
6457 quality of the processing.
6460 <li><a accesskey=
"1" href=
"#SYSTEM%20QUERIES">SYSTEM QUERIES
</a>: Utilities for determining the system resources.
6461 <li><a accesskey=
"2" href=
"#TIMING%20QUERIES">TIMING QUERIES
</a>: Utilities for performing time-dependant processing.
6466 Node:
<a name=
"SYSTEM%20QUERIES">SYSTEM QUERIES
</a>,
6467 Next:
<a rel=
"next" accesskey=
"n" href=
"#TIMING%20QUERIES">TIMING QUERIES
</a>,
6468 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLUGIN%20QUERIES">PLUGIN QUERIES
</a>
6472 <h3 class=
"subsection">SYSTEM QUERIES
</h4>
6477 <b>get_interpolation_type()
</b> returns the type of interpolation the user
6478 wants for all scaling operations. This is a macro from
6479 overlayframe.inc. It can be applied to any call to the
6480 <b>OverlayFrame
</b> object.
6483 <b>get_project_smp()
</b> Gives the number of CPU's on the system minus
1.
6484 If it's a uniprocessor it's
0. If it's a dual processor, it's
1. This
6485 number should be used to gain parallelism.
6488 <b>get_total_buffers()
</b> Gives the number of tracks a multichannel
6489 plugin needs to process.
6495 Node:
<a name=
"TIMING%20QUERIES">TIMING QUERIES
</a>,
6496 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#SYSTEM%20QUERIES">SYSTEM QUERIES
</a>,
6497 Up:
<a rel=
"up" accesskey=
"u" href=
"#PLUGIN%20QUERIES">PLUGIN QUERIES
</a>
6501 <h3 class=
"subsection">TIMING QUERIES
</h4>
6503 <p>There are two rates for media a realtime plugin has to be aware of: the
6504 project rate and the requested rate. Functions are provided for
6505 getting the project and requested rate. In addition, doing time
6506 dependant effects requires using several functions which tell where you
6511 <b>get_project_framerate()
</b> Gives the frames per second of the video as
6512 defined by the project settings.
6515 <b>get_project_samplerate()
</b> Gives the samples per second of the audio as
6516 defined by the project settings.
6519 <b>get_framerate()
</b> Gives the frames per second requested by the plugin
6520 after this one. This is the requested frame rate and is the same as
6521 the frame_rate argument to process_buffer.
6524 <b>get_samplerate()
</b> Gives the samples per second requested by the plugin
6525 after this one. This is the requested sample rate and is the same as
6526 the sample_rate argument to process_buffer.
6529 <b>get_total_len()
</b> Gives the number of samples or frames in the
6530 range covered by the effect, relative to the requested data rate.
6533 <b>get_source_start()
</b> For realtime plugins it gives the lowest sample
6534 or frame in the effect range in the requested data rate. For
6535 nonrealtime plugins it's the start of the range of the timeline to
6539 <b>get_source_position()
</b> For realtime plugins it's the lowest numbered
6540 sample in the requested region to process if playing forward and the
6541 highest numbered sample in the region if playing backward. For video
6542 it's the start of the frame if playing forward and the end of the frame
6543 if playing in reverse. The position is relative to the start of the
6544 EDL and in the requested data rate.
6546 <p>For transitions this is always the lowest numbered sample of the region
6547 to process relative to the start of the transition.
6550 <b>get_direction()
</b> Gives the direction of the current playback
6551 operation. This is a macro defined in transportque.inc. This is
6552 useful for calling read functions since the read functions position
6553 themselves at the start or end of the region to read, depending on the
6557 <b>local_to_edl()
</b>
6560 <b>edl_to_local()
</b>
6562 <p>These convert between the requested data rate and the project data
6563 rate. They are used to convert keyframe positions into numbers which
6564 can be interpolated at the requested data rate. The conversion is
6565 automatically based on frame rate or sample rate depending on the type
6568 </p><li><b>get_prev_keyframe(int64_t position, int is_local)
</b>
6570 <li><b>get_next_keyframe(int64_t position, int is_local)
</b>
6572 <p>These give the nearest keyframe before or after the position given.
6573 The macro defined version of load_configuration automatically retrieves
6574 the right keyframes but you may want to do this on your own.
6576 <p>The position argument can be either in the project rate or the
6577 requested rate. Set is_local to
1 if it's in the requested rate and
0
6578 if it's in the project rate.
6580 <p>In each keyframe, another position value tells the keyframe's position
6581 relative to the start of the timeline and in the project rate.
6583 <p>The only way to get smooth interpolation between keyframes is to
6584 convert the positions in the keyframe objects to the requested rate.
6585 Do this by using edl_to_local on the keyframe positions.
6591 Node:
<a name=
"KEYBOARD%20SHORTCUTS">KEYBOARD SHORTCUTS
</a>,
6592 Previous:
<a rel=
"previous" accesskey=
"p" href=
"#PLUGIN%20AUTHORING">PLUGIN AUTHORING
</a>,
6593 Up:
<a rel=
"up" accesskey=
"u" href=
"#Top">Top
</a>
6597 <h2 class=
"chapter">KEYBOARD SHORTCUTS
</h2>
6599 <p>Alex Ferrer started summarizing most of the keyboard shortcuts. Most
6600 of the keys work without any modifier like shift or ctrl. Most windows
6601 can be closed with a
<b>Ctrl-w
</b>. Most operations can be cancelled with
6602 <b>ESC
</b> and accepted with
<b>Enter
</b>.
6604 <h3 class=
"section">PROGRAM WINDOW
</h3>
6606 <h3 class=
"subsection">Editing Media
</h4>
6608 <pre class=
"example"> z Undo
6614 Shift Spc Paste Silence
6619 <h3 class=
"subsection">Editing Labels
& In/Out Points
</h4>
6621 <pre class=
"example"> [ Toggle In point
6623 l Toggle label at current position
6624 Ctrl
<- Go to Previous Label
6625 Ctrl -
> Go to Next Label
6626 f Fit display to selection
6629 <h3 class=
"subsection">Navigation
</h4>
6631 <pre class=
"example"> Right arrow Move right*
6632 Left arrow Move left*
6635 Ctrl Up Expand waveform amplitude
6636 Ctrl Dn Shrink waveform amplitude
6639 Ctrl Page Up Expand track height
6640 Ctrl Page Dn Shrink track height
6641 Home Go to beginning of timeline*
6642 End Go to end of timeline*
6646 <p>* You may have to click on the timeline to deactivate any text boxes or
6647 tumblers before these work.
6649 <h3 class=
"subsection">File operations
</h4>
6651 <pre class=
"example"> n New project
6658 Shift B Batch Render
6662 <h3 class=
"subsection">Key Frame Editing
</h4>
6664 <pre class=
"example">
6665 Shift X Cut keyframes
6666 Shift C Copy keyframes
6667 Shift V Paste keyframes
6668 Shift Del Clear keyframes
6669 Alt c Copy default keyframe
6670 Alt v Paste default keyframe
6674 <h3 class=
"subsection">Track Manipulation
</h4>
6676 <pre class=
"example">
6678 u Insert default Audio Transition
6679 Shift T Add Video Track
6680 Shift U Insert Default Video Transition
6682 Shift L Loop playback
6686 <h3 class=
"subsection">What's drawn on the timeline
</h4>
6688 <pre class=
"example">
6696 8 Projector keyframes
6704 <h3 class=
"section">VIEWER
& COMPOSITOR WINDOWS
</h3>
6706 <pre class=
"example">
6714 l Toggle label at current position
6715 Ctrl
<- Go to Previous Label
6716 Ctrl -
> Go to Next Label
6717 Home Go to beginning
6724 <h3 class=
"section">PLAYBACK TRANSPORT
</h3>
6726 <p>Transport controls work in any window which has a playback transport. They are
6727 accessed through the number pad with num lock disabled.
6729 <pre class=
"example"> 4 Frame back
5 Reverse Slow
6 Reverse + Reverse Fast
6730 1 Frame Forward
2 Forward Slow
3 Play Enter Fast Forward
6735 <p>[ Space bar ] is normal Play, Hitting any key twice is Pause.
6737 <h3 class=
"section">RECORD WINDOW
</h3>
6739 <pre class=
"example">
6740 Space Start and pause recording of the current batch
6741 l Toggle label at current position.