NAME: bit_movie - single bit per pixel movie loops AUTHOR: Ian Curington, AVS/UNIRAS Ltd. TYPE: renderer LANGUAGE: C DESCRIPTION The bit_movie module is used to create and playback single bit black and white movie loops. It takes source images from any image source in AVS. The bit_movie module saves up movie loop sequences in "The X server" memory, and then allows for playback after storage. It saves pictures as 1-bit per pixel for optimum storage efficiency (this is 1/32 the size of a normal AVS image), and replays them in highest speed to an X-window. In one test condition it performed at 800 frames per second! No compression techniques are used at this time, although it would be possible to add. The storage is arranged bit-for-bit as the window system likes it, so that replay is as fast as possible. In practice, this is actually TOO FAST, so you need to use the speed dial to adjust it. The motivation is to create the longest animation sequences possible, at the highest possible display rate, without going to disk. The input port expects a scalar byte, so you can externally determine how this is derived from the AVS image. One approach is to use extract_scale, take just one color channel and animate that, or alternatively, use luminance to compute overall intensity of the color image. If viewing geometric objects in the geometry viewer, one nice way is to set the object attributes to "outline gouraud", set the default object color to black, and the background also to black. This simulates "hidden line" mode, where you only see the wireframe parts at the front, with the back lines hidden. It is similar to the standard module "display pixmap", except that it is not part of the AVS kernel, and only uses 1-bit per pixel instead of 24, and is implemented as an external coroutine module with pure Xlib calls. The replay speed control is a little loose, it simply sends N-Xsync calls to the Xserver for every animation frame. Of course, at the highest rate, N=0 so it uses full asynchronous buffering. The source code is available for use immediately for AVS 5.x, or for integration work into other products from AVS/UNIRAS. INPUT - field 2D scalar uniform byte (single channel image) PARAMETERS: Mode (Clear, Store, Replay-once, Replay Loop 100x) Replay Speed dial, artificial delay if needed Stored Frame count info. PERFORMANCE TESTS (as of December 1993) A simple network was tested to drive bit map animation: Read_Geometry (teapot) | Geometry Viewer (set to wire frame) | Luminance | Bit Movie The geometry viewer window was set to various sizes, then the teapot was "spinning" due to mouse rotation, then "store" mode was used to capture the bit planes in the bit_movie modules. After a certain number of images were stored, "Replay Loop" was pressed and timed. Vistra-800e Window size = 286 x 250 100 frames stored, playback 10,000 frames in 120sec = 83 frames per second HP-9000/715-50 (50Mhz PA-RISC) CRX-48Z, HPUX 9.01 Window size = 286 x 250 100 frames stored, playback 10,000 frames in 12sec = 800 frames per second Window size = 512 x 512 100 frames stored, playback 10,000 frames in 34sec = 290 frames per second Window size = 1k x 1k 20 frames stored, playback 2000 frames in 26sec = 77 frames per second