-------------------- AmigaOS 3.5/3.9 project ------------------------- animation 44.13 (9.3.1999) - The frame conversion code that transforms frame bitmaps for display no longer assumes that the display bitmaps are in planar format. The code recognizes CyberGraphX format bitmaps and actually takes advantage of their format. - The IFF-ILBM frame storage code was never reentrant. It still is not reentrant, but the code now properly serializes accesses to the global data structures it modifies. - Similar to picture.datatype, the OBP_Precision tag can now be used to control the pen allocation precision. - The colour allocation code now reserves space for up to 256 colours for later use with per-frame colour map allocation. - The layout code now treats HAM (4096 colours) and HAM8 (262,144 colours) as different display modes. - The code no longer polls to see whether its child processes are alive (or dead) but waits for them to respond. - The frame loader process priority is now bumped from -1 to 0 before receiving a request to load a specific frame. In older revisions the loader process and the datatype to call it could easily starve due to system load. - The frame loader process now properly cleans up after itself. In older revisions the process could exit without freeing all of the frames it had loaded. - The display process now supports per-frame colour map changes. animation 44.14 (13.3.1999) - Implemented per-frame sound period changes. - Added the new ADTM_LOADNEWFORMATFRAME method which allows frames with stereo soundtrack to be loaded. There also is a new method ADTM_UNLOADNEWFORMATFRAME to complement it. - Updated the header files and the autodocs. - The OM_NEW method could return garbage in case the object creation failed. Fixed. animation 44.15 (14.3.1999) - The frame saver now uses the "colour map is really 8 bits wide" flag proposed for use in the BitMapHeader. animation 44.16 (27.3.1999) - Fixed a bug in the ByteRun1 compression code that went unnoticed for the previous 14 years. animation 44.17 (27.3.1999) - animation.datatype now supports the DTA_Repeat attribute. animation 44.18 (27.3.1999) - The loader did not allow for frame data to be reused by the subclasses, thus wasting an incredible amount of memory. Fixed. - The number of frames the loader process preloads before animation playback starts is now configurable. animation 44.19 (8.12.1999) - The bitmap all display operations will store their frame data in is now allocated with the BMF_MINPLANES tag. This allows for the bitmap to be allocated in the type of graphics memory most suitable for the currently running RTG system. ----------------------- AmigaOS 4 project ---------------------------- animation 44.20 (14.09.2004) - Ported to gcc & ppc. animation 44.21 (17.09.2004) - When running on a machine where no custom chips are available HAM and EHB animations will be converted to a standard mode on the fly. animation 44.22 (20.09.2004) - does not use pens on hi-/truecolor screens anymore. - settings the env variable "classes/datatypes/animation/NoHAMorEHB" to 1 enables the 44.21 feature even on classic Amigas. animation 44.23 (21.09.2004) - didn't want to do further changes but here we go: * the same conductor was used for all animations, ie. starting one animation also started all others. * automatically rewinds when pressing "Play", if necessary. animation.datatype 44.24 (10.10.2005) - No longer allocates MEMF_PUBLIC memory. - Now with OS3.x compatible version string with .datatype suffix. - The 68k stubs are now in C. - Now builds with gcc 4.0.0 with -Wall -Werror. - Removed empty sections. animation.datatype 44.25 (21.11.2006) - Now builds with -Wwrite-strings. - The two processes created with OM_NEW no longer end in Forbid() state anymore. The Expunge() function now checks if the processes are still running and refuses to expunge in that case. -------------------- AmigaOS 3.1.4.(1) project ----------------------- Changes for animation 45.1 (4.7.2018) - This is a recomilation of the 44.25 version of the animation.datatype. No functional changes. Changes for animation 45.2 (22.7.2018) - Since the bitmap width was only updated when locating a frame, animation may have broken when switching to a separate screen. Changes for animation 45.3 (28.7.2018) - Added a stack-swap code, just to be on the safe side. - Bitmap dimension computation is now local in SafeCopyBitMap(). - Ensured that classbase.i and classbase.h are in sync. Changes for animation 45.4 (14.8.2018) - Fixed a race condition on the library lifetime management. Changes for animation 45.5 (16.8.2018) - Fixed a one-pixel graphical glitch if the tapedeck overlays the animation itself on screens. Changes for animation 45.6 (17.8.2018) - Fixed an off-by-one error when computing the movement of the slider due to fast forward/rewind. - There is no longer an implicit wrap-around in fast forward/rewind as it did not work correctly anyhow... Changes for animation 45.7 (25.8.2018) - RGB or HAM animations remained invisible on a non- HAM or non-truecolor screen. The datatype uses now a simplistic dithering and color quantization to a 332 color space. Changes for animation 45.8 (1.9.2018) - Changed the algorithm slightly that determines the speed of the fast forward/rewind buttons. It is now 1/16th of the full animation, or 1/4th of the full animation if the first attempt results in a frame skip less than 4, or a single frame in worst case. Changes for animation 45.9 (6.9.2018) - The previous releases of the animation datatype avoided screen types that depended on specialities of the custom chips such as HAM. This release now falls back again to the native screen mode. Changes for animation 45.10 (10.9.2018) - Fixed another race condition on LibOpen. - The loader process could simply idle and burn CPU time in case the player made no progress whatsoever. Now it is woken up only in case of a state change. Not that it is much better now, but at least, the loader no longer hogs the CPU when there is nothing to do. Changes for animation 45.11 (16.9.2018) - The animation datatype could still fiddle in private bitmap structures, and even unnecessary so. Removed some bogus code in order to avoid the trouble. ---------------------- AmigaOS 3.2 project --------------------------- Changes for animation 47.1 (1.4.2020): - Animation/Video playback was 1/2 requested FPS speed Changes for animation 47.2 (5.4.2020): - Fixed: the tapedeck.gadget was slightly too narrow for the window. Changes for animation 47.3 (11.4.2020): - Playback button no longer deselects and reselects itself in repeat playbavk mode. Faster looping and easier disabling. - Since the speed fix is a bit of a hack and temporary solution which only works for fast machines, introduced a new env variable classes/datatypes/animation/TimingHack When set to 1 will effectively reduce frame time by 1/2 which allows full speed playback in window mode.. Classic machines will start skipping frames with this switch. To obtain 30+ fps on the classic you have to run MultiView in fullscreen mode. Changes for animation 47.4 (22.7.2020): - Remove the tminghack as it has bad sideeffects - Fix playback speed on CPU less than 68030 These CPUs may not be able to play at full speed, but let's not give up beforehand. Changes for animation 47.5 (31.7.2020): - The controls are now hidden while playing and no mouse movement for 3 seconds - The pointer is blanked too at the same time - The controls reappear when the video ends or user moves mouse - The play button restarts the video if at the end (still just resumes if in the middle) - Fixed: enlarging and then scrolling the window was causing graphics corruption on non-RTG systems. Changes for animation 47.6 (24.8.2020): - Fixed: tapedeck.gadget could be rendered into the border after a resize. Changes for animation 47.7 (09.sep.2020): - Substantial improvements in playback of video (tested with cdxl) Changes for animation 47.8 (28.sep.2020): - Fix some hits on CGX Changes for animation 47.9 (12.oct.2020): - If the animation stream doesn't end nicely don't keep waiting for more streams (bug 1735) Changes for animation 47.10 (08.nov.2020): - First of all fix some mess with the loader I created in the previous many commits. Current frrame and next frame to be loaded needs to be two different variables after all - Next I implemented a micro buffering algorithm for whenplaying audiovideo. In this case it is important to keep it in sync and to play back at the correct speed. So if for some reason we can't play fast enough we need to start buffering (for now the buffer is only about 10 frames but there is potential for future improvement) - When audiovideo is active we also allow to skip displaying every second frame eventhough we have loaded it. This should enable us to play many more files. - For audio-less video (aka anim) we just play as close to fps at the machine is able to. Changes for animation 47.11 (11.nov.2020): - Center video output in the middle of the window/screen (black color surrounding) - Fix the tapedeck hiding - Tapedeck is now placed at bottom of window/screen - Make STM_PAUSE work so you can stop/start the video via pressing spacebar in multiview - Fix potential endless buffering at the end of video so it never showed the tapedeck again - The mousepointer hiding now uses the gadget attributes instead so it doesn't affect potential other gadgets in the same window - The initial size reported is now ithout Tapedeck meaning it will be rendered on top in window mode - Listen to envvar classes/datatypes/animation/windowtape if the tapedeck should appear below the video in when opening in window mode. - Aim to get the sound playing smoothly while possibly reducing display frame rate to half or quarter depending on available CPU resources. The code now tries to recover to full display frame rate after momentary overloads of the CPU. Such recoveries can however be heard as sound glitches so it gives up recovering if it is not sustainable. The improvements are very impressive.