/* ** ** $VER: mpegvideo_datatype.guide 1.3 (3.11.96) ** mpegvideo.datatype 1.3 ** ** documentation ** ** (C) Copyright 1996 by Roland 'Gizzy' Mainz ** All Rights Reserved ** */ =================== mpegvideo.datatype documentation ================== =========================================================================== Datatypes class for mpeg video stream animations. Based on the CBM datatypes example source/ documents written by David Junod. =========================== Future ======================================== =========================================================================== I decided to contact the current owners of the animation.datatype code (AmigaTech., VisCorp etc.) because I want to do the official future development of animation.datatype (and picture.datatype, if possible). If there are any comments/ideas, bug reports etc., send them to me. I'm going to write an article to explain how a subclass of animation.datatype, the common pitfalls etc. Don't try this without my article. This text will also explain future improvements. | Warning: The __current__ behaviour of ADTM_UNLOADFRAME will be slightly | changed (in a compatible way for the existing CBM datatypes). Don't use | this method for now unless I or CBM says something else. If there is any interest for a "ssa.datatype" (the proDAD SSA animation format), I'll contact proDAD. W A N T E D: BUG reports During meetings, phone calls and newsgroup readings I found out that many people are using this datatype (and directory.datatype, mpegsystem.datatype etc.), having email access and did NOT report the bugs they found. >One possible result of the current behaviour would be that I drop this >project. -- No response, no future. The same belongs to "directory.datatype". I don't like to collect the bug reports from %x(/á%$/$ or something elsewhere. The reason is: Writing good, stable datatypes and their support is a TIME-INTENSIVE work and I don't like to work for the black hole. If there is enough response, I want to made a new BETA-tester group for my projects. (May be start in the middleof January 1997...) Who has a replacement for the WritePixelArray function LONG WritePixelArray8( struct RastPort *rp, ULONG xstart, ULONG ystart, ULONG xstop, ULONG ystop, UBYTE *array, struct RastPort *temprp ); written in PORTABLE ansi-C, which can operate on standard amiga-bitmaps in fast-ram ? (the temprp parameter and the return value may or may not be present in your implementation). Thanks... ============================ Requirements ================================= =========================================================================== - You need at least Kick/WB 3.0. | Many people wrote me that they cannot find an "animation.datatype" class. | Only the 3.1 release contains it. (Subclasses of) animation.datatype | can run under 3.0. - You need the "mathieeedoubbas.library" (V38 or higher) library in your LIBS: (or something equal) directory. - Much memory (at least 2MB (I think... (test report recommned)) (or the "vmm.library" V3.0 from Martin Apel's VMM package. Using the USEVMM switch in the prefs file, bitmaps can be in virtual memory. See autodoc for details. VMM can be found on aminet (aminet/util/misc/vmm_#?.lha), the current version is VMM_V3_3A.LHA on Aminet14-CD. Note: VMM is Shareware !). I've compiled the mpegvideo.datatype with plane 68000 code (not tested on a plane 68000 yet) to allow A500/A600/A1000 users to run the datatype. This is a major speed hole. Future releases may contain special compiled versions, if there is a request for them. =============================== Misc ====================================== =========================================================================== mpegvideo.datatype is a datatype to view mpeg system streams. It's a subclass of animation.datatype. This release was set up for various reasons: - First at all, to show that subclasses of animation.datatype aren't magic, hacks or something else. This datatype has been developed conforming to the "animation_dtc.doc" autodoc. The people who said that it's not possible to write a new subclass (except the CBM's IFF ANIM-5 and CDXL ones) are WRONG. - The people who said that animation.datatype is buggy are WRONG. There are only two non-serious and one serios bug (fixed by my "paranimdtcpatch"). The two non-serious bugs can simply surrounded. All other crashes, hangs etc. are triggered by the CBM subclass ANIM (CDXL not tested yet) and stack overrun problems. INCREASE your stack size!! - To turn off the bug reports for my internal (and inofficial, non-public) testing releases which are travelling through the networks (delete them NOW !). All bug reports should be related to this (and the following) AMINET- Releases (except you are a BETA-tester). - To allow mc68000/mc68010 based AMIGA users the taste of real time video, if they have the required memory :-) (assumed, not tested). - To introduce the series of new animation.datatype subclasses like mpegvideo.datatype - mpeg video streams mpegsystem.datatype - mpeg system strams (video + audio) picmovie.datatype - build animations/movies from single pictures and sounds anim.datatype - iff anim-5/-7/-8 datatype film.datatype - iff LIST FILM anims (interleaved ILBMs/8SVXs) moviesetter.datatype - GoldDisk moviesetter.datatype ssa.datatype - if any interest... - To test which response such a datatype will produce. - The "Computer '96" fair in Köln/Germany and the matching AminetCD 15. Now I fully support SAS/C for all my projects (SMakefile included). A matching DMakefile is on the way. ====================== Request for comments/help ========================== =========================================================================== 1. Who wrote animation.datatype and it's subclasses ? If you have any address, phone number, email (or something equal), please send me this. 2. Who owns the rights on the animation.datatype (source-)code 3. dito. amigaguide.(datatype|library) 4. email address (or something equal) of David N. Junod For my address, email etc. see below... Wanted: Test files: These files __MUST__ be packed into a LhA archive (for compression and for checksumming. I won't like to search for "phantom" errors caused by corrupt files.) 1. Valid IFF LIST FILM files (ILBM's with interleaved 8SVX's) (for film.datatype testing). 2. CDXL files except "CALLNOW.XL" and "Walk.cdxl". 3. Small mpeg system streams (mpeg video + audio) (<= 1MB) Thanks !! =============================== Usage ===================================== =========================================================================== If the datatypes descriptor file was activated, any attempt to load an mpeg file using MultiView, AmigaGuide or SwitchWindow will load the entire animation. NOTE: This may be a long time. Each picture is loaded into memory. (I've tested a mpeg video stream from the german news "Tagesschau".) You may modify the prefs file to get better results in your requested screenmode. The prefs file format is described in the mpegvideo.datatype.doc. 1. Example (for A2024/Vikking grayscale monitors): MODEID=266240 LUM_RANGE=4 CR_RANGE=1 CB_RANGE=1 DEPTH=2 DITHER=ORDERED FPS=15 This means: MODEID=266240 ; Screen mode of A2024 monitor LUM_RANGE=4 CR_RANGE=1 CB_RANGE=1 ; Use only luminance (4 gray scales) DEPTH=2 ; 4 colors (max. on A2024 display) DITHER=ORDERED ; Use ordered dithering FPS=15 ; 15 frames per sec (should be the ; maximum on A2024 displays) BAD: The A2024 monitor isn't very good for fast animations (because of it's panelled display). Use the FPS option to reduce the speed. GOOD: Large anims (e.g. a 720x480 video) fits on the screen without any problem. 2. Examples (for color monitors): LUM_RANGE=4 CR_RANGE=4 CB_RANGE=4 DITHER=DICECOLOR DICESKIP=40 COLORERROR=25 This means: LUM_RANGE=4 CR_RANGE=4 CB_RANGE=4 ; Set luminance, red and blue components ; to the same wheight DITHER=DICECOLOR ; Use dicecolor dithering DICESKIP=40 ; Accept only the 40-th attempt ; to allocate a new color COLORERROR=25 ; Set match error to a value which ; means medium high quality =========================== Installation ================================== =========================================================================== After unpacking this archive: Shell: - Unpack this archive and copy the mpegvideo.datatype to SYS:Classes/DataTypes: Copy CLONE FROM mpegvideo.datatype TO SYS:Classes/DataTypes/mpegvideo.datatype Then copy the datatypes descriptor into the DEVS:DataTypes directory Copy CLONE FROM "MPEG Video(%|.info)" TO DEVS:Datatypes/ ================================ BUGS ===================================== =========================================================================== - Even the current V1.3 makes output to the serial port. Will be fixed soon. (use sushi ((Aminet3|SET2c):dev/debug/sushi.lha). - Linking to an animation in an amigaguide.datatype object is currently not possible due a bug in amigaguide.datatype (not all required methods are passed to the animation). ->IF THERE IS A REQUEST, I will write a patch for amigaguide.datatype to fix this bug !!! - The datatype descriptor file is not the recommned way to identify a mpeg video stream. It should be replaced by code which do this work. - "Workbench emulation" sortware like cybergfx etc. is not tested. Reports are __very__ welcome. Note that possible problems belongs to the emulation software, not animation.datatype (which does the rendering and destination remapping). animation.datatype is very well written. See mpegvideo.datatype.doc for a complete list of all (removed/fixed etc.) bugs. BUG REPORTS should contain your machine (type, CPU, FPU etc.), additional hardware (graphics card and the emulation software) and your used software (KICK/WB3.0/3.1, cybergfx etc.) =============================== TODO ====================================== =========================================================================== >WARNING: This code is more than one year old. >I've only recompiled it with SAS/C 6.56, disabled HAM/HAM8/color output >and other features. Due a bug in the loader, an invalid (e.g. not 100% >conforming) mpeg video stream will CRASH your machine. Fixed in the >(currently 22.10.1996) state-of-the-art V1.8. This is not a bug >of animation.datatype! The above warning is now obsolete. I decided to rebuild the project from scatch (see autodoc for reasons). - Fix some inconsistensies - DMakefile - More time to rework this and other public projects ============================== SOURCE ===================================== =========================================================================== Sorry, I've removed the source. I've working on a releaseable form. See mpegvideo.datatype.doc for additional information. ============================= Copyright =================================== =========================================================================== Sorry, but in the V1.1 release, I've forgotten the COPYRIGHT notice. Here it is: (Because I don't have the original ones (my code was a mergin of mpeg_play 1.X, 2.0, I've taken them from the mpeg_play 2.0 distribution).) The main work (the mpeg decoder etc.) is based upon mpeg_play 1.xx and 2.0, which is... Copyright (c) 1992 The Regents of the University of California. All rights reserved. Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without written agreement is hereby granted, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ... and the idct algorithm is based on jrevdct.c (also found in the mpeg_play package), which is... Copyright (C) 1991, 1992, Thomas G. Lane. This file is part of the Independent JPEG Group's software. For conditions of distribution and use, see the accompanying README file. This implementation is based on an algorithm described in C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics, Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991. ... and (at least) all modifications are (C) by Roland Mainz (see below for details). =========================== My projects =================================== =========================================================================== For those people which like to know on which projects I'm working on, here is a cut down of my projects... (A ... at the beginning of a line means that I've removed some lines, e.g. projects). Software projects ENVOY related projects NetInfo... NetInfo ENVOY network information ... RemoteNetShell... RemoteNetShell Shell commands across ENVOY network RemoteRequest... RemoteRequest Messages across ENVOY network Ping... Ping ENVOY ping NetPIPE... NetPIPE ENVOY PIPE filesystem ParMake... ParMake Parallel make (local or accoss ENVOY network) RemoteSCSI.DEVICE RemoteSCSI.DEVICE scsi.device export over envoy networks RemoteSerial.device RemoteSerial.device serial.device export over envoy networs RemoteRequester.service remoterequester.service Import/Export system requesters using envoy. Usefull with rlogin.service ... clipboard.service clipboard.service Clipboard import/export using envoy ... disk related projects NoClick... NoClick Turns trackdisk clicking off Eject... Eject Sends trackdisk EJECT command ... MakeLink... MakeLink Create filesystem links (soft && hard) ... misc projects MultiMinClock... MultiMinClock Little multiproject clock Reboot... Reboot Reboot utility ... ThrowMouse... ThrowMouse Startup icon starter FileChanged... FileChanged Wait for DOS notification WriteClipboard... WriteClipboard Write string to clipboard ... WBInfo... WBInfo Prompt the Workbench Information Requester mpeg related projects ... mpeg2decode... mpeg2decode mpeg2decode ... splipmpeg... splitmpeg splitmpeg amiga port (mpeg system stream demuxer) VideoCD-FS... VideoCD-FS filesystem, which reads video-cd's (old, "while book"), represented in different files (system, video, audio, frames etc.) ... datatypes related projects DTMethod... DTMethod Debug datatypes method communication ... markabletextdtclass... markabletextdtclass Adds a class to text.datatype to support DTM_SELECT (mark mode) paranimdtcpatch... paranimdtcpatch Patch animation.library to allow parallel animations dumpdtanim... dumpdtanim Creates single pictures and sounds from animation.datatype (anim/movies) objects ... picmovie_datatype... picmovie_datatype Create movies using single pictures and samples (movie type) directory_datatype... directory_datatype View directories (document type) ... list.datatype... list_datatype Datatype for IFF LIST files (document type) prop.datatype... prop_datatype Datatype for IFF PROP files (document type) iff.datatype iff_datatype Datatype for unknown IFF files. (document type) ... mpegvideo_datatype... mpegvideo_datatype View mpeg video streams (animation type) mpegaudio_datatype... mpegaudio_datatype Hear mpeg audio streams (sound type) mpegsystem_datatype... mpegsystem_datatype Play mpeg movies (movie type) ... film.datatype film_datatype Datatype for FILM anims (movie type) moviesetter.datatype... moviesetter.datatypeDatatype for Gold-Disk moviesetter anims (subclass of animation.datatype) ... development related projects ... NoTraps... NoTraps Disable all trap crashes ... big projects ... SwitchWindow... SWP OOP Environment =========================== Author's Request ============================== =========================================================================== By releasing this program I do not place any obligations on you, feel free to share this program with your friends (and enemies). If you want to blame me, report any bugs, or wants a new version send your letter to: Roland Mainz Hohenstaufenstraße 8 52388 Nörvenich GERMANY EMAIL is also available: Up to December 1996 I'm reachable using this email address: Reinhold.A.Mainz@KBV.DE Please put your name and address in your mails ! German mailers should add their phone numbers. See BUGS section above when submitting bug reports. Sorry, but I can only look once a week for mails. If you don't hear something from me within three weeks, please send your mail again (but watch about new releases) (problems with this email port are caused by reconfigurations, hackers, network problems etc.). The entire "mpegvideo.datatype" package may be noncommercially redistributed, provided that the package is always distributed in it's complete form (including it's documentation). A small copy fee for media costs is okay but any kind of commercial distribution is strictly forbidden! Comments and suggestions how to improve this program are generally appreciated! Thanks to David Junod, who wrote the datatypes example code, Matt Dillon for his DICE, Olaf 'Olsen' Barthel for his help, ideas and some text clips from his documentations, Martin Apel for his VMM package (shareware !) and his help.