! Copyright (C) 2007 Chris Double. ! See http://factorcode.org/license.txt for BSD license. ! USING: alien alien.c-types alien.libraries alien.syntax classes.struct combinators kernel ogg system ; IN: ogg.theora << "theoradec" { { [ os winnt? ] [ "theoradec.dll" ] } { [ os macosx? ] [ "libtheoradec.0.dylib" ] } { [ os unix? ] [ "libtheoradec.so" ] } } cond "cdecl" add-library "theoraenc" { { [ os winnt? ] [ "theoraenc.dll" ] } { [ os macosx? ] [ "libtheoraenc.0.dylib" ] } { [ os unix? ] [ "libtheoraenc.so" ] } } cond "cdecl" add-library >> CONSTANT: TH-EFAULT -1 CONSTANT: TH-EINVAL -10 CONSTANT: TH-EBADHEADER -20 CONSTANT: TH-ENOTFORMAT -21 CONSTANT: TH-EVERSION -22 CONSTANT: TH-EIMPL -23 CONSTANT: TH-EBADPACKET -24 CONSTANT: TH-DUPFRAME 1 TYPEDEF: int th-colorspace CONSTANT: TH-CS-UNSPECIFIED 0 CONSTANT: TH-CS-ITU-REC-470M 1 CONSTANT: TH-CS-ITU-REC-470BG 2 CONSTANT: TH-CS-NSPACES 3 TYPEDEF: int th-pixelformat CONSTANT: TH-PF-RSVD 0 CONSTANT: TH-PF-422 1 CONSTANT: TH-PF-444 2 CONSTANT: TH-PF-NFORMATS 3 STRUCT: th-img-plane { width int } { height int } { stride int } { data uchar* } ; TYPEDEF: th-img-plane[3] th-ycbcr-buffer STRUCT: th-info { version-major uchar } { version-minor uchar } { version-subminor uchar } { frame-width uint } { frame-height uint } { pic-width uint } { pic-height uint } { pic-x uint } { pic-y uint } { fps-numerator uint } { fps-denominator uint } { aspect-numerator uint } { aspect-denominator uint } { colorspace th-colorspace } { pixel-fmt th-pixelformat } { target-bitrate int } { quality int } { keyframe-granule-shift int } ; STRUCT: th-comment { user-comments c-string* } { comment-lengths int* } { comments int } { vendor c-string } ; TYPEDEF: uchar[64] th-quant-base STRUCT: th-quant-ranges { nranges int } { sizes int* } { base-matrices th-quant-base* } ; STRUCT: th-quant-info { dc-scale { short 64 } } { ac-scale { short 64 } } { loop-filter-limits { uchar 64 } } { qi-ranges { th-quant-ranges 2 3 } } ; CONSTANT: TH-NHUFFMANE-TABLES 80 CONSTANT: TH-NDCT-TOKENS 32 STRUCT: th-huff-code { pattern int } { nbits int } ; LIBRARY: theoradec FUNCTION: c-string th_version_string ( ) ; FUNCTION: uint th_version_number ( ) ; FUNCTION: longlong th_granule_frame ( void* encdec, longlong granpos) ; FUNCTION: int th_packet_isheader ( ogg-packet* op ) ; FUNCTION: int th_packet_iskeyframe ( ogg-packet* op ) ; FUNCTION: void th_info_init ( th-info* info ) ; FUNCTION: void th_info_clear ( th-info* info ) ; FUNCTION: void th_comment_init ( th-comment* tc ) ; FUNCTION: void th_comment_add ( th-comment* tc, c-string comment ) ; FUNCTION: void th_comment_add_tag ( th-comment* tc, c-string tag, c-string value ) ; FUNCTION: c-string th_comment_query ( th-comment* tc, c-string tag, int count ) ; FUNCTION: int th_comment_query_count ( th-comment* tc, c-string tag ) ; FUNCTION: void th_comment_clear ( th-comment* tc ) ; CONSTANT: TH-ENCCTL-SET-HUFFMAN-CODES 0 CONSTANT: TH-ENCCTL-SET-QUANT-PARAMS 2 CONSTANT: TH-ENCCTL-SET-KEYFRAME-FREQUENCY-FORCE 4 CONSTANT: TH-ENCCTL-SET-VP3-COMPATIBLE 10 CONSTANT: TH-ENCCTL-GET-SPLEVEL-MAX 12 CONSTANT: TH-ENCCTL-SET-SPLEVEL 14 CONSTANT: TH-ENCCTL-SET-DUP-COUNT 18 CONSTANT: TH-ENCCTL-SET-RATE-FLAGS 20 CONSTANT: TH-ENCCTL-SET-RATE-BUFFER 22 CONSTANT: TH-ENCCTL-2PASS-OUT 24 CONSTANT: TH-ENCCTL-2PASS-IN 26 CONSTANT: TH-ENCCTL-SET-QUALITY 28 CONSTANT: TH-ENCCTL-SET-BITRATE 30 CONSTANT: TH-RATECTL-DROP-FRAMES 1 CONSTANT: TH-RATECTL-CAP-OVERFLOW 2 CONSTANT: TH-RATECTL-CAP-UNDERFOW 4 TYPEDEF: void* th-enc-ctx LIBRARY: theoraenc FUNCTION: th-enc-ctx* th_encode_alloc ( th-info* info ) ; FUNCTION: int th_encode_ctl ( th-enc-ctx* enc, int req, void* buf, int buf_sz ) ; FUNCTION: int th_encode_flushheader ( th-enc-ctx* enc, th-comment* comments, ogg-packet* op ) ; FUNCTION: int th_encode_ycbcr_in ( th-enc-ctx* enc, th-ycbcr-buffer ycbcr ) ; FUNCTION: int th_encode_packetout ( th-enc-ctx* enc, int last, ogg-packet* op ) ; FUNCTION: void th_encode_free ( th-enc-ctx* enc ) ; CONSTANT: TH-DECCTL-GET-PPLEVEL-MAX 1 CONSTANT: TH-DECCTL-SET-PPLEVEL 3 CONSTANT: TH-DECCTL-SET-GRANPOS 5 CONSTANT: TH-DECCTL-SET-STRIPE-CB 7 CONSTANT: TH-DECCTL-SET-TELEMETRY-MBMODE 9 CONSTANT: TH-DECCTL-SET-TELEMETRY-MV 11 CONSTANT: TH-DECCTL-SET-TELEMETRY-QI 13 CONSTANT: TH-DECCTL-SET-TELEMETRY-BITS 15 TYPEDEF: void* th-stripe-decoded-func STRUCT: th-stripe-callback { ctx void* } { stripe-decoded th-stripe-decoded-func } ; TYPEDEF: void* th-dec-ctx TYPEDEF: void* th-setup-info LIBRARY: theoradec FUNCTION: int th_decode_headerin ( th-info* info, th-comment* tc, th-setup-info** setup, ogg-packet* op ) ; FUNCTION: th-dec-ctx* th_decode_alloc ( th-info* info, th-setup-info* setup ) ; FUNCTION: void th_setup_free ( th-setup-info* setup ) ; FUNCTION: int th_decode_ctl ( th-dec-ctx* dec, int req, void* buf, int buf_sz ) ; FUNCTION: int th_decode_packetin ( th-dec-ctx* dec, ogg-packet* op, longlong granpos ) ; FUNCTION: int th_decode_ycbcr_out ( th-dec-ctx* dec, th-ycbcr-buffer ycbcr ) ; FUNCTION: void th_decode_free ( th-dec-ctx* dec ) ;