r125: This commit was manufactured by cvs2svn to create tag 'r1_1_7-last'.
[cinelerra_cv/mob.git] / hvirtual / doc / cinelerra.texi
blobeb5eeccffc05d9763618cb184cf6bb03e342fb9e
1 \input texinfo   @c -*-texinfo-*-
5 @setfilename cinelerra.info
6 @settitle Secrets of Cinelerra
9 @titlepage
10 @center @title Secrets of Cinelerra
11 @subtitle Version 1.0.0
12 @author Heroine Virtual Ltd.
13 @page
14 Copyright @copyright{} 2002 Heroine Virtual Ltd.
15 @end titlepage
19 @node TOP
20 @top BRIEF CONTENTS
23 @menu
24 * ABOUT CINELERRA::
25 * INSTALLATION::
26 * CONFIGURATION::
27 * THE MAIN WINDOWS::
28 * LOADING AND SAVING FILES::
29 * NAVIGATING THE PROJECT::
30 * EDITING::
31 * USING EFFECTS::
32 * SETTING PROJECT ATTRIBUTES::
33 * COMPOSITING::
34 * KEYFRAMES::
35 * CAPTURING MEDIA::
36 * IMPROVING PERFORMANCE::
37 * TROUBLESHOOTING::
38 * SECRETS OF CINELERRA::
39 * EFFECT DESCRIPTIONS::
40 * PLUGIN AUTHORING::
41 * RELEASE NOTES::
42 @end menu
44 @contents
54 @node ABOUT CINELERRA
55 @chapter ABOUT CINELERRA
58 There are two types of moviegoers: producers who create new content,
59 going back over their content at future points for further refinement,
60 and consumers who want to acquire the content and watch it.  Cinelerra
61 is not intended for consumers.  Cinelerra has many features for
62 uncompressed content, high resolution processing, and compositing, with
63 very few shortcuts.  Producers need these features because of the need
64 to retouch many generations of footage with alterations to the format,
65 which makes Cinelerra very complex. There are many more standard tools
66 for consumers like MainActor, Kino, or Moxy, which you should consider
67 before using Cinelerra.
69 In 1996 our first editor came out: Broadcast 1.0.  It was just a window
70 with a waveform in it, it could cut and paste stereo audio waveforms on
71 a UNIX box, except unlike other audio editors it could handle files up
72 to 2 gigabytes with only 64 megs of RAM.  That was a feature normally
73 only accessible to the highest end professional audio houses.
75 In 1997 Broadcast 1.0 was replaced by Broadcast 2.0.  This time the
76 window had a menubar, patchbay, console, and transport control. 
77 Broadcast 2.0 still only handled audio but this time it handled
78 unlimited tracks, and it could perform effects on audio and save the
79 resulting waveform to disk.  More notably a few effects could be
80 performed as the audio was playing back, in realtime.  A user could mix
81 unlimited numbers of tracks, adjust fade, pan, and EQ, and hear the
82 result instantly.   Amazingly this real time tweeking is still
83 unavailable on most audio programs.
85 But Broadcast 2.0 still didn't handle video and it wasn't very graceful
86 at audio either.  In 1999 video broke into the story with Broadcast
87 2000.  This iteration of the Broadcast series could do wonders with
88 audio and offered a pretty good video feature set.  It could edit video
89 files up to 64 terabytes.  It could do everything Broadcast 2.1 did
90 with audio except now all effects for video and audio could be chained
91 and performed on the fly, with instant feedback as a user tweeked
92 parameters during playback.  Broadcast 2000 made it very easy to do a
93 lot of processing and editing on video and audio that would otherwise
94 involve many hours setting up command line sequences and writing to
95 disk. For a time it seemed as if the original dream of immersive movie
96 making for everyone regardless of income level had arrived.
98 Later on Broadcast 2000 began to come short.  Its audio and video was
99 graceful if you knew how to use it efficiently, but quality issues and
100 new user interface techniques were emerging.  Broadcast 2000 kept the
101 audio interface from its ancestors, which didn't apply well to video. 
102 Users likewise were maturing.  No longer would it be sufficient to just
103 edit video on a UNIX box.  Most users expected on UNIX the same thing
104 they got in Win or Mac. In mid 2000 designs for a Broadcast 2000
105 replacement were drafted.  The Broadcast name was officially retired
106 from the series and the software would now be called Cinelerra. 
107 Cinelerra would allow users to configure certain effects in much less
108 time than required with Broadcast 2000.  It would begin to emulate some
109 of the features found in Win and Mac software while not attempting to
110 become a clone.  It's interface would be designed for video from the
111 ground up, while supplementing that with the Broadcast audio
112 interface.  As always, quality improvements would happen.
121 @menu
122 * ABOUT THIS MANUAL::
123 @end menu
125 @node ABOUT THIS MANUAL
126 @section ABOUT THIS MANUAL
128 After many years of searching for the perfect documentation format
129 we've arrived at TexInfo.  This format can be converted to HTML,
130 printed, automatically indexed, but most importantly is not bound to
131 any commercial word processor.  Documents written in Texinfo will be
132 readable as long as there's a C compiler.
134 There are no screenshots in this manual.  Screenshots become obsolete
135 quickly and as a result confuse the users.  What looks one way in a
136 screenshot will always look different in the real program because the
137 real program and the manual are always evolving, never perfectly
138 synchronized.  It is true that manuals should have screenshots, but our
139 objective in omitting screenshots is to keep the software costs minimal
140 so you don't have to pay for it.  That includes additional labor to
141 synchronize the manual with the software.
143 In addition to telling you the basic editing features of Cinelerra this
144 manual covers tricks that won't be described anywhere else.  We're
145 going to try to come up with certain things you can do with Cinelerra
146 that you wouldn't think of on your own.
164 @node INSTALLATION
165 @chapter INSTALLATION
168 The Cinelerra package contains Cinelerra and most of the libraries
169 needed to run it.  We try to include all the dependancies because of
170 the difficulty in tracking down the right versions.  Also included are
171 some utilities for handling files.
173 @itemize
175 @item
177 MPlexhi - Multiplexing of MPEG elementary streams with standards conformance.
179 @item
181 MPlexlo - Multiplexing of MPEG elementary streams without standards
182 conformance but more efficiently.
184 @item
186 mpeg3toc - Utility for indexing and reading MPEG files.
188 @end itemize
192 @menu
193 * INSTALLING AN RPM::
194 * COMPILING FROM SCRATCH::
195 @end menu
198 @node INSTALLING AN RPM
199 @section INSTALLING AN RPM
201 Cinelerra is best installed by downloading an RPM and running
203 @example
204 rpm -U --force --nodeps hvirtual*.rpm
205 @end example
207 on a RedHat system.
209 On systems which don't support RPM look for a utility called
210 @emph{rpm2cpio}.  Download a Cinelerra RPM and from the /
211 directory run
213 @example
214 rpm2cpio hvirtual*.rpm | cpio -i --make-directories
215 @end example
218 @node COMPILING FROM SCRATCH
219 @section COMPILING FROM SCRATCH
221 It should be noted that the compiler used in building Cinelerra binaries is the free GNU compiler and very conservative optimization flags.  You can try
222 different compilers and optimization flags by compiling the source.
224 The compilation is verified on a vanilla RedHat 9.0 installation, workstation mode.  RedHat 9.0 doesn't install @b{nasm}.  This has to be installed manually for compilation to succeed.
225 Compiling the source is hard and there's no warranty if the source code fails to compile, but the method for compiling starts by downloading
226 the source code and decompressing.
228 @example
229 tar jxf hvirtual*.tar.bz2
230 @end example
233 Enter the hvirtual directory
235 @example
236 cd hvirtual
237 @end example
239 and set the CFLAGS environment variable.  The flags for the GCC
240 compiler are constantly changing.  These are our most recent flags. 
241 For Pentium II use:
243 @example
244 export CFLAGS='-O3 -march=i686 -fmessage-length=0 -funroll-all-loops -fomit-frame-pointer -falign-loops=2 -falign-jumps=2 -falign-functions=2'
245 @end example
247 For Pentium I and old AMD's use:
249 @example
250 export CFLAGS='-O3 -fmessage-length=0 -funroll-all-loops -fomit-frame-pointer -falign-loops=2 -falign-jumps=2 -falign-functions=2'
251 @end example
253 For new AMD's use:
255 @example
256 export CFLAGS='-O3 -march=athlon -fmessage-length=0 -funroll-all-loops -fomit-frame-pointer -falign-loops=2 -falign-jumps=2 -falign-functions=2'
257 @end example
260 Then run
262 @example
263 make
264 @end example
266 The make procedure should run through all the directories and put
267 binaries in the @emph{i686} directories.  When we originally supported
268 Alpha it was convenient to compile Alpha and i686 binaries
269 simultaneously, in different directories, so all the binaries are put in
270 subdirectories.
272 Once finished run
274 @example
275 make install
276 @end example
278 to install the binaries.  The output is put in the following directories:
280 @itemize
281 @item
282 Executables -> /usr/bin
283 @item
284 Plugins  -> /usr/lib/cinelerra
285 @end itemize
287 The main binaries are /usr/bin/cinelerra and several utilities for
288 reading MPEG transport streams.
290 Run Cinelerra by running
293 @example
294 /usr/bin/cinelerra
295 @end example
312 @node CONFIGURATION
313 @chapter CONFIGURATION
316 Because of the variety of uses, Cinelerra cannot be run optimally
317 without some intimate configuration for your specific needs. Very few
318 parameters are adjustible at compile time.  Runtime configuration is
319 the only option for most configuration because of the multitude of
320 parameters.
322 Go to @emph{settings->preferences} and run through the options.
325 @menu
326 * PLAYBACK::
327 * RECORDING::
328 * PERFORMANCE::
329 * INTERFACE::
330 @end menu
334 @node PLAYBACK
335 @section PLAYBACK
339 @menu
340 * AUDIO OUT::
341 * VIDEO OUT::
342 @end menu
346 @node AUDIO OUT
347 @subsection AUDIO OUT
349 These determine what happens when you play sound from the timeline.
351 @itemize 
353 @item
354 SAMPLES TO READ FROM DISK
356 Cinelerra uses a pipeline for rendering audio. The first stage is
357 reading large chunks of audio from disk, the samples to read from
358 disk.  This is followed by processing small fragments in a virtual
359 console.
361 @item
362 SAMPLES TO SEND TO CONSOLE:
364 The second stage is rendering small fragments through the virtual
365 console to the sound driver. A larger value here causes more latency
366 when you change mixing parameters but gives more reliable playback.
368 Some sound drivers don't allow changing of the console fragment so
369 latency is unchanged no matter what this value is.
371 @item
373 VIEW FOLLOWS PLAYBACK
375 Causes the timeline window to scroll when the playback cursor moves out
376 of view.  This can bog down the X Server.
378 @item
379 USE SOFTWARE FOR POSITIONING INFORMATION
381 Most soundcards and sound drivers don't give reliable information on
382 the number of samples the card has played. When playing video you need
383 this information for synchronization. This option causes the sound
384 driver to be ignored and a software timer to be used for
385 synchronization.
387 @item
388 AUDIO PLAYBACK IN REALTIME:
390 Back in the days when 150Mhz was the maximum, this allowed
391 uninterrupted playback on heavy loads. Now you'll probably only need it
392 for playing video and audio when the load is to high for uninterrupted
393 audio.
395 @item
396 AUDIO DRIVER
398 There are many sound drivers for Linux.  This allows selecting one and
399 setting parameters specific to it.  Some of the common parameters for a
400 sound driver are
402 @itemize
404 @item
405 DEVICE PATH
407 Usually a file in the @emph{/dev/} directory which controls the
408 device.
410 @item
412 BITS
414 The number of bits of precision Cinelerra should set the device for. 
415 This sometimes has a figuritive meaning.  Some sound drivers need to be
416 set to 32 bits to perform 24 bit playback and won't play anything when
417 set to 24 bits.  Some sound drivers need to be set to 24 bits for 24
418 bit playback.
420 @item
422 CHANNELS
424 The number of channels Cinelerra should set the device for.  Regardless
425 of the number of channels in the project, the number of channels set
426 here will be written to the device.  When this is set to 2 and the
427 project has 1 channel you'll hear sound through the left speaker and
428 not centered as expected for a monaural project.  When this is set to 1
429 and the project has 2 channels you'll hear the left channel centered
430 and not 2 channels mixed together.
432 @end itemize
433 @end itemize
442 @node VIDEO OUT
443 @subsection VIDEO OUT
445 These determine what happens when you play video from the timeline.
447 @itemize
449 @item
451 FRAMERATE ACHIEVED
453 The number of frames per second being
454 displayed during playback.
456 @item
458 SCALING EQUATION
460 The algorithm used in all video resizing in
461 the virtual console.  This doesn't affect scaling to the size of the
462 compositor window.
464 @itemize
466 @item
467 NEAREST NEIGHBOR ENLARGE AND REDUCE
469 lowest but fastest
470 quality.  Produces jagged edges and uneven motion.
473 @item
475 BICUBIC ENLARGE AND BILINEAR REDUCE
477 highest but slowest
478 quality.  For enlarging a bicubic interpolation is used, which blurs
479 slightly but doesn't reveal stair steps.  For reduction a bilinear
480 interpolation is used, which produces very sharp images and reduces
481 noise.  The bilinear reduced images can be sharpened with a sharpen
482 effect with less noise than a normal sized image.
484 @item
486 BILINEAR ENLARGE AND BILINEAR REDUCE
488 when slight enlargement
489 is needed a bilinear enlargement looks better than a bicubic
490 enlargement.
492 @end itemize
495 @item
497 PRELOAD BUFFER FOR QUICKTIME
499 The Quicktime/AVI decoder can
500 handle CDROM sources better when this is around 1000000.  This reduces
501 the amount of seeking.  For normal use this should be 0.
503 @item
505 MPEG-4 DEBLOCKING
507 For assets which are compressed in OpenDivx and Quicktime, this enables
508 deblocking.  This greatly improves the picture quality during decoding
509 while slowing it down.
511 @item
513 VIDEO DRIVER
515 Normally video on the timeline goes to the
516 compositor window during continuous playback and when the insertion
517 point is repositioned.  Instead of sending video to the Compositor
518 window the video driver can be set to send video to another output
519 device during continuous playback.  This doesn't affect where video
520 goes when the insertion point is repositioned, however.
522 Various parameters are given for Video Driver depending on the driver.
524 @itemize
526 @item
528 DISPLAY
530 The is intended for dual monitor
531 displays.  Depending on the value of Display, the Compositor window
532 will appear on a different monitor from the rest of the windows.
534 @item
536 DEVICE PATH
538 Usually a file in the @emph{/dev/} directory
539 which controls the device.
541 @item
543 SWAP FIELDS
545 Make the even lines odd and the odd lines even
546 when sending to the device.  On an NTSC or 1080i monitor the fields may
547 need to be swapped to prevent jittery motion.
549 @item
551 OUTPUT CHANNEL
553 Devices with multiple outputs may need a
554 specific connector to send video on.
556 @item
558 PORT
560 The IEEE1394 standard specifies something known as the
561 @emph{port}.  This is probably the firewire card number in the system
562 to use.
564 @item
566 CHANNEL
568 The IEEE1394 standard specifies something known as the
569 @emph{channel}.  For DV cameras it's always @emph{63}.
571 @end itemize
573 @end itemize
579 @node RECORDING
580 @section RECORDING
582 @menu
583 * AUDIO IN::
584 * VIDEO IN::
585 @end menu
587 @node AUDIO IN
588 @subsection AUDIO IN
590 These determine what happens when you record audio.
592 @itemize
593 @item
595 RECORD DRIVER
597 This is used for recording audio in the Record window.  It may be
598 shared with the Record Driver for video if the audio and video are
599 wrapped in the same stream.  It takes variable parameters depending on
600 the driver.  The parameters have the same meaning as they do for
601 playback.
603 @itemize
604 @item
606 DEVICE PATH
608 Usually a file in the @emph{/dev/} directory which controls the
609 device.
611 @item
613 BITS
615 The number of bits of precision Cinelerra should set the device for. 
616 This sometimes has a figuritive meaning.  Some sound drivers need to be
617 set to 32 bits to perform 24 bit recording and won't record anything
618 when set to 24 bits.  Some sound drivers need to be set to 24 bits for
619 24 bit recording.
621 @item
622 CHANNELS
624 The number of channels Cinelerra should set the device for.  Regardless
625 of the number of channels in the record operation, the number of
626 channels set here will be read from the device.  When this is set to 2
627 and the record operation has 1 channel you'll record the left speaker
628 and not a mix of the left and right speakers as expected for a monaural
629 project.  When this is set to 1 and the project has 2 channels you'll
630 record the left and right channels mixed into the left speaker and not
631 1 channel spead across two speakers.
633 @end itemize
635 @item
637 SAMPLES TO WRITE AT A TIME
639 Audio is first read in small fragments from the device.  Many small
640 fragments are combined into a large fragment before writing to disk. 
641 The disk writing process is done in a different thread.  The value here
642 determines how large the combination of fragments is for each disk
643 write.
645 @item
647 SAMPLE RATE FOR RECORDING
649 Regardless of what the project settings are.  This is the sample rate
650 used for recording.  This should be the highest the audio device
651 supports.
653 @end itemize
655 @node VIDEO IN
656 @subsection VIDEO IN
658 These determine what happens when you record video.
660 @itemize
661 @item
663 RECORD DRIVER
665 This is used for recording video in the Record window.  It may be
666 shared with the Record Driver for audio if the audio and video are
667 wrapped in the same stream.  It takes variable parameters depending on
668 the driver.  The parameters have the same meaning as they do for
669 playback.
671 @item
673 FRAMES TO RECORD TO DISK AT A TIME
675 Frames are recorded in a pipeline.  First frames are buffered in the
676 device.  Then they're read into a larger buffer for writing to disk. 
677 The disk writing is done in a different thread as the device reading. 
678 For certain codecs the disk writing uses multiple processors.  This
679 value determines how many frames are written to disk at a time.
681 @item
683 FRAMES TO BUFFER IN DEVICE
685 The number of frames to store in the device before reading.  This
686 determines how much latency there can be in the system before frames
687 are dropped.
689 @item
690 USE SOFTWARE FOR POSITIONING INFORMATION
692 Video uses audio for
695 synchronization but most soundcards don't give accurate position
696 information.  This calculates an estimation of audio position in
697 software instead of the hardware for synchronization.
699 @item
701 SYNC DRIVES AUTOMATICALLY
703 For high bitrate recording the drives may be fast enough to store the
704 data but Linux may wait several minutes and stall as it writes several
705 minutes of data at a time.  This forces Linux to flush its buffers
706 every second instead of every few minutes and produce slightly better
707 realtime behavior.
709 @item
711 SIZE OF CAPTURED FRAME
713 This is the size of the frames recorded.  It is independant of the
714 project frame size because most video devices only record a fixed frame
715 size.  If the frame size given here isn't supported by the device it
716 might crash Cinelerra.
718 @item
719 FRAME RATE FOR RECORDING
721 The frame rate recorded is different from the project settings.  This
722 sets the recorded frame rate.
724 @end itemize
733 @node PERFORMANCE
734 @section PERFORMANCE
737 You'll spend most of your time configuring this section.  The main
738 focus of performance is rendering parameters not available in the
739 rendering dialog.  
745 @itemize 
747 @item
748 CACHE ITEMS
752 To speed up rendering, several assets are kept open simultaneously.
753 This determines how many are kept open.  A number too large may exhaust
754 your memory pretty fast and result in a crash.  A number too small may
755 result in slow playback as assets need to be reopened more frequently.
758 @item
760 SECONDS TO PREROLL RENDERS
762 Some effects need a certain amount of time to settle in.  This sets a
763 number of seconds to render without writing to disk before the selected
764 region is rendered.  When using the renderfarm you'll sometimes need to
765 preroll to get seemless transitions between the jobs.  Every job in a
766 renderfarm is prerolled by this value.  This does not affect background
767 rendering, however.  Background rendering uses a different preroll
768 value.
770 @item
772 FORCE SINGLE PROCESSOR USE
774 Cinelerra tries to use all processors on the system by default but
775 sometimes you'll only want to use one processor, like in a renderfarm
776 client.  This forces only one processer to be used.  The operating
777 system, however, usually uses the second processor anyway for disk
778 access so this option is really a 1.25 processor mode.  The value of
779 this parameter is used in renderfarm clients.
781 @end itemize
784 @menu
785 * BACKGROUND RENDERING::
786 * RENDERFARM::
787 @end menu
790 @node BACKGROUND RENDERING
791 @subsection BACKGROUND RENDERING
793 Background rendering was originally concieved to allow HDTV effects to
794 be displayed in realtime.  Background rendering causes temporary output
795 to constantly be rendered while the timeline is being modified.  The
796 temporary output is played during playack whenever possible.  It's very
797 useful for transitions and previewing effects which are too slow to
798 display in a reasonable amount of time.  If renderfarm is enabled, the
799 renderfarm is used for background rendering, giving you the potential
800 for realtime effects if enough network bandwidth and CPU nodes exist.
802 @itemize
808 @item
809 FRAMES PER BACKGROUND RENDERING JOB
811 This only works if renderfarm is being used, otherwise background
812 rendering creates a single job for the entire timeline.  The number of
813 frames specified here is scaled to the relative CPU speed of rendering
814 nodes and used in a single renderfarm job.  The optimum number is 10 -
815 30 since network bandwidth is used to initialize each job.
819 @item
820 FRAMES TO PREROLL BACKGROUND
822 This is the number of frames to render ahead of each background
823 rendering job.  Background rendering is degraded when preroll is used
824 since the jobs are small.  When using background rendering, this number
825 is ideally 0.  Some effects may require 3 frames of preroll.
831 @item
832 OUTPUT FOR BACKGROUND RENDERING
834 Background rendering generates a sequence of image files in a certain
835 directory.  This parameter determines the filename prefix of the image
836 files.  It should be on a fast disk, accessible to every node in the
837 renderfarm by the same path.  Since hundreds of thousands of image
838 files are usually created, @emph{ls} commands won't work in the
839 background rendering directory.  The @image{magnify} browse button for
840 this option normally won't work either, but the @image{wrench}
841 configuration button for this option works.
843 @item
844 FILE FORMAT
846 The file format for background rendering has to be a sequence of
847 images. The format of the image sequence determines the quality and
848 speed of playback.  JPEG is good most of the time.
851 @end itemize
853 @node RENDERFARM
854 @subsection RENDERFARM
856 To use the renderfarm set these options.  Ignore them for a standalone
857 system
859 @itemize
861 @item
863 USE RENDER FARM FOR RENDERING
865 When selected, all the
866 @emph{file->render} operations use the renderfarm.
868 @item
870 NODES
872 Displays all the nodes on the renderfarm and which ones are active. 
874 Nodes are added by entering the host name of the node, verifying the
875 value of @emph{port} and hitting @emph{add node}.
877 Computer freaks may be better off editing the
878 @emph{~/.bcast/.Cinelerra_rc} file than this if they have hundreds of
879 nodes.  Remember that .Cinelerra_rc is overwritten whenever a copy of
880 Cinelerra exits.
882 Select the @emph{ON} column to activate and deactivate nodes once they
883 are created.
885 Nodes may be edited by highlighting a row and hitting @emph{apply changes}.
887 @item
889 HOSTNAME
891 Edit the hostname of an existing node or enter the hostname of a new
892 node here.
894 @item
896 PORT
898 Edit the port of an existing node or enter the port of a new node here.
900 @item
902 REPLACE NODE
904 When editing an existing node, hit this to commit the changes to
905 @emph{HOSTNAME} and @emph{PORT}.  The changes won't be committed if you
906 don't hit this button.
908 @item
910 ADD NODE
912 Create a new node with the @emph{HOSTNAME} and @emph{PORT} settings.
914 @item
916 DELETE NODE
918 Deletes whatever node is highlighted in the @emph{NODES} list.
920 @item
922 SORT NODES
924 Sorts the @emph{NODES} list based on the hostname.
926 @item
928 RESET RATES
930 This sets the framerate for all the nodes to 0.  Frame rates are used
931 to scale job sizes based on CPU speed of the node.  Frame rates are
932 only calculated when renderfarm is enabled.
935 @item
937 USE VIRTUAL FILESYSTEM
939 Normally the directory on the master node containing the source and
940 destination assets is mounted on the clients.  The assets on the
941 clients should be visible in the same locations as they are on the
942 master node.  This can be hard to set up and requires root access.
944 A user level version of NFS was built into Cinelerra and called the
945 Virtual File System.  This transparently redirects all file I/O over
946 the network without requiring a replication of the master node's
947 directory structure or root access on the client.  The client sees the
948 exact directory structure on the master node but in reality is sending
949 network packets to access it.
951 There is a penalty for doing this though, since Virtual Filesystem
952 isn't as refined as NFS.  Operations that access one byte at a time are
953 really slow.  Unless you need to run rendering clients without root
954 access or have a lot of assets in different directories,  use NFS
955 instead.
960 @item
962 TOTAL JOBS TO CREATE
964 Determines the number of jobs to dispatch to the renderfarm.  The more
965 jobs you create, the more finely balanced the renderfarm becomes.
967 Determine the total jobs to create by multiplying the number of nodes
968 including the master node by some number.  Multiply them by 1 to have
969 one job dispatched for every node.  Multiply them by 3 to have 3 jobs
970 dispatched for every node.  If you have 10 slave nodes and one master
971 node, specify 33 to have a well balanced renderfarm.
973 @end itemize
979 @node INTERFACE
980 @section INTERFACE
982 These parameters affect purely how the user interface works.
984 @itemize
986 @item
988 INDEX FILES GO HERE
990 Back in the days when 4 MB/sec was unearthly speed for a hard drive,
991 index files were introduced to speed up drawing the audio tracks.  This
992 option determines where index files are placed on the hard drive.
995 @item
997 SIZE OF INDEX FILE
999 Determines the size of an index file. Larger index sizes allow smaller
1000 files to be drawn faster while slowing down the drawing of large files.
1001 Smaller index sizes allow large files to be drawn faster while slowing
1002 down small files.
1004 @item
1006 NUMBER OF INDEX FILES TO KEEP
1008 To keep the index directory from becoming unruly, old index files are
1009 deleted. This determines the maximum number of index files to keep in
1010 the directory.
1012 @item
1014 DELETE ALL INDEXES
1016 When you change the index size or you want to clean out excessive index
1017 files, this deletes all the index files.
1019 @item
1020 USE HOURS:MINUTES:SECONDS.XXX
1022 Various representations of time are given.  Select the most convenient
1023 one.  The time representation can also be changed by @emph{CTRL}
1024 clicking on the time ruler.
1026 @item
1027 USE THUMBNAILS
1029 The Resource Window displays thumbnails of assets by default.  This can
1030 take a long time to set up.  This option disables the thumbnails.
1032 @item
1033 CLICKING IN/OUT POINTS DOES WHAT
1035 Cinelerra not only allows you to perform editing by dragging in/out
1036 points but also defines three seperate operations which occur when you
1037 drag an in/out point. For each mouse button you select the behavior in
1038 this window. The usage of each editing mode is described in editing.
1040 @item
1041 MIN DB FOR METER
1043 Some sound sources have a lower noise threshold than others. 
1044 Everything below the noise threshold is meaningless.  This option sets
1045 the meters to clip below a certain level.  Consumer soundcards usually
1046 bottom out at -65.  Professional soundcards bottom out at -90.
1048 @item
1049 FORMAT FOR METER
1051 This option allows you to select the format for all the VU meters. If
1052 you're a CS major select percentage and if you're a EE major select DB.
1053 With that, be aware all levels in Cinelerra are input as DB.
1055 @item
1056 THEME
1058 Cinelerra supports variable themes.  Select one here and restart
1059 Cinelerra to see it.
1061 @end itemize
1069 @node THE MAIN WINDOWS
1070 @chapter THE MAIN WINDOWS
1072 When Cinelerra first starts, you'll get four main windows.  Hitting
1073 @emph{CTRL-w} in any window closes it.
1075 @itemize
1077 @item
1078 Viewer
1080 In here you'll scrub around source media and clips, selecting regions
1081 to paste into the project.  Operations done in the viewer affect a
1082 temporary EDL or a clip but not the timeline.
1084 @item
1085 Compositor
1087 This window displays the output of the timeline.  It's the interface
1088 for most compositing operations or operations that affect the
1089 appearance of the timeline output.  Operations done in the Compositor
1090 affect the timeline but don't affect clips.
1092 @item
1093 Program
1095 This contains the timeline and the entry point for all menu driven
1096 operations.  The timeline consists of a vertical stack of tracks with
1097 horizontal representation of time.  This defines the output of
1098 rendering operations and what is saved when you save files.
1100 @item
1101 Resources
1103 Effects, transitions, clips, and assets are accessed here.  Most of the
1104 resources are inserted into the project by dragging them out of the
1105 resource window.  Management of resource allocation is also performed
1106 here.
1108 @end itemize
1110 Under the @emph{Window} menu you'll find options affecting the main
1111 windows.  @emph{default positions} repositions all the windows to a 4
1112 screen editing configuration.  On dual headed displays, the
1113 @emph{default positions} operation fills only one monitor with windows.
1115 An additional window, the @emph{levels window} can be brought up from
1116 the @emph{Window} menu.  The @emph{levels} window displays the output
1117 audio levels after all mixing is done.
1127 @node LOADING AND SAVING FILES
1128 @chapter LOADING AND SAVING FILES
1131 @menu
1132 * LOADING FILES::
1133 * LOADING THE BACKUP::
1134 * SAVING FILES::
1135 * RENDERING FILES::
1136 * THE RENDER FARM::
1137 @end menu
1145 @node LOADING FILES
1146 @section LOADING FILES
1148 All data that you work with in Cinelerra is acquired either by
1149 @emph{recording from a device} or by @emph{loading from disk}.  This
1150 section describes loading.
1152 The loading and playing of files is just as you would expect. Just go
1153 to @emph{file->Load}, select a file for loading, and hit @emph{ok}. Hit
1154 the forward play button and it should start playing, regardless of
1155 whether a progress bar has popped up.
1157 Another way to load files is to pass the filenames as arguments on the
1158 command line.  This creates new tracks for every file and starts the
1159 program with all the arguments loaded.
1161 If the file is a still image, the project's attributes are not changed
1162 and the first frame of the track becomes the image.  If the file has
1163 audio, Cinelerra may build an index file for it to speed up drawing. 
1164 You can edit and play the file while the index file is being built.
1166 @menu
1167 * SUPPORTED FILE FORMATS::
1168 * INSERTION STRATEGY::
1169 * LOADING MULTIPLE FILES::
1170 @end menu
1178 @node SUPPORTED FILE FORMATS
1179 @subsection SUPPORTED FILE FORMATS
1181 The format of the file affects what Cinelerra does with it.  Some
1182 formats replace all the project settings.  Some just insert data with
1183 existing project settings.  If your project sample rate is 48khz and
1184 you load a sound file with 96khz, you'll still be playing it at
1185 48khz.   XML files, however, replace the project settings.  If you load
1186 an XML file at 96khz and the current project sample rate is 48khz,
1187 you'll change it to 96khz.  Supported file formats are currently:
1189 @itemize
1190 @item
1192 @item
1194 @item
1195 AIFF
1196 @item
1197 Uncompresed Quicktime
1199 Quicktime is not the standard for UNIX but we use it because it's well
1200 documented.  All of the Quicktime movies on the internet are
1201 compressed.  Cinelerra doesn't support compressed Quicktime movies. 
1202 Most of the Quicktime footage dealt with in Cinelerra is generated by
1203 Cinelerra either recording from a device or rendering.  The best
1204 Quicktime settings to use are JPEG video and twos audio.
1206 @item
1207 JPEG, PNG, TIFF, TGA sequences
1209 Cinelerra generates a special table of contents file when you render an
1210 image sequence.  You can either select every image file to load or
1211 select the table of contents when the rendering is done.  Selecting the
1212 table of contents is faster and doesn't fill up the resource window
1213 with thousands of images.
1215 @item
1216 JPEG, PNG, TIFF, TGA still images
1218 When loaded, the image takes up one frame in length and doesn't change
1219 the project attributes.
1221 @item
1222 AVI with mp3 audio and MPEG-4 video
1225 @item
1226 MPEG 1, 2 video
1228 You need to run @emph{mpeg3toc} to generate a table of contents for
1229 these, then load the table of contents.  Mpeg3toc needs the absolute
1230 path of the MPEG file.  If you want to edit a DVD, find the
1231 corresponding @emph{ifo} file for the program of interest and run 
1233 @example
1234 mpeg3toc /cdrom/video_ts/vts_01_0.ifo dvd.toc
1235 @end example
1237 or something similar.  Then load @emph{dvd.toc}.  This allows frame
1238 accurate editing where none would be possible otherwise.
1240 @item
1241 MPEG program streams and transport streams
1243 You need to run @emph{mpeg3toc} on these just like MPEG 1,2 video. 
1244 Program and transport streams are structured into multiple tracks. 
1245 Each track can be video or audio.  Each audio track can have 1-6
1246 channels.  Cinelerra converts each channel of audio into a track, so
1247 for MPEG streams with multiple tracks, the tracks will be flattened.
1249 @item
1250 MPEG audio layer II, III
1252 These can be loaded directly with no table of contents.  Variable
1253 bitrate streams may need a table of contents but are playable without
1256 @item
1257 AC3 audio
1259 @item
1262 These are generated by Cinelerra for storing edit lists.  They change
1263 project attributes when loaded.
1265 @end itemize
1274 @node INSERTION STRATEGY
1275 @subsection INSERTION STRATEGY
1277 Usually three things happen when you load a file.  First the existing
1278 project is cleared from the screen, second the project's attributes are
1279 changed to match the file's, and finally the new file's tracks are
1280 created in the timeline.
1282 But Cinelerra lets you change what happens when you load a file.
1284 In the file selection box go to the @emph{Insertion strategy} box and
1285 select it.  Each of these options loads the file a different way.
1287 @itemize
1290 @item
1291 Replace current project
1293 All tracks in the current project are deleted and new tracks are
1294 created to match the source.  Project attributes are only changed when
1295 loading XML.  If multiple files are selected it adds new tracks for
1296 every file.
1298 @item
1299 Replace current project and concatenate tracks
1301 Same as replace current project except if multiple files are selected
1302 it concatenates the tracks of every file after the first.
1304 @item
1305 Append in new tracks
1307 The current project is not deleted and new tracks are created for the
1308 source.
1310 @item
1311 Concatenate to existing tracks
1313 The current project is not deleted and new files are concatenated to
1314 the existing tracks.
1316 @item
1317 Paste at insertion point
1319 The file is pasted in like a normal paste operation.
1321 @item
1322 Create new resources only
1324 The timeline is unchanged and new resources are created in the Resource
1325 Window.
1327 @end itemize
1330 The insertion strategy is a recurring option in many of Cinelerra's
1331 functions.  In each place the options do the same thing.  With these
1332 options you can almost do all your editing by loading files.
1334 If you load files by passing command line arguments to Cinelerra, the
1335 files are loaded with @emph{Replace current project} rules.
1341 @node LOADING MULTIPLE FILES
1342 @subsection LOADING MULTIPLE FILES
1344 In the file selection box go to the list of files.  Select a file.  Go
1345 to another file and select it while holding down @emph{CTRL}.  This
1346 selects one additional file.  Go to another file and select it while
1347 holding down @emph{SHIFT}.  This selects every intervening file.  This
1348 behavior is available in most every list box.
1350 Select a bunch of mp3 files and @emph{Replace current project and
1351 concatenate tracks} in the insertion strategy to create a song
1352 playlist.
1357 @node LOADING THE BACKUP
1358 @section LOADING THE BACKUP
1360 There is one special XML file on disk at all times.  After every
1361 editing operation Cinelerra saves the current project to a backup in
1362 @emph{$HOME/.bcast/backup.xml}.  In the event of a crash go to
1363 @emph{file->load backup} to load the backup.  It is important after a
1364 crash to reboot Cinelerra without performing any editing operations. 
1365 Loading the backup should be the first operation or you'll overwrite
1366 the backup.
1369 @node SAVING FILES
1370 @section SAVING FILES
1372 When Cinelerra saves a file it saves an edit decision list of the
1373 current project but doesn't save any media.  Go to @emph{File->save
1374 as...}.  Select a file to overwrite or enter a new file.  Cinelerra
1375 automatically concatenates @emph{.xml} to the filename if no
1376 @emph{.xml} extension is given.
1378 The saved file contains all the project settings and locations of every
1379 edit but instead of media it contains pointers to the original media
1380 files on disk.
1382 For each media file the XML file stores either an absolute path or just
1383 the relative path.  If the media is in the same directory as the XML
1384 file a relative path is saved.  If it's in a different directory an
1385 absolute path is saved.
1387 In order to move XML files around without breaking the media linkages
1388 you either need to keep the media in the same directory as XML file
1389 forever or save the XML file in a different directory than the media
1390 and not move the media ever again.
1392 If you want to create an audio playlist and burn it on CD-ROM, save the
1393 XML file in the same directory as the audio files and burn the entire
1394 directory.  This keeps the media paths relative.
1396 XML files are useful for saving the current state before going to sleep
1397 and saving audio playlists but they're limited in that they're specific
1398 to Cinelerra.  You can't play XML files in a dedicated movie player. 
1399 Realtime effects in an XML file have to be resynthesized every time you
1400 play it back.  The XML file also requires you to maintain copies of all
1401 the source assets on hard drives, which can take up space and cost a
1402 lot of electricity to spin.  For a more persistent storage of the
1403 output there's rendering.
1410 @node RENDERING FILES
1411 @section RENDERING FILES
1413 Rendering takes a section of the timeline, performs all the editing,
1414 effects and compositing, and stores it in a pure movie file.  You can
1415 then delete all the source assets, play the rendered file in a movie
1416 player, or bring it back into Cinelerra for more editing.  It's very
1417 difficult to retouch any editing decisions in the pure movie file,
1418 however, so keep the original assets and XML file around several days
1419 after you render it.
1421 To begin a render operation you need to define a region of the timeline
1422 to render.  The navigation section describes methods of defining
1423 regions.  @xref{NAVIGATING THE PROJECT}.  When a region is highlighted
1424 or in/out points are set, the affected region is rendered.  When no
1425 region is highlighted, everything after the insertion point is
1426 rendered.
1428 Go to @emph{File->render} to bring up the render dialog.  Select the
1429 magnifying glass to bring up a file selection dialog.  This determines
1430 the filename to write the rendered file to.
1432 In the render dialog select a format from the @emph{File Format} menu. 
1433 The format of the file determines whether you can render audio or video
1434 or both.  Select @emph{Render audio tracks} to generate audio tracks
1435 and @emph{Render video tracks} to generate video tracks.  Select the
1436 wrench next to each toggle to set compression parameters.  If the file
1437 format can't store audio or video the compression parameters will be
1438 blank.  If @emph{Render audio tracks} or @emph{Render video tracks} is
1439 selected and the file format doesn't support it, trying to render will
1440 pop up an error.
1442 The @emph{Create new file at each label} option causes a new file to be
1443 created when every label in the timeline is encountered.  This is
1444 useful for dividing long audio recordings into individual tracks.  When
1445 using the renderfarm, @emph{Create new file at each label} causes one
1446 renderfarm job to be created at every label instead of using the
1447 internal load balancing algorithm to space jobs.
1449 When @emph{Create new file at each label} is selected, a new filename
1450 is created for every output file.  If the filename given in the render
1451 dialog has a 2 digit number in it, the 2 digit number is overwritten
1452 with a different incremental number for every output file.  If no 2
1453 digit number is given, Cinelerra automatically concatenates a number to
1454 the end of the given filename for every output file.
1456 In the filename @emph{/hmov/track01.wav} the @emph{01} would be
1457 overwritten for every output file.  The filename
1458 @emph{/hmov/track.wav}; however, would become @emph{/hmov/track.wav001}
1459 and so on and so forth.  Filename regeneration is only used when either
1460 renderfarm mode is active or creating new files for every label is
1461 active.
1463 Finally the render dialog lets you select an insertion mode.  The
1464 insertion modes are the same as with loading files.  In this case if
1465 you select @emph{insert nothing} the file will be written out to disk
1466 without changing the current project.  For other insertion strategies
1467 be sure to prepare the timeline to have the output inserted at the
1468 right position before the rendering operation is finished. 
1469 @xref{EDITING}.  Editing describes how to cause output to be inserted
1470 at the right position.
1472 It should be noted that even if you only have audio or only have video
1473 rendered, a @emph{paste} insertion strategy will behave like a normal
1474 paste operation, erasing any selected region of the timeline and
1475 pasting just the data that was rendered.  If you render only audio and
1476 have some video tracks armed, the video tracks will get truncated while
1477 the audio output is pasted into the audio tracks.
1492 @node THE RENDER FARM
1493 @section THE RENDER FARM
1495 When bicubic interpolation and HDTV was first done on Cinelerra, the
1496 time needed to produce the simplest output became unbearable even on
1497 the fastest dual 1.7Ghz Xeon of the time.  Renderfarm support even in
1498 the simplest form brings HDTV times back in line with SD while making
1499 SD faster than realtime.
1501 While the renderfarm interface isn't spectacular, it's simple enough to
1502 use inside an editing suite with less than a dozen nodes without going
1503 through the same amount of hassle you would with a several hundred node
1504 farm.  Renderfarm is invoked transparently for all file->render
1505 operations when it is enabled in the preferences.
1507 It should be noted that @emph{Create new file at each label} causes a
1508 new renderfarm job to be created at each label instead of the default
1509 load balancing.  If this option is selected when no labels exist, only
1510 one job will be created.
1512 A Cinelerra renderfarm is organized into a master node and any number
1513 of slave nodes.  The master node is the computer which is running the
1514 GUI.  The slave nodes are anywhere else on the network and are run from
1515 the command line.
1517 Cinelerra divides the selected region of the timeline into a certain
1518 number of jobs which are then dispatched to the different nodes
1519 depending on the load balance.  The nodes process the jobs and write
1520 their output to individual files on the filesystem.  The output files
1521 are not concatenated.  It's important for all the nodes and the master
1522 node to use the same filesystem for assets, mounted over the network.
1524 Since most of the time you'll want to bring in the rendered output and
1525 fine tune it on the timeline, the jobs are left in individual files. 
1526 You can load these using @emph{concatenate mode} and render them again
1527 with renderfarm disabled.  If the track and output dimensions equal the
1528 asset dimensions, Cinelerra will do a direct copy of all the jobs into
1529 a single file.  Note that direct copying doesn't work for MPEG Video. 
1530 MPEG has the distinction that you can concatenate the subfiles with the
1531 UNIX cat utility.
1533 Configuration of the renderfarm is described in the configuration
1534 chapter @xref{RENDERFARM}.  The slave nodes traditionally read and
1535 write data to a common filesystem over a network, thus they don't need
1536 hard drives.
1538 Ideally all the nodes on the renderfarm have similar CPU performance. 
1539 Cinelerra load balances on a first come first serve basis.  If the last
1540 segment is dispatched to the slowest node, all the fastest nodes may
1541 end up waiting for the slowest node to finish while they themselves
1542 could have rendered it faster.
1551 @node NAVIGATING THE PROJECT
1552 @chapter NAVIGATING THE PROJECT
1554 The thing you want to do most of the time is get to a certain time and
1555 place in the media.  Internally the media is organized into tracks. 
1556 Each track extends across time.  Navigation involves both getting to a
1557 track and getting to a certain time in the track.
1561 @menu
1562 * NAVIGATING THE PROGRAM WINDOW::
1563 * NAVIGATING THE VIEWER AND COMPOSITOR::
1564 * NAVIGATING THE RESOURCES::
1565 * USING THE TRANSPORT CONTROLS::
1566 * USING BACKGROUND RENDERING::
1567 @end menu
1571 @node NAVIGATING THE PROGRAM WINDOW
1572 @section NAVIGATING THE PROGRAM WINDOW
1574 The program window contains many features for navigation and displays
1575 the timeline as it is structured in memory: tracks stacked vertically
1576 and extending across time.  The horizontal scroll bar allows you to
1577 scan across time.  The vertical scroll bar allows you to scan across
1578 tracks.
1580 Below the timeline you'll find the zoom panel.  The zoom panel contains
1581 values for @emph{sample zoom}, @emph{amplitude}, and @emph{track
1582 zoom}.  These values in addition to the scrollbars are all that's
1583 needed to position the timeline.
1585 @sp 1
1587 @image{zoompanel,,,,}
1590 Changing the @emph{sample zoom} causes the amount of time visible to
1591 change.  @emph{If your mouse has a wheel and it works in X11 go over
1592 the tumblers and use the wheel to zoom in and out.}
1594 The @emph{amplitude} only affects audio.  It determines how big the
1595 waveform is if the waveform is drawn.
1597 The @emph{track zoom} affects all tracks.  It determines the height of
1598 each track.  If you change the track zoom the amplitude zoom
1599 compensates so  audio waveforms look proportional.
1601 In addition to the graphical tools, you'll probably more often use the
1602 keyboard to navigate.  Use @emph{PAGE UP} and @emph{PAGE DOWN} to
1603 scroll up and down the tracks.
1605 Use the @emph{LEFT} and @emph{RIGHT} arrows to move across time. 
1606 You'll often need to scroll beyond the end of the timeline but
1607 scrollbars won't let you do it.  Instead use the @emph{RIGHT} arrow to
1608 scroll past the end of timeline.
1610 Use the @emph{UP} and @emph{DOWN} arrows to change the sample zoom by a
1611 power of 2.
1613 @emph{CTRL-UP} and @emph{CTRL-DOWN} cause the amplitude zoom to change.
1615 @emph{CTRL-PGUP} and @emph{CTRL-PGDOWN} cause the track zoom to change.
1618 @menu
1619 * THE INSERTION POINT::
1620 * THE IN/OUT POINTS::
1621 * USING LABELS IN THE PROGRAM WINDOW::
1622 @end menu
1636 @node THE INSERTION POINT
1637 @subsection THE INSERTION POINT
1639 By default you'll see a flashing insertion point in the program window
1640 the first time you boot it up.  This is where new media is pasted onto
1641 the timeline.  It's also the starting point of all playback
1642 operations.  When rendering it defines the region of the timeline to be
1643 rendered.
1645 The insertion point is normally moved by clicking inside the timebar. 
1646 Any region of the timebar not obscured by labels and in/out points is a
1647 hotspot for repositioning the insertion point.
1649 @sp 1
1650 @image{main_timebar,,,,}
1651 @emph{The main timebar}
1653 The insertion point also can be moved by clicking in the timeline
1654 itself, but not always.  The insertion point has two modes of
1655 operation: 
1657 @itemize
1658 @item
1659 drag and drop mode 
1661 @item
1662 cut and paste mode
1664 @end itemize
1666 The mode of operation is determined by selecting the arrow or the
1667 i-beam in the buttonbar.
1669 @sp 1
1670 @image{editing_mode,,,,}
1671 @emph{The editing mode buttons}
1673 If the arrow is highlighted it enables @emph{drag and drop} mode.  In
1674 drag and drop mode, clicking in the timeline doesn't reposition the
1675 insertion point.  Instead it selects an entire edit.  Dragging in the
1676 timeline repositions the edit, snapping it to other edit boundaries. 
1677 This is normally useful for reordering audio playlists and moving
1678 effects around.
1680 If the i-beam is highlighted it enables @emph{cut and paste mode}.  In
1681 cut and paste mode clicking in the timeline repositions the insertion
1682 point.  Dragging in the timeline highlights a region.  The highlighted
1683 region becomes the playback range during the next playback operation,
1684 the rendered range during the next render operation, and the region
1685 affected by cut and paste operations.
1687 @emph{Shift-clicking} in the timeline extends the highlighted region.
1689 @emph{Double-clicking} in the timeline selects the entire edit the
1690 cursor is over.
1692 It should be noted that when moving the insertion point and selecting
1693 regions, the positions are either aligned to frames or aligned to
1694 samples.  When editing video you'll want to align to frames.  When
1695 editing audio you'll want to align to samples.  This is set in
1696 @emph{settings->align cursor on frames}.
1698 If the highlighted region is the region affected by cut and paste
1699 operations, how do I cut and paste in @emph{drag and drop} mode?  In
1700 this case you need to set @emph{in/out points} to define an affected region.
1706 @node THE IN/OUT POINTS
1707 @subsection THE IN/OUT POINTS
1709 In both editing modes you can set in/out points.  The in/out points
1710 define the affected region.  In drag and drop mode they are the only
1711 way to define an affected region.  In both cut and paste mode and drag
1712 and drop mode they override the highlighted area.  If a highlighted
1713 area and in/out points are set, the highlighted area affects playback
1714 while the in/out points affect editing operations.  To avoid confusion
1715 it's best to use either highlighting or in/out points but not both
1716 simultaneously.
1718 To set in/out points go to the timebar and position the insertion point
1719 somewhere.  Hit the @image{in_point_button} @emph{in point button}.  Go
1720 to a position after the in point and hit the @image{out_point_button}
1721 @emph{out point button}.
1723 @sp 1
1724 @image{inout_points} @emph{Timebar with in/out points set}.
1726 Select either the in point or the out point and the insertion point
1727 jumps to that location.  After selecting an in point, if you hit the
1728 @emph{in point button} the in point will be deleted.  After selecting
1729 an out point, if you hit the @emph{out point button} the out point will
1730 be deleted.
1732 If you select a region somewhere else while in/out points already
1733 exist, the existing points will be repositioned when you hit the in/out
1734 buttons.
1736 @emph{Shift-clicking} on an in/out point extends the highlighted region
1737 to that point.
1739 Instead of using the button bar you can use the @emph{[} and @emph{]}
1740 keys to toggle in/out points.
1742 The insertion point and the in/out points allow you to define an
1743 affected region but they don't let you jump to exact points on the
1744 timeline very easily.  For this purpose there are labels.
1750 @node USING LABELS IN THE PROGRAM WINDOW
1751 @subsection USING LABELS IN THE PROGRAM WINDOW
1753 Labels are an easy way to set exact locations on the timeline you want
1754 to jump to.  When you position the insertion point somewhere and hit
1755 the @image{label_button} @emph{label button} a new label appears on the
1756 timeline.  
1758 @sp 1
1759 @image{timebar_label} @emph{Timebar with a label on it}
1761 No matter what the zoom settings are, clicking on the label positions
1762 the insertion point exactly where you set it.  Hitting the label button
1763 again when a label is selected deletes it.
1765 @emph{Shift-clicking} on a label extends the highlighted region.
1767 @emph{Double-clicking} between two labels highlights the region between
1768 the labels.
1770 Hitting the @emph{l} key has the same effect as the label button.
1772 If you hit the label button when a region is highlighted, two labels
1773 are toggled at each end of the highlighted region.  If one end already
1774 has a label, then the existing label is deleted and a label is created
1775 at the opposite end.
1777 Labels can reposition the insertion point when they are selected but
1778 they can also be traversed with the @image{label_traversal} @emph{label
1779 traversal} buttons.  When a label is out of view, the label traversal
1780 buttons reposition the timeline so the label is visible.  There are
1781 keyboard shortcuts for label traversal, too.
1783 @emph{CTRL-LEFT} repositions the insertion point on the previous label.
1785 @emph{CTRL-RIGHT} repositions the insertion point on the next label.
1787 With label traversal you can quickly seek back and forth on the
1788 timeline but you can also select regions.
1790 @emph{SHIFT-CTRL-LEFT} extends the highlighted region to the previous
1791 label.
1793 @emph{SHIFT-CTRL-RIGHT} extends the highlighted region to the next label.
1795 Manually hitting the label button or @emph{l} key over and over again
1796 to delete a series of labels can get tedious.  For deleting a set of
1797 labels, first highlight a region and second use the @emph{Edit->Clear
1798 labels} function.  If in/out points exist, the labels between the
1799 in/out points are cleared and the highlighted region ignored.
1808 @node NAVIGATING THE VIEWER AND COMPOSITOR
1809 @section NAVIGATING THE VIEWER AND COMPOSITOR
1811 The navigation features of the Viewer and Compositor behave very
1812 similarly.  Each has a timebar and slider below the video output.  The
1813 timebar and slider are critical for navigation.
1815 @sp 1
1817 @image{timebarslider,,,,}
1819 The timebar represents the entire time covered by the program.  When
1820 you define labels and in/out points it defines those, too.  Finally the
1821 timebar defines a region known as the @emph{preview region}.
1823 The @emph{preview region} is the region of the timeline which the
1824 slider effects.  The slider only covers the time covered by the preview
1825 region.  By using a preview region inside the entire program and using
1826 the slider inside the preview region you can quickly and precisely seek
1827 in the compositor and viewer.
1829 When you replace the current project with a file the preview region
1830 automatically resizes to cover the entire file.  When you append data
1831 or change the size of the current project, the preview region stays the
1832 same size and shrinks.  Therefore, you need to resize the preview
1833 region.
1835 Load a file and then slide around it using the compositor slider.  The
1836 insertion point in the main window follows the compositor.  Move the
1837 pointer over the compositor's timebar until it turns into a left resize
1838 pointer.  The click and drag right.  The preview region should have
1839 changed and the slider resized proportionally.
1841 Go to the right of the timebar until a right resize pointer appears. 
1842 Drag left so the preview region shrinks.
1844 Go to the center of the preview region in the timebar and drag it
1845 around to convince yourself if can be moved.
1848 @sp 1
1850 @image{previewregion,,,,}
1852 @emph{Preview region in compositor}
1854 If you go to the slider and slide it around with the preview region
1855 shrunk, you'll see the slider only affects the preview region.  The
1856 timebar and slider in the viewer window work exactly the same.
1858 Labels and in/out points are fully supported in the viewer and
1859 compositor.  The only difference between the viewer and compositor is
1860 the compositor reflects the state of the program while the viewer
1861 reflects the state of a clip but not the program.
1863 When you hit the @emph{label button} in the compositor, the label
1864 appears both in the compositor timebar and the program timebar.
1866 When you select a label or in/out point in the compositor, the program
1867 window jumps to that position.
1869 @sp 1
1870 @image{viewer_labels} @emph{Labels and in/out points in the viewer}.
1872 In the viewer and compositor, labels and in/out points are displayed in
1873 the timebar.  Instead of displaying just a region of the program, the
1874 timebar displays the entire program here.
1878 Like the Program window, the Compositor has a zoom capability.  First,
1879 the pulldown menu on the bottom of the compositor window has a number
1880 of zoom options.  When set to @emph{Auto} the video is zoomed to match
1881 the compositor window size as closely as possible.  When set to any
1882 other percentage, the video is zoomed a power of 2 and scrollbars can
1883 be used to scroll around the output.  When the video is zoomed bigger
1884 than the window size, not only do scrollbars scan around it but
1885 @emph{middle mouse button} dragging in the video output scans around
1886 it.  This is exactly when The Gimp does.
1888 Furthermore, the zoom @image{magnify} toggle causes the Compositor
1889 window to enter zoom mode.  In zoom mode, clicking in the video output
1890 zooms in while @emph{ctrl-clicking} in the video output zooms out.  If
1891 you have a wheel mouse, rotating the wheel zooms in or out too.
1893 Zooming in or out with the zoom tool does not change the rendered
1894 output, mind you.  It's merely for scrutinizing video or fitting it in
1895 the desktop.
1902 @node NAVIGATING THE RESOURCES
1903 @section NAVIGATING THE RESOURCES
1905 The resource window is divided into two areas.  One area lists folders
1906 and another area lists folder contents.  Going into the folder list and
1907 clicking on a folder updates the contents area with the contents of
1908 that folder.
1910 The folder and contents can be displayed as icons or text.
1912 @emph{Right clicking} in the folder or contents area brings up a menu
1913 containing formatting options.  Select @emph{Display text} to display a
1914 text listing.  Select @emph{Sort items} to sort the contents of the
1915 folder alphabetically.
1924 @node USING THE TRANSPORT CONTROLS
1925 @section USING THE TRANSPORT CONTROLS
1927 Transport controls are just as useful in navigation as they are in
1928 playing back footage, hence they are described here.  Each of the
1929 Viewer, Compositor, and Program windows has a transport panel.
1931 @sp 1
1932 @image{transport_panel} @emph{The transport panel}.
1934 The transport panel is controlled by the keyboard as well as the
1935 graphical interface.  For each of the operations it performs, the
1936 starting position is the position of the insertion point or slider. 
1937 The ending position is either the end or start of the timeline or the
1938 end or start of the selected region if there is one.
1940 The orientation of the end or start depends on the direction of
1941 playback.  If it's forward the end position is the end of the selected
1942 region.  If it's backward the end position is the start of the selected
1943 region.
1945 The insertion point moves to track playback.  When playback stops it
1946 leaves the insertion point where it stopped.  Thus, by playing back you
1947 change the position of the insertion point.
1949 The keyboard interface is usually the fastest and has more speeds.  The
1950 transport keys are arranged in a @emph{T} on the number pad.
1952 @itemize
1954 @item
1955 @emph{+} Fast reverse
1956 @item
1957 @emph{6} Normal reverse
1958 @item
1959 @emph{5} Slow reverse
1960 @item
1961 @emph{4} Frame reverse
1962 @item
1963 @emph{1} Frame forward
1964 @item
1965 @emph{2} Slow forward
1966 @item
1967 @emph{3} Normal forward
1968 @item
1969 @emph{Enter} Fast forward
1970 @item
1971 @emph{0} Stop
1972 @item
1973 @emph{Spacebar} Normal forward
1974 @end itemize
1976 Hitting any key on the keyboard twice pauses it.
1978 When using frame advance functions the behavior may seem odd.  If you
1979 frame advance forward and then frame advance backward, the displayed
1980 frame doesn't change.  This is because the playback position isn't the
1981 frame but the time between two frames.  The rendered frame is the area
1982 that the playback position crosses.  When you increment the time
1983 between two frames by one and decrement it by one, you cross the same
1984 frame both times and so the same frame is displayed.
1989 @node USING BACKGROUND RENDERING
1990 @section USING BACKGROUND RENDERING
1994 Background rendering allows impossibly slow effects to play back in
1995 realtime shortly after the effect is pasted in the timeline.  It
1996 continuously renders temporary output.  When renderfarm is enabled,
1997 background rendering uses the renderfarm continuously.  This way, any
1998 size video can be seen in realtime merely by creating a fast enough
1999 network with enough nodes.
2001 Background rendering is enabled in settings->preferences->performance. 
2002 It has one interactive function: @emph{settings->set background render}.  This
2003 sets the point where background rendering begins to where the in point
2004 is.  If any video exists, a red bar appears in the time bar showing
2005 what has been background rendered.
2007 It's often useful to insert an effect or a transition and then select
2008 settings->set background render right before the effect to preview it
2009 in full framerates.
2013 @node EDITING
2014 @chapter EDITING
2017 Editing comprises both the time domain and the track domain.  Since the
2018 timeline consists of a stack of tracks, you need to worry about how to
2019 sort and create tracks in addition to what time certain media appears
2020 on a track.
2022 In the time domain, Cinelerra offers many ways to approach the editing
2023 process.  The three main methods are two screen editing, drag and drop
2024 editing, and cut and paste editing.
2026 There are several concepts Cinelerra uses when editing which apply to
2027 all the methods.  The timeline is where all editing decisions are
2028 represented.  Every track on the timeline has a set of attributes on
2029 the left, the most important of which is the @emph{arm track}
2030 attribute.
2032 @sp 1
2033 @image{track_attributes}
2034 @emph{Track attributes}
2036 Only the @emph{armed tracks} are affected by editing operations.  Make
2037 sure you have enough armed destination tracks when you paste or splice
2038 material or some tracks in the material will get left out.
2040 The other attributes affect the output of the track.
2042 @itemize
2044 @item
2046 @b{Play track} determines whether the track is rendered or not.  If
2047 it's off, the track is not rendered.  However, if the track is chained
2048 to any other tracks, the other tracks perform all the effects in the
2049 chained track, regardless of play status.
2051 @item
2053 @b{Gang fader} causes the fader to track the movement of whatever other
2054 fader you're adjusting.  A fader is only ganged if the @b{arm track} is
2055 also on.  This is normally used to adjust audio levels on all the
2056 tracks simultaneously.
2058 @item
2060 @b{Draw data} determines if picons or waveforms are drawn on the
2061 track.  By default, some file formats load with this off while other
2062 file formats load with it on.  This depends on whether the file format
2063 takes a long time to draw on the timeline.  Merely set it to on if you
2064 want to see picons for any file format.
2066 @item
2068 @b{Mute track} causes the output to be thrown away once the track is
2069 completely rendered.  This happens whether or not @b{play track} is
2070 on.  If the track is part of an effect chain, the output of the effect
2071 chain track is overlayed on the final output even though it's routed
2072 back to another track.  Mute track is used to keep the effect chain
2073 track from overlapping the output of the source track.
2075 @end itemize
2077 There are two ways to set the same attribute on multiple tracks very
2078 quickly.  Hold down @b{shift} while clicking a track's attribute to
2079 match the same attribute in all the other tracks.  If you don't want to
2080 affect all the other tracks, click on an attribute and drag across
2081 other tracks to have the same attribute set in them.
2083 In addition to restricting editing operations, the armed tracks in
2084 combination with the active region determine where material is inserted
2085 when loading files.  If the files are loaded with one of the insertion
2086 strategies which doesn't delete the existing project, the armed tracks
2087 will be used as destination tracks.
2089 The active region is the range of time in the edit decision on the
2090 timeline.  The active region is determined first by the presence of
2091 in/out points in the timeline.  If those don't exist the highlighted
2092 region is used.  If no highlighted region exists the insertion point is
2093 used as the active region and the active length is 0.
2095 Finally, editing decisions never affect source material.  Editing only affects
2096 pointers to source material, so if you want to have a media file at the
2097 end of your editing session which represents the editing decisions, you
2098 need to @emph{render} it. @xref{RENDERING FILES}.
2100 @menu
2101 * MANIPULATING TRACKS::
2102 * TWO SCREEN EDITING::
2103 * DRAG AND DROP EDITING::
2104 * CUT AND PASTE EDITING::
2105 * TRIMMING::
2106 @end menu
2111 @node MANIPULATING TRACKS
2112 @section MANIPULATING TRACKS
2114 Tracks in Cinelerra either contain audio or video.  There is no special
2115 designation for tracks other than the type of media they contain.  When
2116 you create a new project, it contains a certain mumber of default
2117 tracks.  You can still add or delete tracks from a number of menus. 
2118 The @emph{Tracks} menu contains a number of options for dealing with
2119 multiple tracks simultaneously.  Each track itself has a popup menu
2120 which affects one track.
2122 Bring up the popup menu by moving over a track and right clicking.  The
2123 popup menu affects the track whether it's armed or not.
2125 @emph{Move up} and @emph{move down} moves the one track up or down in
2126 the stack.  @emph{Delete track} deletes the track.
2128 Operations in the @emph{Tracks} menu affect only tracks which are
2129 armed.
2131 @emph{Move tracks up} and @emph{Move tracks down} shift all the armed
2132 tracks up or down the stack.
2134 @emph{Delete tracks} deletes the armed tracks.
2136 @emph{Delete last track} deletes the last track, whether it's armed or
2137 not.  Holding down the @emph{d} key quickly deletes all the tracks.
2139 @emph{Concatenate tracks} is more complicated.  It takes every
2140 @emph{playable} track and concatenates it to the end of the first
2141 @emph{armed tracks}.  If there are two armed tracks followed by two
2142 playable tracks, the concatenate operation puts the two playable tracks
2143 after the two armed tracks.  If there are three playable tracks
2144 instead, two tracks are put after the armed tracks and a third track is
2145 put on the end of the first armed track.  The destination track wraps
2146 around until all the playable tracks are concatenated.
2148 Finally, you'll want to create new tracks.  The @emph{Audio} and
2149 @emph{Video} menus each contain an option to add a track of their
2150 specific type.  In the case of audio, the new track is put on the
2151 bottom of the timeline and the output channel of the audio track is
2152 incremented by one.  In the case of video, the new track is put on the
2153 top of the timeline.  This way, video has a natural compositing order. 
2154 New video tracks are overlayed on top of old tracks.
2164 @node TWO SCREEN EDITING
2165 @section TWO SCREEN EDITING
2167 This is the fastest way to construct a program out of movie files.  The
2168 idea consists of viewing a movie file in one window and viewing the
2169 program in another window.  Sections of the movie file are defined in
2170 one window and transferred to the end of the program in the other
2171 window.
2173 The way to begin a two screen editing session is to load some
2174 resources.  In @emph{file->load} load some movies with the insertion
2175 mode @emph{create new resources}.  You want the timeline to stay
2176 unchanged while new resources are brought in.  Go to the Resource
2177 Window and select the @emph{media} folder.  The newly loaded resources
2178 should appear.  Drag a resource from the media side of the window over
2179 the Viewer window.
2181 There should be enough armed tracks on the timeline to put the sections
2182 of source material that you want.  If there aren't, create new tracks
2183 or arm more tracks.
2185 In the viewer window seek to the starting point of a clip you want to
2186 use.  Use either the @emph{slider} or the @emph{transport controls}. 
2187 Use the @emph{preview region} to narrow down the search.  Set the
2188 starting point with the @image{in_point_button} @emph{in point button}.
2190 Seek to the ending point of the clip you want to use.  Set the ending
2191 point with the @image{out_point_button} @emph{out point button}.  The
2192 two points should now appear on the timebar and define a clip.
2194 There are several things you can do with the clip now.
2196 @itemize
2198 @item
2200 Splice @image{splice_button} inserts the clip in the timeline, pushing
2201 everything back.  If an @emph{in point} or @emph{out point} exists on
2202 the timeline it's inserted there, otherwise it's inserted after the
2203 insertion point.  After that, the insertion point moves to the end of
2204 the clip.  If there is no in/out point, the insertion point will be
2205 used as the next splice location.  This way you can continuously build
2206 up the program by splicing.
2208 @item
2210 Overwrite @image{overwrite_button} overwrites the region of the
2211 timeline with the clip.  If an @emph{in point} or @emph{out point}
2212 exists on the timeline it's overwritten there, otherwise it's
2213 overwritten after the insertion point.  If a region is highlighted or
2214 both in and out points exist the difference between the active region
2215 and the clip length is deleted.
2219 @item
2221 Create a clip @image{toclip_button} generates a new clip for the
2222 resource window containing the affected region but doesn't change the
2223 timeline.  Every clip has a title and a description.  These are
2224 optional.
2226 @item
2228 Copy behaves the same as in cut and paste editing.
2230 @end itemize
2232 Two screen editing can be done purely by keybard shortcuts.  When you
2233 move the pointer over any button a tooltip should appear, showing what
2234 key is bound to that button.  In the Viewer window, the number pad keys
2235 control the transport and the @emph{[ ] v} keys perform in/out points
2236 and splicing.
2248 @node DRAG AND DROP EDITING
2249 @section DRAG AND DROP EDITING
2251 The answer is yes, you can you create a bunch of clips and drag them on
2252 the timeline.  You can also drag edits around the timeline.
2254 Load some files using @emph{file->load}.  Set the insertion mode to
2255 @emph{Create new resources}.  This loads the files into the Resource
2256 Window.  Create some audio and video tracks on the timeline using the
2257 video and audio menus.
2259 Open the @emph{Media} folder in the resource window.  Drag a media file
2260 from the resource window to the timeline.  If the media has video, drag
2261 it onto a video track.  If the media is pure audio, drag it onto an
2262 audio track.
2264 Cinelerra fills out the audio and video tracks below the dragging
2265 cursor with data from the file.  This affects what tracks you should
2266 create initially and which track to drag the media onto.  If the media
2267 has one video track and two audio tracks, you'll need one video track
2268 and two audio tracks on the timeline and the media should be dragged
2269 over the first video track.  If the media has audio only you'll need
2270 one audio track on the timeline for every audio track in the media and
2271 the media should be dragged over the first audio track.
2273 When dragging, the media snaps to the start of track if the track is
2274 empty.  If there are edits on the track, the media snaps to the nearest
2275 edit boundary.
2277 You can also drag multiple files from the resource window.  Either draw
2278 a box around the files, use SHIFT, or use CTRL when selecting files. 
2279 When you drop the files in the timeline, they are concatenated.  The
2280 behavior of SHIFT and CTRL changes depending on if the resources are in
2281 text or icons.
2283 To display the resources as text or icons, right click inside the media
2284 list.  Select either @emph{display icons} or @emph{display text} to
2285 change the list format.
2287 When displaying text in the resource window @emph{SHIFT-clicking} on
2288 media files extends the number of highlighted selections. 
2289 @emph{CTRL-clicking} on media files in text mode selects additional
2290 files one at a time.
2292 When displaying icons in the resource window @emph{SHIFT-clicking} or
2293 @emph{CTRL-clicking} selects media files one at a time.
2295 In addition to dragging media files, if you create clips and open the
2296 @emph{clip} folder you can drag clips on the timeline.
2298 In the timeline there is further dragging functionality.  To enable the
2299 dragging functionality of the timeline, select the arrow toggle
2300 @image{arrow}.  Move over an edit and drag it.  If more than one
2301 track is armed, Cinelerra will drag any edits which start on the same
2302 position as the edit the cursur is currently over.  During a dragging
2303 operation the edit snaps to the nearest boundary.
2305 Dragging edits around the timeline allows you to sort music playlists,
2306 sort movie scenes, and give better NAB demos but not much else.
2318 @node CUT AND PASTE EDITING
2319 @section CUT AND PASTE EDITING
2321 This is the traditional method of editing in audio editors.  In the
2322 case of Cinelerra, you either need to start a second copy of Cinelerra
2323 and copy from one copy to the other, copy from different tracks in the
2324 same copy, or load a media file into the Viewer and copy from there.
2326 Load some files onto the timeline.  To perform cut and paste editing
2327 select the @image{ibeam} i-beam toggle.  Select a region of the
2328 timeline and select the @image{cut} cut button to cut it.  Move the
2329 insertion point to another point in the timeline and select the
2330 @image{paste} paste button.  Assuming no in/out points are defined on
2331 the timeline this performs a cut and paste operation.
2333 If in/out points are defined, the insertion point and highlighted
2334 region are overridden by the in/out points for clipboard operations. 
2335 Thus, with in/out points you can perform cut and paste in drag and drop
2336 mode as well as cut and paste mode.
2338 When editing audio, it is customary to cut from one part of a waveform
2339 into the same part of another waveform.  The start and stop points of
2340 the cut are identical in each waveform and might be offset slightly,
2341 while the wave data is different.  It would be very hard to highlight
2342 one waveform to cut it and highlight the second waveform to paste it
2343 without changing the relative start and stop positions.
2345 One option for simplifying this is to open a second copy of Cinelerra,
2346 cutting and pasting to transport media between the two copies.  This
2347 way two highlighed regions can exist simultanously.
2349 Another option is to set in/out points for the source region of the
2350 source waveform and set labels for the destination region of the
2351 destination waveform.  Perform a cut, clear the in/out points, select
2352 the region between the labels, and perform a paste.
2356 A final operation in cut and paste editing is the @emph{edit->clear}
2357 operation.  If a region is highlighted or in/out points exist, the
2358 affected region is cleared by @emph{edit->clear}.  But if the insertion
2359 point is over an edit boundary and the edits on each side of the edit
2360 boundary are the same resource, the edits are combined into one edit
2361 comprised by the resource.  The start of this one edit is the start of
2362 the first edit and the end of this one edit is the end of the second
2363 edit.  This either results in the edit expanding or shrinking.
2369 @node TRIMMING
2370 @section TRIMMING
2372 With some edits on the timeline it's possible to do trimming.  By
2373 trimming you shrink or grow the edit boundaries by dragging them.  In
2374 either drag and drop mode or cut and paste mode, move the cursor over
2375 an edit boundary until it changes shape.  The cursor will either be an
2376 expand left or an expand right.  If the cursor is an expand left, the
2377 dragging operation affects the beginning of the edit.  If the cursor is
2378 an expand right, the dragging operation affects the end of the edit.
2380 When you click on an edit boundary to start dragging, the mouse button
2381 number determines which dragging behavior is going to be followed.  3
2382 possible behaviors are bound to mouse buttons in the interface
2383 preferences. @xref{INTERFACE}.
2385 The effect of each drag operation not only depends on the behavior
2386 button but whether the beginning or end of the edit is being dragged.
2387 When you release the mouse button, the trimming operation is performed.
2389 In a @emph{Drag all following edits} operation, the beginning of the
2390 edit either cuts data from the edit if you move it forward or pastes
2391 new data from before the edit if you move it backward.  The end of the
2392 edit pastes data into the edit if you move it forward or cuts data from
2393 the end of the edit if you move it backward.  All the edits thereafter
2394 shift.  Finally, if you drag the end of the edit past the start of the
2395 edit, the edit is deleted.
2397 In a @emph{Drag only one edit} operation, the behavior is the same when
2398 you drag the beginning or end of an edit.  The only difference is none
2399 of the other edits in the track shift.  Instead, anything adjacent to
2400 the current edit expands or shrinks to fill gaps left by the drag
2401 operation.
2403 In a @emph{Drag source only} operation, nothing is cut or pasted.  If
2404 you move the beginning or end of the edit forward, the source reference
2405 in the edit shifts forward.  If you move the beginning or end of the
2406 edit backward, the source reference shifts backward.  Where the edit
2407 appears in the timeline remains the same but the source shifts.
2409 For all file formats besides still images, the extent of the trimming
2410 operation is clamped to the source file length.  Attempting to drag the
2411 start of the edit beyond the start of the source clamps it to the
2412 source start.
2414 In all trimming operations, all edits which start on the same position
2415 as the cursor when the drag operation begins are affected.  Unarm
2416 tracks to prevent edits from getting affected.
2425 @node USING EFFECTS
2426 @chapter USING EFFECTS
2428 It would be sufficient to perform all changes to the timeline using
2429 editing operations, but this isn't very extensible.  Certain timeline
2430 changes should produce a different effect in the output without
2431 involving a unique procedure to apply each change.  This is why we have
2432 effects.
2434 Effects fall into three categories, and each effect in a category is
2435 applied using the same procedure.
2438 @menu
2439 * REALTIME EFFECTS::
2440 * RENDERED EFFECTS::
2441 * TRANSITIONS::
2442 * LADSPA EFFECTS::
2443 @end menu
2447 @node REALTIME EFFECTS
2448 @section REALTIME EFFECTS
2450 These are layered under the track they apply to.  They process the
2451 track when the track is played back, with no permanent storage of the
2452 output except when the project is rendered.
2454 All the realtime effects are listed in the resource window, divided
2455 into two groups: audio effects and video effects.  Audio effects should
2456 be dragged from the resource window onto audio tracks.  Video effects
2457 should be dragged onto video tracks.
2459 If there is data on the destination track, the effect is applied to the
2460 entire track.  If there is no data on the track the effect is deleted. 
2461 Finally, if a region of the track is selected the effect is pasted into
2462 the region, regardless of whether there is data.
2464 Some of the effects don't process data but synthesize data.  In the
2465 case of a synthesis effect, you'll want to select a region of the
2466 track so the dragging operation pastes it without deleting it.
2468 When dragging more than one effect onto a track, you'll see the effects
2469 layering from top to bottom, on the bottom of the track.   When the
2470 track is played back, effects are processed from top to bottom.  The
2471 output of the top effect becomes the input of the bottom effect and so
2472 on and so forth.
2474 In addition to dragging from the resource window, effects may be
2475 applied to a track by a popup menu.  Right click on a track and select
2476 @emph{Attach effect} from the popup.  The attach effect dialog gives
2477 you more control than pure dragging and dropping.  For one thing, the
2478 attach effect dialog lets you attach two more types of effects: shared
2479 effects and shared tracks.  Select a plugin from the @emph{Plugins}
2480 column and hit @emph{Attach} under the plugins column to attach it. 
2481 The effect is the same as if the effect was dragged from the resource
2482 window.
2484 When an effect exists under a track, it most often needs to be
2485 configured.  Go to the effect and right click on it to bring up the
2486 effect popup.  In the effect popup is a @emph{show} option.  The show
2487 option causes the GUI for the effect to appear under the cursor.  Most
2488 effects have GUI's but some don't.  If the effect doesn't have a GUI,
2489 nothing pops up when the @emph{show} option is selected.  When you
2490 tweek parameters in the effect GUI, the parameters normally effect the
2491 entire duration of the effect.
2494 @menu
2495 * REALTIME EFFECT TYPES::
2496 * EDITING REALTIME EFFECTS::
2497 @end menu
2501 @node REALTIME EFFECT TYPES
2502 @subsection REALTIME EFFECT TYPES
2504 The two other effect types supported by the Attach Effect dialog are
2505 recycled effects.  In order to use a recycled effect, three requiremenets
2506 must be met:
2508 @itemize
2510 @item
2511 There must be other effects in the timeline.
2513 @item
2515 The other effects must be of the same type as the track you're
2516 attaching an effect to.  If the track is an audio track, the effects
2517 must be audio effects.  If the track is a video track, the effects must
2518 be video effects.
2520 @item
2522 The insertion point or selected region must start inside the other effects.
2524 @end itemize
2526 In the case of a shared effect, these conditions must be true.  In the
2527 case of a shared track, there merely must be another track on the
2528 timeline of the same type as the track you're applying an effect to. 
2529 If you right clicked on a video track to attach an effect, there won't
2530 be anything in the @emph{shared tracks} column if no other video track
2531 exists.  If you right clicked on an audio track there won't be anything
2532 in the shared track column if no other audio track exists.
2534 If shared effects or shared tracks are available, they appear in the
2535 @emph{shared effects} and @emph{shared tracks} columns.  The
2536 @emph{attach} button under each column causes anything highlighted in
2537 the column to be attached under the current track.
2539 Shared effects and shared tracks allow very unique things to be done. 
2540 In the case of a shared effect, the shared effect is treated like a
2541 copy of the original effect except in the shared effect the GUI can't
2542 be brought up.  All configuration of the shared effect is determined by
2543 the GUI of the original effect and only the GUI of the original effect
2544 can be brought up.
2546 When a shared effect is played back, it's processed just like a normal
2547 effect except the configuration is copied from the original effect. 
2548 Some effects detect when they are being shared, like the reverb effects
2549 and the compressor.  These effects determine what tracks are sharing
2550 them and either mix the two tracks together or use one track to stage
2551 some value.  The reverb mixes tracks together to simulate ambience. 
2552 The compressor uses one of the sharing tracks as the trigger.
2554 When an original track has a @emph{shared track} as one of its effects,
2555 the shared track itself is used as a realtime effect.  This is more
2556 commonly known as @emph{bouncing tracks} but Cinelerra achieves the
2557 same operation by attaching shared tracks.  The fade and any effects in
2558 the shared track are applied to the original track.  Once the shared
2559 track has processed the data, the original track performs any effects
2560 which come below the shared track and then composites it on the output.
2562 In addition, once the shared track has processed the output of the
2563 original track like a realtime effect, the shared track mixes itself
2564 into the output with it's settings for pan, mode, and projector.  Thus,
2565 two tracks are mixing the same data on the output.  Most of the time
2566 you don't want the shared track to mix the same data as the original
2567 track on the output.  You want it to stop right before the mixing stage
2568 and give the data back to the original track.  Do this by enabling the
2569 @image{mutepatch_up} mute toggle next to each track for whom you don't
2570 want to mix on the output.
2572 Suppose you were making video and you did want the shared track to
2573 composite the original track's data on the output a second time.  In
2574 the case of video, the video from the shared track would always appear
2575 under the video from the original track, regardless of whether it was
2576 on top of the original track.  This is because shared tracks are
2577 composited in order of their attachment.  Since it's part of the original
2578 track it has to be composited before the original track is composited.
2586 @node EDITING REALTIME EFFECTS
2587 @subsection EDITING REALTIME EFFECTS
2589 Many operations exist for manipulating effects once they are in the
2590 timeline.  Because mixing effects and media is such complex business,
2591 the methods used in editing effects aren't as concise as cutting and
2592 pasting.  Some of the editing happens by dragging in/out points, some
2593 of the editing happens through popup menus, and some of it happens by
2594 dragging effects.
2596 Normally when you edit tracks, the effects follow the editing
2597 decisions.  If you cut from a track, the effect shrinks.  If you drag
2598 edit in/out points, the effect changes length.  This behavior can be
2599 disabled by selecting @emph{Settings->edit effects} in the project
2600 window.  This decouples effects from editing operations, but what if
2601 you just want to edit the effects?
2603 Move the timeline cursor over the effect borders until it changes to a
2604 resize left or resize right icon.  In this state, if you drag the end
2605 of the effect, it performs an edit just like dragging the end of a
2606 track does.  
2608 The three editing behaviors of track trimming apply to effect trimming
2609 and they are bound to the mouse buttons that you set in @emph{interface
2610 preferences}. @xref{INTERFACE}.  When you perform a trim edit on an
2611 effect, the effect boundary is moved by dragging on it.  Unlike track
2612 editing, the effect has no source length.  You can extend the end of an
2613 effect as much as desired without being limited.
2615 Also unlike track editing, the starting position of the drag operation
2616 doesn't bind the edit decision to media.  The media the effect is bound
2617 to doesn't follow effect edits.  Other effects; however, do follow
2618 editing decisions made on an effect.  If you drag the end of an effect
2619 which is lined up to effects on other tracks, the effects on the other
2620 tracks will be edited while the media stays the same.
2622 What happens if you trim the end of an effect in, leaving a lot of
2623 unaffected time near the end of the track?  When you drag an effect in
2624 from the Resource Window you can insert the effect in the portion of
2625 the row unoccupied by the trimming operation.  Realtime effects are
2626 organized into rows under the track.  Each row can have multiple
2627 effects.
2629 In addition to trimming, you can move effects up or down.  Every track
2630 can have a stack of effects under it.  By moving an effect up or down
2631 you change the order in which effects are processed in the stack.  Go
2632 to an effect and right click to bring up the effect menu.  The
2633 @emph{Move up} and @emph{Move down} options move the effect up or down.
2635 When you're moving effects up or down, be aware that if they're shared
2636 as @emph{shared effects}, any references will be pointing to a
2637 different effect after the move operation.
2639 Finally, there's dragging of effects.  Dragging effects works just like
2640 dragging edits.  You must select the @image{arrow} arrow to enter drag and
2641 drop mode before dragging effects.  The effects snap to media
2642 boundaries, effect boundaries, and tracks.  Be aware if you drag a
2643 reference to a shared effect, the reference will usually point to the
2644 wrong effect afterwards.
2646 Right click on an effect to bring up a menu for the effect.  Select
2647 @emph{attach...} to change the effect or change the reference if it is
2648 a shared effect.
2657 @node RENDERED EFFECTS
2658 @section RENDERED EFFECTS
2661 Another type of effect is performed on a section of the track and the
2662 result stored somewhere before it is played back.  The result is
2663 usually pasted into the track to replace the original data.
2665 The rendered effects are not listed in the resource window but instead
2666 are accessed through the @emph{Audio->Render effect} and
2667 @emph{Video->Render effect} menu options.  Each of these menu options
2668 brings up a dialog for the rendered effect.  Rendered effects apply to
2669 only one type of track, either audio or video.  If no tracks of the
2670 type exist, an error pops up.
2672 A region of the timeline to apply the effect to must be defined before
2673 selecting @emph{Render effect...}.  If no in/out points and no
2674 highlighted region exists, the entire region after the insertion point
2675 is treated as the affected region.  Otherwise, the region between the
2676 in/out points or the highlighted region is the affected region.
2678 In the render effect dialog is a list of all the realtime and all the
2679 rendered effects.  The difference here is that the realtime effects are
2680 rendered to disk and not applied under the track.  Highlight an effect
2681 in the list to designate it as the one being performed.
2683 Define a file to render the effect to in the @emph{Select a file to
2684 render to} box.  The @image{magnify} magnifying glass allows file
2685 selection from a list.
2687 Select a file format which can handle the track type.  The
2688 @image{wrench} wrench allows configuration specific to the file format.
2690 There is also an option for creating a new file at each label.  If you
2691 have a CD rip on the timeline which you want to divide into different
2692 files, the labels would become dividing points between the files if
2693 this option were selected.  When the timeline is divided by labels, the
2694 effect is re-initialized at every label.  Normalize operations take the
2695 peak in the current file and not in the entire timeline.
2697 Finally there is an insertion strategy just like in the render dialog. 
2698 It should be noted that even though the effect applies only to audio or
2699 video, the insertion strategy applies to all tracks just like a
2700 clipboard operation.
2702 When you click @emph{OK} in the effect dialog, it calls the GUI of the
2703 effect.  If the effect is also a realtime effect, a second GUI appears
2704 to prompt for acceptance or rejection of the current settings.  After
2705 accepting the settings, the effect is processed.
2720 @node TRANSITIONS
2721 @section TRANSITIONS
2723 When one edit ends and another edit begins, the default behaviour is to
2724 have the first edit's output immediately become the output of the
2725 second edit when played back.  Transitions are a way for the first
2726 edit's output to become the second edit's output with different
2727 variations.
2729 Cinelerra supports audio and video transitions, all of which are listed
2730 in the resource window.  Transitions may only apply to the matching
2731 track type.  Transitions under @emph{audio transitions} can only apply
2732 to audio tracks.  Transitions under @emph{video transitions} can only
2733 apply to video tracks.
2735 Load a video file and cut a section from the center so the edit point
2736 is visible on the timeline.  Go the resource window and click on the
2737 @emph{Video transitions} folder.  Drag a transition from the transition
2738 list onto the second video edit on the timeline.  A box highlights over
2739 where the transition will appear.  Releasing it over the second edit
2740 applies the transition between the first and second edit.
2742 You can now scrub over the transition with the transport controls and
2743 watch the output in the @emph{Compositor window}.  Scrubbing with the
2744 insertion point doesn't normally show transitions because the
2745 transition durations are usually too short.  The exact point in time
2746 when the transition takes effect isn't straightforward.  It starts when
2747 the second edit begins and lasts a certain amount of time into the
2748 second edit.  Therefore, the first asset needs to have enough data
2749 after the edit point to fill the transition into the second edit.
2751 Once the transition is in place, it can be edited similarly to an
2752 effect.  Move the pointer over the transition and right click to bring
2753 up the transition menu.  The @emph{show} option brings up specific
2754 parameters for the transition in question if there are any.  The
2755 @emph{length} option adjusts the length of the transition in seconds. 
2756 Once these two parameters are set, they are applied to future
2757 transitions until they are changed again.  Finally, the @emph{detach}
2758 option removes the transition from the timeline.
2760 Dragging and dropping transitions from the Resource window to the
2761 Program window can be really slow and tiring.  Fortunately, once you
2762 drag a transition from the Resource window, the @emph{U} and @emph{u}
2763 keys will paste the same transition.  The @emph{U} key pastes the last
2764 video transition and the @emph{u} key pastes the last audio transition
2765 on all the recordable tracks.  If the insertion point or in point is
2766 over an edit, the beginning of the edit is covered by the transition.  
2768 It should be noted that when playing transitions from the timeline to a
2769 hardware accelerated video device, the hardware acceleration will
2770 usually be turned off momentarily during the transition and on after
2771 the transition in order to render the transition.  Using an
2772 unaccelerated video device for the entire timeline normally removes the
2773 disturbance.
2779 @node LADSPA EFFECTS
2780 @section LADSPA EFFECTS
2783 LADSPA effects are supported in realtime and rendered mode for audio. 
2784 The LADSPA plugins you get from the internet vary in quality.  Most
2785 can't be tweeked in realtime very easily and work better when
2786 rendered.  Some crash and some can only be applied to one track due to
2787 a lack of reentrancy.  Although Cinelerra implements the LADSPA
2788 interface as accurately as possible, multiple tracks of realtime,
2789 simultaneous processing go beyond the majority of LADSPA users.  LADSPA
2790 effects appear in the audio folder as the hammer and screwdriver, to
2791 signify that they are Plugins for Linux Audio Developers.
2793 LADSPA Effects are enabled merely by setting the @emph{LADSPA_PATH}
2794 environment variable to the location of your LADSPA plugins or putting
2795 them in the @emph{/usr/lib/cinelerra} directory.
2806 @node SETTING PROJECT ATTRIBUTES
2807 @chapter SETTING PROJECT ATTRIBUTES
2809 When you play media files in Cinelerra, the media files have a certain
2810 number of tracks, a certain frame size, a certain sample size, and so
2811 on and so forth.  No matter what the media file has; however, it is
2812 still played back according to the project attributes.  If an audio
2813 file's samplerate is different than the project attributes, it is
2814 resampled.  If a video file's frame size is different than the project
2815 attributes, it is composited on a black frame, either cropped or
2816 bordered with black.
2818 The project attributes are adjusted in @emph{settings->format} and in
2819 to a more limited extent in @emph{file->new}.  When you adjust project
2820 settings in @emph{file->new} a new timeline is created with no data. 
2821 Every timeline created from this point uses the same settings.  When
2822 you adjust settings in @emph{settings->format}, the timeline is not
2823 recreated with no data but every timeline created from this point uses
2824 the same settings.
2826 In addition to the traditional settings for sample rate, frame rate,
2827 frame size, Cinelerra uses some unusual settings like @emph{channel
2828 positions, color model, and aspect ratio.}
2830 @itemize
2832 @item
2834 Channel positions is the only setting which doesn't affect the output
2835 necessarily.  Click on a speaker icon and drag to change the position
2836 of a channel.  It is merely a convenience so when more than 2 channels
2837 are used, the pan controls on the timeline are effective.  Channels 3,
2838 4, and 5 wouldn't be very adjustible if they occupied the same
2839 locations as channels 1 and 2 on a pan control.  Normally a 6 channel
2840 configuration would look like this:
2842 @sp 2
2843 @image{channelpositions}
2844 @sp 2
2846 But different channels can be positioned very close together to make
2847 them have the same output.
2852 @item
2854 Color model is very important for video playback.  The video is stored
2855 on disk in one colormodel, normally compressed using a YUV derivative. 
2856 When played back, Cinelerra decompresses it from the file format
2857 directly into the format of the output device.  If effects are
2858 processed, the decompression is into an internal colormodel first and
2859 the internal colormodel is then converted to the format of the output
2860 device.  The selection of internal colormodel determines how accurate
2861 and fast the effects are.
2863 Cinelerra colormodels are described using a certain packing order of
2864 components and a certain number of bits for each component.  The
2865 packing order is printed on the left and the bit allocation is printed
2866 on the right.
2868 @emph{RGBA8888} uses red, green, blue, and alpha with 8 bits per
2869 channel.
2871 In order to do effects which involve alpha channels, a colormodel with
2872 an alpha channel must be selected.  These are RGBA8888, YUVA8888,
2873 RGBA16161616, YUVA16161616.  The 4 channel colormodels are notoriously
2874 slower than 3 channel colormodels, with the slowest being
2875 RGBA16161616.  Some effects, like fade, work around the need for alpha
2876 channels while other effects, like chromakey, require an alpha channel
2877 to do anything, so it's a good idea to try the effect without alpha
2878 channels.
2880 The YUV colormodels are usually faster than RGB colormodels when using
2881 compressed footage.  They also destroy fewer colors than RGB
2882 colormodels.  If footage stored as JPEG or MPEG is processed many times
2883 in RGB, the colors will fade while they won't if processed in YUV.
2885 @item
2887 Aspect ratio determines the shape of the video output when using the
2888 X11 video output.  The numbers in each direction can be any floating
2889 point number.  When drawn on the screen, video pixels are stretched to
2890 match the aspect ratio.
2896 @end itemize
2903 @node COMPOSITING
2904 @chapter COMPOSITING
2907 A large amount of Cinelerra's binary size is directed towards
2908 compositing.  When you remove the letterboxing from a widescreen show,
2909 you're compositing.  Changing the resolution of a show, making a split
2910 screen, and fading in and out among other things are all compositing
2911 operations in Cinelerra.  Cinelerra detects when it's in a compositing
2912 operation and plays back through the compositing engine only then. 
2913 Otherwise, it uses the fastest decoder available in the hardware.
2915 Compositing operations are done on the timeline and in the Compositor
2916 window.  Shortcuts exist in the Resource window for changing project
2917 attributes.  Once some video files are on the timeline, the compositor
2918 window is a good place to try compositing.
2921 @menu
2922 * THE CAMERA AND PROJECTOR::
2923 * MASKS::
2924 * CROPPING::
2925 * SAFE REGIONS::
2926 * OVERLAY MODES::
2927 * TRACK AND OUTPUT SIZES::
2928 @end menu
2932 @node THE CAMERA AND PROJECTOR
2933 @section THE CAMERA AND PROJECTOR
2935 In the compositor window, the most important functions are the
2936 @image{camera} camera button and the @image{projector} projector
2937 button.  These control operation of the camera and projector.  Inside
2938 Cinelerra's compositing pipeline, the camera determines where in the
2939 source video the temporary is copied from.  The projector determines
2940 where in the output the temporary is copied to.  The temporary is a
2941 frame of video in Cinelerra's memory where all graphics processing is
2942 done.  Each track has a different temporary which is defined by the
2943 track size.  By resizing the tracks you can create splitscreens, pans,
2944 and zooms.
2946 @sp 2
2947 @image{compositing_pipeline}
2948 @sp 2
2949 @emph{Visual representation of the compositing pipeline}.
2951 When editing the camera and projector in the compositing window, the
2952 first track with @emph{record} enabled is the track affected.  Even if
2953 the track is completely transparent, it's still the affected track.  If
2954 multiple video tracks exist, the easiest way to select one track for
2955 editing is to @emph{shift-click} on the record icon of the track.  This
2956 solos the track.
2958 When the @emph{projector} button is enabled in the compositor window,
2959 you're in projector editing mode.  A guide box appears in the video
2960 window.  Dragging anywhere in the video window causes the guide box to
2961 move, hopefully along with the video.  @emph{shift-dragging} anywhere
2962 in the video window causes the guide box to shrink and grow along with
2963 the video.  Once you've positioned the video with the projector, you're
2964 ready to master the camera.
2966 Select the @image{camera} camera button to enable camera editing mode. 
2967 In this mode, the guide box shows where the camera position is in
2968 relation to past and future camera positions but not where it is in
2969 relation to the source video.  Dragging the camera box in the
2970 compositor window doesn't move the box but instead moves the location
2971 of the video inside the box.
2973 For example, when you drag the camera left, the video moves right. 
2974 When you drag the camera up, the video moves down.  When you shift-drag
2975 the camera, the effect is the same as if you zoomed in or out of the
2976 source.  The intention of the camera is to produce still photo panning,
2977 while the intention of the projector is to composite several sources in
2978 the same scene.
2980 In the compositing window, there is a popup menu of options for the
2981 camera and projector.  Right click over the video portion of the
2982 compositing window to bring up the menu.
2984 @itemize
2986 @item Reset Camera causes the camera to return to the center position.
2988 @item Reset Projector causes the projector to return to the center.
2990 @end itemize
2993 The camera and projector have shortcut operations neither in the popup
2994 menu or represented in video overlays.  These are accessed in the
2995 @emph{Tool window}.  Most operations in the Compositor window have a
2996 tool window which is enabled by activating the @image{toolwindow}
2997 question mark.
2999 In the case of the camera and projector, the tool window shows x, y,
3000 and z coordinates.  By either tumbling or entering text directly, the
3001 camera and projector can be precisely positioned.  9 justification
3002 types are also defined for easy access.  A popular justification
3003 operation is upper left projection after image reduction.  This is used
3004 when reducing the size of video with aspect ratio adjustment.
3006 The translation effect allows simultaneous aspect ratio conversion and
3007 reduction but is easier to use if the reduced video is put in the upper
3008 left of the temporary instead of in the center.  The track size is set
3009 to the original size of the video and the camera is centered.  The
3010 output size is set to the reduced size of the video.  Without any
3011 effects, this produces just the cropped center portion of the video in
3012 the output.
3014 The translation effect is dropped onto the video track.  The input
3015 dimensions of the translation effect are set to the original size and
3016 the output dimensions are set to the reduced size.  To put the reduced
3017 video in the center section that the projector shows would require
3018 offsetting @emph{out x and out y} by a complicated calculation. 
3019 Instead, we leave @emph{out x and out y} at 0 and use the projector's
3020 tool window.
3022 Merely by selecting @image{left_justify} left justify and
3023 @image{top_justify} top justify, the projector displays the reduced
3024 image from the top left corner of the temporary in the center of the
3025 output.
3032 @node MASKS
3033 @section MASKS
3035 Masks select a region of the video for either displaying or hiding. 
3036 Masks are also used in conjunction with another effect to isolate the
3037 effect to a certain region of the frame.  A copy of one video track may
3038 be delayed slightly and unmasked in locations where the one copy has
3039 interference but the other copy doesn't.  Color correction may be
3040 needed in one section of a frame but not another.  A mask can be
3041 applied to just a section of the color corrected track while the
3042 vanilla track shows through.  Removal of boom microphones, airplanes,
3043 and housewives are other mask uses.
3045 The order of the compositing pipeline affects what can be done with
3046 masks.  Mainly, masks are performed on the temporary after effects and
3047 before the projector.  This means multiple tracks can be bounced to a
3048 masked track and projected with the same mask.
3050 Our compositing pipeline graph now has a masking stage.  There are 8
3051 possible masks per track.  Each mask is defined separately, although
3052 they each perform the same operation, whether it's addition or
3053 subtraction.
3055 @sp 2
3056 @image{compositing_pipeline2}
3057 @sp 2
3058 @emph{Compositing pipeline with masks}
3060 To define a mask, go into the Compositor window and enable the
3061 @image{mask} @emph{mask} toggle.  Now go over the video and
3062 click-drag.  Click-drag again in another part of the image to create
3063 each new point of the mask.  While it isn't the conventional bezier
3064 curve behavior, this masking interface performs in realtime what the
3065 effect of the mask is going to be.  Creating each point of the mask
3066 expands a rubber band curve.  
3068 Once points are defined, they can be moved by @emph{ctrl-dragging} in
3069 the vicinity of the corner.  This; however, doesn't smooth out the
3070 curve.  The in-out points of the bezier curve are accessed by
3071 @emph{shift-dragging} in the vicinity of the corner.  Then
3072 @emph{shift-dragging} near the in or out point causes the point to
3073 move.
3075 Finally, once you have a mask, the mask can be translated in one piece
3076 by @emph{alt-dragging} the mask.  Mask editing in Cinelerra is
3077 identical to how The Gimp edits masks except in this case the effect of
3078 the mask is always on.
3080 The masks have many more parameters which couldn't be represented with
3081 video overlays.  These are represented in the tool window for masks. 
3082 Selecting the @image{toolwindow} question mark when the @image{mask}
3083 mask toggle is highlighted brings up the mask options.
3085 The @emph{mode} of the mask determines if the mask removes data or
3086 makes data visible.  If the mode is subtractive, the mask causes video
3087 to disappear.  If the mode is additive, the mask causes video to appear
3088 and everything outside the mask to disappear.
3090 The @emph{value} of the mask determines how extreme the addition or
3091 subtraction is.  In the subtractive mode, higher values subtract more
3092 alpha.  In the additive mode, higher values make the region in the mask
3093 brighter while the region outside the mask is always hidden.
3095 The mask number determines which one of the 8 possible masks we're
3096 editing.  Each track has 8 possible masks.  When you click-drag in the
3097 compositor window, you're only editing one of the masks.  Change the
3098 value of @emph{mask number} to cause another mask to be edited.  The
3099 previous mask is still active but only the curve overlay for the
3100 currently selected mask is visible.
3102 When multiple masks are used, their effects are ORed together.  Every
3103 mask in a single track uses the same value and mode.
3105 The edges of a mask are hard by default but this rarely is desired. 
3106 The @emph{feather} parameter determines how many pixels to feather the
3107 mask.  This creates softer edges but takes longer to render.
3109 Finally, there are parameters which affect one point on the current
3110 mask instead of the whole mask.  These are @emph{Delete, x, y}.  The
3111 active point is defined as the last point dragged in the compositor
3112 window.  Any point can be activated merely by @emph{ctrl-clicking} near
3113 it without moving the pointer.  Once a point is activated,
3114 @emph{Delete} deletes it and @emph{x, y} allow repositioning by numeric
3115 entry.
3120 @node CROPPING
3121 @section CROPPING
3125 Cropping changes the value of the output dimensions and the projector
3126 to reduce the visible picture area.  Enable the @image{crop} crop
3127 toggle and the @image{toolwindow} tool window to perform cropping in
3128 the compositing window.  This draws a rectangle over the video. 
3129 Click-drag anywhere in the video to create a new rectangle.  Click-drag
3130 over any corner of the rectangle to reposition the corner.  The tool
3131 window allows text entry of the coordinates.  When the rectangle is
3132 positioned, hit the @emph{do it} button in the tool window.
3137 @node SAFE REGIONS
3138 @section SAFE REGIONS
3140 On consumer displays the borders of the image are cut off and within
3141 the cutoff point is a region which isn't always square like it is in
3142 the compositor window.  The borders are intended for scratch room and
3143 vertical blanking data.  You can show where these borders are by
3144 enabling the @image{titlesafe} safe regions toggle.  Keep titles inside
3145 the inner rectangle and keep action inside the outer rectangle.
3154 @node OVERLAY MODES
3155 @section OVERLAY MODES
3157 Every track has an overlay mode, accessible by expanding the track. 
3158 Select the @image{expandpatch_checked} expand track toggle to view all
3159 the options for a video track.  The overlay mode of the track is
3160 @emph{normal} by default.  Select other modes by selecting the
3161 @emph{normal} button.  Overlay modes are processed inside the projector
3162 stage of compositing.  The different modes are summarized below.
3164 @itemize
3166 @item
3168 Normal uses a traditional Porter-Diff equation to blend tracks with
3169 alpha.  When no alpha exists, the new track replaces the output.
3171 @item
3173 In addition, whatever is in the output is added to the current track. 
3174 The result is blended based on the current track's alpha onto the
3175 output.
3177 @item
3179 In subtraction, the current track is subtracted from the output and the
3180 result is alpha blended onto the output.
3182 @item 
3184 Multiply is the most useful operation.  The current track is multiplied
3185 by the output and the result blended onto the output.  Usually a black
3186 and white image with no alpha channel or a white title on a black image
3187 is used as the current track.  With the multiply operation, only the
3188 output portions under the white area show.
3190 @item
3192 Divide divides the current track by the output and the result is
3193 blended into the output.  It usually results in overloaded levels.
3195 @item
3197 Replace does no blending and overwrites the output with the current
3198 track.
3200 @end itemize
3206 @node TRACK AND OUTPUT SIZES
3207 @section TRACK AND OUTPUT SIZES
3209 The size of the temporary and the size of the output in our compositing
3210 pipeline are independant and variable.  This fits into everything
3211 covered so far.  The camera's viewport is the temporary size.  Effects
3212 are processed in the temporary and are affected by the temporary size. 
3213 Projectors are rendered to the output and are affected by the output
3214 size.  If the temporary is smaller than the output, the temporary is
3215 bordered by blank regions in the output.  If the temporary is bigger
3216 than the output, the temporary is cropped.
3218 The temporary size is defined as the track size.  Each track has a
3219 different size.  Right click on a track to bring up the track's menu. 
3220 Select @emph{Resize Track} to resize the track to any arbitrary size. 
3221 Alternatively you can select @emph{Match output size} to make the track
3222 the same size as the output.
3224 The output size is set in either @emph{New} when creating a new project
3225 or @emph{Settings->Format}.  In the Resource window there is another
3226 way to change the output size.  Right click on a video asset and select
3227 @emph{Match project size} to conform the output to the asset.  When new
3228 tracks are created, the track size always conforms to the output size
3229 specified by these methods.
3236 @node KEYFRAMES
3237 @chapter KEYFRAMES
3241 Setting static compositing parameters isn't very useful most of the
3242 time.  Normally you need to move the camera around over time or change
3243 mask positions.  Masks need to follow objects.  We create dymanic
3244 changes by defining keyframes.  A keyframe is a certain point in time
3245 when the settings for one operation change.  In Cinelerra, there are
3246 keyframes for almost every compositing parameter and effect parameter.
3248 Whenever you adjust any parameter, the value is stored in a keyframe. 
3249 If the value is stored in a keyframe, why doesn't it always change? 
3250 The keyframe it is stored in is known as the @emph{default keyframe}. 
3251 The default keyframe applies to the entire duration if no other
3252 keyframes are present.  The default keyframe is not drawn anywhere
3253 because it always exists.  The only way change occurs over time is if
3254 non-default keyframes are created.
3256 Display keyframes for any parameter by using the @emph{view} menu. 
3257 When keyframes are selected, they are drawn on the timeline over the
3258 tracks they apply to.
3260 @menu
3261 * CURVE KEYFRAMES::
3262 * TOGGLE KEYFRAMES::
3263 * AUTOMATIC KEYFRAMES::
3264 * COMPOSITOR KEYFRAMES::
3265 * EDITING KEYFRAMES::
3266 @end menu
3270 @node CURVE KEYFRAMES
3271 @section CURVE KEYFRAMES
3273 Fade and zoom settings are stored in bezier curves.  Go to
3274 @emph{view->fade keyframes} or @emph{view->...zoom} to show curves on
3275 the timeline.  It's sometimes easier to pull down the @emph{view} menu
3276 and then use the keyboard shortcuts listed in the menu to enable or
3277 disable keyframes while the menu is visible.  In either arrow editing
3278 mode or i-beam editing mode, move the cursor over the curves in the
3279 timeline until it changes shape.  Then merely by clicking and dragging
3280 on the curve you can create a keyframe at the position.
3282 After the keyframe is created, click drag on it again to reposition
3283 it.  When you click-drag a second keyframe on the curve, it creates a
3284 smooth ramp.  @emph{ctrl-dragging} on a keyframe changes the value of
3285 either the input control or the output control.  This affects the
3286 sharpness of the curve.  While the input control and the output control
3287 can be moved horizontally as well as vertically, the horizontal
3288 movement is purely for legibility and isn't used in the curve value.
3290 You may remember that The Gimp and the Compositing masks all use
3291 @emph{shift} to select control points so why does the timeline use
3292 @emph{ctrl}?  When you @emph{shift-drag} on a timeline curve, the
3293 keyframe jumps to the value of either the next or previous keyframe,
3294 depending on which exists.  This lets you set a constant curve value
3295 without having to copy the next or previous keyframe.
3299 @node TOGGLE KEYFRAMES
3300 @section TOGGLE KEYFRAMES
3302 Mute is the only toggle keyframe.  Mute keyframes determine where the
3303 track is processed but not rendered to the output.  Click-drag on these
3304 curves to create a keyframe.  Unlike curves, the toggle keyframe has
3305 only two values: on or off.  Ctrl and shift do nothing on toggle
3306 keyframes.
3313 @node AUTOMATIC KEYFRAMES
3314 @section AUTOMATIC KEYFRAMES
3316 You may have noticed when a few fade curves are set up, moving the
3317 insertion point around the curves causes the faders to reflect the
3318 curve value under the insertion point.  This isn't just to look cool. 
3319 The faders themselves can set keyframes in automatic keyframe mode. 
3320 Automatic keyframe mode is usually more useful than dragging curves.
3322 Enable automatic keyframe mode by enabling the automatic keyframe
3323 toggle @image{autokeyframe}.  In automatic keyframe mode, every time
3324 you tweek a keyframeable parameter it creates a keyframe on the
3325 timeline.  Since automatic keyframes affect many parameters, it's best
3326 enabled just before you need a keyframe and disabled immediately
3327 thereafter.
3329 It's useful to go into the @emph{View} menu and make the desired
3330 parameter visible before performing a change.  The location where the
3331 automatic keyframe is generated is under the insertion point.  If the
3332 timeline is playing back during a tweek, several automatic keyframes
3333 will be generated as you change the parameter.
3335 When automatic keyframe mode is disabled, a similarly strange thing
3336 happens.  Adjusting a parameter adjusts the keyframe immediately
3337 preceeding the insertion point.  If two fade keyframes exist and the
3338 insertion point is between them, changing the fader changes the first
3339 keyframe.
3341 There are many parameters which can only be keyframed in automatic
3342 keyframe mode.  These are parameters for which curves would take up too
3343 much space on the track or which can't be represented easily by a
3344 curve.
3346 Effects are only keyframable in automatic mode because of the number of
3347 parameters in each individual effect.  
3349 Camera and projector translation can only be keyframed in automatic
3350 keyframe mode while camera and projector zoom can be keyframed with
3351 curves.  It is here that we conclude the discussion of compositing,
3352 since compositing is highly dependant on the ability to change over
3353 time.
3357 @node COMPOSITOR KEYFRAMES
3358 @section COMPOSITOR KEYFRAMES
3360 Camera and projector translation is represented by two parameters: x
3361 and y.  Therefore it is cumbersome to adjust with curves.  Cinelerra
3362 solves this problem by relying on automatic keyframes.  With a video
3363 track loaded, move the insertion point to the beginning of the track
3364 and enable automatic keyframe mode.
3366 Move the projector slightly in the compositor window to create a
3367 keyframe.  Then go forward several seconds.  Move the projector a long
3368 distance to create another keyframe and emphasize motion.  This creates
3369 a second projector box in the compositor, with a line joining the two
3370 boxes.  The joining line is the motion path.  If you create more
3371 keyframes, more boxes are created.  Once all the desired keyframes are
3372 created, disable automatic keyframe mode.
3374 Now when scrubbing around with the compositor window's slider, the
3375 video projection moves over time.  At any point between two keyframes,
3376 the motion path is read for all time before the insertion point and
3377 green for all time after the insertion point.  It's debatable if this
3378 is a very useful feature but it makes you feel good to know what
3379 keyframe is going to be affected by the next projector tweek.
3381 Click-drag when automatic keyframes are off to adjust the preceeding
3382 keyframe.  If you're halfway between two keyframes, the first projector
3383 box is adjusted while the second one stays the same.  Furthermore, the
3384 video doesn't appear to move in step with the first keyframe.  This is
3385 because, halfway between two keyframes the projector translation is
3386 interpolated.  In order to set the second keyframe you'll need to scrub
3387 after the second keyframe.
3389 By default the motion path is a straight line, but it can be curved
3390 with control points.  @emph{Ctrl-drag} to set either the in or out
3391 control point of the preceeding keyframe.  Once again, we depart from
3392 The Gimp because @emph{shift} is already used for zoom.  After the in
3393 or out control points are extrapolated from the keyframe,
3394 @emph{Ctrl-dragging} anywhere in the video adjusts the nearest control
3395 point.  A control point can be out of view entirely yet still
3396 controllable.
3398 When editing the camera translation, the behavior of the camera boxes
3399 is slightly different.  Camera automation is normally used for still
3400 photo panning.  The current camera box doesn't move during a drag, but
3401 if multiple keyframes are set, every camera box except the current
3402 keyframe appears to move.  This is because the camera display shows
3403 every other camera position relative to the current one.
3405 The situation becomes more intuitive if you bend the motion path
3406 between two keyframes and scrub between the two keyframes.  The
3407 division between red and green, the current position between the
3408 keyframes, is always centered while the camera boxes move.
3415 @node EDITING KEYFRAMES
3416 @section EDITING KEYFRAMES
3418 Keyframes can be shifted around and moved between tracks on the
3419 timeline using similar cut and paste operations to editing media.  Only
3420 the keyframes selected in the @emph{view} menu are affected by keyframe
3421 editing operations, however.
3423 The most popular keyframe editing operation is replication of some
3424 curve from one track to the other, to make a stereo pair.  The first
3425 step is to solo the source track's record @image{recordpatch_up} patch
3426 by @emph{shift-clicking} on it.  Then either set in/out points or
3427 highlight the desired region of keyframes.  Go to @emph{keyframes->copy
3428 keyframes} to copy them to the clipboard.  Solo the destination track's
3429 record @image{recordpatch_up} patch by @emph{shift-clicking} on it and
3430 go to @emph{keyframes->paste keyframes} to paste the clipboard.
3432 The media editing commands are mapped to the keyframe editing commands
3433 by using the @emph{shift} key instead of just the keyboard shortcut.  
3435 This leads to the most complicated part of keyframe editing, the
3436 default keyframe.  Remember that when no keyframes are set at all,
3437 there is still a default keyframe which stores a global parameter for
3438 the entire duration.  The default keyframe isn't drawn because it
3439 always exists.  What if the default keyframe is a good value which you
3440 want to transpose between other non-default keyframes?  The
3441 @emph{keyframes->copy default keyframe} and @emph{keyframes->paste
3442 default keyframe} allow conversion of the default keyframe to a
3443 non-default keyframe.
3445 @emph{Keyframes->copy default keyframe} copies the default keyframe to
3446 the clipboard, no matter what region of the timeline is selected.  The
3447 @emph{keyframes->paste keyframes} function may then be used to paste
3448 the clipboard as a non-default keyframe.
3450 If you've copied a non-default keyframe, it can be stored as the
3451 default keyframe by calling @emph{keyframes->paste default keyframe}. 
3452 After using paste default keyframe to convert a non-default keyframe
3453 into a default keyframe, you won't see the value of the default
3454 keyframe reflected until all the non-default keyframes are removed.
3456 Finally, there is a convenient way to delete keyframes besides
3457 selecting a region and calling @emph{keyframes->clear keyframes}. 
3458 Merely click-drag a keyframe before its preceeding keyframe or after
3459 its following keyframe on the track.
3467 @node CAPTURING MEDIA
3468 @chapter CAPTURING MEDIA
3470 Ideally, all media would be stored on hard drives, CD-ROM, flash, or
3471 DVD and loading it into Cinelerra would be a matter of loading a file. 
3472 In reality, very few sources of media can be accessed like a filesystem
3473 but instead rely on tape transport mechanisms and dumb I/O mechanisms
3474 to transfer the data to computers.  These media types are imported into
3475 Cinelerra through the Record dialog.
3477 The first step in recording is to configure the input device.  In
3478 @emph{Settings->preferences} are a number of recording parameters
3479 described in configuration @xref{RECORDING}.  These parameters apply to
3480 recording no matter what the project settings are, because the
3481 recording parameters are usually the maximum capability of the
3482 recording hardware while project settings come and go.
3484 Go to @emph{File->record} to record a dumb I/O source.  This prompts
3485 for an output format much like rendering does.  Once that's done, the
3486 record window and the record monitor pop up.
3488 The record window has discrete sections.  While many parameters change
3489 depending on if the file has audio or video, the discrete sections are
3490 always the same.
3492 @itemize
3494 @item
3496 The output format area describes the format of the output file and the
3497 current position within it.
3500 @item
3502 The edit batch area lets you change parameters in the current batch.
3504 @item
3506 The transport controls start and stop recording different ways.
3508 @item
3510 The batch list displays all the defined batches.
3512 @item
3514 The confirmation area lets you determine how the output files are
3515 imported into the timeline and quit.
3517 @end itemize
3519 @image{recording}
3520 @sp 2
3521 @emph{Recording window areas}
3524 Recording in Cinelerra is organized around batches.  A batch
3525 essentially defines a distinct output file for the recording.  For now
3526 you can ignore the batch concept entirely and record merely by hitting
3527 the record button @image{record}.
3529 The record button opens the current output file if it isn't opened and
3530 writes captured data to it.  Use the stop button to stop the
3531 recording.  Recording can be resumed with the record button without
3532 erasing the file at this point.  In the case of a video file, there is
3533 a single frame record button @image{singleframe} which records a single
3534 frame.
3536 When enough media is recorded, choose an insertion method from the
3537 @emph{Insertion Strategy} menu and hit @emph{close}.
3542 @menu
3543 * BATCHES::
3544 * EDITING TUNER INFORMATION::
3545 @end menu
3550 @node BATCHES
3551 @section BATCHES
3553 Now we come to the concept of batches.  Batches try to make the dumb
3554 I/O look more like a filesystem.  Batches are traditionally used to
3555 divide tape into different programs and save the different programs as
3556 different files instead of recording straight through an entire tape. 
3557 Because of the high cost of developing frame-accurate deck control
3558 mechanisms, the only use of batches now is recording different programs
3559 during different times of day.  This is still useful for recording TV
3560 shows or time lapse movies as anyone who can't afford proper appliances
3561 knows.
3563 The record window supports a list of batches and two recording modes:
3564 interactive and batch recording.  Interactive recording happens when
3565 the record button is pressed.  Interactive recording starts immediately
3566 and uses the current batch to determine everything except start time. 
3567 By default, the current batch is configured to behave like tape.
3569 Batch recording happens when the @emph{start} button is pressed.  In
3570 batch recording, the @emph{start time} is the time the batch starts
3571 recording.
3573 First, you'll want to create some batches.  Each batch has certain
3574 parameters and methods of adjustment.  
3579 @itemize
3581 @item 
3583 @emph{On} determines whether the batch is included in batch recording
3584 operations.  Click the list row under @emph{On} to enable or disable
3585 batches.
3588 @item 
3590 @emph{Path} is the file the batch is going to be recorded to.  The
3591 filename specified in the record dialog is the name of the first batch,
3592 to simplify interactive recording, but the filename may be changed in
3593 the record window for any batch in the @emph{edit batch} area.
3596 @item
3598 @emph{News} shows whether the file exists or not.  This is a very
3599 important attribute since there is no confirmation dialog if the file
3600 exists.  The first time you hit record, the file is opened.  If the
3601 file exists at this point it's erased.  News says @emph{File exists} if
3602 it exists and @emph{OK} if it doesn't.  Every time you resume recording
3603 in the same batch, the news should say @emph{Open}, indicating the file
3604 is already opened and won't be erased in the next record button press.
3606 If you change out of the current batch after recording, the file is
3607 closed.  Next time you change into the batch, the file will be erased.
3609 @item
3611 @emph{Start time} is the 24 hour time of day the batch will start
3612 recording if in batch mode.  The start time may become a time of tape
3613 and reel number if deck control is implemented but for now it's a time
3614 of day.
3616 @item
3618 @emph{Duration} is the length of the batch.  It only has meaning if the
3619 @emph{Mode} of the batch is @emph{Timed}.  Once the recording length
3620 reaches @emph{duration} the recording stops, whether in interactive or
3621 batch mode.
3623 @item
3625 @emph{Source} has meaning only when the capturing hardware has multiple
3626 sources.  Usually the source is a tuner channel or input.  When the
3627 current batch finishes and the next batch begins recording, the source
3628 is changed to what the next batch is set to.  This way multiple TV
3629 stations can be recorded at different times.
3632 @end itemize
3634 The record window has a notion of the @emph{current batch}.  The
3635 current batch is not the same as the batch which is highlighted in the
3636 batch list.  The current batch text is colored red in the batch list. 
3637 The highlighted batch is merely displayed in the edit batch section for
3638 editing.
3640 By coloring the current batch red, any batch can be edited by
3641 highlighting it, without changing the batch to be recorded.
3643 All recording operations take place in the current batch.   If there
3644 are multiple batches, highlight the desired batch and hit
3645 @emph{activate} to make it the current batch.  If the @emph{start}
3646 button is pressed, the current batch flashes to indicate it's waiting
3647 for the start time in batch mode.  If the @emph{record} button is
3648 pressed, the current batch is recorded immediately in interactive mode.
3650 In batch and interactive recording modes, when the current batch
3651 finishes recording the next batch is activated and performed.  All
3652 future recording is done in batch mode.  When the first batch finishes,
3653 the next batch flashes until its start time is reached.
3655 Interrupt either the batch or the interactive operation by hitting the
3656 stop button.
3658 Finally there is the @image{rewind} rewind button.  In either
3659 interactive or batch recording, the rewind button causes the current
3660 batch to close its file.  The next recording operation in the current
3661 batch deletes the file.
3668 @node EDITING TUNER INFORMATION
3669 @section EDITING TUNER INFORMATION
3672 Sometimes in the recording process and the configuration process,
3673 you'll need to define and select tuner channels to either record or
3674 play back to.  In the case of the Video4Linux and Buz recording
3675 drivers, tuner channels define the source.  When the Buz driver is also
3676 used for playback, tuner channels define the destination.  
3678 Defining tuner channels is accomplished by pushing the @image{channel}
3679 channel button.  This brings up the channel editing window.  In this
3680 window you add, edit, and sort channels.  Also, for certain video
3681 drivers, you can adjust the picture quality.
3683 The @emph{add} operation brings up a channel editing box.  The title of
3684 the channel appears in the channel list.  The source of the channel is
3685 the entry in the physical tuner's frequency table corresponding to the
3686 title.  
3688 Fine tuning in the channel edit dialog adjusts the physical frequency
3689 slightly if the driver supports it.  The norm and frequency table
3690 together define which frequency table is selected for defining
3691 sources.  If the device supports multiple inputs, the input menu
3692 selects these.
3694 To sort channels, highlight the channel in the list and push @emph{move
3695 up} or @emph{move down} to move it.
3697 Once channels are defined, the @emph{source} item in the record window
3698 can be used to select channels for recording.  The same channel
3699 selecting ability also exists in the record monitor window.  Be aware
3700 channel selections in the record monitor window and the record window
3701 are stored in the current batch.
3703 For some drivers an option to @b{swap fields} may be visible.  These
3704 drivers don't get the field order right every time without human
3705 intervention.  Toggle this to get the odd and even lines to record in
3706 the right order.
3711 @node IMPROVING PERFORMANCE
3712 @chapter IMPROVING PERFORMANCE
3715 @menu
3716 * DISABLING SWAP SPACE::
3717 * ENLARGING SOUND BUFFERS::
3718 * MAKING XFree86 FASTER::
3719 * FREEING MORE SHARED MEMORY::
3720 * SPEEDING UP THE HARD DRIVE::
3721 * DISABLING CRON::
3722 * REDUCING USB MOUSE SENSITIVITY::
3723 * ASSORTED X TWEEKS::
3724 * SPEEDING UP THE FILE SYSTEM::
3725 * IMPROVING ZORAN VIDEO::
3726 @end menu
3728 @node DISABLING SWAP SPACE
3729 @section DISABLING SWAP SPACE
3731 On systems with lots of memory, Cinelerra sometimes runs better without
3732 a swap space.  If you have 4 GB of RAM, you're probably better off
3733 without a swap space.  If you have 512MB of RAM, you should keep the
3734 swap.  If you want to do recording, you should probably disable swap
3735 space in any case.  There's a reason for this.  Linux only allows half
3736 the available memory to be used.  Beyond that, it starts searching for
3737 free pages to swap, in order to cache more disk access.  In a 4 GB
3738 system, you start waiting for page swaps after using only 2 GB.  
3740 The question then is how to make Linux run without a swap space. 
3741 Theoretically it should be a matter of running
3743 @example
3744 swapoff -a
3745 @end example
3747 Unfortunately, without a swap space the @b{kswapd} tasklet normally
3748 spins at 100%.  To eliminate this problem, edit @b{linux/mm/vmscan.c}.
3749 In this file, put a line saying @b{return 0;} before it says 
3751 @example
3752         /*
3753          * Kswapd main loop.
3754          */
3755 @end example
3757 Then recompile the kernel.
3762 @node ENLARGING SOUND BUFFERS
3763 @section ENLARGING SOUND BUFFERS
3765 In order to improve realtime performance, the audio buffers for all the
3766 Linux sound drivers were limited from 127k to 64k.  For recording audio
3767 and video simultaneously and for most audio recording this causes
3768 dropouts.  Application of low latency and preemtible kernel patches
3769 make it possible to record more audio recordings but it doesn't improve
3770 recording video with audio.  This is where you need to hack the kernel.
3772 This only applies to the OSS version of the Soundblaster Live driver. 
3773 Since every sound card and every sound driver derivative has a
3774 different implementation you'll need to do some searching for other
3775 sound cards.  Edit @b{linux/drivers/sound/emu10k1/audio.c}
3777 Where is says
3779 @example
3780 if (bufsize >= 0x10000)
3781 @end example
3783 change it to say
3785 @example
3786 if (bufsize > 0x40000)
3787 @end example
3791 Where is says
3793 @example
3794                 for (i = 0; i < 8; i++)
3795                         for (j = 0; j < 4; j++)
3796 @end example
3798 change it to say
3800 @example
3801                 for (i = 0; i < 16; i++)
3802                         for (j = 0; j < 4; j++)
3803 @end example
3807 In @b{linux/drivers/sound/emu10k1/hwaccess.h}
3809 Change
3811 @b{#define MAXBUFSIZE   65536} 
3813 to 
3815 @b{#define MAXBUFSIZE   262144} 
3817 Finally, in @b{linux/drivers/sound/emu10k1/cardwi.h}
3819 @b{#define WAVEIN_MAXBUFSIZE         65536}
3823 @b{#define WAVEIN_MAXBUFSIZE         262144}
3825 Then recompile the kernel modules.
3830 @node MAKING XFree86 FASTER
3831 @section MAKING XFree86 FASTER
3833 XFree86 by default can't display Cinelerra's advanced pixmap rendering
3834 very fast.  The X server stalls during list box drawing.  Fix this by
3835 adding a line to your XF86Config* files.
3837 In the @b{Section "Device"} area, add a line saying:
3839 @b{Option "XaaNoOffscreenPixmaps"}
3841 and restart the X server.
3847 @node FREEING MORE SHARED MEMORY
3848 @section FREEING MORE SHARED MEMORY
3850 The Linux kernel only allows 32MB of shared memory to be allocated by
3851 default.  This needs to be increased to do anything useful.  Run the
3852 following command:
3854 @b{echo "0x7fffffff" > /proc/sys/kernel/shmmax}
3860 @node SPEEDING UP THE HARD DRIVE
3861 @section SPEEDING UP THE HARD DRIVE
3863 This is a very popular command sequence among Linux gurus, which is not
3864 done by default on Linux distributions.
3866 @b{hdparm -c3 -d1 -u1 -k1 /dev/hda}
3868 @b{-c3} puts the hard drive into 32 bit I/O with sync.  This normally
3869 doesn't work due to inept kernel support for most IDE controllers.  If
3870 you get lost interrupt or SeekComplete errors, quickly use @b{-c0}
3871 instead of @b{-c3} in your command.
3873 @b{-d1} enables DMA of course.  This frees up the CPU partially during
3874 data transfers.
3876 @b{-u1} allows multiple interrupts to be handled during hard drive
3877 transactions.  This frees up even more CPU time.
3879 @b{-k1} prevents Linux from resetting your settings in case of a
3880 glitch.
3886 @node DISABLING CRON
3887 @section DISABLING CRON
3889 Linux runs some daily operations like compressing man pages.  These may
3890 be acceptable background tasks while compiling or word processing but
3891 not while playing video.  Disable these operations by editing
3892 @b{/etc/rc.d/init.d/anacron}.
3894 Put @b{exit} before the first line not beginning in @b{#}.
3896 In @b{/etc/rc.d/init.d/crond} put @b{exit} before the first line not
3897 beginning in @b{#}.  Then make like Win 2000 and reboot.
3899 You can't use the @b{at} command anymore, but who uses that command
3900 anyways?
3910 @node REDUCING USB MOUSE SENSITIVITY
3911 @section REDUCING USB MOUSE SENSITIVITY
3913 Gamers like high resolution mice, but this can be painful for precisely
3914 positioning the mouse on a timeline or video screen.  XFree86 once
3915 allowed you to reduce PS/2 mouse sensitivity using commands like
3916 @b{xset m 1 1} but you're out of luck with USB mice or KVM's.
3918 We have a way to reduce USB mouse sensitivity.  Edit
3919 @b{/usr/src/linux/drivers/input/mousedev.c}.  
3921 After the line saying 
3923 @example
3924 struct mousedev_list @{
3925 @end example
3930 @example
3931 #define DOWNSAMPLE_N 100
3932 #define DOWNSAMPLE_D 350
3933 int x_accum, y_accum;
3934 @end example
3936 Next, the section which says something like:
3938 @example
3939 case EV_REL:
3940         switch (code) @{
3941                 case REL_X:     list->dx += value; break;
3942                 case REL_Y:     list->dy -= value; break;
3943                 case REL_WHEEL: if (list->mode) list->dz -= value; break;
3944         @}
3945         break;
3946 @end example
3948 must be replaced by
3950 @example
3952 case EV_REL:
3953         switch (code) @{
3954                 case REL_X:     
3955                         list->x_accum += value * DOWNSAMPLE_N;
3956                         list->dx += (int)list->x_accum / (int)DOWNSAMPLE_D;
3957                         list->x_accum -= ((int)list->x_accum / (int)DOWNSAMPLE_D) * (int)DOWNSAMPLE_D;
3958                         break;
3959                 case REL_Y:     
3960                         list->y_accum += value * DOWNSAMPLE_N;
3961                         list->dy -= (int)list->y_accum / (int)DOWNSAMPLE_D;
3962                         list->y_accum -= ((int)list->y_accum / (int)DOWNSAMPLE_D) * (int)DOWNSAMPLE_D;
3963                         break;
3964                 case REL_WHEEL: if (list->mode) list->dz -= value; break;
3965         @}
3966         break;
3970 @end example
3972 Change the value of @b{DOWNSAMPLE_N} to change the mouse sensitivity.
3981 @node ASSORTED X TWEEKS
3982 @section ASSORTED X TWEEKS
3984 Screen blanking is really annoying, unless you're fabulously rich and
3985 can afford to leave your monitor on 24 hours a day without power saving
3986 mode.  In @b{/etc/X11/xinit/xinitrc} put 
3988 @example
3989 xset s off
3990 xset s noblank
3991 @end example
3993 before the first @b{if} statement.
3995 How about those windows keys which no Linux distribution even thinks to
3996 use.  You can make the window keys provide ALT functionality by editing
3997 @b{/etc/X11/Xmodmap}.  Append the following to it.
3999 @example
4000 keycode 115 = Hyper_L
4001 keycode 116 = Hyper_R
4002 add mod4 = Hyper_L
4003 add mod5 = Hyper_R
4004 @end example
4006 The actual changes to a window manager to make it recognize window keys
4007 for ALT are complex.  In @b{FVWM} at least, you can edit
4008 @b{/etc/X11/fvwm/system.fvwm2rc} and put
4010 @example
4011 Mouse 0 T A move-and-raise-or-raiselower
4012 #Mouse 0 W M move
4013 Mouse 0 W 4 move
4014 Mouse 0 W 5 move
4015 Mouse 0 F A resize-or-raiselower
4016 Mouse 0 S A resize-or-raiselower
4017 @end example
4019 in place of the default section for moving and resizing.  Your best
4020 performance is going to be on FVWM.  Other window managers seem to slow
4021 down video with extra event trapping and aren't as efficient in layout.
4033 @node SPEEDING UP THE FILE SYSTEM
4034 @section SPEEDING UP THE FILE SYSTEM
4036 You'll often store video on an expensive, gigantic disk array separate
4037 from your boot disk.  You'll thus have to manually install an EXT
4038 filesystem on this disk array, using the @b{mke2fs} command.  By far
4039 the fastest file system is 
4041 @example
4043 mke2fs -i 65536 -b 4096 my_device
4044 tune2fs -r0 -c10000 my_device
4046 @end example
4048 This has no journaling, reserves as few blocks as possible for
4049 filenames, and accesses the largest amount of data per block possible.
4050 A slightly slower file system, which is easier to recover after power
4051 failures is
4053 @example
4055 mke2fs -j -i 65536 -b 4096 my_device
4056 tune2fs -r0 -c10000 my_device
4058 @end example
4060 This adds a journal which slows down the writes but makes us immune to
4061 power failures.
4069 @node IMPROVING ZORAN VIDEO
4070 @section IMPROVING ZORAN VIDEO
4072 Video recorded from the ZORAN inputs is normally unaligned or not
4073 completely encoded on the right.  This can be slightly compensated by
4074 adjusting parameters in the driver sourcecode.
4076 In @b{/usr/src/linux/drivers/media/video/zr36067.h} the structures
4077 defined near line 623 affect alignment.  At least for NTSC, the 2.4.20
4078 version of the driver could be improved by changing 
4080 @example
4081 static struct tvnorm f60ccir601 = @{ 858, 720, 57, 788, 525, 480, 16 @};
4082 @end example
4086 @example
4087 static struct tvnorm f60ccir601 = @{ 858, 720, 57, 788, 525, 480, 17 @};
4088 @end example
4091 In @b{/usr/src/linux/drivers/media/video/bt819.c} more structures near
4092 line 76 affect alignment and encoding.
4094 For NTSC 
4096 @example
4097 @{858 - 24, 2, 523, 1, 0x00f8, 0x0000@},
4098 @end example
4100 could be changed to 
4101 @example
4102 @{868 - 24, 2, 523, 1, 0x00f8, 0x0000@},
4103 @end example
4105 Adjusting these parameters may or may not improve your picture.  More
4106 of the time, they'll cause the driver to lock up before capturing
4107 the first frame.
4116 @node TROUBLESHOOTING
4117 @chapter TROUBLESHOOTING
4120 @menu
4121 * BUZ DRIVER CRASHES::
4122 * DRAGGING IN AND OUT POINTS DOESN'T WORK::
4123 @end menu
4125 @node BUZ DRIVER CRASHES
4126 @section BUZ DRIVER CRASHES
4128 First, Zoran capture boards must be accessed using the @b{Buz} video
4129 driver in @b{Preferences->Recording} and @b{Preferences->Playback}. 
4130 Some performance tweeks are available in another section. 
4131 @xref{IMPROVING PERFORMANCE}.
4133 Once tweeked, the Buz driver seems to crash if the number of recording
4134 buffers is too high.  Make sure @b{Preferences->Recording->Frames to
4135 buffer in device} is below 10.
4138 @node DRAGGING IN AND OUT POINTS DOESN'T WORK
4139 @section DRAGGING IN AND OUT POINTS DOESN'T WORK
4142 Sometimes there will be two edits really close together.  The point
4143 selected for dragging may be next to the indended edit on an edit too
4144 small to see at the current zoom level.  Zoom in horizontally.
4151 @node SECRETS OF CINELERRA
4152 @chapter SECRETS OF CINELERRA
4155 @menu
4156 * DOLBY PRO LOGIC ENCODING::
4157 * ANALOG TV CLEANING::
4158 * DEFEATING INTERLACING::
4159 * MAKING VIDEO LOOK LIKE FILM::
4160 * CLEARING OUT HAZE::
4161 @end menu
4164 @node DOLBY PRO LOGIC ENCODING
4165 @section DOLBY PRO LOGIC ENCODING
4167 Dolby pro logic is an easy way to output 6 channel audio from a 2
4168 channel soundcard with degraded but useful results.  Rudimentary Dolby
4169 pro logic encoding can be achieved with clever usage of the effects.
4171 Create 2 audio tracks with the same audio.  Apply @b{invert audio} to
4172 one track.  The signal comes out of the back speakers.
4174 Create a single audio track with monaural audio of a different source. 
4175 Center it in the @b{pan} control.  The signal comes out of the center
4176 speaker.
4178 Create other tracks with different signals and pan them left or right
4179 to put signals in the front left or right speaker.
4181 Finally, if a copy of the signal in the back speakers is desired in any
4182 single front speaker, the signal in the back speakers must be delayed
4183 by at least 0.05 seconds and a single new track should be created.  Pan
4184 the new track to orient the signal in the front speakers.
4186 If the same signal is desired in all the speakers except the center
4187 speaker, delay the back speakers by 0.5 seconds and delay either the
4188 front left or front right by 0.2 seconds.
4190 If you want to hear something from the subwoofer, create a new track,
4191 select a range, drop a synthesizer effect, and set the frequency below
4192 60 Hz.  The subwoofer merely plays anything below around 60Hz.
4194 Other tricks you can perform to separate the speakers are parametric
4195 equalization to play only selected ranges of frequencies through
4196 different speakers and lowpass filtering to play signals through the
4197 subwoofer.
4202 @node ANALOG TV CLEANING
4203 @section ANALOG TV CLEANING
4206 Unless you live in a rich nation like China or are a terrorist, you
4207 probably record analog TV more than you record digital TV.  The picture
4208 quality on analog TV is horrible but you can do things in Cinelerra to
4209 make it look more like it did in the studio.
4211 First, when capturing the video, capture it in the highest resolution
4212 possible.  For Europeans it's 720x576 and for Americans it's 720x480. 
4213 Don't bother adjusting the brightness or contrast in the recording
4214 monitor, although maxing out the color is useful.  Capture it using
4215 MJPEG or uncompressed Component Video if possible.  If those are too
4216 demanding, then capture it using JPEG.  RGB should be a last resort.
4218 Now on the timeline use @b{Settings->Format} to set a YUV colorspace. 
4219 Drop a @b{Downsample} effect on the footage.  Set it for 
4221 @example
4222 Horizontal:        2
4223 Horizontal offset: 0
4224 Vertical:          2
4225 Vertical offset:   0
4227       red
4228   x   green
4229   x   blue
4230       alpha
4231 @end example
4233 Use the camera tool to shift the picture up or down a line to remove
4234 the most color interference from the image.  This is the difference
4235 we're looking for:
4237 @sp 1
4239 @image{cleaning1}
4241 If you have vertical blanking information or crawls which constantly
4242 change in each frame, block them out with the @b{Mask} tool.  This
4243 improves compression ratios.
4245 This is about all you can do without destroying more data than you
4246 would naturally lose in compression.  The more invasive cleaning
4247 techniques involve deinterlacing.
4253 @node DEFEATING INTERLACING
4254 @section DEFEATING INTERLACING
4257 Interlacing is done on most video sources because it costs too much to
4258 build progressive scanning cameras and progressive scanning CRT's. 
4259 Many a consumer has been dissapointed to spend 5 paychecks on a
4260 camcorder and discover what horrible jagged images it produces on a
4261 computer monitor.
4263 As for progressive scanning camcorders, forget it.  Cost factors are
4264 probably going to keep progressive scanning cameras from ever equalling
4265 the spatial resolution of interlaced cameras.  Interlacing is here to
4266 stay.  That's why they made deinterlacing effects in Cinelerra.
4268 We don't believe there has ever been a perfect deinterlacing effect. 
4269 They're either irreversible or don't work.  Cinelerra cuts down the
4270 middle by providing deinterlacing tools that are irreversible sometimes
4271 and don't work sometimes but are neither one or the other.
4273 @b{Line Doubling}
4275 This one is done by the @b{Deinterlace} effect when set to @b{Odd
4276 lines} or @b{Even lines}.  When applied to a track it reduces the
4277 vertical resolution by 1/2 and gives you progressive frames with
4278 stairstepping.  This is only useful when followed by a scale effect
4279 which reduces the image to half its size.
4281 @b{Line averaging}
4283 The @b{Deinterlace} effect when set to @b{Average even lines} or
4284 @b{Average odd lines} does exactly what line doubling does except
4285 instead of making straight copies of the lines it makes averages of the
4286 lines.  This is actually useful for all scaling.
4288 There's an option for adaptive line averaging which selects which lines
4289 to line average and which lines to leave interlaced based on the
4290 difference between the lines.  It doesn't work.
4292 @b{Inverse Telecine}
4294 This is the most effective deinterlacing tool when the footage is an
4295 NTSC TV broadcast of a film.  Here the image was converted from 24fps
4296 to 30fps by interlacing in a predictable pattern, which the @b{Inverse
4297 Telecine} effect can detect.  It shifts fields forwards and backwards
4298 to get progressive frames of the same resolution as the original, most
4299 of the time.
4301 The timing is going to be jittery because of this but it's progressive.
4303 There is only one useful setting for @b{Inverse Telecine}: 
4305 @example
4306 Pattern offset:   0
4307     Odd field first
4308   x Automatic IVTC
4309 Pattern:
4310   x A B BC CD D
4311     AB BC CD DE EF
4312 @end example
4314 The other options are only there because one day there may be some
4315 progressive scan camera which produces pulldown in the same frame of
4316 reference throughout entire tapes.
4319 @b{Time base correction}
4321 The first three tools either destroy footage irreversibly or don't work
4322 sometimes.  @b{Time base correction} is last because it's the perfect
4323 deinterlacing tool.  It leaves the footage intact.  It doesn't reduce
4324 resolution, perceptually at least.  It doesn't cause jittery timing.
4326 The @b{Frames to Fields} effect converts each frame to two frames, so
4327 it must be used on a timeline whose project frame rate is twice the
4328 footage's frame rate.  In the first frame it puts a line averaged copy
4329 of the even lines.  In the second frame it puts a line averaged copy of
4330 the odd lines.  When played back at full framerates it gives the
4331 illusion of progressive video with no loss of detail.
4333 Best of all, this effect can be reversed with the @b{Fields to frames}
4334 nonrealtime effect.  That one combines two frames of footage back into
4335 the one original interlaced frame of half the framerate.
4337 Unfortunately, the output of @b{Frames to Fields} can't be compressed
4338 as efficiently as the original because it introduces vertical twitter
4339 and a super high framerate.
4341 Interlaced 29.97fps footage can be made to look like film by applying
4342 @b{Frames to Fields} and then reducing the project frame rate of the
4343 resulting 59.94fps footage to 23.97fps.  This produces no timing jitter
4344 and the occasional odd field gives the illusion of more detail than
4345 there would be if you just line averaged the original.
4352 @node MAKING VIDEO LOOK LIKE FILM
4353 @section MAKING VIDEO LOOK LIKE FILM
4358 Video sweetening is constantly getting better.  Lately the best thing
4359 you can do for dirt cheap consumer camcorder video is to turn it into
4360 progressive 24fps output.  While you can't really do that, you can get
4361 pretty close for the money.  Mind you, this procedure can degrade high
4362 quality video just as easily as it improves low quality video.  It
4363 should only be used for low quality video.
4365 @itemize
4367 @item
4369 Step 1 - Set project framerate to twice the video framerate.
4371 @item
4373 Step 2 - Apply a @b{Sharpen} effect.  Set it to sharpness: 25, no
4374 interlacing, and horizontal only.
4376 @item
4378 Step 3 - Drop a @b{Frame to Fields} effect on the same track.  Set
4379 Average Empty Rows on and play through the video a few times to figure
4380 out which field is first.  If the wrong field is first, the motion is
4381 shaky.  Secondly, any editing in the doubled frame rate may now screw
4382 up the field order.  We're still figuring out the easiest way to
4383 support warnings for field glitches but for now you need to go back to
4384 the normal framerate to do editing or play test to make sure the fields
4385 are right.
4388 @item
4390 Step 4 - Render just the video to the highest quality file possible.
4392 @item
4394 Step 5 - Import the video back to a new track.  Set the project
4395 framerate to 24.  The new track should now display more filmish and
4396 sharper images than the original footage.
4398 @end itemize
4400 This entire procedure could be implemented in one nonrealtime effect,
4401 but the biggest problem with that is you'll most often want to keep the
4402 field based output and the 24fps output for posterity.  A nonrealtime
4403 effect would require all that processing just for the 24fps copy. 
4404 Still debating that one.
4414 @node CLEARING OUT HAZE
4415 @section CLEARING OUT HAZE
4417 Let's face it, if you're employed you live in Silicon Valley.  As such
4418 you probably photograph a lot of haze and never see blue sky ever. 
4419 Even if you can afford to briefly go somewhere where there is blue sky,
4420 horizon shots usually can stand for more depth.  This is what the
4421 @b{gradient effect} is for.
4423 Drop the gradient effect on hazy tracks.  Set the following parameters:
4425 @example
4426 Angle: 0
4427 Inner radius: 0
4428 Outer radius: 40
4429 Inner color: blue 100% alpha
4430 Outer color: blue 0% alpha
4431 @end example
4433 It's important to set the 0% alpha color to blue even though it's 0%
4434 alpha.  This is a generally applicable setting for the gradient.  Some
4435 scenes may work better with orange or brown for an evening feel.
4445 @node EFFECT DESCRIPTIONS
4446 @chapter EFFECT DESCRIPTIONS
4448 Most effects in Cinelerra can be figured out just by using them and
4449 tweeking.  Here are brief descriptions of effects which you might not
4450 utilize fully by mere experimentation.
4453 @menu
4454 * CHROMA KEY::
4455 * HISTOGRAM::
4456 * TIME AVERAGE::
4457 * VIDEO SCOPE::
4458 * DEINTERLACE::
4459 @end menu
4465 @node CHROMA KEY
4466 @section CHROMA KEY
4469 This effect replaces the selected color or intensity with black if
4470 there is no alpha channel and replaces it with transparency if there is
4471 an alpha channel.  The selection of color model is important.
4473 Chroma key uses either the value or the hue to determine what is
4474 erased.  If this parameter is within a certain threshold it's erased. 
4475 It's not a simple on/off switch, however.  As the selected parameter
4476 approaches the edge of the threshold, it gradually gets erased if the
4477 slope is low or is completely erased if the slope is high.
4479 The slope tries to soften the edges of the chroma key but it doesn't
4480 work well for compressed sources.  A popular softening technique is to
4481 use a maximum slope and chain a blur effect below the chroma key effect
4482 to blur just the alpha.
4488 @node HISTOGRAM
4489 @section HISTOGRAM
4492 This shows the number of occurances of each value of a certain color
4493 channel.  It is always performed in 16 bit RGB regardless of the
4494 project colorspace.  Use the upper gradient to determine the range of
4495 input intensities to be expanded to the output.  Use the lower gradient
4496 to determine the range of output intensities to target the expansion
4497 to.  Enable @emph{automatic} mode to have the histogram calculate
4498 automatic input values for every frame.  The threshold is only used in
4499 automatic mode and determines how sensitive to the upper and lower
4500 boundaries of the histogram the automatic gain should be.
4506 @node TIME AVERAGE
4507 @section TIME AVERAGE
4509 Time average is one effect which has many uses besides creating nifty
4510 trail patterns of moving objects.  It's main use is reducing noise in
4511 still images.  Merely point a video camera at a stationary subject for
4512 30 frames, capture the frames, and average them using TIME AVERAGE and
4513 you'll have a super high quality print.  In 16 bit colormodels, time
4514 average can increase the dynamic range of lousy cameras.
4518 @node VIDEO SCOPE
4519 @section VIDEO SCOPE
4521 The video scope plots two views of the image.  One view plots the
4522 intensity of each pixel against horizontal position.  They call this
4523 the WAVEFORM.  Another view translates hue to angle and saturation to
4524 radius for each pixel.  They call this the VECTORSCOPE.
4526 The vectorscope is actually very useful for determining if an image is
4527 saturated.  When adjusting saturation, it's important to watch the
4528 vectorscope to make sure pixels don't extend past the 100 radius.
4530 The waveform allows you to make sure image data extends from complete
4531 black to complete white while adjusting the brightness/contrast.
4533 Some thought is being given to having a video scope for recording. 
4534 Unfortunately, this would require a lot of variations of the video
4535 scope for all the different video drivers.
4541 @node DEINTERLACE
4542 @section DEINTERLACE
4544 The deinterlace effect has evolved over the years to deinterlacing and
4545 a whole lot more.  In fact two of the deinterlacing methods, @b{Inverse
4546 Telecine} and @b{Frames to Fields}, are separate effects.  The
4547 deinterlace effect offers several variations of line replication to
4548 eliminate comb artifacts in interlaced video.  It also has some line
4549 swapping tools to fix improperly captured video or make the result of a
4550 reverse effect display fields in the right order.
4556 @node PLUGIN AUTHORING
4557 @chapter PLUGIN AUTHORING
4559 The plugin API in Cinelerra dates back to 1997, before the LADSPA and
4560 before VST became popular.  It's fundamentally the same as it was in
4561 1997, with minor modifications to handle keyframes and GUI feedback. 
4562 Unfortunately, the GUI is not abstracted from the programmer.  This
4563 allows the programmer to use whatever toolkit they want and allows more
4564 flexibility in appearance but it costs more.
4566 There are several types of plugins, each with a common procedure of
4567 implementation and specific changes for that particular type.  The
4568 easiest way to implement a plugin is to take the simplest existing one
4569 out of the group and rename the symbols.  
4571 @menu
4572 * COMMON PROCEDURES::
4573 * REALTIME PLUGINS::
4574 * NONREALTIME PLUGINS::
4575 * AUDIO PLUGINS::
4576 * VIDEO PLUGINS::
4577 * TRANSITION PLUGINS::
4578 * PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK::
4579 * PLUGIN QUERIES::
4580 @end menu
4583 @node COMMON PROCEDURES
4584 @section COMMON PROCEDURES
4586 All plugins inherit from a derivative of PluginClient.  This derivative
4587 implements most of the required methods in PluginClient, but users must
4588 still define methods for PluginClient.  The most commonly used methods
4589 are already implemented in macros.
4591 The files they include depend on the plugin type.  Audio plugins
4592 include @b{pluginaclient.h} and video plugins include
4593 @b{pluginvclient.h}.  They inherit @b{PluginAClient} and
4594 @b{PluginVClient} respectively.
4596 Another thing all plugins do is define at least three objects:
4598 @itemize
4600 @item
4602 Processing object - Contains pointers to all the other objects and
4603 performs the signal processing.  This object contains a number of
4604 queries to identify itself and is the object you register to register
4605 the plugin.
4608 @item
4610 User interface object - This is defined according to the programmer's
4611 discretion.  It can either use Cinelerra's toolkit or another toolkit. 
4612 It shows data on the screen and collects parameters from the user.
4614 Using Cinelerra's toolkit, the only user interface object a developer
4615 needs to worry about is the Window.  The window has pointers to a
4616 number of widgets, a few initialization methods, and a back pointer to
4617 the plugin's processing object.  The documentation refers to usage of
4618 Cinelerra's toolkit.
4620 Depending on the user interface toolkit, a user interface thread may be
4621 created to run the user interface asynchronous of everything else. 
4622 Synchronizing the user interface to changes in keyframes is the most
4623 complicated aspect of the plugin, so the user interface thread and
4624 object are heavily supported by macros if you use Cinelerra's toolkit.
4627 @item
4629 Configuration object - This stores the user parameters and always needs
4630 interpolation, copying, and comparison functions.  The plugin client
4631 automatically calls configuration methods to interpolate keyframes.
4633 @end itemize
4635 @menu
4636 * THE PROCESSING OBJECT::
4637 * THE CONFIGURATION OBJECT::
4638 * THE USER INTERFACE OBJECT::
4639 @end menu
4643 @node THE PROCESSING OBJECT
4644 @subsection THE PROCESSING OBJECT
4646 The processing object should inherit from the intended PluginClient
4647 derivative.  Its constructor should take a PluginServer argument.
4649 @example
4650 MyPlugin(PluginServer *server);
4651 @end example
4653 In the implementation, the plugin must contain a registration line with
4654 the name of the processing object like
4656 @example
4657 REGISTER_PLUGIN(MyPlugin)
4658 @end example
4661 The constructor should contain 
4663 @example
4664 PLUGIN_CONSTRUCTOR_MACRO
4665 @end example
4667 to initialize the most common variables.
4670 The processing object should have a destructor containing
4672 @example
4673 PLUGIN_DESTRUCTOR_MACRO
4674 @end example
4676 to delete the most common variables.
4678 Another function which is useful but not mandatory is
4680 @example
4681 int is_multichannel();
4682 @end example
4684 It should return 1 if one instance of the plugin handles multiple
4685 channels simultaneously or 0 if one instance of the plugin only handles
4686 one channel.  The default is 0 if it is omitted.  Multichannel plugins
4687 should refer to the value of @b{PluginClient::total_in_buffers} to
4688 determine the number of channels.
4693 To simplify the implementation of realtime plugins, a macro for
4694 commonly used members should be put in the class header, taking the
4695 configuration object and user interface thread object as arguments. 
4696 This is only useful for realtime plugins.  Fortunately, nonrealtime
4697 plugins are simpler.
4699 @example
4700 PLUGIN_CLASS_MEMBERS(config_name, thread_name)
4701 @end example
4703 Many other members may be defined in the processing object, depending
4704 on the plugin type.  The commonly used members in PLUGIN_CLASS_MEMBERS
4705 are described below.  Not all these members are used in nonrealtime
4706 plugins.
4708 @itemize
4710 @item
4711 int load_configuration();
4713 Loads the configuration based on surrounding keyframes and current
4714 position.  The class definition should contain 
4716 @example
4717 LOAD_CONFIGURATION_MACRO(plugin_class, config_class)
4718 @end example
4720 to implement load_configuration.  This stores whatever the current
4721 configuration is inside the plugin's configuration object.  The
4722 plugin's configuration object is always called @b{config} when using
4723 PLUGIN_CLASS_MEMBERS.
4725 @item
4726 VFrame* new_picon();
4728 Creates a picon for display in the resource window.  Use
4730 @example
4731 #include "picon_png.h"
4732 NEW_PICON_MACRO(plugin_class)
4733 @end example
4735 to implement new_picon.  In addition, the user should create a
4736 @emph{picon_png.h} header file from a PNG image using @emph{pngtoh}. 
4737 @emph{pngtoh} is compiled in the @emph{guicast/ARCH} directory.
4739 The source PNG image should be called picon.png and can be any format
4740 supported by PNG.
4742 @item
4743 char* plugin_title();
4745 Returns a text string identifying the plugin in the resource window. 
4746 The string has to be unique.
4749 @item
4750 void update_gui(); 
4752 Should first load the configuration and then redraw the GUI with the
4753 new parameters.  All the plugins using GuiCast have a format like
4755 @example
4756 void MyPlugin::update_gui()
4758         if(thread)
4759         @{
4760                 load_configuration();
4761                 thread->window->lock_window();
4762 // update widgets here
4763                 thread->window->unlock_window();
4764         @}
4766 @end example
4768 to handle concurrency and conditions of no GUI.
4770 @item
4771 int show_gui();
4773 Instantiate the GUI and switch the plugin to GUI mode.  This is implemented with
4775 @example
4776 SHOW_GUI_MACRO(plugin_class, thread_class)
4777 @end example
4779 @item
4780 int set_string();
4782 Changes the title of the GUI window to a certain string.  This is implemented with
4784 @example
4785 SET_STRING_MACRO(plugin_class)
4786 @end example
4789 @item
4790 void raise_window();
4792 Raises the GUI window to the top of the stack.  This is implemented with
4794 @example
4795 RAISE_WINDOW_MACRO(plugin_class)
4796 @end example
4800 @end itemize
4808 @node THE CONFIGURATION OBJECT
4809 @subsection THE CONFIGURATION OBJECT
4811 The configuration object is critical for GUI updates, signal
4812 processing, and default settings in realtime plugins.  Be aware it is
4813 not used in nonrealtime plugins.  The configuration object inherits
4814 from nothing and has no dependancies.  It's merely a class containing
4815 three functions and variables specific to the plugin's parameters.
4817 Usually the configuration object starts with the name of the plugin
4818 followed by Config.
4820 @example
4821 class MyPluginConfig
4823 public:
4824         MyPluginConfig();
4825 @end example
4828 Following the name of the configuration class, we put the three
4829 required functions and the configuration variables.
4831 @example
4832         int equivalent(MyPluginConfig &that);
4833         void copy_from(MyPluginConfig &that);
4834         void interpolate(MyPluginConfig &prev, 
4835                 MyPluginConfig &next, 
4836                 int64_t prev_position, 
4837                 int64_t next_position, 
4838                 int64_t current_position);
4842         float parameter1;
4843         float parameter2;
4844         int parameter3;
4847 @end example
4850 Now you must define the three functions.  @b{Equivalent} is called by
4851 LOAD_CONFIGURATION_MACRO to get the return value.  That is all it's
4852 used for and if you don't care about load_configuration's return value,
4853 you can leave this function empty.  It normally returns 1 if the
4854 argument's variables have the same values as the local variables.
4856 Then there's @b{copy_from} which transfers the configuration values
4857 from the argument to the local variables.  This is once again used in
4858 LOAD_CONFIGURATION_MACRO to store configurations in temporaries.  Once 
4859 LOAD_CONFIGURATION_MACRO has replicated the configuration, it loads a
4860 second configuration.  Then it interpolates the two configurations to
4861 get the current configuration.  The interpolation function performs the
4862 interpolation and stores the result in the local variables.
4864 Normally the interpolate function calculates a previous and next
4865 fraction, using the arguments.
4867 @example
4868 void MyPluginConfig::interpolate(MyPluginConfig &prev, 
4869                 MyPluginConfig &next, 
4870                 int64_t prev_position, 
4871                 int64_t next_position, 
4872                 int64_t current_position)
4874         double next_scale = (double)(current_position - prev_position) / (next_position - prev_position);
4875         double prev_scale = (double)(next_position - current_position) / (next_position - prev_position);
4876 @end example
4878 Then the scales are applied to the previous and next configuration
4879 object to yield the current values.
4881 @example
4883         this->parameter1 = (float)(prev.parameter1 * prev_scale + next.parameter1 * next_scale);
4884         this->parameter2 = (float)(prev.parameter2 * prev_scale + next.parameter2 * next_scale);
4885         this->parameter3 = (int)(prev.parameter3 * prev_scale + next.parameter3 * next_scale);
4888 @end example
4890 Alternatively you can copy the values from the previous configuration
4891 argument for no interpolation.
4893 This usage is the same in audio and video plugins.  In video playback,
4894 the interpolation function is called for every frame, yielding smooth
4895 interpolation.  In audio playback, the interpolation function is called
4896 only once for every console fragment and once every time the insertion
4897 point moves.  This is good enough for updating the GUI while selecting
4898 regions on the timeline but it may not be accurate enough for really
4899 smooth rendering of the effect.
4901 For really smooth rendering of audio, you can still use
4902 load_configuration when updating the GUI.  For process_realtime;
4903 however, ignore load_configuration and write your own interpolation
4904 routine which loads all the keyframes in a console fragment and
4905 interpolates every sample.  This would be really slow and hard to
4906 debug, yielding improvement which may not be audible.  Then of course,
4907 every century has its set of wierdos.
4909 An easier way to get smoother interpolation is to reduce the console
4910 fragment to 1 sample.  This would have to be rendered and played back
4911 in a separate program of course.  The Linux sound driver can't play
4912 fragments of 1 sample.
4921 @node THE USER INTERFACE OBJECT
4922 @subsection THE USER INTERFACE OBJECT
4925 The user interface object at the very least consists of a pointer to a
4926 window and pointers to a set of widgets.  Using Cinelerra's toolkit, it
4927 consists of a @b{BCWindow} derivative and a @b{Thread} derivative.  The
4928 Thread derivative is declared in the plugin header using
4930 @example
4931 PLUGIN_THREAD_HEADER(plugin_class, thread_class, window_class)
4932 @end example
4934 Then it is defined using
4936 @example
4937 PLUGIN_THREAD_OBJECT(plugin_class, thread_class, window_class)
4938 @end example
4940 This in combination with the SHOW_GUI macro does all the work in
4941 instantiating the Window class.  This is used in realtime plugins but
4942 not in nonrealtime plugins.  Nonrealtime plugins create and destroy
4943 their GUI in @b{get_parameters} and there's no thread.
4945 Now the window class must be declared in the plugin header.  It's
4946 easiest to implement the window by copying an existing plugin and
4947 renaming the symbols.  The following is an outline of what happens. 
4948 The plugin header must declare the window's constructor using the
4949 appropriate arguments.
4951 @example
4953 #include "guicast.h"
4955 class MyPluginWindow : public BC_Window
4957 public:
4958         MyPluginWindow(MyPluginMain *plugin, int x, int y);
4960 @end example
4962 This becomes a window on the screen, positioned at x and y.
4964 It needs two methods
4966 @example
4967         int create_objects();
4968         int close_event();
4969 @end example
4971 and a back pointer to the plugin
4973 @example
4974         MyPlugin *plugin;
4975 @end example
4978 The constructor's definition should contain extents and flags causing
4979 the window to be hidden when first created.  The create_objects member
4980 puts widgets in the window according to GuiCast's syntax.  A pointer to
4981 each widget which is to be synchronized to a keyframe is stored in the
4982 window class.  These are updated in the @b{update_gui} function you
4983 earlier defined for the plugin.  The widgets are usually derivatives of
4984 a GuiCast widget and they override functions in GuiCast to handle
4985 events.  Finally create_objects calls 
4987 @example
4988         show_window();
4989         flush();
4990 @end example
4992 to make the window appear all at once.
4994 The close_event member should be implemented using
4996 @example
4997 WINDOW_CLOSE_EVENT(window_class)
4998 @end example
5000 Every widget in the GUI needs to detect when its value changes.  In
5001 GuiCast the @b{handle_event} method is called whenever the value
5002 changes.  In @b{handle_event}, the widget then needs to call
5003 @b{plugin->send_configure_change()} to propogate the change to rendering.
5013 @node REALTIME PLUGINS
5014 @section REALTIME PLUGINS
5016 Realtime plugins should use PLUGIN_CLASS_MEMBERS to define the basic
5017 set of members in their headers.  All realtime plugins must define an
5019 @example
5020 int is_realtime()
5021 @end example
5023 member returning 1.  This causes a number of realtime methods to be
5024 called during playback and the plugin to be droppable on the timeline.
5026 Realtime plugins must define a member called
5028 @example
5029 process_realtime 
5030 @end example
5032 to be called during every audio fragment and video frame.  It has an
5033 input and an output argument and for audio, a size argument.  The
5034 process_realtime function should start by calling
5035 @b{load_configuration}.  The LOAD_CONFIGURATION_MACRO returns 1 if the
5036 configuration changed.  Then process_realtime should move the data from
5037 the input to the output with processing.
5041 Additional members are implemented to maintain configuration in
5042 realtime plugins.  Some of these are also needed in nonrealtime
5043 plugins.
5045 @itemize
5046 @item
5047 void read_data(KeyFrame *keyframe);
5049 Loads data from a keyframe into the plugin's configuration.  Inside the
5050 keyframe is an XML string.  It's most easily parsed by creating a
5051 @emph{FileXML} object.  See an existing plugin to see how the read_data
5052 function is implemented.
5054 Read data loads data out of the XML object and stores values in the
5055 plugin's configuration object.
5057 @item
5058 void save_data(KeyFrame *keyframe);
5060 Saves data from the plugin's configuration to a keyframe.  Inside the
5061 keyframe you'll put an XML string which is normally created by a
5062 FileXML object.  See an existing plugin to see how the save_data
5063 function is implemented.
5065 Save data saves data from the plugin's configuration object into the
5066 XML object.
5068 @item
5069 int load_defaults();
5071 Another way the plugin gets parameters is from a defaults file.  The
5072 load and save defaults routines use a Defaults object to parse the
5073 defaults file.  The defaults object is created in @b{load_defaults} and
5074 destroyed in the plugin's destructor.  See an existing plugin to see
5075 how the Defaults object is used.
5077 @item
5078 int save_defaults();
5080 Saves the configuration in the defaults object.
5082 @end itemize
5089 @node NONREALTIME PLUGINS
5090 @section NONREALTIME PLUGINS
5092 Like realtime plugins, @b{load_defaults} and @b{save_defaults} must be
5093 implemented.  In nonrealtime plugins, these are not just used for
5094 default parameters but to transfer values from the user interface to
5095 the signal processor.  There doesn't need to be a configuration class
5096 in nonrealtime plugins.
5098 Unlike realtime plugins, the LOAD_CONFIGURATION_MACRO can't be used in
5099 the plugin header.  Instead, the following methods must be defined.
5101 The nonrealtime plugin should contain a pointer to a defaults object.
5103 @example
5105 Defaults *defaults;
5107 @end example
5109 It should also have a pointer to a MainProgressBar.
5111 @example
5113 MainProgressBar *progress;
5114 @end example
5116 The progress pointer allows nonrealtime plugins to display their
5117 progress in Cinelerra's main window.
5119 The constructor for a nonrealtime plugin can't use
5120 PLUGIN_CONSTRUCTOR_MACRO but must call @b{load_defaults} directly.
5122 The destructor, likewise, must call @b{save_defaults} and @b{delete
5123 defaults} directly instead of PLUGIN_DESTRUCTOR_MACRO.
5125 @itemize
5127 @item
5128 VFrame* new_picon();
5130 char* plugin_title();
5132 The usage of these is the same as realtime plugins.
5134 @item
5135 int is_realtime();
5137 This function must return 0 to indicate a nonrealtime plugin.
5139 @item
5141 int get_parameters();
5143 Here, the user should create a GUI, wait for the user to hit an OK
5144 button or a cancel button, and store the parameters in plugin
5145 variables.  This routine must return 0 for success and 1 for failure. 
5146 This way the user can cancel the effect from the GUI.
5148 Unlike the realtime plugin, this GUI need not run asynchronously of the
5149 plugin.  It should block the get_parameters function until the user
5150 selects OK or Cancel.
5152 @item
5153 int load_defaults();
5155 This should create a defaults object and load parameters from the
5156 defaults object into plugin variables.
5158 @item
5159 int save_defaults();
5161 This should save plugin variables to the defaults object.
5164 @item
5165 int start_loop();
5167 If @b{get_parameters} returned 0 for success, this is called once to
5168 give the plugin a chance to initialize processing.  The plugin should
5169 instantiate the progress object with a line like
5171 @example
5173 progress = start_progress("MyPlugin progress...", 
5174         PluginClient::end - PluginClient::start);
5176 @end example
5178 The usage of @b{start_progress} depends on whether the plugin is
5179 multichannel or single channel.  If it's multichannel you always call
5180 start_progress.  If it's single channel, you first need to know whether
5181 the progress bar has already started in another instance of the plugin.
5183 If @b{PluginClient::interactive} is 1, you need to start the progress
5184 bar.  If it's 0, the progress bar has already been started.
5186 The PluginClient defines @b{end} and @b{start} for the timeline range
5187 to be processed.  The units are either samples or frames.
5189 @item
5190 int process_loop
5192 This is called repeatedly until the timeline range is processed.  It
5193 takes either a samples or frames buffer and a reference to
5194 write_length.  The arguments are a location and length for the output
5195 if it's audio.
5197 The plugin must use @b{read_samples} or @b{read_frame} to read the
5198 input.  These functions take a buffer and a position relative to the
5199 start of the timeline.  Then it must process it and put the output in
5200 the arguments to process_loop.  write_length should contain the number
5201 of samples generated if it's audio.
5203 Finally, process_loop must test @b{PluginClient::interactive} and
5204 update the progress bar if it's 1.
5206 @example
5207 progress->update(total_written);
5208 @end example
5210 returns 1 or 0 if the progress bar was cancelled.  If it's 1,
5211 process_loop should return 1 to indicate a cancellation.  In addition
5212 to progress bar cancellation, @b{process_loop} should return 1 when the
5213 entire timeline range is processed.
5215 @item
5216 int stop_loop();
5218 This is called after process_loop processes its last buffer.  
5220 If PluginClient::is_interactive is 1, this should call
5221 @b{stop_progress} in the progress bar pointer and delete the pointer. 
5222 Then it should delete any objects it created for processing in
5223 @b{start_loop}.
5226 @end itemize
5230 @node AUDIO PLUGINS
5231 @section AUDIO PLUGINS
5233 The simplest audio plugin is Gain.  The processing object should
5234 include @b{pluginaclient.h} and inherit from @b{PluginAClient}.  Realtime audio plugins need to
5235 define 
5237 @example
5238 int process_realtime(int64_t size, 
5239                 double **input_ptr, 
5240                 double **output_ptr);
5241 @end example
5243 if it's multichannel or 
5245 @example
5246 int process_realtime(int64_t size, 
5247                 double *input_ptr, 
5248                 double *output_ptr);
5249 @end example
5251 if it's single channel.  These should return the number of samples
5252 generated.  In the future, the number of samples return value will
5253 synchronize plugins which delay audio.
5255 Nonrealtime audio plugins need to define
5257 @example
5258 int process_loop(double *buffer, int64_t &write_length);
5259 @end example
5261 for single channel or
5263 @example
5264 int process_loop(double **buffers, int64_t &write_length);
5265 @end example
5267 for multi channel.
5270 @node VIDEO PLUGINS
5271 @section VIDEO PLUGINS
5276 The simplest video plugin is Flip.  The processing object should
5277 include @b{pluginvclient.h} and inherit from @b{PluginVClient}. 
5278 Realtime video plugins need to define 
5280 @example
5281 int process_realtime(VFrame **input, 
5282                 VFrame **output);
5283 @end example
5285 if it's multichannel or 
5287 @example
5288 int process_realtime(VFrame *input, 
5289                 VFrame *output);
5290 @end example
5292 if it's single channel.  They only get one frame per call but should  
5293 return the number of frames generated anyway.  In the future, the
5294 number of frames return value will synchronize plugins which delay
5295 video.
5297 The nonrealtime video plugins need to define
5299 @example
5300 int process_loop(VFrame *buffer);
5301 @end example
5303 for single channel or
5305 @example
5306 int process_loop(VFrame **buffers);
5307 @end example
5309 for multi channel.  They're always assumed to have a write length of 1
5310 when they return 0.
5314 @node TRANSITION PLUGINS
5315 @section TRANSITION PLUGINS
5320 The simplest video transition is @b{dissolve} and the simplest audio
5321 transition is @b{crossfade}.   These work identical to the single
5322 channel, realtime audio and video plugins.  The only difference is the
5323 addition of an @b{is_transition} method to the processing object. 
5324 @b{is_transition} should return 1.
5326 Routines exist for determining where you are relative to the
5327 transition's start and end.
5329 @itemize
5331 @item @b{PluginClient::get_source_position()} - returns an integer
5332 position since the start of the transition
5334 @item @b{PluginClient::get_total_len()} - returns the integer length of
5335 the transition.  The units are either samples or frames.
5337 @end itemize
5340 Users should divide source position by total length to get the fraction
5341 of the transition the current @b{process_realtime} function starts
5344 Secondly, the meaning of the input and output arguments to
5345 @b{process_realtime} is different for transitions than for realtime
5346 plugins.
5348 The first argument to process_realtime is the data for the next edit. 
5349 The second argument to process_realtime is the data for the previous
5350 edit.  Eventually the second argument becomes the output.
5356 @node PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK
5357 @section PLUGIN GUI'S WHICH UPDATE DURING PLAYBACK
5359 Effects like @b{Histogram} and @b{VideoScope} need to update the GUI
5360 during playback to display information about the signal.  This is
5361 achieved with the @b{send_render_gui} and @b{render_gui} methods. 
5362 Normally in process_realtime, when the processing object wants to
5363 update the GUI it should call @b{send_render_gui}.  This should only be
5364 called in process_realtime.  Send_render_gui goes through a search and
5365 eventually calls @b{render_gui} in the GUI instance of the plugin.
5367 Render_gui should have a sequence like
5369 @example
5370 void MyPlugin::render_gui(void *data)
5372         if(thread)
5373         @{
5374                 thread->window->lock_window();
5376 // update GUI here
5378                 thread->window->unlock_window();
5379         @}
5382 @end example
5385 The sequence uses one argument, a void pointer to transfer information
5386 from the renderer to the GUI.  The user should typecast this pointer
5387 into something useful.
5391 @node PLUGIN QUERIES
5392 @section PLUGIN QUERIES
5394 There are several useful queries in PluginClient which can be accessed
5395 from the processing object.  Some of them have different meaning in
5396 realtime and non-realtime mode.  They all give information about the
5397 operating system or the project.
5399 @itemize
5402 @item
5404 @b{int PluginClient::get_project_smp()} Gives the number of CPU's on
5405 the system minus 1.  If it's a uniprocessor it's 0.  If it's a dual
5406 processor, it's 1.  This number should be used to gain any parallelism.
5409 @item
5411 @b{double PluginClient::get_project_framerate()} Gives the frames per
5412 second of the video.
5415 @item
5417 @b{int PluginClient::get_project_samplerate()} Gives the samples per
5418 second of the audio.
5420 @end itemize
5428 @node RELEASE NOTES
5429 @chapter RELEASE NOTES
5431 @itemize
5433 @b{1.0.0}
5435 @example
5437 First release since Broadcast 2000 migration.
5439 @end example
5442 @b{1.1.0}
5445 @example
5447 Titler fonts installed by rpm.
5448 XMovie decodes ac3 according to redesigned liba52 channel mappings.
5449 Quicktime MPEG4 parameters debugged.
5450 Background rendering over a renderfarm.
5451 Renderfarm clients automatically reduced to idle priority.
5452 Better MJPA decoding on single processors.
5453 Better title functionality in 16 bit colormodels.
5454 Undo for effect keyframes.
5455 Effect GUI's cleared during undo for effect attachment.
5456 Fewer lockups on startup.
5457 Proper keyframe interpolation in scale effect.
5458 Stamp timecode in titler.
5459 Memory leaks in rendering stages removed.
5460 Removed legacy plugin server code.
5461 Option to generate sequence header in every GOP for MPEG2.
5462 LADSPA support.
5463 Listbox doesn't enter drag_icon state when dragging column division.
5464 Effect rendering bug fixed.
5465 64 bit mpeg transport stream seeking beyond 2 gigs.
5466 More accurate mask drawing when projector is zoomed.
5467 Clear labels updates CWindow
5468 More accurate YUV/RGB conversions.
5469 Import partial tgas
5470 Copy keyframes doesn't copy default keyframe.
5471 Track highlighting offset by vertical scroll.
5472 Multiple video scope, spectrogram, and histogram displays may be opened.
5473 HutSaturation in YUV colorspaces.
5474 Undo for masks.
5475 Shared synthesis effects cause the sharing tracks to 
5476 play back instead of just the owning track.
5477 Quicktime recovery utility improved.
5478 Single frame recording with multiple batches doesn't crash.
5479 DV encoding.
5480 New video effects:
5481 gradient, downsample video, radial blur, linear blur, zoom blur,
5482 histogram, perspective.
5484 New audio effect:
5485 Sound level
5489 @end example
5493 @b{1.1.5}
5497 @example
5499 More options for the ffmpeg/MPEG-4 codecs.
5500 Histogram works on SMP.
5501 Better 16 bit alpha blending.
5502 BRender path updates from preferences.
5503 Separate preroll for background rendering and rendering.
5504 Deinterlace by averaging lines 0 and 2 or 1 and 3 to get intervening lines.
5505 Adaptive deinterlace.
5506 Frame per second statistics in renderfarm are more reliable.
5507 Select and slide in the patchbay.
5508 Video scope can be resized.
5509 Effect keyframes pasted in right positions more often.
5510 Selective denoising of video based on color channel.
5511 More mouse wheel bindings in MainWindow and ListBox.
5512 Ctrl-w closes effect windows.
5513 Perspective doesn't crash when switching from stretch to sheer.
5514 Better text list searching and keyboard navigation.
5515 Better Vorbis decoding after a pause.
5516 Close recording without recording anything doesn't crash.
5517 Save backup now option.
5518 OpenGL not required anymore.
5519 Time format changes update the selection textboxes more often.
5520 MPEG-4 deblocking option in XMovie and Cinelerra.
5521 Resize in Record GUI doesn't screw it up.
5522 Better export of YUVA16161616 to Component Y'CbCr 10-bit 4:4:4.
5523 Better import of Component Y'CbCr 10-bit 4:4:4 to RGB colorspaces.
5525 @end example
5529 @b{1.1.6}
5532 @example
5534 Create fade keyframe inadverdently drags bezier handle less often.
5535 Float autos don't draw on right edge of timeline when keyframes are beyond right edge.
5536 Better float auto creation.
5537 Add track anywhere in timeline through track popup.
5538 Shared track references are automatically reconfigured after deleting or adding tracks.
5539 Libmpeg3: Better decoding of field-based MPEG video.
5540 Channels can be moved up or down in the Channel picker properly.
5541 Better handling of the long delay in deleting files without overflowing the recording buffers.
5542 Deinterlace really swaps fields instead of just saying it.
5543 Two line swapping combinations in deinterlace.
5544 Better listbox row sizing.
5545 Downsample offset.
5546 Faster window creation.
5547 Splash screen while you wait for it to start up.
5548 File deletion occurs before opening the driver instead of
5549         after opening the driver for recording.
5550 Changing sample rate of WAV file in Asset window works.
5551 JPEG stills get saved with proper dimensions.
5552 Migrated to RedHat 8.0.
5553  - e2fsprogs-devel is needed to compile the background render object.
5554 Fewer crashes due to OpenDivx global variables getting overwritten.
5555 Paste silence and clipboards also shifts effect keyframes properly.
5556 More checks for circular references in shared effects and shared tracks.
5557 Tracking during audio playback without video doesn't run past edge of loop boundaries.
5558 Better keyframing in Titler.
5559 Multiple language encodings in Titler.
5560 Undo of replace project after an effect works.
5561 Frame -> field conversion does line averaging and pixel shifting.
5562 Field -> frame conversion uses pixel shifting.
5563 Negative cursor selection is frame aligned.
5564 Documentation on video cleaning and deinterlacing tools.
5565 Buttons repositioned properly when filebox is resized vertically.
5566 Fade automation is more accurate.
5567 CWindow and VWindow slider position is less erratic after the window is resized.
5568 Timebars with regions track the playback position.
5569 More workarounds for buz driver lockups.
5570 Dragging the cursor on the timebar off the edges scrolls the timeline.
5571 IVTC uses luminance only in YUV colorspaces to improve accuracy.
5572 Quicktime: Tighter audio synchronization when encoding Quicktime with Vorbis audio.
5573 Start of audio effects is more accurate.
5574 Better IEEE1394 playback of video only.
5575 More IEEE1394 playback options.
5577 @end example
5579 @end itemize
5581 @bye