anchor.diff:  					   :thread (mezzano.supervisor:current-thread)
   					   :font font
   					   :frame frame))
  -		    (rec (find-mjpeg-stream-record avi)))
  -	       (sleep (* (start rec) (/ (scale rec) (rate rec)))) ;stream delay, if any
  -	       (stream-playback-start rec)
  +		    (rec (cl-video:find-mjpeg-stream-record avi)))
  +	       (sleep (* (cl-video:start rec) (/ (cl-video:scale rec) (cl-video:rate rec)))) ;stream delay, if any
  +	       (cl-video:stream-playback-start rec)
   	       
  -	       (loop for cur = (if (pause avi) cur (pop (rcursor rec)))
  -		  for src = (frame cur)
  +	       (loop for cur = (if (cl-video:pause avi) cur (pop (cl-video:rcursor rec)))
  +		  for src = (cl-video:frame cur)
   		  with quit = nil until quit do
   		    (loop for i from 0 below height do
   			 (loop for j from 0 below width
  
positive.code: 		      (mezzano.gui.compositor:damage-window window
  							    0 0
  							    width height))
  		    (unless (pause avi)
  		      (bt:acquire-lock (vacancy-lock (car (rcursor rec))))
  		      (bt:release-lock (vacancy-lock cur)))
  		    (when (eql cur (final rec))
  		      (return))
  		    (sleep (/ (scale rec) (rate rec)))
  		    
  		    (handler-case
  			(dispatch-event viewer (mezzano.supervisor:fifo-pop fifo))
  
negative.code:     (values (+ left (max 32 (mezzano.gui:surface-width image)) right)
              (+ top (max 32 (mezzano.gui:surface-height image)) bottom))))
  
  (defmethod play-audio-stream ((avi cl-video:avi-mjpeg-stream))
    (let ((audio-rec (cl-video:find-pcm-stream-record avi)))
      (when audio-rec
        (bt:make-thread
         #'(lambda ()
  	   (cl-video:stream-playback-start audio-rec)
  	   (sleep (* (cl-video:start audio-rec) (/ (cl-video:scale audio-rec) (cl-video:rate audio-rec))))
  	   (unwind-protect
  		(loop for cur = (if (cl-video:pause avi) cur (pop (cl-video:rcursor audio-rec)))
  		   for src = (cl-video:frame cur)
  		   until (cl-video:finish avi) do
  		   ;; pause synching protocol w/video stream
  		     (bt:acquire-lock (cl-video:pause-lock avi))
  		   ;; send the audio frame
  		     (mezzano.driver.intel-hda::play-sound src (first mezzano.driver.intel-hda::*cards*))
  		     (loop while (cl-video:pause avi) do (sleep 0.2))
  		     (bt:release-lock (cl-video:pause-lock avi))
  		   ;; advance the cursor lock
  		     (bt:acquire-lock (cl-video:vacancy-lock (car (cl-video:rcursor audio-rec))))
  		     (bt:release-lock (cl-video:vacancy-lock cur))
  		     (when (eql cur (cl-video:final audio-rec))
  		       (return))
  		     (sleep (/ (cl-video:scale audio-rec) (cl-video:rate audio-rec))))
  	     (cl-video:stream-playback-stop audio-rec)))))))
  
  (defmethod play-video-stream ((avi cl-video:avi-mjpeg-stream))
    (with-simple-restart (abort "Close media player")
      (let ((font (mezzano.gui.font:open-font
                   mezzano.gui.font:*default-monospace-font*
  