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
parent
9cccb39a5a
commit
1da5fe002e
|
@ -62,7 +62,11 @@ ERROR: no-vorbis-in-ogg ;
|
||||||
[ sync-state>> ] [ page>> ] bi ogg_sync_pageout 0 > ; inline
|
[ sync-state>> ] [ page>> ] bi ogg_sync_pageout 0 > ; inline
|
||||||
|
|
||||||
: (sync-pages) ( vorbis-stream ? -- ? )
|
: (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 -- ? )
|
: sync-pages ( vorbis-stream -- ? )
|
||||||
f (sync-pages) ; inline
|
f (sync-pages) ; inline
|
||||||
|
|
||||||
|
@ -199,8 +203,7 @@ ERROR: no-vorbis-in-ogg ;
|
||||||
[ 2dup = ]
|
[ 2dup = ]
|
||||||
[
|
[
|
||||||
drop
|
drop
|
||||||
[ drop buffer-data-from-stream drop ]
|
over sync-pages [ decode-audio ] [ nip ] if
|
||||||
[ over sync-pages [ decode-audio ] [ nip ] if ] 2bi
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
[ nip decode-audio ]
|
[ nip decode-audio ]
|
||||||
|
|
Loading…
Reference in New Issue