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.
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