From 716fb2966471b100ee16e20d033f4e8287ad5776 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 10 Sep 2008 21:11:59 -0500 Subject: [PATCH] remove old ogg. could have used git mv i guess. oops --- unmaintained/ogg/authors.txt | 1 - unmaintained/ogg/ogg.factor | 132 ------ unmaintained/ogg/player/authors.txt | 1 - unmaintained/ogg/player/player.factor | 624 -------------------------- unmaintained/ogg/player/summary.txt | 1 - unmaintained/ogg/player/tags.txt | 2 - unmaintained/ogg/summary.txt | 1 - unmaintained/ogg/tags.txt | 3 - unmaintained/ogg/theora/authors.txt | 1 - unmaintained/ogg/theora/summary.txt | 1 - unmaintained/ogg/theora/tags.txt | 1 - unmaintained/ogg/theora/theora.factor | 120 ----- unmaintained/ogg/vorbis/authors.txt | 1 - unmaintained/ogg/vorbis/summary.txt | 1 - unmaintained/ogg/vorbis/tags.txt | 1 - unmaintained/ogg/vorbis/vorbis.factor | 141 ------ 16 files changed, 1032 deletions(-) delete mode 100644 unmaintained/ogg/authors.txt delete mode 100644 unmaintained/ogg/ogg.factor delete mode 100644 unmaintained/ogg/player/authors.txt delete mode 100755 unmaintained/ogg/player/player.factor delete mode 100644 unmaintained/ogg/player/summary.txt delete mode 100644 unmaintained/ogg/player/tags.txt delete mode 100644 unmaintained/ogg/summary.txt delete mode 100644 unmaintained/ogg/tags.txt delete mode 100644 unmaintained/ogg/theora/authors.txt delete mode 100644 unmaintained/ogg/theora/summary.txt delete mode 100644 unmaintained/ogg/theora/tags.txt delete mode 100644 unmaintained/ogg/theora/theora.factor delete mode 100644 unmaintained/ogg/vorbis/authors.txt delete mode 100644 unmaintained/ogg/vorbis/summary.txt delete mode 100644 unmaintained/ogg/vorbis/tags.txt delete mode 100644 unmaintained/ogg/vorbis/vorbis.factor diff --git a/unmaintained/ogg/authors.txt b/unmaintained/ogg/authors.txt deleted file mode 100644 index 44b06f94bc..0000000000 --- a/unmaintained/ogg/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Chris Double diff --git a/unmaintained/ogg/ogg.factor b/unmaintained/ogg/ogg.factor deleted file mode 100644 index 37dd30f7fd..0000000000 --- a/unmaintained/ogg/ogg.factor +++ /dev/null @@ -1,132 +0,0 @@ -! Copyright (C) 2007 Chris Double. -! See http://factorcode.org/license.txt for BSD license. -! -USING: kernel system combinators alien alien.syntax ; -IN: ogg - -<< -"ogg" { - { [ os winnt? ] [ "ogg.dll" ] } - { [ os macosx? ] [ "libogg.0.dylib" ] } - { [ os unix? ] [ "libogg.so" ] } -} cond "cdecl" add-library ->> - -LIBRARY: ogg - -C-STRUCT: oggpack_buffer - { "long" "endbyte" } - { "int" "endbit" } - { "uchar*" "buffer" } - { "uchar*" "ptr" } - { "long" "storage" } ; - -C-STRUCT: ogg_page - { "uchar*" "header" } - { "long" "header_len" } - { "uchar*" "body" } - { "long" "body_len" } ; - -C-STRUCT: ogg_stream_state - { "uchar*" "body_data" } - { "long" "body_storage" } - { "long" "body_fill" } - { "long" "body_returned" } - { "int*" "lacing_vals" } - { "longlong*" "granule_vals" } - { "long" "lacing_storage" } - { "long" "lacing_fill" } - { "long" "lacing_packet" } - { "long" "lacing_returned" } - { { "uchar" 282 } "header" } - { "int" "header_fill" } - { "int" "e_o_s" } - { "int" "b_o_s" } - { "long" "serialno" } - { "long" "pageno" } - { "longlong" "packetno" } - { "longlong" "granulepos" } ; - -C-STRUCT: ogg_packet - { "uchar*" "packet" } - { "long" "bytes" } - { "long" "b_o_s" } - { "long" "e_o_s" } - { "longlong" "granulepos" } - { "longlong" "packetno" } ; - -C-STRUCT: ogg_sync_state - { "uchar*" "data" } - { "int" "storage" } - { "int" "fill" } - { "int" "returned" } - { "int" "unsynced" } - { "int" "headerbytes" } - { "int" "bodybytes" } ; - -FUNCTION: void oggpack_writeinit ( oggpack_buffer* b ) ; -FUNCTION: void oggpack_writetrunc ( oggpack_buffer* b, long bits ) ; -FUNCTION: void oggpack_writealign ( oggpack_buffer* b) ; -FUNCTION: void oggpack_writecopy ( oggpack_buffer* b, void* source, long bits ) ; -FUNCTION: void oggpack_reset ( oggpack_buffer* b ) ; -FUNCTION: void oggpack_writeclear ( oggpack_buffer* b ) ; -FUNCTION: void oggpack_readinit ( oggpack_buffer* b, uchar* buf, int bytes ) ; -FUNCTION: void oggpack_write ( oggpack_buffer* b, ulong value, int bits ) ; -FUNCTION: long oggpack_look ( oggpack_buffer* b, int bits ) ; -FUNCTION: long oggpack_look1 ( oggpack_buffer* b ) ; -FUNCTION: void oggpack_adv ( oggpack_buffer* b, int bits ) ; -FUNCTION: void oggpack_adv1 ( oggpack_buffer* b ) ; -FUNCTION: long oggpack_read ( oggpack_buffer* b, int bits ) ; -FUNCTION: long oggpack_read1 ( oggpack_buffer* b ) ; -FUNCTION: long oggpack_bytes ( oggpack_buffer* b ) ; -FUNCTION: long oggpack_bits ( oggpack_buffer* b ) ; -FUNCTION: uchar* oggpack_get_buffer ( oggpack_buffer* b ) ; -FUNCTION: void oggpackB_writeinit ( oggpack_buffer* b ) ; -FUNCTION: void oggpackB_writetrunc ( oggpack_buffer* b, long bits ) ; -FUNCTION: void oggpackB_writealign ( oggpack_buffer* b ) ; -FUNCTION: void oggpackB_writecopy ( oggpack_buffer* b, void* source, long bits ) ; -FUNCTION: void oggpackB_reset ( oggpack_buffer* b ) ; -FUNCTION: void oggpackB_writeclear ( oggpack_buffer* b ) ; -FUNCTION: void oggpackB_readinit ( oggpack_buffer* b, uchar* buf, int bytes ) ; -FUNCTION: void oggpackB_write ( oggpack_buffer* b, ulong value, int bits ) ; -FUNCTION: long oggpackB_look ( oggpack_buffer* b, int bits ) ; -FUNCTION: long oggpackB_look1 ( oggpack_buffer* b ) ; -FUNCTION: void oggpackB_adv ( oggpack_buffer* b, int bits ) ; -FUNCTION: void oggpackB_adv1 ( oggpack_buffer* b ) ; -FUNCTION: long oggpackB_read ( oggpack_buffer* b, int bits ) ; -FUNCTION: long oggpackB_read1 ( oggpack_buffer* b ) ; -FUNCTION: long oggpackB_bytes ( oggpack_buffer* b ) ; -FUNCTION: long oggpackB_bits ( oggpack_buffer* b ) ; -FUNCTION: uchar* oggpackB_get_buffer ( oggpack_buffer* b ) ; -FUNCTION: int ogg_stream_packetin ( ogg_stream_state* os, ogg_packet* op ) ; -FUNCTION: int ogg_stream_pageout ( ogg_stream_state* os, ogg_page* og ) ; -FUNCTION: int ogg_stream_flush ( ogg_stream_state* os, ogg_page* og ) ; -FUNCTION: int ogg_sync_init ( ogg_sync_state* oy ) ; -FUNCTION: int ogg_sync_clear ( ogg_sync_state* oy ) ; -FUNCTION: int ogg_sync_reset ( ogg_sync_state* oy ) ; -FUNCTION: int ogg_sync_destroy ( ogg_sync_state* oy ) ; - -FUNCTION: void* ogg_sync_buffer ( ogg_sync_state* oy, long size ) ; -FUNCTION: int ogg_sync_wrote ( ogg_sync_state* oy, long bytes ) ; -FUNCTION: long ogg_sync_pageseek ( ogg_sync_state* oy, ogg_page* og ) ; -FUNCTION: int ogg_sync_pageout ( ogg_sync_state* oy, ogg_page* og ) ; -FUNCTION: int ogg_stream_pagein ( ogg_stream_state* os, ogg_page* og ) ; -FUNCTION: int ogg_stream_packetout ( ogg_stream_state* os, ogg_packet* op ) ; -FUNCTION: int ogg_stream_packetpeek ( ogg_stream_state* os, ogg_packet* op ) ; -FUNCTION: int ogg_stream_init (ogg_stream_state* os, int serialno ) ; -FUNCTION: int ogg_stream_clear ( ogg_stream_state* os ) ; -FUNCTION: int ogg_stream_reset ( ogg_stream_state* os ) ; -FUNCTION: int ogg_stream_reset_serialno ( ogg_stream_state* os, int serialno ) ; -FUNCTION: int ogg_stream_destroy ( ogg_stream_state* os ) ; -FUNCTION: int ogg_stream_eos ( ogg_stream_state* os ) ; -FUNCTION: void ogg_page_checksum_set ( ogg_page* og ) ; -FUNCTION: int ogg_page_version ( ogg_page* og ) ; -FUNCTION: int ogg_page_continued ( ogg_page* og ) ; -FUNCTION: int ogg_page_bos ( ogg_page* og ) ; -FUNCTION: int ogg_page_eos ( ogg_page* og ) ; -FUNCTION: longlong ogg_page_granulepos ( ogg_page* og ) ; -FUNCTION: int ogg_page_serialno ( ogg_page* og ) ; -FUNCTION: long ogg_page_pageno ( ogg_page* og ) ; -FUNCTION: int ogg_page_packets ( ogg_page* og ) ; -FUNCTION: void ogg_packet_clear ( ogg_packet* op ) ; - diff --git a/unmaintained/ogg/player/authors.txt b/unmaintained/ogg/player/authors.txt deleted file mode 100644 index 44b06f94bc..0000000000 --- a/unmaintained/ogg/player/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Chris Double diff --git a/unmaintained/ogg/player/player.factor b/unmaintained/ogg/player/player.factor deleted file mode 100755 index 251206f1d1..0000000000 --- a/unmaintained/ogg/player/player.factor +++ /dev/null @@ -1,624 +0,0 @@ -! Copyright (C) 2007 Chris Double. -! See http://factorcode.org/license.txt for BSD license. -! -! TODO: -! based on number of channels in file. -! - End of decoding is indicated by an exception when reading the stream. -! How to work around this? C player example uses feof but streams don't -! have that in Factor. -! - Work out openal buffer method that plays nicely with streaming over -! slow connections. -! - Have start/stop/seek methods on the player object. -! -USING: kernel alien ogg ogg.vorbis ogg.theora io byte-arrays - sequences libc shuffle alien.c-types system openal math - namespaces threads shuffle opengl arrays ui.gadgets.worlds - combinators math.parser ui.gadgets ui.render opengl.gl ui - continuations io.files hints combinators.lib sequences.lib - io.encodings.binary debugger math.order ; - -IN: ogg.player - -: audio-buffer-size ( -- number ) 128 1024 * ; inline - -TUPLE: player stream temp-state - op oy og - vo vi vd vb vc vorbis - to ti tc td yuv rgb theora video-ready? video-time video-granulepos - source buffers buffer-indexes start-time - playing? audio-full? audio-index audio-buffer audio-granulepos - gadget ; - -: init-vorbis ( player -- ) - dup player-oy ogg_sync_init drop - dup player-vi vorbis_info_init - player-vc vorbis_comment_init ; - -: init-theora ( player -- ) - dup player-ti theora_info_init - player-tc theora_comment_init ; - -: init-sound ( player -- ) - init-openal check-error - 1 gen-buffers check-error over set-player-buffers - 2 "uint" over set-player-buffer-indexes - 1 gen-sources check-error first swap set-player-source ; - -: ( stream -- player ) - { set-player-stream } player construct - 0 over set-player-vorbis - 0 over set-player-theora - 0 over set-player-video-time - 0 over set-player-video-granulepos - f over set-player-video-ready? - f over set-player-audio-full? - 0 over set-player-audio-index - 0 over set-player-start-time - audio-buffer-size "short" over set-player-audio-buffer - 0 over set-player-audio-granulepos - f over set-player-playing? - "ogg_packet" malloc-object over set-player-op - "ogg_sync_state" malloc-object over set-player-oy - "ogg_page" malloc-object over set-player-og - "ogg_stream_state" malloc-object over set-player-vo - "vorbis_info" malloc-object over set-player-vi - "vorbis_dsp_state" malloc-object over set-player-vd - "vorbis_block" malloc-object over set-player-vb - "vorbis_comment" malloc-object over set-player-vc - "ogg_stream_state" malloc-object over set-player-to - "theora_info" malloc-object over set-player-ti - "theora_comment" malloc-object over set-player-tc - "theora_state" malloc-object over set-player-td - "yuv_buffer" over set-player-yuv - "ogg_stream_state" over set-player-temp-state - dup init-sound - dup init-vorbis - dup init-theora ; - -: num-channels ( player -- channels ) - player-vi vorbis_info-channels ; - -: al-channel-format ( player -- format ) - num-channels 1 = [ AL_FORMAT_MONO16 ] [ AL_FORMAT_STEREO16 ] if ; - -: get-time ( player -- time ) - dup player-start-time zero? [ - millis over set-player-start-time - ] when - player-start-time millis swap - 1000.0 /f ; - -: clamp ( n -- n ) - 255 min 0 max ; inline - -: stride ( line yuv -- uvy yy ) - [ yuv_buffer-uv_stride >fixnum swap 2/ * ] 2keep - yuv_buffer-y_stride >fixnum * >fixnum ; inline - -: each-with4 ( obj obj obj obj seq quot -- ) - 4 each-withn ; inline - -: compute-y ( yuv uvy yy x -- y ) - + >fixnum nip swap yuv_buffer-y uchar-nth 16 - ; inline - -: compute-v ( yuv uvy yy x -- v ) - nip 2/ + >fixnum swap yuv_buffer-u uchar-nth 128 - ; inline - -: compute-u ( yuv uvy yy x -- v ) - nip 2/ + >fixnum swap yuv_buffer-v uchar-nth 128 - ; inline - -: compute-yuv ( yuv uvy yy x -- y u v ) - [ compute-y ] 4keep [ compute-u ] 4keep compute-v ; inline - -: compute-blue ( y u v -- b ) - drop 516 * 128 + swap 298 * + -8 shift clamp ; inline - -: compute-green ( y u v -- g ) - >r >r 298 * r> 100 * - r> 208 * - 128 + -8 shift clamp ; - inline - -: compute-red ( y u v -- g ) - nip 409 * swap 298 * + 128 + -8 shift clamp ; inline - -: compute-rgb ( y u v -- b g r ) - [ compute-blue ] 3keep [ compute-green ] 3keep compute-red ; - inline - -: store-rgb ( index rgb b g r -- index ) - >r - >r pick 0 + >fixnum pick set-uchar-nth - r> pick 1 + >fixnum pick set-uchar-nth - r> pick 2 + >fixnum pick set-uchar-nth - drop ; inline - -: yuv>rgb-pixel ( index rgb yuv uvy yy x -- index ) - compute-yuv compute-rgb store-rgb 3 + >fixnum ; inline - -: yuv>rgb-row ( index rgb yuv y -- index ) - over stride - pick yuv_buffer-y_width >fixnum - [ yuv>rgb-pixel ] each-with4 ; inline - -: yuv>rgb ( rgb yuv -- ) - 0 -rot - dup yuv_buffer-y_height >fixnum - [ yuv>rgb-row ] each-with2 - drop ; - -HINTS: yuv>rgb byte-array byte-array ; - -: process-video ( player -- player ) - 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 relayout-1 yield - ] when ; - -: num-audio-buffers-processed ( player -- player n ) - dup player-source AL_BUFFERS_PROCESSED 0 - [ alGetSourcei check-error ] keep *uint ; - -: append-new-audio-buffer ( player -- player ) - dup player-buffers 1 gen-buffers append over set-player-buffers - [ [ player-buffers second ] keep al-channel-format ] keep - [ player-audio-buffer dup length ] keep - [ player-vi vorbis_info-rate alBufferData check-error ] keep - [ player-source 1 ] keep - [ player-buffers second alSourceQueueBuffers check-error ] keep ; - -: fill-processed-audio-buffer ( player n -- player ) - #! n is the number of audio buffers processed - over >r >r dup player-source r> pick player-buffer-indexes - [ alSourceUnqueueBuffers check-error ] keep - *uint dup r> swap >r al-channel-format rot - [ player-audio-buffer dup length ] keep - [ player-vi vorbis_info-rate alBufferData check-error ] keep - [ player-source 1 ] keep - r> swap >r alSourceQueueBuffers check-error r> ; - -: 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 ] } - [ fill-processed-audio-buffer t ] - } cond ; - -: start-audio ( player -- player bool ) - [ [ player-buffers first ] keep al-channel-format ] keep - [ player-audio-buffer dup length ] keep - [ player-vi vorbis_info-rate alBufferData check-error ] keep - [ player-source 1 ] keep - [ player-buffers first alSourceQueueBuffers check-error ] keep - [ player-source alSourcePlay check-error ] keep - t over set-player-playing? t ; - -: process-audio ( player -- player bool ) - dup player-playing? [ append-audio ] [ start-audio ] if ; - -: read-bytes-into ( dest size stream -- len ) - #! Read the given number of bytes from a stream - #! and store them in the destination byte array. - stream-read >byte-array dup length [ memcpy ] keep ; - -: check-not-negative ( int -- ) - 0 < [ "Word result was a negative number." throw ] when ; - -: buffer-size ( -- number ) - 4096 ; inline - -: sync-buffer ( player -- buffer size player ) - [ player-oy buffer-size ogg_sync_buffer buffer-size ] keep ; - -: stream-into-buffer ( buffer size player -- len player ) - [ player-stream read-bytes-into ] keep ; - -: confirm-buffer ( len player -- player eof? ) - [ player-oy swap ogg_sync_wrote check-not-negative ] 2keep swap zero? ; - -: buffer-data ( player -- player eof? ) - #! Take some compressed bitstream data and sync it for - #! page extraction. - sync-buffer stream-into-buffer confirm-buffer ; - -: queue-page ( player -- player ) - #! Push a page into the stream for packetization - [ { player-vo player-og } get-slots ogg_stream_pagein drop ] keep - [ { player-to player-og } get-slots ogg_stream_pagein drop ] keep ; - -: retrieve-page ( player -- player bool ) - #! Sync the streams and get a page. Return true if a page was - #! successfully retrieved. - dup { player-oy player-og } get-slots ogg_sync_pageout 0 > ; - -: standard-initial-header? ( player -- player bool ) - dup player-og ogg_page_bos zero? not ; - -: ogg-stream-init ( player -- state player ) - #! Init the encode/decode logical stream state - [ player-temp-state ] keep - [ player-og ogg_page_serialno ogg_stream_init check-not-negative ] 2keep ; - -: ogg-stream-pagein ( state player -- state player ) - #! Add the incoming page to the stream state - [ player-og ogg_stream_pagein drop ] 2keep ; - -: ogg-stream-packetout ( state player -- state player ) - [ player-op ogg_stream_packetout drop ] 2keep ; - -: decode-packet ( player -- state player ) - ogg-stream-init ogg-stream-pagein ogg-stream-packetout ; - -: theora-header? ( player -- player bool ) - #! Is the current page a theora header? - dup { player-ti player-tc player-op } get-slots theora_decode_header 0 >= ; - -: is-theora-packet? ( player -- player bool ) - dup player-theora zero? [ theora-header? ] [ f ] if ; - -: copy-to-theora-state ( state player -- player ) - #! Copy the state to the theora state structure in the player - [ player-to swap dup length memcpy ] keep ; - -: handle-initial-theora-header ( state player -- player ) - copy-to-theora-state 1 over set-player-theora ; - -: vorbis-header? ( player -- player bool ) - #! Is the current page a vorbis header? - dup { player-vi player-vc player-op } get-slots vorbis_synthesis_headerin 0 >= ; - -: is-vorbis-packet? ( player -- player bool ) - dup player-vorbis zero? [ vorbis-header? ] [ f ] if ; - -: copy-to-vorbis-state ( state player -- player ) - #! Copy the state to the vorbis state structure in the player - [ player-vo swap dup length memcpy ] keep ; - -: handle-initial-vorbis-header ( state player -- player ) - copy-to-vorbis-state 1 over set-player-vorbis ; - -: handle-initial-unknown-header ( state player -- player ) - swap ogg_stream_clear drop ; - -: process-initial-header ( player -- player bool ) - #! Is this a standard initial header? If not, stop parsing - standard-initial-header? [ - decode-packet { - { [ is-vorbis-packet? ] [ handle-initial-vorbis-header ] } - { [ is-theora-packet? ] [ handle-initial-theora-header ] } - [ handle-initial-unknown-header ] - } cond t - ] [ - f - ] if ; - -: parse-initial-headers ( player -- player ) - #! Parse Vorbis headers, ignoring any other type stored - #! in the Ogg container. - retrieve-page [ - process-initial-header [ - parse-initial-headers - ] [ - #! Don't leak the page, get it into the appropriate stream - queue-page - ] if - ] [ - buffer-data not [ parse-initial-headers ] when - ] if ; - -: have-required-vorbis-headers? ( player -- player bool ) - #! Return true if we need to decode vorbis due to there being - #! vorbis headers read from the stream but we don't have them all - #! yet. - dup player-vorbis 1 2 between? not ; - -: have-required-theora-headers? ( player -- player bool ) - #! Return true if we need to decode theora due to there being - #! theora headers read from the stream but we don't have them all - #! yet. - dup player-theora 1 2 between? not ; - -: get-remaining-vorbis-header-packet ( player -- player bool ) - dup { player-vo player-op } get-slots ogg_stream_packetout { - { [ dup 0 < ] [ "Error parsing vorbis stream; corrupt stream?" throw ] } - { [ dup zero? ] [ drop f ] } - { [ t ] [ drop t ] } - } cond ; - -: get-remaining-theora-header-packet ( player -- player bool ) - dup { player-to player-op } get-slots ogg_stream_packetout { - { [ dup 0 < ] [ "Error parsing theora stream; corrupt stream?" throw ] } - { [ dup zero? ] [ drop f ] } - { [ t ] [ drop t ] } - } cond ; - -: decode-remaining-vorbis-header-packet ( player -- player ) - dup { player-vi player-vc player-op } get-slots vorbis_synthesis_headerin zero? [ - "Error parsing vorbis stream; corrupt stream?" throw - ] unless ; - -: decode-remaining-theora-header-packet ( player -- player ) - dup { player-ti player-tc player-op } get-slots theora_decode_header zero? [ - "Error parsing theora stream; corrupt stream?" throw - ] unless ; - -: increment-vorbis-header-count ( player -- player ) - dup player-vorbis 1+ over set-player-vorbis ; - -: increment-theora-header-count ( player -- player ) - dup player-theora 1+ over set-player-theora ; - -: parse-remaining-vorbis-headers ( player -- player ) - have-required-vorbis-headers? not [ - get-remaining-vorbis-header-packet [ - decode-remaining-vorbis-header-packet - increment-vorbis-header-count - parse-remaining-vorbis-headers - ] when - ] when ; - -: parse-remaining-theora-headers ( player -- player ) - have-required-theora-headers? not [ - get-remaining-theora-header-packet [ - decode-remaining-theora-header-packet - increment-theora-header-count - parse-remaining-theora-headers - ] when - ] when ; - -: get-more-header-data ( player -- player ) - buffer-data drop ; - -: parse-remaining-headers ( player -- player ) - have-required-vorbis-headers? not swap have-required-theora-headers? not swapd or [ - parse-remaining-vorbis-headers - parse-remaining-theora-headers - retrieve-page [ queue-page ] [ get-more-header-data ] if - parse-remaining-headers - ] when ; - -: tear-down-vorbis ( player -- player ) - dup player-vi vorbis_info_clear - dup player-vc vorbis_comment_clear ; - -: tear-down-theora ( player -- player ) - dup player-ti theora_info_clear - dup player-tc theora_comment_clear ; - -: init-vorbis-codec ( player -- player ) - dup { player-vd player-vi } get-slots vorbis_synthesis_init drop - dup { player-vd player-vb } get-slots vorbis_block_init drop ; - -: init-theora-codec ( player -- player ) - dup { player-td player-ti } get-slots theora_decode_init drop - dup player-ti theora_info-frame_width over player-ti theora_info-frame_height - 4 * * over set-player-rgb ; - - -: display-vorbis-details ( player -- player ) - [ - "Ogg logical stream " % - dup player-vo ogg_stream_state-serialno # - " is Vorbis " % - dup player-vi vorbis_info-channels # - " channel " % - dup player-vi vorbis_info-rate # - " Hz audio." % - ] "" make print ; - -: display-theora-details ( player -- player ) - [ - "Ogg logical stream " % - dup player-to ogg_stream_state-serialno # - " is Theora " % - dup player-ti theora_info-width # - "x" % - dup player-ti theora_info-height # - " " % - dup player-ti theora_info-fps_numerator - over player-ti theora_info-fps_denominator /f # - " fps video" % - ] "" make print ; - -: initialize-decoder ( player -- player ) - dup player-vorbis zero? [ tear-down-vorbis ] [ init-vorbis-codec display-vorbis-details ] if - dup player-theora zero? [ tear-down-theora ] [ init-theora-codec display-theora-details ] if ; - -: sync-pages ( player -- player ) - retrieve-page [ - queue-page sync-pages - ] when ; - -: audio-buffer-not-ready? ( player -- player bool ) - dup player-vorbis zero? not over player-audio-full? not and ; - -: pending-decoded-audio? ( player -- player pcm len bool ) - f 2dup >r player-vd r> vorbis_synthesis_pcmout dup 0 > ; - -: buffer-space-available ( player -- available ) - audio-buffer-size swap player-audio-index - ; - -: samples-to-read ( player available len -- numread ) - >r swap num-channels / r> min ; - -: each-with3 ( obj obj obj seq quot -- ) 3 each-withn ; inline - -: add-to-buffer ( player val -- ) - over player-audio-index pick player-audio-buffer set-short-nth - dup player-audio-index 1+ swap set-player-audio-index ; - -: get-audio-value ( pcm sample channel -- value ) - rot *void* void*-nth float-nth ; - -: process-channels ( player pcm sample channel -- ) - get-audio-value 32767.0 * >fixnum 32767 min -32768 max add-to-buffer ; - -: (process-sample) ( player pcm sample -- ) - pick num-channels [ process-channels ] each-with3 ; - -: process-samples ( player pcm numread -- ) - [ (process-sample) ] each-with2 ; - -: decode-pending-audio ( player pcm result -- player ) -! [ "ret = " % dup # ] "" make write - pick [ buffer-space-available swap ] keep -rot samples-to-read - pick over >r >r process-samples r> r> swap - ! numread player - dup player-audio-index audio-buffer-size = [ - t over set-player-audio-full? - ] when - dup player-vd vorbis_dsp_state-granulepos dup 0 >= [ - ! numtoread player granulepos - #! This is wrong: fix - pick - over set-player-audio-granulepos - ] [ - ! numtoread player granulepos - pick + over set-player-audio-granulepos - ] if - [ player-vd swap vorbis_synthesis_read drop ] keep ; - -: no-pending-audio ( player -- player bool ) - #! No pending audio. Is there a pending packet to decode. - dup { player-vo player-op } get-slots ogg_stream_packetout 0 > [ - dup { player-vb player-op } get-slots vorbis_synthesis 0 = [ - dup { player-vd player-vb } get-slots vorbis_synthesis_blockin drop - ] when - t - ] [ - #! Need more data. Break out to suck in another page. - f - ] if ; - -: decode-audio ( player -- player ) - audio-buffer-not-ready? [ - #! If there's pending decoded audio, grab it - pending-decoded-audio? [ - decode-pending-audio decode-audio - ] [ - 2drop no-pending-audio [ decode-audio ] when - ] if - ] when ; - -: video-buffer-not-ready? ( player -- player bool ) - dup player-theora zero? not over player-video-ready? not and ; - -: decode-video ( player -- player ) - video-buffer-not-ready? [ - dup { player-to player-op } get-slots ogg_stream_packetout 0 > [ - dup { player-td player-op } get-slots theora_decode_packetin drop - dup player-td theora_state-granulepos over set-player-video-granulepos - dup { player-td player-video-granulepos } get-slots theora_granule_time - over set-player-video-time - t over set-player-video-ready? - decode-video - ] when - ] when ; - -: decode ( player -- player ) - get-more-header-data sync-pages - decode-audio - decode-video - dup player-audio-full? [ - process-audio [ - f over set-player-audio-full? - 0 over set-player-audio-index - ] when - ] when - dup player-video-ready? [ - dup player-video-time over get-time - dup 0.0 < [ - -0.1 > [ process-video ] when - f over set-player-video-ready? - ] [ - drop - ] if - ] when - decode ; - -: free-malloced-objects ( player -- player ) - [ player-op free ] keep - [ player-oy free ] keep - [ player-og free ] keep - [ player-vo free ] keep - [ player-vi free ] keep - [ player-vd free ] keep - [ player-vb free ] keep - [ player-vc free ] keep - [ player-to free ] keep - [ player-ti free ] keep - [ player-tc free ] keep - [ player-td free ] keep ; - - -: unqueue-openal-buffers ( player -- player ) - [ - - num-audio-buffers-processed over player-source rot player-buffer-indexes swapd - alSourceUnqueueBuffers check-error - ] keep ; - -: delete-openal-buffers ( player -- player ) - [ - player-buffers [ - 1 swap alDeleteBuffers check-error - ] each - ] keep ; - -: delete-openal-source ( player -- player ) - [ player-source 1 swap alDeleteSources check-error ] keep ; - -: cleanup ( player -- player ) - free-malloced-objects - unqueue-openal-buffers - delete-openal-buffers - delete-openal-source ; - -: wait-for-sound ( player -- player ) - #! Waits for the openal to finish playing remaining sounds - dup player-source AL_SOURCE_STATE 0 [ alGetSourcei check-error ] keep - *int AL_PLAYING = [ - 100 sleep - wait-for-sound - ] when ; - -TUPLE: theora-gadget player ; - -: ( player -- gadget ) - theora-gadget construct-gadget - [ set-theora-gadget-player ] keep ; - -M: theora-gadget pref-dim* - theora-gadget-player - player-ti dup theora_info-width swap theora_info-height 2array ; - -M: theora-gadget draw-gadget* ( gadget -- ) - 0 0 glRasterPos2i - 1.0 -1.0 glPixelZoom - GL_UNPACK_ALIGNMENT 1 glPixelStorei - [ pref-dim* first2 GL_RGB GL_UNSIGNED_BYTE ] keep - theora-gadget-player player-rgb glDrawPixels ; - -: initialize-gui ( gadget -- ) - "Theora Player" open-window ; - -: play-ogg ( player -- ) - parse-initial-headers - parse-remaining-headers - initialize-decoder - dup player-gadget [ initialize-gui ] when* - [ decode ] try - wait-for-sound - cleanup - drop ; - -: play-vorbis-stream ( stream -- ) - play-ogg ; - -: play-vorbis-file ( filename -- ) - binary play-vorbis-stream ; - -: play-theora-stream ( stream -- ) - - dup over set-player-gadget - play-ogg ; - -: play-theora-file ( filename -- ) - binary play-theora-stream ; - diff --git a/unmaintained/ogg/player/summary.txt b/unmaintained/ogg/player/summary.txt deleted file mode 100644 index d2e32eff61..0000000000 --- a/unmaintained/ogg/player/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Ogg vorbis and theora media player diff --git a/unmaintained/ogg/player/tags.txt b/unmaintained/ogg/player/tags.txt deleted file mode 100644 index 1adb6f1a28..0000000000 --- a/unmaintained/ogg/player/tags.txt +++ /dev/null @@ -1,2 +0,0 @@ -audio -video diff --git a/unmaintained/ogg/summary.txt b/unmaintained/ogg/summary.txt deleted file mode 100644 index 3d2b5511c9..0000000000 --- a/unmaintained/ogg/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Ogg media library binding diff --git a/unmaintained/ogg/tags.txt b/unmaintained/ogg/tags.txt deleted file mode 100644 index be30e2cdd4..0000000000 --- a/unmaintained/ogg/tags.txt +++ /dev/null @@ -1,3 +0,0 @@ -bindings -audio -video diff --git a/unmaintained/ogg/theora/authors.txt b/unmaintained/ogg/theora/authors.txt deleted file mode 100644 index 44b06f94bc..0000000000 --- a/unmaintained/ogg/theora/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Chris Double diff --git a/unmaintained/ogg/theora/summary.txt b/unmaintained/ogg/theora/summary.txt deleted file mode 100644 index aa5ec1fdf7..0000000000 --- a/unmaintained/ogg/theora/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Ogg Theora video library binding diff --git a/unmaintained/ogg/theora/tags.txt b/unmaintained/ogg/theora/tags.txt deleted file mode 100644 index 2b68b5238a..0000000000 --- a/unmaintained/ogg/theora/tags.txt +++ /dev/null @@ -1 +0,0 @@ -video diff --git a/unmaintained/ogg/theora/theora.factor b/unmaintained/ogg/theora/theora.factor deleted file mode 100644 index 3d73fb8820..0000000000 --- a/unmaintained/ogg/theora/theora.factor +++ /dev/null @@ -1,120 +0,0 @@ -! Copyright (C) 2007 Chris Double. -! See http://factorcode.org/license.txt for BSD license. -! -USING: kernel system combinators alien alien.syntax ; -IN: ogg.theora - -<< -"theora" { - { [ os winnt? ] [ "theora.dll" ] } - { [ os macosx? ] [ "libtheora.0.dylib" ] } - { [ os unix? ] [ "libtheora.so" ] } -} cond "cdecl" add-library ->> - -LIBRARY: theora - -C-STRUCT: yuv_buffer - { "int" "y_width" } - { "int" "y_height" } - { "int" "y_stride" } - { "int" "uv_width" } - { "int" "uv_height" } - { "int" "uv_stride" } - { "void*" "y" } - { "void*" "u" } - { "void*" "v" } ; - -: OC_CS_UNSPECIFIED ( -- number ) 0 ; inline -: OC_CS_ITU_REC_470M ( -- number ) 1 ; inline -: OC_CS_ITU_REC_470BG ( -- number ) 2 ; inline -: OC_CS_NSPACES ( -- number ) 3 ; inline - -TYPEDEF: int theora_colorspace - -: OC_PF_420 ( -- number ) 0 ; inline -: OC_PF_RSVD ( -- number ) 1 ; inline -: OC_PF_422 ( -- number ) 2 ; inline -: OC_PF_444 ( -- number ) 3 ; inline - -TYPEDEF: int theora_pixelformat - -C-STRUCT: theora_info - { "uint" "width" } - { "uint" "height" } - { "uint" "frame_width" } - { "uint" "frame_height" } - { "uint" "offset_x" } - { "uint" "offset_y" } - { "uint" "fps_numerator" } - { "uint" "fps_denominator" } - { "uint" "aspect_numerator" } - { "uint" "aspect_denominator" } - { "theora_colorspace" "colorspace" } - { "int" "target_bitrate" } - { "int" "quality" } - { "int" "quick_p" } - { "uchar" "version_major" } - { "uchar" "version_minor" } - { "uchar" "version_subminor" } - { "void*" "codec_setup" } - { "int" "dropframes_p" } - { "int" "keyframe_auto_p" } - { "uint" "keyframe_frequency" } - { "uint" "keyframe_frequency_force" } - { "uint" "keyframe_data_target_bitrate" } - { "int" "keyframe_auto_threshold" } - { "uint" "keyframe_mindistance" } - { "int" "noise_sensitivity" } - { "int" "sharpness" } - { "theora_pixelformat" "pixelformat" } ; - -C-STRUCT: theora_state - { "theora_info*" "i" } - { "longlong" "granulepos" } - { "void*" "internal_encode" } - { "void*" "internal_decode" } ; - -C-STRUCT: theora_comment - { "char**" "user_comments" } - { "int*" "comment_lengths" } - { "int" "comments" } - { "char*" "vendor" } ; - -: OC_FAULT ( -- number ) -1 ; inline -: OC_EINVAL ( -- number ) -10 ; inline -: OC_DISABLED ( -- number ) -11 ; inline -: OC_BADHEADER ( -- number ) -20 ; inline -: OC_NOTFORMAT ( -- number ) -21 ; inline -: OC_VERSION ( -- number ) -22 ; inline -: OC_IMPL ( -- number ) -23 ; inline -: OC_BADPACKET ( -- number ) -24 ; inline -: OC_NEWPACKET ( -- number ) -25 ; inline -: OC_DUPFRAME ( -- number ) 1 ; inline - -FUNCTION: char* theora_version_string ( ) ; -FUNCTION: uint theora_version_number ( ) ; -FUNCTION: int theora_encode_init ( theora_state* th, theora_info* ti ) ; -FUNCTION: int theora_encode_YUVin ( theora_state* t, yuv_buffer* yuv ) ; -FUNCTION: int theora_encode_packetout ( theora_state* t, int last_p, ogg_packet* op ) ; -FUNCTION: int theora_encode_header ( theora_state* t, ogg_packet* op ) ; -FUNCTION: int theora_encode_comment ( theora_comment* tc, ogg_packet* op ) ; -FUNCTION: int theora_encode_tables ( theora_state* t, ogg_packet* op ) ; -FUNCTION: int theora_decode_header ( theora_info* ci, theora_comment* cc, ogg_packet* op ) ; -FUNCTION: int theora_decode_init ( theora_state* th, theora_info* c ) ; -FUNCTION: int theora_decode_packetin ( theora_state* th, ogg_packet* op ) ; -FUNCTION: int theora_decode_YUVout ( theora_state* th, yuv_buffer* yuv ) ; -FUNCTION: int theora_packet_isheader ( ogg_packet* op ) ; -FUNCTION: int theora_packet_iskeyframe ( ogg_packet* op ) ; -FUNCTION: int theora_granule_shift ( theora_info* ti ) ; -FUNCTION: longlong theora_granule_frame ( theora_state* th, longlong granulepos ) ; -FUNCTION: double theora_granule_time ( theora_state* th, longlong granulepos ) ; -FUNCTION: void theora_info_init ( theora_info* c ) ; -FUNCTION: void theora_info_clear ( theora_info* c ) ; -FUNCTION: void theora_clear ( theora_state* t ) ; -FUNCTION: void theora_comment_init ( theora_comment* tc ) ; -FUNCTION: void theora_comment_add ( theora_comment* tc, char* comment ) ; -FUNCTION: void theora_comment_add_tag ( theora_comment* tc, char* tag, char* value ) ; -FUNCTION: char* theora_comment_query ( theora_comment* tc, char* tag, int count ) ; -FUNCTION: int theora_comment_query_count ( theora_comment* tc, char* tag ) ; -FUNCTION: void theora_comment_clear ( theora_comment* tc ) ; diff --git a/unmaintained/ogg/vorbis/authors.txt b/unmaintained/ogg/vorbis/authors.txt deleted file mode 100644 index 44b06f94bc..0000000000 --- a/unmaintained/ogg/vorbis/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Chris Double diff --git a/unmaintained/ogg/vorbis/summary.txt b/unmaintained/ogg/vorbis/summary.txt deleted file mode 100644 index 1a8118ffe2..0000000000 --- a/unmaintained/ogg/vorbis/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Ogg Vorbis audio library binding diff --git a/unmaintained/ogg/vorbis/tags.txt b/unmaintained/ogg/vorbis/tags.txt deleted file mode 100644 index d5cc28426a..0000000000 --- a/unmaintained/ogg/vorbis/tags.txt +++ /dev/null @@ -1 +0,0 @@ -audio diff --git a/unmaintained/ogg/vorbis/vorbis.factor b/unmaintained/ogg/vorbis/vorbis.factor deleted file mode 100644 index 5712272ebc..0000000000 --- a/unmaintained/ogg/vorbis/vorbis.factor +++ /dev/null @@ -1,141 +0,0 @@ -! Copyright (C) 2007 Chris Double. -! See http://factorcode.org/license.txt for BSD license. -! -USING: kernel system combinators alien alien.syntax ogg ; -IN: ogg.vorbis - -<< -"vorbis" { - { [ os winnt? ] [ "vorbis.dll" ] } - { [ os macosx? ] [ "libvorbis.0.dylib" ] } - { [ os unix? ] [ "libvorbis.so" ] } -} cond "cdecl" add-library ->> - -LIBRARY: vorbis - -C-STRUCT: vorbis_info - { "int" "version" } - { "int" "channels" } - { "long" "rate" } - { "long" "bitrate_upper" } - { "long" "bitrate_nominal" } - { "long" "bitrate_lower" } - { "long" "bitrate_window" } - { "void*" "codec_setup"} - ; - -C-STRUCT: vorbis_dsp_state - { "int" "analysisp" } - { "vorbis_info*" "vi" } - { "float**" "pcm" } - { "float**" "pcmret" } - { "int" "pcm_storage" } - { "int" "pcm_current" } - { "int" "pcm_returned" } - { "int" "preextrapolate" } - { "int" "eofflag" } - { "long" "lW" } - { "long" "W" } - { "long" "nW" } - { "long" "centerW" } - { "longlong" "granulepos" } - { "longlong" "sequence" } - { "longlong" "glue_bits" } - { "longlong" "time_bits" } - { "longlong" "floor_bits" } - { "longlong" "res_bits" } - { "void*" "backend_state" } - ; - -C-STRUCT: alloc_chain - { "void*" "ptr" } - { "void*" "next" } - ; - -C-STRUCT: vorbis_block - { "float**" "pcm" } - { "oggpack_buffer" "opb" } - { "long" "lW" } - { "long" "W" } - { "long" "nW" } - { "int" "pcmend" } - { "int" "mode" } - { "int" "eofflag" } - { "longlong" "granulepos" } - { "longlong" "sequence" } - { "vorbis_dsp_state*" "vd" } - { "void*" "localstore" } - { "long" "localtop" } - { "long" "localalloc" } - { "long" "totaluse" } - { "alloc_chain*" "reap" } - { "long" "glue_bits" } - { "long" "time_bits" } - { "long" "floor_bits" } - { "long" "res_bits" } - { "void*" "internal" } - ; - -C-STRUCT: vorbis_comment - { "char**" "usercomments" } - { "int*" "comment_lengths" } - { "int" "comments" } - { "char*" "vendor" } - ; - -FUNCTION: void vorbis_info_init ( vorbis_info* vi ) ; -FUNCTION: void vorbis_info_clear ( vorbis_info* vi ) ; -FUNCTION: int vorbis_info_blocksize ( vorbis_info* vi, int zo ) ; -FUNCTION: void vorbis_comment_init ( vorbis_comment* vc ) ; -FUNCTION: void vorbis_comment_add ( vorbis_comment* vc, char* comment ) ; -FUNCTION: void vorbis_comment_add_tag ( vorbis_comment* vc, char* tag, char* contents ) ; -FUNCTION: char* vorbis_comment_query ( vorbis_comment* vc, char* tag, int count ) ; -FUNCTION: int vorbis_comment_query_count ( vorbis_comment* vc, char* tag ) ; -FUNCTION: void vorbis_comment_clear ( vorbis_comment* vc ) ; -FUNCTION: int vorbis_block_init ( vorbis_dsp_state* v, vorbis_block* vb ) ; -FUNCTION: int vorbis_block_clear ( vorbis_block* vb ) ; -FUNCTION: void vorbis_dsp_clear ( vorbis_dsp_state* v ) ; -FUNCTION: double vorbis_granule_time ( vorbis_dsp_state* v, longlong granulepos ) ; -FUNCTION: int vorbis_analysis_init ( vorbis_dsp_state* v, vorbis_info* vi ) ; -FUNCTION: int vorbis_commentheader_out ( vorbis_comment* vc, ogg_packet* op ) ; -FUNCTION: int vorbis_analysis_headerout ( vorbis_dsp_state* v, - vorbis_comment* vc, - ogg_packet* op, - ogg_packet* op_comm, - ogg_packet* op_code ) ; -FUNCTION: float** vorbis_analysis_buffer ( vorbis_dsp_state* v, int vals ) ; -FUNCTION: int vorbis_analysis_wrote ( vorbis_dsp_state* v, int vals ) ; -FUNCTION: int vorbis_analysis_blockout ( vorbis_dsp_state* v, vorbis_block* vb ) ; -FUNCTION: int vorbis_analysis ( vorbis_block* vb, ogg_packet* op ) ; -FUNCTION: int vorbis_bitrate_addblock ( vorbis_block* vb ) ; -FUNCTION: int vorbis_bitrate_flushpacket ( vorbis_dsp_state* vd, - ogg_packet* op ) ; -FUNCTION: int vorbis_synthesis_headerin ( vorbis_info* vi, vorbis_comment* vc, - ogg_packet* op ) ; -FUNCTION: int vorbis_synthesis_init ( vorbis_dsp_state* v, vorbis_info* vi ) ; -FUNCTION: int vorbis_synthesis_restart ( vorbis_dsp_state* v ) ; -FUNCTION: int vorbis_synthesis ( vorbis_block* vb, ogg_packet* op ) ; -FUNCTION: int vorbis_synthesis_trackonly ( vorbis_block* vb, ogg_packet* op ) ; -FUNCTION: int vorbis_synthesis_blockin ( vorbis_dsp_state* v, vorbis_block* vb ) ; -FUNCTION: int vorbis_synthesis_pcmout ( vorbis_dsp_state* v, float*** pcm ) ; -FUNCTION: int vorbis_synthesis_lapout ( vorbis_dsp_state* v, float*** pcm ) ; -FUNCTION: int vorbis_synthesis_read ( vorbis_dsp_state* v, int samples ) ; -FUNCTION: long vorbis_packet_blocksize ( vorbis_info* vi, ogg_packet* op ) ; -FUNCTION: int vorbis_synthesis_halfrate ( vorbis_info* v, int flag ) ; -FUNCTION: int vorbis_synthesis_halfrate_p ( vorbis_info* v ) ; - -: OV_FALSE ( -- number ) -1 ; inline -: OV_EOF ( -- number ) -2 ; inline -: OV_HOLE ( -- number ) -3 ; inline -: OV_EREAD ( -- number ) -128 ; inline -: OV_EFAULT ( -- number ) -129 ; inline -: OV_EIMPL ( -- number ) -130 ; inline -: OV_EINVAL ( -- number ) -131 ; inline -: OV_ENOTVORBIS ( -- number ) -132 ; inline -: OV_EBADHEADER ( -- number ) -133 ; inline -: OV_EVERSION ( -- number ) -134 ; inline -: OV_ENOTAUDIO ( -- number ) -135 ; inline -: OV_EBADPACKET ( -- number ) -136 ; inline -: OV_EBADLINK ( -- number ) -137 ; inline -: OV_ENOSEEK ( -- number ) -138 ; inline