@database CyberAVI.guide @remark Copyright ©1996-1997 by Thore Böckelmann @author "Thore Böckelmann" @macro bold "@{b}$1@{ub}" @macro italic "@{i}$1@{ui}" @macro uline "@{u}$1@{uu}" @master CyberAVI.guide @node main @title "CyberAVI 1.12, ©1996-1997 by Thore Böckelmann" @{bold "CyberAVI 1.12"} Copyright ©1996-1997 by Thore Böckelmann CyberAVI is a fast AVI animation player for 020+ machines with AmigaOS 3.0 or higher and a graphic board with CyberGraphX or AGA. @{" Background " link "background" 0} @{" Requirements " link "requirements" 0} @{" Installation " link "install" 0} @{" Supported encodings " link "encodings" 0} @{" Shell parameters " link "shell" 0} @{" Workbench parameters " link "workbench" 0} @{" Operation " link "operation" 0} @{" Frequently asked questions " link "faq" 0} @{" Contact info " link "contact" 0} @{" History " link "history" 9999} @{" Bugs " link "bugs" 0} @{" To do " link "todo" 0} @{" XAnim " link "xanim" 0} @{" Argue " link "argue" 0} @{" Distribution " link "distribution" 0} @{" Credits " link "credits" 0} @{" Disclaimer " link "disclaimer" 0} CyberAVI is @{bold "Freeware"}. You don't need to send money or anything else (but if you @{uline "really"} want to I won't stop you from doing that :). But I would be glad if you send @{"me" link "contact" 0} an EMail if you like CyberAVI. @endnode @node background @title "Development background" The main reason why CyberAVI was developed was because all existing animation players for AVI files were either far too slow or didn't support my graphic board in the way I wanted. All ports of XAnim supported only very few file formats and were "optimized" for the original Amiga graphic chipset. So I planed to write such a piece of software myself. Because I own a CyberVision64 graphic board it was so easy to support the different file types with display depth >8 bits. CyberAVI was developed on: - A4000/030 (yes, just an MC68EC030 at 25MHz) now equipped with CyberStrom MK2 68060 at 50MHz - AmigaOS 3.1 - 2MB ChipRAM - 16MB FastRAM - FastLaneZ3 SCSI host (disk capacity about 1.3GB) - CyberVision64 with 4MB graphic memory - Philips 17B 17" monitor @endnode @node requirements @title "Requirements" minimum hardware requirements: -Amiga with AmigaOS 3.0 (V39) -MC68020 -graphic board with CyberGraphX (eg. CyberVision64, Picasso II, Retina, etc) or AGA chipset -2MB of FastRAM, 512K of ChipRAM software requirements -CyberGraphX 2.21 or higher (if used with a graphic board) -asyncio.library V39 (included) recommended hardware requirements: -Amiga with AmigaOS 3.1 (V40) -MC68040 at 25MHz minimum -graphic board with CyberGraphX 2.21 or higher I recommend a registered version of CyberGraphX since the unregistered version doesn't support 24 bit screenmodes. Up from version 1.5 there is support for AGA, but I still recommend a graphic board with CyberGraphX, because OS3.x's graphics.library has some bugs and display on AGA is not just slow, it is DAMN slow! Please don't blame me for this... @endnode @node install @title "How to install??" Just use the supplied installer script. If you are very experienced you can install CyberAVI "by hand". Just copy asyncio.library to LIBS: and copy CyberAVI to where ever you want to. I recommend to use the installer script. @endnode @node encodings @title "Supported encodings" CyberAVI's implementation of AVI decoding is based on the source code to Mark Podlipec's @{"XAnim" link "xanim" 0} program. I will add more decoders as I need them and get any animations to test them. Supported encodings until now: Video: Radius CinePak (CVID) 8 bit (only gray) Radius CinePak (CVID) 16/24/32 bit JFIF JPEG (JPEG) 8 bit (only gray) JFIF JPEG (JPEG) 24 bit Motion JPEG (MJPG) 8 bit (only gray) Motion JPEG (MJPG) 24 bit Microsoft Video 1 (MSVC) 8/16 Bit Microsoft RGB (RGB) 4/8/16/24/32 bit Microsoft RLE8 (RLE8) 8 bit IBM Ultimotion (ULTI) 16 bit Component Video (YUV2) 16/24/32 bit Intel Raw (YUV9) 9/16/24/32 bit Planar MPEG (YV12) 12/16/24/32 bit Audio: PCM 8/16 bit Mono/Stereo MS ADPCM 4 bit Mono/Stereo (is really 16 bit) DVI ADPCM 4 bit Mono/Stereo (is really 16 bit) I am still looking for other encodings. Please @{"contact me" link "contact" 0} if you have an animation with one of the following compressions: Video: - RLE4 (Microsoft RLE4) - XMPG (Editable MPEG) - IJPG (Intergraph JPEG) - CYUV (Creative Technology CYUV) - or any other unsupported format, except "Intel Indeo" Audio: - IMA ADPCM - µ-Law - or any other unsupported format You can send me any animation with one of the above compressions. Just compress it (with e.g. LhA) and send it uuencoded to one of my @{"EMail" link "contact" 0} addresses. My worst problem is to support the @{"Intel Indeo" link "faq" 0} codec. Intel charges $5000 (in words: five thousand US-Dollars) for a licence to their source code. So it seems to be impossible that Indeo is ever supported :( @endnode @node shell @title "Shell Parameters" The command template for CyberAVI is... FILES/M,PUBSCREEN/K,SCREENMODEREQ=SMR/S,SCREENMODEID=SMID/K,FORCE24/S, GRAY=GREY/S,AGA/S,HAM8/S,DITHER/S,CMAP/K,BUFFERSIZE=BUF/K/N,DELAY/K/N, LOOP/S,MAXFPS/S,NOINDEX/S,NOSOUND/S,NOVIDEO/S,SKIP/S,MAGNIFY/K/N,STATS/S, QUIET/S,DEBUG/S FILES One or more AVI files you want to view. If you don't specify a filename an ASL file requester will pop up to let you choose one or more animations. Wildcards, like ?, #? or *, are allowed. PUBSCREEN This options forces playback to a window on a public screen. Both the screen and the animation must have at least a depth of 15 bits. If this screen does not exist or if the screen's or animation's depth is lower than 15 bits or CyberAVI will use its own screen. @{bold "NOTE:"} This option only works with CyberGraphX! If you have CyberGraphX V3 (at least rev 41.9) you will be able to display colormapped animations (8bit or less) on truecolor screens, too. This is NOT possible for older revisions or CyberGraphX 2! SCREENMODEREQ Enables screenmode requester. If the screen is to be opened for playback you can choose a screenmode here. This requester will appear @{uline "everytime"} CyberAVI tries to open a screen. SCREENMODEID This option forces use of a particular screen mode. By doing this you don't need to select a mode via requester. The ID must be given as a hexadecimal number that starts either with "0x" or with "$". (i.e.: 0x21000, $40120001) @{bold "NOTE:"} It will @{bold "not"} be checked if it really possible to show the animation with this mode. For example, if you want to view a 24bit animation with the mode 0x29804 (PAL: HighRes Interlace HAM), this will only succeed if you also specify the HAM8 option and you machine is able to show this mode. FORCE24 Forces 16 bit animations to be displayed on a 24 bit screen. This may increase playback speed a bit. @{bold "NOTE:"} If CyberAVI is running on a non-CyberGraphX system this option is totally useless and will be ignored. This option only works for 16 bit animations. For 8 bit animations this option will be ignored!! For 24 bit animations this option is (of course) senseless. GRAY/GREY This switch will set a grayscale palette instead of the normal color palette. This may speed up playback, because less data have to be transfered. @{bold "NOTE:"} This option is mutual exclusive with HAM8 and DITHER! AGA Enables AGA support. This options doesn't need to be specified if you don't own a graphic board. CyberAVI will recognize itself if either AGA or CyberGraphX is available. It is just meant to @{uline "force"} playback on AGA if you want. If this option is specified or only AGA chipset is available all frames will be reduced to 256 colors without doing any dithering, just color reduction. @{bold "NOTE:"} Do not expect too much from AGA support. AGA chipset is damn slow compared to recent CyberGraphX compatible boards. And since there are still some bugs in OS3.x's graphics.library display may look corrupt on AGA screens. HAM8 Forces playback of truecolor animations (16 bits or more) to a HAM8 screen. This may result in better looking pictures, but playback speed will slow down! @{bold "NOTE:"} This option only works with AGA! This option is mutual exclusive with GRAY and DITHER! DITHER This option enables ordered dithering of truecolor animations instead of just simple color reduction. This may result in better looking pictures, but playback speed will slow down! @{bold "NOTE:"} This option only works with AGA! This option is mutual exclusive with GRAY and HAM8! CMAP Here you can specify the filename of a palette file (like PPaint and DPaint do save them). The contained color data will be used instead of the standard palette. This option only takes effect with animations with 16 or 24 bits and AGA display enabled (with or without dithering). @{bold "NOTE:"} iffparse.library V37 is required for this! BUFFERSIZE This option sets the buffersize for asynchronous reading. Default value is 64K. The given value has to be between 1 and 4096. @{bold "NOTE:"} This value is interpreted as the given amount of blocks of 1024 bytes. So a value of 50 means 51200 bytes and NOT 50 bytes!! DELAY CyberAVI will wait the given amount of seconds before displaying the first frame. This is very useful if you have a slow synchronizing monitor, so you don't miss a few frames at beginning of the animation. Default value is 2 seconds. The given value has to be between 0 and 10. LOOP Enables looping of the animation when it finishes. The default is to exit at the animation's end. MAXFPS Set playback speed to maximum possible. In fact a delay of 0 seconds per frame is set, so there won't be any delay and playback will be as fast as your machine can do. NOINDEX This switch forces CyberAVI to read the file "as is". Every AVI file can have an optional index describing in which sequence the file has to be played. If you set this option the index will be ignored and the animation will be played in the sequence the frames appear in the file. NOSOUND Disables sound playback. Only the video frames will be shown. NOVIDEO Disables playback of the video frames. If the animation also has audio frames these will be played alone. If the animation has no audio frames nothing will be done. SKIP This option enables skipping of video chunks if playback speed is too slow. SKIP will only work if the animation's index can be used (index available and NOINDEX ist @{uline "NOT"} specified). Skipping will be done to the next available keyframe to avoid "humpling" of sound. If there is no "next" keyframe and your machine is too slow there is no way to play sound correctly. MAGNIFY This option sets a scaling factor for the display window's size. Possible values ust be between -4 and +4. Negative values cause smaller display, positive values cause bigger display than normal. no additional scaling. You should not set higher values than 2, because CyberGraphX gets really slow with factors of 3 or 4. Values of 0 or -1 also cause no scaling. @{bold "NOTE:"} This option only works with CyberGraphX and on public truecolor sceens! It has no effect when playback is done on an own screen. STATS This option causes some statistical information to be displayed after playback. This will include the number of frames, the number of displayed frames, expected playback speed and real playback speed. QUIET This options will switch off all message printing. This does not affect error messages! DEBUG Enables debug mode. When switching debug mode on CyberAVI will print much stuff to the output window describing the work being done. @{bold "Attention!!"} The following combinations of options are illegal and will cause one option to be switched off: - AGA and PUBSCREEN (AGA is switched off) - HAM8 and PUBSCREEN (HAM8 is switched off) - HAM8 and GRAY (GRAY is switched off) - DITHER and GRAY (GRAY is switched off) - DITHER and HAM8 (HAM8 is switched off) - SKIP and NOINDEX (SKIP is switched off) - NOVIDEO and NOSOUND (NOVIDEO is switched off) @{bold "Notes:"} The FRAMESPERSEC switch doesn't exist anymore from V1.4 on since there was no real reason for its existance. Or does anybody view his AVIs with 2 fps?? :) The PRIORITY option doesn't exist anymore from V1.7 on, because all subtasks have been removed. @{bold "Examples:"} CyberAVI blabla.avi This will just show blabla.avi with sound (if supported) . The index will be used if it is available. CyberAVI blabla.avi nosound noindex maxfps This will show blabla.avi @{uline "without"} sound and at maximum possible speed. No index will be used. CyberAVI blubb.avi screenmodereq buffersize=128 This will show blubb.avi, but before playback starts CyberAVI will ask you for a screenmode. A buffersize of 128K is used for reading. CyberAVI brabbel.avi delay=5 loop stats This will show brabbel.avi with a delay of 5 seconds before starting playback. The loop option causes CyberAVI to restart playback as soon as the animation's end is reached. Playback can be aborted by pressing a mousebutton, ESC or CTRL-C. After playback some statistical data will be shown. CyberAVI veryslow.avi skip quiet gray This will show veryslow.avi without printing any information. If your machine isn't fast enough then delayed frames will be skipped if possible. A grayscale palette will be used instead of the normal colors. CyberQT verysmall.mov magnify 2 pubscreen ThisOne This will show verysmall.avi on the public screen "ThisOne" and all frames will be scaled by a factor of 2, this means double width and height. @endnode @node workbench @title "Workbench Parameters" The following ToolTypes are available for CyberAVI's and any AVI animation's icon: WINDOW This specifies the output window CyberAVI uses. "NIL:" is the default value, so no text output will be visible. This option only exists if CyberAVI was started from Workbench PUBSCREEN \\ SCREENMODEREQ | SCREENMODEID | FORCE24 | GRAY or GREY | AGA | HAM8 | DITHER | CMAP | BUFFERSIZE | DELAY | These options are identical with the @{"shell options" link "shell" 0}, LOOP | so please have a look there for further explanation. MAXFPS | NOINDEX | NOSOUND | NOVIDEO | SKIP | MAGNIFY | STATS | QUIET | DEBUG / @{bold "NOTE:"} The DEBUG option only makes sense in combination with the WINDOW option. So if you specify DEBUG but not WINDOW you won't see any debug information. @endnode @node "operation" @title "Operation" CyberAVI will try to show the animation at the correct speed, but this mostly depends on your machine. Faster processors (e.g. MC68040 or MC68060) and fast graphic board will result in more smooth playback. If you did not specify the @{"NOINDEX" link "shell" 0} option CyberAVI will try to read the index in every AVI file. This may take a few seconds and depends on how fast you machine is and how big the animation is. To quit CyberAVI or stop playback you can do one of the following things: - press either mousebutton, ESC or CTRL-D This will just terminate playing the current animation and is the only way to quit CyberAVI if the @{"LOOP" link "shell" 0} option has been specified. Aborting playback by pressing a mousebutton only works if CyberAVI is running on its own screen. When playback is done on a public screen the mousebuttons will have NO effect! - press CTRL-C This will quit CyberAVI completely - send a Break to CyberAVI's task with tools like Scout or XOper This is the same as pressing CTRL-C During playback you can use the function keys to adjust playback speed: F1 - as fast as possible, same as @{"MAXFPS" link "shell" 0} option F2 - 60 frames per second F3 - 30 frames per second F4 - 24 frames per second F5 - 15 frames per second F6 - 12 frames per second F7 - 10 frames per second F8 - 5 frames per second F9 - 1 frame per second F10 - speed specified in AVI file The real speed you get may differ from the speed it should be, but this depends on you machine. The faster you machine is, the more exact playback speed will be. @endnode @node faq @title "Frequently asked questions" Q: Why is "Intel Indeo" not supported? Most of my AVIs are saved with this encoding! A: Intel charges $5000 (or more) for a non-disclosure agreement and the source to their Indeo technology. I am just a student and can't afford so much money. Now you can imagine? Although XAnim supports "Intel Indeo" it is impossible to implement support for it, because there are no sources to this decoder, but only precompiled modules for various machine. There exists one module for Sun3 (an old SUN workstation with an MC68020 CPU), but this module also cannot be used, because it heavily relies on other parts of XAnim. The only sollution would be to disassemble this Sun3 module und re-translate it back to C. But this very disencouraging for a module with ~100K. If you are interested to do this job nevertheless, then just contact @{"me" link "contact"}. I will send you all necessary information then. Q: CyberAVI just plays the animation's sound, but no video. What is going wrong? A: Two cases are possible. Either it is a an audio-only file, then it is obviously why you can't see anything, or the video encoding is not supported (i.e. Intel Indeo). In the second case only the sound will be played (if possible). If you want to know the video encoding, then just start CyberAVI from a shell without any parameters but the filename. All important information will then be printed out to the shell window. Q: I have an animation whose video or audio compression is unknown to CyberAVI. What can I do? A: If this one is NOT an Intel Indeo (see above) animation, then please send it to @{"me" link "contact" 0}. I will try to support that compression in CyberAVI's next release. Take a look @{"here" link "encodings" 0} for which encodings are currently supported (or not supported). Q: Why is the ECS chipset not supported? A: There are some very simple reasons: CyberAVI was originally designed just to run on CyberGraphX systems only. From V1.5 on CyberAVI will also run on AGA machines and all graphics are reduced to 256 colors. AGA chipset is a lot faster than ECS chipset, but access to ChipRAM is still very slow. Thus playing AVIs on AGA machines is MUCH slower than on CyberGraphX machines, even if you have a fast CPU, like MC68040 or MC68060. Watching AVIs on AGA machines is really no fun. So, what would you expect from ECS? Q: Why does the sound sometimes listen very bad? A: Either your machine isn't fast enough to decode the video frames in time and so the sound can't be played correctly, or it is my fault. Sound support still is not perfect. You can try the @{"SKIP" link "shell" 0} option to allow skipping of video frames if your machine is not fast enough. On the other hand it could be an animation, whose audio samples have to be played at a frequency beyond 28kHz. If the animation is NOT shown on a so called "doubled scanned" screen CyberAVI will automatically activate some kind of resampling for the audio data. This means: every second sample is ignored and the frequency is divided by 2. The result is that audio samples with 48kHz can be played correctly even without a screenmode like DblPAL or Multiscan. Because of this reduction of data you will of course lose quality and the resampled samples may listen worse than the original ones, but there is no way to change this. Q: With some of my animations CyberAVI tells me, that they are corrupted. Is there a way to view them nevertheless? A: If a part of the animation is missing, then it is the end of the file in most cases. Just try to start CyberAVI with option @{"NOINDEX" link "shell" 0}, to permit reading the index at the end. But be warned: corrupted data can cause crashes!!! Q: After playing a huge animation with index it takes some time until my Shell's prompt appears again. Are there any bugs when playing such huge animations?? A: Hey, please give Oberon's runtime system some time to free the memory occupied by the index :) This is definately NO bug and only appears with large indices. Q: CyberAVI doesn't display anything or crashes the machine! A: Please @{"contact me" link "contact" 0}! It seems you have found a bug in CyberAVI. Q: CyberAVI refuses to work on my A500 with MC68000/7 bought back in 1988! Why? A: !! Q: CyberAVI refuses to work on my 200MHz Pentium with Win95? Should I buy a faster processor and more memory? A: YOU DAMN IDIOT!! @endnode @node contact @title "Contact Info" My adresses: Snail mail: Thore Böckelmann Entgelhof 11 D-32278 Kirchlengern Tel: +49-5744-1309 and +49-5744-1323 Germany Thore Böckelmann Stephanusstraße 82 D-33098 Paderborn Tel: +49-5251-730837 Germany Electronic mail: tboeckel@uni-paderborn.de tboeckel@guardian.fido.de (prefered) FidoNet: 2:2432/230.15 AmigaNet: 39:170/410.15 @{bold "NOTE:"} I prefer guardian.fido.de and my FidoNet account for "just talking" and bugreports. If you want to send any uuencoded stuff (like animations for testing) then PLEASE send them to tboeckel@uni-paderborn.de, because I have (nearly) unlimited mailquota at the university. The most recent version of CyberAVI is always available by filerequest at Blind Guardian BBS. Just request "CyberAVI.lha" at one of the following lines: Line 1: 38400 - 64000 Elink 310 +49-5742-920340 (2:2432/231.0) Line 2: 2400 - 28800 Elsa TQV +49-5742-920341 (2:2432/230.0) Line 3: 2400 - 19200 ZyXEL EG+ +49-5742-920342 (2:2432/232.0) @endnode @node history @title "History" @{bold "V1.0:"} 17-May-96 - first release on Aminet @{bold "V1.1:"} 19-May-96 - corrected version string now it should look like "CyberAVI Vx.x (date)" - timer checking implemented now playback speed should be the same on MC68030 and MC68060 - added user adjustable playback speed - added startup delay - added user adjustable buffersize for asynchronous I/O. 26-May-96 - added support for RGB and RLE compression - small speed improvements 28-May-96 - playback may now be aborted by pressing any mousebutton - reduced CVID memory usage a lot by decreasing maximum allowed strip count from 16 to 4. This may lead to incompatibility with some animations, but I never saw any animation with more than one strip. Please report your experiences with this. @{bold "V1.2:"} 31-May-96 - fixed a bug that caused "memory header not located" gurus - again some small speed improvements 2-Jun-96 - added screenmode requester option - added file requester if CyberAVI is called without a filename a requester will pop up for selection @{bold "V1.2a:"} 5-Jun-96 - fixed a bug that caused crashes, when CyberAVI was called with non-AVI-files @{bold "V1.3:"} 10-Jun-96 - added support for 32bit RGB animations - raised default buffer size for asynchronous reading to 64K - many people complained that CyberAVI did not correctly open its screen. I hope this is fixed now. 14-Jun-96 - fixed a bug in RLE8 decoding. Thanks to Steve Cutting for his really @{uline "BIG"} RLE8 animation to find this bug. 16-Jun-96 - seems I have found a bug in MainActors AVI saver. MA saves a buffersize of 0 instead of the correct value. This lead to crashes before. - improved sound support. I hope it listens better now. @{bold "V1.4:"} 1-Jul-96 - started to rewrite CyberAVI completely rewrite is really necessary because the source code had become very confusing and weird :) 7-Jul-96 - why are 00xx chunks used for video data???? Very strange. Much thanks to Maurizio Lotauro for the example animations (swing.avi and baseball.avi). 11-Jul-96 - rewrite is mostly done and playback should be much more stable now - now a subtask is used to decode the video data. This sped up playback speed about 10% on my system. Its priority can be changed with the @{"PRIORITY" link "shell" 0} option - fixed a big bug when width or height of a video frame had to to be rounded to multiples of 4 or 8. Former versions did't allocate enough memory, so innocent memory could be over- written while decoding data - many minor bugfixes - removed FRAMESPERSECOND option since there was no real reason for it (who would play anims at eg. 2 fps??) Therefore the switch @{"MAXFPS" link "shell" 0} was introduced. 12-Jul-96 - now AVIs will be played "by index". If an index chunk is found it will be used to determine the sequence in that the animation will be played. - added @{"NOINDEX" link "shell" 0} switch to force ignorance of the index chunk 14-Jul-96 - added support for 8 bit RGB anims. Thanks to Joachim Greve for for the example animations. 17-Jul-96 - improved recognition of chunks. Unknown video chunks should not appear anymore (eg: 00xx, 00id, etc). Thanks to Ingo Jürgensmann for his animation with these strange chunks. - added support for startup from Workbench. All ToolTypes should work exactly the same way as the Shell options do. 18-Jul-96 - added @{"SKIP" link "shell" 0} switch. This allows skipping of video frames if necessary and possible 27-Jul-96 - fixed problem with shrug display of some animations. Thanks to Manuel Schlegel for his sample animations. - removed some MungWall hits - disabled audio subtask because of many problems while playback 1-Aug-96 - I hope all sound problems are fixed now. A big "Thank you" to Thomas Wenzel for his great advice. - Wow! I spent 4 weeks on rewriting and cleaning up!! I hope I did a good work :) 4-Aug-96 - put audio subtask back in, works fine now - again found some bugs that could lead to crashes :( @{bold "V1.5:"} 23-Aug-96 - finally got my CyberStrom MK2 with an XC68060/50 :)))) GREAT speedup for the whole system :) 16-Sep-96 - started to support AGA :), but it's more difficult than I thought. But the worst thing is: although I now own an XC68060/50 displaying AVIs on AGA is sloooooooooow :( 18-Sep-96 - added option @{"AGA" link "shell" 0} This forces use of color reduction routines used for AGA chipset - support for 8 bit AVIs on AGA is almost finished SetPatch 43.4 is needed for correct display, without it the display will become screwed up due to bugs in graphics.library 22-Sep-96 - finished support for AGA :) now it should be possible to show all supported encodings on AGA machines - CyberAVI now doesn't depend on audio.device anymore, so it should also run on Amiga's without audio hardware (e.g. DraCo) 23-Sep-96 - mouse pointer is now invisible during playback - functions keys can now be used to adjust playback speed - several bug fixes 25-Sep-96 - completely rewrote synchronization part. Skipping of frames should be better now. 26-Sep-96 - added @{"STATS" link "shell" 0} option 27-Sep-96 - rewrote synchronization part again :) now using EClock's instead of TimeVal's, thus timing is much more exact. Now skipping of delayed frames works much better, too. Pooohhhh :) 29-Sep-96 - removed audio subtask again :) I had some spare time and worked on audio support and I think it now works really good. Because audio data are very small and simple there is no need for an asynchronous audio decoder anymore. - when playing animations with palette changes in loop mode the original palette was not restored. This fixed now. - added support for PCM 16 bit mono samples - fixed a bad bug with PCM 8 bit stereo samples. These were played at half speed before. 30-Sep-96 - all truecolor decoders have been splitted in a CyberGraphX part and an AGA part. This may improve speed a bit. - a colormap is allocated only if needed @{bold "V1.6:"} 2-Oct-96 - added support for ADPCM 4 bit mono samples - CyberAVI could hang if playback was aborted very very early. This is fixed now. - again removed some problems with sound playback 7-Oct-96 - SetPatch 43.x is not needed anymore, but it is supported if available. With SetPatch 43.x installed playback is slightly faster, because no additional copy of video data is necessary - switching off mouse pointer during playback caused Enforcer hits. Thanks to Alexander Wild for reporting that bug. - fixed some bugs when pressing keys without function 8-Oct-96 - @{"WINDOW" link "workbench" 0} tooltype was not recognized if started from Workbench - finished Installer script 9-Oct-96 - when playing more than one animation with and without sound at a time CyberAVI could do Wait() for non-existing signals which lead to deadlocks. This is fixed now. - audio.device became very confused when stopping sound without aborting pending requests. This lead to deadlocks before, too. 15-Oct-96 - CyberAVI has now an @{"Argue" link "argue"} interface. At least Argue V1.3 is needed. 16-Oct-96 - again fixed some bad bugs when playing an animation with sound and loop 18-Oct-96 - added @{"GRAY" link "shell" 0} option for doing playback with grayscale palette 23-Oct-96 - added some checking when reading the index with corrupted offsets. Thanks to Chris Longmore for his "strange" animations @{bold "V1.7:"} 29-Oct-96 - AGA display routine now uses Peter Kunath's FastC2P algorithm for chunky->planar conversion. This nearly doubled playback speed with AGA!! :) 13-Nov-96 - again a rewrite became necessary :) - video subtask now completely removed, because overhead was too big. By doing this playback speed again raised a bit! - as there are no subtasks anymore the @{"PRIORITY" link "shell"} option is obsolete now and has been removed. 15-Nov-96 - added support for Component Video (YUV2) compression. Thanks to Chris Longmore for his sample animation. 17-Nov-96 - added support for Intel Raw (YUV9) compression. Note: this is a "hacked" support. It took me nearly one complete day to disassemble the YUV9 part from XAnim's Indeo module. 18-Nov-96 - added support for PCM 16 bit stereo samples 19-Nov-96 - improved skipping of delayed frames - fixed a small display bug when rounded width or height was different from original value 20-Nov-96 - added @{"PUBSCREEN" link "shell" 0} option to display truecolor animations on truecolor screens 21-Nov-96 - removed a Mungwall-Hit that appeared when allocating odd size of memory for video buffer - the CVID decoding routine now uses the same YUV tables as YUV2 and YUV9. With this change CyberAVI should use the same CVID routine as the most recent version of XAnim. This is a "hacked" part, too. 22-Nov-96 - maximum possible buffersize decreased to 4096 (which means 4MB). I think this is enough. 27-Nov-96 - some minor speed optimiziations @{bold "V1.8:"} 6-Dec-96 - added support for 8bit gray Cinepak (CVID) compression. Thanks to Arjo Rozendaal for his hint where to find such animations. - improved selection of screenmode id, when selection by requester failed because of no suitable screenmodes 9-Dec-96 - added support for 4bit RGB compression. Thanks to Philippe Reux for his sample animation. - now there is also a german documentation 11-Dec-96 - fixed some bugs when reading palette - fixed a big bug in CVID decoder that could hurt innocent memory. Damn that difference between ">" and ">=". This bug existed since the time CyberAVI supported CVID :( 12-Dec-96 - playback on public screens is not aborted anymore when a mousebutton is pressed 21-Dec-96 - AGA routines now use an additional TmpRas of 4K. Again approx. DOUBLE playback speed is archived for most animations (on my MC68060)! 1-Jan-97 - Happy new year, Miss Sophie! :) 3-Jan-97 - added option @{"HAM8" link "shell" 0} to force playback of truecolor animations on a HAM8 screen with AGA 4-Jan-97 - some speed optimizations for all decoders. Sometimes upto 15fps more (with 68060, compared to V1.7) can be archived! 6-Jan-97 - Truecolor animations are now rendered much better in grayscale mode with AGA. Now all 256 grayscale colors are used instead of just a few. 8-Jan-97 - fixed a really bad bug with ADPCM samples, that was introduced with V1.7 - fixed a bug that could lead to lockups in some situations when sound playback was switched on. 10-Jan-97 - fixed problems with skipping. Sometimes not enough frames were skipped => garbage in display - skipping is now also possible for AVIs where @{uline "every"} frame is a keyframe (eg: RGB, YUV9) 12-Jan-97 - 15bit screen modes are now also possible for selection. How could I forget this before? 13-Jan-97 - senseless values for video buffer sizes are now ignored (Sven Ottemann reported this "out of memory" bug) 19-Jan-97 - option SOUND has been renamed to NOSOUND. Sound playback is now switched on by default. - added option @{"NOVIDEO" link "shell" 0} to switch off video playback 20-Jan-97 - fixed very bad bug with 8bit PCM stereo samples that trashed memory 27-Jan-97 - CyberAVI crashed when audio.device was unavailable, now fixed. @{bold "V1.9:"} 30-Jan-97 - corrupted animations are now recognized and rejected 3-Feb-97 - fixed a bad bug with ADPCM samples that produced bad listening sound or even crashes. 4-Feb-97 - again fixed some audio bugs!! When will this nightmare end?? - fixed crash with YUV2 animations (wrong buffer size) 6-Feb-97 - fixed some Mungwall hits - sound playback now also works with changed video speed (e.g. MAXFPS) without stocking video 9-Feb-97 - added support for DVI ADPCM 4 bit mono samples (Intel) 17-Feb-97 - removed support for SetPatch V43, because now only CyberGraphX calls are used. CyberGraphX3 gives *GREAT* speed improvement with 8bit video! 21-Feb-97 - fixed a problem with audio-video-AVIs (video-audio is normal), but this is still not perfect 24-Feb-97 - improved automatical screenmode selection. Sometimes too small modes were selected when animation's dimensions were somewhat strange. 28-Feb-97 - fixed delayed reaction when changing playback speed 6-Mar-97 - improved detection of delayed frames. Now there should be no more remaining pixels from former frames. 8-Mar-97 - improved error handling in "out of memory" situations 17-Mar-97 - hopefully fixed last problems with screenmode selection. eg: 240x300 animations should be shown on a 640x480 screen instead of a 320x240 screen. - fixed some skipping problems with "keyframe-only" AVIs @{bold "V1.10:"} 23-Mar-97 - window on public screen is now resizeable on special request by Thomas Börkel :) 28-Mar-97 - added some size checking to avoid crashes because of corrupted frames - BIG speed improvement when converting YUV -> RGB in grayscale mode 1-Apr-97 - Sorry, no jokes happened :) 8-Apr-97 - added some checking for wrong "movi" chunk sizes. Reported by Felix Schwarz. MainActor seems to save f*cking bullshit sometimes. - some animations were incorrectly displayed because of wrong decoders for uncompressed frames (eg RLE8 animations with some uncompressed RGB8 frames) 10-Apr-97 - changed FPS rate in stats from integers to floats to be more precise 14-Apr-97 - added option @{"MAGNIFY" link "shell" 0} to allow scaling of the display window on public screen by factors of 1..4 15-Apr-97 - CVID decoder produced wrong pixel blocks in grayscale mode. This is fixed now. 21-Apr-97 - CyberAVI got a new icon. Much thanks to Bastian Kinne for painting it. 22-Apr-97 - added option @{"DITHER" link "shell" 0} for ordered dithering with AGA. 24-Apr-97 - added support for DVI ADPCM 4bit stereo and MS ADPCM 4bit stereo 29-Apr-97 - finally made animations with only one huge audio chunk work. This requires the animations index. @{bold "V1.11:"} 6-May-97 - fixed again some problems with oversized frames. I wonder which software saves such bullshit :( - fixed bug in DVI ADPCM stereo decoder 15-May-97 - dithering is now available for all truecolor encodings and looks much better than before 16-May-97 - again found some animations with completely wrong buffersizes! This drives me crazy! Who saves such bullshit?? 20-May-97 - implemented automatic resampling of audio data, if frequency is >27kHz and no double scanned video mode is available - optimizied skipping detection. CyberAVI now skips less often than before and produces more smooth playback. - fixed one very strange colormap bug. What is wrong with 236 used colors instead of 256?? 21-May-97 - skipping is now (hopefully) perfect and never activated if there is no need to skip 2-Jun-97 - displaying colormapped animations (8bit or less) on public truecolor screens is now possible with CyberGraphX 3 (rev 41.9 and up) 15-Jun-97 - added support for single-frame AVIs with sound. 24-Jun-97 - finally managed to implement JPEG decoding. I can't explain why it didn't work before. But be warned: it is DAMN slow. You need at least an MC68060/50 for nearly smooth playback! 29-Jun-97 - fixed division-by-zero problems for animations with no information about keyframes 15-Jul-97 - some small optimizations @{bold "V1.12:"} 16-Aug-97 - improved recognition of truncated files. Due to a bug in asyncio 39.1 the file has to be reopened to avoid seek errors. 28-Aug-97 - CyberAVI now handles files with wrong audio header chunk sizes. This lead to seek errors before. 1-Sep-97 - added a workaround for wrong saved animations by MainActor 1.55. This program does *real* nonsense! Thanks to Béla Schramm for the hint. 2-Sep-97 - when doing playback on public screens the animation's filename is displayed in CyberAVI's window instead of "CyberAVI" 11-Sep-97 - fixed a bug that lead to crashes due to senseless size information for AVIs with just one huge audio sample - found a new type of YUV 2:1:1 animations. I don't know if it is correct but I named them "Component Video (YUV2) Type B", because they coded are almost exactly the same as normal YUV2 animations. 27-Sep-97 - added support for YUV9 video encoding with 9 bits (although this is really 16 bits) - added support for YUV12 Planar MPEG video encoding. Thanks to Zer0-X for these files. 28-Sep-97 - added option @{"CMAP" link "shell"} to allow use of external color palettes (especially for dithering) 11-Nov-97 - fixed endless audio playback for one-sample-animations in loop mode 21-Nov-97 - added option @{"SCREENMODEID" link "shell"} to select a screenmode via command line instead of requester or BestModeID(). Requested by Robert from Poland (sorry, I don't know you second name :) 20-Jan-98 - improved recognition of one-sample-animations a bit, but this is still not bullet-proof - Argue 1.4 is now included in CyberAVI's archive, because for some unknown reason it has been deleted from Aminet and many people asked me to include it. @endnode @node bugs @title "Bugs" Known bugs: - Memory usage increases when playing more than one animation at a time. To avoid this just start CyberAVI with only one animation at a time. If you should find any additional bugs or if you have any suggestions please @{"contact me" link "contact" 0} immediately. If you should find some Enforcer hits, please report them to @{"me" link "contact" 0}. Please include a capture of CyberAVI's output when started with the @{"DEBUG" link "shell"} option if there are any problems while playback (eg. black screen, immediate stop after start, crashes, etc). @endnode @node todo @title "Things to do and future enhancements" Very urgent things to to (maybe already finished in the next release): - better sound support (will this ever be finished?) - support AHI for sound playback. This package offers much easier access to different types of audio hardware. To do: - support for more video and audio encodings - find more bugs @endnode @node "xanim" @title "XAnim" The AVI encodings supported by CyberAVI are based on the source code to Mark Podlipec's XAnim program. XAnim supports a number of other AVI video encodings, as well as QuickTime files. The key differences between CyberAVI and XAnim for AVI files are: - XAnim is more powerful and more general than CyberAVI. - CyberAVI requires either a CyberGraphX compatible graphic board or AGA chipset. ECS is not and will not be supported! A gzip compressed archive of Mark Podlipec's XAnim can be obtained from: http://www.portal.com/~podlipec/home.html "The XAnim Home Page" /* * xanim.c * * Copyright (C) 1990,1991,1992,1993,1994,1995,1996,1997 by Mark Podlipec. * All rights reserved. * * This software may be freely copied, modified and redistributed without * fee for non-commerical purposes provided that this copyright notice is * preserved intact on all copies and modified copies. * * There is no warranty or other guarantee of fitness of this software. * It is provided solely "as is". The author(s) disclaim(s) all * responsibility and liability with respect to this software's usage * or its effect upon hardware or computer systems. * */ @endnode @node argue @title "About Argue" It was around 1992 when Commodore released their new Amiga OS 2.0. With this, there were amazing changes for developers and users. All looked a bit more professional, and a lot of things were just easy and better to handle than in former times. Earlier, developers had to write their own argument reading system. Often it was really unpractically and difficult to understand. The guys at Commodore knew that and thought about a new standard for argument parsing to avoid confusion about all that. What they finally got was ReadArgs(), a system function that parses arguments automatically. Developers now only had to write a template to specify, what arguments they would like to have. A template looks like this: FILE/A,SWITCH/S... From now on, all the users could have a look at this template by adding a question mark to the program's name to execute. But all in all, there was a problem. Folks still had to go "down" into a shell and type in all the arguments by hand. So there are still a lot of people that write external interfaces for a specific tool. Some of them are even shareware! This was really annoying as there was no tool that could manage ALL tools. In early 1996 I developed a GUI layout system called NiceGUI. It was crap, but on this way I created the first version of @{bold "Argue"}. Argue's job was and is to read other tool's argument templates and prepare a nice user interface where the user can decide what he would like to have as arguments. Argue 0.3 was quite bad, but it was the first basis for further development. Some months later I invented how to write MUI applications. It was very easy, and I implemented a new version of Argue with it. This was called Argue 0.6 and released to some BBSs here in Germany. From then on Argue made giant steps towards user friendliness and efficiency. New features were added in masses, and now, at the time of Argue 1.0, there is a (near ;) complete interface creation system. @endnode @node distribution @title "Distribution" CyberAVI is Copyright ©1996-1997 by Thore Böckelmann. CyberAVI may be freely distributed as long as the following conditions are met: - all files have to be kept together - no file may be modified or crunched/packed - the only official way to distribute this program as archive is the original LhA archive @endnode @node credits @title "Credits" CyberAVI was written by Thore Böckelmann using Amiga Oberon 3.10 and GCC 2.7.2 Thanks to Joachim Greve for his CD-ROMs with MSVC and RGB animations. Thanks to Stefan Nobis for his CD-ROM with Ultimotion animations. Thanks to Thomas Wenzel for his many sample animations, beta testing, and especially for his examples how to program the audio.device. Thanks to Peter Kunath for the source to his DrWho genie for chunky->planar conversion. Thanks to Frank Mariak for his great support and answering all my questions about CyberGraphX. Thanks to Pontus Fuchs for sending two CD-ROMs with animations for testing from Sweden! :) Thanks to Bastian Kinne (kinne@zfn.uni-bremen.de) for his new icon. Thanks to all the other people who send me some animations for debugging, testing and enhancing CyberAVI. The @{"XAnim" link "xanim" 0} program is written by Mark Podlipec. XAnim6 on the Amiga is a port by Terje Pedersen. XAnim is ©1990-1997 by Mark Podlipec. asyncio.library was written by Martin Taillefer, Magnus Holmgren and Olaf Barthel @{"Argue" link "argue" 0} is ©1996 by Thorsten Stocksmeier The following copyright applies to all Ultimotion segments of the code: "Copyright International Business Machines Corporation 1994, All rights reserved. This product uses Ultimotion(tm) IBM video technology." @endnode @node disclaimer @title "Disclaimer" No warranty, either express or implied, is made with respect to the fitness or merchantability of CyberAVI. Thore Böckelmann (referred to as "the author"), reserves the right to not develop any future versions of CyberAVI. The author will try to make a good faith attempt at correcting any problems if any are discovered, but is in no way required, nor bound to correct them. The author neither assumes nor accepts any responsibility for the use or misuse of these programs. He will also not be held liable for damages or any compensation beyond the original registration fee due to loss of profit or any other damages arising out of the use, or inability to use this program. The author will not be liable for any damage arising from the failure of this program to perform as described, or any destruction of other programs or data residing on a system attempting to run the programs. The user of this program uses it at his or her own risk. @endnode