bit_movie - single bit per pixel movie loops

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