From 1da5fe002ef87acab68ada69370d180af2f40952 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 25 Jan 2010 19:19:17 -0800 Subject: [PATCH] fix audio.vorbis streaming to read in data from factor stream whenever necessary to feed libogg a full page. fixes premature stops on some test files --- extra/audio/vorbis/vorbis.factor | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/extra/audio/vorbis/vorbis.factor b/extra/audio/vorbis/vorbis.factor index 6d27d7040e..7fce2b4316 100644 --- a/extra/audio/vorbis/vorbis.factor +++ b/extra/audio/vorbis/vorbis.factor @@ -62,7 +62,11 @@ ERROR: no-vorbis-in-ogg ; [ sync-state>> ] [ page>> ] bi ogg_sync_pageout 0 > ; inline : (sync-pages) ( vorbis-stream ? -- ? ) - over retrieve-page [ [ drop queue-page ] [ drop t (sync-pages) ] 2bi ] [ nip ] if ; + over retrieve-page + [ drop [ queue-page ] [ t (sync-pages) ] bi ] [ + over buffer-data-from-stream + [ (sync-pages) ] [ nip ] if + ] if ; : sync-pages ( vorbis-stream -- ? ) f (sync-pages) ; inline @@ -199,8 +203,7 @@ ERROR: no-vorbis-in-ogg ; [ 2dup = ] [ drop - [ drop buffer-data-from-stream drop ] - [ over sync-pages [ decode-audio ] [ nip ] if ] 2bi + over sync-pages [ decode-audio ] [ nip ] if ] } [ nip decode-audio ]