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: 			  (format t "Error: ~A~%" c)))
  		      ;; Exit when the close button is clicked.
  		      (mezzano.gui.widgets:close-button-clicked ()
  			(setf (cl-video:pause avi) (not (cl-video:pause avi)))
  			(bt:acquire-lock (cl-video:pause-lock avi))
  			(bt:release-lock (cl-video:pause-lock avi))
  			(return-from main)))))))))))
  
  (defun main (path)
  