Merge branch 'ct' of git.pipapo.org:cinelerra-ct into ct
[cinelerra_cv/ct.git] / doc / cinelerra_cv_manual_en.texi
blob16263182481e7e76c8f9a57f0cb29f86306c6758
1 \input texinfo  @c -*-texinfo-*-
3 @c Cinelerra CV Manual - ENGLISH
4 @c Cinelerra Community Version website: http://cvs.cinelerra.org
5 @c Documentation coordinator: Nicolas MAUFRAIS - e.conti@gmx.net
7 @c Licence:
8 @c You may redistribute the Cinelerra CV manual and/or modify it under the terms
9 @c of the GNU General Public License, as published by the Free Software
10 @c Foundation; either version 2 of the License, or (at your option) any later
11 @c version.
13 @setfilename cinelerra_cv_manual_en.info
14 @documentlanguage en
15 @documentencoding ISO-8859-1
16 @settitle Cinelerra CV Manual
17 @afourpaper
18 @set EDITION 1.49.EN
19 @set VERSION 2.1
21 @finalout
22 @titlepage
23 @title Cinelerra CV Manual
24 @subtitle @b{Non-linear video editor for GNU/Linux}
25 @subtitle Community Version @value{VERSION}
26 @subtitle Edition @value{EDITION}
27 @author Heroine Virtual Ltd
28 @author Cinelerra CV Team
29 @page
30 @vskip 0pt plus 1filll
31 Copyright @copyright{} 2003, 2004, 2005, 2006 Adam Williams - Heroine Virtual Ltd.
33 Copyright @copyright{} 2003, 2004, 2005, 2006, 2007 Cinelerra CV Team.@*
35 This manual is free; you can redistribute it and/or modify it under the terms
36 of the GNU General Public License as published by the Free Software Foundation;
37 either version 2 of the License, or (at your option) any later version.
39 This document is distributed in the hope that it will be useful, but WITHOUT
40 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
41 FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
43 You should have received a copy of the GNU General Public License along with
44 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
45 St, Fifth Floor, Boston, MA 02110, USA@.
46 @end titlepage
47 @headings off
48 @evenheading @thispage @| @| @thischapter
49 @oddheading @thischapter @| @| @thispage
51 @setchapternewpage odd
53 @contents
55 @ifnottex
56 @c cincvdoc_node_number_1
57 @node Top
58 @top
59 @end ifnottex
61 @menu
62 * Introduction::                      Cinelerra in brief.
63 * Installation::                      Making Cinelerra work on your system.
64 * Configuration::                     Adjusting the behavior of Cinelerra.
65 * Project attributes::                Changing the way the media is displayed.
66 * Loading and saving files::          Moving media between disk and Cinelerra.
67 * Program window::
68 * Editing::  
69 * Compositor window::
70 * Viewer window::
71 * Resources window::
72 * Sound level meters window::
73 * Transport controls::
74 * Timebar::
75 * Realtime effects::
76 * Rendered effects::
77 * Ladspa effects::
78 * Transitions::
79 * Keyframing::                        Making effects change over time.
80 * Capturing media::                   Moving media from the real world to disk.
81 * Rendering files::
82 * Tips::                              Unusual applications of Cinelerra to common problems.
83 * Troubleshooting::                   Problems with Cinelerra.
84 * Plugin authoring::                  How to write new effects.
85 * Keyboard shortcuts::                How to accelerate most commands with the keyboard.
86 * Copying::                           The GNU General Public License
87 @ifnotplaintext
88 @ifnothtml
89 @ifnotdocbook
90 * Index::                             A menu covering many topics.
91 @end ifnotdocbook
92 @end ifnothtml
93 @end ifnotplaintext
94 @end menu
96 @c cincvdoc_node_number_2
97 @node Introduction
98 @chapter Introduction
99 @cindex Introduction
101 @menu
102 * About Cinelerra::
103 * The two versions of Cinelerra::
104 * About this manual::
105 * Getting help::
106 * Tutorials::
107 * HOWTOs::
108 * Miscellaneous links::
109 @end menu
111 @c cincvdoc_node_number_3
112 @node About Cinelerra
113 @section About Cinelerra
114 @cindex About Cinelerra
115 @cindex Cinelerra, about
117 For years, some people have wanted a way to edit their audio and video in one
118 place as fluidly as writing text.  Cinelerra tries to be a single location for
119 all your audio and video editing needs.  All the recording, editing, and
120 playback are handled here.  It can be used as an audio player.  It can be used
121 to record audio or video.  It can even be used as a photo retoucher.
123 There are two types of moviegoers: producers who create new content and revisit it
124 for further refinement, and consumers who
125 want to acquire the content and watch it.  Cinelerra is not intended for
126 consumers.  Cinelerra has many features for uncompressed content, high
127 resolution processing, and compositing.  Producers need these features in order to 
128 retouch many generations of footage, which makes Cinelerra very complex.  
129 Consumers should consider other tools such as Avidemux (@uref{http://www.avidemux.org/}), 
130 Kino (@uref{http://kinodv.org/}) or Kdenlive (@uref{http://kdenlive.org/}).
132 @c cincvdoc_node_number_4
133 @node The two versions of Cinelerra
134 @section The two versions of Cinelerra
135 @cindex Cinelerra, the two versions of
137 There are two branches of Cinelerra.  One can be found at
138 @uref{http://www.heroinewarrior.com} and the other at
139 @uref{http://cvs.cinelerra.org}.  This documentation is focused on
140 @b{Cinelerra-CV (Community Version)}.
142 The official Cinelerra source code is developed "upstream" by Heroine Virtual, Ltd (HV).
143 HV shares its code base with a community version of Cinelerra (Cinelerra-CV), but does not
144 actively participate with the community of developers responsible for Cinelerra-CV.
145 HV likes to work on its own copy
146 of Cinelerra, releasing code on a periodic basis every 6 months or
149 Cinelerra-CV was founded by developers who wanted to extend the functionality
150 and fix bugs inherent in the HV code base.  They decided to develop Cinelerra
151 in a community fashion and not create a separate fork of the original HV code.
152 So, the Cinelerra CV code is very similar to the official release.  CV coders
153 apply bug fixes (@uref{http://bugs.cinelerra.org}), enhancements to the SVN and
154 compliance fixes.  Programmers occasionally send patches upstream.  In this
155 way, Cinelerra CV has a number of features that the official version does not.
157 Unlike other programs, the HV release can not be described as "stable".  After
158 HV's Cinelerra is released, there are often bugs or unusable new features.
159 When there is a new release, a CV member (j6t) merges HV's code with Cinelerra
160 CV code, taking the enhancements from HV and reformatting the CV code (white
161 spaces, function naming, directory naming) to be more similar to HV's with
162 slight changes to implementations.  After the merge, the latest Cinelerra CV
163 release is a little unstable as users find bugs.  Time permitting, the CV
164 programmers will address as many of these bugs as possible.  In this way,
165 Cinelerra CV can be seen as the community's attempt to stabilize HV's release.
167 As mentioned, the community adds new enhancements to the HV source.  Members
168 will comment on each other's implementations in order to create a more fully
169 functional and stable product.  Occasionally, HV will give feedback on
170 implementations that the members of the CV submit to it.  However, not all of
171 the enhancements that the community create make it upstream; for example, YUV
172 pipe rendering.
174 Given the above discussion, obtaining the SVN just before a merge will
175 generally be more stable than a post-merge CV version.  Be aware that existing
176 project description files, or Edit Decision Lists (discussed below), may not be
177 compatible with the newly merged CV version.  With any version of Cinelerra,
178 the task of finding bugs is relatively easy.  However, clearly and concisely
179 documenting these bugs for the community that fixes them is a task that we ask
180 of all users of the software.  The community is very responsive.  Please help
181 them by creating well-formed bug reports.  You may join our mailing list at
182 @uref{http://cvs.cinelerra.org}.
184 @c cincvdoc_node_number_5
185 @node About this manual
186 @section About this manual
187 @cindex Manual, about this
189 This manual edition is @value{EDITION}, for Cinelerra CV version
190 @value{VERSION}.  You may redistribute it and/or modify it under the terms of
191 the GNU General Public License, as published by the Free Software Foundation;
192 either version 2 of the License, or (at your option) any later version.
194 This manual originates from "Secrets of Cinelerra", an excellent primer written
195 by @w{Adam @sc{Williams}} from @w{@sc{Heroine Virtual Ltd}}.  In 2003 Alex
196 @sc{Ferrer} created a Wiki based on that manual and added many screenshots and 
197 topic descriptions.  At that time, Cinelerra CV still did not have its own manual 
198 and information regarding the Community Version of Cinelerra was scattered across 
199 the Internet (mailing-list, IRC, websites, wiki, etc).  In 2006, Nicolas @sc{Maufrais}
200 combined the original "Secrets of Cinelerra" with the contents from Alex @sc{Ferrer}'s 
201 Wiki into a unified document.
203 Cinelerra-CV documentation maintainers:@*
204 English: Nicolas @sc{Maufrais} (coordinator)@*
205 French: Jean-Luc @sc{Coulon}
207 Other contributors: Alexandre @sc{Bourget}, Kevin @sc{Brosius}, Carlos @sc{Davila}, 
208 Cillian @sc{de Roiste}, Rafael @sc{Diniz}, Pierre @sc{Dumuid}, Mike @sc{Edwards}, 
209 Martin @sc{Ellison}, Graham @sc{Evans}, Scott @sc{Frase}, Joe @sc{Friedrichsen}, 
210 Gus Gus, Terje @sc{Hanssen}, Mikko @sc{Huhtala}, Ben @sc{Jorden}, Nathan @sc{Kidd}, 
211 Marcin @sc{Kostur}, Joseph @sc{L.}, Valentina @sc{Messeri}, Sean @sc{Pappalardo},
212 Herman @sc{Robak}, Dana @sc{Rogers}, Jim @sc{Scott}, Andraz @sc{Tori}, Raffaella
213 @sc{Traniello}, Hermann @sc{Vosseler}
215 Thanks to the GNU project team, and particularly to Karl @sc{Berry}, maintainer
216 of GNU Texinfo, for the precious help he gave us during the elaboration of this
217 manual.
219 @itemize
220 @item To fetch the manual sources, install cogito and git-core on your computer 
221 and run:@*
222 @command{cg-clone git://scm.pipapo.org/cinelerra/nicolasm}
223 @item You can participate on editing this manual by making changes in the
224 Cinelerra-CV wiki:@*
225 @uref{http://cvs.cinelerra.org/docs/wiki/doku.php}
226 @end itemize
228 @ifnotplaintext
229 @ifnothtml
230 @ifnotdocbook
232 @b{Note:} This manual is intended to be duplex-printed.  Therefore, it is
233 normal in the PDF manual for some even pages to be left blank.
234 @end ifnotdocbook
235 @end ifnothtml
236 @end ifnotplaintext
238 @c cincvdoc_node_number_6
239 @node Getting help
240 @section Getting help
241 @cindex Getting help
242 @cindex Help, getting
244 Help can be found at:
245 @itemize @bullet
246 @item @b{IRC channel:} #cinelerra on Freenode
247 @item @b{Mailing list:} @uref{https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra}
248 @item @b{Cinelerra CV website:} @uref{http://cvs.cinelerra.org}
249 @end itemize
251 @c cincvdoc_node_number_327
252 @node Tutorials
253 @section Tutorials
254 @cindex Tutorials
256 Some Cinelerra tutorials are available on the internet:
257 @itemize @bullet
258 @item @b{Cinelerra Tutorial - Getting Started}, by Rob @sc{Fisher}@*
259 @uref{http://www.robfisher.net/video/cinelerra1.html}
260 @item @b{Cinelerra video tutorials}, by The Source - tutorials (talk and screencast) 
261 inside The Source Show@*
262 @uref{http://www.thesourceshow.org/node/11}@*
263 #1 is in Episode 6 "The Return Of The Pixel" from min 45 to min 60 (Introduction 
264   to Cinelerra and non linear editing, the 4 windows interface, project attributes, 
265   loading files).@*
266 #2 is in Episode 1 "The Filesystem Menace" from min 32 to min 54 (Arming tracks, 
267   sample zoom, selection boxes, two screen editing, cut and paste editing, adding 
268   and moving tracks, drag and drop editing, trimming, transitions). @*
269 #3 is in Episode 2 "Attack Of The Elephants (Dream)" from min 45 to 1:12 (Keyframes, 
270   camera and projector, masks, titles, effects). 
271 @item @b{Edicion de video bajo GNU/Linux (Cinelerra)}, in Spanish, by Gustavo 
272 I@~niguez @sc{Goya}@*
273 @uref{http://kutxa.homeunix.org/cinelerra}
274 @item @b{Guide d'utilisation de Cinelerra}, in French@*
275 @uref{http://www.funix.org/fr/linux/cinelerra.htm}
276 @item @b{Faire un montage video} French tutorial for beginners on Cinelerra HV,
277 by Laurent @sc{Bellegarde}@*
278 @uref{http://laurent.bellegarde.free.fr/lprod/tutoriels/tutoriel_cinelerra_niv1_debutant.pdf}
279 @item @b{Capturando e editando video usando Software Livre}, in Portuguese, by Rafael 
280 @sc{Diniz}@*
281 @uref{https://docs.indymedia.org/view/Sysadmin/Cinelerra}
282 @item @b{Tutorial Cinelerra}, in Portuguese, by Leo @sc{Germani}@*
283 @uref{http://www.estudiolivre.org/tiki-index.php?page=Cinelerra}
284 @end itemize
286 @c cincvdoc_node_number_358
287 @node HOWTOs
288 @section HOWTOs
289 @cindex HOWTOs
291 Some HOWTOs for specific needs are available on the internet:
292 @itemize @bullet
293 @item @b{Beginner's Guide to Exporting Video from Cinelerra}, by Scott @sc{Frase}@*
294 @uref{http://content.serveftp.net/video/renderTest/guideToCinExport.html}
295 @item @b{Capturing desktop screens in Cinelerra}, screencast by Scott @sc{Frase}@*
296 @uref{http://www.youtube.com/watch?v=MhaOgNQ0Bbc}
297 @item @b{HOWTO use the Chromakey (HSV) plugin}, by Jerome @sc{Cornet}@*
298 @uref{http://jcornet.free.fr/linux/chromakey.html}
299 @item @b{HOWTO make professional looking Scrolled Credits in Cinelerra}, by
300 David @sc{McNab}@*
301 @uref{http://www.freenet.org.nz/misc/cintitles/}
302 @item @b{Crear títulos diferentes con Cinelerra} in Spanish, by Gustavo 
303 I@~niguez @sc{Goya} - how to add effects to titles. With downloadable sample
304 projects.@* 
305 @uref{http://kutxa.homeunix.org/bloga/2007/08/13/crear-titulos-diferentes-con-cinelerra/#more-246}
306 @end itemize
308 @c cincvdoc_node_number_10
309 @node Miscellaneous links
310 @section Miscellaneous links
311 @cindex Miscellaneous links
313 Miscellaneous links:
314 @itemize @bullet
315 @item @b{What is Deinterlacing? Facts, solutions, examples}@*
316 @uref{http://www.100fps.com}
317 @item @b{MPEG-2 FAQ}@*
318 @uref{http://bmrc.berkeley.edu/frame/research/mpeg/mpeg2faq.html}
319 @item @b{"Exporting edited HD content back to the camcorder" (HDV related)}@*
320 @uref{http://dvinfo.net/conf/showthread.php?t=76674}
321 @item @b{A Quick Guide to Digital Video Resolution and Aspect Ratio Conversions}@*
322 @uref{http://lipas.uwasa.fi/~f76998/video/conversion}
323 @item @b{Colour specification and image coding}@*
324 @uref{http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html}
325 @item @b{lprod - Libre Production} a French Wiki full of resources for Open
326 Source video editing, especially for Cinelerra HV (among them an Ubuntu package)@*
327 @uref{http://fr.lprod.org/wiki/doku.php}
328 @end itemize
330 @c cincvdoc_node_number_7
331 @node Installation
332 @chapter Installation
334 @cindex Installation
335 This is the general contents of all Cinelerra packages.
337 @itemize @bullet
338 @item @b{Foreign language translations} - These go into
339 @file{/usr/share/locale}
340 @item @b{Cinelerra executable} - This goes into @file{/usr/bin}
341 @item @b{Cinelerra plugins} - These go into @file{/usr/lib/cinelerra} in 32 bit
342 systems and @file{/usr/lib64/cinelerra} in 64 bit systems.
343 @cindex Soundtest
344 @cindex Sound card buffer size
345 @item @b{soundtest} - Utility for determining sound card buffer size.
346 @cindex mplexlo
347 @item @b{mplexlo} - Multiplexing of MPEG elementary streams without
348 standards conformance but more efficiently.
349 @cindex mpeg3cat
350 @item @b{mpeg3cat} - Utility for reading an MPEG file from a certain
351 standard and outputting it to stdout.
352 @cindex mpeg3toc
353 @cindex mpeg3dump
354 @item @b{mpeg3toc, mpeg3cat, mpeg3dump} - Utilities for indexing and
355 reading MPEG files.
356 @cindex mpeg3peek
357 @item @b{mpeg3peek} - Utility for displaying the byte offset of a
358 frame in an MPEG file.
359 @end itemize
361 @menu
362 * Hardware requirements::
363 * Software requirements::
364 * Compiling Cinelerra CV::
365 * Running Cinelerra::
366 * Live CDs::
367 * Arch Linux::
368 * Ark Linux::
369 * Debian::
370 * Ubuntu::
371 * Gentoo::
372 * Fedora::
373 * Mandriva::
374 * Slackware::
375 * Suse::
376 * MacOSX::
377 @end menu
379 @c cincvdoc_node_number_8
380 @node Hardware requirements
381 @section Hardware requirements
382 @cindex Hardware requirements
383 @cindex Requirements, hardware
385 Cinelerra is demanding on all PC subsystems, as reading, decoding and playing
386 video can be quite taxing.  Thus, performance and usability of Cinelerra are
387 directly proportional to the video format (SVCD/DV/HDV/HD/etc) used and the CPU
388 and I/O bus speeds and video and memory bus architecture of your hardware.
389 Therefore, it stands to reason that a less powerful system will be sufficient
390 for users working with audio only or lower resolution video formats.  However,
391 that same system may slow down considerably when playing back a higher
392 resolution format, such as DV video.  Effects and several tracks of audio will
393 compound these problems.  Given these constraints, here are some suggestions
394 for running Cinelerra:
396 @itemize @bullet
397 @item @b{CPU speed}@*
398 At least 500 MHz CPU speed, anything less would be useless.  Dual-core and
399 SMP processors greatly improve Cinelerra speed.
400 @item @b{Memory}@*
401 When working with video, a large amount of free memory available can help speed
402 up operations by avoiding unnecessary disk swaps and keeping material ready
403 accessible.  Have at least 256 Megabytes of memory.  To really use Cinelerra for
404 higher resolution video formats and larger projects, greater than 1 Gb memory space
405 is suggested.
406 @item @b{Storage}@*
407 Video editing can be quite I/O intensive.  Storage requirements are based on
408 your particular video editing needs.  If you expect to produce long pieces in
409 uncompressed or larger resolution formats, you should have large (>200 Gb) and
410 fast (<10ms) disk drives.  For example, DV uses about 3.5 Megs per second, or
411 12 Gigs per hour.  For smaller projects you might get away with 1 Gb.  RAID0
412 (stripe set), RAID1+0 (striped/mirrored) or RAID5 (stripe set with parity) will
413 also speed playback
414 @item @b{Video adapters}@*
415 Since version 2.1, Cinelerra benefits from OpenGL hardware
416 acceleration.  Make sure the video card you use supports OpenGL 2.0 in order to
417 benefit from that acceleration.  Nvidia series 7 (ie. 7600GS) are known to work
418 well.  Unfortunately, ATI's Linux drivers do not support a complete
419 implementation of OpenGL 2.0.  If you are going to send a composite signal
420 directly to a TV or video recorder, make sure your video card supports it.
421 @item @b{Multiple monitors}@*
422 You can use XFree86's Xinerama features to work on multiple monitor heads.
423 This feature can be a very effective way of increasing productivity.
424 @item @b{TV-Out}@*
425 If your Adapter supports a TV-Out option, connecting a TV or S-Video
426 monitor to it is a great way to view your material as it will be seen on TV
427 screen.
428 @item @b{Video grabbers}@*
429 If you have an analog video camera, or want to grab video from a trusty
430 old VCR, you need some sort of video grabber.  Video grabbers are supported
431 through Video4Linux in Cinelerra.
432 @item @b{Firewire}@*
433 Firewire is the fastest way to download material into your system.  Unless
434 you will be importing your media from a CD, any other
435 pre-captured format or use an analog video grabber, you will need firewire
436 on your system.
437 @item @b{DV cameras}@*
438 There is an large variety of DV cameras that can be used with Cinelerra.
439 Almost any camera that can connect using firewire will work.
440 Be sure to set the appropriate parameters on the video grabbing system to match
441 your particular camera.  @uref{http://www.linux1394.org} has a complete listing
442 of supported cameras.
443 @end itemize
445 @c cincvdoc_node_number_9
446 @node Software requirements
447 @section Software requirements
448 @cindex Software requirements
449 @cindex Requirements, software
451 To install Cinelerra you should have a current version of GNU/Linux with the X 
452 Window System (e.g., X.org) and some audio management software properly running.  
453 You should also have the following libraries installed (partial list):
454 @itemize @bullet
455 @item a52dec
456 @item dv
457 @item faac
458 @item ffmpeg
459 @item fftw
460 @item lame
461 @item libavc1394
462 @item libfaad2
463 @item libraw1394
464 @item mjpegtools
465 @item OpenEXR
466 @item theora
467 @item x264
468 @end itemize
470 You will also need the headers for all required libraries. For many distributions, 
471 this means that you will need to install the "-dev" or "devel" packages that 
472 correspond to your installed library packages. In addition to the libraries listed 
473 here, be sure you have the X library headers. Missing headers will usually result 
474 in compilation failing with cryptic error messages.
476 @c cincvdoc_node_number_11
477 @node Compiling Cinelerra CV
478 @section Compiling Cinelerra CV
479 @cindex Compiling Cinelerra CV
480 @cindex Cinelerra, compiling
482 @menu
483 * Usual compilation process::
484 * Compiling with debugging symbols::
485 @end menu
487 @c cincvdoc_node_number_12
488 @node Usual compilation process
489 @subsection Usual compilation process
490 @cindex Usual compilation process
492 You can install Cinelerra CV by fetching the source code and compiling it.  That 
493 is the method to use if you want to compile the most up-to-date version of 
494 Cinelerra CV.
496 The source code of Cinelerra-CV is available from a Subversion (SVN) repository. 
497 Subversion is available for download at @uref{http://subversion.tigris.org/}, but
498 most likely your distribution has prebuilt packages. Complete documentation of 
499 subversion is available at @uref{http://svnbook.red-bean.com/nightly/en/index.html}.
501 @enumerate 1
502 @item First you have to fetch Cinelerra CV's sources from the SVN repository 
503 (approximately 170Mb or 60Mb for a read-only checkout).  Run the following command:@*
504 @command{svn checkout svn://svn.skolelinux.org/cinelerra/trunk/hvirtual}@*
505 The svn command above will create in your current working directory a directory 
506 hvirtual that contains the sources.
508 @item Go to the hvirtual directory:@*
509 @command{cd hvirtual}
511 @item Create the @file{./configure} file by running:@*
512 @command{autoreconf -i --force}
514 @item Then run the @file{.configure} file:@*
515 @command{./configure --with-buildinfo=svn/recompile}@*
516 This option makes the revision number to be shown in the @b{About} tab of the 
517 @b{Preferences} window.
518 You can have a look at all the other options available by running:@*
519 @command{./configure --help}@*
520 Most of the missing dependencies should be listed after running.
522 @item And run make:@*
523 @command{make}@*
524 If you wish to log the make output in order to search for errors, this command 
525 can be used:@*
526 @command{make 2>&1 | tee logfile}
528 @item Finally, install Cinelerra CV:@*
529 @command{sudo make install}
530 @end enumerate
532 @b{Notes:}
533 @itemize @bullet
534 @item @b{SMP machine:}@*
535 If you compile Cinelerra CV on a multiprocessor machine (SMP), we recommend you
536 to add the @option{-j 3} option to make in order to benefit from the available
537 CPUs.
538 @item @b{For x86 CPUs only}:@*
539 You probably want to enable MMX support.  To do that, run @command{./configure}
540 with the @option{--enable-mmx} option.  If you do that, you may have to use the
541 @option{--without-pic} option too, otherwise, compilation may fail.
542 @item @b{For Pentium-M:}@*
543 Here are some useful compiler flags:@*
544 @command{./configure --prefix=/usr --enable-x86 --enable-mmx --enable-freetype2
545 --with-buildinfo=svn/recompile CFLAGS='-O3 -pipe -fomit-frame-pointer
546 -funroll-all-loops -falign-loops=2 -falign-jumps=2 -falign-functions=2
547 -ffast-math -march=pentium-m -mfpmath=sse,387 -mmmx -msse'}
548 @item @b{For 64bits:}@*
549 As root, run:@*
550 @command{./autogen.sh}@*
551 @command{./configure}@*
552 Replace @option{-prefer-non-pic} with @option{-fPIC \} in your @*
553 @file{quicktime/ffmpeg/libavcodec/i386/Makefile.am} file.@*
554 @command{make}@* 
555 @command{make install}@*
556 @item @b{Updating the source code:}@*
557 If you already fetched the sources of an out of date revision, you can update 
558 to the latest revision by running:@*
559 @command{svn update}@*
560 @item @b{Installing old revisions:}@*
561 If you wish to fetch an old revision, run:@*
562 @command{svn checkout -r <revision>
563 svn://svn.skolelinux.org/cinelerra/trunk/hvirtual}
564 @item @b{Installing several revisions:}@*
565 If you wish to install several revisions of Cinelerra CV on your computer,
566 create a @file{/usr/local_cinelerra} folder, and use the following options with
567 @command{./configure} (replace @option{xxx} by the number of the revision you
568 are compiling):@*
569 @option{--prefix=/usr/local_cinelerra/rxxx
570 --exec-prefix=/usr/local_cinelerra/rxxx --program-suffix=_rxxx}@*
571 You will have to run Cinelerra CV from the directory in which it is installed:@*
572 @command{cd /usr/local_cinelerra/rxxx}@*
573 @command{./cinelerra_rxxx}@*
574 If you install Cinelerra using this method, the translated @file{.po} files do
575 not get installed correctly.  If you want to run Cinelerra in another language, 
576 @xref{Environment variables}, for specific instructions.
577 @item @b{Automake version:}@*
578 You need automake version 1.7 to build.  1.4 will not work.  Autoconf 2.57 is
579 also required to build.
580 @end itemize
582 @c cincvdoc_node_number_13
583 @node Compiling with debugging symbols
584 @subsection Compiling with debugging symbols
585 @cindex Compiling with debugging symbols
586 @cindex Debugging symbols, compiling with
588 When Cinelerra CV crashes, one can compile it with debugging symbols and run it
589 inside gdb.  The information displayed by gdb is far more detailed and
590 will help CV developers find bugs faster.
592 First, fetch the SVN sources as usual.  Then, run the following commands:@*
593 @command{cd hvirtual}@*
594 @command{nice -19 autoreconf -i --force}@*
595 @command{mkdir ../hvdbg}@*
596 @command{cd ../hvdbg}@*
597 @command{nice -19 ../hvirtual/configure CXXFLAGS='-O0 -g' CFLAGS='-O0 -g'
598 --with-buildinfo=svn/recompile}@*
599 @command{cd quicktime/ffmpeg}@*
600 @command{nice -19 make CFLAGS='-O3'}@*
601 @command{cd ../..}@*
602 @command{nice -19 make}@*
603 @command{nice -19 make install}
605 @xref{Reporting bugs}, for information about running Cinelerra inside gdb.
607 @c cincvdoc_node_number_14
608 @node Running Cinelerra
609 @section Running Cinelerra
610 @cindex Cinelerra, running
612 The simplest way to run Cinelerra is by running @command{/usr/bin/cinelerra}@*
613 Command line options are also available by typing @command{cinelerra -h}  These
614 options are described in several sections below.  For rendering from the
615 command line @xref{Rendering files}.
617 If you get this error message when running Cinelerra for the first time:
618 @verbatim
619 WARNING:/proc/sys/kernel/shmmax is 0x2000000, which is too low
620 @end verbatim
621 @xref{Freeing more shared memory}, for details.
623 @c cincvdoc_node_number_19
624 @node Live CDs
625 @section Live CDs
626 @cindex Live CDs
628 You can try and use Cinelerra on a computer without having to install it on your 
629 system.  This is possible by using Live CDs, that are GNU/Linux distributions 
630 which boot from a CD, without installation on a hard drive.  Here are some of 
631 the Live CD's known to contain Cinelerra:
633 @itemize @bullet
634 @item @b{Knoppix} - the "original" Debian-based LiveDistro -
635 @uref{http://www.knoppix.org}
636 @item @b{dyne:bolic} - for multimedia production - uses Window Maker window
637 manager - @uref{http://www.dynebolic.org}
638 @item @b{Elive} - Debian based live CD using Enlightenment window manager -
639 @uref{http://www.elivecd.org}
640 @item @b{x-evian} - Debian based live CD for multimedia creations -
641 @uref{http://x-evian.org}
642 @item @b{Mediainlinux} - Knoppix based  - @uref{http://www.mediainlinux.org/}
643 @item @b{pho} (garbure) - dedicated to video editing -
644 @uref{http://garbure.org/pho/}   
645 @item @b{Slo-Tech} - based on Debian and Morphix -
646 @uref{http://linux.slo-tech.com}
647 @end itemize
649 @c cincvdoc_node_number_357
650 @node Arch Linux
651 @section Arch Linux
652 @cindex Arch Linux
654 Cinelerra CV is included in the Arch Linux community repository.@*
655 To install the @b{cinelerra} package enable the @b{community} repository first
656 (See @uref{http://wiki.archlinux.org/index.php/AUR_User_Guidelines} for more
657 info).@*
658 Then run the following command from the command line:@*
659 @command{pacman -Sy cinelerra-cv}
661 @c cincvdoc_node_number_89
662 @node Ark Linux
663 @section Ark Linux
664 @cindex Ark Linux
666 Cinelerra CV is included in the Ark Linux package repository. @*
667 To install the @b{cinelerra} package use the @b{Install Software} tool in Mission 
668 Control or run the following commands from a command line:@*
669 @command{apt-get update}@*
670 @command{apt-get install cinelerra}. 
672 @c cincvdoc_node_number_15
673 @node Debian
674 @section Debian
675 @cindex Debian
677 @menu
678 * Debian binaries::
679 * Debian prerequisites::
680 @end menu
682 @c cincvdoc_node_number_16
683 @node Debian binaries
684 @subsection Debian binaries
685 @cindex Binaries, Debian
687 Andraz @sc{Tori} maintains build rules for Debian Sid.  He also makes binary
688 .deb packages for Sid.  They are built from the unofficial SVN releases.
689 Debian Sid packages can be found here:
690 @itemize @bullet
691 @item @b{Apt source for i386:}@*
692 @command{@w{deb http://www.kiberpipa.org/~minmax/cinelerra/builds/sid/ ./}}
693 @item @b{Apt source for Pentium4 (optimized):}@*
694 @command{@w{deb http://www.kiberpipa.org/~minmax/cinelerra/builds/pentium4/ ./}}
695 @item @b{Apt source for Pentium-M (optimized):}@*
696 @command{@w{deb http://www.kiberpipa.org/~minmax/cinelerra/builds/pentiumm/ ./}}
697 @item @b{Apt source for AthlonXP (optimized):}@*
698 @command{@w{deb http://www.kiberpipa.org/~minmax/cinelerra/builds/athlonxp/ ./}}
699 @end itemize
701 Valentina @sc{Messeri} built also
702 @itemize @bullet
703 @item @b{Apt source for Opteron (AMD64) (optimized):}@*
704 @command{@w{deb http://giss.tv/~vale/debian64/ ./}}
705 @end itemize
707 @b{Note:} If Cinelerra produces the following error:@*
708 @command{cinelerra: relocation error: /usr/lib/libavcodec.so.0.4.8: undefined symbol: 
709 faacDecOpen}@*
710 You can solve the problem by entering the following command as root:@* 
711 @command{apt-get install --reinstall libfaad2-0=2.0.0-0.5} 
713 @c cincvdoc_node_number_17
714 @node Debian prerequisites
715 @subsection Debian prerequisites
716 @cindex Prerequisites, Debian
718 @b{Standard development packages}
720 These are packages which might be considered "standard" development pacakges. The chances are, though, 
721 that you wouldn't have them installed by default, so you will probably need them:
723 @itemize @bullet
724 @item libtool
725 @item nasm
726 @item x11proto-xf86vidmode-dev - needed if you get 
727 @command{error: X11/extensions/xf86vmode.h: No such file or directory}
728 @item libxv-dev - needed if you get 
729 @command{error: X11/extensions/Xvlib.h: No such file or directory}
730 @item libxxf86vm-dev - needed if you get 
731 @command{/usr/bin/ld: cannot find -lXxf86vm}
732 @end itemize
734 @b{Extra Debian packages}
736 These are devleopment packages which are "non-standard", and you'll almost certainly have to install them if 
737 you want to compile Cinelerra:
739 @itemize @bullet
740 @item libogg-dev
741 @item libvorbis-dev
742 @item libtheora-dev
743 @item libopenexr-dev
744 @item libdv-dev
745 @item libpng-dev
746 @item libjpeg62-dev
747 @item libtiff4-dev
748 @item libfreetype6-dev
749 @item libfaad-dev
750 @item libsndfile1-dev
751 @item uuid-dev
752 @end itemize
754 Some packages which may or may not be required: 
756 @itemize @bullet
757 @item libavutil-dev 
758 @item libmpeg3-dev
759 @item libavcodec-dev      
760 @end itemize
762 @b{External packages}
764 You need some prerequisites which are not found in Debian's official
765 repositories.  You should add in your @file{/etc/apt/sources.list} the following
766 line, which is Christian Marillat's repository:@*
767 @command{deb http://www.debian-multimedia.org/ sid main}
769 In order to use the mirror you need to add in your gpg keyring Marillat's
770 gpg-key:@*
771 @command{gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907}@*
772 @command{gpg --armor --export 1F41B907 | sudo apt-key add -}@*
773 If you do not use sudo, do the following under root:@*
774 @command{gpg --armor --export 1F41B907 | apt-key add -}
776 You will need to apt-get install the following packages:
778 @itemize @bullet
779 @item libx264-dev
780 @item libfaac-dev
781 @end itemize
783 @c cincvdoc_node_number_325
784 @node Ubuntu
785 @section Ubuntu
786 @cindex Ubuntu
788 @menu
789 * Ubuntu packages repositories::
790 * Instructions for Ubuntu packages installation::
791 @end menu
793 @c cincvdoc_node_number_354
794 @node Ubuntu packages repositories
795 @subsection Ubuntu packages repositories
796 @cindex Ubuntu packages repositories
798 @b{For Ubuntu 7.04 Feisty Fawn:}
800 @itemize @bullet
802 @item optimised for UbuntuStudio, with OpenGL, by Valentina @sc{Messeri}:
803 @verbatim
804 deb http://giss.tv/~vale/ubuntuopengl/ ./
805 @end verbatim
807 @item for AMD64 (and also Core Duo Intel64), by Valentina @sc{Messeri}:
808 @verbatim
809 deb http://giss.tv/~vale/ubuntu64 ./
810 @end verbatim
812 @item for 64 bits, with OpenGL disabled, by Valentina @sc{Messeri}:
813 @verbatim
814 deb http://giss.tv/~vale/ubuntu64NOopengl/ ./
815 @end verbatim
817 @item for i386, by muzzol:
818 @verbatim
819 deb http://www.kiberpipa.org/~muzzol/cinelerra/feisty-i386/ ./
820 @end verbatim
822 @item for i686, by Jure @sc{Cuhalev}:
823 @verbatim
824 deb http://www.kiberpipa.org/~gandalf/ubuntu/feisty/cinelerra/i686/ ./
825 @end verbatim
827 @item for athlonxp, by Jure @sc{Cuhalev}:
828 @verbatim
829 deb http://www.kiberpipa.org/~gandalf/ubuntu/feisty/cinelerra/athlonxp/ ./
830 @end verbatim
832 @item for pentium4, by Jure @sc{Cuhalev}:
833 @verbatim
834 deb http://www.kiberpipa.org/~gandalf/ubuntu/feisty/cinelerra/pentium4/ ./
835 @end verbatim
836 @end itemize
838 @b{For Ubuntu 6.10 Edgy Eft:}
840 @itemize @bullet
841 @item by muzzol
842 @verbatim
843 deb http://www.kiberpipa.org/~muzzol/cinelerra/edgy-i386/ ./
844 @end verbatim
846 @item by Valentina @sc{Messeri}:
847 @verbatim
848 deb http://giss.tv/~vale/ubuntu32 ./
849 @end verbatim
850 @end itemize
852 @b{For Ubuntu 6.06 Dapper Drake}
854 @itemize @bullet
855 @item necessary mjpegtools ubuntu backport, by Jure @sc{Cuhalev}:
856 @verbatim
857 deb http://www.kiberpipa.org/~gandalf/ubuntu/dapper/mjpegtools ./
858 @end verbatim
860 @item for pentium4, by Jure @sc{Cuhalev}:
861 @verbatim
862 deb http://www.kiberpipa.org/~gandalf/ubuntu/dapper/cinelerra/pentium4/ ./
863 @end verbatim
865 @item for i686, by Jure @sc{Cuhalev}:
866 @verbatim
867 deb http://www.kiberpipa.org/~gandalf/ubuntu/dapper/cinelerra/i686/ ./
868 @end verbatim
870 @item for athlonxp, by Jure @sc{Cuhalev}:
871 @verbatim
872 deb http://www.kiberpipa.org/~gandalf/ubuntu/dapper/cinelerra/athlonxp/ ./
873 @end verbatim
874 @end itemize
876 @c cincvdoc_node_number_355
877 @node Instructions for Ubuntu packages installation
878 @subsection Instructions for Ubuntu packages installation
879 @cindex Ubuntu packages installation
881 Chose a repository from the ones above according to your release and CPU type 
882 and install the package.@*
883 Here are 3 ways of doing that:
885 @b{With Synaptic Package Manager:}
887 Open the Software Sources Window. @*
888 You can do it in two ways: @*
889 - Go to System -> Administraton -> Software Sources@*
890 - Inside Synaptic Package Manager: Go to Settings -> Repositories. @*
891 Make sure you have universe, multiverse and restricted sources checked in the 
892 first tab.@*
893 Click on tab Third Party. Click on the Add button and enter your chosen repository. @*
894 Clicking Add Source will display the new repository enabled in the Software 
895 Sources window. @*
896 You should now see Cinelerra in the list of packages available in Synaptic. @*
897 Follow Synaptic instructions for installation.@*
899 @b{With the command line:}
901 Edit directly your @file{/etc/apt/sources.list} file.@*
902 Make sure you have universe, multiverse and restricted sources enabled by checking 
903 you have the following line uncommented: @*
904 @verbatim
905 deb http://archive.ubuntu.com/ubuntu dapper universe multiverse restricted
906 @end verbatim
907 Add the complete APT line of your chosen repository.@*
908 Install Cinelerra by typing in your terminal:@*
909 @verbatim
910 apt-get update
911 @end verbatim
912 and then 
913 @verbatim
914 apt-get install cinelerra
915 @end verbatim
917 @b{With GDebi Package Installer:}
919 Send Firefox to the web address of the repository @*
920 (e.g. http://www.kiberpipa.org/~muzzol/cinelerra/edgy-i386/.)@*
921 Click on the .deb link for your chosen Cinelerra package @*
922 (e.g. cinelerra_2.1.0+svn20070109-0ubuntu1_i386.deb)@*
923 A dialog window will ask you to confirm your intention to open this file with 
924 GDebi Package installer. @*
925 Clicking OK will start the download.@*
926 If during the process you get errors about not satisfiable dependencies, try 
927 installing the problematic library with the same method from the same webpage.
929 @b{HOWTOs for package installation or compilation from source code}@*
931 @itemize @bullet
932 @item Installation of Ubunty Feisty AMD64 Cinelerra package:@*
933 @uref{https://help.ubuntu.com/community/CinelerraOnFeistyAMD64}
935 @item Compilation from source code on Ubuntu 6.10 Edgy Eft:@*
936 @uref{http://www.ubuntuforums.org/showthread.php?t=320701&highlight=cinelerra}
938 @item Compilation from source code on Ubuntu Breezy:@*
939 @uref{http://placide.home.sapo.pt/cinelerra02.html}
941 @item Compilation from source code on Ubuntu Dapper Drake (for beginners, in 
942 Italian):@*
943 @uref{https://faberlibertatis.org/wiki/Cinelerra_CV_su_Ubuntu}
944 @end itemize
946 @c cincvdoc_node_number_18
947 @node Gentoo
948 @section Gentoo
949 @cindex Gentoo
951 Installation for Gentoo GNU/Linux is very straight forward. Simply type:
952 @verbatim
953 emerge cinelerra-cvs
954 @end verbatim
955 as root and it should install and run with no problems.  Note that you may need
956 to put cinelerra in your @file{/etc/portage/package.keywords} file in order to
957 use it:
958 @verbatim
959 echo "=media-video/cinelerra-cvs-20061020" >> /etc/portage/package.keywords
960 @end verbatim
962 See @uref{http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=3&chap=3} 
963 for details. 
965 @b{Note:} The Gentoo ebuild media-video/cinelerra-cvs-20061020 has no editing
966 modes icons.  @xref{Editing modes}, for more
967 information.
969 @c cincvdoc_node_number_326
970 @node Fedora
971 @section Fedora
972 @cindex Fedora
974 Cinelerra is included in the Freshrpms repository at
975 @uref{http://freshrpms.net}.  The easiest way to install packages from
976 Freshrpms is to include the repository in the @b{yum} configuration. Also make
977 sure that the Fedora Extras repository is enabled.  This is the case by default
978 on Fedora 5 and 6, and Core and Extras are merged into one on Fedora 7.
980 On Fedora 6, as the user root do:
981 @verbatim
982 rpm -ivh http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/6/\
983 freshrpms-release/freshrpms-release-1.1-1.fc.noarch.rpm
984 @end verbatim
986 On Fedora 5, do:
987 @verbatim
988 rpm -ivh http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/5/\
989 freshrpms-release/freshrpms-release-1.1-1.fc.noarch.rpm
990 @end verbatim
992 Then type:
993 @verbatim
994 yum -y install cinelerra
995 @end verbatim
996 to get and install Cinelerra and all the dependencies, including ffmpeg and
997 mjpegtools.  If it does not work, check the @file{/etc/yum.conf} file and make
998 sure that the Freshrpms config gets included from the @file{/etc/yum.repos.d}.
1000 @b{Notes:}
1001 @itemize @bullet
1002 @item The package collection of Freshrpms may overlap and/or conflict with
1003 other third-party repositories such as Livna, which may also carry
1004 audio and video libraries and Cinelerra.  It may be a good idea to stick with
1005 one repository and not mix packages from several different third-party
1006 repositories.
1007 @item The header files of the various libraries are needed for compiling
1008 Cinelerra from source. The header files are included in separate devel packages
1009 that are included in the Fedora and Freshrpms repositories and can be installed
1010 with yum. At least the following are required:@*
1011 OpenEXR-devel SDL-devel a52dec-devel alsa-lib-devel e2fsprogs-devel faac-devel
1012 faad2-devel ffmpeg-devel fftw-devel imlib2-devel lame-devel libXv-devel
1013 libXxf86vm-devel libavc1394-devel libdv-devel libiec61883-devel libogg-devel
1014 libraw1394-devel libsndfile-devel libtheora-devel libvorbis-devel
1015 mjpegtools-devel x264-devel xvidcore-devel
1016 @item If you want to compile Cinelerra from source on Fedora Core 6, detailed 
1017 instructions on how to install the necessary dependent files can be found at:
1018 @uref{http://crazedmuleproductions.blogspot.com@*
1019 /2007/03/fedora-core-6-cinelerra-dependencies.html}
1020 @end itemize
1022 @c cincvdoc_node_number_20
1023 @node Mandriva
1024 @section Mandriva
1025 @cindex Mandriva
1027 Cinelerra packages for Mandriva are made by PLF are ready to install.  Read
1028 @uref{http://plf.zarb.org/packages.php} for more information.
1030 @c cincvdoc_node_number_21
1031 @node Slackware
1032 @section Slackware
1033 @cindex Slackware
1035 Rafael @sc{Diniz} build Slackware packages for Cinelerra.
1037 @itemize @bullet
1038 @item @b{For x86:}@*
1039 @uref{http://slack.sarava.org/packages/slackware/slackware-11.0/multimedia/}
1040 @item @b{For slackintosh:}@*
1041 @uref{http://slack.sarava.org/packages/slackintosh/slackintosh-11.0/multimedia/}
1042 @end itemize
1044 @c cincvdoc_node_number_22
1045 @node Suse
1046 @section Suse
1047 @cindex Suse
1049 RPMs for SuSE 9 are built from SVN sources by Kevin @sc{Brosius}, and available at
1050 @uref{http://cin.kevb.net/files/RPM/}
1052 RPMs for OpenSUSE 10.1 and 10.2, architecture i586 and x86_64, are built from
1053 SVN by Leon @sc{Freitag} at Packman.  They are available at
1054 @uref{http://packman.links2linux.org/package/cinelerra/16413}.
1056 The RPM package(s) can be installed as root in a terminal using this command:
1057 @verbatim
1058 rpm -Uvh package_name.rpm
1059 @end verbatim
1061 The following installation case shows four screenshots for a GUI based
1062 Cinelerra SVN installation on OpenSUSE 10.2 i586 using YaST2.  First by adding
1063 packman's YaST2 repository as a YaST2 Installation source, and next the package
1064 installation with the YaST2 Software Manager. 
1066 Start the YaST Control center on OpenSUSE 10.2 and add the root password when
1067 requested:
1069 @center @image{manual_images_intl/yast2_control_center,100mm}
1071 Start the YaST2 installation source tool, select the HTTP protocol and add the
1072 servername for packman as shown.  Synchronization with Zenworks may take some
1073 time, wait until it is finished.
1075 @center @image{manual_images_intl/yast2_installation_source,120mm}
1077 Start the YaST2 Software Management.  Enter "Cinelerra" in the left search field
1078 and next check the checkboxes for the Cinelerra packages in the right window.
1079 If an older version of Cinelerra is installed on beforehand visible with a lock
1080 symbol, delete it, possibly try an update first.
1082 @center @image{manual_images_intl/yast2_cinelerra_installation,120mm}
1084 Click Accept to start the package installation and afterwards Next to finish.
1086 @center @image{manual_images_intl/yast2_package_installation,120mm}
1088 @c cincvdoc_node_number_23
1089 @node MacOSX
1090 @section MacOSX
1091 @cindex MacOSX
1093 FIXME
1095 @c cincvdoc_node_number_24
1096 @node Configuration
1097 @chapter Configuration
1098 @cindex Configuration
1100 Because of its flexibility, Cinelerra cannot be optimized without
1101 special configuration for your specific needs.  Unfortunately, very few parameters are
1102 adjustable at compile time.  Therefore, runtime configuration is the only option for most
1103 users because of the multitude of parameters available.@*
1104 Below are configuration options as well as the supported API's in GNU/Linux.@*
1105 In Cinelerra, go to @b{settings->preferences} to see the options.
1107 @menu
1108 * Environment variables::  These environment variables are recognized by Cinelerra
1109 * Audio drivers::          Information about the audio drivers
1110 * Video drivers::          Information about the video drivers
1111 * Playback::               Configuring parameters related to playback.
1112 * Recording::              Configuring parameters related to recording.
1113 * Performance::            Configuring parameters related to how fast things go.
1114 * Interface::              Configuring the user interface.
1115 * About::                  Viewing information about the program.
1116 @end menu
1118 @c cincvdoc_node_number_25
1119 @node Environment variables
1120 @section Environment variables
1121 @cindex Environment variables
1122 @cindex Variables, environment
1123 @cindex Ladspa, path
1125 In UNIX derivatives, environment variables are global variables in the shell
1126 which all applications can read.  They are set with a command like @command{set
1127 VARIABLE=value}.  All the environment variables can be viewed with a command
1128 like @command{env}.  Cinelerra recognizes the following environment variables:
1130 @itemize @bullet
1131 @item @b{LADSPA_PATH}@*
1132 If you want to use LADSPA plugins, this must be defined: a colon separated
1133 list of directories to search for LADSPA plugins.  These are not native
1134 Cinelerra plugins.  @xref{Ladspa effects}.
1136 @item @b{GLOBAL_PLUGIN_DIR}@*
1137 The directory in which Cinelerra should look for native plugins.  The default is
1138 @file{/usr/lib/cinelerra} but you may need an alternate directory if you share
1139 the same executable directory among many machines via NFS@.  Plugins of
1140 different binary formats need to be in different directories.
1142 @item @b{LANG and LANGUAGE}@*
1143 Cinelerra can be localized to display menus and messages in many languages.  
1144 Cinelerra language settings are normally read from your GNU/Linux language settings.  
1145 To run Cinelerra on a language different than the one selected on your system 
1146 just change the LANG and LANGUAGE environment variables.@*
1147 For example, open a shell and type: @command{export LANG=es_ES LANGUAGE=es_ES}, then run
1148 @command{cinelerra} from the same shell.  It will open set on the Spanish language.@*
1149 Available languages are:
1150 @itemize @bullet
1151 @item en_EN - English
1152 @item es_ES - Espanol
1153 @item sl_SI - Slovenian
1154 @item fr_FR - Francais
1155 @item eu_ES - Euskera
1156 @item de_DE - German
1157 @item pt_BR - Brazilian Portuguese
1158 @item it_IT - Italian
1159 @end itemize
1160 In some cases (e.g. if you compiled Cinelerra specifying a @option{--prefix=} option different from @file{/usr/local}) the translated .po files are not installed. If you can't run Cinelerra in your chosen language, try running the following commands before changing the LANG and LANGUAGE environment variables:@*
1161 @command{cd hvirtual}@*
1162 @command{./configure prefix=/usr}@*
1163 @command{cd po}@*
1164 @command{sudo make install}@*
1165 @end itemize
1167 @c cincvdoc_node_number_26
1168 @node Audio drivers
1169 @section Audio drivers
1170 @cindex Audio drivers
1171 @cindex Drivers, audio
1173 The audio drivers are used for both recording and playback.  Their
1174 functionality is described below:
1176 @menu
1177 * Sound driver attributes::
1178 * OSS:: Notes about the OSS driver
1179 * OSS Envy24:: Notes about the OSS driver for the Envy24 chip
1180 * Alsa:: Notes about the ALSA driver
1181 * Esound:: Notes about the ESound driver
1182 * Raw 1394:: Notes about the Raw1394 driver
1183 * DV 1394:: Notes about the DV1394 driver
1184 * IEC 61883:: Notes about the IEC 61883 driver
1185 @end menu
1187 @c cincvdoc_node_number_27
1188 @node Sound driver attributes
1189 @subsection Sound driver attributes
1190 @cindex Sound driver attributes
1192 @itemize @bullet
1193 @item @b{Device path} @*
1194 Usually a file in the @file{/dev/} directory which controls the device.
1196 @item @b{Bits}@*
1197 The number of bits of precision Cinelerra should set the device for.  This
1198 sometimes has a figurative meaning.  Some sound drivers need to be set to 32
1199 bits to perform 24 bit playback and will not play anything when set to 24 bits.
1200 Some sound drivers need to be set to 24 bits for 24 bit playback.
1202 @item @b{Port}@*
1203 The IEEE1394 standard specifies something known as the @b{port}.  This is
1204 probably the firewire card number.
1206 @item @b{Channel}@*
1207 The IEEE1394 standard specifies something known as the channel. For DV cameras
1208 it is always 63. 
1210 @item @b{Device}@*
1211 The chosen device.
1213 @item @b{Stop playback locks up}@*
1214 This ALSA only checkbox is needed if stopping playback causes the software to lock up.
1215 @end itemize
1217 @c cincvdoc_node_number_28
1218 @node OSS
1219 @subsection OSS
1220 @cindex OSS
1222 This was the first GNU/Linux sound driver.  It had an open source
1223 implementation and a commercial implementation with more sound cards supported.
1224 It was the standard sound driver up to GNU/Linux 2.4.  It still is the only
1225 sound driver which an i386 binary can use when running on an x86_64 system.
1227 @c cincvdoc_node_number_29
1228 @node OSS Envy24
1229 @subsection OSS Envy24
1230 @cindex OSS Envy24
1231 @cindex Envy24
1233 The commercial version of OSS had a variant for 24 bit 96 KHz soundcards.  This
1234 variant required significant changes to the way the sound drivers were used,
1235 hence the need for the new driver.
1237 @c cincvdoc_node_number_30
1238 @node Alsa
1239 @subsection Alsa
1240 @cindex Alsa
1242 ALSA is the most common sound driver in GNU/Linux 2.6.  It supports most
1243 of soundcards now.  It takes advantage of low latency features in GNU/Linux 2.6
1244 to get better performance than OSS had in 2.4, but roughly the same performance
1245 that OSS had in 2.0.  Unfortunately ALSA is constantly changing.  A program
1246 which works with it one day may not the next day.  New wrappers are being
1247 developed on top of ALSA.  We plan to support them at regular
1248 intervals, though not at every new release of a new wrapper.@*
1249 ALSA is no longer portable between i386 and x86_64.  If an i386 binary tries to
1250 play back on an x86_64 kernel, it will crash.  For this scenario, use OSS@.
1252 @c cincvdoc_node_number_31
1253 @node Esound
1254 @subsection Esound
1255 @cindex Esound
1257 ESOUND was a sound server that sat on top of OSS@.  It was written for a window
1258 manager called Enlightenment.  It supports a limited number of bits and has
1259 high latency compared to more modern drivers, but it does have the ability to 
1260 multiplex multiple audio sources. It is unknown whether it still works.
1262 @c cincvdoc_node_number_32
1263 @node Raw 1394
1264 @subsection Raw 1394
1265 @cindex Raw 1394
1267 The was the first interface between GNU/Linux software and firewire camcorders.
1268 It is the least reliable way to play audio to a camcorder and consists of
1269 a library on top of the kernel commands.
1271 @c cincvdoc_node_number_33
1272 @node DV 1394
1273 @subsection DV 1394
1274 @cindex DV 1394
1276 This is the second rewrite of DV camcorder support in GNU/Linux.  This is the most
1277 reliable way to play audio to a camcorder and consists of direct kernel
1278 commands.
1280 @c cincvdoc_node_number_34
1281 @node IEC 61883
1282 @subsection IEC 61883
1283 @cindex IEC 61883
1285 The third rewrite of DV camcorder support in GNU/Linux.  This is a library on
1286 top of RAW 1394 which is a library on top of the kernel commands.  It is less
1287 reliable than DV 1394 but more reliable than RAW 1394.  The next rewrite ought
1288 to fix that.  Visit @uref{http://www.linux1394.org} for more information and
1289 the latest drivers.
1291 @c cincvdoc_node_number_35
1292 @node Video drivers
1293 @section Video drivers
1294 @cindex Video drivers
1295 @cindex Drivers, video
1297 The video drivers are used for video playback in the compositor and the viewer.
1299 @menu
1300 * Video driver attributes::
1301 * X11::
1302 * X11-XV::
1303 * X11-OpenGL::
1304 * Buz::
1305 * Raw 1394 video playback::
1306 * DV 1394 video playback::
1307 * IEC 61883 video playback::
1308 @end menu
1310 @c cincvdoc_node_number_36
1311 @node Video driver attributes
1312 @subsection Video driver attributes
1313 @cindex Video driver attributes
1315 @itemize @bullet
1316 @item @b{Display}@*
1317 @cindex Dual monitor displays
1318 The interface is intended for dual monitor displays.  Depending on the value of
1319 Display, the Compositor window will appear on a different monitor from the rest
1320 of the windows.
1322 @item @b{Device path}@*
1323 Usually a file in the @file{/dev/} directory which controls the device.
1325 @item @b{Swap fields}@*
1326 Make the even lines odd and the odd lines even when sending to the device.  On
1327 an NTSC or 1080i monitor the fields may need to be swapped to prevent jittery
1328 motion.
1330 @item @b{Output channel}@*
1331 You may need a specific connector to send video out to devices with multiple outputs.
1333 @item @b{Port}@*
1334 The IEEE1394 standard specifies something known as the @b{port}.  This is
1335 probably the firewire card number.
1337 @item @b{Channel}@*
1338 The IEEE1394 standard specifies something known as the @b{channel}.  For DV
1339 cameras it is always @b{63}.
1340 @end itemize
1342 @c cincvdoc_node_number_37
1343 @node X11
1344 @subsection X11
1345 @cindex X11
1347 This was the first method of graphical display on any UNIX system.
1348 It just writes the RGB triplet for each pixel directly to the
1349 window.  It is the slowest playback method.  It is still useful as a fallback
1350 when graphics hardware can not handle very large frames.
1352 @c cincvdoc_node_number_38
1353 @node X11-XV
1354 @subsection X11-XV
1355 @cindex X11-XV
1357 This was an enhancement to X11 in 1999.  It
1358 converts YUV to RGB in hardware with scaling.  It is the preferred playback
1359 method but can not handle large frame sizes.  The maximum video size for XV is
1360 usually 1920x1080.
1362 @c cincvdoc_node_number_39
1363 @node X11-OpenGL
1364 @subsection X11-OpenGL
1365 @cindex X11-OpenGL
1366 @cindex OpenGL
1368 The most powerful video playback method is OpenGL@.  With this driver, most
1369 effects are done in hardware.  OpenGL allows video sizes up to the maximum
1370 texture size, which is usually larger than what XV supports, depending on the
1371 graphics driver.  To enable it you will need a binary built with OpenGL
1372 support.  The @command{configure} option to enable OpenGL is
1373 @option{--enable-opengl}.  You need a video card which supports OpenGL 2.0.
1374 Recent Nvidia video cards should work.  You also need to use a video driver
1375 supporting OpenGL 2.0, such as Nvidia's binary driver.  To know if your video
1376 driver supports OpenGL 2.0, type the following command: @command{glxinfo | grep
1377 "OpenGL version"}
1379 @itemize @bullet
1380 @item Video driver supporting hardware OpenGL 2.0 rendering:@*
1381 @command{OpenGL version string: 2.0.2 NVIDIA 87.74}
1382 @item Video driver not supporting hardware OpenGL 2.0 rendering:@*
1383 @command{OpenGL version string: @b{1.4} (2.0.2 NVIDIA 87.74)}
1384 @end itemize
1386 OpenGL relies on PBuffers and shaders to do video rendering.  The graphics
1387 driver must support OpenGL 2.0 and Cinelerra needs to be explicitly compiled with
1388 OpenGL 2.0 support.  This requires compiling it on a system with the OpenGL 2.0
1389 headers.  PBuffers are known to be fickle.  If the graphics card does not have
1390 enough memory or does not have the right visuals, PBuffers will not work.  If
1391 OpenGL does not work, try seeking several frames or restarting Cinelerra.
1393 @b{Limitations:}
1394 @itemize @bullet
1395 @item OpenGL does not affect rendering.  It just accelerates playback.
1396 @item X11-OpenGL processes everything in 8 bit color models, although the
1397 difference between YUV and RGB is retained.
1398 @item OpenGL does not work with frames whose size is larger than 4096x4096.@*
1399 Here is what is written in the console when working with large frames:@*
1400 @code{BC_Texture::create_texture frame size <frame_width>x<frame_height> bigger
1401 than maximum texture 4096x4096.}
1402 @item The scaling equation set in the preferences window is ignored by OpenGL@.
1403 OpenGL always uses linear scaling.
1404 @item Project and track sizes need to be multiples of four for OpenGL to work.
1405 @item To get the most acceleration, OpenGL-enabled effects must be placed after
1406 software-only effects.  All rendering before the last software-only effect is
1407 done in software.  The core Cinelerra operations like camera and projector are
1408 OpenGL@.
1409 @item Not all of the effects support OpenGL acceleration.  The following effects
1410 support OpenGL: Brightness, Chromakey, Chromakeyhsv, Color balance,
1411 Deinterlace, Diffkey, Dissolve, Flip, Frames to fields, Freeze frame, Gamma,
1412 Gradient, Histogram, Hue saturation, Interpolate Pixels, Invert video, Linear
1413 blur, Overlay, Perspective, Radial blur, RGB601, Rotate, Scale, Threshold,
1414 Zoomblur.
1415 @end itemize
1417 @c cincvdoc_node_number_40
1418 @node Buz
1419 @subsection Buz
1420 @cindex Buz
1421 @cindex Video4Linux
1423 This is a method for playing motion JPEG-A files directly to a composite analog
1424 signal.  It uses a popular hack of the Video4Linux 1 driver from 2000 to
1425 decompress JPEG in hardware.  Even though analog output is largely
1426 obsolete, newer drivers have replaced BUZ@.
1428 @c cincvdoc_node_number_41
1429 @node Raw 1394 video playback
1430 @subsection Raw 1394 video playback
1431 @cindex Raw 1394
1433 This was the first interface between GNU/Linux software and firewire
1434 camcorders.  It is the least reliable way to play video to a camcorder and it
1435 consists of a library on top of the kernel commands.
1437 @c cincvdoc_node_number_42
1438 @node DV 1394 video playback
1439 @subsection DV 1394 video playback
1440 @cindex DV 1394
1442 The second rewrite of DV camcorder support in GNU/Linux.  This was the most
1443 reliable way to play video to a camcorder and consists of direct kernel
1444 commands.
1446 @c cincvdoc_node_number_43
1447 @node IEC 61883 video playback
1448 @subsection IEC 61883 video playback
1449 @cindex IEC 61883
1451 The third rewrite of DV camcorder support in GNU/Linux.  This is a library on
1452 top of RAW 1394 and is less
1453 reliable than DV 1394 but more reliable than RAW 1394.  The next rewrite ought
1454 to fix that.  Visit @uref{http://www.linux1394.org} for more information and
1455 the latest drivers.
1457 @c cincvdoc_node_number_44
1458 @node Playback
1459 @section Playback
1460 @cindex Playback
1462 @menu
1463 * Audio out::
1464 * Video out::
1465 @end menu
1467 @c cincvdoc_node_number_45
1468 @node Audio out
1469 @subsection Audio out
1470 @cindex Audio out
1471 @cindex Audio samples
1473 These determine what happens when you play sound from the timeline.
1475 @cindex Playback buffer size
1476 @cindex Buffer size, Playback 
1477 @itemize @bullet
1478 @item @b{Playback buffer size}@*
1479 For playing audio, small fragments of sound are read from disk and processed 
1480 sequentially in a virtual console.  A larger value here causes more latency when
1481 you change mixing parameters but yields more reliable playback.@*
1482 Some sound drivers do not allow changing of the console fragment, so latency is
1483 unchanged no matter what the value.@*
1484 Previously, a good way of ensuring high quality playback was to read bigger 
1485 fragments from the disk and break them into smaller fragments for the soundcard. 
1486 That changed when the virtual console moved from the push model to the pull model. 
1487 Since different stages of the rendering pipeline can change the rate of the incoming
1488 data, it would be difficult to disconnect the size of the console fragments
1489 from the size of the fragments read from disk.
1491 @cindex Audio offset
1492 @cindex Offset, audio
1493 @item @b{Audio offset}@*
1494 The ability to tell the exact playback position on GNU/Linux sound drivers is
1495 poor, if it is provided at all.  Since this information is required for
1496 proper video synchronization, it has to be accurate.  The @b{audio offset}
1497 allows users to adjust the position returned by the sound driver in order to reflect
1498 reality.  The audio offset does not affect the audio playback or rendering at
1499 all.  It merely changes the synchronization of video playback.@*
1500 The easiest way to set the audio offset is to create a timeline with one video
1501 track and one audio track.  Expand the audio track and center the audio pan.
1502 The frame rate should be larger than 24 fps and the sampling rate should be
1503 greater than 32000.  The frame size should be small enough for your computer to render
1504 it at the full framerate.  Highlight a region of the timeline starting at 10
1505 seconds and ending at 20 seconds.  Drop a @b{gradient} effect on the video
1506 track and configure it to be clearly visible.  Drop a @b{synthesizer} effect on
1507 the audio and configure it to be clearly audible.@*
1508 Play the timeline from 0 and watch to see if the gradient effect starts exactly
1509 when the audio starts.  If it does not, expand the audio track and adjust the
1510 nudge.  If the audio starts ahead of the video, decrease the nudge value.  If
1511 the audio starts after the video, increase the nudge value.  Once the tracks
1512 play back synchronized, copy the nudge value to the @b{audio offset} value in
1513 preferences.@*
1514 @b{Note:} if you change sound drivers or you change the value of @b{Use
1515 software for positioning information}, you will need to change the audio offset
1516 because different sound drivers are unequally inaccurate.
1518 @cindex View follows playback
1519 @cindex Playback, view follows
1520 @item @b{View follows playback}@*
1521 This causes the timeline window to scroll when the playback cursor moves.  This
1522 can bog down the X Server or cause the timeline window to lock up for long
1523 periods of time while drawing the assets.
1525 @cindex Use software for positioning information
1526 @cindex Positioning information, use software for
1527 @item @b{Use software for positioning information}@*
1528 Most soundcards and sound drivers do not give reliable information on the number
1529 of samples the card has played.  You need this information
1530 for synchronization when playing back video.  This option causes the sound driver 
1531 to be ignored and a software timer to be used for synchronization.
1533 @cindex Audio playback in realtime
1534 @cindex Realtime, audio playback in
1535 @item @b{Audio playback in realtime}@*
1536 Back in the days when 150 MHz was the maximum speed for a personal computer, this 
1537 setting allowed uninterrupted playback during periods of heavy load.  It forces 
1538 the audio playback to the highest priority in the kernel.  Today, it is most 
1539 useful for achieving very low latency between console tweeks and soundcard output. 
1540 You must be root to get real-time priority.
1542 @cindex Audio driver
1543 @item @b{Audio driver}@*
1544 There are many sound drivers for GNU/Linux.  This allows selecting one sound
1545 driver and setting parameters specific to it.  The sound drivers and their
1546 parameters are described in the sound driver section.  @xref{Audio drivers}.
1547 @end itemize
1549 @c cincvdoc_node_number_46
1550 @node Video out
1551 @subsection Video out
1552 @cindex Video out
1554 These determine how video gets from the timeline to your eyes.
1556 @cindex Play every frame
1557 @cindex Frame, play every
1558 @itemize @bullet
1559 @item @b{Play every frame}@*
1560 This causes every frame of video to be displayed even if it means that the playback 
1561 of the video track(s) will fall behind.  This option should always be enabled 
1562 unless you use uncompressed codecs.  As of 1/2007, most compressed codecs do not 
1563 support frame dropping anymore.
1565 @cindex Framerate achieved
1566 @item @b{Framerate achieved}@*
1567 The number of frames per second being displayed during playback.  This is
1568 updated during playback only.
1570 @cindex Decode frames asynchronously
1571 @item @b{Decode frames asynchronously}@*
1572 If you have lots of memory and more than one CPU, this option can improve
1573 playback performance by decoding video on one CPU as fast as possible while
1574 dedicating the other CPU to playing back video.  It assumes all playback
1575 operations are forward and no frames are dropped.  Operations involving reverse
1576 playback or frame dropping are negatively impacted.@*
1577 Since this option requires enormous amounts of memory, Cinelerra may crash if the
1578 input frames are very large.
1580 @cindex Scaling equation
1581 @cindex Equation, scaling
1582 @item @b{Scaling equation}@*
1583 This algorithm is used when video playback involves any kind of scaling or
1584 translation in the virtual console.  This does not affect 1:1 playback.
1585 @itemize @bullet
1586 @item @b{Nearest neighbor enlarge and reduce}@*
1587 Low quality output with fast playback.  Produces jagged edges and uneven motion.
1588 @item @b{Bicubic enlarge and bilinear reduce}@*
1589 High quality output with slow playback.  Bicubic interpolation is used for enlarging,
1590 which blurs slightly but does not show stair step artifacts.  A bilinear
1591 interpolation is used for reduction, which produces very sharp images and reduces noise.
1592 Bilinearly reduced images can be sharpened with a sharpen effect with less noise
1593 side effects than a normal sized image.
1594 @item @b{Bilinear enlarge and bilinear reduce}@*
1595 When slight enlargement is needed, a bilinear enlargement looks better than a
1596 bicubic enlargement.
1597 @end itemize
1599 @cindex Preload buffer for Quicktime
1600 @cindex Quicktime, preload buffer for
1601 @item @b{Preload buffer for Quicktime}@*
1602 The Quicktime/AVI decoder can handle DVD sources better when this is set to around
1603 10000000.  This reduces the amount of seeking required.  When
1604 reading high bitrate sources from a hard drive, this tends to impair performance 
1605 by slowing down decoding. For normal use this should be 0.
1607 @cindex DVD subtitles
1608 @cindex Subtitles, DVD
1609 @item @b{DVD subtitle to display}@*
1610 DVD IFO files usually contain subtitle tracks.  These must be decoded with
1611 the MPEG decoder.  Select @b{Enable subtitles} to enable subtitle decoding.
1612 There are usually multiple subtitle tracks indexed by number and starting from
1613 0.  Enter the index number of the subtitle track to be decoded in the "DVD
1614 Subtitle to display" text box or use the tumbler to increase the index value.
1615 Go to the asset corresponding to the MPEG file in the Resources window and
1616 right click.  Click on Info.  The number of subtitle tracks is shown at the
1617 bottom.
1619 @cindex CR2 images
1620 @cindex Images, CR2
1621 @item @b{Interpolate CR2 images}@*
1622 Enables interpolation of CR2 images.  Interpolation is required since the raw 
1623 image in a CR2 file is a Bayer pattern.  The interpolation uses dcraw's built-in
1624 interpolation and is very slow.  This operation can be disabled and the
1625 @b{Interpolate Pixels} effect used instead for faster previewing.
1627 @cindex White balance, CR2 images
1628 @item @b{White balance CR2 images}@*
1629 This enables white balancing for CR2 images if interpolation is also enabled.
1630 This is because proper white balancing needs a blending of all 3 primary colors.
1631 White balance uses the camera's matrix which is contained in the CR2 file.@*
1632 Disabling white balancing is useful for operations involving dark frame
1633 subtraction.  The dark frame and the long exposure need to have the same color
1634 matrix.@*
1635 If you disable @b{Interpolate CR2 Images} and use the @b{Interpolate Pixels}
1636 effect, be aware the @b{Interpolate Pixels} effect always does both
1637 interpolation and white balancing using the camera's matrix, regardless of the
1638 settings in Preferences.  Dark frame subtraction needs to be performed before
1639 @b{Interpolate Pixels}.
1641 @cindex Video device driver
1642 @item @b{Video driver}@*
1643 Normally video on the timeline goes to the compositor window during both continuous
1644 playback and when the insertion point is repositioned.  Instead of sending
1645 video to the Compositor window, the video driver can be set to send video to
1646 another output device during continuous playback.  However, this does not affect 
1647 where video is routed when the insertion point is repositioned.@*
1648 The video drivers and their parameters are described in the video drivers
1649 section.  @xref{Video drivers}.
1650 @end itemize
1652 @c cincvdoc_node_number_47
1653 @node Recording
1654 @section Recording
1655 @cindex Recording
1657 The parameters here expedite the @b{File->Record...} function by allowing the
1658 user to pre-configure the file format.  The file format is applied to all
1659 recordings.  Also set here is the hardware for recording, since the hardware
1660 determines the supported file format (in most cases).
1662 @menu
1663 * File format::
1664 * Audio in::
1665 * Video in::
1666 @end menu
1668 @c cincvdoc_node_number_48
1669 @node File format
1670 @subsection File format
1671 @cindex File format
1672 @cindex Format, file
1674 This determines the output file format for recordings.  It depends heavily on
1675 the type of driver used.  The menu selections are the same as the rendering 
1676 interface.  See @xref{Rendering files}.
1677 The @b{Record audio tracks} toggle must be enabled to record audio.  The
1678 @b{Record video tracks} toggle must be enabled to record video.  The wrench
1679 button left of each toggle opens a configuration dialog in order to set the 
1680 compression scheme (codec) for each audio and video output stream.  The audio 
1681 and video is wrapped in a container format defined by the @b{File Format} menu. 
1682 Different wrappers may record audio only, video only, or both.
1684 Some video drivers can only record to a certain container.  DV, for example, can
1685 only record to Quicktime with DV as the video compression scheme.  If the video driver
1686 is changed, the file format may be updated to give the supported output.  If
1687 you change the file format to an unsupported format, it may not work with the
1688 video driver.
1690 @c cincvdoc_node_number_49
1691 @node Audio in
1692 @subsection Audio in
1693 @cindex Audio in
1695 These determine what happens when you record audio.
1697 @cindex Record driver
1698 @cindex Driver, record
1699 @cindex Device path
1700 @cindex Bits
1701 @itemize @bullet
1702 @item @b{Record driver}@*
1703 This is used for recording audio in the Record window.  It may be configured the same as
1704 the Record Driver for video if the audio and video are wrapped in the same
1705 stream.  Available parameters vary depending on the driver.  Note that the drivers
1706 are the same as those available in Preferences->Playback. @xref{Audio drivers}.
1708 @cindex Samples to write to disk at a time
1709 @item @b{Samples to write to disk at a time}@*
1710 First, audio is read in small fragments from the device.  Then, many small fragments
1711 are combined into a large fragment before writing to disk.  The disk writing
1712 process is done in a different thread.  The value here determines how large the
1713 combination of fragments is for each disk write.
1715 @cindex Sample rate for recording
1716 @cindex Recording, sample rate for
1717 @item @b{Sample rate for recording}@*
1718 Regardless of what the project settings are, the value set here will be the sample rate used for
1719 recording.  The sample rate should be set to the highest value the audio device supports.
1720 @end itemize
1722 @c cincvdoc_node_number_50
1723 @node Video in
1724 @subsection Video in
1725 @cindex Video in
1727 These determine what happens when you record video.
1729 @cindex Record driver
1730 @cindex Driver, record
1731 @itemize @bullet
1732 @item @b{Record driver}@*
1733 This is used for recording video in the Record window.  It may be configured the same as
1734 the Record Driver for video if the audio and video are wrapped in the same
1735 container.  Available parameters vary depending on the driver.  Note that the drivers available
1736 are the as those available in Preferences->Playback.  @xref{Video drivers}.
1738 @cindex Frames to record to disk at a time
1739 @item @b{Frames to record to disk at a time}@*
1740 Frames are recorded in a pipeline.  First, frames are buffered in the device.
1741 Then, they are read into a larger buffer for writing to disk.  The disk writing
1742 is done in a separate thread from the device reading.  For certain codecs the
1743 disk writing uses multiple processors.  The value set here determines how many frames
1744 are written to disk at a time.
1746 @cindex Frames to buffer in device
1747 @item @b{Frames to buffer in device}@*
1748 This is the number of frames to store in the device before reading and determines
1749 how much latency there can be in the system before frames are dropped.
1751 @cindex Use software for positioning information
1752 @item @b{Use software for positioning information}@*
1753 Video uses audio for synchronization, but most soundcards do not give accurate
1754 position information.  Selecting this options makes Cinelerra calculate an 
1755 estimation of audio position in software instead of hardware for synchronization.
1757 @cindex Sync drives automatically
1758 @item @b{Sync drives automatically}@*
1759 For high bitrate recording, the disk drives you use may be fast enough to store the data but
1760 your operating system may wait several minutes and stall as it writes several minutes of
1761 data at a time.  This forces the operating system to flush its buffers every second
1762 instead of every few minutes to produce slightly better real-time behavior.
1764 @cindex Size of captured frame
1765 @cindex Captured frame, size of
1766 @item @b{Size of captured frame}@*
1767 This is the size of the recorded frames in pixels.  It is independent of the project
1768 frame size because most video devices only record a fixed frame size.  If the
1769 frame size given here is not supported by the device, Cinelerra may crash.
1771 @cindex Frame rate for recording
1772 @cindex Recording, frame rate for
1773 @item @b{Frame rate for recording}@*
1774 The frame rate recorded is different from the project settings.  This sets the
1775 recorded frame rate.
1776 @end itemize
1778 @c cincvdoc_node_number_51
1779 @node Performance
1780 @section Performance
1781 @cindex Performance
1783 You will spend most of your time configuring this section.  The main focus of
1784 the performance section is rendering parameters not available in the rendering dialog.
1786 @cindex Cache items
1787 @itemize @bullet
1788 @item @b{Cache items}@*
1789 To speed up rendering, several assets are kept open simultaneously. This
1790 determines how many are kept open. A number too large may exhaust your memory
1791 pretty fast and result in a crash. A number too small may result in slow
1792 playback as assets need to be reopened more frequently.
1794 @cindex Seconds to preroll renders
1795 @item @b{Seconds to preroll renders}@*
1796 Some effects need a certain amount of time to settle in.  Checking this option 
1797 sets a number of seconds to render without writing to disk before the selected 
1798 region is rendered.  When using the renderfarm, you will sometimes need to 
1799 preroll to get seemless transitions between the jobs.  Every job in a renderfarm 
1800 is prerolled by this value.  This does not affect background rendering, however. 
1801 Background rendering uses a different preroll value.
1803 @cindex Force single processor use
1804 @cindex SMP, force single processor use
1805 @item @b{Force single processor use}@*
1806 Cinelerra tries to use all processors on the system by default, but sometimes
1807 you will only want to use one processor, like in a renderfarm client.  This
1808 forces only one processor to be used.  In addition, the operating system usually
1809 uses the second processor for disk access.  So this option is really a
1810 1.25 processor mode.  The value of this parameter is used in renderfarm
1811 clients.
1812 @end itemize
1814 @menu
1815 * Background rendering::
1816 * Renderfarm::
1817 @end menu
1819 @c cincvdoc_node_number_52
1820 @node Background rendering
1821 @subsection Background rendering
1822 @cindex Background rendering
1823 @cindex Rendering, background
1825 Background rendering was originally conceived to allow HDTV effects to be
1826 displayed in real-time.  Background rendering causes temporary output to
1827 be rendered constantly while the timeline is being modified.  The temporary
1828 output is displayed during playback whenever possible.  This is useful for
1829 transitions and previewing effects that are too slow to display in
1830 real time.  If a renderfarm is enabled, the renderfarm is used
1831 for background rendering.  This gives you the potential for real-time effects if
1832 enough network bandwidth and CPU nodes exist.
1834 Background rendering is enabled in the @b{Performance} tab of the
1835 @b{Preferences} window.  It has one interactive function @b{Settings menu ->
1836 Set background render}.  This sets the point where background rendering starts
1837 up to the position of the insertion point.  If any video exists, a red bar appears 
1838 in the time ruler showing what has been background rendered.
1840 It is often useful to insert an effect or a transition and then select
1841 @b{Settings menu -> Set background render} right before the effect to preview
1842 it in real time and full framerates.
1844 @cindex Frames per background rendering job
1845 @itemize @bullet
1846 @item @b{Frames per background rendering job}@*
1847 This only works if a renderfarm is being used; otherwise, background rendering
1848 creates a single job for the entire timeline.  The number of frames specified
1849 here is scaled to the relative CPU speed of rendering nodes and used in a
1850 single renderfarm job.  The optimum number is 10 - 30 since network bandwidth
1851 is used to initialize each job.
1853 @cindex Frames to preroll background
1854 @item @b{Frames to preroll background}@*
1855 This is the number of frames to render ahead of each background rendering job.
1856 Background rendering is degraded when preroll is used since the jobs are small.
1857 When using background rendering, this number is ideally 0.  Some effects may
1858 require 3 frames of preroll.
1860 @cindex Output for background rendering
1861 @item @b{Output for background rendering}@*
1862 Background rendering generates a sequence of image files in a certain
1863 directory.  This parameter determines the filename prefix of the image files.
1864 It should be on a fast disk, accessible to every node in the renderfarm by the
1865 same path.  Since hundreds of thousands of image files are usually created,
1866 @command{ls} commands will not work in the background rendering directory.  The
1867 @image{manual_images_intl/magnify,7mm} browse button for this option normally will not
1868 work either, but the @image{manual_images_intl/wrench,4.33mm} configuration button for
1869 this option works.
1871 @cindex File format
1872 @item @b{File format}@*
1873 The file format for background rendering has to be a sequence of images.  The
1874 format of the image sequences determines the quality and speed of playback.
1875 JPEG is good most of the time.
1876 @end itemize
1878 @c cincvdoc_node_number_53
1879 @node Renderfarm
1880 @subsection Renderfarm
1881 @cindex Renderfarm
1883 To use the renderfarm, set these options.  Ignore them for a standalone system
1885 @cindex Use render farm for rendering
1886 @itemize @bullet
1887 @item @b{Use render farm for rendering}@*
1888 When selected, all the @b{file->render} operations use the renderfarm.
1890 @cindex Nodes
1891 @item @b{Nodes}@*
1892 Displays all the nodes on the renderfarm and shows which ones are active.  Nodes are
1893 added by entering the host name of the node, verifying the value of @b{port}
1894 and selecting @b{add node}.  If you have hundreds of nodes, experienced
1895 users may be better off editing the
1896 @file{~/.bcast/.Cinelerra_rc} file rather than using configuration dialog.
1897 Remember that @file{.Cinelerra_rc} is overwritten whenever a copy of Cinelerra
1898 exits.@*
1899 Once nodes are created, select the @b{ON} column to activate and deactivate nodes.
1900 Nodes may be edited by highlighting a row and hitting @b{apply
1901 changes}.
1903 @cindex Hostname, renderfarm
1904 @item @b{Hostname}@*
1905 Edit the hostname of an existing node or enter the hostname of a new node here.
1907 @cindex Port, renderfarm
1908 @item @b{Port}@*
1909 Edit the port number of an existing node or enter the port number of a new node here.
1911 @cindex Changes, apply
1912 @item @b{Apply changes}@*
1913 When editing an existing node, select this to commit the changes to @b{hostname}
1914 and @b{port}.  The changes will not be committed if you do not click this button.
1916 @cindex Node, add a
1917 @item @b{Add node}@*
1918 Create a new node with the @b{hostname} and @b{port} settings.
1920 @cindex Node, delete a
1921 @item @b{Delete node}@*
1922 Deletes whatever node is highlighted in the @b{nodes} list.
1924 @cindex Sort nodes
1925 @cindex Nodes, sort
1926 @item @b{Sort nodes}@*
1927 Sorts the @b{nodes} list based on the hostname.
1929 @cindex Rates, reset
1930 @item @b{Reset rates}@*
1931 This sets the framerate for all the nodes to 0.  Frame rates are used to scale
1932 job sizes based on CPU speed of the node.  Frame rates are calculated only when
1933 renderfarm is enabled.
1935 @cindex Total jobs to create
1936 @cindex Jobs, total number to create
1937 @item @b{Total jobs to create}@*
1938 Determines the number of jobs to dispatch to the renderfarm.  The more jobs you
1939 create, the more finely balanced the renderfarm becomes.@*
1940 You can determine the total jobs to create by multiplying the number of nodes
1941 including the master node by some number.  Multiply them by 1 to have one job
1942 dispatched for every node.  Multiply them by 3 to have 3 jobs dispatched for
1943 every node.  If you have 10 slave nodes and one master node, specify 33 to have
1944 a well balanced renderfarm.
1945 @end itemize
1947 @c cincvdoc_node_number_54
1948 @node Interface
1949 @section Interface
1950 @cindex Interface
1952 These parameters affect purely how the user interface works.
1954 @cindex Time representation
1955 @itemize @bullet
1956 @item @b{Time format}@*
1957 Various representations of time are given.  Select the most convenient one.
1958 The time representation can also be changed by @key{CTRL} clicking on the
1959 timebar.
1961 @cindex Index files, location
1962 @cindex Index files
1964 @item @b{Index files go here}@*
1965 Back in the days when 4 MB/sec was extremely fast for a hard drive, index
1966 files were introduced to speed up drawing the audio tracks.  This option
1967 determines where index files are placed on the hard drive.
1969 @cindex Index file, size of
1970 @item @b{Size of index file}@*
1971 This determines the size of an index file.  Larger index sizes allow smaller files
1972 to be drawn faster, while slowing down the drawing of large files.  Smaller
1973 index sizes allow large files to be drawn faster, while slowing down small
1974 files.
1976 @cindex Index files, number to keep
1977 @item @b{Number of index files to keep}@*
1978 To keep the index directory from becoming unruly, old index files are deleted.
1979 This determines the maximum number of index files to keep in the directory.
1981 @cindex Index files, delete all
1982 @item @b{Delete existing indexes}@*
1983 When you change the index size or you want to clean out excess index files,
1984 this deletes all the index files.
1986 @cindex Thumbnails
1987 @item @b{Use thumbnails}@*
1988 The Resource Window displays thumbnails of assets by default.  Drawing asset 
1989 thumbnails can take a while.  This option disables thumbnail drawing.
1991 @cindex Edt boundaries, dragging does what
1992 @item @b{Dragging edit boundaries does what}@*
1993 Cinelerra not only allows you to perform editing by dragging edit boundaries, 
1994 but also defines three separate operations that occur when you drag an edit boundary.  
1995 Here you can select the behavior of each mouse button.  The usage of
1996 each editing mode is described in the editing chapter.  @xref{Trimming}.
1998 @cindex Meter, Min dB
1999 @item @b{Min dB for meter}@*
2000 Some sound sources have a lower noise threshold than others.  Everything below
2001 the noise threshold is meaningless.  This option sets the meters to clip below
2002 a certain level.  Consumer soundcards usually bottom out at -65.  Professional
2003 soundcards bottom out at -90.  @xref{Sound level meters window}.
2005 @cindex Meter, Max dB
2006 @item @b{Max dB for meter}@*
2007 This sets the maximum sound level represented by the sound meters.  No matter
2008 what this value is, no soundcard can play sound over 0 dB@.  This value is
2009 presented merely to show how far over the limit a sound wave is.  @xref{Sound
2010 level meters window}.
2012 @cindex Theme
2013 @item @b{Theme}@*
2014 Cinelerra supports variable themes.  Select one here and restart Cinelerra to
2015 see it.
2016 @end itemize
2018 @c cincvdoc_node_number_55
2019 @node About
2020 @section About window
2022 This section gives you information about the copyright, the time of the current
2023 build, the lack of a warranty, and the versions of some of the libraries.  Be
2024 sure to agree to the terms of the lack of the warranty.
2026 @c cincvdoc_node_number_56
2027 @node Project attributes
2028 @chapter Project attributes
2029 @cindex Project attributes
2030 @cindex Attributes of project
2032 @menu
2033 * Set format window::
2034 * Presets::
2035 * Audio attributes::
2036 * Video attributes::
2037 @end menu
2039 @c cincvdoc_node_number_57
2040 @node Set format window
2041 @section Set format window
2042 @cindex Set format window
2043 @cindex Format, window
2045 When you play media files in Cinelerra, the media files have a certain number
2046 of tracks, a certain frame size, a certain sample size, and so on and so forth.
2047 No matter what attributes the media file has, it is played back according
2048 to the project attributes.  So, if an audio file's sample rate is different than the
2049 project attributes, it is resampled.  In like fashion, if a video file's frame 
2050 size is different than the project attributes, the video is composited on a 
2051 black frame, either cropped or bordered with black.
2053 The project attributes are adjusted in @b{Settings->Set Format} and to a
2054 lesser extent in @b{File->New}.  When you adjust project settings in
2055 @b{File->New}, a new, empty timeline is created.  Every timeline created
2056 from this point on uses the same settings.  When you adjust settings in
2057 @b{Settings->Format}, media on the timeline is left unchanged.  Also, every
2058 timeline created from this point uses the same settings.
2060 @center @image{manual_images_intl/format,70mm}
2061 @center @b{Set Format window}
2063 In addition to the traditional settings for sample rate, frame rate, frame
2064 size, Cinelerra uses some unusual settings like @b{channel positions, color
2065 model, and aspect ratio.}
2067 @c cincvdoc_node_number_58
2068 @node Presets
2069 @section Presets
2070 @cindex Presets
2072 Select an option from this menu to have all the project settings set to
2073 one of the known standards.
2075 @c cincvdoc_node_number_59
2076 @node Audio attributes
2077 @section Audio attributes
2078 @cindex Audio attributes
2080 @itemize @bullet
2081 @item @b{Tracks}@*
2083 Sets the number of audio tracks for the new project.  Tracks can
2084 be added or deleted later, but options are provided here for convenience.
2086 @item @b{Samplerate}@*
2087 Sets the samplerate of the audio.  The project samplerate does not have to
2088 be the same as the media sample rate that you load.  Media is resampled to
2089 match the project sample rate.
2091 @item @b{Channels}@*
2092 Sets the number of audio channels for the new project.  The number
2093 of audio channels does not have to be the same as the number of tracks.
2095 @item @b{Channels positions}@*
2096 The currently enabled audio channels and their positions in the audio panning
2097 boxes in the track patchbay are displayed in the channel position widget.
2098 @end itemize
2100 @center @image{manual_images_intl/channelpositions,40mm}
2101 @center @b{The channel position widget}
2103 The channels are numbered.  When rendered, the output from channel 1 is
2104 rendered to the first output track in the file or the first soundcard channel
2105 of the soundcard.  Later channels are rendered to output tracks numbered
2106 consecutively.
2108 The audio channel positions correspond to where in the panning widgets each of
2109 the audio outputs is located.  The closer the panning position is to one of the audio
2110 outputs, the more signal that speaker gets.  Click on a speaker icon and drag
2111 to change the audio channel location.
2113 The speakers can be in any orientation.  A different speaker arrangement is
2114 stored for every number of audio channels since normally you do not want the
2115 same speaker arrangement for different numbers of channels.
2117 Channel positions is the only setting that does not affect the output
2118 necessarily.
2119 It is merely a convenience, so that when more than two channels are used, the
2120 pan controls on the timeline can distinguish between them.  It has nothing to
2121 do with the actual arrangement of speakers.
2123 Different channels can be positioned very close together to make them have
2124 the same output.
2126 @xref{Panning audio tracks}.
2128 @c cincvdoc_node_number_60
2129 @node Video attributes
2130 @section Video attributes
2131 @cindex Video attributes
2133 @itemize @bullet
2134 @item @b{Tracks}@*
2135 Sets the number of video tracks the new project is assigned.  Tracks can
2136 be added or deleted later, but options are provided here for convenience.
2138 @item @b{Framerate}@*
2139 Sets the framerate of the video.  The project framerate does not have to be
2140 the same as an individual media file frame rate that you load.  Media is reframed to match the
2141 project framerate.
2143 @item @b{Canvas size}@*
2144 Sets the size of the video output.  In addition, each track also has its own frame
2145 size.  Initially, the @b{New Project} dialog creates video tracks whose size match
2146 the video output.  The video track sizes can be changed later without
2147 changing the video output.  @xref{The track popup menu}.
2149 @item @b{Aspect ratio}@*
2150 Sets the aspect ratio.  The aspect ratio is applied to the video output.
2151 The aspect ratio can be different than the ratio that results from the formula:
2152 h / v (the number of horizontal pixels divided into the number of vertical
2153 pixels).  If the aspect ratio differs from the results of the formula above,
2154 your output will be in non-square pixels.
2156 @item @b{Auto aspect ratio}@*
2157 If this option is checked, the @b{New Project} dialog always recalculates the @b{Aspect
2158 ratio} setting based upon the given @b{Canvas size}.  This ensures pixels are
2159 always square.
2161 @item @b{Color model}@*
2162 The project will be stored in the color model video intermediates selected in
2163 the dropdown.@*
2164 Color model is very important for video playback because video has the
2165 disadvantage of being very slow.  Although it is not noticeable, audio
2166 intermediates contain much more information than the audio on disk and the
2167 audio which is played.  Audio always uses the highest bandwidth intermediate
2168 because it is fast.@*
2169 Video intermediates must use the least amount of data for the required quality
2170 because it is slow, but video intermediates still use a higher bandwidth color
2171 model than video which is stored and video which is played.  This allows more
2172 processing to be done with less destruction of the original data.@*
2173 The video is stored on disk in one colormodel, usually a YUV
2174 derivative.  When played back, Cinelerra decompresses it from the file format
2175 directly into the format of the output device.  If effects are processed, Cinelerra
2176 decompresses the video into an intermediate colormodel first and then converts it to
2177 the format of the output device.  The selection
2178 of an intermediate colormodel determines how fast and accurate the effects are.@*
2179 Cinelerra colormodels are described using a certain packing order of components
2180 and a certain number of bits for each component.  The packing order is printed
2181 on the left and the bit allocation is printed on the right.
2182 @cindex RGB-888
2183 @itemize @bullet
2184 @item @b{RGB-888}@*
2185 This allocates 8 bits for the R, G, and B channels and no alpha.  This is
2186 normally used for uncompressed media with low dynamic range.
2187 @cindex RGBA-8888
2188 @item @b{RGBA-8888}@*
2189 This allocates an alpha channel to the 8 bit RGB colormodel.  It is used
2190 for overlaying multiple tracks.
2191 @cindex YUV-888
2192 @item @b{YUV-888}@*
2193 This allocates 8 bits for Y, U, and V@.  This is used for low dynamic range
2194 operations in which the media is compressed in the YUV color space.  Most
2195 compressed media is in YUV and this derivate allows video to be processed fast with the
2196 least color degradation.
2197 @cindex YUVA-8888
2198 @item @b{YUVA-8888}@*
2199 This allocates an alpha channel to the 8 bit YUV colormodel for transparency.
2200 @cindex RGB-Float
2201 @item @b{RGB-Float}@*
2202 This allocates a 32 bit float for the R, G, and B channels and no alpha.
2203 This is used for high dynamic range processing with no transparency.
2204 @cindex RGBA-Float
2205 @item @b{RGBA-Float}@*
2206 This adds a 32 bit float for alpha to RGB-Float.  This is used for high
2207 dynamic range processing with transparency.
2208 @end itemize
2209 @b{In order to do effects which involve alpha channels, a colormodel with an
2210 alpha channel must be selected}.  These are RGBA8888, YUVA8888, and RGBA Float.
2211 The 4 channel colormodels are slower than 3 channel colormodels,
2212 with the slowest being RGBA Float.  Some effects, like fade, work around the
2213 need for alpha channels while other effects, like chromakey, require an alpha
2214 channel to do anything, so it is a good idea to try the effect without alpha
2215 channels to see if it works before settling on an alpha channel and slowing it
2216 down.@*
2217 When using compressed footage, YUV colormodels are usually faster than RGB colormodels.
2218 They also destroy fewer colors than RGB colormodels.  If
2219 footage stored as JPEG or MPEG is processed many times in RGB, the colors will
2220 fade whereas they will not fade if processed in YUV@.@*
2221 Years of working with high dynamic range footage have shown floating point RGB
2222 to be the best format for high dynamic range.  16 bit integers were used
2223 in the past and were too lossy and slow for the amount of improvement.@*
2224 RGB float does not destroy information when used with YUV source footage and
2225 also supports brightness above 100%.  Be aware that some effects, like
2226 Histogram, still clip above 100% when in floating point.
2227 @end itemize
2229 @c cincvdoc_node_number_61
2230 @node Loading and saving files
2231 @chapter Loading and saving files
2232 @cindex Loading and saving files
2233 @cindex Files, loading and saving
2235 @menu
2236 * Supported file formats::     What formats Cinelerra can import and export
2237 * Loading files::              Loading all types of files
2238 * Loading the backup::         Recovering the session from before a crash
2239 * Saving project files::       Saving edit decision lists
2240 * Merging projects::
2241 @end menu
2243 @c cincvdoc_node_number_62
2244 @node Supported file formats
2245 @section Supported file formats
2246 @cindex Supported file formats
2247 @cindex File format
2249 Here are most of the supported file formats that can be loaded and redered to,
2250 with notes regarding their compression. You may be able to load other formats not 
2251 described here.@*
2252 The format of the file affects what Cinelerra does with it.  Edit decision
2253 lists stored in XML save the project settings.  Formats which contain media but 
2254 no edit decisions just add data to the tracks.  If your project sample rate is 
2255 48 kHz and you load a sound file with 96khz, you will still be playing it at 48 kHz. 
2256 If you load an EDL file at 96khz and the current project sample rate is 48 kHz,
2257 you will change it to 96 kHz.@*
2258 Some file formats are very slow to display on the timeline.  These usually have
2259 video which is highly compressed.  Drawing highly compressed video thumbnails 
2260 on the timeline (picons) can be very slow.  Disable picon drawing for these files 
2261 with the @b{draw media} toggle in the patchbay to speed up operations.
2263 Supported file formats that Cinelerra can import and export are currently:
2265 @menu
2266 * Quicktime::
2267 * MPEG-4 audio::
2268 * Still images::
2269 * Images sequence::
2270 * AVI::
2271 * MPEG files containing video::
2272 * DVD movies::
2273 * MPEG 1 audio::
2274 * Ogg Theora/Vorbis::
2275 * Edit decision list::
2276 * WAV::
2277 * PCM::
2278 * AIFF::
2279 * AC3 audio::
2280 @end menu
2282 @c cincvdoc_node_number_63
2283 @node Quicktime
2284 @subsection Quicktime
2285 @cindex Quicktime
2287 Quicktime is not the standard for UNIX but we use it because it is well
2288 documented.  All of the Quicktime movies on the internet are compressed.
2289 Cinelerra supports some compressed Quicktime movies.  If Cinelerra
2290 crashes when loading a Quicktime movie, it is most likely because the format
2291 was not supported.@*
2292 Quicktime is a container for two streams, a video stream and an audio stream.  These
2293 streams are compressed using separate encoding schemes.  The preferred encoding for
2294 Quicktime output is MPEG-4 Video and MPEG-4 Audio.  This format is compatible in the
2295 commercial players for Windows, has good compression quality and good output quality.  
2296 For better compression, use H-264 video.  Unfortunately H-264 decoding is so slow it can
2297 not play very large frame sizes.@*
2298 Cinelerra supports two non-standard codecs: Dual MPEG-4 video and Dual H.264
2299 video.  These will not play in anything but Cinelerra and XMovie.  They are
2300 designed for movies where the frames have been divided into two fields, each
2301 field displayed sequentially.  The dual codecs interleave two video streams to
2302 improve efficiency without requiring major changes to the player.
2304 @c cincvdoc_node_number_64
2305 @node MPEG-4 audio
2306 @subsection MPEG-4 audio
2307 @cindex MPEG-4 audio
2309 This is the same as Quicktime with MPEG-4 Audio as the audio codec.
2311 @c cincvdoc_node_number_66
2312 @node Still images
2313 @subsection Still images
2314 @cindex Still images
2315 @cindex Images, still
2317 @menu
2318 * Loading still images::
2319 * Still images size::
2320 * Open EXR images::
2321 * Raw digital camera images::
2322 @end menu
2324 @c cincvdoc_node_number_67
2325 @node Loading still images
2326 @subsubsection Loading still images
2327 @cindex Loading still images
2328 @cindex Still images, loading
2330 You can load still images on video tracks just like you do for any video file.@*
2331 Supported file formats are mainly: PNG, TIF, TGA or JPG, EXR, raw digital camera images. 
2333 When loaded on the timeline, by default the image takes up one frame in length. 
2334 To view the image, zoom in time (@key{down arrow}) on the timeline so you can
2335 see the single frame. @*
2336 To extend the length of the image, drag its boundaries just as you would do with 
2337 regular video media. @* 
2338 You can drag the boundaries of a still image as much as you want.
2339 Images in Cinelerra have the ability to be dragged to an infinite length.@*
2340 Cinelerra lets you define the initial duration of the loaded images. The parameter
2341 is set in the @b{Images} section of the @b{Settings->Preferences->Recording window}.@*
2343 Unless your original material comes from a digital source (like a digital photo
2344 camera), the first thing you have to do before you can use it is to somehow
2345 capture the assets into a usable digital medium.@*
2346 For old photos, paper maps, drawings or diagrams, you might have to scan
2347 them into a file format like PNG, TIF, TGA or JPG files by using a digital scanner.  
2348 You might want to use Gimp to post-process the images, clean damaged areas or color
2349 correct the assets.@*
2350 If your assets come from a digital source like a digital camera or a screen
2351 capture, be sure to capture the material using the best resolution possible.
2352 This will allow you to get the best quality output from your Cinelerra project.
2354 Rendering a video to a single image causes the final image file to be overwritten 
2355 for every timeline position. The rendered file is a single still image of the last 
2356 frame of the video. No table of contents is created. @xref{Images sequence}.
2358 @c cincvdoc_node_number_68
2359 @node Still images size
2360 @subsubsection Still images size
2361 @cindex Still images size
2363 Imported images always stay at their original size.  Therefore,
2364 you have to take into account the aspect ratio of your video in Cinelerra and
2365 rescale your pictures before importing them in Cinelerra.@*
2366 For example, PAL images aspect ratio is 4/3, but 720x576 is 5/4.  For your
2367 imported images to be displayed correctly, you have to rescale their horizontal
2368 size:@*
2369 new horizontal size=@math{(5 / 4) / (4 / 3)} x original horizontal size@*
2370 For PAL videos, you have to multiply the horizontal size of the pictures you
2371 want to import by a factor of 0.9375.@*
2372 Here is a small shell script which, when ran from a folder containing jpg
2373 images, resize those images and put the new images in a @file{resized} folder:
2374 @verbatim
2375 #/bin/sh
2376 mkdir resized
2377 for element in `ls . | grep jpg`;
2379     size=`identify ${element}`
2380     width=`echo ${size} | sed '+s+.*JPEG ++' | sed '+s+x.*++'`
2381     height=`echo ${size} | sed '+s+.*JPEG [0-9]*x++' | sed '+s+DirectClass.*++'`
2382     let new_width=${width}*9375/10000
2383     convert -resize "${new_width}x${height}!" -quality 100 ${element} resized/${element}
2384 done
2385 @end verbatim
2387 When the size of your image is different from the size of your project, but the
2388 ratio is the same, you might want to keep the image on a separate track and adjust the display 
2389 of it with the camera zoom. @xref{The camera and projector}.
2391 @c cincvdoc_node_number_69
2392 @node Open EXR images
2393 @subsubsection Open EXR images
2394 @cindex EXR images
2395 @cindex Images, EXR
2397 You may not know about Open EXR@.  This format stores floating point RGB images.
2398 It also supports a small amount of compression. 
2400 Projects which render to EXR should be in a floating point color model to take advantage 
2401 of the benefits of EXR. @xref{Project attributes}.@*
2403 Several compression options are available for EXR. @*
2404 @cindex Compression
2405 @cindex PIZ compression
2406 @itemize @bullet
2407 @item @b{PIZ:} Lossless wavelet compression.  This is the best compression.
2408 @cindex ZIP compression
2409 @item @b{ZIP:} Lossless gzip algorithm.
2410 @cindex RLE compression
2411 @item @b{RLE:} Lossless run length encoding.  This is the fastest, but worst
2412 compression.
2413 @cindex PXR24 compression
2414 @item @b{PXR24:} Lossy compression where the floating point numbers are
2415 converted to 24 bits and compressed with gzip.
2416 @end itemize
2418 Select @b{Use Alpha} if the project colormodel has an alpha channel and you
2419 want to retain it in the file.  Otherwise the primary colors are multiplied by
2420 the alpha channel.
2422 @c cincvdoc_node_number_70
2423 @node Raw digital camera images
2424 @subsubsection Raw digital camera images
2425 @cindex Raw digital camera images
2426 @cindex Camera images, raw digital
2428 RAW digital camera images are a special kind of image file that Cinelerra only
2429 imports. @*
2430 Once they are on the timeline, these must be processed in a floating 
2431 point color space.
2432 Raw images from Canon cameras are the only ones tested.  They
2433 need to have the @b{Gamma} effect applied to correct gamma.  Because raw images
2434 take a long time to interpolate, they are usually viewed first in a proxy file
2435 and then touched up.
2437 First apply the Gamma effect to a track of raw images and set it to
2438 @b{automatic} with @b{0.6} gamma.  Then render the timeline to a Quicktime JPEG
2439 file.  Append the Quicktime JPEG file in a new track and disable playback of
2440 the old track.  Now the gamma corrected copy of each raw image can be previewed
2441 relatively fast in the same timeline position as the original image.
2443 @c cincvdoc_node_number_65
2444 @node Images sequence
2445 @subsection Images sequence
2446 @cindex Images sequence
2447 @cindex Images list
2448 @cindex TOC
2450 An images sequence is a series of ordered still pictures (e.g. the frames of an
2451 animated scene). They can be loaded as multiple files.
2453 An image sequence can be represented in Cinelerra also by an image list file,
2454 called also Table Of Contents file (TOC). A TOC is a text file with a specific format 
2455 containing absolute paths to every frame in the sequence plus additional information 
2456 like image resolution, fileformat and sequence framerate. To get better performance, 
2457 the table of contents can be loaded as a single asset instead of the individual images. 
2458 A TOC is not a media file but it behaves like a video clip.
2460 Cinelerra creates TOC files by rendering to "Images sequence".@*
2461 When rendering a video to an images sequence Cinelerra creates a different image file 
2462 for every timeline position and generates a TOC for this images sequence. This is
2463 useful to split video into frames as single stills.@*
2464 When rendering a series of stills to an images sequence Cinelerra generates a TOC for the images 
2465 sequence but also creates a different image file for every still. The source files
2466 are copied and renamed. The TOC file contains the paths to the new files. This
2467 is useful only when you want to create a list and change the format of your source
2468 files. @*
2469 For creating a TOC file without creating new image files you can use external
2470 list generators like IMG2LIST 0.1.5. (by Claudio "malefico" @sc{Andaur}) or
2471 Seven Gnomes (by Peter @sc{Semiletov}). See
2472 @uref{http://cvs.cinelerra.org/user-tips.php}.
2474 Cinelerra can create TOCs with the following formats: JPEG, PNG, EXR, TIFF,
2475 TGA. @*
2476 Images lists can be edited manually.
2478 @c cincvdoc_node_number_71
2479 @node AVI
2480 @subsection AVI
2481 @cindex AVI
2483 Because AVI (Audio-Video Interleave) is so fragmented with varied audio and
2484 video codecs, you may not be able to play all AVI formatted files.
2486 @c cincvdoc_node_number_72
2487 @node MPEG files containing video
2488 @subsection MPEG files containing video
2489 @cindex MPEG files containing video
2490 @cindex mpeg3toc
2492 MPEG files containing video can be loaded directly into Cinelerra.  If the file
2493 is supported, a table of contents is built.  If the file is unsupported, it
2494 usually crashes or shows very short tracks.  Unfortunately, this method of
2495 loading MPEG files is not good enough if you intend to use the files in a
2496 renderfarm.@*
2497 To use MPEG files in a renderfarm, you need to run mpeg3toc in order to generate a table
2498 of contents for the file and then load the table of contents.  mpeg3toc needs the
2499 absolute path of the MPEG file.  If you do not use an absolute path, it assumes that
2500 the MPEG file is in the same directory that Cinelerra is run from.@*
2501 MPEG streams are structured into multiple tracks.  Each track can be video or
2502 audio.  Each audio track can have 1-6 channels.  Cinelerra converts each
2503 channel of audio into a track.
2505 @cindex mpeg2enc
2506 @b{Notes on mpeg video encoding:}@*
2507 MPEG video encoding is done separately from MPEG audio encoding.  In MPEG video
2508 there are two colormodels.  The YUV 4:2:0 colormodel is encoded by a highly
2509 optimized version of mpeg2enc with presets for standard consumer electronics.
2510 In the process of optimizing mpeg2enc, they got rid of YUV 4:2:2 encoding.  The
2511 YUV 4:2:2 colormodel is encoded by a less optimized version of mpeg2enc.@*
2512 YUV 4:2:2 encoding was kept around because the NTSC version of DV video loses
2513 too much quality when transferred to YUV 4:2:0.  This DV video must be
2514 transferred to YUV 4:2:2.@*
2515 When encoding YUV 4:2:0, the bitrate parameter changes meaning depending on
2516 whether the bitrate or quantization is fixed.  If the bitrate is fixed, it is
2517 the target bitrate.  If the quantization is fixed, it is the maximum bitrate
2518 allowed.  This is a quirk of the mpeg2enc version.
2520 @c cincvdoc_node_number_73
2521 @node DVD movies
2522 @subsection DVD movies
2523 @cindex DVD movies
2524 @cindex IFO file
2526 DVD are split into a number of programs, each identified by a unique
2527 @file{IFO} file.  If you want to load a DVD, find the corresponding @file{IFO}
2528 file for the program of interest.  Load the IFO file directly and a table of
2529 contents will be built.  Alternatively for renderfarm usage, a table of
2530 contents can be created separately.@*
2531 @cindex mpeg3toc
2532 Run: @command{mpeg3toc -v /cdrom/video_ts/vts_01_0.ifo dvd.toc}@*
2533 or something similar.  Then load @file{dvd.toc}.
2535 @c cincvdoc_node_number_74
2536 @node MPEG 1 audio
2537 @subsection MPEG 1 audio
2538 @cindex MPEG 1 audio
2540 These are .mp2 and .mp3 files.  If the files are encoded using a fixed bitrate, 
2541 they can be loaded directly with no table of contents.  Variable bitrate streams 
2542 need to have a table of contents created with mpeg3toc.
2544 @c cincvdoc_node_number_75
2545 @node Ogg Theora/Vorbis
2546 @subsection Ogg Theora/Vorbis
2547 @cindex Ogg Theora/Vorbis
2549 The OGG format is an antiquated but supposedly unpatented way of compressing
2550 audio and video.  The quality is not as good as H.264 or MPEG-4 Audio.  In
2551 reality, anyone with enough money and desire can find a patent violation so the
2552 justification for OGG is questionable.
2554 @c cincvdoc_node_number_76
2555 @node Edit decision list
2556 @subsection Edit decision list
2557 @cindex EDL
2559 Edit decision lists are generated by Cinelerra for storing projects.  EDL files end
2560 in .xml.  When loaded, they change the attributes of the current project.  Because 
2561 edit decision lists consist of text, they can be edited in a text editor.
2563 @c cincvdoc_node_number_359
2564 @node WAV
2565 @subsection WAV
2566 @cindex WAV
2568 FIXME
2570 @c cincvdoc_node_number_360
2571 @node PCM
2572 @subsection PCM
2573 @cindex PCM
2575 FIXME
2577 @c cincvdoc_node_number_361
2578 @node AIFF 
2579 @subsection AIFF
2580 @cindex AIFF
2582 FIXME
2584 @c cincvdoc_node_number_362
2585 @node AC3 audio
2586 @subsection AC3 audio
2587 @cindex AC3 audio
2589 FIXME
2591 @c cincvdoc_node_number_77
2592 @node Loading files
2593 @section Loading files
2594 @cindex Loading files
2595 @cindex Files, loading
2597 All data that you work with in Cinelerra is acquired either by @b{recording
2598 from a device} or by @b{loading from disk}.  This section describes loading.@*
2599 The loading and playing of files is just as you would expect.  Just go to 
2600 @b{file->Load Files}, select a file for loading, and click @b{ok}.  Depending on 
2601 the setting of the Insertion Strategy list box, your file will be either loaded 
2602 on the Resources Media window or directly on the Program window. In this last 
2603 case, click the forward play button and it should start playing, regardless of 
2604 whether a progress bar has appeared.
2606 @center @image{manual_images_intl/load, 80mm}
2607 @center @b{The Load window}
2609 If the file is a still image, the project's attributes are not changed and the
2610 first frame of the track becomes the image.  If the file has audio, Cinelerra
2611 may build an index file in order to speed up drawing.  You can edit and play the
2612 file while the index file is being built.
2614 @menu
2615 * Insertion strategy::
2616 * Loading multiple files::
2617 * Loading files from the command prompt::
2618 * Filtering files by extension::
2619 * Loading other formats::
2620 @end menu
2622 @c cincvdoc_node_number_78
2623 @node Insertion strategy
2624 @subsection Insertion strategy
2625 @cindex Insertion strategy
2626 @cindex Strategy, insertion
2628 Usually, three things happen when you load a file:
2629 @enumerate 1
2630 @item the existing project is cleared from the screen
2631 @item the project's attributes are changed to match the file's attributes
2632 @item the new file's tracks are created in the timeline
2633 @end enumerate
2634 However, Cinelerra lets you change what happens when you load a file.@*
2635 In the @b{Load} dialog window go to the @b{Insertion strategy} box and select one of 
2636 the options of the drop down menu.
2637 Each of these options loads the file a different way.
2638 @itemize @bullet
2639 @item @b{Replace current project}@*
2640 All tracks in the current project are deleted and a set of new tracks are created to
2641 match the source file. Project attributes are only changed when loading XML. If
2642 multiple files are selected for loading, Cinelerra adds a set of new tracks for each 
2643 file. New resources are created in the Resources Window, replacing the current ones.
2645 @item @b{Replace current project and concatenate tracks}@*
2646 Same as replace current project, except that if multiple files are selected, Cinelerra
2647 will concatenate the tracks of each file, inserting different source files in the
2648 same set of tracks, one after another, in alphanumeric order, starting at 0. 
2649 New resources are created in the Resources Window, replacing the current ones.
2651 @item @b{Append in new tracks}@*
2652 The current project is not deleted and new tracks are created for the source,
2653 one set of tracks for each file. New resources are created in the Resources Window
2655 @item @b{Concatenate to existing tracks}@*
2656 The current project is not deleted and new files are concatenated to the existing 
2657 armed tracks, inserted in the same set of tracks of the current project, one after 
2658 another, in alphanumeric order, starting at the end of the tracks. If the
2659 current project has more tracks than the source, the source file will be inserted 
2660 in the first set of armed tracks. If no tracks are armed, no files will be
2661 inserted. New resources are created in the Resources Window 
2663 @item @b{Paste at insertion point}@*
2664 The file is pasted into the timeline at the insertion point, on the first set of
2665 armed tracks. If multiple files are selected for loading, they will be inserted
2666 on the same set of tracks, one after the other. New resources are created in the 
2667 Resources Window
2669 @item @b{Create new resources only}@*
2670 The timeline is unchanged and new resources are created in the Resources Window
2671 only.
2672 @end itemize
2674 Using these options, you can almost do all your editing by loading files.@*
2675 The insertion strategy is a recurring option in many of Cinelerra's functions.
2676 In each place the options do the same thing.  @*
2677 If you load files by passing command line arguments to Cinelerra, the files are 
2678 loaded with @b{Replace current project} rules.
2680 @c cincvdoc_node_number_79
2681 @node Loading multiple files
2682 @subsection Loading multiple files
2683 @cindex Loading multiple files
2684 @cindex Files, loading multiple
2686 In the @b{Load} dialog go to the list of files.  Select a file.  Go to
2687 another file and select it while holding down @key{CTRL}.  This selects one
2688 additional file.  Go to another file and select it while holding down
2689 @key{SHIFT}.  This selects every intervening file.  This behavior is available
2690 in most list box.@*
2691 Use this method and the @b{Concatenate to existing tracks} insertion strategy
2692 to create an images slideshow or a song playlist.
2694 @c cincvdoc_node_number_80
2695 @node Loading files from the command prompt
2696 @subsection Loading files from the command prompt
2697 @cindex Loading files from the command prompt
2698 @cindex Command prompt, loading files from the
2700 Another way to load files is to pass the filenames as arguments on the command line.@*
2701 @command{cinelerra myvideo.mov myothervideo.mov}@*
2702 This starts the program with all the arguments loaded and creates new tracks for every file.
2704 @c cincvdoc_node_number_81
2705 @node Filtering files by extension
2706 @subsection Filtering files by extension
2707 @cindex Filtering files by extension
2708 @cindex Files, extension
2709 @cindex Extension, filtering files by
2711 If there are too many files in your media directory, it can be difficult to 
2712 find the file you want.  For this purpose, the @b{Load}
2713 window allows you to filter which files are displayed in the list box by extension name.@*
2714 Click the dropdown box (right below the file name text box)
2715 and select the file extension of your media (i.e.  mpg,
2716 mov, mp3, avi, etc).  The file list now shows only files with the selected
2717 extension.
2719 @c cincvdoc_node_number_82
2720 @node Loading other formats
2721 @subsection Loading other formats
2722 @cindex Loading other formats
2723 @cindex Other formats, loading
2725 If you can not load a particular kind of video clip and do not have the
2726 original source file, you will have to convert it to a format supported by
2727 Cinelerra.  To convert your file to mpeg2 is a good solution, since Cinelerra
2728 load that format without any problem.  In that case, you should use ffmpeg to do
2729 the convertion.  However, the mpeg2 formats requires the video to have specific
2730 image size and framerates:
2731 @itemize @bullet
2732 @item @b{PAL} is 720x576 at 25 fps
2733 @item @b{NTSC} is 720x480 at 29.97 (=30000/1001) fps
2734 @end itemize
2735 For input files which do not have those properties, you should use mencoder to
2736 convert to MPEG4@.  You can identify the codecs and container of any video by
2737 running the following command:@*
2738 @command{mplayer -identify <your_video_file.xyz>}
2740 @itemize @bullet
2741 @item @b{Converting with ffmpeg:}@*
2742 @command{ffmpeg -sameq -i original_video.xyz converted_video.mpeg}@*
2743 The @option{-sameq} option maintains the original quality.
2745 @item @b{Converting with mencoder:}@*
2746 @command{mencoder original_video.xyz -ovc lavc -lavcopts vcodec=mpeg4:\}@*
2747 @command{vhq:vbitrate=6000 -oac mp3lame -lameopts br=256:vol=1 \}@*
2748 @command{-ffourcc DIVX -o converted_video.avi}
2749 @end itemize
2751 @c cincvdoc_node_number_83
2752 @node Loading the backup
2753 @section Loading the backup
2754 @cindex Loading the backup
2755 @cindex Backup, loading the
2757 There is one special XML file on disk at all times.  After every editing
2758 operation, Cinelerra saves the current project to a backup in
2759 @file{$HOME/.bcast/backup.xml}.  In the event of a crash, the first thing you should do
2760 after restarting Cinelerra is select @b{File->Load backup} in order to load the backup.
2761 This will start Cinelerra at the point in your editing operations directly before the program
2762 crashed.  It is important after a crash to restart Cinelerra
2763 without performing any editing operations as you will overwrite the backup.
2765 @c cincvdoc_node_number_84
2766 @node Saving project files
2767 @section Saving project files
2768 @cindex Saving project files
2769 @cindex Project files, saving
2770 @cindex Files, saving
2771 @cindex Files, XML
2772 @cindex XML files
2773 @cindex Paths
2775 Cinelerra saves projects as XML files. Go to @b{File->Save}. Select a file
2776 to overwrite or enter a new file.  Cinelerra automatically concatenates
2777 @samp{.xml} to the filename if no @samp{.xml} extension is given.
2779 When Cinelerra saves a file, it saves an edit decision list (EDL) of the current 
2780 project but does not save any media.
2781 The saved file consists of text. It contains all the project settings and 
2782 locations of every edit.
2783 Instead of media, the file contains pointers to the original media files on disk. 
2784 For each media file, the XML file stores either an absolute path or just the 
2785 relative path.  If the media is in the same directory as the XML file, a
2786 relative path is saved.  If it is in a different directory, an absolute path is 
2787 saved.
2789 You have to be careful when moving files around: you risk to break the media 
2790 linkages. @*
2791 You can keep the media and the XML file in the same directory forever 
2792 and freely move the whole directory, since relative paths are saved. 
2793 Alternatively you can save the XML file in a different directory than the media 
2794 but you can't move the media ever again. In this case you can freely move your 
2795 XML file around, since absolute paths are saved.@*
2796 If you saved your XML file in the same directory of your media but you 
2797 would like to move your project to another location, you can change the paths from 
2798 relative to absolute by going to @b{File->Save as...} and entering the new
2799 location.@*
2800 Similarly if you saved your project outside your media directory but you would
2801 like to move your media to another location, you can change the paths from
2802 absolute to relative by going to @b{File->Save as...} and saving your XML file in the
2803 same directory of the media.@*
2804 If you want to create an audio playlist and burn it on a CD-ROM, save 
2805 the XML file in the same directory as the audio files and burn the entire 
2806 directory. This keeps the media paths relative.
2808 It must be said that since an XML file is a text file, you can always repair broken 
2809 media linkage by editing the XML file in a text editor. For every media you 
2810 moved, search for the old path and replace it with the new one. Don't forget to 
2811 make a backup copy of your XML file before doing any editing!@*
2812 You can replace the path of every asset also within the program, by entering the
2813 new location in the @b{Asset info} window. To open this window, right click on
2814 the asset in the Resources window and choose @b{Info...} in the popup menu.
2815 Operating from the GUI is convenient only when a very small number of changes is needed.
2817 XML files are useful in saving the current state of Cinelerra before retiring 
2818 from an editing session.@*
2819 XML files are specific to Cinelerra only.  You can not play XML files in a 
2820 dedicated movie player. @* 
2821 Real-time effects in an XML file have to be re-synthesized every time you play 
2822 it back.@*
2823 The XML file also requires you to maintain copies of all the source assets on
2824 hard disk, which can take up space and cost a lot of electricity to spin.
2825 Render your projects to a final format for more persistent storage of the output.
2827 @c cincvdoc_node_number_85
2828 @node Merging projects
2829 @section Merging projects
2830 @cindex Merging projects
2831 @cindex Projects, merging
2833 To merge several separate projects into one big one :
2834 @enumerate 1
2835 @item Open Cinelerra
2836 @item Load project A
2837 @item Open a second copy of Cinelerra
2838 @item Load project B
2839 @item Cut and paste from A to B
2840 @end enumerate
2842 @c cincvdoc_node_number_86
2843 @node Program window
2844 @chapter Program window
2845 @cindex Program window
2847 @menu
2848 * Navigating the program window::
2849 @end menu
2851 This window contains the timeline and the entry point for all menu driven operations.
2852 The timeline consists of a vertical stack of tracks with a horizontal
2853 representation of time.  This defines the output of rendering operations and
2854 what is saved when you save files.  To the left of the timeline is the patchbay which
2855 contains options affecting each track.
2857 @center @image{manual_images_intl/program_insertion_point,120mm}
2858 @center @b{The timeline}
2860 Under the @b{Window} menu, you will find options that affect the main windows.
2861 @b{Default positions} repositions all the windows to a 4 screen editing
2862 configuration.  On dual headed displays, the @b{Default positions} operation
2863 fills only one monitor with windows.
2865 @c cincvdoc_node_number_87
2866 @node Navigating the program window
2867 @section Navigating the program window
2868 @cindex Navigating the program window
2869 @cindex Program window, navigating the
2871 The program window contains many features for navigation and displays the
2872 timeline as it is structured in memory: tracks stacked vertically and extending
2873 across time horizontally.  The horizontal scroll bar allows you to scan across
2874 time.  The vertical scroll bar allows you to scan across tracks.
2876 @menu
2877 * Video and audio tracks::
2878 * Track navigation::
2879 * The zoom panel::
2880 * The track popup menu::
2881 * The insertion point::
2882 * Editing modes::
2883 * The in/out points::
2884 * Using labels in the program window::
2885 @end menu
2887 @c cincvdoc_node_number_88
2888 @node Video and audio tracks
2889 @subsection Video and audio tracks
2890 @cindex Video tracks
2891 @cindex Audio tracks
2892 @cindex Tracks, video and audio
2894 @center @image{manual_images_intl/track_video,120mm}
2895 @center @b{A video track}
2897 Video tracks represent the duration of your videos and clips, just as if you placed real
2898 photographic film stock end-to-end on a table.  The individual images you see on the
2899 track are samples of what is located at that particular instant on the timeline.
2901 @center @image{manual_images_intl/track_audio,120mm}
2902 @center @b{An audio track}
2904 Audio tracks represent your sound media as an audio waveform.  Following the film
2905 analogy, it would be as if you "viewed" magnetic tape horizontally on your
2906 table.
2908 You can adjust the horizontal and vertical magnification of the tracks and the
2909 magnification of the audio "waveform" display using the @b{zoom panel bar} controls.@*
2910 Every track on the timeline has a set of attributes on the left, called the
2911 @b{patch bay}.  It is used to control the behavior of the tracks.
2912 The most important attribute is @b{arm track}. 
2914 @c cincvdoc_node_number_90
2915 @node Track navigation
2916 @subsection Track navigation
2917 @cindex Track navigation
2918 @cindex Navigation, track
2920 Track Navigation involves both selecting a specific audio or video track and
2921 moving to a certain time in the track.  The program window contains many
2922 features for navigation and displays the timeline as it is structured in
2923 memory.
2925 The vertical scroll bar allows you to scan across tracks. For vertical scrolling
2926 you can use also the mouse wheel.
2928 The horizontal scroll bar allows you to scan across time. For horizontal scrolling
2929 you can use also the mouse wheel with the @key{CTRL} key.
2931 In addition to the graphical tools, you may also use the keyboard
2932 to navigate.  As a general rule, keyboard navigation is faster than navigation
2933 with a mouse.
2934 Use @key{PAGE UP} and @key{PAGE DOWN} to scroll up and down the
2935 tracks.
2937 You will often need to scroll beyond the end of the timeline, but the scrollbars
2938 will not let you do it.  Instead, use the RIGHT arrow to scroll past the end of
2939 timeline.
2941 Use the @key{HOME} and @key{END} keys to instantly go to the beginning or end
2942 of the timeline.  In @b{I-beam} mode, hold down @key{SHIFT} while pressing
2943 @key{HOME} or @key{END} in order to select the region of the timeline between the
2944 insertion point and the key pressed.
2946 @c cincvdoc_node_number_352
2947 @node The zoom panel
2948 @subsection The zoom panel
2949 @cindex Zoom panel
2951 Below the timeline, you will find the zoom panel.  The zoom panel contains values
2952 for @b{sample zoom} (duration visible on the timeline), @b{amplitude} (audio waveform scale), @b{track zoom} (height of tracks in the timeline), and @b{curve zoom}(automation range).  In addition
2953 to the scrollbars, these zooms are the main tools for positioning the
2954 timeline.
2956 @center @image{manual_images_en/zoompanel,100mm}
2958 @cindex Sample zoom
2959 Changing the @b{sample zoom} causes the unit of time displayed in the timeline to change size.  It
2960 allows you to view your media all the way from individual frames to the
2961 entire length of your project.  The higher the setting, the more frames you can see per
2962 screen. .@*
2963 Use the @kbd{UP} and @kbd{DOWN} arrows to change the sample zoom by a power of two.@*
2964  @b{If your mouse has a wheel and it works in X11, mouseover the tumblers and use the wheel to zoom in and out.}
2966 @cindex Amplitude
2967 The @b{amplitude} only affects audio.  It determines how large the waveform appears.@*
2968 @kbd{CTRL-UP} and @kbd{CTRL-DOWN} cause the amplitude zoom to change.
2970 @cindex Track zoom
2971 The @b{track zoom} affects all tracks.  It determines the height of each track.
2972 If you change the track zoom, the amplitude zoom compensates so that the audio waveforms
2973 look proportional.@*
2974 @kbd{CTRL-PGUP} and @kbd{CTRL-PGDOWN} cause the track zoom to change.
2976 @cindex Curve zoom
2977 The @b{curve zoom} affects the curves in all the tracks of the same type. It
2978 determines the value range for curves. First select the automation type (audio 
2979 fade, video fade, zoom, X,Y) then use the left tumblers for the minimum value and 
2980 the right tumblers for the maximum value or manually enter the values in the
2981 text box. Normally you will use -40.0 to 6.0 for audio fade and 0.0 to 100.0 for
2982 video fade. @xref{The patchbay}.@*
2983 The tumblers changes curve amplitude, but the only way to curve offset 
2984 is to use the @b{fit curves} button
2985 @image{manual_images_intl/fit_curves}.@*
2986 @kbd{ALT-UP} and @kbd{ALT-DOWN} cause the curve amplitude to change.
2988 @c cincvdoc_node_number_91
2989 @node The track popup menu
2990 @subsection The track popup menu
2991 @cindex The track popup menu
2993 Each Track has a popup menu.  To activate the @b{track popup menu}, RIGHT-click
2994 on the track.  The popup menu affects the track whether the track is armed on the
2995 @b{patch bay} or not.  The Track Menu contains a number of options:
2996 @itemize @bullet
2997 @item Attach Effect - opens a dialog box of effects applicable to the type of track (audio/video)
2998 @item Move up - moves the selected track one step up in the stack.
2999 @item Move down - moves the selected track one step down in the stack.
3000 @item Delete track - removes the track from the timeline
3001 @item Add Track - adds a track of the same media type (audio/video) as the one
3002 selected.
3003 @item Resize Track - resizes the track
3004 @item Match Output Size - resizes the track to match the current output size
3005 @end itemize
3007 @c cincvdoc_node_number_92
3008 @node The insertion point
3009 @subsection The insertion point
3010 @cindex Insertion point
3012 The insertion point is the flashing hairline mark that vertically spans the timeline in the program window.
3013 Analogous to the cursor on your word processor, the
3014 insertion point marks the place on the timeline where the next activity will begin.  It's the point where a paste operation takes place. 
3015 When rendering, it defines the beginning of the region of the timeline to be rendered.
3016 It is also the starting point of all playback operations.
3018 @center @image{manual_images_intl/program_insertion_point,100mm}
3019 @center @b{The insertion point on the main window,}
3020 @center @b{represented as a vertical hair-line at the 00:00.500 point}
3022 Normally, the insertion point is moved by clicking inside the main timebar.  Any 
3023 region of the timebar not obscured by labels and in or out points is a hotspot 
3024 for repositioning the insertion point.
3025 In cut and paste editing mode only, the insertion point can be moved also by 
3026 clicking in the timeline itself.
3028 @center @image{manual_images_intl/main_timebar,160mm}
3029 @center @b{The main timebar}
3031 When moving the insertion point the position is either aligned to frames or aligned to samples.  When editing
3032 video, you will want to align to frames.  When editing audio you will want to align to samples.  Select your preference by using @b{Settings->Align cursor on frames}.
3034 @c cincvdoc_node_number_353
3035 @node Editing modes
3036 @subsection Editing modes
3037 @cindex Editing modes
3038 @cindex Modes, editing 
3040 Editing modes are two different methods of operation that affect the insertion point and the editing on the timeline.@*
3041 They are:@*
3042 @itemize @bullet
3043 @item drag and drop mode
3044 @item cut and paste mode
3045 @end itemize
3047 The editing mode is determined by selecting the arrow or the i-beam in the 
3048 buttonbar. Alternatively you can use @key{e} as a keyboard shortcut to toggle 
3049 between modes.
3051 @center @image{manual_images_intl/editing_mode,15mm}
3052 @center @b{The editing mode buttons}
3054 @cindex Drag and drop mode
3055 @cindex Mode, drag and drop
3056 If the arrow is highlighted, it enables @b{drag and drop mode}.@*
3057 In drag and drop mode, clicking in the timeline does not reposition the insertion point.@*
3058 Double-clicking in the timeline selects the entire edit the mouse pointer is over. @* 
3059 Dragging in the timeline repositions the edit the mouse pointer is over.  This is useful for reordering audio playlists, sorting movie scenes, moving effects around.@*
3060 To cut and paste in drag and drop mode you need to set
3061 @b{in/out points} to define an affected region. @xref{The in/out points}. @*
3062 @xref{Drag and drop editing}. 
3064 @cindex Cut and paste mode
3065 @cindex Mode, cut and paste
3067 If the i-beam is highlighted it enables @b{cut and paste mode}.@*  
3068 In cut and paste mode, clicking in the timeline repositions the insertion point. @* 
3069 Double-clicking in the timeline selects the entire edit the cursor is over.@*
3070 Dragging in the timeline highlights a region.  The highlighted region becomes 
3071 the region affected by cut and paste operations and the playback range during 
3072 the next playback operation.
3073 @key{SHIFT}-clicking in the timeline extends the highlighted region.
3075 @center @image{manual_images_intl/program_highlight,100mm}
3076 @center @b{Tracks with highlighted area, shown inside the green outline}
3078 When highlighting a region, the start and end points are either aligned to 
3079 frames or aligned to samples.  When editing video, you will want to align to 
3080 frames.  When editing audio you will want to align to samples.  Select your 
3081 preference by using @b{settings->align cursor on frames}.@*
3082 @xref{Cut and paste editing}.
3084 @anchor{r943_r944_editing_modes}@b{Note:} Cinelerra CV revisions 943 and 944 
3085 (SVN checkouts from 19 to 21 October 2006) had no editing modes buttons. 
3086 "Copy and paste" and "Drag and drop" editing modes were merged into one, 
3087 shift key being differentiation between them.  This is the case of the Gentoo ebuild
3088 media-video/cinelerra-cvs-20061020.
3090 @c cincvdoc_node_number_93
3091 @node The in/out points
3092 @subsection The in/out points
3093 @cindex In/out points
3095 In both editing modes, you can set one in point and one out point. 
3096 The in/out points define the affected region.  In drag and drop mode, they are the 
3097 only way to define an affected region.  In both cut and paste mode and drag and 
3098 drop mode, the highlighted area overrides the in/out points.  If a highlighted 
3099 area and in/out points are set, the highlighted area is affected by editing 
3100 operations and the in/out points are ignored.  If no region is highlighted, 
3101 the in/out points are used.
3103 Normally, in/out points do not affect the playback region.  The in/out points
3104 determine the playback region only if you hold down @key{CTRL} while issuing a
3105 playback command.
3107 To set in/out points, go to the timebar and position the insertion point
3108 somewhere.  Select the @image{manual_images_intl/in_point_button,5mm} @b{in point button}.
3109 Move the insertion point to a position after the in point and click the
3110 @image{manual_images_intl/out_point_button,5mm} @b{out point button}.
3112 @center @image{manual_images_intl/inout_points,160mm}
3113 @center @b{Timebar with in/out points set}.
3115 If you select either the in point or the out point, the insertion point will jump to
3116 that location.  After selecting an in point, if you click the @b{in point button}
3117 the in point will be deleted.  After selecting an out point, if you click the
3118 @b{out point button} the out point will be deleted.
3120 @b{Tip:} To quickly get rid of in/out points, without caring about where they
3121 are or if they are set or not, just double click on [ and ] buttons.  The first
3122 click will set a new point or reposition an old one at the insertion point; the
3123 second click will delete it.  Obviously this trick does not work if the in point 
3124 or the out point is already set at insertion point.
3126 If you select a region somewhere else while in/out points already exist, 
3127 the existing points will be repositioned when you click the in/out buttons.
3129 @key{SHIFT}-clicking on an in/out point highlights the region between the
3130 insertion point and that in/out point.  If a region is already highlighted, it
3131 extends the highlighted region up to that in/out point.
3133 Instead of using the button bar, you can use the @key{[} and @key{]} keys to
3134 toggle in/out points.
3136 In both cut and paste editing mode and drag and drop editing mode, in/out
3137 points override the highlighted area.  If a highlighted area and in/out points
3138 are set, the highlighted area affects playback while the in/out points affect
3139 editing operations.  To avoid confusion, it is better to use either highlighting
3140 or in/out points but not both simultaneously.
3142 The insertion point and the in/out points allow you to define an affected
3143 region, but they do not let you jump to exact points on the timeline very easily.
3144 For this purpose there are labels.
3146 @c cincvdoc_node_number_94
3147 @node Using labels in the program window
3148 @subsection Using labels in the program window
3149 @cindex Labels, using in the program window
3151 Labels are an easy way to set exact locations on the timeline that you want to jump
3152 to.  When you position the insertion point somewhere and click the
3153 @image{manual_images_intl/label_button,5mm} @b{label button}, a new label appears on the
3154 timeline.
3156 @center @image{manual_images_intl/timebar_label,160mm}
3157 @center @b{Timebar with a label on it}
3159 No matter what the zoom settings are, clicking on the label highlights it and 
3160 positions the insertion point exactly where you set the label. Hitting the @key{l} key 
3161 has the same effect as the label button.
3163 Labels can reposition the insertion point when they are selected but they can
3164 also be traversed with the @image{manual_images_intl/label_traversal,15mm} @b{label
3165 traversal} buttons.  When a label is out of view, the label traversal buttons
3166 reposition the timeline so the label is visible.  There are keyboard shortcuts
3167 for label traversal, too.
3169 @b{CTRL-LEFT} repositions the insertion point on the previous label.
3171 @b{CTRL-RIGHT} repositions the insertion point on the next label.
3173 With label traversal you can quickly seek back and forth on the timeline but you 
3174 can also select regions.
3176 @b{SHIFT-CTRL-LEFT} highlights the region between the insertion point and the
3177 previous label.
3179 @b{SHIFT-CTRL-RIGHT} highlights the region between the insertion point and
3180 the next label.
3182 @b{Double-clicking} on the timebar between two labels highlights the region between 
3183 the labels.
3185 @b{SHIFT-clicking} on a label highlights the region between that label and the
3186 insertion point.  If a region is already highlighted, it extends the
3187 highlighted region up to that label.
3189 If you hit the label button when a region is highlighted, labels are
3190 created at each end of the highlighted region.  However, if one end already has a 
3191 label, then the existing label is deleted.
3193 Hitting the label button again when a label is selected deletes it.
3194 Manually hitting the label button or @key{l} key over and over again to delete
3195 a series of labels can get tedious.  To delete a set of labels, first
3196 highlight a region.  Second, use the @b{Edit->Clear labels} function.  If
3197 in/out points exist, the labels between the in/out points are cleared and the
3198 highlighted region is ignored.
3200 In Cut and Paste editing mode only, by enabling @b{Edit labels} in the
3201 settings menu, or by disabling the @image{manual_images_intl/locklabels_unlocked,5mm}
3202 @b{Lock labels from moving} button on the program toolbar labels will be cut,
3203 copied or pasted along with the selected region of the first armed track.@*
3204 Similarly, if a selected area of a resource is spliced from the viewer to the
3205 timeline in a position before labels, these labels will be pushed to the right
3206 on the timebar for the length of the selected area.@*
3207 To prevent labels from moving on the timebar, just disable the
3208 @b{Edit labels} option or enable the @image{manual_images_intl/locklabels_unlocked,5mm}
3209 @b{Lock labels from moving} button.@*
3210 In Drag and Drop editing mode labels will be always locked to the timebar,
3211 even with the @b{Edit labels} option enabled.
3213 @c cincvdoc_node_number_95
3214 @node Editing
3215 @chapter Editing
3216 @cindex Editing
3218 Editing comprises both the time domain and the track domain.  Since the
3219 timeline consists of a stack of tracks, you need to worry about how to create and 
3220 sort tracks in addition to what time certain media appears on a track.
3222 In the time domain, Cinelerra offers many ways to approach the editing process.
3223 The three main methods are two screen editing, drag and drop editing, and cut
3224 and paste editing.
3226 There are several concepts Cinelerra uses when editing which apply to all the
3227 methods. 
3229 The @b{timeline} is where all editing decisions are represented.
3230 This is a stack of tracks in the center of the main window.  It can be scrolled
3231 up, down, left and right with the scrollbars on the right and bottom of it.  It
3232 can also be scrolled up and down with a mouse wheel, left and right with a mouse
3233 wheel and the @key{CTRL} key.
3235 The @b{active region} is the range of time which is affected by editing
3236 commands on the timeline.  The active region is determined first by the
3237 presence of in/out points in the timeline.  If those do not exist the
3238 highlighted region is used.  If no highlighted region exists the insertion
3239 point is used as the start of the active region.  Some commands treat all the
3240 space to the right of the insertion point as active while others treat the active 
3241 length as 0 if no end point for the active region is defined.
3243 Finally, editing decisions never affect source material.  This is @b{non
3244 destructive editing} and it became popular with audio because it was much
3245 faster than if you had to copy all the media affected by an edit.  Editing only
3246 affects pointers to source material, so if you want to have a media file at the
3247 end of your editing session which represents the editing decisions, you need to
3248 @b{render} it.  @xref{Rendering files}. @xref{Saving project files}.
3250 @xref{Editing Media shortcuts}, for information about the editing controls
3251 keyboard shortcuts.
3253 @menu
3254 * The patchbay::           Enabling different features on different tracks
3255 * Nudging tracks::         Shift entire tracks horizontally
3256 * Panning audio tracks::   Changing the audio output channels
3257 * Automatic audio track panning::  Panning audio tracks to common speaker arrangements
3258 * Standard audio mappings::  Making audio panning that works on other players.
3259 * Manipulating tracks::    Moving whole tracks around
3260 * Two screen editing::     Using two video windows to edit
3261 * Drag and drop editing::  Dragging objects to edit
3262 * Cut and paste editing::  Editing media like text
3263 * Trimming::               Changing edit boundaries
3264 @end menu
3266 @c cincvdoc_node_number_96
3267 @node The patchbay
3268 @section The patchbay
3269 @cindex Patchbay
3271 On the left of the timeline is a region affectionately known as the patchbay.
3272 The patchbay enables features specific to each track. 
3274 All tracks have a @b{text area} for naming the track.
3276 All tracks have an @b{expander} @image{manual_images_intl/expandpatch_checked,5mm} for
3277 viewing more options on the patchbay and for viewing the effects represented on the track.  
3278 Click on the expander to expand or collapse the patchbay and the track.  If it is 
3279 pointing sideways, the track is collapsed.  If it is pointing down, the track is expanded.  
3280 Existing effects appear below the media for the track.
3282 All tracks have the following row of toggles for several features.
3284 @center @image{manual_images_en/track_attributes}
3285 @center @b{Track attributes}
3287 If the toggle is colored, the feature is enabled.  If the toggle is the background color
3288 of most of the windows, it is disabled.  Click on the toggle to enable or
3289 disable the feature.  Several mouse operations speed up the configuration of
3290 several tracks at a time.
3292 Click on an attribute and drag the cursor across adjacent tracks to copy the same
3293 attribute to those tracks.
3295 Hold down @key{SHIFT} while clicking a track's attribute to enable the
3296 attribute in the current track and toggle the attribute in all the other
3297 tracks.
3299 Hold down @key{SHIFT} while clicking an attribute.  Click until all the tracks
3300 except the selected one are disabled.  Then drag the cursor over the adjacent
3301 track to enable the attribute in the adjacent track.
3303 The attributes affect the output of the track:
3304 @cindex Play track
3305 @cindex Track, play
3306 @itemize @bullet
3307 @item @b{Play track}@*
3308 Determines whether the track is rendered or not.  If it is off,
3309 the track is not rendered. For example if you turn it off in all the video
3310 tracks, the rendered media file will have only audio tracks.  However, if the track 
3311 is chained to any other tracks by a shared track effect, the other tracks perform all the effects 
3312 in this shared track, regardless of play status of the shared track that in this
3313 particular case affects the media output but not fade and effects. @xref{Realtime effect types}.
3315 @cindex Arm track
3316 @cindex Track, arm
3317 @item @b{Arm track}@*
3318 Determines whether the track is armed or not.  Only the armed tracks are affected 
3319 by editing operations.  Make sure you have enough armed destination tracks when 
3320 you paste or splice material or some tracks in the material will get left out.@*
3321 In addition to restricting editing operations, the armed tracks in combination
3322 with the active region determine where material is inserted when loading files.
3323 If the files are loaded with one of the insertion strategies which do not delete
3324 the existing project, the armed tracks will be used as destination tracks.@*
3325 Press @key{TAB} while the cursor is anywhere over a track to toggle the track
3326 arming status.@*
3327 Press @kbd{SHIFT-TAB} while the cursor is over a track to toggle the arming
3328 status of every other track.
3330 @cindex Gang fader
3331 @cindex Fader, gang
3332 @item @b{Gang fader}@*
3333 Causes the fader to track the movement of whatever other fader
3334 you are adjusting by dragging either the fader or the curve on the track. 
3335 It doesn't affect the editing made with menu controls. A fader is only ganged 
3336 if the @b{arm track} is also on.
3337 This is normally used to adjust audio levels on all the tracks simultaneously.
3338 Gang also causes @b{Nudge} parameters to synchronize across all the ganged tracks.
3340 @cindex Draw media
3341 @cindex Media, draw
3342 @item @b{Draw media}@*
3343 Determines if picons or waveforms are drawn on the asset in the track.  By
3344 default, some file formats load with this off while other file formats load
3345 with it on.  This depends on whether the file format takes a long time to draw
3346 on the timeline.  Merely set it to on if you want to see picons for any file
3347 format.
3349 @cindex Mute track
3350 @cindex Track, mute
3351 @item @b{Mute track}@*
3352 Causes the output to be thrown away once the track is completely
3353 rendered.  This happens whether or not @b{play track} is on. For example if you
3354 mute all the video tracks, the rendered media file will have a blank video track. 
3355 If a track is part of a shared track effect, the output of the track with the
3356 shared track effect is overlaid on the final output even though it is routed back 
3357 to another track (the shared track). 
3358 Mute track is used to keep the track with the shared track effect from overlapping 
3359 the output of the source track (the shared track) where the shared track effect
3360 is not present. @xref{Realtime effect types}.
3362 @cindex Fader
3363 @item @b{Fader}@*
3364 All tracks have a fader, but the units of each fader depend on whether it is
3365 audio or video.@*
3366 Audio fade values are in dB. They represent relative levels, where 0 is 
3367 the unaltered original sound level, -40 is silence, -80 the minimum value set by
3368 default. You can move fader and keyframes down to -80 but the parameter's curve won't go 
3369 below -40. For your convenience you can set a different fade range with the
3370 curve zoom. @xref{The zoom panel}. Audio faders' main purpose is to "fade out" sound
3371 or to lower the sound level smoothly to silence, or "fade in" to make sounds appear 
3372 gradually instead of suddenly. @*
3373 Video fade values are the percentage of opacity
3374 of the image in normal overlay mode, the percentage of the layer that  
3375 is mixed into the render pipeline in the other overlay modes. @xref{Overlay
3376 modes}. @*
3377 Click and drag the fader to fade the track in and out.  If it
3378 is ganged to other tracks of the same media type, with the @b{arm} option
3379 enabled, the other faders should follow.  Hold down @key{SHIFT} and drag a
3380 fader to center it on the original source value (0 for audio, 100 for video).
3381 @end itemize
3383 @c cincvdoc_node_number_97
3384 @node Nudging tracks
3385 @section Nudging tracks
3386 @cindex Nudging tracks
3387 @cindex Tracks, nudging
3389 Each track has a nudge textbox in its patchbay.  You may have to expand the
3390 track to see it.  These are views of the patchbays when expanded.
3392 @center @image{manual_images_en/apatches}
3393 @center @b{Pan and nudge for an audio track}
3395 @center @image{manual_images_en/vpatches}
3396 @center @b{Overlay mode and nudge for a video track}
3398 The nudge value is the amount the track is shifted left or right during playback.
3399 The track is not displayed shifted on the timeline, but it is shifted when it
3400 is played back.  This is useful for synchronizing audio with video, creating
3401 fake stereo, or compensating for an effect which shifts time, all without
3402 tampering with any edits.
3404 Merely enter the amount of time to shift to instantly shift the track.
3405 Negative numbers make the track play later.  Positive numbers make the track
3406 play sooner.  The nudge units are either @b{seconds} or the native units for
3407 the track (@b{frames} or @b{samples}). Select the units by @b{right clicking} 
3408 on the nudge textbox and using the context sensitive menu.
3410 Nudge settings are ganged with the @b{Gang faders} toggle and the @b{Arm track}
3411 toggle.
3413 Use the mouse wheel over the nudge textbox to increment and decrement it.
3415 @c cincvdoc_node_number_98
3416 @node Panning audio tracks
3417 @section Panning audio tracks
3418 @cindex Panning audio tracks
3419 @cindex Tracks, panning
3420 @cindex Audio tracks, panning
3422 Audio tracks have a panning box in their patchbays.  A patchbay may have to be expanded
3423 to see the panning box.  The panning box is shown here.
3425 @center @image{manual_images_en/apatches}
3426 @center @b{Pan and nudge for an audio track}
3428 Position the pointer in the panning box and click/drag to reposition the audio
3429 output among the speaker arrangement.  The loudness of each speaker is printed
3430 on the relative icon during the dragging operation.  
3431 The panning box uses a special algorithm to try to allow audio to be focused 
3432 through one speaker or branched between the nearest speakers when more than 2 
3433 speakers are used.
3435 @c cincvdoc_node_number_99
3436 @node Automatic audio track panning
3437 @section Automatic audio track panning
3438 @cindex Track panning, automatic
3439 @cindex Audio track panning, automatic
3441 Several convenience functions are provided for automatically setting the
3442 panning to several common standards.  They are listed in the @b{Audio} menu.
3443 These functions only affect armed audio tracks. They are:
3445 @itemize @bullet
3446 @item @b{Audio->Map 1:1}@*
3447 This maps every track to its own channel and wraps around when all the
3448 channels are allocated.  It is most useful for making 2 tracks with 2 channels
3449 map to stereo and for making 6 tracks with 6 channels map to a 6 channel
3450 soundcard.
3451 @item @b{Audio->Map 5.1:2}@*
3452 This maps 6 tracks to 2 channels.  The project should have 2 channels when
3453 using this function.  Go to @b{Settings->format} to set the output channels to
3454 2.  This is most useful for down-mixing 5.1 audio to stereo.
3455 @end itemize
3456 @xref{Audio attributes}.
3458 @c cincvdoc_node_number_100
3459 @node Standard audio mappings
3460 @section Standard audio mappings
3461 @cindex Standard audio mappings
3462 @cindex Audio mappings, standard
3464 Although Cinelerra lets you map any audio track to any speaker, there are
3465 standard mappings you should use to ensure the media can be played back
3466 elsewhere.  Also, most audio encoders require the audio tracks to be mapped to
3467 standard speaker numbers or they will not work.
3469 @cindex Channel position
3470 @cindex Position, channel
3471 In the @b{channel position} widget @xref{Audio attributes}, the
3472 channels are numbered to correspond to the output tracks they are rendered to.
3473 For stereo, the source of channel 1 needs to be the left track and the source
3474 of channel 2 needs to be the right track.
3476 For 5.1 surround sound, the sources of the 6 channels need to be in the order
3477 of center, front left, front right, back left, back right, low frequency
3478 effects.  If the right tracks are not mapped to the right speakers, most audio
3479 encoders will not encode the right information if they encode anything at all.
3480 The low frequency effects track specifically can not store high frequencies in
3481 most cases.
3483 @c cincvdoc_node_number_101
3484 @node Manipulating tracks
3485 @section Manipulating tracks
3486 @cindex Manipulating tracks
3487 @cindex Tracks, manipulating
3489 Tracks in Cinelerra either contain audio or video.  There is no special
3490 designation for tracks other than the type of media they contain.  When you
3491 create a new project, it contains three default tracks: one video track
3492 and two audio tracks.  You can still add and delete tracks from the menus. 
3493 The Tracks menu contains a number of options for dealing with multiple tracks 
3494 simultaneously. Each track itself has a popup menu which affects one track. 
3495 @xref{The track popup menu}.
3497 @cindex Tracks menu
3498 Operations in the @b{Tracks} menu affect only tracks which are armed.
3499 @itemize @bullet
3500 @item @b{Move tracks up} and @b{Move tracks down} shift all the armed tracks up
3501 or down the stack.
3502 @cindex Delete tracks
3503 @cindex Tracks, delete
3504 @item @b{Delete tracks} deletes the armed tracks.
3505 @item @b{Delete last track} deletes the last track, whether it is armed or not.
3506 Holding down the @key{d} key quickly deletes all the tracks.
3507 @cindex Concatenate tracks
3508 @cindex Tracks, concatenate
3509 @item @b{Concatenate tracks} is more complicated. This operation copies all the 
3510 assets of every disarmed but playable track and concatenates it by pasting those 
3511 assets at the end of the first set of armed tracks. They are pasted one after the 
3512 other, keeping the same order they have on the stack. If there are two armed tracks 
3513 followed by two disarmed tracks, the concatenate operation copies the assets of the 
3514 two disarmed tracks and pastes them after the assets of the two armed tracks. If 
3515 there are three disarmed tracks instead, the assets of two tracks are pasted after 
3516 the assets of the armed tracks and the assets of the third track are pasted at the 
3517 end of the first armed track. The destination track wraps around until all the 
3518 disarmed tracks are concatenated. Disarmed tracks that are not playable are not 
3519 concatenated.
3520 @end itemize
3522 Finally, you will want to create new tracks.  The @b{Audio} and @b{Video} menus
3523 each contain an option to add a track of their specific type.  In the case of
3524 audio, the new track is put on the bottom of the timeline and the output
3525 channel of the audio track is incremented by one.  In the case of video, the
3526 new track is put on the top of the timeline.  This way, video has a natural
3527 compositing order.  New video tracks are overlaid on top of old tracks.
3529 @c cincvdoc_node_number_102
3530 @node Two screen editing
3531 @section Two screen editing
3532 @cindex Two screen editing
3533 @cindex Three points editing
3535 This is the fastest way to construct a program out of movie files.  The idea
3536 consists of viewing a movie file in one window and viewing the program in
3537 another window.  Subsections of the movie file are defined in the viewer window and
3538 transferred to the end of the program in the program window.
3540 The way to begin a two screen editing session is to load some resources.  In
3541 @b{File->Load files...} load some movies with the insertion mode @b{Create new
3542 resources only}.  You want the timeline to stay unchanged while new resources are
3543 brought in.  Go to the Resource Window and select the @b{Media} folder.  The
3544 newly loaded resources should appear.  Double click on a resource or drag it 
3545 from the media side of the window over the Viewer window.
3547 There should be enough armed tracks on the timeline to put the subsections of
3548 source material that you want (usually one video track and two audio tracks).  
3549 If there are not, create new tracks or arm more tracks.
3551 In the viewer window, define a clip out of your movie file:@*
3553 @itemize @bullet
3554 @item Set the starting point with the @image{manual_images_intl/in_point_button,5mm} 
3555 @b{in point button}.
3556 @item Seek to the ending point of the clip you want to use.
3557 @item Set the ending point with the @image{manual_images_intl/out_point_button,5mm} 
3558 @b{out point button}.
3559 @end itemize
3561 The two points should now appear on the timebar and define a clip.@*
3562 There are several things you can do with the clip now:
3564 @itemize @bullet
3565 @item @b{Splice}@*
3566 @image{manual_images_intl/splice_button,5mm} Inserts the selected area in the 
3567 timeline after the insertion point.@*
3568 After the splice has taken effect, the insertion point moves to the end of the
3569 edit ready to be used as the next splice location. This way you can
3570 continuously build up the program by splicing.@*
3571 If an in point or an out point exists on the timeline the clip is inserted
3572 after the in point or after the out point.@*
3573 If both in and out points are set on the timeline, the clip is inserted after
3574 the in point.@*
3575 If there are edits after your chosen splice location on the timeline, they will
3576 be pushed to the right.
3577 @item @b{Overwrite}@*
3578 @image{manual_images_intl/overwrite_button,5mm} Overwrites the region of the 
3579 timeline after the insertion point with the clip.@*
3580 If an in point or an out point exists on the timeline the clip is
3581 overwritten after the in point or after the out point.@*
3582 If both in and out points are set on the timeline, the clip is inserted after
3583 the in point.@*
3584 If a region is highlighted or both in and out points exist they limit the region of
3585 the overwriting and the clip may therefore be shortened.  This is so clever 
3586 that it is worth the following detailed description.@*
3587 @b{TIP: To overwrite exactly on a precise region of the timeline:}@*
3588 - Arm only tracks to change.@*
3589 - Define the destination region on the timeline with [ and ].@*
3590 - Define the clip you want to use in the viewer with [ and ].@*
3591 - Overwrite from Viewer to the timeline.@* 
3592 If the destination region is shorter than the clip defined in the viewer, the portion 
3593 of the clip longer than the destination region won't be inserted. 
3594 On the timeline the following edits won't move.@*
3595 Beware: If the destination region is longer than the clip defined in the
3596 viewer, the destination region will shrink. On the timeline the following edits
3597 will move to the left.
3598 @item @b{Create a clip}@*
3599 @image{manual_images_intl/toclip_button,5mm} Generates a new clip for the resource window
3600 containing the affected region but does not change the timeline.  Every clip
3601 has a title and a description.  These are optional.
3602 @item @b{Copy}@*
3603 @xref{Cut and paste editing}, it behaves the same.
3604 @end itemize
3606 Two screen editing can be done purely by keyboard shortcuts.  When you move the
3607 mouse pointer over any button a tooltip should appear, showing what key is bound to
3608 that button.  In the Viewer window, the number pad keys control the transport
3609 and the @key{[} @key{]} @key{v} keys perform in/out points and splicing.
3611 @c cincvdoc_node_number_103
3612 @node Drag and drop editing
3613 @section Drag and drop editing
3614 @cindex Drag and drop editing
3615 @cindex Editing, drag and drop
3617 @b{Drag and drop editing} is a quick and simple way of working in Cinelerra,
3618 using only the mouse.  The basic idea is to create a bunch of clips, then drag
3619 them in order into the timeline building a prototype film that you can watch on
3620 the compositor.  If after watching it, you wish to re-arrange your clips, set
3621 effects, add transition or insert/delete material, just drag and drop them on
3622 the timeline.
3624 @enumerate 1
3625 @item Load some files using @b{File->Load files...}.
3626 @item Set the insertion mode to @b{Create new resources only}. This loads the files
3627 into the Resource Window.
3628 @item Create some video and audio tracks on the timeline using the @b{Video} and
3629 @b{Audio} menus.
3630 @item Open the @b{Media} folder in the resource window.
3631 @item Make sure the necessary tracks are armed and drag a media file from the
3632 resource window to the timeline.  If the media has video, drag it onto a video
3633 track.  If the media is pure audio, drag it onto an audio track. If the media is
3634 a still image, drag it onto a video track.
3635 @end enumerate
3637 @center @image{manual_images_intl/drag_to_program,70mm}
3639 Cinelerra fills out the audio and video tracks below the dragging cursor with
3640 data from the file.  This affects what tracks you should create initially and
3641 which track to drag the media onto. @*
3642 To drag and drop a file on the Program window, you need to create on the timeline 
3643 the same set of tracks of your media file.@*
3644 A common camcorder file has a set of one video track and two audio tracks. In
3645 this case you will need one video track and two audio tracks and the media should 
3646 be dragged over the first video track. @*
3647 If the media has audio only you will need one audio track on the timeline for every 
3648 audio track in the media and the media should be dragged over the first audio
3649 track.@*
3650 If the media is a still image, you will need a video track only.
3652 When you drag your chosen media from the media folder to the timeline, your 
3653 mouse pointer will drag a thumbnail and, once over the timeline, the outline 
3654 of a white rectangle, as big as the edit you are going to have.@*
3655 Drag the media to the desired position of an empty track of the timeline and drop 
3656 it. @* 
3657 If there are other edits on that track, when you move the white outline over an 
3658 edit, you will see a bow tie symbol >< appearing at edit boundaries.  If you drop 
3659 the media there, the new edit will start from the edit boundary indicated by the 
3660 center of the bow tie ><. 
3662 Since the mouse pointer is in the middle of the white outline, when this rectangle 
3663 is bigger than the visible part of the timeline, it is quite cumbersome to precisely 
3664 insert it. (This will likely happen for long media). 
3665 Lengthening the duration visible in the timeline by changing the sample zoom in 
3666 the zoom panel will reduce the size of the white rectangle, making a precise 
3667 insertion possible. 
3669 You can also drag multiple files from the resource window.  Either draw a box
3670 around the files, use @key{SHIFT}, or use @key{CTRL} when selecting files.
3671 When you drop the files in the timeline, they are concatenated.  The behavior
3672 of @key{SHIFT} and @key{CTRL} changes depending on if the resources are in text
3673 or icons.
3675 To display the resources as text or icons, right click inside the media list.
3676 Select either @b{display icons} or @b{display text} to change the list format.
3678 When displaying text in the resource window @b{SHIFT-clicking} on media files
3679 extends the number of highlighted selections.  @b{CTRL-clicking} on media files
3680 in text mode selects additional files one at a time.
3682 When displaying icons in the resource window @b{SHIFT-clicking} or
3683 @b{CTRL-clicking} selects media files one at a time.
3685 In addition to dragging media files, if you create clips and open the @b{clip}
3686 folder you can drag clips on the timeline.
3688 In the timeline there is further dragging functionality.  Dragging edits around
3689 the timeline allows you to sort music playlists, sort movie scenes, and give
3690 better NAB demos but not much else. To enable the dragging functionality of
3691 the timeline, select the arrow toggle @image{manual_images_intl/arrow,2.67mm}.@*
3694 @center Select a track with various scenes.
3696 @center @image{manual_images_intl/drop_before}
3698 @center Original track with three scenes.
3700 @center Go to scene #3, click and drag it to the middle.
3702 @center @image{manual_images_intl/drag_track}
3704 @center When you drop scene #3
3706 @center @image{manual_images_intl/drop_concept}
3708 @center scene #2 shifts to the right
3710 @center @image{manual_images_intl/drop_after}
3712 @center This is how the finished sequence looks.
3714 If more than one track is armed, Cinelerra will drag any edits which start on
3715 the same position as the edit the cursor is currently over.  In other words,
3716 you can drag and drop a group of edits.  Cinelerra recognises as a group the
3717 edits of different armed tracks that have aligned beginnings, regardless of 
3718 whether they have the same source or aligned ends.
3720 When you drag and drop edits within the timeline:@*
3721 If you drop an edit when bow ties >< are shown, the clip will be cut and pasted
3722 starting at the edit boundary indicated by the centre of the bow tie ><.
3723 Following edits on the same track will move.@*
3724 If you drop an edit when there are no bow ties >< shown, the original clip will
3725 be muted and pasted where you dropped it.  No edits will move.  A silence will
3726 appear in place of the original edit.@*
3727 If you have more armed tracks on the timeline than in the asset you are
3728 dragging, only the following edits of the tracks affected by the drag and drop
3729 operation will move to the right. This will cause loss of synchronization. To
3730 restore it, disarm the affected tracks, highlight the just dropped edit and
3731 paste silence over it (@b{Edit Menu} -> @b{Paste Silence}).
3733 In Drag and Drop editing mode you can't drag and drop labels.  They will be
3734 always locked to the timebar, even with the "Edit labels" option enabled.
3735 Still, with the "Edit labels" option enabled, if a selected area of a resource
3736 is spliced from the Viewer to the timeline in a position before labels, these
3737 labels will be pushed to the right for the length of the selected area.
3739 With in/out points you can perform Cut and Paste operations in Drag and Drop
3740 mode as well as in Cut and Paste mode.  Go to the Edit Menu to view the list
3741 and the keyboard shortcuts.
3743 @c cincvdoc_node_number_104
3744 @node Cut and paste editing
3745 @section Cut and paste editing
3746 @cindex Cut and paste editing
3747 @cindex Editing, cut and paste
3749 This is the traditional method of editing in audio editors.  In the case of
3750 Cinelerra, you either need to start a second instance of Cinelerra and copy from
3751 one instance to the other, copy from different tracks in the same instance, or load a
3752 media file into the Viewer and copy from there.
3754 Load some files onto the timeline.  To perform cut and paste editing select the
3755 @image{manual_images_intl/ibeam,1.67mm} i-beam toggle.  Select a region of the 
3756 timeline by click dragging on it and select the @image{manual_images_intl/cut,5.67mm} 
3757 cut button to cut it.  Move the insertion point to another point in the timeline 
3758 and select the @image{manual_images_intl/paste,5mm} paste button.  
3759 Assuming no in/out points are defined on the timeline this performs a cut and 
3760 paste operation.
3762 If in/out points are defined, the insertion point and highlighted region are
3763 overridden by the in/out points for clipboard operations.  Thus, with in/out
3764 points you can perform cut and paste in drag and drop mode as well as cut and
3765 paste mode.
3767 There are other operations you can do. Go to the Edit Menu to view the list and
3768 the keyboard shortcuts.
3770 In Cut and Paste editing mode you can edit labels as well. By enabling @b{Edit
3771 labels} in the Settings Menu, or by disabling the @b{Lock labels from moving
3772 button} on the Program Control Tool Bar labels will be cut, copied or pasted
3773 along with the selected regions of the armed tracks.
3775 When editing audio, it is customary to cut from one part of a waveform into the
3776 same part of another waveform.  The start and stop points of the cut are
3777 identical in each waveform and might be offset slightly, while the wave data is
3778 different.  It would be very hard to highlight one waveform to cut it and
3779 highlight the second waveform to paste it without changing the relative start
3780 and stop positions.
3782 One option for simplifying this is to open a second copy of Cinelerra, cutting
3783 and pasting to transport media between the two copies.  This way two
3784 highlighted regions can exist simultaneously.
3786 Another option is to set in/out points for the source region of the source
3787 waveform and set labels for the destination region of the destination waveform.
3788 Perform a cut, clear the in/out points, select the region between the labels,
3789 and perform a paste.
3791 A final operation in cut and paste editing is the @b{edit->clear} operation.
3792 If a region is highlighted or in/out points exist, the affected region is
3793 cleared by @b{edit->clear}.  But if the insertion point is over an edit
3794 boundary and the edits on each side of the edit boundary are the same resource,
3795 the edits are combined into one edit comprised by the resource.  The start of
3796 this one edit is the start of the first edit and the end of this one edit is
3797 the end of the second edit.  This either results in the edit expanding or
3798 shrinking.
3800 @c cincvdoc_node_number_105
3801 @node Trimming
3802 @section Trimming
3803 @cindex Trimming
3805 With some edits on the timeline it is possible to do trimming.  By trimming you
3806 shrink or grow the edit boundaries by dragging them.  In drag and drop mode or
3807 cut and paste mode, move the cursor over an edit boundary until it changes
3808 shape.  The cursor will either be an expand left or an expand right.  If the
3809 cursor is an expand left, the dragging operation affects the beginning of the
3810 edit.  If the cursor is an expand right, the dragging operation affects the end
3811 of the edit.
3813 When you click on an edit boundary to start dragging, the mouse button number
3814 determines which dragging behavior is going to be followed.  3 possible
3815 behaviors are bound to mouse buttons in the interface preferences.
3816 @xref{Interface}.
3818 The effect of each drag operation not only depends on the behavior button but
3819 whether the beginning or end of the edit is being dragged.  When you release
3820 the mouse button, the trimming operation is performed.
3822 In a @b{Drag all following edits} operation, the beginning of the edit either
3823 cuts data from the edit if you move it forward or pastes new data from before
3824 the edit if you move it backward.  The end of the edit pastes data into the
3825 edit if you move it forward or cuts data from the end of the edit if you move
3826 it backward.  All the edits thereafter shift.  Finally, if you drag the end of
3827 the edit past the start of the edit, the edit is deleted.
3829 In a @b{Drag only one edit} operation, the behavior is the same when you drag
3830 the beginning or end of an edit.  The only difference is none of the other
3831 edits in the track shift.  Instead, anything adjacent to the current edit
3832 expands or shrinks to fill gaps left by the drag operation.
3834 In a @b{Drag source only} operation, nothing is cut or pasted.  If you move the
3835 beginning or end of the edit forward, the source reference in the edit shifts
3836 forward.  If you move the beginning or end of the edit backward, the source
3837 reference shifts backward.  The edit remains in the same spot in the timeline
3838 but the source shifts.
3840 For all file formats besides still images, the extent of the trimming operation
3841 is clamped to the source file length.  Attempting to drag the start of the edit
3842 beyond the start of the source clamps it to the source start.
3844 In all trimming operations, all edits which start on the same position as the
3845 cursor when the drag operation begins are affected.  Unarm tracks to prevent
3846 edits from being affected.
3848 Most effects in Cinelerra can be figured out just by using them and tweeking.
3849 Here are brief descriptions of effects which you might not utilize fully by
3850 mere experimentation.
3852 @c cincvdoc_node_number_106
3853 @node Compositor window
3854 @chapter Compositor window
3855 @cindex Compositor window
3857 This window displays the output of the timeline.  It is the interface for most
3858 compositing operations or operations that affect the appearance of the timeline
3859 output.  Operations done in the Compositor affect the timeline but do not affect
3860 clips.
3862 @menu
3863 * Compositor controls::
3864 * Compositing::
3865 @end menu
3867 @c cincvdoc_node_number_107
3868 @node Compositor controls
3869 @section Compositor controls
3870 @cindex Compositor controls
3872 The video output has several navigation functions.  The video output size is
3873 either locked to the window size or unlocked with scrollbars for navigation.
3874 The video output can be zoomed in and out and panned.  Navigating the video
3875 output this way does not affect the rendered output; it just changes the point
3876 of view in the compositor window.
3878 If it is unlocked from the window size, middle clicking and dragging anywhere
3879 in the video pans the point of view.
3881 Hitting the @kbd{+} and @kbd{-} keys zooms in and out of the video output.
3883 Underneath the video output are copies of many of the functions available in
3884 the main window.  In addition there is a @image{manual_images_intl/cwindow_zoom,30mm}
3885 zoom menu and a @image{manual_images_intl/cwindow_light,8mm} tally light.
3887 The zoom menu jumps to all the possible zoom settings and, through the @b{Auto}
3888 option, locks the video to the window size.  The zoom menu does not affect the
3889 window size.
3891 The tally light turns red when rendering is happening.  This is useful for
3892 knowing if the output is current.
3894 Right clicking anywhere in the video output brings up a menu with all the zoom
3895 levels and some other options.  In this particular case the zoom levels resize
3896 the entire window and not just the video.
3898 The @b{reset camera} and @b{reset projector} options center the camera and
3899 projector @xref{Compositing}.
3901 @cindex Hide controls
3902 @cindex Controls, hide
3903 The @b{Hide controls} option hides everything except the video.
3905 On the left of the video output is a toolbar specific to the compositor window.
3906 Here are the functions in the toolbar:
3908 @menu
3909 * Protect video::
3910 * Magnifying glass::
3911 * Masks tool::
3912 * Camera::
3913 * Projector::
3914 * Crop tool::
3915 * Eyedropper::
3916 * Tool info::
3917 * Safe regions tool::
3918 @end menu
3920 @c cincvdoc_node_number_108
3921 @node Protect video
3922 @subsection Protect video
3923 @cindex Protect video
3924 @cindex Video, protect
3926 This disables changes to the compositor output from clicks in it.  It is an
3927 extra layer on top of the track arming toggle to prevent unwanted changes.
3929 @c cincvdoc_node_number_109
3930 @node Magnifying glass
3931 @subsection Magnifying glass
3932 @cindex Magnifying glass
3934 This tool @image{manual_images_intl/magnify,7mm} zooms in and out of the compositor
3935 output without resizing the window.  If the video output is currently locked to
3936 the size of the window, clicking in it with the magnifying glass unlocks it and
3937 creates scrollbars for navigation.
3939 Left clicking in the video zooms in.@*
3940 Ctrl clicking in the video zooms out.@*
3941 Rotating the wheel on a wheel mouse zooms in and out.
3943 @c cincvdoc_node_number_110
3944 @node Masks tool
3945 @subsection Masks tool
3946 @cindex Masks tool
3948 This tool @image{manual_images_intl/mask} brings up the mask editing tool @xref{Masks}.
3949 Enable the @image{manual_images_intl/toolwindow,2.67mm} tool window to see options
3950 for this tool.
3952 @c cincvdoc_node_number_111
3953 @node Camera
3954 @subsection Camera
3955 @cindex Camera
3957 This tool @image{manual_images_intl/camera,4.67mm} brings up the camera editing tool
3958 @xref{The camera and projector}.  Enable the
3959 @image{manual_images_intl/toolwindow,2.67mm} tool window to see options for this
3960 tool.
3962 @c cincvdoc_node_number_112
3963 @node Projector
3964 @subsection Projector
3965 @cindex Projector
3967 This tool @image{manual_images_intl/projector,4.67mm} brings up the projector
3968 editing tool @xref{The camera and projector}.  Enable the
3969 @image{manual_images_intl/toolwindow,2.67mm} tool window to see options for this
3970 tool.
3972 @c cincvdoc_node_number_113
3973 @node Crop tool
3974 @subsection Crop tool
3975 @cindex Crop tool
3977 This tool @image{manual_images_intl/crop,4.33mm} brings up the cropping tool
3978 @xref{Cropping}.  The @image{manual_images_intl/toolwindow,2.67mm} tool window must
3979 be enabled to use this tool.
3981 @c cincvdoc_node_number_114
3982 @node Eyedropper
3983 @subsection Eyedropper
3984 @cindex Eyedropper
3986 This brings up the eyedropper.  The eyedropper detects whatever color is under
3987 it and stores it in a temporary area.  Enabling the
3988 @image{manual_images_intl/toolwindow,2.67mm} tool info shows the currently selected color.
3989 Click anywhere in the video output to select the color at that point.@*
3990 The eyedropper not only lets you see areas which are clipped, but its value can
3991 be applied to many effects.  Different effects handle the eyedropper
3992 differently.
3994 @c cincvdoc_node_number_115
3995 @node Tool info
3996 @subsection Tool info
3997 @cindex Tool info
3999 This tool @image{manual_images_intl/toolwindow,2.67mm} button works only in
4000 conjunction with the other controls on the compositor.  Based on what
4001 compositing control is active the toggle button will activate/deactivate the
4002 appropriate control dialog box.
4004 Controls with dialog boxes are:
4005 @itemize @bullet
4006 @item Edit mask
4007 @item Camera automation
4008 @item Projector automation
4009 @item Crop control
4010 @end itemize
4012 @c cincvdoc_node_number_116
4013 @node Safe regions tool
4014 @subsection Safe regions tool
4015 @cindex Safe regions tool
4017 This tool @image{manual_images_intl/titlesafe} draws the safe regions in the video
4018 output.  This does not affect the rendered output @xref{Safe regions}.
4020 @c cincvdoc_node_number_117
4021 @node Compositing
4022 @section Compositing
4023 @cindex Compositing
4025 A large amount of Cinelerra's binary size is directed towards compositing.
4026 When you remove the letterboxing from a widescreen show, you are compositing.
4027 Changing the resolution of a show, making a split screen, and fading in and out
4028 among other things are all compositing operations in Cinelerra.  Cinelerra
4029 detects when it is in a compositing operation and plays back through the
4030 compositing engine only then.  Otherwise, it uses the fastest decoder available
4031 in the hardware.
4033 Compositing operations are done on the timeline and in the Compositor window.
4034 Shortcuts exist in the Resource window for changing some compositing
4035 attributes.  Once some video files are on the timeline, the compositor window
4036 is a good place to try compositing.
4038 @menu
4039 * The camera and projector::
4040 * Masks::
4041 * Cropping::
4042 * Safe regions::
4043 * Overlay modes::
4044 * Track and output sizes::
4045 @end menu
4047 @c cincvdoc_node_number_118
4048 @node The camera and projector
4049 @subsection The camera and projector
4050 @cindex Camera
4051 @cindex Projector
4053 @menu
4054 * The temporary::
4055 * Compositing projector controls::
4056 * Compositing camera controls::
4057 * Popup menu of options::
4058 * The camera and projector tool window::
4059 @end menu
4061 @c cincvdoc_node_number_119
4062 @node The temporary
4063 @subsubsection The temporary
4064 @cindex Temporary
4066 In the compositor window, the most important functions are the
4067 @image{manual_images_intl/camera,4.67mm} camera button and the
4068 @image{manual_images_intl/projector,4.67mm} projector button.  These control
4069 operation of the camera and projector.  Cinelerra's compositing routines use a
4070 "temporary", a frame of video in memory where all graphics processing is
4071 performed.  Inside Cinelerra's compositing pipeline, the camera determines where
4072 in the source video the "temporary" is copied from.  The projector determines
4073 where in the output the "temporary" is copied to.
4075 @center @image{manual_images_en/temporary_explained,140mm}
4077 The process is pretty much as if we scanned in a roll of film one frame at a
4078 time, then (using Gimp, for example) digitally altered the scanned image with
4079 various filters.  Once the image has been transformed by the filters (color
4080 correction, for example) we then project the finished image back into a new
4081 roll of film, thus creating a new "modified" version of the original.
4083 Each track has a different "temporary" which is defined by the track size.  By
4084 resizing the tracks you can create split screens, pans, and zooms.
4086 @center @image{manual_images_en/compositing_pipeline,140mm}
4087 @center @b{Visual representation of the compositing pipeline}
4089 When editing the camera and projector in the compositing window, the first
4090 track with @b{record} enabled is the track affected.  Even if the track is
4091 completely transparent, it is still the affected track.  If multiple video
4092 tracks exist, the easiest way to select one track for editing is to
4093 @b{SHIFT-click} on the record icon of the track.  This solos the track.
4095 @center @image{manual_images_en/projector_concept,120mm}
4097 The purpose of the projector is to place the contents of the "temporary" into the
4098 project's output.  The intent of the projector is to composite several
4099 sources from the various tracks into one final output track.
4101 The projector alignment frame is identical to the camera's viewport, except
4102 that it guides where on the output canvas to put the contents of each
4103 temporary.
4105 @center @image{manual_images_intl/projector_screen}
4107 @c cincvdoc_node_number_120
4108 @node Compositing projector controls
4109 @subsubsection Compositing projector controls
4110 @cindex Compositing projector controls
4111 @cindex Projector controls, compositing
4113 When the @b{projector} button is enabled in the compositor window, you are in
4114 projector editing mode.  A guide box appears in the video window.  Dragging
4115 anywhere in the video window causes the guide box to move, hopefully along with
4116 the video.  @b{SHIFT-dragging} anywhere in the video window causes the guide
4117 box to shrink and grow along with the video.  Once you have positioned the
4118 video with the projector, you are ready to master the camera.
4120 @c cincvdoc_node_number_121
4121 @node Compositing camera controls
4122 @subsubsection Compositing camera controls
4123 @cindex Compositing camera controls
4124 @cindex Camera controls, compositing
4126 Select the @image{manual_images_intl/camera,4.67mm} camera button to enable camera
4127 editing mode.  In this mode, the guide box shows where the camera position is
4128 in relation to past and future camera positions but not where it is in relation
4129 to the source video.  Dragging the camera box in the compositor window does not
4130 move the box but instead moves the location of the video inside the box.
4132 @cindex Viewport
4133 The @b{viewport} is a window on the camera that frames the area of source video
4134 to be scanned.  The viewport is represented as a red frame with diagonal cross
4135 bars.
4137 @center @image{manual_images_en/camera_concept,100mm}
4138 @center @b{The viewport}
4140 @center @image{manual_images_en/viewport_sizes,150mm}
4141 @center @b{Viewport sizes}
4143 The size of the viewport is defined by the size of the current track.  A
4144 smaller viewport (640x400) captures a smaller area.  A larger viewport
4145 (800x200) captures an area larger than the source video and fills the empty
4146 spaces with blanks.
4148 Once we have our viewport defined, we still need to place the camera right
4149 above the area of source video we are interested on.  To control the location
4150 of the camera:
4151 @enumerate 1
4152 @item Open the compositor window with a track selected.
4153 @item Select the camera button to enable camera editing mode.
4154 @item Drag over the display window.
4155 @end enumerate
4157 When we drag over the viewport in the compositor window (although initially
4158 counter-intuitive), the viewport does not moves but the area of video that sits
4159 under the camera's location does, like when watching the output of a moving camera.
4161 @center @image{manual_images_intl/viewport_drag,100mm}
4162 @center @b{In the compositor window, the viewport is always}
4163 @center @b{shown centered, what moves is the video under it}
4165 For example, when you drag the camera down, the viewport in effect is moving
4166 downwards on the video, showing its path towards the bottom of the video, but
4167 from our perspective on the compositor screen, we see the video moving up.
4168 When you drag the camera right, the video seems to move left, and so on.
4170 @b{Note:} The guide box shows where the camera position is in relation to past
4171 and future camera positions, not where it is in relation to the source video.
4173 @c cincvdoc_node_number_122
4174 @node Popup menu of options
4175 @subsubsection Popup menu of options
4176 @cindex Popup menu of options
4177 @cindex Options, popup menu of
4179 In the compositing window, there is a popup menu of options for the camera and
4180 projector.  Right click over the video portion of the compositing window to
4181 bring up the menu.
4183 @itemize @bullet
4184 @item Reset Camera causes the camera to return to the center position.
4185 @item Reset Projector causes the projector to return to the center.
4186 @end itemize
4188 @c cincvdoc_node_number_123
4189 @node The camera and projector tool window
4190 @subsubsection The camera and projector tool window
4191 @cindex The camera and projector tool window
4193 The camera and projector have shortcut operations that do not appear in the 
4194 popup menu and are not represented in video overlays.  These are accessed in the 
4195 @b{Tool window}.
4196 Most operations in the Compositor window have a tool window which is enabled by
4197 activating the @image{manual_images_intl/toolwindow,2.67mm} question mark.
4199 @center @image{manual_images_intl/compositor_campro_tool,40mm}
4200 @center @b{The camera and projector tool window}
4202 In the case of the camera and projector, the tool window shows x, y, and z
4203 coordinates.  By either tumbling or entering text directly, the camera and
4204 projector can be precisely positioned.  9 justification types are also defined
4205 for easy access.  A popular justification operation is upper left projection
4206 after image reduction.  This is used when reducing the size of video with
4207 aspect ratio adjustment.
4209 @itemize @bullet
4210 @item @image{manual_images_intl/button_justify_left} Left
4211 @item @image{manual_images_intl/button_justify_centerH} Center Horizontal
4212 @item @image{manual_images_intl/button_justify_right} Right
4213 @item @image{manual_images_intl/button_justify_top} Top
4214 @item @image{manual_images_intl/button_justify_centerV} Center Vertical
4215 @item @image{manual_images_intl/button_justify_bottom} Bottom
4216 @end itemize
4218 The translation effect allows simultaneous aspect ratio conversion and
4219 reduction but is easier to use if the reduced video is put in the upper left of
4220 the temporary instead of in the center.  The track size is set to the original
4221 size of the video and the camera is centered.  The output size is set to the
4222 reduced size of the video.  Without any effects, this produces just the cropped
4223 center portion of the video in the output.
4225 The translation effect is dropped onto the video track.  The input dimensions
4226 of the translation effect are set to the original size and the output
4227 dimensions are set to the reduced size.  To put the reduced video in the center
4228 subsection that the projector shows would require offsetting @b{out x and out y}
4229 by a complicated calculation.  Instead, we leave @b{out x and out y} at 0 and
4230 use the projector's tool window.
4232 Merely by selecting @image{manual_images_intl/left_justify} left justify and
4233 @image{manual_images_intl/top_justify} top justify, the projector displays the reduced
4234 image from the top left corner of the temporary in the center of the output.
4236 @c cincvdoc_node_number_124
4237 @node Masks
4238 @subsection Masks
4239 @cindex Masks
4241 Masks select a region of the video for either displaying or hiding.  Masks are
4242 also used in conjunction with another effect to isolate the effect to a certain
4243 region of the frame.  A copy of one video track may be delayed slightly and
4244 unmasked in locations where the one copy has interference but the other copy
4245 does not.  Color correction may be needed in one subsection of a frame but not
4246 another.  A mask can be applied to just a subsection of the color corrected track
4247 while the vanilla track shows through.  Removal of boom microphones, airplanes,
4248 and housewives are other mask uses.
4250 The order of the compositing pipeline affects what can be done with masks.
4251 Mainly, masks are performed on the temporary after effects and before the
4252 projector.  This means multiple tracks can be bounced to a masked track and
4253 projected with the same mask.
4255 Our compositing pipeline graph now has a masking stage.  There are 8 possible
4256 masks per track.  Each mask is defined separately, although they each perform
4257 the same operation, whether it is addition or subtraction.
4259 @center @image{manual_images_en/compositing_pipeline2,140mm}
4260 @center @b{Compositing pipeline with masks}
4262 To define a mask, go into the Compositor window and enable the
4263 @image{manual_images_intl/mask} @b{mask} toggle.  Now go over the video and click-drag.
4265 @b{IMPORTANT:} You have to select @b{automatic keyframes} (@xref{Automatic
4266 keyframes},) if you wish to move a mask over time.  If you do not select
4267 @b{automatic keyframes}, the mask position will be the same even if you edit at
4268 different places on the timeline.
4270 @center @image{manual_images_intl/compositor_mask1,60mm}
4272 Click-drag again in another part of the image to create each new point of the
4273 mask.  While it is not the conventional Bezier curve behavior, this masking
4274 interface performs in realtime what the effect of the mask is going to be.
4275 Creating each point of the mask expands a rubber band curve.
4277 Once points are defined, they can be moved by @b{CTRL-dragging} in the vicinity
4278 of the corner.
4280 @center @image{manual_images_en/compositor_mask_drag}
4281 @center @b{CTRL-drag allows you to move existing points to}
4282 @center @b{new locations, thus altering the shape of the mask}
4284 This, however, does not smooth out the curve.  The in-out points of the Bezier
4285 curve are accessed by @b{SHIFT-dragging} in the vicinity of the corner.  Then
4286 @b{SHIFT-dragging} near the in or out point causes the point to move.
4288 @center @image{manual_images_en/compositor_mask_bezier}
4289 @center @b{SHIFT-drag activates belzier handles}
4291 @center @b{to create curves between mask points}
4293 Finally, once you have a mask, the mask can be translated in one piece by
4294 @b{ALT-dragging} the mask.  Mask editing in Cinelerra is identical to how The
4295 Gimp edits masks except in this case the effect of the mask is always on.
4297 @center @image{manual_images_en/compositor_mask_translate}
4298 @center @b{CTRL-ALT-drag translates an entire mask}
4299 @center @b{to a new location on the screen}
4301 The masks have many more parameters which could not be represented with video
4302 overlays.  These are represented in the tool window for masks.  Selecting the
4303 @image{manual_images_intl/toolwindow,2.67mm} question mark when the
4304 @image{manual_images_intl/mask} mask toggle is highlighted brings up the mask options.
4306 @center @image{manual_images_intl/mask_dialog,70mm}
4307 @center @b{Mask options window}
4309 The @b{mode} of the mask determines if the mask removes data or makes data
4310 visible.  If the mode is subtractive, the mask causes video to disappear.  If
4311 the mode is additive, the mask causes video to appear and everything outside
4312 the mask to disappear.
4314 @center @image{manual_images_en/compositor_mask_mode,160mm}
4315 @center @b{Mask mode}
4317 The @b{value} of the mask determines how extreme the addition or subtraction
4318 is.  In the subtractive mode, higher values subtract more alpha.  In the
4319 additive mode, higher values make the region in the mask brighter while the
4320 region outside the mask is always hidden.
4322 @center @image{manual_images_en/composite_mask_value}
4323 @center @b{Mask value}
4325 The mask number determines which one of the 8 possible masks we are editing.
4326 Each track has 8 possible masks.  When you click-drag in the compositor window,
4327 you are only editing one of the masks.  Change the value of @b{mask number} to
4328 cause another mask to be edited.  The previous mask is still active but only
4329 the curve overlay for the currently selected mask is visible.
4331 When multiple masks are used, their effects are ORed together.  Every mask in a
4332 single track uses the same value and mode.
4334 @cindex Feather mask
4335 @cindex Mask, feather
4336 The edges of a mask are hard by default but this rarely is desired.  The
4337 @b{feather} parameter determines how many pixels to feather the mask.  This
4338 creates softer edges but takes longer to render.
4340 @center @image{manual_images_en/compositor_feather,120mm}
4341 @center @b{Feather parameter}
4343 Note: The OpenGL mask renderer is of low quality and only suitable as a preview for 
4344 initial work. For fine-tuning of masks (with large feather values) OpenGL should 
4345 be switched off and the software renderer be used.
4347 Finally, there are parameters which affect one point on the current mask
4348 instead of the whole mask.  These are @b{Delete, x, y}.  The active point is
4349 defined as the last point dragged in the compositor window.  Any point can be
4350 activated merely by @b{CTRL-clicking} near it without moving the pointer.  Once
4351 a point is activated, @b{Delete} deletes it and @b{x, y} allow repositioning by
4352 numeric entry.
4354 @c cincvdoc_node_number_125
4355 @node Cropping
4356 @subsection Cropping
4357 @cindex Cropping
4359 Cropping changes the value of the output dimensions and the projector to reduce
4360 the visible picture area.  Enable the @image{manual_images_intl/crop,4.33mm} crop toggle
4361 and the @image{manual_images_intl/toolwindow,2.67mm} tool window in the @b{compositing
4362 window} to display the @b{Crop control dialog box}.
4364 @center @image{manual_images_intl/compositor_crop_tool,60mm}
4365 @center @b{Crop control dialog box}
4367 Click-drag anywhere in the video to define the crop area.  This draws a
4368 rectangle over the video.  Click-drag anywhere in the video to start a new
4369 rectangle.  Click-drag over any corner of the rectangle to reposition the
4370 corner.
4372 @center @image{manual_images_intl/compositor_crop}
4373 @center @b{Crop area defined}
4375 @b{ALT-click} in the cropping rectangle to translate the rectangle to any
4376 position without resizing it.
4378 The tool window allows text entry of the coordinates and executes the cropping
4379 operation.  When the rectangle is positioned, hit the @b{do it} button in the
4380 tool window to execute the cropping operation.
4382 @b{Note:} The X1,Y1 & X2,Y2 coordinates on the crop control dialog allows text
4383 entry of the top left and bottom right coordinates that define the crop
4384 rectangle.
4386 @c cincvdoc_node_number_126
4387 @node Safe regions
4388 @subsection Safe regions
4389 @cindex Safe regions
4390 @cindex Regions, safe
4392 On consumer displays the borders of the image are cut off and within the
4393 cut-off point is a region which is not always square like it is in the
4394 compositor window.  The borders are intended for scratch room and vertical
4395 blanking data.  You can show where these borders are by enabling the
4396 @image{manual_images_intl/titlesafe} safe regions toggle.  Keep titles inside the inner
4397 rectangle and keep action inside the outer rectangle.
4399 @c cincvdoc_node_number_127
4400 @node Overlay modes
4401 @subsection Overlay modes
4402 @cindex Overlay modes
4404 Every video track has an overlay mode, accessible by expanding the track.  The
4405 overlay mode is a pull-down menu on the left under the fader.  When collapsed,
4406 it displays an icon representing the current overlay mode.
4408 Select the @image{manual_images_intl/expandpatch_checked} expand track toggle to view all
4409 the options for a video track if you can not see the overlay mode.  The overlay
4410 mode of video tracks is @b{normal} by default.  Select other modes by clicking
4411 the overlay button and selecting an item from the popup menu.
4413 Overlay modes are processed inside the projector stage of compositing.  The
4414 different modes are summarized below.
4416 @cindex Normal overlay mode
4417 @itemize @bullet
4418 @item @b{Normal}@*
4419 This mode uses a traditional Porter-Diff equation to blend tracks with alpha.
4420 When no alpha exists in the project color model, the new track always replaces
4421 the output.
4423 @cindex Addition overlay mode
4424 @item @b{Addition}@*
4425 In this mode, whatever is in the output is added to the current track.
4426 The result is blended based on the current track's alpha onto the output.
4428 @cindex Subtraction overlay mode
4429 @item @b{Subtraction}@*
4430 In this mode, the current track is subtracted from the output and the
4431 result is alpha blended onto the output.
4433 @cindex Multiply overlay mode
4434 @item @b{Multiply}@*
4435 This is the most useful operation.  The current track is multiplied by the
4436 output and the result blended onto the output.  Usually a black and white image
4437 with no alpha channel or a white title on a black image is used as the current
4438 track.  With the multiply operation, only the output portions under the white
4439 area show.
4441 @cindex Divide overlay mode
4442 @item @b{Divide}@*
4443 This mode divides the current track by the output and the result is
4444 blended into the output.  It usually results in overloaded levels.
4446 @cindex Replace overlay mode
4447 @item @b{Replace}@*
4448 This mode does no blending and overwrites the output with the current
4449 track.
4450 @end itemize
4452 @c cincvdoc_node_number_128
4453 @node Track and output sizes
4454 @subsection Track and output sizes
4455 @cindex Track and output sizes
4456 @cindex Sizes, track and output
4458 @menu
4459 * Track size::
4460 * Output size::
4461 @end menu
4463 The size of the temporary and the size of the output in our compositing
4464 pipeline are independent and variable.  This fits into everything covered so
4465 far.  The camera's viewport is the temporary size.  Effects are processed in
4466 the temporary and are affected by the temporary size.  Projectors are rendered
4467 to the output and are affected by the output size.  If the temporary is smaller
4468 than the output, the temporary is bordered by blank regions in the output.  If
4469 the temporary is bigger than the output, the temporary is cropped.
4471 @c cincvdoc_node_number_149
4472 @node Track size
4473 @subsubsection Track size
4474 @cindex Track size
4475 @cindex Size, track
4477 The temporary size is defined as the track size.  Each track has a different
4478 size.  Right click on a track to bring up the track's menu.  Select @b{Resize
4479 Track} to resize the track to any arbitrary size.  Alternatively you can select
4480 @b{Match output size} to make the track the same size as the output.
4482 @center @image{manual_images_intl/resize_track,70mm}
4483 @center @b{The resize track window}
4485 For example, the next image shows how a video track and a project output of
4486 equal sizes look when displayed on the compositor.
4488 @center @image{manual_images_intl/compositor_output_equal,70mm}
4489 @center @b{Project output size and video}
4490 @center @b{track with equal dimensions (720x480)}
4492 If you resize a track, then its appearance on the compositor changes
4493 accordingly.
4495 Reducing the track (to 640 x 400) and leaving the project's output size
4496 untouched makes the track show on the compositor smaller and framed by a blank
4497 area.
4499 @center @image{manual_images_intl/compositor_output_small,70mm}
4500 @center @b{New track (640x400), smaller}
4501 @center @b{than the project's output (720x480)}
4503 Enlarging the track (to 800 x 560) and leaving the project's output size
4504 untouched makes the track show on the compositor larger and cropped to the
4505 output's dimension.
4507 @center @image{manual_images_intl/compositor_output_large,70mm}
4508 @center @b{New track (800x560), cropped to}
4509 @center @b{the project's output size (720x480)}
4511 Using this relationship between the track and the project's output size you can
4512 effectively reduce or magnify the size of a particular track with regards to
4513 the final output and therefore create visual "effects" like split screens,
4514 pans, and zooms on the compositor.
4516 @c cincvdoc_node_number_129
4517 @node Output size
4518 @subsubsection Output size
4519 @cindex Output size
4520 @cindex Size, output
4522 The output size is set in either @b{New} when creating a new project or
4523 @b{Settings->Format}.  In the Resource window there is another way to change
4524 the output size.  Right click on a video asset and select @b{Match project
4525 size} to conform the output to the asset.  When new tracks are created, the
4526 track size always conforms to the output size specified by these methods.
4528 When rendering, the project's output size is the final video track size where
4529 the temporary pipeline is rendered into.
4531 If the output size is larger than the temporary then the image transferred from
4532 the temporary will fit inside the Output Track.  Any space left on the Output
4533 is left blank.
4535 @center @image{manual_images_intl/output_small}
4536 @center @b{Output size (shown in green) larger than the temporary}
4538 If the output size is smaller than the temporary then some of the temporary
4539 video will be cropped out.
4541 @center @image{manual_images_intl/output_large}
4542 @center @b{Output size too small for the temporary}
4544 @c cincvdoc_node_number_130
4545 @node Viewer window
4546 @chapter Viewer window
4547 @cindex Viewer window
4549 The viewer window is a place to load and preview your source media and clips.
4550 Here you can quickly browse through an asset using the @b{slider control},
4551 focus on an area of work with the @b{preview region} or you use @b{editing
4552 controls} to cut & paste segments into the project or create a clip for later
4553 use.
4555 @center @image{manual_images_intl/viewer,80mm}
4556 @center @b{The viewer window}
4558 To open the viewer window, go to @b{Window->Show Viewer}
4560 The display is the area on the viewer where you actually see media playing.
4561 Before you can play any media, you first must load it on the viewer.
4563 To load media into the viewer:
4564 @enumerate 1
4565 @item Open the @b{resources manager} window and select the @b{asset manager} or
4566 the @b{clip manager} folder.
4567 @item Drag a file from the @b{asset manager} or the @b{clip manager} to the
4568 viewer
4570 @center @image{manual_images_intl/drag_to_viewer,101.75mm}
4571 @end enumerate
4573 You can also load media onto the viewer by right clicking on a file in the
4574 @b{asset manager} and selecting @b{View} from the popup menu or by double
4575 clicking on the icon.
4577 Once your media loads you will see it appear on the display.  To play, rewind or
4578 forward through it use the @b{slider control} or the @b{transport controls}.
4580 You can change the media display size by right clicking on the screen to
4581 activate the display zoom menu.  Select zoom levels of 50%, 100% or 200% of the
4582 original media size.
4584 When displaying media, the viewer uses the project's defined output size format
4585 settings, not the original assets format.  You can change the project's output
4586 to match the asset's format using the @b{match project size} menu option in the
4587 @b{asset manager}.
4589 In here you will scrub around source media and clips, selecting regions to paste
4590 into the project.  Operations done in the viewer affect a temporary EDL or a
4591 clip but not the timeline.
4593 @c cincvdoc_node_number_131
4594 @node Resources window
4595 @chapter Resources window
4596 @cindex Resources window
4598 @menu
4599 * Navigating the resources::
4600 @end menu
4602 Effects, transitions, clips, and assets are accessed here.  Most of the
4603 resources are inserted into the project by dragging them out of the resource
4604 window.  Management of resource allocation is also performed here.
4606 @c cincvdoc_node_number_132
4607 @node Navigating the resources
4608 @section Navigating the resources
4609 @cindex Navigating the resources
4610 @cindex Resources, navigating the
4612 The resource window is divided into two areas.  One area lists folders and
4613 another area lists folder contents.  Going into the folder list and clicking on
4614 a folder updates the contents area with the contents of that folder.
4616 @center @image{manual_images_intl/resources_audio_effects,60mm}
4617 @center @b{The resources window}
4619 The folder and contents can be displayed as icons or text.
4621 @b{Right clicking} in the folder or contents area brings up a menu containing
4622 formatting options.  Select @b{Display text} to display a text listing.  Select
4623 @b{Sort items} to sort the contents of the folder alphabetically.
4625 The @b{asset info window} displays detailed information about the selected
4626 media file.  To access it, go to the asset manager folder and right click on
4627 the label or icon of the file you are interested on.  An asset menu will
4628 appear, then click on Info.
4630 @center @image{manual_images_intl/asset_info,50mm}
4631 @center @b{The asset info window}
4633 @c cincvdoc_node_number_133
4634 @node Sound level meters window
4635 @chapter Sound level meters window
4636 @cindex Sound level meters window
4638 An additional window, the @b{levels window} can be brought up from the
4639 @b{Window} menu.  The @b{levels} window displays the output audio levels after
4640 all mixing is done.
4642 @center @image{manual_images_intl/sound_level_meters_window,,80mm}
4644 @center @b{The sound level meters window}
4646 Sound level meters appear in many locations.  They can be toggled in the viewer
4647 and compositor windows with the level toggle.  They appear in the patchbay when
4648 a track is expanded (@xref{The patchbay}.)  They appear in the recording
4649 monitor when audio is being recorded.
4651 The sound levels in the @b{levels window, compositor, and viewer} correspond to
4652 the final output levels before they are clipped to the soundcard range.  In the
4653 @b{record monitor} they are the input values from the sound card.  In the
4654 @b{patchbay} they are the sound levels for each track after all effects are
4655 processed and before down-mixing for the output.
4657 Most of the time, audio levels have numerical markings in dB but in the
4658 patchbay there is not enough room.
4660 The sound level is color coded as an extra means of determining the sound
4661 level.  Even without numerical markings, the sound level color can distinguish
4662 between several ranges and overload.  Look at the color codings in a meter with
4663 numerical markings to see what colors correspond to what sound level.  Then for
4664 meters in the patchbay in expanded audio tracks, use the color codings to see
4665 if it is overloading.
4667 Be aware that sound levels in Cinelerra can go above 0 dB@.  This allows not
4668 only seeing if a track is overloading but how much information is being lost by
4669 the overloading.  Overloading by less than 3 dB is usually acceptable.  While
4670 overloading is treated as positive numbers in Cinelerra, it is clipped to 0
4671 when sent to a sound card or file.
4673 The visible range of the sound level meters is configurable in
4674 @b{settings->preferences->interface} (@xref{Interface}.)
4676 @c cincvdoc_node_number_134
4677 @node Transport controls
4678 @chapter Transport controls
4679 @cindex Transport controls
4681 Transport controls are just as useful in navigation as they are in playing back
4682 footage, hence they are described here in the navigation section.  Each of the
4683 Viewer, Compositor, and Program windows has a transport panel.
4685 @center @image{manual_images_en/transport_panel,130mm}
4686 @center @b{The transport panel}.
4688 The transport panel is controlled by the keyboard as well as the graphical
4689 interface.  For each of the operations it performs, the starting position is
4690 the position of the insertion point in the Program window and the slider in the
4691 Compositor window.  The ending position is either the end or start of the
4692 timeline or the end or start of the selected region if there is one.
4694 The orientation of the end or start depends on the direction of playback.  If
4695 it is forward the end position is the end of the selected region.  If it is
4696 backward the end position is the start of the selected region.
4698 The insertion point moves to track playback.  When playback stops, the
4699 insertion point stays where playback stopped.  Thus, by playing back you change
4700 the position of the insertion point.
4702 The keyboard interface is usually the fastest and has more speeds.  The
4703 transport keys are arranged in a sideways @b{T} on the number pad.
4705 @multitable @columnfractions .08 .17 .08 .17 .08 .17 .08 .17
4706 @item @kbd{4}
4707 @tab Frame back
4708 @tab @kbd{5}
4709 @tab Reverse Slow
4710 @tab @kbd{6}
4711 @tab Reverse
4712 @tab @kbd{+}
4713 @tab Reverse Fast
4714 @item @kbd{1}
4715 @tab Frame Forward
4716 @tab @kbd{2}
4717 @tab Forward Slow
4718 @tab @kbd{3}
4719 @tab Play
4720 @tab @kbd{Enter}
4721 @tab Fast Forward
4722 @item @kbd{0}
4723 @tab Stop
4724 @tab
4725 @tab
4726 @tab
4727 @tab
4728 @tab
4729 @tab
4730 @end multitable
4732 Hitting any key on the keyboard twice pauses it.
4734 When using frame advance functions the behavior may seem odd.  If you frame
4735 advance forward and then frame advance backward, the displayed frame does not
4736 change.  This is because the playback position is not the frame but the time
4737 between two frames.  The rendered frame is the area that the playback position
4738 crosses.  When you increment the time between two frames by one and decrement
4739 it by one, you cross the same frame both times and so the same frame is
4740 displayed.
4742 The transport behavior changes if you hold down @key{CTRL} when issuing any of
4743 the transport commands.  This causes the starting point to be the in point if
4744 playing forward and the out point if playing backward.  If playing forward, the
4745 out point becomes the ending point and if playing backward, the in point
4746 becomes the ending point.  If no in/out points are specified, the behavior
4747 falls back to using the insertion point and track boundaries as the starting
4748 and ending points.
4750 It is possible to use a hardware JogShuttle@footnote{Refer to David Arendt's
4751 message posted on the Cinelerra CV mailing-list on the 2003-11-11 for more
4752 information}
4754 @c cincvdoc_node_number_135
4755 @node Timebar
4756 @chapter Timebar
4757 @cindex Timebar
4759 The navigation features of the Viewer and Compositor behave very similarly.
4760 Each has a timebar and slider below the video output.  The timebar and slider
4761 are critical for navigation.
4763 @center @image{manual_images_en/timebarslider,160mm}
4765 @cindex Preview region
4766 The timebar represents the entire time covered by the program.  When you define
4767 labels and in/out points it defines those, too.  Finally the timebar defines a
4768 region known as the @b{preview region}.
4770 The @b{preview region} is the region of the timeline which the slider affects.
4771 The slider only covers the time covered by the preview region.  By using a
4772 preview region inside the entire program and using the slider inside the
4773 preview region you can quickly and precisely seek in the compositor and viewer.
4775 When you replace the current project with a file the preview region
4776 automatically resizes to cover the entire file.  When you append data or change
4777 the size of the current project, the preview region stays the same size and
4778 shrinks.  Therefore, you need to resize the preview region.
4780 Load a file and then slide around it using the compositor slider.  The
4781 insertion point in the main window follows the compositor.  Move the pointer
4782 over the compositor's timebar until it turns into a left resize pointer.  The
4783 click and drag right.  The preview region should have changed and the slider
4784 resized proportionally.
4786 Go to the right of the timebar until a right resize pointer appears.  Drag left
4787 so the preview region shrinks.
4789 Go to the center of the preview region in the timebar and drag it around to
4790 convince yourself if can be moved.
4792 @b{Note:} When you append data or change the size of the current project, the
4793 preview region stays the same size and shrinks.  Therefore, you need to resize
4794 the preview region.
4796 @center @image{manual_images_intl/previewregion,160mm}
4797 @center @b{Preview region in compositor}
4799 If you go to the slider and slide it around with the preview region shrunk,
4800 you will see the slider only affects the preview region.  The timebar and slider
4801 in the viewer window work exactly the same.
4803 Labels and in/out points are fully supported in the viewer and compositor.  The
4804 only difference between the viewer and compositor is the compositor reflects
4805 the state of the program while the viewer reflects the state of a clip but not
4806 the program.
4808 When you hit the @b{label button} in the compositor, the label appears both in
4809 the compositor timebar and the program timebar.
4811 When you select a label or in/out point in the compositor, the insertion point
4812 in the program window jumps to that position. To scroll your video and thus
4813 move the insertion point into the visible part of the timeline, use the
4814 @b{manual go to} button of the compositor.
4816 @center @image{manual_images_intl/viewer_labels,160mm}
4817 @center @b{Labels and in/out points in the viewer}.
4819 In the viewer and compositor, labels and in/out points are displayed in the
4820 timebar.  Instead of displaying just a region of the program, the timebar
4821 displays the entire program here.
4823 Like the program window, the compositor has a zoom capability.  First, the
4824 pull-down menu on the bottom of the compositor window has a number of zoom
4825 options.  When set to @b{Auto} the video is zoomed to match the compositor
4826 window size as closely as possible.  When set to any other percentage, the
4827 video is zoomed a power of 2 and scrollbars can be used to scroll around the
4828 output.  When the video is zoomed bigger than the window size, not only do
4829 scrollbars scan around it but @b{middle mouse button} dragging in the video
4830 output scans around it.  This is exactly when The Gimp does.
4832 Furthermore, the zoom @image{manual_images_intl/magnify,7mm} toggle causes the
4833 Compositor window to enter zoom mode.  In zoom mode, clicking in the video
4834 output zooms in while @b{ctrl-clicking} in the video output zooms out.  If you
4835 have a wheel mouse, rotating the wheel zooms in or out too.
4837 Zooming in or out with the zoom tool does not change the rendered output, mind
4838 you.  It is merely for scrutinizing video or fitting it in the desktop.
4840 Playing video on the compositor when zoomed to any size other that 100%, the
4841 original size, requires Cinelerra to do extra processing steps.  This could
4842 affect performance on slower systems.
4844 @c cincvdoc_node_number_136
4845 @node Realtime effects
4846 @chapter Realtime effects
4847 @cindex Realtime effects
4848 @cindex Effects, realtime
4850 These are layered under the track they apply to.  They process the track when
4851 the track is played back, with no permanent storage of the output except when
4852 the project is rendered.
4854 All the realtime effects are listed in the resource window, divided into two
4855 groups: audio effects and video effects.  Audio effects should be dragged from
4856 the resource window onto audio tracks.  Video effects should be dragged onto
4857 video tracks.
4859 If there is data on the destination track, the effect is applied to the entire
4860 track.  If there is no data on the track the effect is deleted.  Finally, if a
4861 region of the track is selected the effect is pasted into the region,
4862 regardless of whether there is data.
4864 Some of the effects do not process data but synthesize data.  In the case of a
4865 synthesis effect, you will want to select a region of the track so the dragging
4866 operation pastes it without deleting it.
4868 When dragging more than one effect onto a track, you will see the effects
4869 layering from top to bottom, on the bottom of the track.  When the track is
4870 played back, effects are processed from top to bottom.  The output of the top
4871 effect becomes the input of the bottom effect and so on and so forth.
4873 In addition to dragging from the resource window, effects may be applied to a
4874 track by a popup menu.  Right click on a track and select @b{Attach effect}
4875 from the popup.  The attach effect dialog gives you more control than pure
4876 dragging and dropping.  For one thing, the attach effect dialog lets you attach
4877 two more types of effects: shared effects and shared tracks.  Select a plugin
4878 from the @b{Plugins} column and hit @b{Attach} under the plugins column to
4879 attach it.  The effect is the same as if the effect was dragged from the
4880 resource window.
4882 When an effect exists under a track, it often needs to be configured.  Go
4883 to the effect and right click on it to bring up the effect popup.  In the
4884 effect popup is a @b{show} option.  The show option causes the GUI for the
4885 effect to appear under the cursor.  Most effects have GUI's but some do not.  If
4886 the effect does not have a GUI, nothing pops up when the @b{show} option is
4887 selected.  When you tweek parameters in the effect GUI, the parameters normally
4888 affect the entire duration of the effect.
4890 @menu
4891 * Realtime effect types::
4892 * Editing realtime effects::
4893 * Realtime audio effects::     Realtime audio effects
4894 * Realtime video effects::     Realtime video effects
4895 @end menu
4897 @c cincvdoc_node_number_137
4898 @node Realtime effect types
4899 @section Realtime effect types
4900 @cindex Realtime effect types
4902 The two other effect types supported by the Attach Effect dialog are recycled
4903 effects.  In order to use a recycled effect, three requirements must be met:
4904 @itemize @bullet
4905 @item There must be other effects in the timeline.
4906 @item The other effects must be of the same type as the track you are attaching
4907 an effect to.  If the track is an audio track, the effects must be audio
4908 effects.  If the track is a video track, the effects must be video effects.
4909 @item The insertion point or selected region must start inside the other
4910 effects.
4911 @end itemize
4913 In the case of a shared effect, these conditions must be true.  In the case of
4914 a shared track, there merely must be another track on the timeline of the same
4915 type as the track you are applying an effect to.  If you right clicked on a
4916 video track to attach an effect, there will not be anything in the @b{shared
4917 tracks} column if no other video track exists.  If you right clicked on an
4918 audio track there will not be anything in the shared track column if no other
4919 audio track exists.
4921 If shared effects or shared tracks are available, they appear in the @b{shared
4922 effects} and @b{shared tracks} columns.  The @b{attach} button under each
4923 column causes anything highlighted in the column to be attached under the
4924 current track.
4926 Shared effects and shared tracks allow very unique things to be done.  In the
4927 case of a shared effect, the shared effect is treated like a copy of the
4928 original effect except in the shared effect the GUI can not be brought up.  All
4929 configuration of the shared effect is determined by the GUI of the original
4930 effect and only the GUI of the original effect can be brought up.
4932 When a shared effect is played back, it is processed just like a normal effect
4933 except the configuration is copied from the original effect.  Some effects
4934 detect when they are being shared, like the reverb effects and the compressor.
4935 These effects determine what tracks are sharing them and either mix the two
4936 tracks together or use one track to stage some value.  The reverb mixes tracks
4937 together to simulate ambience.  The compressor uses one of the sharing tracks
4938 as the trigger.
4940 @cindex Bouncing tracks
4941 @cindex Tracks, bouncing
4942 @cindex Shared track
4943 When an original track has a @b{shared track} as one of its effects, the shared
4944 track itself is used as a realtime effect.  This is more commonly known as
4945 @b{bouncing tracks} but Cinelerra achieves the same operation by attaching
4946 shared tracks.  The fade and any effects in the shared track are applied to the
4947 original track.  Once the shared track has processed the data, the original
4948 track performs any effects which come below the shared track and then
4949 composites it on the output.
4951 In addition, once the shared track has processed the output of the original
4952 track like a realtime effect, the shared track mixes itself into the output
4953 with it is settings for pan, mode, and projector.  Thus, two tracks are mixing
4954 the same data on the output.  Most of the times you do not want the shared track
4955 to mix the same data as the original track on the output.  You want it to stop
4956 right before the mixing stage and give the data back to the original track.  Do
4957 this by enabling the @image{manual_images_intl/mutepatch_up} mute toggle next to each
4958 track for whom you do not want to mix on the output.
4960 Suppose you were making video and you did want the shared track to composite
4961 the original track's data on the output a second time.  In the case of video,
4962 the video from the shared track would always appear under the video from the
4963 original track, regardless of whether it was on top of the original track.
4964 This is because shared tracks are composited in order of their attachment.
4965 Since it is part of the original track it has to be composited before the
4966 original track is composited.
4968 @c cincvdoc_node_number_138
4969 @node Editing realtime effects
4970 @section Editing realtime effects
4971 @cindex Realtime effects, editing
4972 Many operations exist for manipulating effects once they are in the timeline.
4973 Because mixing effects and media is such complex business, the methods used in
4974 editing effects are not as concise as cutting and pasting.  Some of the editing
4975 happens by dragging in/out points, some of the editing happens through popup
4976 menus, and some of it happens by dragging effects.
4978 Normally when you edit tracks, the effects follow the editing decisions.  If
4979 you cut from a track, the effect shrinks.  If you drag edit in/out points, the
4980 effect changes length.  This behavior can be disabled by selecting
4981 @b{Settings->edit effects} in the project window.  This decouples effects from
4982 editing operations, but what if you just want to edit the effects?
4984 Move the timeline cursor over the effect borders until it changes to a resize
4985 left or resize right icon.  In this state, if you drag the end of the effect,
4986 it performs an edit just like dragging the end of a track does.
4988 The three editing behaviors of track trimming apply to effect trimming and they
4989 are bound to the mouse buttons that you set in @b{interface preferences}.
4990 @xref{Interface}.  When you perform a trim edit on an effect, the effect
4991 boundary is moved by dragging on it.  Unlike track editing, the effect has no
4992 source length.  You can extend the end of an effect as much as desired without
4993 being limited.
4995 Also unlike track editing, the starting position of the drag operation does not
4996 bind the edit decision to media.  The media the effect is bound to does not
4997 follow effect edits.  Other effects, however, do follow editing decisions made
4998 on an effect.  If you drag the end of an effect which is lined up to effects on
4999 other tracks, the effects on the other tracks will be edited while the media
5000 stays the same.
5002 What happens if you trim the end of an effect in, leaving a lot of unaffected
5003 time near the end of the track?  When you drag an effect in from the Resource
5004 Window you can insert the effect in the portion of the row unoccupied by the
5005 trimming operation.  Realtime effects are organized into rows under the track.
5006 Each row can have multiple effects.
5008 In some cases you will want a trimming operation to change only one row of
5009 effects.  This can be achieved by first positioning the insertion point on the
5010 start or end of the effect.  Then press @key{SHIFT} while beginning the
5011 trimming operation.  This causes the operation to change only one row of
5012 effects.
5014 In addition to trimming, you can move effects up or down.  Every track can have
5015 a stack of effects under it.  By moving an effect up or down you change the
5016 order in which effects are processed in the stack.  Go to an effect and right
5017 click to bring up the effect menu.  The @b{Move up} and @b{Move down} options
5018 move the effect up or down.
5020 @cindex Shared effects
5021 @cindex Effects, shared
5022 When you are moving effects up or down, be aware that if they are shared as
5023 @b{shared effects}, any references will be pointing to a different effect after
5024 the move operation.
5026 Finally, there is dragging of effects.  Dragging effects works just like
5027 dragging edits.  You must select the @image{manual_images_intl/arrow,2.67mm} arrow
5028 to enter drag and drop mode before dragging effects.  The effects snap to media
5029 boundaries, effect boundaries, and tracks.  Be aware if you drag a reference to
5030 a shared effect, the reference will usually point to the wrong effect
5031 afterwards.
5033 Right click on an effect to bring up a menu for the effect.  Select
5034 @b{attach...} to change the effect or change the reference if it is a shared
5035 effect.
5037 @c cincvdoc_node_number_139
5038 @node Realtime audio effects
5039 @section Realtime audio effects
5040 @cindex Realtime audio effects
5042 @menu
5043 * Compressor::        How to reduce the dynamic range of audio.
5044 * Live audio::        Pass audio from the soundcard directly to the timeline.
5045 * Pitch shift::
5046 * Reverse audio::     How to play regions in reverse.
5047 * Delay audio::
5048 * Denoise::
5049 * DenoiseFFT::
5050 * Despike::
5051 * EQ Parametric::
5052 * Freeverb::
5053 * Gain::
5054 * Heroine College::
5055 * Interpolate::
5056 * Invert Audio::
5057 * Loop audio::
5058 * Overlay::
5059 * SoundLevel::
5060 * Spectrogram::
5061 * Synthesizer::
5062 * Time stretch::
5063 @end menu
5065 @c cincvdoc_node_number_140
5066 @node Compressor
5067 @subsection Compressor
5068 @cindex Compressor
5070 @image{manual_images_intl/compressor,12.5mm}
5072 Contrary to computer science experience, the audio compressor does not reduce
5073 the amount of data required to store the audio.  The audio compressor reduces
5074 the dynamic range of the audio.  In Cinelerra the compressor actually performs
5075 the function of an expander and compressor.
5077 The compressor works by calculating the maximum sound level within a certain
5078 time period of the current position.  The maximum sound level is taken as the
5079 input sound level.  For every input sound level there is an output sound level
5080 specified by the user.  The gain at the current position is adjusted so the
5081 maximum sound level in the time range is the user specified value.
5083 The compressor has a graph which correlates every input sound level to an
5084 output level.  The horizontal direction is the input sound level in dB@.  The
5085 vertical direction is the output sound level in dB@.  The user specifies output
5086 sound levels by creating points on the graph.  Click in the graph to create a
5087 point.  If 2 points exist, drag one point across another point to delete it.
5088 The most recent point selected has its vales displayed in textboxes for more
5089 precise adjustment.
5091 To make the compressor reduce the dynamic range of the audio, make all the
5092 output values greater than the input values except 0 dB@.  To make the
5093 compressor expand the dynamic range of the audio, make all the output values
5094 except 0 dB less than the input values.  The algorithm currently limits all
5095 sound levels above 0 dB to 0 dB so to get an overloaded effect put a gain
5096 effect before the compressor to reduce all the levels and follow it with
5097 another gain effect to amplify all the levels back over 0 dB@.
5099 @b{Reaction secs:} This determines where in relation to the current position
5100 the maximum sound level is taken and how fast the gain is adjusted to reach
5101 that peak.  It is notated in seconds.  If it is negative the compressor reads
5102 ahead of the current position to get the future peak.  The gain is ramped to
5103 that peak over one reaction time.  This allows it to hit the desired output
5104 level exactly when the input peak occurs at the current position.
5106 If the reaction time is positive the compressor scans only the current position
5107 for the gain and ramps gain over one reaction time to hit the desired output
5108 level.  It hits the output level exactly one reaction time after detecting the
5109 input peak.
5111 @b{Decay secs:} If the peak is higher than the current level, the compressor
5112 ramps the gain up to the peak value.  Then if a future peak is less than the
5113 current peak it ramps the gain down.  The time taken to ramp the gain down can
5114 be greater than the time taken to ramp the gain up.  This ramping down time is
5115 the decay seconds.
5117 @b{Trigger type:}  The compressor is a multi-channel effect.  Several tracks can
5118 share one compressor.  How the signal from many tracks is interpreted is
5119 determined by the trigger type.
5121 The @b{Trigger type} uses the value supplied in the @b{Trigger} textbox as the
5122 number of the track to use as input for the compressor.  This allows a track
5123 which is not even heard to determine the loudness of the other tracks.
5125 The @b{Maximum} trigger takes the loudest track and uses it as the input for
5126 the compressor.
5128 The @b{Total} trigger type adds the signals from all the tracks and uses the
5129 total as the input for the compressor.  This is the most natural sounding
5130 compression and is ideal when multiple tracks are averaged into single
5131 speakers.
5133 @b{Trigger:} The compressor is a multichannel effect.  Several tracks can share
5134 one compressor.  Normally only one track is scanned for the input peak.  This
5135 track is specified by the @b{Trigger}.  By sharing several tracks and playing
5136 with the trigger value, you can make a sine wave on one track follow the
5137 amplitude of a drum on another track for example.
5139 @b{Smooth only:} For visualizing what the compressor is doing to the
5140 sound-level, this option causes it to replace the sound wave with just the
5141 current peak value.  It makes it very easy to see how @b{reaction secs} affects
5142 the detected peak values.
5144 @c cincvdoc_node_number_141
5145 @node Delay audio
5146 @subsection Delay audio
5147 @cindex Delay audio
5149 @image{manual_images_intl/delayaudio,12.5mm}
5151 Just tell how much seconds you want to delay the video track.
5153 @c cincvdoc_node_number_142
5154 @node Denoise
5155 @subsection Denoise
5156 @cindex Denoise
5158 @image{manual_images_intl/denoise,13mm}
5160 FIXME
5162 @c cincvdoc_node_number_143
5163 @node DenoiseFFT
5164 @subsection DenoiseFFT
5165 @cindex DenoiseFFT
5167 @image{manual_images_intl/denoisefft,13mm}
5169 FIXME
5171 @c cincvdoc_node_number_144
5172 @node Despike
5173 @subsection Despike
5174 @cindex Despike
5176 @image{manual_images_intl/despike,12.5mm}
5178 FIXME
5180 @c cincvdoc_node_number_145
5181 @node EQ Parametric
5182 @subsection EQ Parametric
5183 @cindex EQ Parametric
5185 @image{manual_images_intl/parametric,12.5mm}
5187 FIXME
5189 @c cincvdoc_node_number_146
5190 @node Freeverb
5191 @subsection Freeverb
5192 @cindex Freeverb
5194 @image{manual_images_intl/freeverb,12.5mm}
5196 FIXME
5198 @c cincvdoc_node_number_147
5199 @node Gain
5200 @subsection Gain
5201 @cindex Gain
5203 @image{manual_images_intl/gain,12.5mm}
5205 FIXME
5207 @c cincvdoc_node_number_148
5208 @node Heroine College
5209 @subsection Heroine College
5210 @cindex Heroine College
5212 @image{manual_images_intl/reverb,12.5mm}
5214 FIXME
5216 @c cincvdoc_node_number_150
5217 @node Interpolate
5218 @subsection Interpolate
5219 @cindex Interpolate
5221 @image{manual_images_intl/interpolateaudio,13.25mm}
5223 FIXME
5225 @c cincvdoc_node_number_151
5226 @node Invert Audio
5227 @subsection Invert Audio
5228 @cindex Invert Audio
5230 @image{manual_images_intl/invertaudio,12.5mm}
5232 FIXME
5234 @c cincvdoc_node_number_152
5235 @node Live audio
5236 @subsection Live audio
5237 @cindex Live audio effect
5239 @image{manual_images_intl/liveaudio,12.5mm}
5241 This effect reads audio directly from the soundcard input.  It replaces any
5242 audio on the track so it is normally applied to an empty track.
5244 To use Live Audio, highlight a horizontal region of an audio track or define in
5245 and out points.  Then drop the Live Audio effect into it.  Create extra tracks
5246 and attach shared copies of the first Live Audio effect to the other tracks to
5247 have extra channels recorded.
5249 Live Audio uses the sound driver selected in
5250 @b{Settings->Preferences->Playback->Audio Out} for recording, but unlike
5251 recording it uses the @b{playback buffer size} as the recording buffer size and
5252 it uses the @b{project sample rate} as the sampling rate.
5254 These settings are critical since some sound drivers can not record in the same
5255 sized buffer they play back in.  Live audio has been most reliable when ALSA is
5256 the recording driver and the playback fragment size is 2048.
5258 Drop other effects after Live Audio to process soundcard input in realtime.
5260 Now the bad news.  With live audio there is no read-ahead, so effects like
5261 compressor will either delay if they have read-ahead enabled or playback will
5262 under-run.
5264 Another problem is sometimes the recording clock on the soundcard is slightly
5265 slower than the playback clock.  The recording eventually falls behind and
5266 playback sounds choppy.
5268 Finally, live audio does not work in reverse.
5270 @c cincvdoc_node_number_153
5271 @node Loop audio
5272 @subsection Loop audio
5273 @cindex Loop audio
5275 @image{manual_images_intl/loopaudio,12.5mm}
5277 FIXME
5279 @c cincvdoc_node_number_154
5280 @node Overlay
5281 @subsection Overlay
5282 @cindex Overlay
5284 @image{manual_images_intl/overlay,13.25mm}
5286 FIXME
5288 @c cincvdoc_node_number_155
5289 @node Pitch shift
5290 @subsection Pitch shift
5291 @cindex Pitch shift
5292 @cindex Audio, pitch shift
5294 @image{manual_images_intl/pitch,12.5mm}
5296 Like the time stretching methods, there are three pitch shifting methods:
5297 @b{Pitch shift}, @b{Resample}, and @b{Asset info dialog}.  Pitch shift is a
5298 realtime effect which can be dragged and dropped onto recordable audio tracks.
5299 Pitch shift uses a fast Fourier transform to try to change the pitch without
5300 changing the duration, but this introduces windowing artifacts.
5302 Because the windowing artifacts are less obtrusive in audio which is obviously
5303 pitch shifted, Pitch shift is mainly useful for extreme pitch changes.  For
5304 mild pitch changes, use @b{Resample} from the @b{Audio->Render Effect}
5305 interface.  Resample can change the pitch within 5% without a noticeable change
5306 in duration.
5308 Another way to change pitch slightly is to go to the @b{Resources} window,
5309 highlight the @b{media} folder, right click on an audio file, click on
5310 @b{Info}.  Adjust the sample rate in the @b{Info} dialog to adjust the pitch.
5311 This method also requires left clicking on the right boundary of the audio
5312 tracks and dragging left or right to correspond to the length changes.
5314 @c cincvdoc_node_number_156
5315 @node Reverse audio
5316 @subsection Reverse audio
5317 @cindex Reverse audio effect
5319 @image{manual_images_intl/reverseaudio,12.5mm}
5321 Apply @b{reverse audio} to an audio track and play it backwards.  The sound
5322 plays forward.
5324 Be aware when reversing audio that the waveform on the timeline does not
5325 reflect the actual reversed output.
5327 @c cincvdoc_node_number_157
5328 @node SoundLevel
5329 @subsection SoundLevel
5330 @cindex SoundLevel
5332 @image{manual_images_intl/level,12.5mm}
5334 FIXME
5336 @c cincvdoc_node_number_158
5337 @node Spectrogram
5338 @subsection Spectrogram
5339 @cindex Spectrogram
5341 @image{manual_images_intl/spectrogram,12.5mm}
5343 FIXME
5345 @c cincvdoc_node_number_159
5346 @node Synthesizer
5347 @subsection Synthesizer
5348 @cindex Synthesizer
5350 @image{manual_images_intl/synthesizer,12.5mm}
5352 FIXME
5354 @c cincvdoc_node_number_160
5355 @node Time stretch
5356 @subsection Time stretch
5357 @cindex Time stretch
5359 @image{manual_images_intl/timestretch,12.5mm}
5361 FIXME
5363 @c cincvdoc_node_number_161
5364 @node Realtime video effects
5365 @section Realtime video effects
5366 @cindex Realtime video effects
5368 @menu
5369 * 1080 to 480::       How to convert HDTV into SD
5370 * Aging TV::          How to achieve an old movie look
5371 * Blur::
5372 * Brightness/contrast::    How to adjust brightness and contrast
5373 * Burning TV::        How to make your video "burn"
5374 * Chroma key::        Create transparency based on color similarities
5375 * Chroma key (HSV)::
5376 * Color balance::
5377 * Delay video::
5378 * Denoise video::
5379 * Denoise video2::
5380 * Decimate::          How to reduce frame rates by eliminating similar frames
5381 * Deinterlace::       How to convert interlaced video to progressive video
5382 * Difference key::    Create transparency based on color differences
5383 * DotTV::             How to give a "DotTV" look to your video
5384 * Downsample::        How to reduce the size of an image by throwing out data
5385 * Fields to frames::  How to recover interlaced video from bobbed video
5386 * Flip::              How to flip a video track
5387 * Frames to fields::
5388 * Freeze frame::
5389 * Gamma::
5390 * Gradient::
5391 * Histogram::         How to change the mapping of different brightness values
5392 * HolographicTV::
5393 * Hue saturation::    How to adjust hue and saturation
5394 * Interpolate video::
5395 * Interpolate pixels:: How to create the illusion of higher framerates
5396 * Inverse telecine::  How to convert pulled down frames to progressive frames
5397 * Invert video::
5398 * Linear blur::
5399 * Live video::        Pass video from the capture card directly to the timeline
5400 * Loop video::        How to loop regions of the timeline
5401 * Motion::            The art of motion tracking
5402 * Motion blur::
5403 * Oil painting::      How to make your video look like a painting
5404 * Overlay video::
5405 * Perspective::       How to modify the perspective of a video track
5406 * Polar::             How to bend and wrap your video
5407 * RGB-601::
5408 * Radial blur::
5409 * ReframeRT::         Changing the number of frames in a sequence
5410 * Reroute::           Rerouting channels to a different track
5411 * Reverse video::     How to play regions in reverse
5412 * Rotate::            How to rotate your video
5413 * SVG via Inkscape::
5414 * Scale::
5415 * Selective temporal averaging::
5416 * Sharpen::
5417 * ShiftInterlace::
5418 * Swap channels::
5419 * Threshold::         How to get monochrome out of a region of the image
5420 * Time average::      How to add trail patterns or increase still image quality
5421 * TimeFront::
5422 * Title::             How to add text to a track from inside Cinelerra
5423 * Translate::
5424 * Unsharp::           How to unsharp your video
5425 * Videoscope::        How to view the dynamic range of intensity and hue
5426 * Wave::
5427 * Whirl::
5428 * YUV::
5429 * Zoom blur::
5430 @end menu
5432 @c cincvdoc_node_number_162
5433 @node 1080 to 480
5434 @subsection 1080 to 480
5435 @cindex 1080 to 480 effect
5437 @image{manual_images_intl/1080to540,12.5mm}
5439 Most TV broadcasts are received with a 1920x1080 resolution but originate from
5440 a 720x480 source at the studio.  It is a waste of space to compress the entire
5441 1920x1080 if the only resolvable details are 720x480.  Unfortunately resizing
5442 1920x1080 video to 720x480 is not as simple as shrinking it.
5444 At the TV station the original 720x480 footage was first converted to fields of
5445 720x240.  Each field was then scaled up to 1920x540.  The two 1920x540 fields
5446 were finally combined with interlacing to form the 1920x1080 image.  This
5447 technique allows a consumer TV to display the re-sampled image without extra
5448 circuitry to handle 720x480 interlacing in a 1920x1080 image.
5450 If you merely deinterlace the 1920x1080 images, you would end up with
5451 resolution of 720x240.  The @b{1080 to 480} effect properly extracts two
5452 1920x540 size fields from the image, resizes them separately, and combines them
5453 again to restore a 1920x480 interlaced image.  The @b{scale} effect must then
5454 be applied to reduce the horizontal size to 960 or 720 depending on the
5455 original aspect ratio.
5457 The tracks to which @b{1080 to 480} is applied need to be at 1920x1080
5458 resolution.  The project settings in @b{settings->format} should be at least
5459 720x480 resolution.
5461 The effect does not know if the first row in the 1920x1080 image belongs to the
5462 first row of the 720x480 original.  You have to specify what the first row is
5463 in the effect configuration.
5465 The output of this effect is a small image in the middle of the original
5466 1920x1080 frame.  Use the projector to center the output image in the playback.
5468 Finally, once you have 720x480 interlaced video you can either apply @b{frames
5469 to fields} of @b{inverse telecine} to further recover original progressive
5470 frames.
5472 @c cincvdoc_node_number_163
5473 @node Aging TV
5474 @subsection Aging TV
5475 @cindex Aging TV
5477 @image{manual_images_intl/aging,17mm}
5479 This effect is the one to use if you want to achieve an "old movie" or TV show
5480 look.  It will put moving lines up and down the movie as well as putting "snow"
5481 on the video.  Use is along with Brightness/Contrast and Color Balance to make
5482 your movie look like a really old black and white movie.
5484 @c cincvdoc_node_number_164
5485 @node Blur
5486 @subsection Blur
5487 @cindex Blur
5489 @image{manual_images_intl/blur,12.5mm}
5491 This effect blurs a video track.  The parameters are:
5492 @itemize @bullet
5493 @item @b{Horizontal and vertical}@*
5494 Those parameters are used to tell which one of field blurring affects.  It
5495 can be be both fields.
5496 @item @b{Radius}@*
5497 Use this slider to define the amount of blur to apply.
5498 @item @b{Blur alpha, red, green, blue}@*
5499 Specifies which color channels has to be blurred.
5500 @end itemize
5502 @c cincvdoc_node_number_165
5503 @node Brightness/contrast
5504 @subsection Brightness/contrast
5505 @cindex Brightness/contrast
5506 @cindex Contrast
5508 @image{manual_images_intl/brightness,12.5mm}
5510 If you want to brighten a dark shot, or add light, this is the tool to use.  Do
5511 not overuse the effect or you risk degrading your video quality.  Use the effect along
5512 with Keyframing to brighten a long shot that is dark at the beginning but bright
5513 at the end.  Generally you will want to change the brightness and contrast
5514 about the same amount (eg darkness 28 contrast 26) so that your original colors
5515 are kept intact.
5517 @c cincvdoc_node_number_166
5518 @node Burning TV
5519 @subsection Burning TV
5520 @cindex Burning TV
5521 @cindex Video burning
5523 @image{manual_images_intl/burn,16mm}
5525 The video burning effect makes your video "burn" where there are small light
5526 colored patches of video, on the edge of a white T-shirt for example.  It can
5527 be a great asset to a music video and just a great outlet to help free your
5528 imagination in your video.
5530 @c cincvdoc_node_number_167
5531 @node Chroma key
5532 @subsection Chroma key
5533 @cindex Chroma key effect
5535 @image{manual_images_intl/chromakey,12.5mm}
5537 This effect erases pixels which match the selected color.  They are replaced
5538 to black if there is no alpha channel and transparency if there is an alpha
5539 channel.  The selection of color model is important to determine the behavior.
5541 @cindex Color picker
5542 @cindex Picker, color
5543 Chroma key uses either the lightness or the hue to determine what is erased.
5544 @b{Use value} singles out only the lightness to determine transparency.  Select
5545 a center color to erase using the @b{Color} button.  Alternatively a color can
5546 be picked directly from the output frame by first using the @b{color picker} in
5547 the compositor window and then selecting the @b{Use color picker} button.  This
5548 sets the chroma key color to the current color picker color.
5550 Be aware that the output of the chroma key is fed back to the compositor, so
5551 selecting a color again from the compositor will use the output of the chroma
5552 key effect.  The chroma key should be disabled when selecting colors with the
5553 color picker.
5555 If the lightness or hue is within a certain threshold it is erased.  Increasing
5556 the threshold determines the range of colors to be erased.  It is not a simple
5557 on/off switch, however.  As the color approaches the edge of the threshold, it
5558 gradually gets erased if the slope is high or is rapidly erased if the slope is
5559 low.  The slope as defined here is the number of extra values flanking the
5560 threshold required to go from opaque to transparent.
5562 Normally threshold is very low when using a high slope.  The two parameters
5563 tend to be exclusive because slope fills in extra threshold.
5565 The slope tries to soften the edges of the chroma key but it does not work well
5566 for compressed sources.  A popular softening technique is to use a maximum
5567 slope and chain a blur effect below the chroma key effect to blur just the
5568 alpha.
5570 @c cincvdoc_node_number_168
5571 @node Chroma key (HSV)
5572 @subsection Chroma key (HSV)
5573 @cindex Chroma key effect (HSV)
5575 @image{manual_images_intl/chromakeyhsv,12.5mm}
5577 FIXME
5579 @c cincvdoc_node_number_169
5580 @node Color balance
5581 @subsection Color balance
5582 @cindex Color balance
5583 @cindex Balance, color
5585 @image{manual_images_intl/colorbalance,12.5mm}
5587 Video Color Balance is a great effect to use along with Brightness/contrast and
5588 Hue/Saturation to try and compensate for possible errors in filming (low
5589 lighting, etc).  It can only do so much without greatly lowering the quality of
5590 the video, however.  It is just like the color balance effect on a picture
5591 editing program, such as GIMP@.  With it you can change the colors being sent to
5592 output CMY (Cyan, Magenta, Yellow) or RGB (Red, Green, Blue).
5594 @c cincvdoc_node_number_170
5595 @node Decimate
5596 @subsection Decimate
5597 @cindex Decimate effect
5599 @image{manual_images_intl/decimate,13.25mm}
5601 This effect drops frames from a track which are most similar in order to reduce
5602 the frame rate.  This is usually applied to a DVD to convert the 29.97 fps
5603 video to the 23.97 fps film rate but this decimate effect can take any input
5604 rate and convert it to any lower output rate.
5606 The output rate of @b{decimate} is the project frame rate.  The input rate is
5607 set in the @b{decimate} user interface.  To convert 29.97 fps progressive video
5608 to 23.97 fps film, apply a decimate effect to the track.  Set the decimate
5609 input rate to 29.97 and the project rate to 23.97.
5611 Be aware every effect layered before decimate processes video at the decimate
5612 input rate and every effect layered after decimate processes video at the
5613 project frame rate.  Computationally intensive effects should come below
5614 decimate.
5616 @c cincvdoc_node_number_171
5617 @node Deinterlace
5618 @subsection Deinterlace
5619 @cindex Deinterlace effect
5621 @image{manual_images_intl/deinterlace,12.5mm}
5623 The deinterlace effect has evolved over the years to deinterlacing and a whole
5624 lot more.  In fact two of the deinterlacing methods, @b{Inverse Telecine} and
5625 @b{Frames to Fields}, are separate effects.  The deinterlace effect offers
5626 several variations of line replication to eliminate comb artifacts in
5627 interlaced video.  It also has some line swapping tools to fix improperly
5628 captured video or make the result of a reverse effect display fields in the
5629 right order.
5631 @c cincvdoc_node_number_172
5632 @node Delay video
5633 @subsection Delay video
5634 @cindex Delay video
5636 @image{manual_images_intl/delayvideo,12.5mm}
5638 FIXME
5640 @c cincvdoc_node_number_173
5641 @node Denoise video
5642 @subsection Denoise video
5643 @cindex Denoise video
5645 @image{manual_images_intl/denoisevideo,12.5mm}
5647 FIXME
5649 @c cincvdoc_node_number_174
5650 @node Denoise video2
5651 @subsection Denoise video2
5652 @cindex Denoise video
5654 @image{manual_images_intl/denoisemjpeg,12.5mm}
5656 FIXME
5658 @c cincvdoc_node_number_175
5659 @node Difference key
5660 @subsection Difference key
5661 @cindex Difference key effect
5663 @image{manual_images_intl/diffkey,12.5mm}
5665 The difference key creates transparency in areas which are similar between 2
5666 frames.  The Difference key effect must be applied to 2 tracks.  One track
5667 contains the action in front of a constant background and another track
5668 contains the background with nothing in front of it.  Apply the difference key
5669 to the track with the action and apply a shared copy of it to the track with
5670 the background.  The track with the background should be muted and underneath
5671 the track with the action and the colormodel should have an alpha channel.
5673 Pixels which are different between the background and action track are treated
5674 as opaque.  Pixels which are similar are treated as transparent.  Change
5675 @b{threshold} in the difference key window to make more pixels which are not the
5676 same color transparent.  Change @b{slope} to change the rate at which the
5677 transparency tapers off as pixels get more different.
5679 The slope as defined here is the number of extra values flanking the threshold
5680 required to go from opaque to transparent.  A high slope is more useful with a
5681 low threshold because slope fills in extra threshold.
5683 @b{Use value} causes the intensity of pixels to be compared instead of the
5684 color.
5686 Applying a blur to the top track with just the alpha channel blurred can soften
5687 the transparency border.
5689 @b{Note:} Currently this effect is known to crash when using YUV modes.
5691 @c cincvdoc_node_number_176
5692 @node DotTV
5693 @subsection DotTV
5694 @cindex DotTV
5696 @image{manual_images_intl/dot,16.5mm}
5698 Another effect by Kentaro (effectTV).
5700 @c cincvdoc_node_number_177
5701 @node Downsample
5702 @subsection Downsample
5703 @cindex Downsample
5705 @image{manual_images_intl/downsample,12.5mm}
5707 Downsampling is the process of reducing the size of an
5708 image by throwing out data, reducing sampling rate.
5710 Parameters refers to:@*
5711 Horizontal@*
5712 Horizontal offset@*
5713 Vertical@*
5714 Vertical offset@*
5715 Channels
5717 @c cincvdoc_node_number_178
5718 @node Fields to frames
5719 @subsection Fields to frames
5720 @cindex Fields to frames effect
5722 @image{manual_images_intl/fieldframe,12.5mm}
5724 This effect reads frames at twice the project framerate, combining 2 input
5725 frames into a single interlaced output frame.  Effects preceding @b{fields to
5726 frames} process frames at twice the project frame rate.  Each input frame is
5727 called a field.
5729 @b{Fields to frames} needs to know what field corresponds to what lines in the
5730 output frame.  The easiest way to figure it out is to try both options in the
5731 window.  If the input fields are the result of a line doubling process like
5732 @b{frames to fields}, the wrong setting results in blurrier output.  If the
5733 input fields are the result of a standards conversion process like @b{1080 to
5734 480}, the wrong setting will not make any difference.
5736 The debobber which converts 720x480 interlaced into 1920x1080 interlaced or
5737 1280x720 progressive seems to degrade the vertical resolution to the point that
5738 it can not be recovered.
5740 @c cincvdoc_node_number_179
5741 @node Flip
5742 @subsection Flip
5743 @cindex Flip
5745 @image{manual_images_intl/flip,12.5mm}
5747 This effect permits to flip a video track (or a portion of) from left to right,
5748 right to left, up to down, down to up.
5750 The dialog window is simple, since only the vertical and horizontal parameters
5751 are needed.
5753 @c cincvdoc_node_number_180
5754 @node Frames to fields
5755 @subsection Frames to fields
5756 @cindex Frames to fields
5758 @image{manual_images_intl/framefield,13.25mm}
5760 This plugin applies the operation reverse to the "Fields to Frames" plugin: 
5761 it extracts the two interlaced fields stored in alternating lines of interlaced 
5762 source footage and outputs them as separate full frames. The alternating lines 
5763 missing on each output frame are interpolated. (The naming of this pair of plugins 
5764 is obviously misleading with respect to the common usage of the terms "field" 
5765 and "frame"; normally, "fields" denotes the interlaced half images and "frame" 
5766 denotes the full image).
5768 This plugin is only usefull if its output is pulled with doubled framerate with 
5769 respect to the source footage. One typical usage secenario is to do masking, 
5770 scaling and translating on interlaced footage without the need to destroy the 
5771 additional temporal information contained in such source material. This is 
5772 helpful if your intended target format is interlaced. If on the other hand, 
5773 you just want to target a progressive display (e.g. you create video for display 
5774 on computer monitor solely) then it is much more convienient to de-interlace 
5775 the source material prior to any further processing. 
5777 @b{Processing interlaced footage without deinterlacing}
5779 @enumerate 1
5780 @item Create a new project with doubled frame rate. I.e make it 50fps if your 
5781 source footage is 25i
5782 @item Insert your source footage onto a video track in the timeline. Now, 
5783 Cinelerra will playback each frame of your footage twice.
5784 @item Apply the "Frames to Fields" effect. Be sure to choose the correct 
5785 field order. Typical values beeing "bottom field first" for DV and "top field 
5786 first" for HDV.
5787 @item Then apply any further effects afterwards, including translations, scaling, 
5788 slow motion, precise frame-wise masking or use of the motion tracker plugin.
5789 @item Render your project to a intermediate clip. Be sure to choose a rather 
5790 lossless video codec, e.g. Motion-JPEG-A or even uncompressed yuv if you have 
5791 plenty of storage.
5792 @item Insert the intermediate clip into your original project. Make sure the 
5793 doubled framerate has been detected correctly by Cinelerra (by looking in the 
5794 clip's media info in the media resources folder)
5795 @item Apply the "Fields to frames" effect to the intermediate clip. This will 
5796 combine two adjacent fields into one interlaced field with the original frame rate.
5797 @item Do the final render on your original project
5798 @end enumerate
5800 @c cincvdoc_node_number_181
5801 @node Freeze frame
5802 @subsection Freeze frame
5803 @cindex Freeze frame effect
5805 @image{manual_images_intl/freezeframe,12.5mm}
5807 In its simplest form, highlight a region of the track to freeze, drop the
5808 freeze frame effect on the highlighted region, and the lowest numbered frame in
5809 the affected area will play throughout the entire region.
5811 Freezeframe has an @b{enabled} option which can be keyframed.  Regions of a
5812 freeze frame effect which are enabled repeat the lowest numbered frame since
5813 the last keyframe.  This has unique possibilities.
5815 @itemize @bullet
5816 @item If a freeze frame effect has a keyframe in the middle of it set to
5817 @b{enabled}, the frame in the middle is repeated in the entire effect.
5818 @item If a freeze frame effect has several keyframes, each set to @b{enabled},
5819 every time a keyframe is encountered the frame under it becomes the frozen one.
5820 @item If a freeze frame effect alternates between @b{enabled} and @b{disabled},
5821 each time an @b{enabled} keyframe is encountered the frame under it is
5822 replicated until the next @b{disabled} keyframe.  The disabled regions play
5823 through.
5824 @end itemize
5826 @c cincvdoc_node_number_182
5827 @node Gamma
5828 @subsection Gamma
5829 @cindex Gamma effect
5830 @cindex Raw camera images
5832 @image{manual_images_intl/gamma,12.5mm}
5834 Raw camera images store colors in a logarithmic scale.  The blacks in these
5835 images are nearly 0 and the whites are supposed to be infinity.  The graphics
5836 card and most video codecs store colors in a linear scale but Cinelerra keeps
5837 raw camera images in their original logarithmic scale when it renders them.
5838 This is necessary because the raw image parser can not always decode the proper
5839 gamma values for the images.  It also does its processing in 16 bit integers,
5840 which takes away a lot of information.
5842 The gamma effect converts the logarithmic colors to linear colors through a
5843 gamma value and a maximum value.  The gamma value determines how steep the
5844 output curve is and the maximum value is where 1.0 in the output corresponds to
5845 maximum brightness in the input.
5847 The gamma effect has 2 more parameters to simplify gamma correction.  The
5848 @b{automatic} option causes it to calculate @b{max} from the histogram of the
5849 image.  Use this when making a preview of a long list of images since it
5850 changes for every image.
5852 The @b{use color picker} option uses the value currently in the color picker to
5853 set the @b{max} value.  Note that every time you pick a color from the
5854 compositor window, you need to hit @b{use color picker} to apply the new value.
5856 @c cincvdoc_node_number_183
5857 @node Gradient
5858 @subsection Gradient
5859 @cindex Gradient
5861 @image{manual_images_intl/gradient,12.5mm}
5863 The gradient effect overlays a smooth color gradient on top of every video frame. 
5864 It is usefull for all sorts of backgound fills, for partially filtering or for 
5865 adding moving highlights. The Gradient effect can generate linear or circular 
5866 color fills. For linear fills, you can choose the angle, for circular fills the 
5867 center of the created gradient pattern. Moreover, you can control the slope of 
5868 the color transition by selecting a transition function (linear, logarithmic, 
5869 squared) and by changing the "start" and "stop" radius. Note that both colors 
5870 used in this color transition can contain an arbitrary Alpha value (transparency). 
5871 All parameters can be keyed and will be interpolated between keyframes.
5873 Note the following well known problems:
5874 @itemize @bullet
5875 @item When using limited color models in your project, the Gradient fill can 
5876 create color bands or steps.
5877 @item When using a project format with anamorphotic storage, Cinelerra won't do 
5878 any internal corrections for this. This can result in a circular fill showing up 
5879 elliptical. A common example is the HDV 1080i format, which is stored as 1440x1080 
5880 pixels, but displayed as 1920x1080 (16:9 aspect ratio). As Cinelerra does its 
5881 calculations on a 1440x1080 pixel bitmap, any circular fill will be streched out 
5882 horizontally when displaying the final output.
5883 @end itemize
5885 @c cincvdoc_node_number_184
5886 @node Histogram
5887 @subsection Histogram
5888 @cindex Histogram effect
5890 @image{manual_images_intl/histogram,12.5mm}
5892 This shows the number of occurrences of each color on a histogram plot.
5894 It is always performed in floating point RGB regardless of the project
5895 color-space.  The histogram has two sets of transfer parameters: the input
5896 transfer and the output transfer.
5898 4 histograms are possible in the histogram viewer.  The red, green, blue
5899 histograms show the input histograms for red, green, blue and multiply them by
5900 an input transfer to get the output red, green, blue.  Then the output red,
5901 green, blue is scaled by an output transfer.  The scaled red, green, blue is
5902 converted into a value and plotted on the value histogram.  The value histogram
5903 thus changes depending on the settings for red, green, blue.  The value
5904 transfers are applied uniformly to R, G, B after their color transfers are
5905 applied.
5907 Select which transfer to view by selecting one of the channels on the top of
5908 the histogram.
5910 The input transfer is defined by a graph overlaid on the histogram.  The
5911 horizontal direction corresponds to every possible input color.  The vertical
5912 direction corresponds to the output color for every input color.  Video
5913 entering the histogram is first plotted on the histogram plot, then it is
5914 translated so output values now equal the output values for each input value on
5915 the input graph.
5917 The input graph is edited by adding and removing any number of points.  Click
5918 and drag anywhere in the input graph to create a point and move it.  Click on
5919 an existing point to make it active and move it.  The active point is always
5920 indicated by being filled in.  The active point's input and output color are
5921 given in text boxes on top of the window.  The input and output color of the
5922 point can be changed through these text boxes.
5924 Points can be deleted by first selecting a point and then dragging it to the
5925 other side of an adjacent point.  They can also be deleted by selecting them
5926 and hitting @b{delete}.
5928 After the input transfer, the image is processed by the output transfer.  The
5929 output transfer is simply a minimum and maximum to scale the input colors to.
5930 Input values of 100% are scaled down to the output's maximum.  Input values of
5931 0% are scaled up to the output minimum.
5933 Input values below 0 are always clamped to 0 and input values above 100% are
5934 always clamped to 100%.  Click and drag on the output gradient's triangles to
5935 change it.  It also has textboxes to enter values into.
5937 Enable the @b{automatic} toggle to have the histogram calculate an automatic
5938 input transfer for the red, green, blue but not the value.  It does this by
5939 scaling the middle 99% of the pixels to take 100% of the histogram width.  The
5940 number of pixels permitted to pass through is set by the @b{Threshold} textbox.
5941 A threshold of 0.99 scales the input so 99% of the pixels pass through.
5942 Smaller thresholds permit fewer pixels to pass through and make the output look
5943 more contrasty.
5945 Automatic input transfer is calculated for the R, G, and B channels but not the
5946 value.@*
5947 @b{Plot histogram}@*
5948 @b{Split output}
5950 @c cincvdoc_node_number_185
5951 @node HolographicTV
5952 @subsection HolographicTV
5953 @cindex HolographicTV
5955 @image{manual_images_intl/holo,16.25mm}
5957 By Kentarou effectTV
5959 @c cincvdoc_node_number_186
5960 @node Hue saturation
5961 @subsection Hue saturation
5962 @cindex Hue saturation
5963 @cindex Saturation
5965 @image{manual_images_intl/huesaturation,12.5mm}
5967 With that effect you can change hue, saturation and value.  The parameters are
5968 modified using 3 simple sliders.
5970 @itemize @bullet
5971 @item The hue control shifts the colors circularly in the color plane, normally 
5972 resulting in "false" colors.
5973 @item The saturation control can be used to reduce color footage to black and white.
5974 @item The value control makes any given colors more bright or more subdued.
5975 @end itemize
5977 @c cincvdoc_node_number_187
5978 @node Interpolate video
5979 @subsection Interpolate video
5980 @cindex Interpolate video
5982 @image{manual_images_intl/interpolatevideo,13.25mm}
5984 The interpolate effect tries to create the illusion of a higher frame rate from 
5985 source footage of very low framerates by averaging frames over time. It averages 
5986 two input frames for each output frame. The input frames are at different times, 
5987 resulting in a dissolve for all output frames between the input frames. There 
5988 are two ways of specifying the input frames. You can specify an input frame rate 
5989 which is lower than the project frame rate. This causes input frames to be taken 
5990 at even intervals.@*
5991 You can also specify keyframe locations as the positions of the input frames. 
5992 In this mode the output frame rate is used as the input frame rate and you just 
5993 create keyframes wherever you want to specify an input frame. 
5995 @c cincvdoc_node_number_188
5996 @node Interpolate pixels
5997 @subsection Interpolate pixels
5998 @cindex Interpolate pixels
6000 @image{manual_images_intl/interpolate,12.5mm}
6002 Note: this effect works only for float color models.
6004 FIXME
6006 @c cincvdoc_node_number_189
6007 @node Inverse telecine
6008 @subsection Inverse telecine
6009 @cindex Inverse telecine effect
6011 @image{manual_images_intl/ivtc,12.5mm}
6013 This is the most effective deinterlacing tool when the footage is a video
6014 transfer of a film.  Here the film was converted from 24 fps to 60 fps.  Then
6015 the 60 fps was down-sampled to 30 fps by extracting odd and even lines and
6016 interlacing the lines.  The IVTC effect is primarily a way to convert
6017 interlaced video to progressive video.  It undoes three patterns of
6018 interlacing.@*
6019 @code{A AB BC CD D}@*
6020 @code{AB CD CD DE EF}@*
6021 @code{Automatic}
6023 The first two options are fixed patterns and affected by the @b{pattern offset}
6024 and @b{odd field first} parameters.  The last option creates several
6025 combinations of lines for each frame and picks the most progressive
6026 combination.  It is a brute force algorithm.
6028 This technique does not rely on a pattern like other techniques and is less
6029 destructive but the timing is going to be jittery because of the lack of a
6030 frame rate reduction.  In order to smooth out the timing, you need to follow
6031 inverse telecine with a decimate effect.
6033 @c cincvdoc_node_number_190
6034 @node Invert video
6035 @subsection Invert video
6036 @cindex Invert video
6038 @image{manual_images_intl/invertvideo,12.5mm}
6040 Also called invert video, it is a method of reversing the colors of a video
6041 track.
6043 The three parameters refer to channels (Red, Blue, Green, Alpha)
6045 @c cincvdoc_node_number_191
6046 @node Linear blur
6047 @subsection Linear blur
6048 @cindex Linear blur
6050 @image{manual_images_intl/linearblur,12.5mm}
6052 Blur has three styles: Linear, Radial, and Zoom
6054 Parameters refer to:
6055 @itemize @bullet
6056 @item @b{Length}@*
6057 Distance between original image and final blur step
6058 @item @b{Angle}@*
6059 Angle of motion, for linear blur
6060 @item @b{Steps}@*
6061 Number of blur steps
6062 @item @b{Channels}@*
6063 Which channel(s) to blur.
6064 @end itemize
6066 @c cincvdoc_node_number_192
6067 @node Live video
6068 @subsection Live video
6069 @cindex Live video effect
6071 @image{manual_images_intl/livevideo,12.5mm}
6073 This effect reads video directly from the capture card input.  It replaces any
6074 video on the track so it is normally applied to an empty track.  The
6075 configuration for the capture card is taken from the recording preferences.  Go
6076 to @b{Settings->Preferences->Recording} to set up the capture card.
6078 Go to the @b{Video In} section where it says @b{Record driver}.  It must be set
6079 to either @b{Video4Linux2} or @b{IEC 61883}.  Other video drivers have not been
6080 tested with Live Video and probably will not work.
6082 For live video, the selection for @b{File Format} and @b{Video} needs to be set
6083 to a format the timeline can use.  The file format must be @b{Quicktime for
6084 Linux} and video recording must be enabled for it.  Click on the wrench
6085 @image{manual_images_intl/wrench,4.33mm} to set the video compression.
6087 The video compression depends on the recording driver.  For the
6088 @b{Video4Linux2} recording driver, the compression must be @b{Motion JPEG A}.
6089 For the @b{IEC 61883} driver, the compression must be @b{DV}.  This gets the
6090 driver to generate output in a colormodel that the timeline can use.
6092 Some cards provide color and channel settings.  Live video takes the color
6093 settings from the values set in the @b{Video In} window.  Go to
6094 @b{File->Record} to bring up the recording interface and the Video In window.
6095 Values set in the @b{Video in} window are used by @b{Live Video}.  Any channels
6096 the capture card supports need to be configured in the @b{Video in} interface
6097 since the same channels are used by the @b{Live Video} effect.
6099 With the video recording configured, highlight a horizontal region of a video
6100 track or define in and out points.  Then drop the Live Video effect into it.
6101 Drop other effects after Live Video to process the live video in realtime.  For
6102 best results, you should use OpenGL and a video card which supports GL shading
6103 language.  Go to @b{Settings->Preferences->Playback->Video Out} to enable the
6104 OpenGL driver.
6106 Only one Live Video effect can exist at any time on the timeline.  It can not be
6107 shared by more than one track.
6109 @c cincvdoc_node_number_193
6110 @node Loop video
6111 @subsection Loop video
6112 @cindex Loop video effect
6114 @image{manual_images_intl/loopvideo,12.5mm}
6116 Sections of video can be looped by dropping a @b{loop} effect on them.
6117 Contrary to the @b{settings->loop playback} option, the loop effects can be
6118 rendered where the @b{settings->loop playback} option can not be.  The loop
6119 effects are also convenient for short regions.
6121 The loop effects have one option: the number of @b{frames} or @b{samples} to
6122 loop.  This specifies the length of the region to loop starting from either the
6123 beginning of the effect or the latest keyframe.  The region is replicated for
6124 the entire effect.
6126 Every time a keyframe is set in a loop effect, the keyframe becomes the
6127 beginning of the region to loop.  Setting several keyframes in succession
6128 causes several regions to loop.  Setting a single keyframe causes the region
6129 after the keyframe to be looped throughout the effect, no matter where the
6130 keyframe is.  The end of an effect can be looped from the beginning by setting
6131 the keyframe near the end.
6133 @c cincvdoc_node_number_194
6134 @node Motion
6135 @subsection Motion
6136 @cindex Motion video effect
6138 @image{manual_images_intl/motion,12.5mm}
6140 The motion tracker is almost a complete application in itself.  The motion
6141 tracker tracks two types of motion: translation and rotation.  It can track
6142 both simultaneously or one only.  It can do 1/4 pixel tracking or single pixel
6143 tracking.  It can stabilize motion or cause one track to follow the motion of
6144 another track.
6146 Although the motion tracker is applied as a realtime effect, it usually must be
6147 rendered to see useful results.  The effect takes a long time to precisely
6148 detect motion.
6150 The motion tracker works by using one region of the frame as the region to
6151 track.  It compares this region between 2 frames to calculate the motion.  This
6152 region can be defined anywhere on the screen.  Once the motion between 2 frames
6153 has been calculated, a number of things can be done with that motion vector.
6154 It can be scaled by a user value and clamped to a maximum range.  It can be
6155 thrown away or accumulated with all the motion vectors leading up to the
6156 current position.
6158 To save time the motion result can be saved for later reuse, recalled from a
6159 previous calculation, or discarded.
6161 The motion tracker has a notion of 2 tracks, the master layer and the target
6162 layer.  The master layer is where the comparison between 2 frames takes place.
6163 The target layer is where motion is applied either to track or compensate for
6164 the motion in the master layer.
6166 The intricacies of motion tracking are enough to sustain entire companies and
6167 build careers around.  The motion tracker in Cinelerra is not as sophisticated
6168 as some world class motion trackers but it is enough to sweeten some camcorder
6169 footage.
6171 Here is a brief description of the motion tracking parameters:
6173 @itemize @bullet
6175 @item @b{Track translation}@*
6176 Enables translation operations.  The motion tracker tracks X and Y motion in
6177 the master layer and adjusts X and Y motion in the target layer.
6179 @cindex Motion effect, translation block
6180 @cindex Translation block
6181 @item @b{Translation block size}@*
6182 For the translation operations, a block is compared to a number of neighboring
6183 blocks to find the one with the least difference.  The size of the block to
6184 search for is given by this parameter.
6186 @item @b{Translation search radius}@*
6187 The size of the area to scan for the translation block.
6189 @item @b{Translation search steps}@*
6190 Ideally the search operation would compare the translation block with every
6191 other pixel in the translation search radius.  To speed this operation up, a
6192 subset of the total positions is searched.  Then the search area is narrowed
6193 and rescanned by the same number of search steps until the motion is known to
6194 1/4 pixel accuracy.
6196 @item @b{Block X, Y}@*
6197 These coordinates determine the center of the translation block based on
6198 percentages of the width and height of the image.  The center of the block
6199 should be part of the image which is visible at all times.
6201 @item @b{Maximum absolute offset}@*
6202 The amount of motion detected by the motion tracker is unlimited if this is
6203 100.  If it is under 100 the amount of motion is limited by that percentage of
6204 the image size.
6206 @item @b{Settling speed}@*
6207 The motion detected between every frame can be accumulated to form an absolute
6208 motion vector.  If the settling speed is 100 the absolute vector is added to
6209 the next frame.  If the settling speed is less than 100 the absolute vector is
6210 downscaled by the settling amount before being added to the next frame.
6212 @item @b{Track rotation}@*
6213 Enables rotation operations.  The motion tracker tracks rotation in the master
6214 layer and adjusts rotation in the target layer.
6216 @item @b{Rotation block size}@*
6217 For rotation operations a single block is compared to equally sized blocks,
6218 each rotated by a different amount.  This is the size of the rotation block.
6220 @item @b{Rotation search radius}@*
6221 This is the maximum angle of rotation from the starting frame the rotation
6222 scanner can detect.  The rotation scan is from this angle counterclockwise to
6223 this angle clockwise.  Thus the rotation search radius is half the total range
6224 scanned.
6226 @item @b{Rotation search steps}@*
6227 Ideally every possible angle would be tested to get the rotation.  To speed up
6228 the rotation search, the rotation search radius is divided into a finite number
6229 of angles and only those angles compared to the starting frame.  Then the
6230 search radius is narrowed and an equal number of angles is compared in the
6231 smaller radius until the highest possible accuracy is achieved.@*
6232 Normally you need one search step for every degree scanned.  Since the rotation
6233 scanner scans the rotation search radius in two directions, you need two steps
6234 for every degree in the search radius to search the complete range.
6236 @item @b{Draw vectors}@*
6237 When translation is enabled, 2 boxes are drawn on the frame.  One box
6238 represents the translation block.  Another box outside the translation block
6239 represents the extent of the translation search radius.  In the center of these
6240 boxes is an arrow showing the translation between the 2 master frames.@*
6241 When rotation is enabled a single box the size of the rotation block is drawn
6242 rotated by the amount of rotation detected.
6244 @item @b{Track single frame}@*
6245 When this option is used the motion between a single starting frame and the
6246 frame currently under the insertion point is calculated.  The starting frame is
6247 specified in the @b{Frame number} blank.  The motion calculated this way is
6248 taken as the absolute motion vector.  The absolute motion vector for each frame
6249 replaces the absolute motion vector for the previous frame.  Settling speed has
6250 no effect on it since it does not contain any previous motion vectors.
6251 Playback can start anywhere on the timeline since there is no dependence on
6252 previous results.
6254 @item @b{Track previous frame}@*
6255 Causes only the motion between the previous frame and the current frame to be
6256 calculated.  This is added to an absolute motion vector to get the new motion
6257 from the start of the sequence to the current position.  After every frame
6258 processed this way, the block position is shifted to always cover the same
6259 region of the image.  Playback must be started from the start of the motion
6260 effect in order to accumulate all the necessary motion vectors.
6262 @item @b{Previous frame same block}@*
6263 This is useful for stabilizing jerky camcorder footage.  In this mode the
6264 motion between the previous frame and the current frame is calculated.  Instead
6265 of adjusting the block position to reflect the new location of the image, like
6266 Track Previous Frame does, the block position is unchanged between each frame.
6267 Thus a new region is compared for each frame.
6269 @item @b{Master layer}@*
6270 This determines the track which supplies the starting frame and ending frame
6271 for the motion calculation.  If it is @b{Bottom} the bottom track of all the
6272 tracks sharing this effect is the master layer.  The top track of all the
6273 tracks is the target layer.
6275 @item @b{Calculation}@*
6276 This determines whether to calculate the motion at all and whether to save it
6277 to disk.  If it is @b{Don't Calculate} the motion calculation is skipped.  If
6278 it is @b{Recalculate} the motion calculation is performed every time each frame
6279 is rendered.  If it is @b{Save} the motion calculation is always performed but
6280 a copy is also saved.  If it is @b{Load}, the motion calculation is loaded from
6281 a previous save calculation.  If there is no previous save calculation on disk,
6282 a new motion calculation is performed.
6284 @item @b{Action}@*
6285 Once the motion vector is known this determines whether to move the target
6286 layer opposing the motion vector or following the motion vector.  If it is
6287 @b{Do Nothing} the target layer is untouched.  If it is @b{Track...} the target
6288 layer is moved by the same amount as the master layer.  This is useful for
6289 matching titles to objects in the frame.  If it is @b{Stabilize...} the target
6290 layer is moved opposite to the motion vector.  This is useful for stabilizing
6291 an object in the frame.  The motion operations can be accurate to single pixels
6292 or subpixels by changing the action setting.
6293 @end itemize
6295 @menu
6296 * Secrets of motion tracking::
6297 * 2 pass motion tracking::
6298 * Using blur to improve motion tracking::
6299 * Using histogram to improve motion tracking::
6300 * Motion tracking in action::
6301 * Tracking stabilization in action::
6302 @end menu
6304 @c cincvdoc_node_number_195
6305 @node Secrets of motion tracking
6306 @subsubsection Secrets of motion tracking
6307 @cindex Secrets of motion tracking
6308 @cindex Motion tracking, secrets of
6310 Since it is a very slow effect, there is a method to applying the motion
6311 tracker to get the most out of it.  First disable playback for the track to do
6312 motion tracking on.  Then drop the effect on a region of video with some motion
6313 to track.  Then rewind the insertion point to the start of the region.  Set
6314 @b{Action} -> @b{Do Nothing}.  Set @b{Calculation} -> @b{Don't calculate}.
6315 Enable @b{Draw vectors}.  Then enable playback of the track to see the motion
6316 tracking areas.
6318 Enable which of @b{translation motion} or @b{rotation motion} vectors you want
6319 to track.  By watching the compositor window and adjusting the @b{Block x,y}
6320 settings, center the block on the part of the image you want to track.  Then
6321 set search radius, block size, and block coordinates for translation and
6322 rotation.
6324 Once this is configured, set the calculation to @b{Save coords} and do test
6325 runs through the sequence to see if the motion tracker works and to save the
6326 motion vectors.  Once this is done, disable playback for the track, disable
6327 @b{Draw vectors}, set the motion action to perform on the target layer and
6328 change the calculation to @b{Load coords}.  Finally enable playback for the
6329 track.
6331 When using a single starting frame to calculate the motion of a sequence, the
6332 starting frame should be a single frame with the least motion to any of the
6333 other frames.  This is rarely frame 0.  Usually it is a frame near the middle
6334 of the sequence.  This way the search radius need only reach halfway to the
6335 full extent of the motion in the sequence.
6337 If the motion tracker is used on a render farm, @b{Save coords} and @b{previous
6338 frame} mode will not work.  The results of the save coords operation are saved to
6339 the hard drives on the render nodes, not the master node.  Future rendering
6340 operations on these nodes will process different frames and read the wrong
6341 coordinates from the node filesystems.  The fact that render nodes only
6342 visualize a portion of the timeline also prevents @b{previous frame} from
6343 working since it depends on calculating an absolute motion vector starting on
6344 frame 0.
6346 @c cincvdoc_node_number_196
6347 @node 2 pass motion tracking
6348 @subsubsection 2 pass motion tracking
6349 @cindex 2 pass motion tracking
6350 @cindex Motion tracking, 2 pass
6352 The method described above is 2 pass motion tracking.  One pass is used just to
6353 calculate the motion vectors.  A second pass is used to apply the motion
6354 vectors to the footage.  This is faster than a single pass because errors in
6355 the motion vector calculation can be discovered quickly.
6357 This also allows the motion tracking to use a less demanding colormodel like
6358 RGB888 in the scanning step and a more demanding colormodel like RGB Float in
6359 the action step.  The scanning step takes much longer than action.
6361 This suffers the disadvantage of not being practical for extremely long
6362 sequences where some error is acceptable and the picture quality is lousy to
6363 begin with, like stabilizing camcorder footage.
6365 The slower method is to calculate the motion vectors and apply them
6366 simultaneously.  This method can use one track as the motion vector calculation
6367 track and another track as the target track for motion vector actions.  This is
6368 useful for long sequences where some error is acceptable.
6370 @c cincvdoc_node_number_197
6371 @node Using blur to improve motion tracking
6372 @subsubsection Using blur to improve motion tracking
6373 @cindex Blur, motion tracking
6374 @cindex Motion tracking, improving using blur
6376 With extremely noisy or interlaced footage, applying a blur effect before the
6377 motion tracking can improve accuracy.  Either save the motion vectors in a
6378 @b{tracking pass} and disable the blur for the @b{action pass} or apply the
6379 blur just to the @b{master layer}.
6381 @c cincvdoc_node_number_198
6382 @node Using histogram to improve motion tracking
6383 @subsubsection Using histogram to improve motion tracking
6384 @cindex Motion tracking, using histogram
6386 A histogram is almost always applied before motion tracking to clamp out noise
6387 in the darker pixels.  Either save the motion vectors in a @b{tracking pass}
6388 and disable the histogram for the @b{action pass} or apply the histogram just
6389 to the @b{master layer}.
6391 @c cincvdoc_node_number_199
6392 @node Motion tracking in action
6393 @subsubsection Motion tracking in action
6394 @cindex Motion tracking in action
6396 First, add a motion effect to the track.  Drag it from the resource window and
6397 drop it directly over the video in Cinelerra's main window.  You should see
6398 something similar to this:
6400 @center @image{manual_images_intl/cin_timeline_eff_clip,90mm}
6402 Then right-click on the motion effect marker in the timeline and select show
6403 to see the motion tracker dialog:
6405 @center @image{manual_images_intl/cin_motion_win,90mm}
6407 Start by looking at your Compositor.  You will see some new boxes
6408 overlaid on the video.  These are important to control the motion tracker.
6409 Here is a quick shot of what it will look like when working:
6411 @center @image{manual_images_intl/cin_comp_action_small,90mm}
6413 The image above shows the motion tracker losing track of the object because of
6414 a search window that is too small.  We will talk about this more later, but
6415 quickly:@*
6416 @itemize @bullet
6417 @item The middle small box is the target of the tracker.
6418 @item The middle larger box is the search range for the tracker.  It should
6419 contain the full range of motion for the tracking target.
6420 @item In this example, we are trying to track the hanging handle.  We have
6421 failed in this video frame, because the handle is far right of the center of
6422 frame.
6423 @item The left pointing vector indicates the motion tracker attempting to find
6424 the target.  More on this later.
6425 @end itemize
6427 Move to the beginning of your video clip
6429 Make sure the motion tracker dialog is open
6431 Look at the Compositor
6433 Start adjusting these four knobs:
6435 @center @image{manual_images_intl/cin_motion_track,90mm}
6437 Make sure you check Track Translation
6439 Uncheck Track Rotation
6441 Start with knob two - Translation block size - and spin it to get an idea
6442 for what is changing.  Notice that both boxes resize.  Look at the small inside
6443 box.  Adjust it to the size of the target (the object you want to track).  Do not
6444 worry if it does not cover the object yet.
6446 Go on to knobs three and four - Block X and Block Y@.  Use these to put the
6447 target designator over the target itself.
6449 Finally, use the top knob - Translation search radius.  Expand it to
6450 include the full range of travel you expect for the target.  If you look back
6451 at my original action shot, the search radius was to small and the target moved
6452 outside the range.  You can test this by playing the timeline and viewing the
6453 results (if your machine is fast enough for realtime) or by rendering and
6454 viewing the stabilized handle in the output.
6456 Make the first video frame look similar to:
6458 @center @image{manual_images_intl/cin_comp_first_setup_small,90mm}
6460 This image shows a lot of detail.  Notice that the small frame is centered over
6461 the handle and sized to just include it.  Those settings are control by knobs
6462 two through four.  Finally, the outer frame is larger than the back and forth
6463 movement of the handle in the entire video clip.
6465 Finally, here are other settings needed to see the effect:
6467 @center @image{manual_images_intl/cin_motion_set_output1,90mm}
6469 @itemize @bullet
6470 @item @b{Draw vectors} Uncheck this to prevent rendering of the target boxes and
6471 motion vectors in your rendered video.  If checked, the vectors and boxes are
6472 rendered in output video.
6473 @item @b{Track Single Frame} For this example it is set with a Frame number of 0
6474 (first frame)
6475 @item @b{Master Layer} If the effect is shared between two tracks it specifies
6476 which of those tracks will be the one where motion is tracked (Master Layer)
6477 and which layer will be affected by the resulting translation vectors (Target
6478 Layer).  If there is no second track sharing motion tracker then the
6479 Master=Target.
6480 @item @b{Action} Select the stabilize options to have the rendered video follow
6481 the motion of the target.  Select a Track option to run motion tracking without
6482 adjusting the video.
6483 @item @b{Calculation}
6484 @itemize @bullet
6485 @item @b{Don't Calculate} select this option to turn off adjustment of video.
6486 @item @b{Recalculate} Perform motion tracking and update video per Action
6487 setting.
6488 @item @b{Save and Load} Saves/Loads the translation/rotation vectors (absolute
6489 or relative) to/from files.  Each frame gets an separate file in /tmp directory
6490 which contains its vector.
6491 @end itemize
6492 @end itemize
6494 @c cincvdoc_node_number_200
6495 @node Tracking stabilization in action
6496 @subsubsection Tracking stabilization in action
6497 @cindex Tracking stabilization in action
6499 In this section, we will explain how to stabilize a video.  Such a need can
6500 arise when the video was taken from a vehicle for example.
6502 First select on the timeline the part of the footage you want to stabilize,
6503 using the in and out points.  Then apply the motion effect on that part of the
6504 video.
6506 Select the "Previous frame same block" option.  That option is recommended for
6507 stabilizing jerky camcorder footage.  Its goal is not to "follow" an object.
6508 The block stays exactly at the same place during all the effect length.
6510 Enlarge the block and select almost half the size of the video.  Select the
6511 "Stabilize subpixel" option: it will give a finer stabilization.  Reduce the
6512 "Maximum absolute offset" value to limit the stabilization amplitude.  You
6513 probably prefer to get a non-perfect stabilization on some places on the video,
6514 than having a very large black border on one side of the picture during big
6515 shakes.  Set the "Translation search steps" value to 128.  Increasing that
6516 value will not give a better result, but will considerably increase the
6517 rendering time.  Make sure the "Draw vectors" option is selected, and render
6518 the part of the video where the motion effect is applied.
6520 If the result is good, deselect the "Draw vectors" option.  The block and
6521 vectors were not drawn anymore on the video.  Then, render your video to a
6522 @file{.dv} file, and import it into your project.
6524 You will notice the video is stabilized but there are black borders which
6525 appear on sides of the frame.  You have to zoom in and define projector
6526 keyframes to move the projector around the screen, in order to remove those
6527 black borders.  The more your footage is jerky, the more you have to zoom in to
6528 discard the black borders.  That is why the result is better with HDV footage
6529 than with DV footage.
6531 @c cincvdoc_node_number_201
6532 @node Motion blur
6533 @subsection Motion blur
6534 @cindex Motion blur
6536 @image{manual_images_intl/motionblur,12.5mm}
6538 FIXME
6540 @c cincvdoc_node_number_202
6541 @node Oil painting
6542 @subsection Oil painting
6543 @cindex Oil painting
6544 @cindex Painting, oil
6546 @image{manual_images_intl/oilpainting,12.5mm}
6548 This effect makes video tracks appears as a painting.  It can be controlled by
6549 Radius slider.  Intensity of colors can be chosen as option.
6551 @c cincvdoc_node_number_203
6552 @node Overlay video
6553 @subsection Overlay video
6554 @cindex Overlay video
6556 @image{manual_images_intl/overlay,13.25mm}
6558 This effect can combine several tracks by using the so called Overlayer. This is 
6559 a basic internal device normally used by Cinelerra to create the (dissolve) 
6560 transitions and for compositing the final output of every track onto the output 
6561 bitmap. The Overlayer has the ability to combine one or several image layers on 
6562 top of a "bottom layer". It can do this combining of images in several different 
6563 (and switchable) output modes: Normal, Additive, Subtractive, Multiply (Filter), 
6564 Divide, Max and Replace. For a detailed explanation of the several overlay modes 
6565 @xref{Compositing}. 
6567 Now, the overlay plugin enables the use of this Overlayer device in the middle 
6568 of any plugin stack, opening endles filtering and processing possibilities. 
6569 It is only usefull as a shared plugin (i.e. a multitrack plugin). So, to use 
6570 the overlay plugin
6572 @enumerate 1
6573 @item Add the effect to Track A.
6574 @item Choose "attach effect" from the context menu of another track (Track B).
6575 @item Choose "Track A:Overlay" as a shared plugin.
6576 @item Manipulate the plugin parameters in Track A.
6577 @end enumerate
6579 In the Overlay Plugin's parameter window you can choose the overlay order, i.e. 
6580 which track plays the role of the "bottom layer" and which plays the role of 
6581 the "top layer". For some overlay modes, this can make quite a difference, e.g. 
6582 the top layer is subtracted from the bottom layer for "Subtractive" mode. Further
6583 on, you can choose on which of the tracks to overlay the combined output. (Hint: 
6584 in most cases, you will want to mute the other track and only retain this 
6585 combined output). 
6587 @c cincvdoc_node_number_204
6588 @node Perspective
6589 @subsection Perspective
6590 @cindex Perspective
6592 @image{manual_images_intl/perspective,12.5mm}
6594 The perspective effect allows you to change the perspective of an object, and
6595 is perfect for making objects appear as if they are fading into the distance.
6597 @c cincvdoc_node_number_205
6598 @node Polar
6599 @subsection Polar
6600 @cindex Polar
6602 @image{manual_images_intl/polar,12.5mm}
6604 The Polar effect bends and warps your video in weird ways.  Mathematically, it
6605 converts your video from either polar coordinates to rectangular coordinates,
6606 or the reverse.
6608 @c cincvdoc_node_number_206
6609 @node RGB-601
6610 @subsection RGB-601
6611 @cindex RGB-601
6613 @image{manual_images_intl/rgb601,12.5mm}
6615 For analog video or MPEG (including DVD) output, the maximum range for
6616 R,G,B is [16, 235] (8-bit). For YUV, the maximum range for intensity
6617 (Y) is [16, 235] (8-bit). This range corresponds to gray levels from
6618 6% to 92%. When rendering, values outside of these ranges will be
6619 clipped to these limits.
6621 To render to MPEG, add the RGB-601 effect to all video tracks where
6622 material uses the full intensity scale (0-100%), and enable @b{RGB ->
6623 601 compression}. Consider adding the Videoscope effect after RGB-601
6624 to see how RGB-601 affects your dynamic range. @xref{Videoscope}.
6626 (To preview how your rendered MPEG would look @i{without} RGB-to-601
6627 compression, instead enable @b{601 -> RGB expansion} -- you will
6628 observe a noticable contrast increase.)
6630 Although RGB-601 will reduce contrast in your video tracks, the
6631 contrast will be restored during MPEG playback.
6633 @c cincvdoc_node_number_207
6634 @node Radial blur
6635 @subsection Radial blur
6636 @cindex Radial blur
6638 @image{manual_images_intl/radialblur,12.5mm}
6640 It creates a whirlpool blur that simulates a swirling camera.  You can vary the
6641 location, type, and quality of the blur.
6643 @c cincvdoc_node_number_208
6644 @node ReframeRT
6645 @subsection ReframeRT
6646 @cindex ReframeRT video effect
6648 @image{manual_images_intl/reframert,12.5mm}
6650 ReframeRT changes number of frames in a sequence of video directly from the
6651 timeline.  It has 2 modes, selected by the 2 toggles in the GUI@.
6653 @b{Stretch} mode multiplies the current frame number of its output by the scale
6654 factor to arrive at the frame to read from its input.  If its current output
6655 frame is #55 and the scale factor is 2, frame #110 is read from its input.  The
6656 stretch mode has the effect of changing the length of output video by the
6657 inverse of the scale factor.  If the scale factor is greater than 1, the output
6658 will end before the end of the sequence on the timeline.  If it is less than 1,
6659 the output will end after the end of the sequence on the timeline.  The
6660 ReframeRT effect must be lengthened to the necessary length to accommodate the
6661 scale factor.  Change the length of the effect by clicking on the endpoint of
6662 the effect and dragging.
6664 Although stretch mode changes the number of the frame read from its input, it
6665 does not change the frame rate of the input.  Effects before ReframeRT assume
6666 the same frame rate as ReframeRT@.
6668 @cindex Fast play effect
6669 The ReframeRT in stretch mode can be use to create a @b{fast play effect}.
6670 Select Stretch mode and enter a value greater than 1 to get accelerated
6671 playback.
6673 @cindex Slow motion effect
6674 For @b{slow motion effect}, use a ReframeRT effect in stretch mode with a value
6675 less than 1.  @b{Example}: you have a clip that you want to put in slow motion.
6676 The clip starts at 33.792 seconds and ends at 39.765.  The clip is 5.973
6677 seconds long.  You want to play it at 4/10ths normal speed.  You divide the
6678 clip length by the playback speed (5.973/.4) to get a final clip length of
6679 14.9325 seconds.  You create an in point at the start of your clip: 33.792
6680 seconds.  You put an out point 14.9325 seconds later, at 48.7245 seconds
6681 (33.792 + 14.9325).  You attach a ReframeRT effect, set it to .4 and stretch.
6682 You change the out point at 48.7245 to an in point.  You start your next clip
6683 after the slow motion effect at the 48.7245 out point.
6685 You can also change the frame rate of the clip if you right click on it in the
6686 @b{media viewer} and go to @b{Info}.  If you do not hit the drop down first, you
6687 can type in a desired frame rate as well.  Cinelerra will pick the right frames
6688 out for the project frame rate, effectively doing the time-lapsing as well
6690 @b{Downsample} mode does not change the length of the output sequence.  It
6691 multiplies the frame rate of the output by the scale factor to arrive at a
6692 frame rate to read the input.  This has the effect of replicating the input
6693 frames so that they only change at the scaled frame rate when sent to the
6694 output.  It does not change the length of the sequence.  If the scale factor is
6695 0.5 and the output frame rate is 30 fps, only 15 frames will be shown per
6696 second and the input will be read at 15 fps.  Downsample is only useful for
6697 scalefactors below 1, hence the name downsample.
6699 Downsample mode changes the frame rate of the input as well as the number of
6700 the frame to read, so effects before ReframeRT see the frame rate * the scale
6701 factor as their frame rate.  If the scale factor is 2 and the output frame rate
6702 is 30, the input frame rate will be 60 and the input frame number will by
6703 doubled.  This will not normally do anything but some input effects may behave
6704 differently at the higher frame rate.
6706 @c cincvdoc_node_number_356
6707 @node Reroute
6708 @subsection Reroute
6709 @cindex Reroute video effect
6711 FIXME
6713 It enables to selectively transfer the Alpha channel or the Components (RGB or 
6714 YUV) or both from a source track to a target track, partially overwriting the 
6715 target's contents. It works as a shared plugin. The typical usage scenario is
6716 to build up a possibly animated Mask in one track and then to transfer the Alpha 
6717 channel to another content track.
6719 @c cincvdoc_node_number_209
6720 @node Reverse video
6721 @subsection Reverse video
6722 @cindex Reverse video effect
6724 @image{manual_images_intl/reversevideo,12.5mm}
6726 Media can be reversed on the timeline in realtime.  This is not to be confused
6727 with using the reverse playback on the transport.  The reverse effects reverse
6728 the region covered by the effect regardless of the transport direction.
6730 The region to be reversed is first determined by what part of the track the
6731 effect is under and second by the locations of keyframes in the effect.  The
6732 reverse effects have an @b{enabled} option which allows you to set keyframes.
6733 This allows may possibilities.
6735 Every @b{enabled} keyframe is treated as the start of a new reversed region and
6736 the end of a previous reversed region.  Several @b{enabled} keyframes in
6737 succession yield several regions reversed independent of each other.  An
6738 @b{enabled} keyframe followed by a @b{disabled} keyframe yields one reversed
6739 region followed by a forward region.
6741 @c cincvdoc_node_number_210
6742 @node Rotate
6743 @subsection Rotate
6744 @cindex Rotate
6746 @image{manual_images_intl/rotate,13.25mm}
6748 The Rotate filter can rotate the video in 90 degree increments, reverse and
6749 flip the video.
6751 @c cincvdoc_node_number_211
6752 @node SVG via Inkscape
6753 @subsection SVG via Inkscape
6754 @cindex SVG via Inkscape
6756 @image{manual_images_intl/svg,12.5mm}
6758 FIXME
6760 @c cincvdoc_node_number_212
6761 @node Scale
6762 @subsection Scale
6763 @cindex Scale
6765 @image{manual_images_intl/scale,12.5mm}
6767 FIXME
6769 @c cincvdoc_node_number_213
6770 @node Selective temporal averaging
6771 @subsection Selective temporal averaging
6772 @cindex Selective temporal averaging
6774 @image{manual_images_intl/timeavg,12.5mm}
6776 This plugin is designed to smooth out non-moving areas of a video clip.  The
6777 smoothing is performed by averaging the color component for each pixel across a
6778 number of frames.  The smoothed value is used if both the standard deviation
6779 and the difference between the current component value and the average
6780 component value are below a threshold.
6782 The average and standard deviation are calculated for each of the components
6783 of the video.  The type of components averaged is determined by the color model
6784 of the entire project.  The average and standard deviation of the frames can be
6785 examined by selecting the specific radio button in the plugin options window.
6787 The region over which the frames are averaged is determined by either a fixed
6788 offset or a restart marker system.  In a restart marker system, certain
6789 keyframes are marked as beginning of sections.  Then for each section, the
6790 frames surrounding the current frame are used as the frames to average over,
6791 except when approaching the beginning and end of a section, whereby the
6792 averaging is performed over the @i{N} beginning or ending frames respectively.
6794 @b{Common usage:}
6796 If you have to select the number of frames you wish to average.
6798 @enumerate 1
6799 @item Enter a reasonable number of frames to average (e.g. 10).
6800 @item Select the @b{Selective Temporal Averaging} method and enter 1 and 10 for
6801 all the @b{Av. Thres.} and @b{S.D. Thres.} respectively.  This basically causes
6802 all pixels to use the average value.
6803 @item Turn the mask for a the first component on.  This should make the whole
6804 frame have a solid color of that specific component.
6805 @item Slowly reduce the @b{S.D. Thres.} value.  As you do so, you will notice
6806 that the regions vastly different from the average will have a flipped mask
6807 state.  Continue to reduce the threshold until you reach the point at which
6808 non-moving regions of the video have a flipped masked state.  This value is
6809 known as the @b{noise-floor} and is the level of natural noise generated by the
6810 CCD in the camera.
6811 @item Repeat the same procedure for the @b{Av. Thres.}
6812 @item Turn off the mask
6813 @item Repeat this for all channels
6814 @end enumerate
6816 @c cincvdoc_node_number_214
6817 @node Sharpen
6818 @subsection Sharpen
6819 @cindex Sharpen
6821 @image{manual_images_intl/sharpen,12.5mm}
6823 FIXME
6825 @c cincvdoc_node_number_215
6826 @node ShiftInterlace
6827 @subsection ShiftInterlace
6828 @cindex ShiftInterlace
6830 @image{manual_images_intl/shiftinterlace,12.5mm}
6832 FIXME
6834 @c cincvdoc_node_number_216
6835 @node Swap channels
6836 @subsection Swap channels
6837 @cindex Swap channels
6839 @image{manual_images_intl/swapchannels,12.5mm}
6841 FIXME
6843 @c cincvdoc_node_number_217
6844 @node Threshold
6845 @subsection Threshold
6846 @cindex Threshold video effect
6847 @cindex Luminance
6849 @image{manual_images_intl/threshold,12.5mm}
6851 Threshold converts the image to pure luminance, and replaces pixels
6852 with one of three colors based on the luminance. Pixels with luminance
6853 values in the low range are replaced with black, pixels in the middle
6854 range are replaced with white, and pixels in the high range are
6855 replaced with black. Color and alpha for each range are configurable
6856 and interpolate according to keyframes.
6858 The threshold window shows a histogram of luminance values for the
6859 current frame. Click dragging inside the histogram creates a range to
6860 convert to white. @b{SHIFT-clicking} extends one border of this range.
6861 Values for the threshold range can also be specified in the text
6862 boxes.
6864 This effect is basically a primitive luminance key.  A second track above the
6865 track with the threshold effect can be multiplied, resulting in only the parts
6866 of the second track within the threshold being displayed.
6868 @c cincvdoc_node_number_218
6869 @node Time average
6870 @subsection Time average
6871 @cindex Time average video effect
6873 @image{manual_images_intl/timeavg,12.5mm}
6875 Time average is one effect which has many uses besides creating nifty trail
6876 patterns of moving objects.  It is main use is reducing noise in still images.
6877 Merely point a video camera at a stationary subject for 30 frames, capture the
6878 frames, and average them using @b{time average} and you will have a super high
6879 quality print.  In floating point colormodels, time average can increase the
6880 dynamic range of lousy cameras.
6882 Inside the time average effect is an accumulation buffer and a divisor.  A
6883 number of frames are accumulated in the accumulation buffer and divided by the
6884 divisor to get the average.
6886 Because the time average can consume enormous amounts of memory, it is best
6887 applied by first disabling playback for the track, dropping the time average in
6888 it, configuring time average for the desired number of frames, and re-enabling
6889 playback for the track.
6891 @itemize @bullet
6892 @item @b{Frames to average}@*
6893 This determines the number of frames to be accumulated in the accumulation
6894 buffer.  For extremely large integrations it is easier to edit the EDL in a
6895 text editor and put in the number of frames.
6897 @item @b{Accumulate}@*
6898 This outputs the accumulation buffer without dividing it.
6900 @item @b{Average}@*
6901 This causes the accumulation buffer to be divided before being output.
6902 This results in the average of all the frames.
6904 @item @b{Inclusive Or}@*
6905 This causes the accumulation buffer to be replaced by any pixels which
6906 are not transparent.  In combination with motion tracking it allows entire
6907 sequences to be combined to form panoramas.
6909 @item @b{Reprocess frame again}@*
6910 If an effect before the time average is adjusted the time average normally
6911 does not reread the accumulation buffer to get the change.  This forces it to
6912 reread the accumulation buffer when other effects change.
6914 @item @b{Disable subtraction}@*
6915 In order to represent the accumulation of only the specified number of
6916 frames, the time average retains all the previous frames in memory and
6917 subtracts them out as it plays forward.  It would run out of memory if it had
6918 to accumulate thousands of frames.  By disabling subtraction the previous
6919 frames are not stored in memory and only the average function is affected by
6920 the frame count.
6921 @end itemize
6923 @c cincvdoc_node_number_219
6924 @node TimeFront
6925 @subsection TimeFront
6926 @cindex TimeFront
6928 @image{manual_images_intl/timefront,12.5mm}
6930 This is a warping framework plugin based on this article:@*
6931 @uref{http://www.vision.huji.ac.il/videowarping/HUJI-CSE-LTR-2005-10_etf-tr.pdf}
6933 @c cincvdoc_node_number_220
6934 @node Title
6935 @subsection Title
6936 @cindex Title
6937 @cindex Gimp
6939 @image{manual_images_intl/titler,12.5mm}
6941 While it is possible to add text to movies by importing still images from The
6942 Gimp and compositing them, the Titler allows you to add text from within
6943 Cinelerra.
6945 The titler has standard options for @b{font, size, and style}.  The best font
6946 is a generic, normal font like Arial in a large size. 
6948 The titler also has options you will only find in moving pictures.  The
6949 @b{Justify} operation justifies the text relative to the entire frame.  Once
6950 justified, the @b{X and Y} offset is applied.  This allows text to be justified
6951 while at the same time letting you push it within the title safe region.
6953 The @b{motion type} scrolls the text in any of the four directions.  When using
6954 this, the text may disappear.  Make sure the speed is set to a reasonably high 
6955 value (try 150) and move the insertion point along the timeline until the text 
6956 is far enough along the animation to reappear.  The text scrolls on and scrolls off.
6958 Setting @b{loop} causes the text to scroll completely off and repeat.  Without
6959 @b{loop} the text scrolls off and never reappears.
6961 The speed of the animation is determined by @b{speed}, in pixels per second.  
6962 Set it higher to speed up the animation.
6964 @b{Drop shadow} draws a black copy of the text to the bottom right of the
6965 original text.  This is useful when drawing text over changing video to keep
6966 the border always visible.
6968 In addition to the scrolling, @b{Fade in/Fade out} are a second type of
6969 animation.  If the fade seconds are 0, no fading is done.
6971 @b{Color} picks the color to draw the text in.  Usually white is the only
6972 practical color.
6974 @b{Stamp timecode} replaces the text with the current position on the timeline
6975 in seconds and frames.
6977 Text options can only be applied to all the text as a whole. If you want your
6978 title text formatted with a mixture of fonts, sizes, styles, alignments etc. you
6979 need to use multiple tile effects.
6981 The title effect supports keyframes only for @b{Justify} and @b{Text}, with
6982 no interpolation.@*
6983 To add subtitles to your movie can set a single title effect and then define keyframes.  
6984 If you enable the automatic keyframes toggle @image{manual_images_intl/autokeyframe}, 
6985 a new keyframe is created each time you edit the text. Check @b{View -> Plugin autos} 
6986 to make them visible on the timeline. In the text input box you will see the
6987 subtitle displayed under the insertion point.@*
6988 To correct an existing subtitle, the automatic keyframes toggle must be off. 
6989 To adjust the timing of subtitles simply drag the keyframes.@*
6990 @b{Note:} For adding subtitles on a separate stream, you need an external subtitle editor.
6991 @xref{Adding subtitles}, for more information.
6993 To create special effects for your title you can place it on a dedicated track
6994 and insert other realtime video effects just under the title effect or/and use
6995 camera and projector. Thanks to keyframing you can animate your title and make it 
6996 change position, size, colour, transparency, texture, shape over time.
6998 To included graphical elements like logos, you may want to import your title as
6999 a PNG image (alpha channel transparency is possible), move it with camera
7000 and projector or add effects.
7002 The titler input is limited to 1023 characters. Titles longer than 1023 characters 
7003 will be accepted by the software, but they will likely cause lock-ups. See 
7004 @uref{http://bugs.cinelerra.org/show_bug.cgi?id=155|bug 155} to know more.
7006 @menu
7007 * Adding fonts to the titler:: How to add fonts to the titler
7008 * The title-safe region::      How to keep text visible on output
7009 @end menu
7011 @c cincvdoc_node_number_221
7012 @node Adding fonts to the titler
7013 @subsubsection Adding fonts to the titler
7015 @cindex Fonts, adding to the titler
7016 @cindex TTF fonts
7017 The X Window system originally did not have a suitable font renderer for video.
7018 It also is restricted to the current bit depth.  It does not have a convenient
7019 way to know which fonts work with the suitable font renderer in the desired bit
7020 depth.  The easiest way we have found to support fonts in the titler is to have a
7021 directory for them at @file{/usr/lib/cinelerra/fonts}.
7023 The titler supports mainly @b{TTF}, true type fonts.  It supports others but
7024 TTF are the most reliable.  To add true type fonts, copy the @file{.TTF} files
7025 to the @file{/usr/lib/cinelerra/fonts} directory.  In that directory run
7026 @command{ttmkfdir && mv fonts.scale fonts.dir} and restart Cinelerra.  The new
7027 fonts should appear.  The usage of ttmkfdir changes frequently so this
7028 technique might not work.
7030 @c cincvdoc_node_number_222
7031 @node The title-safe region
7032 @subsubsection The title-safe region
7033 @cindex Title-safe region
7034 @cindex TV display
7036 If the video is displayed on a consumer TV, the outer border is going to be
7037 cropped by 5% on each side.  Moreover, text which is too close to the edge
7038 looks sloppy.  Make sure when adding titles to have the @b{title-safe}
7039 @image{manual_images_intl/titlesafe} tool active in the @b{compositor} window.  
7040 The text should not cross the inner rectangle.
7042 @c cincvdoc_node_number_223
7043 @node Translate
7044 @subsection Translate
7045 @cindex Translate
7047 @image{manual_images_intl/translate,12.5mm}
7049 This effect allows displacing, cropping, and/or scaling the source video
7050 horizonally and/or vertically.  The In and Out parameters operate similar to the
7051 camera and projector functions in the Compositor:
7053 @itemize @bullet
7054 @item In X/Y specifies how many pixels from the left/top of the source you want
7055 to start (camera) while Out X/Y defines where on the screen you want the output
7056 to start (projector)
7057 @item In W/H defines how many pixels of the source you want to include in each
7058 direction while Out W/H defines how many pixels on the screen you want that
7059 source to take up.  Identical values for both In and Out that are less than the
7060 source dimension will simply crop the source.  Different values will stretch
7061 (or compress if Out > In) the source in that direction (and crop if In is less
7062 than the source dimension.)
7063 @end itemize
7065 This effect supports keyframes so these parameters can change smoothly over
7066 time.
7068 You can use this effect for many things such as having a cropped inset clip
7069 move across the screen, or have it change size or stretch while doing so. 
7070 Be forewarned though, that for interlaced footage horizontal displacements are 
7071 likely to destroy the field order, resulting in all sort of flickering and 
7072 jumping movements.
7074 @c cincvdoc_node_number_224
7075 @node Unsharp
7076 @subsection Unsharp
7077 @cindex Unsharp
7079 @image{manual_images_intl/unsharp,12.5mm}
7081 This effect applies a traditional darkroom techique, the so called unsharp mask 
7082 to every video frame. With different parameter values, this can be used to 
7083 soften or to sharpen the image. Its parameters are:
7084 @itemize @bullet
7085 @item @b{Amount}@*
7086 Moving the slider to the right makes dark areas get darker and light areas
7087 get lighter.
7089 @item @b{Radius}@*
7090 This slider controls how much blurring is used in the edge-finding stage.
7091 The practical effect of this is to specify how large a region is darkened or
7092 lightened.
7094 @item @b{Threshold}@*
7095 This slider permits to control how big is a difference between a pixel in
7096 the blurred copy and the original copy is needed before any darkening or
7097 lightening will be applied.
7098 @end itemize
7100 @c cincvdoc_node_number_225
7101 @node Videoscope
7102 @subsection Videoscope
7103 @cindex Videoscope
7105 @menu
7106 * The waveform scope::
7107 * The vectorscope::
7108 @end menu
7110 @image{manual_images_intl/videoscope,12.5mm}
7112 The Videoscope summarizes intensity and color on a calibrated display.
7113 The Videoscope can be used in conjunction with other Cinelerra plugins
7114 such as YUV, HUE, Brightness, Color Balance or Histogram to accurately
7115 correct video for contrast, clarity, conformance (to normalize various
7116 videos shot under different light settings), or for cinematic
7117 purposes. The human eye is not specialized to match precise level of
7118 light and color, but Videoscope is.
7120 Some thought is being given to having a video scope for recording.
7121 Unfortunately, this would require a lot of variations of the video scope for
7122 all the different video drivers.
7124 The Videoscope contains two displays: the @b{waveform scope} and the
7125 @b{vectorscope}
7127 @c cincvdoc_node_number_226
7128 @node The waveform scope
7129 @subsubsection The waveform scope
7130 @cindex Waveform scope
7132 The Waveform Scope displays image intensity (luminance) versus image X
7133 position. The Waveform Scope appears on the left side of the
7134 Videoscope window.
7136 The display is calibrated vertically from 0% intensity (black) at the
7137 bottom up to 100% intensity at the top. Each column of pixels in the
7138 image corresponds to one column of pixels in the Waveform Scope.
7140 @center @image{manual_images_intl/videoscope_waveform_bars,64mm}
7142 The color bar test image is plotted in the waveform display as a stair
7143 step set of lines. In this example, the waveform display and the test
7144 image are aligned to show that each stair step corresponds with one
7145 color bar.
7147 The waveform display shows the white bar at the 75% level because the
7148 colors in the test image are 75% values. The white bar has the highest
7149 luminance because it contains all color components. In more complex
7150 images, multiple levels in the same column are represented with
7151 multiple pixels on the scope.
7153 The Waveform scope helps correct image light levels for contrast range or for
7154 conforming light levels on various scenes originally shot on different light
7155 settings.
7157 Adjusting light levels (adjusting luminance):
7158 @enumerate 1
7159 @item Insert the Brightness/Contrast, YUV, or another video adjustment effect
7160 on your track.
7161 @item Insert the Videoscope effect on the track below. Make sure that it is
7162 placed below so it can see the adjustment effect's results. If it is not,
7163 right-click and move it down.
7164 @item Show both the effect and Videoscope.
7165 @item Adjust the effect while observing the waveform to match the desired
7166 light level.
7167 @end enumerate
7169 If you are looking for maximum contrast range, adjust the
7170 Brightness/Contrast levels to align the darkest point on the scope
7171 with the 0% level and the brightest portion with 100%. Anything above
7172 100% is over saturated. Limits which may be highlighted with checkbox
7173 controls:
7175 @itemize @bullet
7177 @item @b{HDTV or sRGB (ITU-R BT.709)} @*
7178 The maximum pixel range for HDTV or sRGB is [0, 255]. This range
7179 corresponds with levels 0% and 100%.
7181 @item @b{MPEG or Analog video (ITU-R BT.601)} @*
7182 For analog video or MPEG (including DVD), the maximum range for RGB is
7183 [16, 235] (8-bit). For YUV, the maximum range for intensity (Y) is
7184 [16, 235] (8-bit). This range corresponds to gray levels from 6% to
7185 92%. @xref{RGB-601}.
7187 @item @b{NTSC Television broadcast} @*
7188 If you are producing a video for NTSC television broadcast, keep the
7189 intensity between 7.5% and 100%. The minimum black value which can be
7190 broadcast is IRE 7.5% (indicated by the ``7.5'' level), and values
7191 below this level are no darker.
7193 @end itemize
7195 @c cincvdoc_node_number_227
7196 @node The vectorscope
7197 @subsubsection The vectorscope
7198 @cindex Vectorscope
7200 The Vectorscope displays color and color saturation. Each pixel in the
7201 source image is drawn as a point on the color wheel. The distance from
7202 the center is the color saturation. Gray values are close to the
7203 center, and high saturation values are near the perimeter.
7205 The Vectorscope is used with other plugins to correct color, adjust image
7206 tint, and apply other effects for cinematic effects, image correction, or to
7207 conform images to look the same.
7209 @center @image{manual_images_intl/videoscope_vectorscope_color_correct,169mm}
7211 In this example, the top image is white balanced. Vectorscope shows
7212 many pixels in the yellow region and few in the white region. To
7213 remove the yellow tint, the Color Balance effect is used to first
7214 shift the vectorscope plot towards magenta (Mg), and then towards
7215 blue (B) until the region previously near the center surrounds the
7216 center. In the bottom image, yellow highlights have become white
7217 highlights (arrows). Note that the corresponding features in waveform
7218 also appear whiter (arrows).
7220 The Vectorscope can also be used to verify that the video output will
7221 display properly on various monitors.  Any points along the inner radius will
7222 be displayed as pure white and any points above the 100% radius, will probably
7223 not be correctly displayed on the screen.
7225 @c cincvdoc_node_number_228
7226 @node Wave
7227 @subsection Wave
7228 @cindex Wave
7230 @image{manual_images_intl/wave,12.5mm}
7232 The wave effect adds waves on the image.
7234 @center @image{manual_images_en/effect_wave_before_after,120mm}
7236 You can adjust the following parameters:
7238 @center @image{manual_images_intl/effect_wave_window,60mm}
7240 @c cincvdoc_node_number_229
7241 @node Whirl
7242 @subsection Whirl
7243 @cindex Whirl
7245 @image{manual_images_intl/whirl,12.5mm}
7247 FIXME
7249 @c cincvdoc_node_number_230
7250 @node YUV
7251 @subsection YUV
7252 @cindex YUV
7254 @image{manual_images_intl/yuv,12.5mm}
7256 FIXME
7258 @c cincvdoc_node_number_231
7259 @node Zoom blur
7260 @subsection Zoom blur
7261 @cindex Zoom blur
7263 @image{manual_images_intl/zoomblur,12.5mm}
7265 FIXME
7267 @c cincvdoc_node_number_232
7268 @node Rendered effects
7269 @chapter Rendered effects
7270 @cindex Rendered effects
7271 @cindex Effects, rendered
7272 Another type of effect is performed on a section of the track and the result
7273 stored somewhere before it is played back.  The result is usually pasted into
7274 the track to replace the original data.
7276 The rendered effects are not listed in the resource window but instead are
7277 accessed through the @b{Audio->Render effect} and @b{Video->Render effect} menu
7278 options.  Each of these menu options brings up a dialog for the rendered
7279 effect.  Rendered effects apply to only one type of track, either audio or
7280 video.  If no tracks of the type exist, an error pops up.
7282 A region of the timeline to apply the effect to must be defined before
7283 selecting @b{Render effect...}.  If no in/out points and no highlighted region
7284 exist, the entire region after the insertion point is treated as the affected
7285 region.  Otherwise, the region between the in/out points or the highlighted
7286 region is the affected region.
7288 Secondly, the tracks to apply the rendered affect to need to be @b{armed}.  All
7289 other tracks are ignored.
7291 Finally, the rendered affect processes certain track attributes when it reads
7292 its input data but not others.  Transitions in the affected track are applied.
7293 Nudge is not and effects are not.  This allows the new data to be pasted into
7294 the existing position without changing the nudge value.
7296 In the render effect dialog is a list of all the realtime and all the rendered
7297 effects.  The difference here is that the realtime effects are rendered to disk
7298 and not applied under the track.  Highlight an effect in the list to designate
7299 it as the one being performed.
7301 Define a file to render the effect to in the @b{Select a file to render to}
7302 box.  The @image{manual_images_intl/magnify,7mm} magnifying glass allows file selection
7303 from a list.
7305 Select a file format which can handle the track type.  The
7306 @image{manual_images_intl/wrench,4.33mm} wrench allows configuration specific to the
7307 file format.
7309 There is also an option for creating a new file at each label.  If you have a
7310 CD rip on the timeline which you want to divide into different files, the
7311 labels would become dividing points between the files if this option were
7312 selected.  When the timeline is divided by labels, the effect is re-initialized
7313 at every label.  Normalize operations take the peak in the current file and not
7314 in the entire timeline.
7316 Finally there is an insertion strategy just like in the render dialog.  It
7317 should be noted that even though the effect applies only to audio or video, the
7318 insertion strategy applies to all tracks just like a clipboard operation.
7320 When you click @b{OK} in the effect dialog, it calls the GUI of the effect.  If
7321 the effect is also a realtime effect, a second GUI appears to prompt for
7322 acceptance or rejection of the current settings.  After accepting the settings,
7323 the effect is processed.
7325 @menu
7326 * Rendered audio effects::     Rendered audio effects
7327 * Rendered video effects::     Rendered video effects
7328 @end menu
7330 @c cincvdoc_node_number_233
7331 @node Rendered audio effects
7332 @section Rendered audio effects
7333 @cindex Rendered audio effects
7335 @menu
7336 * Resample::        How to reduce the dynamic range of audio.
7337 @end menu
7339 @c cincvdoc_node_number_234
7340 @node Resample
7341 @subsection Resample
7342 @cindex Resample effect
7344 This multiplies the number of each output sample by a scale factor to arrive at
7345 the number of the input sample.  The output file's sample rate is set to the
7346 project sample rate but its length is changed to reflect the scaled number of
7347 samples.  It also filters the resampled audio to remove aliasing.
7349 If the scale factor is 2, every 2 input samples will be reduced to 1 output
7350 sample and the output file will have half as many samples as the input
7351 sequence.  If it is 0.5, every 0.5 input samples will be stretched to 1 output
7352 sample and the output file will have twice as many samples as the input
7353 sequence.
7355 @c cincvdoc_node_number_235
7356 @node Rendered video effects
7357 @section Rendered video effects
7358 @cindex Rendered video effects
7360 @menu
7361 * Reframe::        Reframe
7362 @end menu
7364 @c cincvdoc_node_number_236
7365 @node Reframe
7366 @subsection Reframe
7367 @cindex Reframe video effect
7369 This does exactly the same thing as @b{ReframeRT} in @b{Stretch} mode.  It
7370 multiplies the output frame number by the scale factor to arrive at the input
7371 frame number and changes the length of the sequence.  Unlike ReframeRT, this
7372 must run from the @b{Video} menu and render its output.
7374 Be aware @b{Reframe} does not write the scaled frame rate as the frame rate of
7375 the rendered file.  It produces a file of scaled length and equal frame rate as
7376 the project.  The new length is 1/scale factor as big as the original sequence.
7378 @b{To create a slow-motion of fast moving video:}
7379 @enumerate 1
7380 @item Select the video clip you wish to re-frame and put it on a
7381 video track
7382 @item Select the area you wish to reframe
7383 @item From the Video menu, select the Render Effect option
7384 @item From the effect list, select Reframe
7385 @item Enter the output format and insertion strategy for the new
7386 clip to be created
7387 @item Press ok
7388 @item At the popup menu, enter the scale factor 2 to run twice as
7389 fast, and .5 to run at half speed
7390 @end enumerate
7392 @c cincvdoc_node_number_237
7393 @node Ladspa effects
7394 @chapter Ladspa effects
7395 @cindex Ladspa effects
7397 LADSPA effects are supported in realtime and rendered mode for audio.  The
7398 LADSPA plugins you get from the internet vary in quality.  Most can not be
7399 tweeked in realtime very easily and work better when rendered.  Some crash and
7400 some can only be applied to one track due to a lack of re-entrancy.  Although
7401 Cinelerra implements the LADSPA interface as accurately as possible, multiple
7402 tracks of realtime, simultaneous processing go beyond the majority of LADSPA
7403 users.  LADSPA effects appear in the audio folder as the hammer and
7404 screwdriver, to signify that they are Plugins for GNU/Linux Audio Developers.
7406 @center @image{manual_images_intl/ladspa_effects,80mm}
7407 @center @b{Ladspa audio effects in the audio folder}
7409 LADSPA Effects are enabled merely by setting the @env{LADSPA_PATH} environment
7410 variable to the location of your LADSPA plugins:
7411 @verbatim
7412 export LADSPA_PATH=/usr/lib/ladspa
7413 @end verbatim
7414 or putting them in the @file{/usr/lib/cinelerra} directory.@*
7416 If you use Debian, you can get a lot of plugins using apt:@*
7417 @command{apt-cache search ladspa}@*
7418 @command{apt-get install jack-rack cmt blop swh-plugins}
7420 @c cincvdoc_node_number_238
7421 @node Transitions
7422 @chapter Transitions
7423 @cindex Transitions
7425 @menu
7426 * Using transitions::
7427 * Dissolve video transition::
7428 @end menu
7430 @c cincvdoc_node_number_239
7431 @node Using transitions
7432 @section Using transitions
7433 @cindex Using transitions
7435 When one edit ends and another edit begins, the default behavior is to have
7436 the first edit's output immediately become the output of the second edit when
7437 played back.  Transitions are a way for the first edit is output to become the
7438 second edit is output with different variations.
7440 Cinelerra supports audio and video transitions, all of which are listed in the
7441 resource window.
7443 @center @image{manual_images_intl/resources_video_transitions,70mm}
7444 @center @b{Video transitions in the resources window}
7446 Transitions may only apply to the matching track type.  Transitions under
7447 @b{audio transitions} can only apply to audio tracks.  Transitions under
7448 @b{video transitions} can only apply to video tracks.
7450 Load a video file and cut a section from the center so the edit point is
7451 visible on the timeline.  Go the resource window and click on the @b{Video
7452 transitions} folder.  Drag a transition from the transition list onto the
7453 second video edit on the timeline.  A box highlights over where the transition
7454 will appear.  Releasing it over the second edit applies the transition between
7455 the first and second edit.
7457 @center @image{manual_images_intl/drop_transition}
7458 @center @b{Dragging a dissolve transition to the timeline}
7460 You can now scrub@footnote{Scrubbing refers to moving backwards and forwards in
7461 time across a video or audio clip.} over the transition with the transport
7462 controls and watch the output in the @b{Compositor window}.  Scrubbing with the
7463 insertion point does not normally show transitions because the transition
7464 durations are usually too short.
7466 @cindex Detach Transitions
7467 @cindex Edit Transitions
7468 Once the transition is in place, it can be edited similarly to an effect.  Move
7469 the pointer over the transition and right click to bring up the transition
7470 menu.  The @b{show} option brings up specific parameters for the transition in
7471 question if there are any.  The @b{length} option adjusts the length of the
7472 transition in seconds.  Once these two parameters are set, they are applied to
7473 future transitions until they are changed again.  Finally, the @b{detach}
7474 option removes the transition from the timeline.
7476 Dragging and dropping transitions from the Resource window to the Program
7477 window can be really slow and tiring.  Fortunately, once you drag a transition
7478 from the Resource window, the @b{U} and @b{u} keys will paste the same
7479 transition.  The @b{U} key pastes the last video transition and the @b{u} key
7480 pastes the last audio transition on all the recordable tracks.  If the
7481 insertion point or in point is over an edit, the beginning of the edit is
7482 covered by the transition.
7484 It should be noted that when playing transitions from the timeline to hardware
7485 accelerated video device, the hardware acceleration will usually be turned off
7486 momentarily during the transition and on after the transition in order to
7487 render the transition.  Using an un-accelerated video device for the entire
7488 timeline normally removes the disturbance.
7490 @b{Important:} The exact point in time when the transition takes effect is not
7491 straightforward.  It starts when the second edit begins and lasts a certain
7492 amount of time into the second edit.  Therefore, the first asset needs to have
7493 enough data after the edit point to fill the transition into the second edit.
7495 For example, the dissolve transition starts at the exact position where it is
7496 located on the timeline.  If you set a duration of 1 second for a dissolve
7497 transition, it @b{will not} start 0.5 second before the transition and continue
7498 0.5 second after that point.  In fact, it will start exactly where the
7499 transition is located on the timeline, and last for 1 second from that
7500 position.
7502 It is a common error to put a dissolve transition just after the last frame of
7503 an asset.  Let's imagine a dissolve transition is put between asset A and asset
7504 B, just after the last frame of asset A.
7506 Since the dissolve effect starts exactly at the position where it is located,
7507 there is no more frames from asset A to display when the dissolve transition
7508 starts.  Therefore, there is no other choice for Cinelerra than freezing the
7509 last frame of asset A and dissolving it with asset B.
7511 You have to make sure there is enough frames of asset A to be displayed when
7512 the dissolve transition starts.  The duration of those frames should be equal
7513 or greater than the length of the transition effect.
7515 @c cincvdoc_node_number_240
7516 @node Dissolve video transition
7517 @section Dissolve video transition
7518 @cindex Dissolve video transition
7520 @image{manual_images_intl/video_disolve_icon}
7522 This is a soft dissolve transition between two video segments, which we call in
7523 and out segments.  The in segment turns increasingly transparent while the out
7524 segment materializes into its place.  The length of time for the full effect to
7525 take place can be controlled by the "Transition Length" control.
7527 @b{Available controls:}@*
7528 By right-clicking on the transition icon in the timeline, a menu will pop-up
7529 with the following controls
7530 @itemize @bullet
7531 @item @b{Show:} Pop up the transition specific menu (not available on this
7532 transition)
7533 @item @b{On:} Toggle on/off the transition effect
7534 @item @b{Transition length:} Set the span in seconds for the transition to
7535 complete
7536 @item @b{Detach:} Remove the transition from the timeline
7537 @end itemize
7539 @c cincvdoc_node_number_241
7540 @node Keyframing
7541 @chapter Keyframing
7542 @cindex Keyframing
7544 The term "keyframe" is borrowed from the world of animation where it refers to 
7545 an essential (key) drawing in a sequence. Typically this would be a starting or 
7546 an ending point of a smooth transition in a series of frames. The keyframes would 
7547 be drawn by the more senior artists and their assistants would draw the "inbetweens". 
7548 The word keyframe has since been used to suggest similar concepts in other fields.@*
7550 In non-linear digital video editing and video compositing software a keyframe 
7551 represents a certain value set by the user at a certain point in the timeline. 
7552 For example you could use keyframes to fade in a clip by setting the transparency 
7553 to 100% at the first keyframe and adding another keyframe 5 seconds later in the 
7554 timeline with a transparency of 0%. A keyframe is used to manipulate changes made 
7555 to the signal over time, essentially acting as a control point for the user to set 
7556 parameters e.g. of effects. Cinelerra interpolates the intermediate values making 
7557 the change happen smoothly and gradually over time.@*
7559 @cindex Default keyframe
7560 @cindex Keyframe, default
7561 When you change the fade, camera, projector, or other parameters for a track, 
7562 they stay by default the same for the entire duration of the project. Their value 
7563 is stored in a keyframe. The keyframe it is stored in by default is known as the 
7564 @b{default keyframe}. The default keyframe applies to the entire duration only if 
7565 no other keyframes are present and it is not drawn on the timeline.
7567 The only way change occurs over time is if additional keyframes are created.@*
7568 Setting static parameters with the default keyframe is only useful if you don't 
7569 want to change anything over time. Normally you need to move the camera around or 
7570 change mask positions e.g. if a mask needs to follow an object. Defining additional 
7571 keyframes to the default one is a very convenient technique for creating dynamic 
7572 changes.
7574 In Cinelerra, there are keyframes for almost every compositing parameter and 
7575 effect parameter.@*
7576 Parameters can be graphically represented in many forms: curves, toggles, modes, 
7577 and so on.@*
7578 The relative keyframe can be represented on the timeline as a little square on a 
7579 curve (e.g. fade) or as a symbol (e.g. mask).@*
7580 In Cinelerra the term keyframe can be misleading: it doesn't refer to a frame, 
7581 but to a point between two frames.
7583 To display the graphical representation of parameters and the relative keyframes 
7584 use the @b{View} menu.@*
7585 A faster way to toggle multiple parameters types is to bring up @b{Window -> Show Overlays}. 
7586 This window allows toggling of every parameter in the view menu. When parameters 
7587 are selected, they are drawn on the timeline over the tracks they apply to.
7589 How to handle the different types of keyframes is described here. 
7591 @menu
7592 * Curve keyframes::
7593 * Toggle keyframes::
7594 * Automatic keyframes::
7595 * Compositor keyframes::
7596 * Editing keyframes::
7597 @end menu
7599 @c cincvdoc_node_number_242
7600 @node Curve keyframes
7601 @section Curve keyframes
7602 @cindex Curve keyframes
7603 @cindex Keyframes, curve
7605 Many parameters are stored in Bezier curves.  Go to @b{view->fade} or
7606 @b{view->...zoom} to show curves on the timeline for those parameters.  In
7607 either arrow editing mode or i-beam editing mode, move the cursor over the
7608 curves in the timeline until it changes shape.  Then merely by clicking and
7609 dragging on the curve you can create a keyframe at the position.
7611 After the keyframe is created, click drag on it again to reposition it.  When
7612 you click-drag a second keyframe on the curve, it creates a smooth ramp.
7613 @b{CTRL-dragging} on a keyframe changes the value of either the input control
7614 or the output control.  This affects the sharpness of the curve.  While the
7615 input control and the output control can be moved horizontally as well as
7616 vertically, the horizontal movement is purely for legibility and is not used in
7617 the curve value.
7619 You may remember that The Gimp and the Compositing masks all use @key{SHIFT} to
7620 select control points so why does the timeline use @key{CTRL}?  When you
7621 @b{SHIFT-drag} on a timeline curve, the keyframe snaps to the value of either
7622 the next or previous keyframe, depending on which exists.  This lets you set a
7623 constant curve value without having to copy the next or previous keyframe.
7625 @menu
7626 * Navigating curve keyframes::
7627 @end menu
7629 @c cincvdoc_node_number_243
7630 @node Navigating curve keyframes
7631 @subsection Navigating curve keyframes
7632 @cindex Navigating curve keyframes
7634 There is not much room on the timeline for a wide range of curve values.  You
7635 need to zoom the curves in and out vertically to have any variability.  This is
7636 done by 2 tools: the automation fit button and automation zoom menu
7637 @image{manual_images_intl/autozoom}.
7639 The automation fit button scales and offsets the vertical range so the selected
7640 curve area appears in the timeline.  If a region of the timeline is highlighted
7641 by the cursor, only that region is scaled.  In/out points do not affect the
7642 zoomed region.  @kbd{ALT-f} also performs automation fitting.
7644 The automation zoom menu manually changes the vertical scaling of the curves in
7645 multiples of 2.  Click on its tumbler to change the zoom.  @kbd{ALT-UP} and
7646 @kbd{ALT-DOWN} change the automation zoom from the keyboard.
7648 @c cincvdoc_node_number_244
7649 @node Toggle keyframes
7650 @section Toggle keyframes
7651 @cindex Toggle keyframes
7652 @cindex Keyframes, toggle
7654 Mute is the only toggle keyframe.  Mute keyframes determine where the track is
7655 processed but not rendered to the output.  Click-drag on these curves to create
7656 a keyframe.  Unlike curves, the toggle keyframe has only two values: on or off.
7657 @key{CTRL} and @key{SHIFT} do nothing on toggle keyframes.
7659 @c cincvdoc_node_number_245
7660 @node Automatic keyframes
7661 @section Automatic keyframes
7662 @cindex Automatic keyframes
7663 @cindex Keyframes, automatic
7665 You may have noticed when a few fade curves are set up, moving the insertion
7666 point around the curves causes the faders to reflect the curve value under the
7667 insertion point.  This is not just to look cool.  The faders themselves can set
7668 keyframes in automatic keyframe mode.  Automatic keyframe mode is usually more
7669 useful than dragging curves.
7671 Enable automatic keyframe mode by enabling the automatic keyframe toggle
7672 @image{manual_images_intl/autokeyframe}.  In automatic keyframe mode, every time you tweek
7673 a key-framable parameter it creates a keyframe on the timeline.  Since
7674 automatic keyframes affect many parameters, it is best enabled just before you
7675 need a keyframe and disabled immediately thereafter.
7677 It is useful to go into the @b{View} menu and make the desired parameter
7678 visible before performing a change.  The location where the automatic keyframe
7679 is generated is under the insertion point.  If the timeline is playing back
7680 during a tweek, several automatic keyframes will be generated as you change the
7681 parameter.
7683 When automatic keyframe mode is disabled, a similarly strange thing happens.
7684 Adjusting a parameter adjusts the keyframe immediately preceding the insertion
7685 point.  If two fade keyframes exist and the insertion point is between them,
7686 changing the fader changes the first keyframe.
7688 There are many parameters which can only be keyframed in automatic keyframe
7689 mode.  These are parameters for which curves would take up too much space on
7690 the track or which can not be represented easily by a curve.
7692 Effects are only key-framable in automatic mode because of the number of
7693 parameters in each individual effect.
7695 Camera and projector translation can only be keyframed in automatic keyframe
7696 mode while camera and projector zoom can be keyframed with curves.  It is here
7697 that we conclude the discussion of compositing, since compositing is highly
7698 dependant on the ability to change over time.
7700 @c cincvdoc_node_number_246
7701 @node Compositor keyframes
7702 @section Compositor keyframes
7703 @cindex Compositor keyframes
7704 @cindex Keyframes, compositor
7706 Camera and projector translation is represented by two parameters: x and y.
7707 Therefore it is cumbersome to adjust with curves.  Cinelerra solves this
7708 problem by relying on automatic keyframes.  With a video track loaded, move the
7709 insertion point to the beginning of the track and enable automatic keyframe
7710 mode.
7712 Move the projector slightly in the compositor window to create a keyframe.
7713 Then go forward several seconds.  Move the projector a long distance to create
7714 another keyframe and emphasize motion.  This creates a second projector box in
7715 the compositor, with a line joining the two boxes.  The joining line is the
7716 motion path.  If you create more keyframes, more boxes are created.  Once all
7717 the desired keyframes are created, disable automatic keyframe mode.
7719 Now when scrubbing around with the compositor window's slider, the video
7720 projection moves over time.  At any point between two keyframes, the motion
7721 path is red for all time before the insertion point and green for all time
7722 after the insertion point.  It is debatable if this is a very useful feature
7723 but it makes you feel good to know what keyframe is going to be affected by the
7724 next projector tweek.
7726 Click-drag when automatic keyframes are off to adjust the preceding keyframe.
7727 If you are halfway between two keyframes, the first projector box is adjusted
7728 while the second one stays the same.  Furthermore, the video does not appear to
7729 move in step with the first keyframe.  This is because halfway between two
7730 keyframes the projector translation is interpolated.  In order to set the
7731 second keyframe you will need to scrub after the second keyframe.
7733 By default the motion path is a straight line, but it can be curved with
7734 control points.  @b{CTRL-drag} to set either the in or out control point of the
7735 preceding keyframe.  Once again, we depart from The Gimp because @key{SHIFT} is
7736 already used for zoom.  After the in or out control points are extrapolated
7737 from the keyframe, @b{CTRL-dragging} anywhere in the video adjusts the nearest
7738 control point.  A control point can be out of view entirely yet still
7739 controllable.
7741 When editing the camera translation, the behavior of the camera boxes is
7742 slightly different.  Camera automation is normally used for still photo
7743 panning.  The current camera box does not move during a drag, but if multiple
7744 keyframes are set, every camera box except the current keyframe appears to
7745 move.  This is because the camera display shows every other camera position
7746 relative to the current one.
7748 The situation becomes more intuitive if you bend the motion path between two
7749 keyframes and scrub between the two keyframes.  The division between red and
7750 green, the current position between the keyframes, is always centered while the
7751 camera boxes move.
7753 @c cincvdoc_node_number_247
7754 @node Editing keyframes
7755 @section Editing keyframes
7756 @cindex Editing keyframes
7757 @cindex Keyframes, editing
7759 @b{IMPORTANT:} when copying and pasting keyframes, make sure there is @b{no IN
7760 or OUT point defined on the timeline}.
7762 Keyframes can be shifted around and moved between tracks on the timeline using
7763 similar cut and paste operations to editing media.  Only the keyframes selected
7764 in the @b{view} menu are affected by keyframe editing operations, however.
7766 The most popular keyframe editing operation is replication of some curve from
7767 one track to the other, to make a stereo pair.  The first step is to solo the
7768 source track's record @image{manual_images_intl/recordpatch_up} patch by
7769 @b{SHIFT-clicking} on it.  Then either set in/out points or highlight the
7770 desired region of keyframes.  Go to @b{keyframes->copy keyframes} to copy them
7771 to the clipboard.  Solo the destination track's record
7772 @image{manual_images_intl/recordpatch_up} patch by @b{SHIFT-clicking} on it and go to
7773 @b{keyframes->paste keyframes} to paste the clipboard.
7775 The media editing commands are mapped to the keyframe editing commands by using
7776 the @key{SHIFT} key instead of just the keyboard shortcut.
7778 This leads to the most complicated part of keyframe editing, the default
7779 keyframe.  Remember that when no keyframes are set at all, there is still a
7780 default keyframe which stores a global parameter for the entire duration.  The
7781 default keyframe is not drawn because it always exists.  What if the default
7782 keyframe is a good value which you want to transpose between other non-default
7783 keyframes?  The @b{keyframes->copy default keyframe} and @b{keyframes->paste
7784 default keyframe} allow conversion of the default keyframe to a non-default
7785 keyframe.
7787 @b{Keyframes->copy default keyframe} copies the default keyframe to the
7788 clipboard, no matter what region of the timeline is selected.  The
7789 @b{keyframes->paste keyframes} function may then be used to paste the clipboard
7790 as a non-default keyframe.
7792 If you have copied a non-default keyframe, it can be stored as the default
7793 keyframe by calling @b{keyframes->paste default keyframe}.  After using paste
7794 default keyframe to convert a non-default keyframe into a default keyframe, you
7795 will not see the value of the default keyframe reflected until all the
7796 non-default keyframes are removed.
7798 Finally, there is a convenient way to delete keyframes besides selecting a
7799 region and calling @b{keyframes->clear keyframes}.  Merely click-drag a
7800 keyframe before its preceding keyframe or after its following keyframe on the
7801 track.This is the only way you can simultaneously delete keyframes on ganged tracks.
7803 @c cincvdoc_node_number_248
7804 @node Capturing media
7805 @chapter Capturing media
7806 @cindex Capturing media
7807 @cindex Media, capturing
7809 @menu
7810 * Capturing using Cinelerra::
7811 * Capturing using dvgrab::
7812 @end menu
7814 @c cincvdoc_node_number_249
7815 @node Capturing using Cinelerra
7816 @section Capturing using Cinelerra
7818 @menu
7819 * Cinelerra recording functions::
7820 * Batch recording::
7821 * Editing tuner information::
7822 @end menu
7824 @c cincvdoc_node_number_250
7825 @node Cinelerra recording functions
7826 @subsection Cinelerra recording functions
7827 @cindex Cinelerra recording functions
7829 Ideally, all media would be stored on hard drives, CD-ROM, flash, or DVD and
7830 loading it into Cinelerra would be a matter of loading a file.  In reality,
7831 very few sources of media can be accessed like a filesystem but instead rely on
7832 tape transport mechanisms and dumb I/O mechanisms to transfer the data to
7833 computers.  These media types are imported into Cinelerra through the Record
7834 dialog.
7836 The first step in recording is to configure the input device.  In
7837 @b{Settings->preferences} are a number of recording parameters described in
7838 configuration @xref{Recording}.  These parameters apply to recording no matter
7839 what the project settings are, because the recording parameters are usually the
7840 maximum capability of the recording hardware while project settings come and
7843 Go to @b{File->record} to record a dumb I/O source.  This prompts for an output
7844 format much like rendering does.  Once that is done, the record window and the
7845 record monitor pop up.
7847 The record window has discrete sections.  While many parameters change
7848 depending on if the file has audio or video, the discrete sections are always
7849 the same.
7851 @itemize @bullet
7852 @item The output format area describes the format of the output file and the
7853 current position within it.
7854 @item The edit batch area lets you change parameters in the current batch.
7855 @item The transport controls start and stop recording different ways.
7856 @item The batch list displays all the defined batches.
7857 @item The confirmation area lets you determine how the output files are
7858 imported into the timeline and quit.
7859 @end itemize
7861 @center @image{manual_images_en/recording,140mm}
7862 @center @b{Recording window areas}
7864 Recording in Cinelerra is organized around batches.  A batch essentially
7865 defines a distinct output file for the recording.  For now you can ignore the
7866 batch concept entirely and record merely by hitting the record button
7867 @image{manual_images_intl/record}.
7869 The record button opens the current output file if it is not opened and writes
7870 captured data to it.  Use the stop button to stop the recording.  Recording can
7871 be resumed with the record button without erasing the file at this point.  In
7872 the case of a video file, there is a single frame record button
7873 @image{manual_images_intl/singleframe} which records a single frame.
7875 When enough media is recorded, choose an insertion method from the @b{Insertion
7876 Strategy} menu and hit @b{close}.
7878 @c cincvdoc_node_number_251
7879 @node Batch recording
7880 @subsection Batch recording
7881 @cindex Batch recording
7883 Now we come to the concept of batches.  Batches try to make the dumb I/O look
7884 more like a filesystem.  Batches are traditionally used to divide tape into
7885 different programs and save the different programs as different files instead
7886 of recording straight through an entire tape.  Because of the high cost of
7887 developing frame-accurate deck control mechanisms, the only use of batches now
7888 is recording different programs during different times of day.  This is still
7889 useful for recording TV shows or time lapse movies as anyone who can not afford
7890 proper appliances knows.
7892 The record window supports a list of batches and two recording modes:
7893 interactive and batch recording.  Interactive recording happens when the record
7894 button is pressed.  Interactive recording starts immediately and uses the
7895 current batch to determine everything except start time.  By default, the
7896 current batch is configured to behave like tape.
7898 Batch recording happens when the @b{start} button is pressed.  In batch
7899 recording, the @b{start time} is the time the batch starts recording.
7901 First, you will want to create some batches.  Each batch has certain parameters
7902 and methods of adjustment.
7904 @itemize @bullet
7906 @item @b{On}@*
7907 Determines whether the batch is included in batch recording operations.  Click
7908 the list row under @b{On} to enable or disable batches.
7910 @item @b{Path}@*
7911 It is the file the batch is going to be recorded to.  The filename specified in
7912 the record dialog is the name of the first batch, to simplify interactive
7913 recording, but the filename may be changed in the record window for any batch
7914 in the @b{edit batch} area.
7916 @item @b{News}@*
7917 Shows whether the file exists or not.  This is a very important attribute since
7918 there is no confirmation dialog if the file exists.  The first time you hit
7919 record, the file is opened.  If the file exists at this point it is erased.
7920 News says @b{File exists} if it exists and @b{OK} if it does not.  Every time
7921 you resume recording in the same batch, the news should say @b{Open},
7922 indicating the file is already opened and will not be erased in the next record
7923 button press.@*
7924 If you change out of the current batch after recording, the file is closed.
7925 Next time you change into the batch, the file will be erased.
7927 @item @b{Start time}@*
7928 It is the 24 hour time of day the batch will start recording if in batch mode.
7929 The start time may become a time of tape and reel number if deck control is
7930 implemented but for now it is a time of day.
7932 @item @b{Duration}@*
7933 This is the length of the batch.  It only has meaning if the @b{Mode} of the
7934 batch is @b{Timed}.  Once the recording length reaches @b{duration} the
7935 recording stops, whether in interactive or batch mode.
7937 @item @b{Source}@*
7938 This has meaning only when the capturing hardware has multiple sources.
7939 Usually the source is a tuner channel or input.  When the current batch
7940 finishes and the next batch begins recording, the source is changed to what the
7941 next batch is set to.  This way multiple TV stations can be recorded at
7942 different times.
7943 @end itemize
7945 The record window has a notion of the @b{current batch}.  The current batch is
7946 not the same as the batch which is highlighted in the batch list.  The current
7947 batch text is colored red in the batch list.  The highlighted batch is merely
7948 displayed in the edit batch section for editing.
7950 By coloring the current batch red, any batch can be edited by highlighting it,
7951 without changing the batch to be recorded.
7953 All recording operations take place in the current batch.  If there are
7954 multiple batches, highlight the desired batch and hit @b{activate} to make it
7955 the current batch.  If the @b{start} button is pressed, the current batch
7956 flashes to indicate it is waiting for the start time in batch mode.  If the
7957 @b{record} button is pressed, the current batch is recorded immediately in
7958 interactive mode.
7960 In batch and interactive recording modes, when the current batch finishes
7961 recording the next batch is activated and performed.  All future recording is
7962 done in batch mode.  When the first batch finishes, the next batch flashes
7963 until its start time is reached.
7965 Interrupt either the batch or the interactive operation by hitting the stop
7966 button.
7968 Finally there is the @image{manual_images_intl/rewind} rewind button.  In either
7969 interactive or batch recording, the rewind button causes the current batch to
7970 close its file.  The next recording operation in the current batch deletes the
7971 file.
7973 @c cincvdoc_node_number_252
7974 @node Editing tuner information
7975 @subsection Editing tuner information
7976 @cindex Editing tuner information
7977 @cindex Tuner, editing information
7979 Sometimes in the recording process and the configuration process, you will need
7980 to define and select tuner channels to either record or play back to.  In the
7981 case of the Video4Linux and Buz recording drivers, tuner channels define the
7982 source.  When the Buz driver is also used for playback, tuner channels define
7983 the destination.
7985 Defining tuner channels is accomplished by pushing the @image{manual_images_intl/channel}
7986 channel button.  This brings up the channel editing window.  In this window you
7987 add, edit, and sort channels.  Also, for certain video drivers, you can adjust
7988 the picture quality.
7990 The @b{add} operation brings up a channel editing box.  The title of the
7991 channel appears in the channel list.  The source of the channel is the entry in
7992 the physical tuner's frequency table corresponding to the title.
7994 Fine tuning in the channel edit dialog adjusts the physical frequency slightly
7995 if the driver supports it.  The norm and frequency table together define which
7996 frequency table is selected for defining sources.  If the device supports
7997 multiple inputs, the input menu selects these.
7999 To sort channels, highlight the channel in the list and push @b{move up} or
8000 @b{move down} to move it.
8002 Once channels are defined, the @b{source} item in the record window can be used
8003 to select channels for recording.  The same channel selecting ability also
8004 exists in the record monitor window.  Be aware channel selections in the record
8005 monitor window and the record window are stored in the current batch.
8007 For some drivers an option to @b{swap fields} may be visible.  These drivers
8008 do not get the field order right every time without human intervention.  Toggle
8009 this to get the odd and even lines to record in the right order.
8011 @c cincvdoc_node_number_253
8012 @node Capturing using dvgrab
8013 @section Capturing using dvgrab
8014 @cindex Dvgrab, capturing using
8016 dvgrab is great and simple to use a command line tool to capture videos from a
8017 DV camcorder.  When invoked it will automatically put your camera in play
8018 mode, and start storing the videos on your hard disk.  Video files will be
8019 labeled sequentially, as: @file{001.avi}, @file{002.avi} and so on.
8021 To install dvgrab, use your distribution preferred installation mechanism (apt,
8022 rpm, deb, etc) or refer to the dvgrab webpage.
8024 Capturing videos in four easy steps:
8025 @enumerate 1
8026 @item Create a directory where you want the capture videos to be stored
8027 @item @command{cd} to that directory
8028 @item Type: @command{dvgrab --buffers 500} and @kbd{RETURN}
8029 @item Press @kbd{CTRL-C} to stop capturing video
8030 @end enumerate
8032 The @option{--autosplit} option is very useful.  It splits scenes according to
8033 the timecode.  However, that only works when grabbing from a DV camcorder.  It
8034 will not work when grabbing from a analog/digital converter such as a Canopus
8035 ADVC110.
8037 Read the dvgrab manual to get more information about dvgrab features.
8039 @c cincvdoc_node_number_254
8040 @node Rendering files
8041 @chapter Rendering files
8042 @cindex Rendering files
8043 @cindex Files, rendering
8045 Rendering takes a section of the timeline, performs all the editing, effects
8046 and compositing, and stores it in a pure movie file.  You can then delete all
8047 the source assets, play the rendered file in a movie player, or bring it back
8048 into Cinelerra for more editing.  It is very difficult to retouch any editing
8049 decisions in the pure movie file, however, so keep the original assets and XML
8050 file around several days after you render it.
8052 All rendering operations are based on a region of the timeline to be rendered.
8053 You need to define this region on the timeline.  The navigation section
8054 describes methods of defining regions.  @xref{Timebar}.  The
8055 rendering functions define the region based on a set of rules.  When a region
8056 is highlighted or in/out points are set, the affected region is rendered.  When
8057 no region is highlighted, everything after the insertion point is rendered.
8058 Merely by positioning the insertion point at the beginning of a track and
8059 unsetting all in/out points, the entire track is rendered.
8061 @menu
8062 * Single file rendering::      Rendering a single file
8063 * Separate files rendering::
8064 * Insertion strategy of rendered files::
8065 * Batch rendering::            Rendering several files unattended
8066 * The render farm::            Rendering using many computers
8067 * Command line rendering::     Rendering from the command line without a GUI
8068 * Rendering videos for the internet::
8069 * Quicktime for GNU/Linux compatibility chart::
8070 * Making a DVD::
8071 * Using background rendering::
8072 @end menu
8074 @c cincvdoc_node_number_255
8075 @node Single file rendering
8076 @section Single file rendering
8077 @cindex Single file rendering
8079 The fastest way to get media to disk is to use the single file rendering
8080 function.
8082 Go to @b{File->render} or press @kbd{SHIFT-R} to bring up the render dialog.
8083 Select the magnifying glass @image{manual_images_intl/magnify,7mm} to bring up a file
8084 selection dialog.  This determines the filename to write the rendered file to
8085 and the encoding parameters.
8087 @center @image{manual_images_intl/render_window,80mm}
8088 @center @b{The render window}
8090 In the render dialog select a format from the @b{File Format} menu.  The format
8091 of the file determines whether you can render audio or video or both.  Select
8092 the @b{Render audio tracks} toggle to generate audio tracks and @b{Render video
8093 tracks} to generate video tracks.
8095 Select the wrench @image{manual_images_intl/wrench,4.33mm} next to each toggle to set
8096 compression parameters.  If the file format can not store audio or video the
8097 compression parameters will be blank.  If @b{Render audio tracks} or @b{Render
8098 video tracks} is selected and the file format does not support it, trying to
8099 render will pop up an error.
8101 @c cincvdoc_node_number_256
8102 @node Separate files rendering
8103 @section Separate files rendering
8104 @cindex Separate files rendering
8106 The @b{Create new file at each label} option causes a new file to be created
8107 when every label in the timeline is encountered.  This is useful for dividing
8108 long audio recordings into individual tracks.  When using the renderfarm,
8109 @b{Create new file at each label} causes one renderfarm job to be created at
8110 every label instead of using the internal load balancing algorithm to space
8111 jobs.
8113 When @b{Create new file at each label} is selected, a new filename is created
8114 for every output file.  If the filename given in the render dialog has a 2
8115 digit number in it, the 2 digit number is overwritten with a different
8116 incremental number for every output file.  If no 2 digit number is given,
8117 Cinelerra automatically concatenates a number to the end of the given filename
8118 for every output file.
8120 In the filename @file{/hmov/track01.wav} the @samp{01} would be overwritten for
8121 every output file.  The filename @file{/hmov/track.wav}; however, would become
8122 @file{/hmov/track.wav001} and so on and so forth.  Filename regeneration is
8123 only used when either renderfarm mode is active or creating new files for every
8124 label is active.
8126 @c cincvdoc_node_number_257
8127 @node Insertion strategy of rendered files
8128 @section Insertion strategy of rendered files
8129 @cindex Insertion strategy of rendered files
8131 Finally the render dialog lets you select an insertion mode.  The insertion
8132 modes are the same as with loading files.  In this case if you select @b{insert
8133 nothing} the file will be written out to disk without changing the current
8134 project.  For other insertion strategies be sure to prepare the timeline to
8135 have the output inserted at the right position before the rendering operation
8136 is finished.  @xref{Editing}.  Editing describes how to cause output to be
8137 inserted at the right position.
8139 It should be noted that even if you only have audio or only have video
8140 rendered, a @b{paste} insertion strategy will behave like a normal paste
8141 operation, erasing any selected region of the timeline and pasting just the
8142 data that was rendered.  If you render only audio and have some video tracks
8143 armed, the video tracks will get truncated while the audio output is pasted
8144 into the audio tracks.
8146 @c cincvdoc_node_number_258
8147 @node Batch rendering
8148 @section Batch rendering
8149 @cindex Batch rendering
8151 Batch Rendering is one of Cinelerra's great but lesser-known strengths. 
8152 It allows you to eliminate manual repetitive keystrokes and mouse clicks, 
8153 and automate the rendering of audio-video files. 
8154 It even allows for Cinelerra to be completely driven by external programs, 
8155 with no need for the user to manually interact with the Cinelerra user interface.
8157 If you want to render many projects to media files without having to repeatedly
8158 attend to the @b{Render} dialog, @b{batch rendering} is the function to use.
8159 In this function, you specify one or more Cinelerra project XML files (EDL) 
8160 to render and the unique output files for each.  
8161 Then Cinelerra loads each project file and renders it automatically, without any 
8162 user intervention.  Each Cinelerra project XML file, combined with the settings 
8163 for rendering an output file, are called a @b{batch}.  This allows a huge amount of media to be
8164 processed and greatly increases the value of an expensive computer.
8166 The first thing to do when preparing to do batch rendering is to create one or 
8167 more Cinelerra projects (EDL) to be rendered and save them as normal Cinelerra project 
8168 (@file{myproject.cin.xml}) files. The batch renderer requires a separate Cinelerra
8169 project file for every batch to be rendered. You can use the same Cinelerra project 
8170 file if you are rendering to different output files, for example, 
8171 creating the same output video in different file formats.  
8173 To create a Cinelerra project file which can be used in batch render, set up a
8174 Cinelerra project and define the region to be rendered either by highlighting it, 
8175 setting in/out points around it, or positioning the insertion point before it. 
8176 Then save the project in the normal way to a @file{myproject.cin.xml} file (EDL). 
8177 Define as many projects as needed this way.  
8178 The batch renderer takes the active region from the EDL file for rendering.
8180 With all the Cinelerra project files (EDL) prepared with active regions, go to @b{File->batch
8181 render}.  This brings up the batch rendering dialog.  The interface for batch
8182 rendering is a bit more complex than for single file rendering.
8184 A list of batches must be defined before starting a batch rendering operation.
8185 The table of batches appears on the bottom of the batch render dialog and is
8186 called @b{batches to render}.  Above this are the configuration parameters for
8187 a single batch.@*
8188 A batch is simply a pairing of a Cinelerra project file with a choice of output 
8189 file and render settings.
8191 Set the @b{output path}, @b{file format}, @b{Audio}, @b{Video}, and @b{Create
8192 new file at each label} parameters as if you were rendering a single file.  These
8193 parameters apply to only one batch.  In addition to the standard rendering
8194 parameters, you must select the Cinelerra project file (@file{myproject.cin.xml}) to be 
8195 used in the batch. Do this by setting the @b{EDL path}. Use the magnifier to
8196 bring a drop down menu with your files or write manually the path to your regular 
8197 Cinelerra project file (@file{myproject.cin.xml}). In this case, @b{EDL path} has
8198 nothing to do with EDL files as created by @b{File/Export EDL}.@*
8199 Cinelerra in batch render mode will not overwrite an existing output file. 
8200 The batch render will simply fail. Make sure that no files with the same name as 
8201 the output files exist before starting the render.@*
8203 If the @b{batches to render} list is empty or nothing is highlighted, click
8204 @b{New} to create a new batch.  The new batch will contain all the parameters
8205 you just set.@*
8206 Repeatedly press the @b{New} button to create more batches with the same
8207 parameters.  Highlight any batch and edit the configuration on the top of the
8208 batch render window.  The highlighted batch is always synchronized to the
8209 information displayed.@*
8210 Click and drag batches to change the order in which they are rendered.  Hit
8211 @b{delete} to permanently remove the highlighted batch.@*
8212 In the list box is a column which enables or disables the batch.  This way
8213 batches can be skipped without being deleted.  Click on the @b{Enabled} column
8214 in the list box to enable or disable a batch.  If it is checked, the batch is
8215 rendered.  If it is blank, the batch is skipped.
8217 The other columns in the batch list are informative.
8218 @itemize @bullet
8219 @item @b{Output} The output path of the batch.
8220 @cindex EDL
8221 @item @b{EDL} The source EDL of the batch.
8222 @item @b{Elapsed} The amount of time taken to render the batch if it is
8223 finished.
8224 @end itemize
8226 To start rendering from the first enabled batch, hit @b{Start}.@*
8227 Once rendering, the main window shows the progress of the batch.  Once the
8228 batch finishes, the elapsed column in the batch list is updated and the next
8229 batch is rendered until all the enabled batches are finished.  The currently
8230 rendering batch is always highlighted red.@*
8231 To stop rendering before the batches are finished without closing the batch
8232 render dialog, hit @b{Stop}.@*
8233 To stop rendering before the batches are finished and close the batch render
8234 dialog, hit @b{Cancel}.@*
8235 To exit the batch render dialog whether or not anything is being rendered, hit
8236 @b{Cancel}.@*
8238 You can automate Cinelerra batch renders from other programs. In the Cinelerra 
8239 batch render dialog, once you have created your list of batch render jobs, 
8240 you can click the button @b{Save List} and choose a file to save your @b{batch
8241 render list} to. We suggest you use a filename like @file{myrenderlist.batchrender.cin.xml}. 
8242 Once you have created this file, you can start up a batch render without 
8243 needing to interact with the Cinelerra user interface. From a shell prompt 
8244 (or from a script, or other program), execute: @*
8245 @command{cinelerra -r myrenderlist.batchrender.cin.xml}@*
8246 (changing @file{myrenderlist.batchrender.cin.xml} to whatever filename you chose for 
8247 saving your batch render list).@*
8248 When invoked with these parameters, Cinelerra will start up and perform the rendering 
8249 jobs in that list, without creating its usual windows.
8251 Programmers, please note: this is a powerful feature indeed. It means that if you can 
8252 create valid Cinelerra project xml files and Cinelerra render list files from other 
8253 programs (which requires just a small amount of skill with your favourite XML library), 
8254 then you can gain full automated access to all of Cinelerra's functionality without 
8255 needing to interact with the Cinelerra user interface. The possibilities for this 
8256 are endless. You can leverage the power of Cinelerra and incorporate it into your own 
8257 programs. It's a good idea if you can create simple Cinelerra project files and 
8258 batch render files and study the XML format. By trial and error, you'll be able to 
8259 generate valid Cinelerra xml files for projects and batch render lists, and thus 
8260 create your own Cinelerra automation library in your favourite programming language.
8262 @c cincvdoc_node_number_259
8263 @node The render farm
8264 @section The render farm
8265 @cindex Render farm
8267 When bicubic interpolation and HDTV was first done on Cinelerra, the time
8268 needed to produce the simplest output became unbearable even on the fastest
8269 dual 1.7 GHz Xeon of the time.  Renderfarm support even in the simplest form
8270 brings HDTV times back in line with SD while making SD faster than real-time.
8272 While the renderfarm interface is not spectacular, it is simple enough to use
8273 inside an editing suite with less than a dozen nodes without going through the
8274 same amount of hassle you would with a several hundred node farm.  Renderfarm
8275 is invoked transparently for all file->render operations when it is enabled in
8276 the preferences.
8278 Cinelerra divides the selected region of the timeline into a certain number of
8279 jobs which are then dispatched to the different nodes depending on the load
8280 balance.  The nodes process the jobs and write their output to individual files
8281 on the filesystem.  The output files are not concatenated.  It is important for
8282 all the nodes to have access to the same filesystem on the same mount point for
8283 assets.
8285 If a node can not access an input asset it will display error messages to its
8286 console but probably not die.  If it can not access an output asset it will cause
8287 the rendering to abort.
8289 It should be noted that in the render dialog, the @b{Create new file at each
8290 label} option causes a new renderfarm job to be created at each label instead
8291 of by the load balancer.  If this option is selected when no labels exist, only
8292 one job will be created.
8294 A Cinelerra renderfarm is organized into a master node and any number of slave
8295 nodes.  The master node is the computer which is running the GUI@.  The slave
8296 nodes are anywhere else on the network and are run from the command line.  Run
8297 a slave node from the command line with @command{cinelerra -d}
8299 That is the simplest configuration.  Type @command{cinelerra -h} to see more
8300 options.  The default port number may be overridden by passing a port number
8301 after the @option{-d}.
8303 Most of the time you will want to bring in the rendered output and fine tune the
8304 timing on the timeline.  Also some file formats like MPEG can not be direct
8305 copied.  Because of this, the jobs are left in individual files.
8307 You can load these by creating a new track and specifying @b{concatenate to
8308 existing tracks} in the load dialog.  Files which support direct copy can be
8309 concatenated into a single file by rendering to the same file format with
8310 renderfarm disabled.  Also to get direct copy, the track dimensions, output
8311 dimensions, and asset dimensions must be equal.
8313 MPEG files or files which do not support direct copy have to be concatenated
8314 with a command line utility.  MPEG files can be concatenated with @b{cat}.
8316 Configuration of the renderfarm is described in the configuration chapter
8317 @xref{Renderfarm}.  The slave nodes traditionally read and write data to a
8318 common filesystem over a network, thus they do not need hard drives.
8320 Ideally all the nodes on the renderfarm have similar CPU performance.
8321 Cinelerra load balances on a first come first serve basis.  If the last segment
8322 is dispatched to the slowest node, all the fastest nodes may end up waiting for
8323 the slowest node to finish while they themselves could have rendered it faster.
8325 @c cincvdoc_node_number_260
8326 @node Command line rendering
8327 @section Command line rendering
8328 @cindex Command line rendering
8329 @cindex Rendering, command line
8331 The command line rendering facility consists of a way to load the current set
8332 of batch rendering jobs and process them without a GUI@.  This is useful if
8333 you are planning on crashing X repeatedly or want to do rendering on the other
8334 side of a low bandwidth network.  You might have access to a supercomputer in
8335 India but still be stuck in America, exiled you might say.  A command line
8336 interface is ideal for this.
8338 To perform rendering from the command line, first run Cinelerra in graphical
8339 mode.  Go to @b{file->batch render}.  Create the batches you intend to render
8340 in the batch window and close the window.  This saves the batches in a file.
8341 Set up the desired renderfarm attributes in @b{settings->preferences} and exit
8342 Cinelerra.  These settings are used the next time command line rendering is
8343 used.
8345 On the command line run: @command{cinelerra -r}
8347 to processes the current batch jobs without a GUI@.  Setting up all the
8348 parameters for this operation is hard.  That is why the command line aborts if
8349 any output files already exist.
8351 Other parameters exist for specifying alternative files for the preferences and
8352 the batches.  Attempting to use anything but the defaults is very involved so
8353 it has not been tested.
8355 @c cincvdoc_node_number_262
8356 @node Rendering videos for the internet
8357 @section Rendering videos for the internet
8358 @cindex Rendering videos for the internet
8360 @menu
8361 * Encoding a video in MPEG4 format for the internet::
8362 * Encoding a video in FLV format for the internet::
8363 @end menu
8365 If you want to encode a video in order to put it on the internet, we recommend
8366 to render it as a Quicktime4linux file, and then encode that file in MPEG4 of
8367 FLV formats.  The Quicktime4linux file rendered from Cinelerra must have the
8368 following properties:
8370 @itemize @bullet
8371 @item Audio option Two Complements 16bits (PCM)
8372 @item Video option DV
8373 @end itemize
8375 @c cincvdoc_node_number_329
8376 @node Encoding a video in MPEG4 format for the internet
8377 @subsection Encoding a video in MPEG4 format for the internet
8378 @cindex Encoding a video in MPEG4 format for the internet
8380 To get the best quality, you should encode your Quicktime4linux file with
8381 mencoder in two passes.
8383 @b{First pass:}
8384 @verbatim
8385 mencoder input.mov -ovc xvid -xvidencopts bitrate=600:pass=1 \
8386 -vf scale=320:240 -oac mp3lame -lameopts abr:br=64 -o output.avi
8387 @end verbatim
8388 @b{Second pass:}
8389 @verbatim
8390 mencoder input.mov -ovc xvid -xvidencopts bitrate=600:pass=2 \
8391 -vf scale=320:240 -oac mp3lame -lameopts abr:br=64 -o output.avi
8392 @end verbatim
8393 Do not forget to change the output size of the video, set with the @option{-vf
8394 scale=} option.@*
8396 Here are some other command lines.  They give output video files whose weight
8397 is around 13 Mb for 3 minutes.@*
8398 @b{First pass:}
8399 @verbatim
8400 mencoder -oac pcm -sws 2 -vf scale=${width}:${height},hqdn3d=2:1:2 \
8401 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=${video_bitrate}:vlelim=-4:\
8402 vcelim=7:lumi_mask=0.05:dark_mask=0.01:scplx_mask=0.3:naq:v4mv:mbd=2:\
8403 trell:cmp=3:subcmp=3:mbcmp=3:aspect=4/3:sc_threshold=1000000000:\
8404 vmax_b_frames=2:vb_strategy=1:dia=3:predia=3:cbp:mv0:preme=2:\
8405 last_pred=3:vpass=1:cgop -ofps 25 -of avi movie.mov -o /dev/null\
8406 -ffourcc DIVX
8407 @end verbatim
8408 @b{Second pass:}
8409 @verbatim
8410 mencoder -srate 32000 -oac mp3lame -lameopts cbr:br=${audio_bitrate}:\
8411 aq=0 -sws 2 -vf scale=${width}:${height},hqdn3d=2:1:2 -ovc lavc\
8412 -lavcopts vcodec=mpeg4:vbitrate=${video_bitrate}:vlelim=-4:vcelim=7:\
8413 lumi_mask=0.05:dark_mask=0.01:scplx_mask=0.3:naq:v4mv:mbd=2:trell:\
8414 cmp=3:subcmp=3:mbcmp=3:aspect=4/3:sc_threshold=1000000000:\
8415 vmax_b_frames=2:dia=3:predia=3:cbp:mv0:preme=2:last_pred=3:vpass=3:\
8416 cgop -ofps 25 -of avi movie.mov -o movie.avi -ffourcc DIVX
8417 @end verbatim
8419 You probably have to adapt those command lines if your material is noisy; have
8420 a look at mencoder's pre-processing filters.  The *_mask parameters are really
8421 important when encoding at low bitrate.@*
8423 If you want your video file to be displayed properly on a well know media
8424 player which runs on Windows you should be aware that:
8425 @itemize @bullet
8426 @item the aspect ratio information contained in the AVI header will not be
8427 taken into account by that player.  That is why you must scale the image to the
8428 right aspect ratio.  Width and height must be multiples of 16.  Those are the
8429 recommended resolutions for 4/3 PAL material: 384:288, 448:336, 512:384 or
8430 704:528.
8431 @item the media player running on Windows will loose A/V sync if a VBR audio
8432 bitrate is used instead of CBR@.
8433 @item the @option{-ffourcc} parameter is needed for the video codec to be
8434 recognized as Divx.
8435 @end itemize
8437 @c cincvdoc_node_number_330
8438 @node Encoding a video in FLV format for the internet
8439 @subsection Encoding a video in FLV format for the internet
8440 @cindex Encoding a video in FLV format for the internet
8442 FLV files (FLash Video) weight is very small and the only thing needed to play
8443 those files is an internet browser with flash plugin version 7 or higher
8444 installed.  That format is really useful when one wants to share a video with a
8445 wide audience over the internet.
8447 @b{First pass:}
8448 @verbatim
8449 ffmpeg -i movie.mov -b 430 -s 320x240 -aspect 4:3 -pass 1 -ar 22050 movie.flv
8450 @end verbatim
8451 @b{Second pass:}
8452 @verbatim
8453 ffmpeg -i movie.mov -b 430 -s 320x240 -aspect 4:3 -pass 2 -ar 22050 movie.flv
8454 @end verbatim
8456 Pay attention to the output file extension.  Ffmpeg uses it to determine the
8457 output format.  The audio sampling frequency to use is 22050 and the
8458 @option{-ar} parameter must be used for the video to be properly encoded.
8459 Ffmpeg does not write metadata information in the flv file.  The duration has to
8460 be written in the metadata information in order for some flash players to
8461 display a progress bar.  FLVTool2 (@uref{http://www.inlet-media.de/flvtool2})
8462 can be used to insert that information:
8463 @verbatim
8464 cat input_file.flv | flvtool2 -U stdin output_file.flv
8465 @end verbatim
8467 @c cincvdoc_node_number_328
8468 @node Quicktime for GNU/Linux compatibility chart
8469 @section Quicktime for GNU/Linux compatibility chart
8470 @cindex Quicktime for GNU/Linux compatibility chart
8472 Scott Frase wrote a Quicktime for GNU/Linux compatibility chart.  It contains an
8473 exhaustive list of all the Quicktime compression schemes available and their
8474 compatibility in Cinelerra, Mplayer and some other media players.  That
8475 document has two main sections, one based on an HDV resolution-formatted
8476 project and another based on a DV resolution-format project.
8478 It is available here:@*
8479 @uref{http://content.serveftp.net/video/qtcompatibility.ods}
8481 Some interesting notes:
8482 @itemize @bullet
8483 @item Mplayer does behave better with smaller, DV resolution video
8484 @item Cinelerra compatibility with files rendered from a DV project is not much
8485 different than its compatibility with files rendered from an HDV project.
8486 @item Comparison chart of DV/HDV mplayer/cinelerra compatibility included
8487 @end itemize
8489 @c cincvdoc_node_number_263
8490 @node Making a DVD
8491 @section Making a DVD
8492 @cindex Making a DVD
8493 @cindex DVD, making a
8495 @menu
8496 * Rendering to mpeg2::
8497 * Making a DVD menu::
8498 * Authoring a DVD::
8499 * Burning a DVD::
8500 @end menu
8502 @c cincvdoc_node_number_264
8503 @node Rendering to mpeg2
8504 @subsection Rendering to mpeg2
8505 @cindex Rendering to mpeg2
8506 @cindex Mpeg2, rendering to
8508 Here is a method to export mpeg2 video and make a single chapter DVD@.  This
8509 method allows you to precisely set the encoding option you want and produces an
8510 mpeg2 file which is 100% compatible with all DVD standalone players.
8512 The mplex program from @b{mjpegtools} must be installed.  The mjpegtools
8513 package is built in the hvirtual distribution and the mplex utility may be
8514 extracted from there.
8516 First, make sure you properly defined your cinelerra project format before
8517 rendering your video (menu @b{Settings->Format}).  PAL is 720x576 at 25 frames
8518 per second, and NTSC is 720x480 at 29.97 frames per second.
8520 @enumerate 1
8521 @item Create a script @file{~/cine_render.sh}
8522 @item Copy in @file{~/cine_render.sh file} the following lines:@*
8523 @command{#/bin/bash}@*
8524 @command{mpeg2enc -v 0 -K tmpgenc -r 16 -4 1 -2 1 -D 10 -E 10 -g 15 -G 15 -q 6
8525 -b 8600 -f 8 -o $1}
8526 @item Put the execute permissions on that file:
8527 @command{chmod 777 ~/cine_render.sh}
8528 @item Open cinelerra, and select the part of the video you want to render with
8529 the [ and ] points
8530 @item Press @kbd{SHIFT-R}
8531 @item Select the @b{YUV4MPEG Stream} file format
8532 @item Deselect @b{Render audio tracks} and select @b{Render video tracks}
8533 @item Click on the wrench
8534 @item In the newly opened window, indicate the name of the @file{m2v} file you
8535 want to create.  That file will contain video only.
8536 @item Click on @b{Use pipe} and write this command:
8537 @command{/home/<your_user>/cine_render.sh %}
8538 @item Click OK to close the second window, and OK again to render your
8539 @file{m2v} file
8540 @item When the m2v file is rendered, open the rendering window again, and
8541 render an AC3 file at 224kbits
8542 @item Finally, combine video and audio with this command:@*
8543 @command{mplex -f 8 your_video_file.m2v your_audio_file.ac3 -o
8544 video_audio_file.mpeg}@*
8545 If you obtain errors while using mplex, increase the quantizer (@option{-q}
8546 option, see below).
8547 @end enumerate
8549 You can modify the mpeg2enc parameters if you want to.  Look at the mpeg2enc
8550 manpage.  Some details about the settings:
8551 @itemize
8552 @item @option{-b 8600} : This is the maximum bitrate of your @file{m2v} file (it
8553 does not include the audio bitrate).  We recommend you to do not increase that
8554 value or you could get errors when mplexing the video and the audio.
8555 @item @option{-q 6} : This is the quantizer setting.  If you reduce it (do not go
8556 below 3), the quality increases.  But the bitrate will increase.  It's
8557 recommended to keep the medium bitrate achieved (that's displayed when mplexing
8558 the audio and video files) around 10% lower than the bitrate defined with the
8559 @option{-b} setting.
8560 @item @option{-K tmpgenc} : invokes the TMPGEnc matrices.  It reduces the
8561 average bitrate by about 10% compared to the default tables.  For very-high
8562 quality material, you can try removing this option.
8563 @end itemize
8565 If your material is noisy (Hi8 analog material for example), you can add some
8566 mjpegtools in the command line written in @file{~/cine_render.sh}:
8567 @itemize @bullet
8568 @item @command{y4mshift} and @command{y4mscaler} can be used to remove the
8569 noisy borders around the video.  For example, those commands added at the
8570 beginning of the command line in @file{cine_render.sh} remove the black borders
8571 around a Hi8 video:@*
8572 @command{yuvscaler -v 0 -I ACTIVE_700x560+8+8 | y4mshift -n 2 |}
8573 @item @command{yuvdenoise} and @command{yuvmedianfilter} can help removing
8574 noise.  Example:@*
8575 @command{yuvdenoise -F | yuvmedianfilter -T 3 |}@*
8576 Denoising is a complex task, and the options given above are just an example.
8577 Please read the mjpegtools'manual and subscribe to its mailing-list for more
8578 information.
8579 @end itemize
8581 @c cincvdoc_node_number_265
8582 @node Making a DVD menu
8583 @subsection Making a DVD menu
8584 @cindex Making a DVD menu
8586 A DVD menu is composed of:
8588 @itemize @bullet
8589 @item a background (still image or video)
8590 @item buttons
8591 @item sound/music
8592 @end itemize
8594 You can build a menu with a GUI such as qdvdauthor, dvdstyler, dvdwizard or
8595 tovid.  However, using those GUI is not perfect for the moment, since they are
8596 bugged or limited for the moment.
8598 If you prefer to use a GUI, we recommend you to try tovid:@*
8599 @uref{http://tovid.wikia.com/wiki/Main_Page}@*
8600 QDVDAuthor contained a lot of bugs sometime ago, but its author fixed some of
8601 them recently, which makes QDVDAuthor more usable.
8603 The method we explain below is more complicated than using a GUI, however it:
8605 @itemize @bullet
8606 @item produces DVD playable on all standalone players
8607 @item is not subject to bugs
8608 @item will save you a lot of time since all you have to do to author a new DVD
8609 is to modify text files
8610 @end itemize
8612 Here are the steps needed to create your DVD menu:
8614 @itemize @bullet
8615 @item create the menu background with cinelerra
8616 @item add the buttons by creating PNG images
8617 @item combine the menu and the buttons with spumux
8618 @end itemize
8620 We suppose that you want to create a menu with an animated background.  Launch
8621 Cinelerra and create a project containing what you want to be the background of
8622 the menu.  You can add a music if you wish to.  Pay attention to the fact that
8623 this menu will play in loop.
8625 To draw the buttons, you have two possibilities:
8627 @itemize @bullet
8628 @item display them in Cinelerra.  That way, you will be able to make animated
8629 buttons, such as a video thumbnail for each part of your video.
8630 @item do not draw the buttons in Cinelerra.  You will add them later on, from
8631 PNG images "added" to the mpeg2 menu file.  This is the simpliest method, but
8632 you won't be able to display animated buttons.
8633 @end itemize
8635 Render that video into m2v and ac3 using the @command{cine_render.sh} method
8636 explain above.  Combine the audio and video with mplex as you would do with any
8637 "normal" video.
8639 You obtain a mpeg2 file containing the menu background, and some buttons
8640 displayed above it if you added them in Cinelerra.
8642 We have to use spumux to define each button position in that mpeg2 file.  If
8643 you did not draw the buttons in Cinelerra, you will be able to put them in with
8644 spumux.
8646 Spumux is a command line utility which takes 2 arguments:
8648 @itemize @bullet
8649 @item an XML file explaining where the buttons are
8650 @item the mpeg2 file name (the one you rendered for the menu)
8651 @end itemize
8653 Here is a spumux example XML file:
8654 @verbatim
8655 <subpictures>
8656  <stream>
8657   <spu start="00:00:00.0" image="buttons_normal.png" highlight=
8658   "buttons_highlight.png" select="buttons_select.png">
8659    <button name="1" x0="94 " y0="234 " x1="253 " y1="278"
8660    down="2" right="4" />
8661    <button name="2" x0="63 " y0="287 " x1="379 " y1="331" up="1"
8662    down="3" right="5" />
8663   </spu>
8664  </stream>
8665 </subpictures>
8666 @end verbatim
8668 @itemize @bullet
8669 @item @b{image="buttons_normal.png"} This png image contains the buttons as
8670 they should appear when they are not selected nor highlighted.
8671 @item @b{highlight="buttons_highlight.png"} This png image contains the buttons
8672 in their highlighted state.
8673 @item @b{select="buttons_select.png} This png image contains the buttons in
8674 their selected state.
8675 @end itemize
8677 If you already made the buttons in Cinelerra, you have to specify empty (100%
8678 transparent) PNG images here.
8680 The PNG images used in spumux must:
8682 @itemize @bullet
8683 @item contain an @b{alpha channel} (ie support transparency)
8684 @item be in @b{4 indexed colors}.  You can easily convert an image to 4 indexed
8685 colors using Gimp.
8686 @end itemize
8688 There is one line per button.  Each line contains the button coordinates, a
8689 button having a rectangular shape:
8691 @itemize @bullet
8692 @item @b{x0, y0}: upper left corner
8693 @item @b{x1, y1}: bottom right corner
8694 @end itemize
8696 You also have to set which button to move to when using the up, down, left and
8697 right buttons of the DVD remote.  Here is an example:
8699 @verbatim
8700 <button name="3" ...coordinates... up="1" down="5" left="2" right="4" />
8701 @end verbatim
8703 When button 3 is selected, if the "Up" key is pressed on the remote then the
8704 button 1 will be highlighted.  If the "Right" key is pressed on the remote,
8705 then button 4 will be highlighted.
8707 When you have finished editing your spumux XML file, you have to type this
8708 command:@*
8709 @command{spumux menu.xml < menu.mpeg > menu_with_buttons.mpeg}@*
8710 That will make a @file{menu_with_buttons.mpeg}.  It is an mpeg2 files with
8711 buttons.
8713 @c cincvdoc_node_number_266
8714 @node Authoring a DVD
8715 @subsection Authoring a DVD
8716 @cindex Authoring a DVD
8718 After having rendered to mpeg2 your video files, and having prepared a menu
8719 with spumux, you need to "author" the DVD with dvdauthor, that is another command line
8720 application.
8722 dvdauthor uses XML files to describe the DVD structure. You need to create an
8723 XML file in a text editor and save it as @file{simple_example.xml} in the same folder 
8724 of your @file{/the/mpeg/file.mpeg} mpeg2 video file.
8725 You should really pay a lot of attention to the .xml file syntax since it is very rigorous.
8726 The risk is the DVD to be readable on some standalone players, but not on all ofthem.
8728 To help you start using dvdauthor, here are some example XML files you can copy
8729 and paste into your @file{simple_example.xml} file. Replace example filenames
8730 and paths with the ones right for your project.
8732 @verbatim
8733 <dvdauthor dest="/path/to/the/folder/which/will/contain/the/dvd">
8734     <vmgm />
8735     <titleset>
8736         <titles>
8737             <pgc>
8738                 <vob file="/the/mpeg/file.mpeg" />
8739                         <post>
8740                     jump chapter 1;
8741                 </post>
8742             </pgc>
8743         </titles>
8744     </titleset>
8745 </dvdauthor>
8746 @end verbatim
8748 This is a very simple dvdauthor XML file.  There are no menus, so the video file
8749 @file{/the/mpeg/file.mpeg} will be played as soon as you insert the DVD in the
8750 player.
8752 The command in <post> tag means the video should be played in a loop.  When the
8753 DVD player reaches the end of the video, it will jump to the first chapter of
8754 the video (which dvdautor assumes to be the beginning of the video since
8755 chapters haven't been defined).
8756 To make the video play only once without jumping from the end to the beginning,
8757 remove the following lines from your XML file.
8758 @verbatim
8759                 <post>
8760                     jump chapter 1;
8761                 </post>
8762 @end verbatim
8764 To author the DVD, go to the folder that contains the video and the XML file and type the following command:@*
8765 @command{dvdauthor -x simple_example.xml}
8767 Now, let's have a look at a more complex example.  When the DVD is inserted, a
8768 menu is displayed and you can choose to play any of 4 videos.
8770 @verbatim
8771 <dvdauthor dest="/path/to/the/folder/which/will/contain/the/dvd" jumppad="yes" >
8772 <vmgm>
8773  <fpc> jump menu 1; </fpc>
8774   <menus>
8775    <video format="pal" aspect="4:3" resolution="720x576" />
8776    <pgc entry="title" >
8777     <vob file="menu.mpeg" pause="0" />
8778     <button name="1" > { g3=1; jump titleset 1 menu entry root; } </button>
8779     <button name="2" > { g3=2; jump titleset 1 menu entry root; } </button>
8780     <button name="3" > { g3=3; jump titleset 1 menu entry root; } </button>
8781     <button name="4" > { g3=4; jump titleset 1 menu entry root; } </button>
8782      <post> { jump cell 1; } </post>
8783    </pgc>
8784   </menus>
8785  </vmgm>
8786  <titleset>
8787   <menus>
8788    <pgc entry="root" >
8789     <pre> { if ( g3 gt 0 )  {
8790                 if ( g3 eq 1 ) { g3=0; jump title 1  chapter 1; }
8791                 if ( g3 eq 2 ) { g3=0; jump title 1  chapter 3; }
8792                 if ( g3 eq 3 ) { g3=0; jump title 1  chapter 5; }
8793                 if ( g3 eq 4 ) { g3=0; jump title 1  chapter 7; }
8794                 jump vmgm menu entry title;
8795                 }
8796         } </pre>
8797     <post> { jump vmgm menu entry title; } </post>
8798    </pgc>
8799   </menus>
8800   <titles>
8801    <video format="pal" aspect="4:3" resolution="720x576" />
8802    <pgc pause="0" >
8803     <vob file="video_1.mpeg" pause="0" />
8804     <vob file="blackvideo.mpg" pause="0" />
8805     <vob file="video_2.mpeg" pause="0" />
8806     <vob file="blackvideo.mpg" pause="0" />
8807     <vob file="video_3.mpeg" pause="0" />
8808     <vob file="blackvideo.mpg" pause="0" />
8809     <vob file="video_4.mpeg" pause="0" />
8810     <post> { call vmgm menu entry title; } </post>
8811    </pgc>
8812   </titles>
8813  </titleset>
8814 </dvdauthor>
8815 @end verbatim
8817 The file @file{blackvideo.mpg} is used to add a 2 second black screen between
8818 each video.  Here is how to create it:@*
8819 @command{convert -size 720x576 xc:black -depth 8 blackframe.ppm}@*
8820 @command{dd if=/dev/zero bs=4 count=960000 | toolame -b 128 -s 48 /dev/stdin
8821 emptyaudio.mpa}@*
8822 @command{ppmtoy4m -S 420mpeg2 -n 50 -F 25:1 -r blackframe.ppm | mpeg2enc -a 2
8823 -n p -f 8 -o blackvideo.mpv}@*
8824 @command{mplex -f 8 -o blackvideo.mpg blackvideo.mpv emptyaudio.mpa}
8826 @c cincvdoc_node_number_267
8827 @node Burning a DVD
8828 @subsection Burning a DVD
8829 @cindex Burning a DVD
8831 When you have finished authoring the DVD, you will find in the destination folder the
8832 following directories: @file{AUDIO_TS} and @file{VIDEO_TS}.  To test your DVD
8833 before burning it, cd into this folder, and type:@*
8834 @command{xine dvd:`pwd`}
8836 If your DVD plays fine on your computer, it is time to burn it.  When you are
8837 in the folder containing @file{AUDIO_TS} and @file{VIDEO_TS}, type this
8838 command (adjusting for your dvd burner device, eg /dev/dvdrw):@*
8839 @command{nice -n -20 growisofs -dvd-compat -speed=2 -Z /dev/dvd -dvd-video -V
8840 VIDEO ./ && eject /dev/dvd}
8842 If you have a lot of copies to do, you can first make an .iso master in the
8843 parent folder using this command:@*
8844 @command{nice -n -20 mkisofs -dvd-video -V VIDEO -o ../dvd.iso .}@*
8845 This @file{../dvd.iso} file can be burnt using this command:@*
8846 @command{nice -n -20 growisofs -dvd-compat -speed=2 -Z /dev/dvd=../dvd.iso &&
8847 eject /dev/cdrom}
8849 We recommend you do not burn at a speed higher than 4x.  Use good quality DVD-R
8850 only.
8852 To test your DVD on a standalone player without wasting several DVD-R, you can
8853 burn on DVD-RW@.  First, format your DVD-RW using this command:@*
8854 @command{dvd+rw-format -lead-out /dev/dvd}@*
8855 Then, burn the DVD-RW using the commands above.
8857 @c cincvdoc_node_number_268
8858 @node Using background rendering
8859 @section Using background rendering
8860 @cindex Background rendering
8861 @cindex Rendering, background
8863 Background rendering allows impossibly slow effects to play back in real-time
8864 shortly after the effect is pasted in the timeline.  It continuously renders
8865 temporary output.  When renderfarm is enabled, background rendering uses the
8866 renderfarm continuously.  This way, any size video can be seen in real-time
8867 merely by creating a fast enough network with enough nodes.
8869 Background rendering is enabled in settings->preferences->performance.  It has
8870 one interactive function: @b{settings->set background render}.  This sets the
8871 point where background rendering begins to where the in point is.  If any video
8872 exists, a red bar appears in the timeline showing what has been background
8873 rendered.
8875 It is often useful to insert an effect or a transition and then select
8876 settings->set background render right before the effect to preview it at full
8877 framerates.
8879 @c cincvdoc_node_number_269
8880 @node Tips
8881 @chapter Tips
8882 @cindex Tips
8884 In this section, you will find ways to solve common problems using Cinelerra.
8885 This section is arranged in order of the problems and what tools are used to
8886 solve them.  Following sections are arranged in order of the tools and their
8887 uses.
8889 @menu
8890 * Encoding into Dolby Pro Logic::
8891 * Cleaning analog TV::
8892 * Defeating interlacing::
8893 * Making video look like film::
8894 * Clearing out haze::
8895 * Making a ringtone::
8896 * Time stretching audio::
8897 * Video screen captures::
8898 * Improving performance::             Making Cinelerra run better on GNU/Linux.
8899 * Translating Cinelerra::             How to translate Cinelerra to different languages.
8900 * Panning and zooming still images::
8901 * HDV 1080i editing using proxy files::
8902 * Adding subtitles::
8903 @end menu
8905 @c cincvdoc_node_number_270
8906 @node Encoding into Dolby Pro Logic
8907 @section Encoding into Dolby Pro Logic
8908 @cindex Dolby Pro Logic, encoding into
8910 Dolby pro logic is an easy way to output 6 channel audio from a 2-channel
8911 soundcard with degraded but useful results.  Rudimentary Dolby pro logic
8912 encoding can be achieved with clever usage of the effects.
8914 First, create the front left and right channels.  Create 2 audio tracks, each
8915 carrying either the left or right channel.  Pan the left channel to the left and
8916 the right channel to the right with @b{pan}.
8918 Next, create the rear left and right channels.  Create another 2 audio tracks as
8919 above: the left channel panned left and the right channel panned right.  Then
8920 apply @b{invert audio} to both new channels and the signals will come out of
8921 the rear speakers.
8923 Next, create the center channel by creating a single audio track with monaural
8924 audio from a different source.  Center it with the @b{pan} control and the
8925 signal will come out of the center speaker.
8927 If a copy of the signal in the back speakers is desired in any single
8928 front speaker, the signal in the back speakers must be delayed by at least 0.05
8929 seconds and a single new track should be created.  Pan the new track to orient
8930 the signal in the front speakers.
8932 If the same signal is desired in all the speakers except the center speaker,
8933 delay the back speakers by 0.5 seconds and delay either the front left or front
8934 right by 0.2 seconds.
8936 If you want to hear something from the subwoofer, create a new track, select a
8937 range, drop a synthesizer effect, and set the frequency below 60 Hz.  The
8938 subwoofer merely plays anything below 60Hz or so.
8940 Other tricks you can perform to separate the speakers are parametric
8941 equalization to play only selected ranges of frequencies through different
8942 speakers and lowpass filtering to play signals through the subwoofer.
8944 @c cincvdoc_node_number_271
8945 @node Cleaning analog TV
8946 @section Cleaning analog TV
8947 @cindex Cleaning analog TV
8948 @cindex TV, cleaning analog
8950 Unless you live in a rich nation like China or are a terrorist, you probably
8951 record analog TV more than you record digital TV@.  The picture quality on
8952 analog TV is horrible but you can do things in Cinelerra to make it look more
8953 like it did in the studio.
8955 First, when capturing the video, capture it in the highest resolution possible.
8956 For Europeans it is 720x576 and for North Americans it is 720x480.  Do not bother
8957 adjusting the brightness or contrast in the recording monitor, although maxing
8958 out the color is useful.  Capture it using MJPEG or uncompressed Component
8959 Video if possible.  If those are too demanding, then capture it using JPEG@.
8960 RGB should be a last resort.
8962 Now on the timeline use @b{Settings->Format} to set a YUV colorspace.  Drop a
8963 @b{Downsample} effect on the footage.  Set it for
8964 @verbatim
8965 Horizontal:        2
8966 Horizontal offset: 0
8967 Vertical:          2
8968 Vertical offset:   0
8969       red
8970   x   green
8971   x   blue
8972       alpha
8973 @end verbatim
8975 Use the camera tool to shift the picture up or down a line to remove the most
8976 color interference from the image.  This is the difference we are looking for:
8978 @center @image{manual_images_en/cleaning1}
8980 If you have vertical blanking information or crawls which constantly change in
8981 each frame, block them out with the @b{Mask} tool.  This improves compression
8982 ratios.
8984 This is about all you can do without destroying more data than you would
8985 naturally lose in compression.  The more invasive cleaning techniques involve
8986 deinterlacing.
8988 @c cincvdoc_node_number_272
8989 @node Defeating interlacing
8990 @section Defeating interlacing
8991 @cindex Interlacing, defeating
8993 Interlacing is done on most video sources because it costs too much to build
8994 progressive scanning cameras and progressive scanning CRT's.  Many a consumer
8995 has been disappointed to spend 5 paychecks on a camcorder and discover what
8996 horrible jagged images it produces on a computer monitor.
8998 As for progressive scanning camcorders, forget it.  Cost factors are probably
8999 going to keep progressive scanning cameras from ever equaling the spatial
9000 resolution of interlaced cameras.  Interlacing is here to stay.  That is why
9001 they made deinterlacing effects in Cinelerra.
9003 We do not believe there has ever been a perfect deinterlacing effect.  They are
9004 either irreversible or do not work.  Cinelerra cuts down the middle by providing
9005 deinterlacing tools that are irreversible sometimes and do not work sometimes
9006 but are neither one or the other.
9008 @itemize @bullet
9009 @item
9010 @cindex Interlacing, line doubling
9011 @b{Line Doubling}
9012 This one is done by the @b{Deinterlace} effect when set to @b{Odd lines} or
9013 @b{Even lines}.  When applied to a track it reduces the vertical resolution by
9014 1/2 and gives you progressive frames with stairstepping.  This is only useful
9015 when followed by a scale effect which reduces the image to half its size.
9017 @item
9018 @cindex Interlacing, line averaging
9019 @b{Line averaging}
9020 The @b{Deinterlace} effect when set to @b{Average even lines} or @b{Average odd
9021 lines} does exactly what line doubling does except instead of making straight
9022 copies of the lines it makes averages of the lines.  This is actually useful
9023 for all scaling.@*
9024 There is an option for adaptive line averaging which selects which lines to line
9025 average and which lines to leave interlaced based on the difference between the
9026 lines.  It does not work.
9028 @item
9029 @cindex Interlacing, inverse telecine
9030 @b{Inverse Telecine}
9031 This is the most effective deinterlacing tool when the footage is an NTSC TV
9032 broadcast of a film.  @xref{Inverse telecine}.
9034 @item
9035 @cindex Interlacing, time base correction
9036 @b{Time base correction}
9037 The first three tools either destroy footage irreversibly or do not work
9038 at times.  @b{Time base correction} is last because it is the perfect
9039 deinterlacing tool.  It leaves the footage intact.  It does not reduce
9040 resolution, perceptually at least.  It does not cause jittery timing.
9042 @item
9043 @cindex Interlacing, frames to fields
9044 The @b{Frames to Fields} effect converts each frame to two frames, so it must
9045 be used on a timeline whose project frame rate is twice the footage's frame
9046 rate.  In the first frame it puts a line-averaged copy of the even lines.  In
9047 the second frame it puts a line-averaged copy of the odd lines.  When played
9048 back at full framerates it gives the illusion of progressive video with no loss
9049 of detail.@*
9050 Best of all, this effect can be reversed with the @b{Fields to frames} effect.
9051 That one combines two frames of footage back into the one original interlaced
9052 frame of half the framerate.@*
9053 Be aware that frames to fields inputs frames at half the framerate as the
9054 project.  Effects before frames to fields process at the reduced framerate.@*
9055 Unfortunately, the output of @b{Frames to Fields} can not be compressed as
9056 efficiently as the original because it introduces vertical twitter and a super
9057 high framerate.@*
9058 Interlaced 29.97 fps footage can be made to look like film by applying
9059 @b{Frames to Fields} and then reducing the project frame rate of the resulting
9060 59.94 fps footage to 23.97 fps.  This produces no timing jitter and the
9061 occasional odd field gives the illusion of more detail than there would be if
9062 you just line averaged the original.
9063 @end itemize
9065 @cindex Interlacing, HDTV exceptions
9066 @cindex HDTV interlacing
9067 @b{HDTV exceptions}@*
9068 1920x1080 HDTV is encoded a special way.  If it is a broadcast of original HDTV
9069 film, an inverse telecine works fine.  If it is a rebroadcast of a 720x480
9070 source, you need to use a time base and line doubling algorithm to deinterlace
9071 it, @xref{1080 to 480}.
9073 @c cincvdoc_node_number_273
9074 @node Making video look like film
9075 @section Making video look like film
9076 @cindex Making video look like film
9077 @cindex Film look
9079 Video sweetening is constantly getting better.  Lately the best thing you can
9080 do for dirt cheap consumer camcorder video is to turn it into progressive 24
9081 fps output.  While you can not really do that, you can get pretty close for the
9082 money.  Mind you, since this procedure can degrade high quality video just as easily
9083 as it improves low quality video, it should only be used for low quality
9084 video.
9086 @enumerate 1
9087 @item Set project framerate to twice the video framerate.
9088 @item Apply a @b{Sharpen} effect.  Set it to sharpness: 25, no interlacing, and
9089 horizontal only.
9090 @item Drop a @b{Frame to Fields} effect on the same track.  Set Average Empty
9091 Rows to on and play through the video a few times to figure out which field is
9092 first.  If the wrong field is first, the motion is shaky.  Secondly, any
9093 editing in the doubled frame rate may now screw up the field order.  We are
9094 still figuring out the easiest way to support warnings for field glitches but
9095 for now you need to go back to the normal framerate to do editing or play test
9096 to make sure the fields are right.
9097 @item Render just the video to the highest quality file possible.
9098 @item Import the video back to a new track.  Set the project framerate to
9099 24.  The new track should now display more filmish and sharper images than the
9100 original footage.
9101 @end enumerate
9103 This entire procedure could be implemented in one non-realtime effect, but the
9104 biggest problem with that is you will most often want to keep the field based
9105 output and the 24 fps output for posterity.  A non-realtime effect would
9106 require all that processing just for the 24 fps copy.  Still debating that one.
9108 @c cincvdoc_node_number_274
9109 @node Clearing out haze
9110 @section Clearing out haze
9111 @cindex Clearing out haze
9112 @cindex Haze, clearing out
9113 @cindex Gradient effect
9115 You probably photograph a lot of haze and never see blue sky.  Even if you
9116 can afford to briefly go somewhere where there is blue sky, horizon shots
9117 usually can stand for more depth.  This is what the @b{gradient effect} is for.
9119 Drop the gradient effect on hazy tracks.  Set the following parameters:
9120 @itemize @bullet
9121 @item Angle: 0
9122 @item Inner radius: 0
9123 @item Outer radius: 40
9124 @item Inner color: blue 100% alpha
9125 @item Outer color: blue 0% alpha
9126 @end itemize
9128 It is important to set the 0% alpha color to blue even though it is 0% alpha.
9129 The color of the outer alpha is still interpolated with the inner color.  This
9130 is a generally applicable setting for the gradient.  Some scenes may work
9131 better with orange or brown for an evening feel.
9133 @c cincvdoc_node_number_275
9134 @node Making a ringtone
9135 @section Making a ringtone
9136 @cindex Ringtone, making a
9138 This is how we made ringtones for the low end Motorola V180's and it will
9139 probably work with any new phone.  Go to @b{File->Load files...} and load a
9140 sound file with Insertion strategy: @b{Replace current project}.  Go to
9141 @b{Settings->Format} change @b{Channels} to 1 and @b{Samplerate} to 16000 or
9142 22050.
9144 Either highlight a region of the timeline or set in/out points to use for the
9145 ringtone.  To improve sound quality on the cell phone, you need the maximum
9146 amplitude in as many parts of the sound as possible.  Right click on track
9147 Audio 1 and select @b{Attach effect..}.  Highlight the @b{Compressor} effect
9148 and hit @b{Attach} in the attachment popup.
9150 Make sure the insertion point or highlighted area is in the region with the
9151 Compressor effect.  Right click on track Audio 2 and select @b{Attach
9152 effect..}.  Highlight @b{Audio 1: Compressor} and hit @b{Attach}.  Click the
9153 Audio1 Compressor's magnifying glass @image{manual_images_intl/magnify,7mm} to bring up
9154 the compressor GUI@.
9156 Set the following parameters:
9157 @itemize @bullet
9158 @item Reaction secs: @b{-0.1}
9159 @item Decay secs: @b{0.1}
9160 @item Trigger Type: @b{Total}
9161 @item Trigger: @b{0}
9162 @item Smooth only: @b{No}
9163 @end itemize
9165 Click @b{Clear} to clear the graph.  Click anywhere in the grid area and drag a
9166 new point to 0 Output and -50 Input.  The graph should look like this.
9168 @center @image{manual_images_en/compress,70mm}
9170 Go to @b{File->Render}.  Specify the name of an mp3 file to output to.  Set the
9171 file format to @b{MPEG Audio}.  Click the wrench
9172 @image{manual_images_intl/wrench,4.33mm} for Audio and set @b{Layer} to @b{III} and
9173 @b{Kbits per second} to @b{24} or @b{32}.  Check @b{Render audio tracks} and
9174 uncheck @b{Render video tracks}.  Hit OK to render the file.
9176 The resulting @file{.mp3} file must be uploaded to a web server.  Then, the
9177 phone's web browser must download the @file{.mp3} file directly from the URL@.
9178 There also may be a size limit on the file.
9180 @c cincvdoc_node_number_276
9181 @node Time stretching audio
9182 @section Time stretching audio
9183 @cindex Time stretching audio
9184 @cindex Audio, time stretching
9186 It may appear that time stretching audio is a matter of selecting a region of
9187 the audio tracks, enabling recording for the desired tracks, going to
9188 @b{Audio->Render Effect}, and applying @b{Time Stretch}.  In actuality there
9189 are 3 audio effects for time stretching: @b{Time Stretch}, @b{Resample}, and
9190 @b{Asset info dialog}.
9192 Time Stretch applies a fast Fourier transform to try to change the duration
9193 without changing the pitch, but this introduces windowing artifacts to the
9194 audio.  It is only useful for large changes in time because obvious changes in
9195 duration make windowing artifacts less obtrusive.
9197 For smaller changes in duration, in the range of 5%, @b{Resample} should be
9198 used.  This changes the pitch of the audio but small enough changes are not
9199 noticeable.  Resample does not introduce any windowing artifacts, so this is
9200 most useful for slight duration changes where the listener is not supposed to
9201 know what is going on.
9203 Another way to change duration slightly is to go to the @b{Resources} window,
9204 highlight the @b{media} folder, right click on an audio file, click on
9205 @b{Info}.  Adjust the sample rate in the @b{Info} dialog to adjust the
9206 duration.  This method also requires left clicking on the right boundary of the
9207 audio tracks and dragging left or right to correspond to the length changes.
9209 @c cincvdoc_node_number_277
9210 @node Video screen captures
9211 @section Video screen captures
9212 @cindex Video screen captures
9214 We explain here how to record video screen captures and edit them in Cinelerra.
9216 First, you have to record the video with xvidcap.  You can find that utility in
9217 most distributions' repositories, or download it here:@*
9218 @uref{http://xvidcap.sourceforge.net}
9220 First, capture the screen:@*
9221 @command{xvidcap --fps 10 --cap_geometry 1280x1024+0+0 --file "file1.mpeg"
9222 --gui no --audio no}
9224 Do not forget to change the geometry option according to your screen size.
9225 Then, convert the @file{file1.mpeg} file you obtained into an mpeg file
9226 suitable for Cinelerra:@*
9227 @command{ffmpeg -r 10 -i file1.mpeg -s 1280x1024 -b 3000 -aspect 1.33 -r 25
9228 file2.mpeg}
9230 You can now load that file into Cinelerra.  Make sure you properly set the
9231 video format of your project (size, frame-rate, aspect-ratio)
9233 When you have finished editing your video, you have to render it.  Render it as
9234 a jpeg-sequence.  It is recommended to write the jpeg files in a new folder,
9235 since there probably will have a lot of files created.
9237 Then, open a shell window, and cd into that folder.  Encode the jpeg files
9238 using those commands:
9240 @b{First pass:}
9241 @verbatim
9242 mencoder "mf://*.jpg" -mf fps=25 -oac pcm -sws 2 -vf scale=\
9243 1280:1024,hqdn3d=2:1:2 -ovc lavc -lavcopts vcodec=mpeg4:\
9244 vbitrate=800:aspect=4/3:vpass=1 -ofps 10 -of avi -o /dev/null \
9245 -ffourcc DIVX
9246 @end verbatim
9247 @b{Second pass:}
9248 @verbatim
9249 mencoder "mf://*.jpg" -mf fps=25 -oac pcm -sws 2 -vf \
9250 scale=1280:1024,hqdn3d=2:1:2 -ovc lavc -lavcopts \
9251 vcodec=mpeg4:vbitrate=800:aspect=4/3:vpass=2 -ofps 10 -of avi \
9252 -o ../rendered_file.avi -ffourcc DIVX
9253 @end verbatim
9255 You can also render the video to mpeg4 directly from Cinelerra if you wish to.
9257 @c cincvdoc_node_number_278
9258 @node Improving performance
9259 @section Improving performance
9260 @cindex Performance, improving
9262 For the moment GNU/Linux is not an excellent desktop.  It is more of a server.
9263 Most of what you will find on modern GNU/Linux distributions are faceless,
9264 network-only programs strategically designed to counteract one Microsoft server
9265 feature or another and not to perform very well at user interaction.  There are
9266 a number of parameters on GNU/Linux, which ordinary people can adjust to make
9267 it behave more like a thoroughbred in desktop usage.
9269 @menu
9270 * Disabling swap space::
9271 * Enlarging sound buffers::
9272 * Freeing more shared memory::
9273 * Speeding up the hard drive::
9274 * Disabling cron::
9275 * Reducing USB mouse sensitivity::
9276 * Assorted X tweeks::
9277 * Speeding up the file system::
9278 * Improving Zoran video::
9279 @end menu
9281 @c cincvdoc_node_number_279
9282 @node Disabling swap space
9283 @subsection Disabling swap space
9284 @cindex Disabling swap space
9285 @cindex Swap space, disabling
9287 On systems with lots of memory, Cinelerra sometimes runs better without a swap
9288 space.  If you have 4 GB of RAM, you are probably better off without a swap
9289 space.  If you have 512MB of RAM, you should keep the swap.  If you want to do
9290 recording, you should probably disable swap space in any case.  There is a
9291 reason for this.  GNU/Linux only allows half the available memory to be used.
9292 Beyond that, it starts searching for free pages to swap, in order to cache more
9293 disk access.  In a 4 GB system, you start waiting for page swaps after using
9294 only 2 GB@.
9296 The question then is how to make GNU/Linux run without a swap space.
9297 Theoretically it should be a matter of running@*
9298 @command{swapoff -a}
9300 Unfortunately, without a swap space the kswapd tasklet normally spins at 100%.
9301 To eliminate this problem, edit @file{linux/mm/vmscan.c}.  In this file, put a
9302 line saying @command{return 0;} before it says
9303 @verbatim
9304     /*
9305      * Kswapd main loop.
9306      */
9307 @end verbatim
9309 Then recompile the kernel.
9311 @c cincvdoc_node_number_280
9312 @node Enlarging sound buffers
9313 @subsection Enlarging sound buffers
9314 @cindex Sound buffers, enlarging
9316 In order to improve realtime performance, the audio buffers for all the
9317 GNU/Linux sound drivers were limited from 128k to 64k.  For recording audio and
9318 video simultaneously and for most audio recording this causes dropouts.
9319 Application of low latency and preemptible kernel patches make it possible to
9320 record more audio recordings but it does not improve recording video with audio.
9321 This is where you need to hack the kernel.
9323 To see if your sound buffers are suitable, run the included soundtest program
9324 with nothing playing or recording.  This allocates the largest possible buffers
9325 and displays them.  If the @b{Total bytes available} is under 131072, you need
9326 to see about getting the buffers enlarged in the driver.  While many drivers
9327 differ, we have a hack for at least one driver.
9329 This only applies to the OSS version of the Soundblaster Live driver.  Since
9330 every sound card and every sound driver derivative has a different
9331 implementation you will need to do some searching for other sound cards.  Edit
9332 @file{linux/drivers/sound/emu10k1/audio.c}
9334 Where it says
9335 @verbatim
9336 if (bufsize >= 0x10000)
9337 @end verbatim
9338 change it to:
9339 @verbatim
9340 if (bufsize > 0x40000)
9341 @end verbatim
9343 Where it says
9344 @verbatim
9345     for (i = 0; i < 8; i++)
9346         for (j = 0; j < 4; j++)
9347 @end verbatim
9348 change it to:
9349 @verbatim
9350     for (i = 0; i < 16; i++)
9351         for (j = 0; j < 4; j++)
9352 @end verbatim
9354 In @file{linux/drivers/sound/emu10k1/hwaccess.h}, change
9355 @verbatim
9356 #define MAXBUFSIZE 65536
9357 @end verbatim
9359 @verbatim
9360 #define MAXBUFSIZE 262144
9361 @end verbatim
9363 Finally, in @file{linux/drivers/sound/emu10k1/cardwi.h}, change
9364 @verbatim
9365 #define WAVEIN_MAXBUFSIZE         65536
9366 @end verbatim
9368 @verbatim
9369 #define WAVEIN_MAXBUFSIZE         262144
9370 @end verbatim
9372 Then recompile the kernel modules.
9374 @c cincvdoc_node_number_281
9375 @node Freeing more shared memory
9376 @subsection Freeing more shared memory
9377 @cindex Freeing more shared memory
9378 @cindex Shared memory, freeing
9379 @cindex Memory, freeing
9381 The GNU/Linux kernel only allows 32MB of shared memory to be allocated by
9382 default.  This needs to be increased to do anything useful.  When launched,
9383 Cinelerra may remind you that with the following error message: @*
9384 @verbatim
9385 The following errors occurred:
9386 void MWindow::init_shm0: WARNING:/proc/sys/kernel/shmmax is 0x2000000, which is too low.
9387 Before running Cinelerra do the following as root:
9388 echo "0x7ffffff">/proc/sys/kernel/shmmax
9389 @end verbatim
9391 For a permanent change, add to the @file{/etc/sysctl.conf} file the following
9392 line:
9393 @verbatim
9394 kernel/shmmax=0x7fffffff
9395 @end verbatim
9397 or if you prefer:
9398 @verbatim
9399 kernel.shmmax = 2147483647
9400 @end verbatim
9402 For the first time, to avoid restarting your computer, use the following
9403 command as root:
9404 @verbatim
9405 sysctl -p
9406 @end verbatim
9408 @c cincvdoc_node_number_282
9409 @node Speeding up the hard drive
9410 @subsection Speeding up the hard drive
9411 @cindex Speeding up the hard drive
9412 @cindex Hard drive, speeding up the
9413 @cindex hdparm
9415 This is a very popular command sequence among GNU/Linux gurus, which is not
9416 done by default on GNU/Linux distributions.@*
9417 @command{hdparm -c3 -d1 -u1 -k1 /dev/hda}
9419 @itemize @bullet
9420 @item @option{-c3} puts the hard drive into 32 bit I/O with sync.  This
9421 normally does not work due to inept kernel support for most IDE controllers.
9422 If you get lost interrupt or SeekComplete errors, quickly use @option{-c0}
9423 instead of @option{-c3} in your command.
9424 @item @option{-d1} enables DMA of course.  This frees up the CPU partially
9425 during data transfers.
9426 @item @option{-u1} allows multiple interrupts to be handled during hard drive
9427 transactions.  This frees up even more CPU time.
9428 @item @option{-k1} prevents GNU/Linux from resetting your settings in case of a
9429 glitch.
9430 @end itemize
9432 @c cincvdoc_node_number_283
9433 @node Disabling cron
9434 @subsection Disabling cron
9435 @cindex Disabling cron
9436 @cindex Cron, disabling
9438 GNU/Linux runs some daily operations like compressing man pages.  These may be
9439 acceptable background tasks while compiling or word processing but not while
9440 playing video.  Disable these operations by editing
9441 @file{/etc/rc.d/init.d/anacron}.
9443 Put @command{exit} before the first line not beginning in @command{#}.
9445 In @file{/etc/rc.d/init.d/crond} put @command{exit} before the first line not
9446 beginning in @command{#}.  Then reboot.
9448 You can not use the @command{at} command anymore, but who uses that command
9449 anyways?
9451 @c cincvdoc_node_number_284
9452 @node Reducing USB mouse sensitivity
9453 @subsection Reducing USB mouse sensitivity
9454 @cindex Reducing USB mouse sensitivity
9455 @cindex Mouse, reducing sensitivity
9456 @cindex USB mouse, reducing sensitivity
9458 Gamers like high resolution mice, but this can be painful for precisely
9459 positioning the mouse on a timeline or video screen.  XFree86 once allowed you
9460 to reduce PS/2 mouse sensitivity using commands like @command{xset m 1 1} but
9461 you are out of luck with USB mice or KVM's.
9463 We have a way to reduce USB mouse sensitivity but it requires editing the
9464 kernel source code.  Even though USB mice have been supported for years, the
9465 kernel source code for USB mice is constantly being rewritten.  These
9466 instructions were relevant for 2.6.12.3.  Edit
9467 @file{/usr/src/linux/drivers/input/mousedev.c}.
9469 After the line saying
9470 @verbatim
9471 struct mousedev_hw_data {
9472 @end verbatim
9474 @verbatim
9475 #define DOWNSAMPLE_N 100
9476 #define DOWNSAMPLE_D 350
9477 int x_accum, y_accum;}
9478 @end verbatim
9480 Next, the section which says something like:
9481 @verbatim
9482 switch (code) {
9483     case REL_X: mousedev->packet.dx += value; break;
9484     case REL_Y: mousedev->packet.dy -= value; break;
9485     case REL_WHEEL:     mousedev->packet.dz -= value; break;
9487 @end verbatim
9488 must be replaced by
9489 @verbatim
9490 switch (code) {
9491     case REL_X:
9492     mousedev->packet.x_accum += value * DOWNSAMPLE_N;
9493     mousedev->packet.dx += (int)mousedev->packet.x_accum
9494     / (int)DOWNSAMPLE_D;
9495     mousedev->packet.x_accum -=
9496     ((int)mousedev->packet.x_accum / (int)DOWNSAMPLE_D)
9497     * (int)DOWNSAMPLE_D;
9498     break;
9499     case REL_Y:
9500     mousedev->packet.y_accum += value * DOWNSAMPLE_N;
9501     mousedev->packet.dy -= (int)mousedev->packet.y_accum
9502     / (int)DOWNSAMPLE_D;
9503     mousedev->packet.y_accum -=
9504     ((int)mousedev->packet.y_accum
9505     / (int)DOWNSAMPLE_D) * (int)DOWNSAMPLE_D;
9506     break;
9507     case REL_WHEEL: mousedev->packet.dz -= value; break;
9509 @end verbatim
9511 Change the value of @b{DOWNSAMPLE_N} to change the mouse sensitivity.
9513 @c cincvdoc_node_number_285
9514 @node Assorted X tweeks
9515 @subsection Assorted X tweeks
9516 @cindex X, assorted tweeks
9518 XFree86 by default can not display Cinelerra's advanced pixmap rendering very
9519 fast.  The X server stalls during list box drawing.  Fix this by adding a line
9520 to your XF86Config* files.
9522 In the @b{Section "Device"} area, add a line saying:
9523 @verbatim
9524 Option "XaaNoOffscreenPixmaps"
9525 @end verbatim
9526 and restart the X server.
9528 Screen blanking is really annoying, unless you are fabulously rich and can
9529 afford to leave your monitor on 24 hours a day without power saving mode.  In
9530 @file{/etc/X11/xinit/xinitrc} put
9531 @verbatim
9532 xset s off
9533 xset s noblank
9534 @end verbatim
9535 before the first @command{if} statement.
9537 How about those windows keys which no GNU/Linux distribution even thinks to
9538 use.  You can make the window keys provide ALT functionality by editing
9539 @file{/etc/X11/Xmodmap}.  Append the following to it.
9540 @verbatim
9541 keycode 115 = Hyper_L
9542 keycode 116 = Hyper_R
9543 add mod4 = Hyper_L
9544 add mod5 = Hyper_R
9545 @end verbatim
9547 The actual changes to a window manager to make it recognize window keys for
9548 @key{ALT} are complex.  In @b{FVWM} at least, you can edit
9549 @file{/etc/X11/fvwm/system.fvwm2rc} and put
9550 @verbatim
9551 Mouse 0 T A move-and-raise-or-raiselower
9552 #Mouse 0 W M move
9553 Mouse 0 W 4 move
9554 Mouse 0 W 5 move
9555 Mouse 0 F A resize-or-raiselower
9556 Mouse 0 S A resize-or-raiselower
9557 @end verbatim
9559 in place of the default section for moving and resizing.  Your best performance
9560 is going to be on FVWM@.  Other window managers seem to slow down video with
9561 extra event trapping and are not as efficient in layout.
9563 @c cincvdoc_node_number_286
9564 @node Speeding up the file system
9565 @subsection Speeding up the file system
9566 @cindex Speeding up the file system
9567 @cindex File system, speeding up the
9569 You will often store video on an expensive, gigantic disk array separate from
9570 your boot disk.  You will thus have to manually install an EXT filesystem on this
9571 disk array, using the @command{mke2fs} command.  By far the fastest file system
9572 is@*
9573 @cindex mke2fs
9574 @cindex tune2fs
9575 @command{mke2fs -i 65536 -b 4096 my_device}@*
9576 @command{tune2fs -r0 -c10000 my_device}
9578 This has no journaling, reserves as few blocks as possible for filenames, and
9579 accesses the largest amount of data per block possible.  A slightly slower file
9580 system, which is easier to recover after power failures is@*
9581 @command{mke2fs -j -i 65536 -b 4096 my_device}@*
9582 @command{tune2fs -r0 -c10000 my_device}
9584 This adds a journal which slows down the writes but makes filesystem checks
9585 faster.
9587 @c cincvdoc_node_number_287
9588 @node Improving Zoran video
9589 @subsection Improving Zoran video
9590 @cindex Zoran video, improving
9592 Video recorded from the ZORAN inputs is normally unaligned or not completely
9593 encoded on the right.  This can be slightly compensated by adjusting parameters
9594 in the driver sourcecode.
9596 In @file{/usr/src/linux/drivers/media/video/zr36067.c} the structures defined
9597 near line 623 affect alignment.  At least for NTSC, the 2.4.20 version of the
9598 driver could be improved by changing
9599 @verbatim
9600     static struct tvnorm f60ccir601 = { 858, 720, 57, 788, 525, 480, 16 };
9602     static struct tvnorm f60ccir601 = { 858, 720, 57, 788, 525, 480, 17 };
9603 @end verbatim
9605 In @file{/usr/src/linux/drivers/media/video/bt819.c} more structures near line
9606 76 affect alignment and encoding.@*
9607 For NTSC
9608 @verbatim
9609     {858 - 24, 2, 523, 1, 0x00f8, 0x0000},
9610 could be changed to
9611     {868 - 24, 2, 523, 1, 0x00f8, 0x0000},
9612 @end verbatim
9613 Adjusting these parameters may or may not move your picture closer to the
9614 center.  More of the time, they will cause the driver to lock up before capturing
9615 the first frame.
9617 @b{New in 2.6.5:}@*
9618 In the 2.6 kernels, the video subsystem was rewritten again from scratch.  To
9619 adjust the Zoran parameters go to @file{drivers/media/video/zoran_card.c} and
9620 look for a group of lines like
9621 @verbatim
9622     static struct tvnorm f50sqpixel = { 944, 768, 83, 880, 625, 576, 16 };
9623     static struct tvnorm f60sqpixel = { 780, 640, 51, 716, 525, 480, 12 };
9624     static struct tvnorm f50ccir601 = { 864, 720, 75, 804, 625, 576, 18 };
9625     static struct tvnorm f60ccir601 = { 858, 720, 57, 788, 525, 480, 16 };
9627     static struct tvnorm f50ccir601_lml33 = { 864, 720, 75+34, 804, 625, 576, 18 };
9628     static struct tvnorm f60ccir601_lml33 = { 858, 720, 57+34, 788, 525, 480, 16 };
9630     /* The DC10 (57/16/50) uses VActive as HSync, so HStart must be 0 */
9631     static struct tvnorm f50sqpixel_dc10 = { 944, 768, 0, 880, 625, 576, 0 };
9632     static struct tvnorm f60sqpixel_dc10 = { 780, 640, 0, 716, 525, 480, 12 };
9634     /* FIXME: I cannot swap U and V in saa7114, so i do one
9635      * pixel left shift in zoran (75 -> 74)
9636      * (Maxim Yevtyushkin <max@linuxmedialabs.com>) */
9637     static struct tvnorm f50ccir601_lm33r10 = { 864, 720, 74+54, 804, 625, 576, 18 };
9638     static struct tvnorm f60ccir601_lm33r10 = { 858, 720, 56+54, 788, 525, 480, 16 };
9639 @end verbatim
9641 These seem to control the image position.  At least for the LML33 the following
9642 definition for @b{f60ccir601_lml33} does the trick.
9643 @verbatim
9644 static struct tvnorm f60ccir601_lml33 = { 858, 720, 67+34, 788, 525, 480, 13 };
9645 @end verbatim
9647 @c cincvdoc_node_number_288
9648 @node Translating Cinelerra
9649 @section Translating Cinelerra
9650 @cindex Translating Cinelerra
9652 @menu
9653 * Available localizations::
9654 * Updating an existing translation::
9655 * Creating a new translation::
9656 @end menu
9658 This information is needed if you wish to partipate in translating Cinelerra.
9659 @xref{Environment variables}, for running Cinelerra in your own language.
9661 @c cincvdoc_node_number_289
9662 @node Available localizations
9663 @subsection Available localizations
9664 @cindex Localizations, available
9666 There are some existing localizations for cinelerra:
9667 @itemize @bullet
9668 @item @b{DE} - German
9669 @item @b{ES} - Spanish
9670 @item @b{EU} - Basque
9671 @item @b{FR} - French
9672 @item @b{IT} - Italian
9673 @item @b{PT_BR} - Brazilian Portuguese
9674 @item @b{SL} - Slovenian
9675 @end itemize
9677 @c cincvdoc_node_number_290
9678 @node Updating an existing translation
9679 @subsection Updating an existing translation
9680 @cindex Updating an existing translation
9682 To generate an updated @file{*.po} file with the newer strings of Cinelerra
9683 source code not yet present in the @file{.po} file, run after
9684 @command{./configure}:@*
9685 @command{cd po && make}
9687 Then, edit the @file{.po} file located in @file{po/} directory of your target
9688 language and submit the diff file to the Cinelerra-CV team.
9690 @c cincvdoc_node_number_291
9691 @node Creating a new translation
9692 @subsection Creating a new translation
9693 @cindex Creating a new translation
9695 To create a new translation, run after @command{./configure}:@*
9696 @command{cd po && make}
9698 Then, edit the @file{cinelerra.pot} file located in @file{po/} and add the
9699 appropriate translated strings.  Rename the file to @file{(lang_prefix).po} and
9700 add the language prefix to @file{po/LINGUAS}.  Finally, submit the diff file to
9701 the cinelerra-CV team.
9703 @c cincvdoc_node_number_292
9704 @node Panning and zooming still images
9705 @section Panning and zooming still images
9706 @cindex Panning and zooming still images
9707 @cindex Still images, panning and zooming
9709 Cinelerra's powerful keyframe features allow you to use pan and zoom
9710 effects on still pictures.
9711 @enumerate 1
9712 @item Load and create a clip from a still image as described above.  Make the
9713 clip 10 seconds long.
9714 @item Activate the @b{automatic generation of keyframes}
9715 @item Using the @b{transport controls}, go to the beginning of the clip
9716 @item Using the @b{compositing camera control} set the clip's initial position
9717 @item Using the @b{transport controls}, move forward a couple of seconds on the
9718 clip
9719 @item Dragging on the @b{compositing camera} move the camera center to a new
9720 position further
9721 @item Now, rewind to the beginning of the clip and play it.
9722 @end enumerate
9723 You can see that the camera smoothly flows from keyframe point to next keyframe
9724 point, as Cinelerra automatically adjusts the camera movement in straight lines
9725 from point to point.
9727 @c cincvdoc_node_number_342
9728 @node HDV 1080i editing using proxy files
9729 @section HDV 1080i editing using proxy files
9730 @cindex HDV 1080i editing using proxy files
9732 Working with high definition video, which typically comes from HDV camcorders,
9733 requires a lot of processing power.  Even if the system is able to play a
9734 single track at full framerate, it is usually not able to play several tracks
9735 simultaneously.  Thus simple dissolve transition is slowed down to unacceptable
9736 level.  Moreover, HDV is in GOP based format, and simple cut requires decoding
9737 the whole GOP in less then 1/25s.  Thus, one of the possibilities is to perform
9738 all edits on low resolution files, and use HDV material only for the final
9739 rendering.  The workflow presented below was first proposed by Hermann
9740 @sc{Vosseler}.
9742 @menu
9743 * Overview::
9744 * Grabbing HDV from camcorder::
9745 * Using TOC and WAV files::
9746 * Making the proxy files::
9747 * Converting HDV and proxy files::
9748 * Rendering the HDV project::
9749 * Other issues::
9750 @end menu
9752 @c cincvdoc_node_number_343
9753 @node Overview
9754 @subsection Overview
9755 @cindex HDV 1080i editing, overview
9757 @itemize @bullet
9758 @item For each HDV file a proxy is created with a scale of 0.5.
9759 @item The project is created with HDV resolution e.g. 1440x1080 and 16/9 
9760 aspect.
9761 @item New resources are created with both proxies as well as HDV files.
9762 @item Each video track must have Camera Automation set to 2.0.
9763 @item Editing is performed with the proxy files.
9764 @item For HDV rendering, exit Cinelerra and convert the project file with
9765 proxychange.py and reopen the project.
9766 @item After rendering, if further editing is required, the project file can be
9767 back-transformed into a proxy version.
9768 @end itemize
9770 @c cincvdoc_node_number_344
9771 @node Grabbing HDV from camcorder
9772 @subsection Grabbing HDV from camcorder
9773 @cindex HDV 1080i editing, grabbing HDV from camcorder
9775 There is no perfect solution so far.  One possibility is to run the
9776 @command{test-mpeg2} command available with the sources of @b{libiec61883}.
9777 Use this syntax:@*
9778 @command{test-mpeg2 > hdv_tape.mpeg}@*
9779 and press @b{Play} on the camcorder.  You should not run any heavy ressources
9780 consuming task on your computer since the lack of caching in test-mpeg2 causes
9781 framedrops.
9783 @c cincvdoc_node_number_345
9784 @node Using TOC and WAV files
9785 @subsection Using TOC and WAV files
9786 @cindex HDV 1080i editing, using TOC and WAV files
9788 Try using WAV files for sound, and load HDV MPEG-2 files via their generated
9789 toc.  To create toc files, use the following command:@*
9790 @command{for i in *.mpeg; do mpeg3toc $i `basename $i mpeg`toc; done}
9792 @c cincvdoc_node_number_346
9793 @node Making the proxy files
9794 @subsection Making the proxy files
9795 @cindex HDV 1080i editing, making the proxy files
9797 Proxy files can be converted in many ways and can use any format.  However,
9798 Cinelerra works better when editing non-GOP based formats.  To convert your HDV
9799 files into I-frame based mjpeg files with 50% scaling, use the following
9800 command:@*
9801 @command{for i in *.mpeg;do mencoder -mc 0 -noskip $i -ovc lavc -lavcopts
9802 vcodec=mjpeg -vf scale=720:540 -oac pcm -o `basename $i mpeg`avi; done}
9804 @c cincvdoc_node_number_347
9805 @node Converting HDV and proxy files
9806 @subsection Converting HDV and proxy files
9807 @cindex HDV 1080i editing, converting HDV and proxy files
9809 The @b{proxychange.py} python script converts HDV to/from proxies.  You can
9810 download that script here:@*
9811 @uref{http://cvs.cinelerra.org/docs/proxychange.py}
9813 It overwrites the existing project files, and creates copy of the original in
9814 @file{projectfile.xml.bak}.
9816 @itemize @bullet
9817 @item Proxy -> HDV (e.g. for rendering):@*
9818 @command{./proxychange.py projectfile.xml -from `proxyfiles/(\w+)\.avi` -to
9819 `hdv/\1.toc` -scale 0.5}
9820 @item HDV -> Proxy (e.g. after rendering if you want go back to editing):@*
9821 @command{./proxychange.py projectfile.xml -from `hdv/(\w+)\.toc` -to
9822 `proxyfiles/\1.avi` -scale 2.0}
9823 @end itemize
9825 The project XML file is not a perfectly valid XML file.  Thus after each
9826 Cinelerra "Save", some problem can occur.  Sometimes the tags are not closed,
9827 <TAG> is not followed by </TAG>.  This must be corrected manually.
9829 ACODEC contains some \001 characters.  Edit the file manually or use the
9830 following command:@*
9831 @command{cat temp001.xml| tr -d `\001` > /tmp/1 ; mv /tmp/1 temp001.xml}
9833 @c cincvdoc_node_number_348
9834 @node Rendering the HDV project
9835 @subsection Rendering the HDV project
9836 @cindex HDV 1080i editing, rendering the project
9838 HDV files can be rendered to an YUV4MPEG stream and then encoded to MPEG2 using
9839 a modified Mjpegtools binary.
9840 @command{mpeg2enc -verbose 0 -aspect 3 -format 3 -frame-rate 3 -video-bitrate
9841 25000 -nonvideo-bitrate 384 -force-b-b-p -video-buffer 448 -video-norm n
9842 -keep-hf -no-constraints -sequence-header-every-gop -min-gop-size 6
9843 -max-gop-size 6 -o %}
9845 Render the sound as an AC3 file, and multiplex both the video and the audio
9846 with mplex.
9848 @c cincvdoc_node_number_349
9849 @node Other issues
9850 @subsection Other issues
9851 @cindex HDV 1080i editing, other issues
9853 There are some problems with GOP cache in Cinelerra 2.1 which were not in the
9854 2.0 version. Many MPEG2 or MPEG4 files can not be played properly.  The HDV
9855 MPEG-2 playback is also affected.  Here is a quick solution to disable GOP
9856 caching.
9858 In @file{libmpeg3/video/seek.c}, at line #357, replace:
9860 @verbatim
9861 mpeg3video_drop_frames(video, frame_number - video->framenum, 1);
9862 @end verbatim
9864 @verbatim
9865 mpeg3video_drop_frames(video, frame_number - video->framenum, 0);
9866 @end verbatim
9868 When playing MJPEG files, the dissolve transistion does not work properly in
9869 RGBA or YUVA modes but it works fine in RGB or YUV.
9871 @c cincvdoc_node_number_350
9872 @node Adding subtitles
9873 @section Adding subtitles
9874 @cindex Subtitles, adding
9876 There are two methods available for adding subtitles in a video:
9877 @itemize @bullet
9878 @item Use Cinelerra's Titler effect.  That task is long and fastidious.
9879 Moreover, the subtitles are actually incrusted into the image.  It is not be
9880 possible to display the rendered video without subtitles.  If you want your
9881 video to be available with subtitles in several languages, you have to render
9882 it several times.  @xref{Title}, for information about Cinelerra's titler.
9883 @item Add the subtitles with a subtitles editor after having rendered the
9884 video.
9885 @end itemize
9887 The second method is the one to use if you want your video to be available with
9888 subtitles in multiple languages.  If you want to produce a DVD, that method is
9889 also the only one which is compatible with dvdauthor subtitles feature.  If you
9890 plan to distribute your video over the internet, one video file and several
9891 subtitles files is smaller than several video files, one for each language.
9893 Subtitles text files can be displayed by any decent video player.  With mplayer
9894 one can use the following syntax:@*
9895 @command{mplayer -sub <the_subtitles_text_file> <the_video_file>}
9897 A subtitle file is a simple plain text file, which contains the text and the
9898 time or frame number where each subtitle should be displayed on the screen.
9900 There are a lot of subtitles editor available on Linux.  However, most of them
9901 are fine for easing @b{translation} of subtitles, but are not appropriate to
9902 actually @b{add} and @b{synchronize} new subtitles on a video.  Since video
9903 creation is what most of us focus on, the task we are mostly interested in is
9904 @b{creating} subtitles for a video.
9906 We highly recommend you @b{Subtitleeditor}, which is available here:@*
9907 @uref{http://kitone.free.fr/subtitleeditor}
9909 @center @image{manual_images_en/subtitleeditor,100mm}
9910 @center @b{Subtitleeditor}
9912 Subtitleeditor has the huge advantage of displaying the audio waveform.  This
9913 feature is really important to precisely synchronize subtitles and talks.  Keep
9914 in mind the synchronization would be lost if you edit your video after having
9915 added the subtitles.  Adding subtitles should be done after the video edition
9916 is finished.
9918 Once the subtitle text file is created, you can:
9919 @itemize @bullet
9920 @item Distribute it with your video. People will have to load the appropriate
9921 subtitle file in their video player to actually see the subtitles.
9922 @item Use it with dvdauthor, to add the subtitles in a DVD.  Read dvdauthor's
9923 documentation for more information.
9924 @item Incrust the subtitles into the video using mencoder.  This command line
9925 is an example.  Adapt the options to your needs:@*
9926 @command{mencoder -sub <your_subtitle_file> <video_file_without_subtitles> -ovc lavc
9927 -lavcopts vcodec=mpeg4:vhq:vbitrate=1000 -oac mp3lame -lameopts br=256:vol=1
9928 -ffourcc DIVX -o <converted_video.avi>}
9929 @end itemize
9931 @c cincvdoc_node_number_293
9932 @node Troubleshooting
9933 @chapter Troubleshooting
9934 @cindex Troubleshooting
9936 @menu
9937 * Reporting bugs::
9938 * Playback does not stop::
9939 * Buz driver crashes::
9940 * Dragging edit boundaries does not work::
9941 * Locking up when loading files::
9942 * Synchronization lost while recording::
9943 * Applying gamma followed by blur does not work::
9944 * Copy/Paste of track selections does not work in the timeline::
9945 * Cinelerra often crashes::
9946 * Theme Blond not found error::
9947 @end menu
9949 @c cincvdoc_node_number_294
9950 @node Reporting bugs
9951 @section Reporting bugs
9952 @cindex Reporting bugs
9953 @cindex Bugs, reporting
9955 When you notice a bug, the first thing to do is to go to
9956 @uref{http://bugs.cinelerra.org} and check if it has not been already reported.
9957 If there is no bug report for the bug you noticed, you can file a bug report.
9958 Open an account on @uref{http://bugs.cinelerra.org} if you do not have one.
9959 Then, file the bug report, including the following information:
9961 @itemize @bullet
9962 @item Revision number of Cinelerra CV@.  Example: r959
9964 @item Distribution name and version.  Example: Debian SID
9966 @item Steps to replicate the bug.  That is very important since it really helps
9967 people trying to fix bugs.  Example:
9968 @enumerate 1
9969 @item launch cinelerra
9970 @item open the recording window
9971 @item click on OK
9972 @item Cinelerra crashes
9973 @end enumerate
9975 @item When Cinelerra CV crashes, a debugger output is welcome.  Run:@*
9976 @command{gdb cinelerra}@*
9977 @command{run}@*
9978 (You trigger the bug and Cinelerra CV crashes)@*
9979 @command{thread apply all bt}@*
9980 Then copy all of the information displayed into your bug report.
9981 @end itemize
9983 Do not hesitate to attach any file which you think could be useful, such as a
9984 screenshot for example.  The gdb output is more useful when Cinelerra is
9985 compiled with debugging symbols.  @xref{Compiling with debugging symbols}, for
9986 compilation instructions.
9988 Moreover, if the bug you noticed concerns a problem loading a specific file
9989 into Cinelerra-CV, uploading a small sample of such a file on the internet is
9990 appreciated.  That would allow people fixing bugs to load that file themselves
9991 in Cinelerra and look at what happens.
9993 @c cincvdoc_node_number_351
9994 @node Playback does not stop
9995 @section Playback does not stop
9996 @cindex Playback does not stop
9998 If playback of audio tracks doesn't stop on the timeline and keeps going after
9999 the end of the video, go to @b{Settings -> Preferences -> Playback} and click
10000 on the @b{Stop playback locks up} checkbox.  This checkbox is shown only if you
10001 set ALSA as audio driver.
10003 @c cincvdoc_node_number_295
10004 @node Buz driver crashes
10005 @section Buz driver crashes
10006 @cindex Buz, driver crashes
10008 First, Zoran capture boards must be accessed using the @b{Buz} video driver in
10009 @b{Preferences->Recording} and @b{Preferences->Playback}.  Some performance
10010 tweeks are available in another section.  @xref{Improving performance}.
10012 Once tweeked, the Buz driver seems to crash if the number of recording buffers
10013 is too high.  Make sure @b{Preferences->Recording->Frames to buffer in device}
10014 is below 10.
10016 @c cincvdoc_node_number_296
10017 @node Dragging edit boundaries does not work
10018 @section Dragging edit boundaries does not work
10019 @cindex Dragging edit boundaries does not work
10020 @cindex Edit boundaries, dragging does not work
10022 Sometimes there will be two edits really close together.  The edit boundary
10023 selected for dragging may be next to the indended edit if those edits are too
10024 small to see at
10025 the current zoom level.  Zoom in horizontally.
10027 If you think you can't drag all the edits starting at the same point on armed
10028 tracks, zoom in horizontally to check if they really start at the same point.
10029 Sometime vertical sychronization of edits can be lost just because you did not
10030 set properly project attributes (e.g. PAL/NTSC).  Check @b{Settings -> Format}. 
10032 @c cincvdoc_node_number_297
10033 @node Locking up when loading files
10034 @section Locking up when loading files
10035 @cindex Locking up when loading files
10036 @cindex Files, locking up when loading
10038 The most common reason loading files locks up Cinelerra is because the codec is not
10039 supported.  Another reason is because Cinelerra is building picons for the
10040 Resources window.  If you load a large number of images, it needs to decompress
10041 every single image to build a picon.  Go into
10042 @b{settings->preferences->interface} and disable @b{Use thumbnails in resource
10043 window} to skip this process.
10045 @c cincvdoc_node_number_298
10046 @node Synchronization lost while recording
10047 @section Synchronization lost while recording
10048 @cindex Synchronization lost while recording
10049 @cindex Recording, synchronization
10051 If the rate at which frames are captured during recording is much lower than the framerate of the
10052 source, the video will accumulate in the recording buffers over time and the
10053 audio and video will become well out of sync.  Decrease the @b{number of frames to
10054 buffer in the device} in @b{preferences->recording} so the excess frames are
10055 dropped instead of buffered.
10057 @c cincvdoc_node_number_299
10058 @node Applying gamma followed by blur does not work
10059 @section Applying gamma followed by blur does not work
10061 The gamma effect uses the pow function while the blur effect uses a number of
10062 exp functions in the math library.  For some reason, using the pow function
10063 breaks later calls to the exp functions in the math library.  You need to apply
10064 gamma after blur to get it to work.
10066 @c cincvdoc_node_number_300
10067 @node Copy/Paste of track selections does not work in the timeline
10068 @section Copy/Paste of track selections does not work in the timeline
10069 @cindex Copy/Paste of track selections does not work in the timeline
10071 If you are running the KDE Klipper application, either disable it, or
10072 right-click its taskbar icon, select @b{Configure Klipper} and ensure
10073 @b{Prevent empty clipboard} is not selected.
10075 @c cincvdoc_node_number_301
10076 @node Cinelerra often crashes
10077 @section Cinelerra often crashes
10078 @cindex Crashes
10080 Do a clean install.  Be sure that you do not have libraries from previous
10081 installations.  Delete your @file{$HOME/.bcast/} directory too.@*
10082 @command{rm -f /usr/local/lib/libguicast*}@*
10083 @command{rm -f /usr/lib/libguicast*}@*
10084 @command{rm -f /usr/local/lib/libquicktimehv*}@*
10085 @command{rm -f /usr/lib/libquicktimehv*}@*
10086 @command{rm -f /usr/local/lib/libmpeg3hv*}@*
10087 @command{rm -f /usr/lib/libmpeg3hv*}
10089 @c cincvdoc_node_number_302
10090 @node Theme Blond not found error
10091 @section Theme Blond not found error
10092 @cindex Theme Blond not found error
10094 If the following error message appears: @command{Aborted, MWindow::init_theme:
10095 Theme Blond not found}, then:
10096 @itemize @bullet
10097 @item You should check for the file @file{defaulttheme.*} in
10098 @file{/usr/lib/cinelerra} or @file{/usr/local/lib/cinelerra}.  If it does not
10099 exist, you need to install the plugins again.
10100 @item Try to delete the @file{$HOME/.bcast/} directory
10101 @item Look into @file{$HOME/.bcast/Cinelerra_rc} and find THEME, it should be
10102 => THEME Blond
10103 @end itemize
10105 @c cincvdoc_node_number_303
10106 @node Plugin authoring
10107 @chapter Plugin authoring
10108 @cindex Plugin authoring
10110 The plugin API in Cinelerra dates back to 1997, before the LADSPA and before
10111 VST became popular.  It is fundamentally the same as it was in 1997, with minor
10112 modifications to handle keyframes and GUI feedback.  The GUI is not abstracted
10113 from the programmer.  This allows the programmer to use whatever toolkit they
10114 want and allows more flexibility in appearance but it costs more.
10116 There are several types of plugins, each with a common procedure of
10117 implementation and specific changes for that particular type.  The easiest way
10118 to implement a plugin is to take the simplest existing one out of the group and
10119 rename the symbols.
10121 @menu
10122 * Introducing the pull method:: The current paradigm for plugin writing
10123 * Common plugin functions:: What all effects have to do.
10124 * Realtime plugins:: What realtime effects have to do.
10125 * Nonrealtime plugins:: What rendered effects have to do.
10126 * Audio plugins:: What audio effects have to do.
10127 * Video plugins:: What video effects have to do.
10128 * Transition plugins:: What transitions have to do.
10129 * Plugin GUI's which update during playback:: How to use currently playing data to draw the GUI.
10130 * Using OpenGL:: How to use hardware to speed up operations.
10131 * Plugin queries:: How plugins get information about the data to be processed.
10132 @end menu
10134 @c cincvdoc_node_number_304
10135 @node Introducing the pull method
10136 @section Introducing the pull method
10137 @cindex Pull method, introducing the
10139 Originally plugins were designed with the push method.  The push method is
10140 intuitive and simple.  A source pushes data to a plugin, the plugin does math
10141 operations on it, and the plugin pushes it to a destination.  For 6 years this
10142 was the way all realtime plugins were driven internally but it did not allow you
10143 to reduce the rate of playback in realtime.  While plugins can still be
10144 designed as if they are pushing data, this is not the way they are processed
10145 internally anymore.
10147 The latest evolution in Cinelerra's plugin design is the pull method.  The
10148 rendering pipeline starts at the final output and the final steps in the
10149 rendering pipeline are reading the data from disk.  Every step in the rendering
10150 chain involves requesting data from the previous step.  When the rendering
10151 pipleline eventually requests data from a plugin chain, each plugin requests
10152 data from the plugin before it.
10154 This is less intuitive than the push method but is much more powerful.
10155 Realtime plugins written using the pull method can not only change the rate data is
10156 presented to the viewer but also the direction of playback.  The pull method also allows
10157 plugins to take in data at a higher rate than they send it out.
10159 To get the power of rate independence, the pull method requires plugins to know
10160 more about the data than they needed to under the push method.  Plugins need to
10161 know what rate the project is at, what rate their output is supposed to be at
10162 and what rate their input is supposed to be at.  These different data rates
10163 have to be correlated for a plugin to configure itself properly.
10165 Keyframes for a plugin are stored relative to the project frame rate.  Queries
10166 from a plugin for the current playback position are given relative to the
10167 project frame rate.  If the plugin's output was requested to be at twice the
10168 project frame rate, the positions need to be converted to the project rate for
10169 keyframes to match up.  Two classes of data rates were created to handle this
10170 problem.
10172 Rate conversions are done in terms of the @b{project rate} and the @b{requested
10173 rate}.  The project rate is identical for all plugins.  It is determined by the
10174 @b{settings->format} window.  The requested rate is determined by the
10175 downstream plugin requesting data from the current plugin.  The requested rate
10176 is arbitrary.  Exactly how to use these rates is described below.
10178 @c cincvdoc_node_number_305
10179 @node Common plugin functions
10180 @section Common plugin functions
10181 @cindex Common plugin functions
10183 All plugins inherit from a derivative of PluginClient.  This PluginClient
10184 derivative implements most of the required methods in PluginClient, but users
10185 must still define methods for PluginClient.  The most commonly used methods are
10186 predefined in macros to reduce the typing yet still allow flexibility.
10188 The files they include depend on the plugin type.  Audio plugins include
10189 @file{pluginaclient.h} and video plugins include @file{pluginvclient.h}.  They
10190 inherit @b{PluginAClient} and @b{PluginVClient} respectively.
10192 Cinelerra instantiates all plugins at least twice when they are used in a
10193 movie.  One instance is the GUI@.  The other instance is the signal processor.
10194 User input, through a complicated sequence, is propogated from the GUI instance
10195 to the signal processor instance.  If the signal processor wants to alter the
10196 GUI, it propogates data back to the GUI instance.  There are utility functions
10197 for doing all this.
10199 All plugins define at least three objects:
10201 @itemize @bullet
10202 @item @b{Processing object}@*
10203 Contains pointers to all the other objects and performs the signal processing.
10204 This object contains a number of queries to identify itself and is the object
10205 you register to register the plugin.
10206 @item @b{User interface object}@*
10207 This is defined according to the programmer's discretion.  It can either use
10208 Cinelerra's toolkit or another toolkit.  It shows data on the screen and
10209 collects parameters from the user.@*
10210 Using Cinelerra's toolkit, the only user interface object a developer needs to
10211 worry about is the Window.  The window has pointers to a number of widgets, a
10212 few initialization methods, and a back pointer to the plugin's processing
10213 object.  The documentation refers to the usage of Cinelerra's toolkit.@*
10214 Depending on the user interface toolkit, a user interface thread may be created
10215 to run the user interface asynchronous of everything else.  Synchronizing the
10216 user interface to changes in the plugin's configuration is the most complicated
10217 aspect of the plugin, so the user interface thread and object are heavily
10218 supported by macros if you use Cinelerra's toolkit.
10219 @item @b{Configuration object}@*
10220 This stores the user parameters and always needs interpolation, copying, and
10221 comparison functions.  Macros for the plugin client automatically call
10222 configuration methods to interpolate keyframes.
10223 @end itemize
10225 @menu
10226 * The processing object::
10227 * The configuration object::
10228 * The user interface object::
10229 @end menu
10231 @c cincvdoc_node_number_306
10232 @node The processing object
10233 @subsection The processing object
10234 @cindex The processing object
10236 Load up a simple plugin like gain to see what this object looks like.  The
10237 processing object should inherit from the intended PluginClient derivative.
10238 Its constructor should take a PluginServer argument.
10239 @verbatim
10240 MyPlugin(PluginServer *server);
10241 @end verbatim
10243 In the implementation, the plugin must contain a registration line with the
10244 name of the processing object like
10245 @verbatim
10246 REGISTER_PLUGIN(MyPlugin)
10247 @end verbatim
10249 The constructor should contain
10250 @verbatim
10251 PLUGIN_CONSTRUCTOR_MACRO
10252 @end verbatim
10253 to initialize the most common variables.
10255 The processing object should have a destructor containing
10256 @verbatim
10257 PLUGIN_DESTRUCTOR_MACRO
10258 @end verbatim
10259 to delete the most common variables.
10261 Another function which is useful but not mandatory is
10262 @verbatim
10263 int is_multichannel();
10264 @end verbatim
10265 It should return 1 if one instance of the plugin handles multiple tracks
10266 simultaneously or 0 if one instance of the plugin only handles one track.  The
10267 default is 0 if it is omitted.
10269 Multichannel plugins in their processing function should refer to a function
10270 called @b{PluginClient::get_total_buffers()} to determine the number of
10271 channels.
10273 To simplify the implementation of realtime plugins, a macro for commonly used
10274 members has been created for the class header, taking the configuration object
10275 and user interface thread object as arguments.  The macro definitions apply
10276 mainly to realtime plugins and are not useful in nonrealtime plugins.
10277 Fortunately, nonrealtime plugins are simpler.
10278 @verbatim
10279 PLUGIN_CLASS_MEMBERS(config_name, thread_name)
10280 @end verbatim
10282 The commonly used members in PLUGIN_CLASS_MEMBERS are described below.
10284 @b{int load_configuration();}@*
10285 Loads the configuration based on surrounding keyframes and current position.@*
10286 The class definition for load_configuration should contain
10287 @verbatim
10288 LOAD_CONFIGURATION_MACRO(plugin_class, config_class)
10289 @end verbatim
10290 to implement the default behavior for load_configuration.  This stores whatever
10291 the current configuration is inside the plugin's configuration object and
10292 returns 1 if the new configuration differs from the previous configuration.
10293 The return value of load_configuration is used by another commonly used
10294 function, update_gui to determine if the GUI really needs to be updated.@*
10295 The plugin's configuration object is always called @b{config} inside
10296 PLUGIN_CLASS_MEMBERS@.
10298 @b{VFrame* new_picon();}@*
10299 Creates a picon for display in the resource window.  Use
10300 @verbatim
10301 #include "picon_png.h"
10302 NEW_PICON_MACRO(plugin_class)
10303 @end verbatim
10304 to implement new_picon.  In addition, the user should create a
10305 @file{picon_png.h} header file from a PNG image using @command{pngtoh}.
10306 @command{pngtoh} is compiled in the @file{guicast/ARCH} directory.@*
10307 The source PNG image should be called @file{picon.png} and can be any format
10308 supported by PNG@.
10310 @b{char* plugin_title();}@*
10311 Returns a text string identifying the plugin in the resource window.  The
10312 string has to be unique.
10314 @b{void update_gui();}@*
10315 Should first load the configuration, test for a return of 1, and then redraw
10316 the GUI with the new parameters.  All the plugins using GuiCast have a format
10317 like
10318 @verbatim
10319     void MyPlugin::update_gui()
10320     {
10321         if(thread)
10322         {
10323         if(load_configuration())
10324         {
10325             thread->window->lock_window();
10326             // update widgets here
10327             thread->window->unlock_window();
10328         }
10329         }
10330     }
10331 @end verbatim
10332 to handle concurrency and conditions of no GUI@.
10334 @b{int show_gui();}@*
10335 Instantiate the GUI and switch the plugin to GUI mode.  This is implemented
10336 with
10337 @verbatim
10338 SHOW_GUI_MACRO(plugin_class, thread_class)
10339 @end verbatim
10341 @b{int set_string();}@*
10342 Changes the title of the GUI window to a certain string.  This is implemented
10343 with
10344 @verbatim
10345 SET_STRING_MACRO(plugin_class)
10346 @end verbatim
10348 @b{void raise_window();}@*
10349 Raises the GUI window to the top of the stack.  This is implemented with
10350 @verbatim
10351 RAISE_WINDOW_MACRO(plugin_class)
10352 @end verbatim
10354 Important functions that the processing object must define are the functions which
10355 load and save configuration data from keyframes.  These functions are called by
10356 the macros so all you need to worry about is accessing the keyframe data.
10357 @verbatim
10358 void save_data(KeyFrame *keyframe);
10359 void read_data(KeyFrame *keyframe);
10360 @end verbatim
10362 The read data functions are only used in realtime plugins.  The read data
10363 functions translate the plugin configuration between the KeyFrame argument and
10364 the configuration object for the plugin.  The keyframes are stored on the
10365 timeline and can change for every project.
10367 Use an object called @b{FileXML} to do the translation and some specific
10368 commands to get the data out of the KeyFrame argument.  See any existing plugin
10369 to see the usage of KeyFrame and FileXML.
10370 @verbatim
10371 int load_defaults();
10372 int save_defaults();
10373 @end verbatim
10375 The load defaults functions are used in realtime and non-realtime plugins.  The
10376 load defaults functions translate the plugin configuration between a BC_Hash
10377 object and the plugin's configuration.  The BC_Hash object stores
10378 configurations in a discrete file on disk for each plugin but does not isolate
10379 different configurations for different projects.
10381 The function overriding @b{load_defaults} also needs to create the BC_Hash
10382 object.  See any existing plugin to see the usage of BC_Hash.
10384 Other standard members may be defined in the processing object, depending on
10385 the plugin type.
10387 @c cincvdoc_node_number_307
10388 @node The configuration object
10389 @subsection The configuration object
10390 @cindex Configuration object
10392 The configuration object is critical for GUI updates, signal processing, and
10393 default settings in realtime plugins.  Be aware it is not used in nonrealtime
10394 plugins.  The configuration object inherits from nothing and has no
10395 dependancies.  It is merely a class containing three functions and variables
10396 specific to the plugin's parameters.
10398 Usually the configuration object starts with the name of the plugin followed by
10399 Config.
10400 @verbatim
10401     class MyPluginConfig
10402     {
10403     public:
10404         MyPluginConfig();
10405 @end verbatim
10407 Following the name of the configuration class, we put in three required
10408 functions and the configuration variables.
10409 @verbatim
10410         int equivalent(MyPluginConfig &that);
10411         void copy_from(MyPluginConfig &that);
10412         void interpolate(MyPluginConfig &prev,
10413         MyPluginConfig &next,
10414         int64_t prev_position,
10415         int64_t next_position,
10416         int64_t current_position);
10417         float parameter1;
10418         float parameter2;
10419         int parameter3;
10420     };
10421 @end verbatim
10423 Now you must define the three functions.  @b{Equivalent} is called by
10424 LOAD_CONFIGURATION_MACRO to determine if the local configuration parameters are
10425 identical to the configuration parameters in the arguement.  If equivalent
10426 returns 0, the LOAD_CONFIGURATION_MACRO causes the GUI to redraw.  If
10427 equivalent returns 1, the LOAD_CONFIGURATION_MACRO does not redraw the GUI@.
10429 Then there is @b{copy_from} which transfers the configuration values from the
10430 argument to the local variables.  This is once again used in
10431 LOAD_CONFIGURATION_MACRO to store configurations in temporaries.  Once
10432 LOAD_CONFIGURATION_MACRO has replicated the configuration, it loads a second
10433 configuration.  Then it interpolates the two configurations to get the current
10434 configuration.  The interpolation function performs the interpolation and
10435 stores the result in the local variables.
10437 Normally the interpolate function calculates a previous and next fraction,
10438 using the arguments.
10439 @verbatim
10440     void MyPluginConfig::interpolate(MyPluginConfig &prev,
10441         MyPluginConfig &next,
10442         int64_t prev_position,
10443         int64_t next_position,
10444         int64_t current_position
10445     {
10446         double next_scale =
10447         (double)(current_position - prev_position)
10448         / (next_position - prev_position);
10449         double prev_scale =
10450         (double)(next_position - current_position) /
10451         (next_position - prev_position);
10452 @end verbatim
10454 Then the fractions are applied to the previous and next configuration variables
10455 to yield the current values.
10456 @verbatim
10457         this->parameter1 =
10458         (float)(prev.parameter1 * prev_scale
10459         + next.parameter1 * next_scale);
10460         this->parameter2 =
10461         (float)(prev.parameter2 * prev_scale
10462         + next.parameter2 * next_scale);
10463         this->parameter3 =
10464         (int)(prev.parameter3 * prev_scale
10465         + next.parameter3 * next_scale);
10466     }
10467 @end verbatim
10469 Alternatively you can copy the values from the previous configuration argument
10470 if no interpolation is desired.
10472 This usage of the configuration object is the same in audio and video plugins.
10473 In video playback, the interpolation function is called for every frame,
10474 yielding smooth interpolation.  In audio playback, the interpolation function
10475 is called only once for every console fragment and once every time the
10476 insertion point moves.  This is good enough for updating the GUI while
10477 selecting regions on the timeline but it may not be accurate enough for really
10478 smooth rendering of the effect.
10480 For really smooth rendering of audio, you can still use load_configuration when
10481 updating the GUI@.  For process_buffer; however, ignore load_configuration and
10482 write your own interpolation routine which loads all the keyframes in a console
10483 fragment and interpolates every sample.  This would be really slow and hard to
10484 debug, yielding improvement which may not be audible.  Then of course, every
10485 country has its own wierdos.
10487 An easier way to get smoother interpolation is to reduce the console fragment
10488 to 1 sample.  This would have to be rendered and played back with the console
10489 fragment back over 2048 of course.  The GNU/Linux sound drivers can not play
10490 fragments of 1 sample.
10492 @c cincvdoc_node_number_308
10493 @node The user interface object
10494 @subsection The user interface object
10495 @cindex User interface object
10497 The user interface object at the very least consists of a pointer to a window
10498 and pointers to all the widgets in the window.  Using Cinelerra's toolkit, it
10499 consists of a @b{BCWindow} derivative and a @b{Thread} derivative.  The Thread
10500 derivative is declared in the plugin header using
10501 @verbatim
10502 PLUGIN_THREAD_HEADER(plugin_class, thread_class, window_class)
10503 @end verbatim
10505 Then it is defined using
10506 @verbatim
10507 PLUGIN_THREAD_OBJECT(plugin_class, thread_class, window_class)
10508 @end verbatim
10510 This, in combination with the SHOW_GUI macro does all the work in instantiating
10511 the Window.  This two-class system is used in realtime plugins but not in
10512 nonrealtime plugins.  Nonrealtime plugins create and destroy their GUI in their
10513 @b{get_parameters} function and there is no need for a Thread.
10515 Now the window class must be declared in the plugin header.  It is easiest to
10516 implement the window by copying an existing plugin and renaming the symbols.
10517 The following is an outline of what happens.  The plugin header must declare
10518 the window's constructor using the appropriate arguments.
10519 @verbatim
10520     #include "guicast.h"
10521     class MyPluginWindow : public BC_Window
10522     {
10523     public:
10524         MyPluginWindow(MyPluginMain *plugin, int x, int y);
10525 @end verbatim
10527 This becomes a window on the screen, positioned at x and y.
10529 It needs two methods
10530 @verbatim
10531 int create_objects();
10532 int close_event();
10533 @end verbatim
10534 and a back pointer to the plugin
10535 @verbatim
10536 MyPlugin *plugin;
10537 @end verbatim
10539 The constructor's definition should contain extents and flags causing the
10540 window to be hidden when first created.  The create_objects member puts widgets
10541 in the window according to GuiCast's syntax.  A pointer to each widget which
10542 you want to synchronize to a configuration parameter is stored in the window
10543 class.  These are updated in the @b{update_gui} function you earlier defined
10544 for the plugin.  The widgets are usually derivatives of a GuiCast widget and
10545 they override functions in GuiCast to handle events.  Finally create_objects
10546 calls
10547 @verbatim
10548 show_window();
10549 flush();
10550 @end verbatim
10551 to make the window appear all at once.
10553 The close_event member should be implemented using
10554 @verbatim
10555 WINDOW_CLOSE_EVENT(window_class)
10556 @end verbatim
10558 Every widget in the GUI needs to detect when its value changes.  In GuiCast the
10559 @b{handle_event} method is called whenever the value changes.  In
10560 @b{handle_event}, the widget then needs to call
10561 @b{plugin->send_configure_change()} to propogate the change to any copies of
10562 the plugin which are processing data.
10564 @c cincvdoc_node_number_309
10565 @node Realtime plugins
10566 @section Realtime plugins
10567 @cindex Realtime plugins
10569 Realtime plugins should use PLUGIN_CLASS_MEMBERS to define the basic set of
10570 members in their headers.  All realtime plugins must define an @b{int
10571 is_realtime()}
10573 member returning 1.  This causes a number of methods to be called during live
10574 playback and the plugin to be usable on the timeline.
10576 Realtime plugins must override a member called @b{process_buffer}
10578 This function takes different arguments depending on if the plugin handles
10579 video or audio.  See an existing plugin to find out which usage applies.
10581 The main features of the process_buffer function are a buffer to store the
10582 output, the starting position of the output, and the requested output rate.
10583 For audio, there is also a size argument for the number of samples.
10585 The starting position of the output buffer is the lowest numbered sample on the
10586 timeline if playback is forward and the highest numbered sample on the timeline
10587 if playback is reverse.  The direction of playback is determined by one of the
10588 plugin queries described below.
10590 The position and size arguments are all relative to the frame rate and sample
10591 rate passed to process_buffer.  This is the requested data rate and may not be
10592 the same as the project data rate.
10594 The process_realtime function should start by calling @b{load_configuration}.
10595 The LOAD_CONFIGURATION_MACRO returns 1 if the configuration changed.
10597 After determining the plugin's configuration, input media has to be loaded for
10598 processing.  Call:
10599 @verbatim
10600     read_frame(VFrame *buffer,
10601         int channel,
10602         int64_t start_position,
10603         double frame_rate)
10605     read_samples(double *buffer,
10606         int channel,
10607         int sample_rate,
10608         int64_t start_position,
10609         int64_t len)
10610 @end verbatim
10612 to request input data from the object which comes before this plugin.  The read
10613 function needs a buffer to store the input data in.  This can either be a
10614 temporary you create in the plugin or the output buffer supplied to
10615 process_buffer if you do not need a temporary.
10617 It also needs a set of position arguments to determine when you want to read
10618 the data from.  The start position, rate, and len passed to a read function
10619 need not be the same as the values recieved by the process_buffer function.
10620 This way plugins can read data at a different rate than they output data.
10622 The channel argument is only meaningful if this is a multichannel plugin.  They
10623 need to read data for each track in the get_total_buffers() value and process
10624 all the tracks.  Single channel plugins should pass 0 for channel.
10626 Additional members are implemented to maintain configuration in realtime
10627 plugins.  Some of these are also needed in nonrealtime plugins.
10629 @itemize @bullet
10630 @item @b{void read_data(KeyFrame *keyframe);}@*
10631 Loads data from a keyframe into the plugin's configuration.  Inside the
10632 keyframe is an XML string.  It is most easily parsed by creating a @b{FileXML}
10633 object.  See an existing plugin to see how the read_data function is
10634 implemented.@*
10635 Read data loads data out of the XML object and stores values in the plugin's
10636 configuration object.  Since configuration objects vary from plugin to plugin,
10637 these functions can not be automated.
10639 @item @b{void save_data(KeyFrame *keyframe);}@*
10640 Saves data from the plugin's configuration to a keyframe.  Inside the keyframe
10641 you will put an XML string which is normally created by a FileXML object.  See an
10642 existing plugin to see how the save_data function is implemented.@*
10643 Save data saves data from the plugin's configuration object into the XML
10644 object.
10646 @item @b{int load_defaults();}@*
10647 Another way the plugin gets parameters is from a defaults file.  The load and
10648 save defaults routines use a BC_Hash object to parse the defaults file.  The
10649 defaults object is created in @b{load_defaults} and destroyed in the plugin's
10650 destructor.  See an existing plugin to see how the BC_Hash object is used.
10652 @item @b{int save_defaults();}@*
10653 Saves the configuration in the defaults object.
10654 @end itemize
10656 @c cincvdoc_node_number_310
10657 @node Nonrealtime plugins
10658 @section Nonrealtime plugins
10659 @cindex Nonrealtime plugins
10661 Some references for non-realtime plugins are @b{Normalize} for audio and
10662 @b{Reframe} for video.
10664 Like realtime plugins, @b{load_defaults} and @b{save_defaults} must be
10665 implemented.  In nonrealtime plugins, these are not just used for default
10666 parameters but to transfer values from the user interface to the signal
10667 processor.  There does not need to be a configuration class in nonrealtime
10668 plugins.
10670 Unlike realtime plugins, the LOAD_CONFIGURATION_MACRO can not be used in the
10671 plugin header.  Instead, the following methods must be defined.
10673 The nonrealtime plugin should contain a pointer to a defaults object.
10674 @verbatim
10675 BC_Hash *defaults;
10676 @end verbatim
10677 It should also have a pointer to a MainProgressBar.
10678 @verbatim
10679 MainProgressBar *progress;
10680 @end verbatim
10682 The progress pointer allows nonrealtime plugins to display their progress in
10683 Cinelerra's main window.
10685 The constructor for a nonrealtime plugin cannot use PLUGIN_CONSTRUCTOR_MACRO
10686 but must call @b{load_defaults} directly.
10688 The destructor, likewise, must call @b{save_defaults} and @b{delete defaults}
10689 directly instead of PLUGIN_DESTRUCTOR_MACRO@.
10691 @itemize @bullet
10692 @item @b{VFrame* new_picon();}@*
10693 @b{char* plugin_title();}@*
10694 The usage of these is the same as realtime plugins.
10696 @item @b{int is_realtime();}@*
10697 This function must return 0 to indicate a nonrealtime plugin.
10699 @item @b{int get_parameters();}@*
10700 Here, the user should create a GUI, wait for the user to hit an OK button or a
10701 cancel button, and store the parameters in plugin variables.  This routine must
10702 return 0 for success and 1 for failure.  This way the user can cancel the
10703 effect from the GUI@.@*
10704 Unlike the realtime plugin, this GUI need not run asynchronously of the plugin.
10705 It should block the get_parameters function until the user selects OK or
10706 Cancel.
10708 @item @b{int load_defaults();}@*
10709 This should create a defaults object and load parameters from the defaults
10710 object into plugin variables.
10712 @item @b{int save_defaults();}@*
10713 This should save plugin variables to the defaults object.
10715 @item @b{int start_loop();}@*
10716 If @b{get_parameters} returned 0 for success, this is called once to give the
10717 plugin a chance to initialize processing.  The plugin should instantiate the
10718 progress object with a line like@*
10719 @code{progress = start_progress("MyPlugin progress...",}@*
10720 @code{PluginClient::get_total_len());}@*
10721 The usage of @b{start_progress} depends on whether the plugin is multichannel
10722 or single channel.  If it is multichannel you always call start_progress.  If
10723 it is single channel, you first need to know whether the progress bar has
10724 already started in another instance of the plugin.@*
10725 If @b{PluginClient::interactive} is 1, you need to start the progress bar.  If
10726 it is 0, the progress bar has already been started.@*
10727 The PluginClient defines @b{get_total_len()} and @b{get_source_start()} to
10728 describe the timeline range to be processed.  The units are either samples or
10729 frames and in the project rate.
10731 @item @b{int process_loop}@*
10732 This is called repeatedly until the timeline range is processed.  It has either
10733 a samples or frames buffer for output and a reference to write_length to store
10734 the number of samples processed.  If this is an audio plugin, the user needs to
10735 call @b{get_buffer_size()} to know how many samples the output buffer can hold.
10737 The plugin must use @b{read_samples} or @b{read_frame} to read the input.
10738 These functions are a bit different for a non realtime plugin than they are for
10739 a realtime plugin.@*
10740 They take a buffer and a position relative to the start of the timeline, in the
10741 timeline's rate.  Then you must process it and put the output in the buffer
10742 argument to process_loop.  write_length should contain the number of samples
10743 generated if it is audio.@*
10744 Finally, process_loop must test @b{PluginClient::interactive} and update the
10745 progress bar if it is 1.@*
10746 @code{progress->update(total_written);}@*
10747 returns 1 or 0 if the progress bar was cancelled.  If it is 1, process_loop
10748 should return 1 to indicate a cancellation.  In addition to progress bar
10749 cancellation, @b{process_loop} should return 1 when the entire timeline range
10750 is processed.
10752 @item @b{int stop_loop();}@*
10753 This is called after process_loop processes its last buffer.@*
10754 If PluginClient::is_interactive is 1, this should call @b{stop_progress} in the
10755 progress bar pointer and delete the pointer.  Then it should delete any objects
10756 it created for processing in @b{start_loop}.
10757 @end itemize
10759 @c cincvdoc_node_number_311
10760 @node Audio plugins
10761 @section Audio plugins
10762 @cindex Audio plugins
10764 The simplest audio plugin is Gain.  The processing object should include
10765 @file{pluginaclient.h} and inherit from @b{PluginAClient}.  Realtime audio
10766 plugins need to define
10767 @verbatim
10768     int process_buffer(int64_t size,
10769         double **buffer,
10770         int64_t start_position,
10771         int sample_rate);
10772 if it is multichannel or
10773     int process_buffer(int64_t size,
10774         double *buffer,
10775         int64_t start_position,
10776         int sample_rate);
10777 @end verbatim
10778 if it is single channel.  These should return 0 on success and 1 on failure.
10779 In the future, the return value may abort failed rendering.
10781 The processing function needs to request input samples with
10782 @verbatim
10783     int read_samples(double *buffer,
10784         int channel,
10785         int sample_rate,
10786         int64_t start_position,
10787         int64_t len);
10788 @end verbatim
10789 It always returns 0.  The user may specify any desired sample rate and start
10790 position.
10792 Nonrealtime audio plugins need to define
10793 @verbatim
10794 int process_loop(double *buffer, int64_t &write_length);
10795 for single channel or
10796 int process_loop(double **buffers, int64_t &write_length);
10797 @end verbatim
10798 for multi channel.  Non realtime plugins use a different set of read_samples
10799 functions to request input data.  These are fixed to the project sample rate.
10801 @c cincvdoc_node_number_312
10802 @node Video plugins
10803 @section Video plugins
10804 @cindex Video plugins
10806 The simplest video plugin is Flip.  The processing object should include
10807 @file{pluginvclient.h} and inherit from @b{PluginVClient}.  Realtime video
10808 plugins need to define
10809 @verbatim
10810     int process_buffer(VFrame **frame,
10811         int64_t start_position,
10812         double frame_rate);
10813 @end verbatim
10814 if it is multichannel or
10815 @verbatim
10816     int process_buffer(VFrame *frame,
10817         int64_t start_position,
10818         double frame_rate);
10819 @end verbatim
10820 if it is single channel.
10822 The nonrealtime video plugins need to define
10823 @verbatim
10824 int process_loop(VFrame *buffer);
10825 for single channel or
10826 int process_loop(VFrame **buffers);
10827 @end verbatim
10828 for multi channel.  The amount of frames generated in a single process_loop is
10829 always assumed to be 1, hence the lack of a write_length argument.  Returning 0
10830 causes the rendering to continue.  Returning 1 causes the rendering to abort.
10832 A set of read_frame functions exist for requesting input frames in non-realtime
10833 video plugins.  These are fixed to the project frame rate.
10835 @c cincvdoc_node_number_313
10836 @node Transition plugins
10837 @section Transition plugins
10838 @cindex Transition plugins
10840 The simplest video transition is @b{wipe} and the simplest audio transition is
10841 @b{crossfade}.  These use a subset of the default class members of realtime
10842 plugins, but so far no analogue to PLUGIN_CLASS_MEMBERS has been done for
10843 transitions.
10845 The processing object for audio transitions still inherits from PluginAClient
10846 and for video transitions it still inherits from PluginVClient.
10848 Transitions may or may not have a GUI@.  If they have a GUI, they must also
10849 manage a thread like realtime plugins.  Do this with the same
10850 PLUGIN_THREAD_OBJECT and PLUGIN_THREAD_HEADER macros as realtime plugins.
10851 Since there is only one keyframe in a transition, you do not need to worry about
10852 updating the GUI from the processing object like you do in a realtime plugin.
10854 If the transition has a GUI, you can use PLUGIN_CONSTRUCTOR_MACRO and
10855 PLUGIN_DESTRUCTOR_MACRO to initialize the processing object.  You will also need
10856 a BC_Hash object and a Thread object for these macros.
10858 Since the GUI is optional, overwrite a function called @b{uses_gui()} to
10859 signifiy whether or not the transition has a GUI@.  Return 1 if it does and 0 if
10860 it does not.
10862 Transitions need a @b{load_defaults} and @b{save_defaults} function so the
10863 first time they are dropped on the timeline they will have useful settings.
10865 A @b{read_data} and @b{save_data} function takes over after insertion to access
10866 data specific to each instance of the transition.
10868 The most important difference between transitions and realtime plugins is the
10869 addition of an @b{is_transition} method to the processing object.
10870 @b{is_transition} should return 1 to signify the plugin is a transition.
10872 Transitions process data in a @b{process_realtime} function.
10873 @verbatim
10874     int process_realtime(VFrame *input,
10875         VFrame *output);
10876     int process_realtime(int64_t size,
10877         double *input_ptr,
10878         double *output_ptr);
10879 @end verbatim
10880 The input argument to process_realtime is the data for the next edit.  The
10881 output argument to process_realtime is the data for the previous edit.
10883 Routines exist for determining where you are relative to the transition's start
10884 and end.
10886 @itemize @bullet
10887 @item
10888 @b{PluginClient::get_source_position()} - returns the current position since
10889 the start of the transition of the lowest sample in the buffers.
10891 @item
10892 @b{PluginClient::get_total_len()} - returns the integer length of the
10893 transition.  The units are either samples or frames, in the data rate requested
10894 by the first plugin.
10895 @end itemize
10897 Users should divide the source position by total length to get the fraction of
10898 the transition the current @b{process_realtime} function is at.
10900 Transitions run in the data rate requested by the first plugin in the track.
10901 This may be different than the project data rate.  Since process_realtime lacks
10902 a rate argument, use @b{get_framerate()} or @b{get_samplerate} to get the
10903 requested rate.
10905 @c cincvdoc_node_number_314
10906 @node Plugin GUI's which update during playback
10907 @section Plugin GUI's which update during playback
10908 @cindex Plugin GUI's which update during playback
10910 Effects like @b{Histogram} and @b{VideoScope} need to update the GUI during
10911 playback to display information about the signal.  This is achieved with the
10912 @b{send_render_gui} and @b{render_gui} methods.  Normally in process_buffer,
10913 when the processing object wants to update the GUI it should call
10914 @b{send_render_gui}.  This should only be called in process_buffer.
10915 Send_render_gui goes through a search and eventually calls @b{render_gui} in
10916 the GUI instance of the plugin.
10918 Render_gui should have a sequence like
10919 @verbatim
10920     void MyPlugin::render_gui(void *data)
10921     {
10922         if(thread)
10923         {
10924         thread->window->lock_window();
10925         // update GUI here
10926         thread->window->unlock_window();
10927         }
10928     }
10929 @end verbatim
10931 Send_render_gui and render_gui use one argument, a void pointer to transfer
10932 information from the processing object to the GUI@.  The user should typecast
10933 this pointer into something useful.
10935 @c cincvdoc_node_number_315
10936 @node Plugin queries
10937 @section Plugin queries
10938 @cindex Plugin queries
10940 There are several useful queries in PluginClient which can be accessed from the
10941 processing object.  Some of them have different meaning in realtime and
10942 non-realtime mode.  They all give information about the operating system or the
10943 project which can be used to improve the quality of the processing.
10945 @menu
10946 * System queries:: Utilities for determining the system resources.
10947 * Timing queries:: Utilities for performing time-dependant processing.
10948 @end menu
10950 @c cincvdoc_node_number_316
10951 @node System queries
10952 @subsection System queries
10953 @cindex System queries
10955 @itemize @bullet
10956 @item @b{get_interpolation_type()}@*
10957 Returns the type of interpolation the user wants for all scaling operations.
10958 This is a macro from overlayframe.inc.  It can be applied to any call to the
10959 @b{OverlayFrame} object.
10961 @item @b{get_project_smp()}@*
10962 Gives the number of CPU's on the system minus 1.  If it is a uniprocessor it is
10963 0.  If it is a dual processor, it is 1.  This number should be used to gain
10964 parallelism.
10966 @item @b{get_total_buffers()}@*
10967 Gives the number of tracks a multichannel plugin needs to process.
10968 @end itemize
10970 @c cincvdoc_node_number_317
10971 @node Timing queries
10972 @subsection Timing queries
10973 @cindex Timing queries
10975 There are two rates for media a realtime plugin has to be aware of: the project
10976 rate and the requested rate.  Functions are provided for getting the project
10977 and requested rate.  In addition, doing time dependant effects requires using
10978 several functions which tell where you are in the effect.
10980 @itemize @bullet
10981 @item @b{get_project_framerate()}@*
10982 Gives the frames per second of the video as defined by the project settings.
10984 @item @b{get_project_samplerate()}@*
10985 Gives the samples per second of the audio as defined by the project settings.
10987 @item @b{get_framerate()}@*
10988 Gives the frames per second requested by the plugin after this one.  This is
10989 the requested frame rate and is the same as the frame_rate argument to
10990 process_buffer.
10992 @item @b{get_samplerate()}@*
10993 Gives the samples per second requested by the plugin after this one.  This is
10994 the requested sample rate and is the same as the sample_rate argument to
10995 process_buffer.
10997 @item @b{get_total_len()}@*
10998 Gives the number of samples or frames in the range covered by the effect,
10999 relative to the requested data rate.
11001 @item @b{get_source_start()}@*
11002 For realtime plugins it gives the lowest sample or frame in the effect range in
11003 the requested data rate.  For nonrealtime plugins it is the start of the range
11004 of the timeline to process.
11006 @item @b{get_source_position()}@*
11007 For realtime plugins it is the lowest numbered sample in the requested region
11008 to process if playing forward and the highest numbered sample in the region if
11009 playing backward.  For video it is the start of the frame if playing forward
11010 and the end of the frame if playing in reverse.  The position is relative to
11011 the start of the EDL and in the requested data rate.@*
11012 For transitions this is always the lowest numbered sample of the region to
11013 process relative to the start of the transition.
11015 @item @b{get_direction()}@*
11016 Gives the direction of the current playback operation.  This is a macro defined
11017 in transportque.inc.  This is useful for calling read functions since the read
11018 functions position themselves at the start or end of the region to read,
11019 depending on the playback operation.
11021 @item @b{local_to_edl()}@*
11022 @b{edl_to_local()}@*
11023 These convert between the requested data rate and the project data rate.  They
11024 are used to convert keyframe positions into numbers which can be interpolated
11025 at the requested data rate.  The conversion is automatically based on frame
11026 rate or sample rate depending on the type of plugin.
11028 @item @b{get_prev_keyframe(int64_t position, int is_local)}@*
11029 @b{get_next_keyframe(int64_t position, int is_local)}@*
11030 These give the nearest keyframe before or after the position given.  The macro
11031 defined version of load_configuration automatically retrieves the right
11032 keyframes but you may want to do this on your own.@*
11033 The position argument can be either in the project rate or the requested rate.
11034 Set is_local to 1 if it is in the requested rate and 0 if it is in the project
11035 rate.@*
11036 In each keyframe, another position value tells the keyframe's position relative
11037 to the start of the timeline and in the project rate.@*
11038 The only way to get smooth interpolation between keyframes is to convert the
11039 positions in the keyframe objects to the requested rate.  Do this by using
11040 edl_to_local on the keyframe positions.
11041 @end itemize
11043 @c cincvdoc_node_number_318
11044 @node Using OpenGL
11045 @section Using OpenGL
11046 @cindex OpenGL, using
11048 Realtime video plugins support OpenGL@.  Using OpenGL to do plugin routines can
11049 speed up playback greatly since it does most of the work in hardware.
11050 Unfortunately, every OpenGL routine needs a software counterpart for rendering,
11051 doubling the amount of software to maintain.  Fortunately, having an OpenGL
11052 routine means the software version does not need to be as optimized as it did
11053 when software was the only way.
11055 As always, the best way to design a first OpenGL plugin is to copy an existing
11056 one and alter it.  The @b{Brightness} plugin is a simple OpenGL plugin to copy.
11057 There are 3 main points in OpenGL rendering and 1 point for optimizing OpenGL
11058 rendering.
11060 @menu
11061 * Getting OpenGL data:: Getting video data in a form usable by OpenGL
11062 * Drawing using OpenGL:: The method of drawing video in OpenGL
11063 * Using shaders:: Routines to simplify shader usage
11064 * Aggregating plugins:: Combining OpenGL routines from different plugins into one.
11065 @end menu
11067 @c cincvdoc_node_number_319
11068 @node Getting OpenGL data
11069 @subsection Getting OpenGL data
11070 @cindex OpenGL, getting data
11072 The first problem is getting OpenGL-enabled plugins to interact with
11073 software-only plugins.  To solve this, all the information required to do
11074 OpenGL playback is stored in the VFrame object which is passed to
11075 @b{process_buffer}.  To support 3D, the VFrame contains a PBuffer and a
11076 texture, in addition to VFrame's original rows.
11078 In OpenGL mode, VFrame has 3 states corresponding to the location of its video
11079 data.  The opengl state is recovered by calling @b{get_opengl_state} and is set
11080 by calling @b{set_opengl_state}.  The states are:
11082 @itemize @bullet
11083 @item @b{VFrame::RAM}@*
11084 This means the video data is stored in the traditional row pointers.  It must
11085 be loaded into a texture before being drawn using OpenGL routines.
11087 @item @b{VFrame::TEXTURE}@*
11088 The video data is stored in texture memory.  It is ready to be drawn using
11089 OpenGL routines.
11091 @item @b{VFrame::SCREEN}@*
11092 The video data is stored in a frame buffer in the graphics card.  For plugins,
11093 the frame buffer is always a PBuffer.  The image on the frame buffer can not be
11094 replicated again unless it is read back into the texture and the opengl state
11095 is reset to TEXTURE@.  The frame buffer is limited to 8 bits per channel.  If
11096 an OpenGL effect is used in a floating point project, it only retains 8 bits.
11097 @end itemize
11099 In the plugin's @b{process_buffer} routine, there is normally a call to
11100 @b{read_frame} to get data from the previous plugin in the chain.
11101 @b{read_frame} takes a new parameter called @b{use_opengl}.
11103 The plugin passes 1 to @b{use_opengl} if it intends to handle the data using
11104 OpenGL@.  It passes 0 to @b{use_opengl} if it can only handle the data using
11105 software.  The value of @b{use_opengl} is passed up the chain to ensure a
11106 plugin which only does software only gets the data in the row pointers.  If
11107 @b{use_opengl} is 0, the opengl state in VFrame is RAM@.
11109 The plugin must not only know if it is software-only but if its output must be
11110 software only.  Call @b{get_use_opengl} to determine if the output can be
11111 handled by OpenGL@.  If @b{get_use_opengl} returns 0, the plugin must pass 0 for
11112 @b{use_opengl} in @b{read_frame} and do its processing in software.  If
11113 @b{get_use_opengl} is 1, the plugin can decide based on its implementation
11114 whether to use OpenGL@.
11116 The main problem with OpenGL is that all the gl... calls need to be run from
11117 the same thread.  To work around this, the plugin interface has routines for
11118 running OpenGL in a common thread.
11120 @b{run_opengl} transfers control to the common OpenGL thread.  This is normally
11121 called by the plugin in @b{process_buffer} after it calls @b{read_frame} and
11122 only if @b{get_use_opengl} is 1.
11124 Through a series of indirections, @b{run_opengl} eventually transfers control
11125 to a virtual function called @b{handle_opengl}.  @b{handle_opengl} must be
11126 overridden with a function to perform all the OpenGL routines.  The contents of
11127 @b{handle_opengl} must be enclosed in @b{#ifdef HAVE_GL} ... @b{#endif} to
11128 allow it to be compiled on systems with no graphics support, like render nodes.
11129 The return value of @b{handle_opengl} is passed back from @b{run_opengl}.
11131 @b{read_frame} can not be called from inside @b{handle_opengl}.  This would
11132 create a recursive lockup because it would cause other objects to call
11133 @b{run_opengl}.
11135 Once inside @b{handle_opengl}, the plugin has full usage of all the OpenGL
11136 features.  VFrame provides some functions to automate common OpenGL sequences.
11138 The VFrame argument to @b{process_buffer} is always available through the
11139 @b{get_output(int layer)} function.  If the plugin is multichannel, the layer
11140 argument retrieves a specific layer of the output buffers.  The PBuffer of the
11141 output buffer is where the OpenGL output must go if any processing is done.
11143 @c cincvdoc_node_number_320
11144 @node Drawing using OpenGL
11145 @subsection Drawing using OpenGL
11146 @cindex Drawing using OpenGL
11148 The sequence of commands to draw on the output PBuffer stars with getting the
11149 video in a memory area where it can be recalled for drawing:
11150 @verbatim
11151 get_output()->to_texture();
11152 get_output()->enable_opengl();
11153 @end verbatim
11155 @itemize @bullet
11156 @item @b{to_texture} transfers the OpenGL data from wherever it is to the
11157 output's texture memory and sets the output state to TEXTURE@.
11158 @item @b{enable_opengl} makes the OpenGL context relative to the output's
11159 PBuffer.
11160 @end itemize
11162 The next step is to draw the texture with some processing on the PBuffer.  The
11163 normal sequence of commands to draw a texture is:
11164 @verbatim
11165 get_output()->init_screen();
11166 get_output()->bind_texture(0);
11167 get_output()->draw_texture();
11168 @end verbatim
11170 @itemize @bullet
11171 @item @b{VFrame::init_screen} sets the OpenGL frustum and parameters to known
11172 values.
11173 @item @b{VFrame::bind_texture(int texture_unit)} binds the texture to the given
11174 texture unit and enables it.
11175 @item @b{VFrame::draw_texture()} calls the vertex functions to draw the texture
11176 normalized to the size of the PBuffer.  Copy this if you want custom vertices.
11177 @end itemize
11179 The last step in the handle_opengl routine, after the texture has been drawn on
11180 the PBuffer, is to set the output's opengl state to SCREEN with a call to
11181 @b{VFrame::set_opengl_state}.  The plugin should not read back the frame buffer
11182 into a texture or row pointers if it has no further processing.  Plugins should
11183 only leave the output in the texture or RAM if its location results from normal
11184 processing.  They should set the opengl state to RAM or TEXTURE if they do.
11186 @b{Colormodels in OpenGL:}@*
11187 The colormodel exposed to OpenGL routines is always floating point since that
11188 is what OpenGL uses, but it may be YUV or RGB depending on the project
11189 settings.  If it is YUV, it is offset by 0.5 just like in software.  Passing
11190 YUV colormodels to plugins was necessary for speed.  The other option was to
11191 convert YUV to RGB in the first step that needed OpenGL@.  Every effect and
11192 rendering step would have needed a YUV to RGB routine.  With the YUV retained,
11193 only the final compositing step needs a YUV to RGB routine.
11195 @c cincvdoc_node_number_321
11196 @node Using shaders
11197 @subsection Using shaders
11198 @cindex OpenGL, using shaders
11200 Very few effects can do anything useful with just a straight drawing of the
11201 texture on the PBuffer.  They normally define a shader.  The shader is a C
11202 program which runs on the graphics card.  Since the graphics card is optimized
11203 for graphics, it can be much faster than running it on the CPU@.
11205 Shaders are written in OpenGL Shading Language.  The shader source code is
11206 contained in a string.  The normal sequence for using a shader comes after a
11207 call to @b{enable_opengl}.
11209 @verbatim
11210 char *shader_source = "...";
11211 unsigned char shader_id = VFrame::make_shader(0, shader_source, 0);
11212 glUseProgram(shader_id);
11213 // Set uniform variables using glUniform commands
11214 @end verbatim
11216 The compilation and linking step for shaders is encapsulated by the
11217 VFrame::make_shader command.  It returns a shader_id which can be passed to
11218 OpenGL functions.  The first and last arguments must always by 0.  And
11219 arbitrary number of source strings may be put between the 0's.  The source
11220 strings are concatenated by make_shader into one huge shader source.  If
11221 multiple main functions are in the sources, the main functions are renamed and
11222 run in order.
11224 There are a number of useful macros for shaders in @file{playback3d.h}.  All
11225 the shaders so far have been fragment shaders.  After the shader is
11226 initialized, draw the texture starting from @b{init_screen}.  The shader
11227 program must be disabled with another call to @b{glUseProgram(0)} and 0 as the
11228 argument.
11230 The shader_id and source code is stored in memory as long as Cinelerra runs.
11231 Future calls to make_shader with the same source code run much faster.
11233 @c cincvdoc_node_number_322
11234 @node Aggregating plugins
11235 @subsection Aggregating plugins
11236 @cindex Aggregating plugins
11238 Further speed improvements may be obtained by combining OpenGL routines from
11239 two plugins into a single handle_opengl function.  This is done when @b{Frame
11240 to Fields} and @b{RGB to 601} are attached in order.  Aggregations of more than
11241 two plugins are possible but very hard to get working.  Aggregation is useful
11242 for OpenGL because each plugin must copy the video from a texture to a PBuffer.
11243 In software there was no copy operation.
11245 In aggregation, one plugin processes everything from the other plugins and the
11246 other plugins fall through.  The fall through plugins must copy their
11247 parameters to the output buffer so they can be detected by the processing
11248 plugin.
11250 The VFrame used as the output buffer contains a parameter table for parameter
11251 passing between plugins and it is accessed with @b{get_output()->get_params()}.
11252 Parameters are set and retrieved in the table with calls to @b{update} and
11253 @b{get} just like with defaults.
11255 The fall through plugins must determine if the processor plugin is attached
11256 with calls to @b{next_effect_is} and @b{prev_effect_is}.  These take the name
11257 of the processor plugin as a string argument and return 1 if the next or
11258 previous plugin is the processor plugin.  If either returns 1, the fall through
11259 plugin must still call @b{read_frame} to propogate the data but return after
11260 that.
11262 The processor plugin must call @b{next_effect_is} and @b{prev_effect_is} to
11263 determine if it is aggregated with a fall through plugin.  If it is, it must
11264 perform the operations of the fall through plugin in its OpenGL routine.  The
11265 parameters for the the fall through plugin should be available by
11266 @b{get_output()->get_params()} if the fall through plugin set them.
11268 @c cincvdoc_node_number_323
11269 @node Keyboard shortcuts
11270 @chapter Keyboard shortcuts
11271 @cindex Keyboard shortcuts
11272 @cindex Shortcuts
11274 Alex Ferrer started summarizing most of the keyboard shortcuts.  Most of the
11275 keys work without any modifier like @key{SHIFT} or @key{CTRL}.  Most windows
11276 can be closed with a @kbd{CTRL-w}.  Most operations can be cancelled with
11277 @key{ESC} and accepted with @key{RET}.
11279 @menu
11280 * Program window shortcuts::
11281 * Viewer and compositor windows shortcuts::
11282 * Playback transport shortcuts::
11283 * Record window shortcuts::
11284 @end menu
11286 @c cincvdoc_node_number_331
11287 @node Program window shortcuts
11288 @section Program window shortcuts
11289 @cindex Program window shortcuts
11291 @menu
11292 * Editing Media shortcuts::
11293 * Editing Labels and In/Out Points shortcuts::
11294 * Navigation shortcuts::
11295 * File operations shortcuts::
11296 * Key frame editing shortcuts::
11297 * Track Manipulation shortcuts::
11298 * What is drawn on the timeline shortcuts::
11299 @end menu
11301 @c cincvdoc_node_number_332
11302 @node Editing Media shortcuts
11303 @subsection Editing Media shortcuts
11304 @cindex Shortcuts, editing media
11306 @multitable @columnfractions .2 .8
11307 @item @kbd{z}
11308 @tab Undo
11309 @item @kbd{SHIFT Z}
11310 @tab Re-Do
11311 @item @kbd{x}
11312 @tab Cut
11313 @item @kbd{c}
11314 @tab Copy
11315 @item @kbd{v}
11316 @tab Paste
11317 @item @kbd{Del}
11318 @tab Clear
11319 @item @kbd{SHIFT Space}
11320 @tab Paste Silence
11321 @item @kbd{m}
11322 @tab Mute region
11323 @item @kbd{a}
11324 @tab Select all
11325 @item @kbd{SHIFT + click}
11326 @tab When done over an edit causes the highlighted selection to extend to the
11327 cursor position.  When done over the boundary of an effect causes the trim
11328 operation to apply to one effect.
11329 @item @kbd{e}
11330 @tab Toggle between Drag-and-Drop and Cut-and-Paste editing modes
11331 @end multitable
11333 @c cincvdoc_node_number_333
11334 @node Editing Labels and In/Out Points shortcuts
11335 @subsection Editing Labels and In/Out Points shortcuts
11336 @cindex Editing labels and in/out points shortcuts
11338 @multitable @columnfractions .2 .8
11339 @item @kbd{[}
11340 @tab Toggle In point
11341 @item @kbd{]}
11342 @tab Toggle Out point
11343 @item @kbd{l}
11344 @tab Toggle label at current position
11345 @item @kbd{CTRL <-}
11346 @tab Go to Previous Label
11347 @item @kbd{CTRL ->}
11348 @tab Go to Next Label
11349 @end multitable
11351 @c cincvdoc_node_number_334
11352 @node Navigation shortcuts
11353 @subsection Navigation shortcuts
11354 @cindex Navigation shortcuts
11356 @multitable @columnfractions .2 .8
11357 @item @kbd{Right arrow}
11358 @tab Move the timeline right (not the insertion point) *
11359 @item @kbd{Left arrow}
11360 @tab Move the timeline left (not the insertion point) *
11361 @item @kbd{Up arrow}
11362 @tab Zoom time out *
11363 @item @kbd{Down arrow}
11364 @tab Zoom time in *
11365 @item @kbd{CTRL Up}
11366 @tab Expand current curve amplitude
11367 @item @kbd{CTRL Dn}
11368 @tab Shrink current curve amplitude
11369 @item @kbd{CTRL Alt Up}
11370 @tab Expand all curve amplitude
11371 @item @kbd{Ctrl Alt Dn}
11372 @tab Shrink all curve amplitude
11373 @item @kbd{Alt Up}
11374 @tab Expand curve amplitude
11375 @item @kbd{Alt Dn}
11376 @tab Shrink curve amplitude
11377 @item @kbd{f}
11378 @tab Fit time displayed to selection
11379 @item @kbd{Alt f}
11380 @tab Make the range of all the automation types.  Fit the maximum and minimum
11381 range of the current highlighted selection
11382 @item @kbd{Ctrl Alt f}
11383 @tab Make the range of the currently selected automation type fit the maximum
11384 and minimum range of the current highlighted selection
11385 @item @kbd{Alt Left}
11386 @tab Move the insertion point left one edit
11387 @item @kbd{Alt Right}
11388 @tab Move the insertion point right one edit
11389 @item @kbd{Page Up}
11390 @tab Move the timeline up *
11391 @item @kbd{Page Dn}
11392 @tab Move the timeline down *
11393 @item @kbd{Ctrl Page Up}
11394 @tab Expand track height
11395 @item @kbd{Ctrl Page Dn}
11396 @tab Shrink track height
11397 @item @kbd{Home}
11398 @tab Move insertion point to beginning of timeline *
11399 @item @kbd{End}
11400 @tab Move insertion point to end of timeline *
11401 @end multitable
11403 * You may have to click on the timeline to deactivate any text boxes
11404 or tumblers before these work.
11406 @c cincvdoc_node_number_335
11407 @node File operations shortcuts
11408 @subsection File operations shortcuts
11409 @cindex File operations shortcuts
11411 @multitable @columnfractions .2 .8
11412 @item @kbd{n}
11413 @tab New project
11414 @item @kbd{o}
11415 @tab Load Files
11416 @item @kbd{s}
11417 @tab Save Project
11418 @item @kbd{r}
11419 @tab Record
11420 @item @kbd{SHIFT R}
11421 @tab Render
11422 @item @kbd{q}
11423 @tab Quit
11424 @item @kbd{SHIFT P}
11425 @tab Preferences
11426 @item @kbd{SHIFT B}
11427 @tab Batch Render
11428 @item @kbd{SHIFT F}
11429 @tab Set Format
11430 @item @kbd{}
11431 @tab
11432 @end multitable
11434 @c cincvdoc_node_number_336
11435 @node Key frame editing shortcuts
11436 @subsection Key frame editing shortcuts
11437 @cindex Keyframes, editing shortcuts
11439 @multitable @columnfractions .2 .8
11440 @item @kbd{SHIFT X}
11441 @tab Cut keyframes
11442 @item @kbd{SHIFT C}
11443 @tab Copy keyframes
11444 @item @kbd{SHIFT V}
11445 @tab Paste keyframes
11446 @item @kbd{SHIFT Del}
11447 @tab Clear keyframes
11448 @item @kbd{Alt c}
11449 @tab Copy default keyframe
11450 @item @kbd{Alt v}
11451 @tab Paste default keyframe
11452 @end multitable
11454 @c cincvdoc_node_number_337
11455 @node Track Manipulation shortcuts
11456 @subsection Track Manipulation shortcuts
11457 @cindex Track manipulation shortcuts
11459 @multitable @columnfractions .2 .8
11460 @item @kbd{t}
11461 @tab Add Audio Track
11462 @item @kbd{u}
11463 @tab Insert default Audio Transition
11464 @item @kbd{SHIFT T}
11465 @tab Add Video Track
11466 @item @kbd{SHIFT U}
11467 @tab Insert Default Video Transition
11468 @item @kbd{d}
11469 @tab Delete last Track
11470 @item @kbd{SHIFT L}
11471 @tab Loop playback
11472 @item @kbd{TAB}
11473 @tab Toggle single track arming status
11474 @item @kbd{SHIFT-TAB}
11475 @tab Toggle every other track's arming status
11476 @end multitable
11478 @c cincvdoc_node_number_338
11479 @node What is drawn on the timeline shortcuts
11480 @subsection What is drawn on the timeline shortcuts
11481 @cindex Timeline, what is drawn on the shortcuts
11483 @multitable @columnfractions .2 .8
11484 @item @kbd{1}
11485 @tab Show titles
11486 @item @kbd{2}
11487 @tab Show transitions
11488 @item @kbd{3}
11489 @tab Fade keyframes
11490 @item @kbd{4}
11491 @tab Mute keyframes
11492 @item @kbd{5}
11493 @tab Mode keyframes
11494 @item @kbd{6}
11495 @tab Pan keyframes
11496 @item @kbd{7}
11497 @tab Camera keyframes
11498 @item @kbd{8}
11499 @tab Projector keyframes
11500 @item @kbd{9}
11501 @tab Plugin keyframes
11502 @item @kbd{0}
11503 @tab Mask keyframes
11504 @item @kbd{-}
11505 @tab Camera Zoom
11506 @item @kbd{=}
11507 @tab Projector Zoom
11508 @end multitable
11510 @c cincvdoc_node_number_339
11511 @node Viewer and compositor windows shortcuts
11512 @section Viewer and compositor windows shortcuts
11513 @cindex Viewer and compositor windows shortcuts
11515 @multitable @columnfractions .2 .8
11516 @item @kbd{x}
11517 @tab Cut
11518 @item @kbd{c}
11519 @tab Copy
11520 @item @kbd{v}
11521 @tab Paste
11522 @item @kbd{v}
11523 @tab Splice
11524 @item @kbd{b}
11525 @tab Overwrite
11526 @item @kbd{[}
11527 @tab Toggle In point
11528 @item @kbd{]}
11529 @tab Toggle Out point
11530 @item @kbd{l}
11531 @tab Toggle label at current position
11532 @item @kbd{Ctrl <-}
11533 @tab Go to Previous Label
11534 @item @kbd{Ctrl ->}
11535 @tab Go to Next Label
11536 @item @kbd{Home}
11537 @tab Go to beginning
11538 @item @kbd{End}
11539 @tab Go to end
11540 @item @kbd{z}
11541 @tab Undo
11542 @item @kbd{SHIFT Z}
11543 @tab Re-Do
11544 @item @kbd{+}
11545 @tab Zoom in
11546 @item @kbd{-}
11547 @tab Zoom out
11548 @end multitable
11550 @c cincvdoc_node_number_340
11551 @node Playback transport shortcuts
11552 @section Playback transport shortcuts
11553 @cindex Playback transport shortcuts
11555 Transport controls work in any window which has a playback transport.  They are
11556 accessed through the number pad with num lock disabled.
11558 @multitable @columnfractions .08 .17 .08 .17 .08 .17 .08 .17
11559 @item @kbd{4}
11560 @tab Frame back
11561 @tab @kbd{5}
11562 @tab Reverse Slow
11563 @tab @kbd{6}
11564 @tab Reverse
11565 @tab @kbd{+}
11566 @tab Reverse Fast
11567 @item @kbd{1}
11568 @tab Frame Forward
11569 @tab @kbd{2}
11570 @tab Forward Slow
11571 @tab @kbd{3}
11572 @tab Play
11573 @tab @kbd{Enter}
11574 @tab Fast Forward
11575 @item @kbd{0}
11576 @tab Stop
11577 @tab
11578 @tab
11579 @tab
11580 @tab
11581 @tab
11582 @tab
11583 @end multitable
11585 @key{SPACE} is normal Play, Hitting any key twice is Pause.
11587 Hitting any transport control with @key{CTRL} down causes only the region
11588 between the in/out points to be played, if in/out points are defined.
11590 @c cincvdoc_node_number_341
11591 @node Record window shortcuts
11592 @section Record window shortcuts
11593 @cindex Record window shortcuts
11595 @multitable @columnfractions .2 .8
11596 @item @kbd{Space}
11597 @tab Start and pause recording of the current batch
11598 @item @kbd{l}
11599 @tab Toggle label at current position
11600 @end multitable
11602 @include gpl_en.texi
11604 @ifnotplaintext
11605 @ifnothtml
11606 @ifnotdocbook
11607 @c cincvdoc_node_number_324
11608 @node Index
11609 @unnumbered Index
11610 @printindex cp
11611 @end ifnotdocbook
11612 @end ifnothtml
11613 @end ifnotplaintext
11615 @bye