Presto status as of first Milestone completion 4/23/99

What we set out to investigate for this Milestone:
    Can we use Conal's spritelib approach to:
        - Utilize DShow and other retained mode systems effectively
        - Separate the engine's sampling/rendering from
          compositing/transformation to reduce CPU overhead from too
          frequent sampling, and increase the frame rate to the
          logical maximum, video refresh rate, for the smoothest
          animation.

Where we are:
    - Ported Conal's spritelib
    - Changeo engine funtional
        - image support:
            - transformations: scale, translate
            - solid color image
            - cropped image
            - imported image
            - imported dshow movies including streamed asf
            - flipbook movie optimization using video memory

What we learned:
    We did it!  Things work largely as we had hoped they would:
        - We achieve video refresh rate with low cpu usage
        - We use DShow in its native push mode which allows presto to approximate 
          mplayer performance 
        - Decoupling sampling/rendering from compositing/transformation
          allows for less frequent (as appropriate) sampling while
          maintaining high rate, smooth animation.

Where we want to go next:
    - Generalize and adapt the architecture to fit into Trident and other
      containers.
    - Precision!  We want to provide an engine which fullfills the
      requirements of TIME and Aspen and does a much better job than the
      DA engine on synchronization of retained mode media.
    - Closed loop control of retained mode system.  This is needed to
      control DShow in its native push model and allow vcr like transport
      controls and synchronization.
    - Use of overlay hardware for movies
    - Resource-efficient 2D and 3D.  Thanks to general retained-mode
      orientation of the architecture, we don't have to recreate (or cache
      and rediscover) resources for every frame update.
    - Full affine transforms.
    - Audio.  A natural fit for the architecture.  Implement using 
    - Advanced image operations: alpha, tiling, antialiased rendering
    - Further decoupling: update more independently for (a) external
      control, and (b) further reduce cpu use while maintaining quality
      (by analyzing least noticeable difference).

How we can do these things:
    - Defined latency: allows the engine to have perfect knowledge of the 
      near future.  This finaly allows the engine to prepare and start media
      where the author intended instead of always being late as in the DA 
      engine. 
    - Smart queueing: allows the engine to provide image frame-accuracy
      and audio sample-accuracy overcoming the non-realtime aspects of the
      operating system.
    - The sprite engine can buffer change commands (stop, start, etc) to
      be executed very precisely in time.

