     parse-remaining-headers
     initialize-decoder
     dup player-gadget [ initialize-gui ] when*
-    [ decode ] [ drop ] recover
-!    decode
+    [ decode ] try
     wait-for-sound
     cleanup
     drop ;

    dup player-gadget [
        dup { player-td player-yuv } get-slots theora_decode_YUVout drop
        dup player-rgb over player-yuv yuv>rgb
        dup player-gadget find-world draw-world
    ] when ;

: num-audio-buffers-processed ( player -- player n )

: append-audio ( player -- player bool )
    num-audio-buffers-processed {
        { [ over player-buffers length 1 = over zero? and ] [ drop append-new-audio-buffer t ] }
        { [ over player-buffers length 2 = over zero? and ] [ yield drop f ] }
        { [ t ] [ fill-processed-audio-buffer t ] }
    } cond ;

