tizen 2.4 release accepted/tizen_2.4_mobile tizen_2.4 accepted/tizen/2.4/mobile/20151029.035857 submit/tizen_2.4/20151028.063152 tizen_2.4_mobile_release
authorjk7744.park <jk7744.park@samsung.com>
Sat, 24 Oct 2015 07:09:13 +0000 (16:09 +0900)
committerjk7744.park <jk7744.park@samsung.com>
Sat, 24 Oct 2015 07:09:13 +0000 (16:09 +0900)
157 files changed:
Makefile.am
config.guess
config.sub
debian/README.Debian [deleted file]
debian/changelog [deleted file]
debian/compat [deleted file]
debian/control [deleted file]
debian/copyright [deleted file]
debian/dirs [deleted file]
debian/docs [deleted file]
debian/libtheora-dev.install [deleted file]
debian/libtheora0.install [deleted file]
debian/rules [deleted file]
doc/libtheora/html/annotated.html [new file with mode: 0644]
doc/libtheora/html/classes.html [new file with mode: 0644]
doc/libtheora/html/codec_8h.html [new file with mode: 0644]
doc/libtheora/html/codec_8h_source.html [new file with mode: 0644]
doc/libtheora/html/doxygen.css [new file with mode: 0644]
doc/libtheora/html/doxygen.png [new file with mode: 0644]
doc/libtheora/html/files.html [new file with mode: 0644]
doc/libtheora/html/functions.html [new file with mode: 0644]
doc/libtheora/html/functions_vars.html [new file with mode: 0644]
doc/libtheora/html/globals.html [new file with mode: 0644]
doc/libtheora/html/globals_defs.html [new file with mode: 0644]
doc/libtheora/html/globals_enum.html [new file with mode: 0644]
doc/libtheora/html/globals_eval.html [new file with mode: 0644]
doc/libtheora/html/globals_func.html [new file with mode: 0644]
doc/libtheora/html/globals_type.html [new file with mode: 0644]
doc/libtheora/html/globals_vars.html [new file with mode: 0644]
doc/libtheora/html/group__basefuncs.html [new file with mode: 0644]
doc/libtheora/html/group__decfuncs.html [new file with mode: 0644]
doc/libtheora/html/group__encfuncs.html [new file with mode: 0644]
doc/libtheora/html/group__oldfuncs.html [new file with mode: 0644]
doc/libtheora/html/index.html [new file with mode: 0644]
doc/libtheora/html/modules.html [new file with mode: 0644]
doc/libtheora/html/structth__comment.html [new file with mode: 0644]
doc/libtheora/html/structth__huff__code.html [new file with mode: 0644]
doc/libtheora/html/structth__img__plane.html [new file with mode: 0644]
doc/libtheora/html/structth__info.html [new file with mode: 0644]
doc/libtheora/html/structth__quant__info.html [new file with mode: 0644]
doc/libtheora/html/structth__quant__ranges.html [new file with mode: 0644]
doc/libtheora/html/structth__stripe__callback.html [new file with mode: 0644]
doc/libtheora/html/structtheora__comment.html [new file with mode: 0644]
doc/libtheora/html/structtheora__info.html [new file with mode: 0644]
doc/libtheora/html/structtheora__state.html [new file with mode: 0644]
doc/libtheora/html/structyuv__buffer.html [new file with mode: 0644]
doc/libtheora/html/tab_b.gif [new file with mode: 0644]
doc/libtheora/html/tab_l.gif [new file with mode: 0644]
doc/libtheora/html/tab_r.gif [new file with mode: 0644]
doc/libtheora/html/tabs.css [new file with mode: 0644]
doc/libtheora/html/theora_8h.html [new file with mode: 0644]
doc/libtheora/html/theora_8h_source.html [new file with mode: 0644]
doc/libtheora/html/theoradec_8h.html [new file with mode: 0644]
doc/libtheora/html/theoradec_8h_source.html [new file with mode: 0644]
doc/libtheora/html/theoraenc_8h.html [new file with mode: 0644]
doc/libtheora/html/theoraenc_8h_source.html [new file with mode: 0644]
doc/libtheora/latex/Makefile [new file with mode: 0644]
doc/libtheora/latex/annotated.tex [new file with mode: 0644]
doc/libtheora/latex/codec_8h.tex [new file with mode: 0644]
doc/libtheora/latex/doxygen.sty [new file with mode: 0644]
doc/libtheora/latex/files.tex [new file with mode: 0644]
doc/libtheora/latex/group__basefuncs.tex [new file with mode: 0644]
doc/libtheora/latex/group__decfuncs.tex [new file with mode: 0644]
doc/libtheora/latex/group__encfuncs.tex [new file with mode: 0644]
doc/libtheora/latex/group__oldfuncs.tex [new file with mode: 0644]
doc/libtheora/latex/index.tex [new file with mode: 0644]
doc/libtheora/latex/modules.tex [new file with mode: 0644]
doc/libtheora/latex/refman.tex [new file with mode: 0644]
doc/libtheora/latex/structth__comment.tex [new file with mode: 0644]
doc/libtheora/latex/structth__huff__code.tex [new file with mode: 0644]
doc/libtheora/latex/structth__img__plane.tex [new file with mode: 0644]
doc/libtheora/latex/structth__info.tex [new file with mode: 0644]
doc/libtheora/latex/structth__quant__info.tex [new file with mode: 0644]
doc/libtheora/latex/structth__quant__ranges.tex [new file with mode: 0644]
doc/libtheora/latex/structth__stripe__callback.tex [new file with mode: 0644]
doc/libtheora/latex/structtheora__comment.tex [new file with mode: 0644]
doc/libtheora/latex/structtheora__info.tex [new file with mode: 0644]
doc/libtheora/latex/structtheora__state.tex [new file with mode: 0644]
doc/libtheora/latex/structyuv__buffer.tex [new file with mode: 0644]
doc/libtheora/latex/theora_8h.tex [new file with mode: 0644]
doc/libtheora/latex/theoradec_8h.tex [new file with mode: 0644]
doc/libtheora/latex/theoraenc_8h.tex [new file with mode: 0644]
examples/Makefile.am
examples/getopt.c [new file with mode: 0644]
examples/getopt.h [new file with mode: 0644]
examples/getopt1.c [new file with mode: 0644]
libtheora.manifest [deleted file]
libtheora.spec [new file with mode: 0644]
packaging/baselibs.conf [new file with mode: 0644]
packaging/libtheora.changes [new file with mode: 0644]
packaging/libtheora.manifest [new file with mode: 0644]
packaging/libtheora.spec
win32/VS2005/README [new file with mode: 0644]
win32/VS2005/dump_video/dump_video_dynamic.vcproj [new file with mode: 0644]
win32/VS2005/dump_video/dump_video_static.vcproj [new file with mode: 0644]
win32/VS2005/encoder_example/encoder_example_dynamic.vcproj [new file with mode: 0644]
win32/VS2005/encoder_example/encoder_example_static.vcproj [new file with mode: 0644]
win32/VS2005/libogg.vsprops [new file with mode: 0644]
win32/VS2005/libtheora/libtheora_dynamic.vcproj [new file with mode: 0644]
win32/VS2005/libtheora/libtheora_static.vcproj [new file with mode: 0644]
win32/VS2005/libtheora_dynamic.sln [new file with mode: 0644]
win32/VS2005/libtheora_static.sln [new file with mode: 0644]
win32/VS2005/libvorbis.vsprops [new file with mode: 0644]
win32/VS2008/README [new file with mode: 0644]
win32/VS2008/dump_video/dump_video_dynamic.vcproj [new file with mode: 0644]
win32/VS2008/dump_video/dump_video_static.vcproj [new file with mode: 0644]
win32/VS2008/encoder_example/encoder_example_dynamic.vcproj [new file with mode: 0644]
win32/VS2008/encoder_example/encoder_example_static.vcproj [new file with mode: 0644]
win32/VS2008/libogg.vsprops [new file with mode: 0644]
win32/VS2008/libtheora/libtheora_dynamic.vcproj [new file with mode: 0644]
win32/VS2008/libtheora/libtheora_static.vcproj [new file with mode: 0644]
win32/VS2008/libtheora_dynamic.sln [new file with mode: 0644]
win32/VS2008/libtheora_static.sln [new file with mode: 0644]
win32/VS2008/libvorbis.vsprops [new file with mode: 0644]
win32/build_theora_static.bat [new file with mode: 0755]
win32/build_theora_static_debug.bat [new file with mode: 0755]
win32/experimental/dumpvid/dumpvid.dsp [new file with mode: 0644]
win32/experimental/encoderwin/ReadMe.txt [new file with mode: 0644]
win32/experimental/encoderwin/encoderwin.dsp [new file with mode: 0644]
win32/experimental/transcoder/avi2vp3/avi2vp3.c [new file with mode: 0644]
win32/experimental/transcoder/avi2vp3/avilib.c [new file with mode: 0644]
win32/experimental/transcoder/avi2vp3/avilib.h [new file with mode: 0644]
win32/experimental/transcoder/avi2vp3/outfile.vp3 [new file with mode: 0644]
win32/experimental/transcoder/avi2vp3/vp31.avi [new file with mode: 0644]
win32/experimental/transcoder/readme.txt [new file with mode: 0644]
win32/experimental/transcoder/transcoder.dsp [new file with mode: 0644]
win32/experimental/transcoder/transcoder_example.c [new file with mode: 0644]
win32/experimental/wincompat/README.txt [new file with mode: 0644]
win32/experimental/wincompat/getopt.c [new file with mode: 0644]
win32/experimental/wincompat/getopt.h [new file with mode: 0644]
win32/experimental/wincompat/getopt_long.c [new file with mode: 0644]
win32/experimental/wincompat/unistd.h [new file with mode: 0644]
win32/getopt.c [new file with mode: 0644]
win32/getopt1.c [new file with mode: 0644]
win32/getopt_win.h [new file with mode: 0644]
win32/theora_static.dsp [new file with mode: 0644]
win32/xmingw32/Makefile [new file with mode: 0644]
win32/xmingw32/libtheoradec-all.def [new file with mode: 0644]
win32/xmingw32/libtheoradec-all.rc [new file with mode: 0644]
win32/xmingw32/libtheoradec.rc [new file with mode: 0644]
win32/xmingw32/libtheoradec70.rc [new file with mode: 0644]
win32/xmingw32/libtheoradec70d.rc [new file with mode: 0644]
win32/xmingw32/libtheoradec71.rc [new file with mode: 0644]
win32/xmingw32/libtheoradec71d.rc [new file with mode: 0644]
win32/xmingw32/libtheoradec80.rc [new file with mode: 0644]
win32/xmingw32/libtheoradec80d.rc [new file with mode: 0644]
win32/xmingw32/libtheoradecd.rc [new file with mode: 0644]
win32/xmingw32/libtheoraenc-all.def [new file with mode: 0644]
win32/xmingw32/libtheoraenc-all.rc [new file with mode: 0644]
win32/xmingw32/libtheoraenc.rc [new file with mode: 0644]
win32/xmingw32/libtheoraenc70.rc [new file with mode: 0644]
win32/xmingw32/libtheoraenc70d.rc [new file with mode: 0644]
win32/xmingw32/libtheoraenc71.rc [new file with mode: 0644]
win32/xmingw32/libtheoraenc71d.rc [new file with mode: 0644]
win32/xmingw32/libtheoraenc80.rc [new file with mode: 0644]
win32/xmingw32/libtheoraenc80d.rc [new file with mode: 0644]
win32/xmingw32/libtheoraencd.rc [new file with mode: 0644]

index 5b48188..d833491 100644 (file)
@@ -17,7 +17,7 @@ SUBDIRS = lib include doc tests m4 $(EXAMPLES_DIR)
 # because of it, breaking make dist.  This works just as well.
 EXTRA_DIST = \
        README CHANGES COPYING LICENSE \
-       autogen.sh macosx symbian SConstruct \
+       autogen.sh win32 macosx symbian SConstruct \
        libtheora.spec libtheora.spec.in \
        theora-uninstalled.pc.in
 
index 45bee13..fd30ab0 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+#   2000, 2001, 2002 Free Software Foundation, Inc.
 
-timestamp='2005-04-22'
+timestamp='2002-07-23'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -53,7 +53,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
@@ -98,32 +98,30 @@ trap 'exit 1' 1 2 15
 # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
 # use `HOST_CC' if defined, but it is deprecated.
 
-# Portable tmp directory creation inspired by the Autoconf team.
+# This shell variable is my proudest work .. or something. --bje
 
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ;
+(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old)
+   || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ;
+dummy=$tmpdir/dummy ;
+files="$dummy.c $dummy.o $dummy.rel $dummy" ;
+trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ;
 case $CC_FOR_BUILD,$HOST_CC,$CC in
  ,,)    echo "int x;" > $dummy.c ;
        for c in cc gcc c89 c99 ; do
-         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+         if ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; then
             CC_FOR_BUILD="$c"; break ;
          fi ;
        done ;
+       rm -f $files ;
        if test x"$CC_FOR_BUILD" = x ; then
          CC_FOR_BUILD=no_compiler_found ;
        fi
        ;;
  ,,*)   CC_FOR_BUILD=$CC ;;
  ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ;'
+esac ;
+unset files'
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi@noc.rutgers.edu 1994-08-24)
@@ -180,38 +178,21 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                ;;
        esac
        # The OS release
-       # Debian GNU/NetBSD machines have a different userland, and
-       # thus, need a distinct triplet. However, they do not need
-       # kernel version information, so it can be replaced with a
-       # suitable tag, in the style of linux-gnu.
-       case "${UNAME_VERSION}" in
-           Debian*)
-               release='-gnu'
-               ;;
-           *)
-               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-               ;;
-       esac
+       release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
        # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
        # contains redundant information, the shorter form:
        # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
        echo "${machine}-${os}${release}"
        exit 0 ;;
-    amd64:OpenBSD:*:*)
-       echo x86_64-unknown-openbsd${UNAME_RELEASE}
-       exit 0 ;;
     amiga:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
-    cats:OpenBSD:*:*)
-       echo arm-unknown-openbsd${UNAME_RELEASE}
+    arc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
     hp300:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
-    luna88k:OpenBSD:*:*)
-       echo m88k-unknown-openbsd${UNAME_RELEASE}
-       exit 0 ;;
     mac68k:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
@@ -227,76 +208,86 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     mvmeppc:OpenBSD:*:*)
        echo powerpc-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
+    pmax:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
     sgi:OpenBSD:*:*)
-       echo mips64-unknown-openbsd${UNAME_RELEASE}
+       echo mipseb-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
     sun3:OpenBSD:*:*)
        echo m68k-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
     *:OpenBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
-    *:ekkoBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-       exit 0 ;;
-    macppc:MirBSD:*:*)
-       echo powerppc-unknown-mirbsd${UNAME_RELEASE}
-       exit 0 ;;
-    *:MirBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-       exit 0 ;;
     alpha:OSF1:*:*)
-       case $UNAME_RELEASE in
-       *4.0)
+       if test $UNAME_RELEASE = "V4.0"; then
                UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-               ;;
-       *5.*)
-               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-               ;;
-       esac
-       # According to Compaq, /usr/sbin/psrinfo has been available on
-       # OSF/1 and Tru64 systems produced since 1995.  I hope that
-       # covers most systems running today.  This code pipes the CPU
-       # types through head -n 1, so we only detect the type of CPU 0.
-       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-       case "$ALPHA_CPU_TYPE" in
-           "EV4 (21064)")
-               UNAME_MACHINE="alpha" ;;
-           "EV4.5 (21064)")
-               UNAME_MACHINE="alpha" ;;
-           "LCA4 (21066/21068)")
-               UNAME_MACHINE="alpha" ;;
-           "EV5 (21164)")
-               UNAME_MACHINE="alphaev5" ;;
-           "EV5.6 (21164A)")
-               UNAME_MACHINE="alphaev56" ;;
-           "EV5.6 (21164PC)")
-               UNAME_MACHINE="alphapca56" ;;
-           "EV5.7 (21164PC)")
-               UNAME_MACHINE="alphapca57" ;;
-           "EV6 (21264)")
-               UNAME_MACHINE="alphaev6" ;;
-           "EV6.7 (21264A)")
-               UNAME_MACHINE="alphaev67" ;;
-           "EV6.8CB (21264C)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.8AL (21264B)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.8CX (21264D)")
-               UNAME_MACHINE="alphaev68" ;;
-           "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE="alphaev69" ;;
-           "EV7 (21364)")
-               UNAME_MACHINE="alphaev7" ;;
-           "EV7.9 (21364A)")
-               UNAME_MACHINE="alphaev79" ;;
-       esac
-       # A Pn.n version is a patched version.
+       fi
        # A Vn.n version is a released version.
        # A Tn.n version is a released field test version.
        # A Xn.n version is an unreleased experimental baselevel.
        # 1.2 uses "1.2" for uname -r.
-       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       eval $set_cc_for_build
+       cat <<EOF >$dummy.s
+       .data
+\$Lformat:
+       .byte 37,100,45,37,120,10,0     # "%d-%x\n"
+
+       .text
+       .globl main
+       .align 4
+       .ent main
+main:
+       .frame \$30,16,\$26,0
+       ldgp \$29,0(\$27)
+       .prologue 1
+       .long 0x47e03d80 # implver \$0
+       lda \$2,-1
+       .long 0x47e20c21 # amask \$2,\$1
+       lda \$16,\$Lformat
+       mov \$0,\$17
+       not \$1,\$18
+       jsr \$26,printf
+       ldgp \$29,0(\$26)
+       mov 0,\$16
+       jsr \$26,exit
+       .end main
+EOF
+       $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+       if test "$?" = 0 ; then
+               case `$dummy` in
+                       0-0)
+                               UNAME_MACHINE="alpha"
+                               ;;
+                       1-0)
+                               UNAME_MACHINE="alphaev5"
+                               ;;
+                       1-1)
+                               UNAME_MACHINE="alphaev56"
+                               ;;
+                       1-101)
+                               UNAME_MACHINE="alphapca56"
+                               ;;
+                       2-303)
+                               UNAME_MACHINE="alphaev6"
+                               ;;
+                       2-307)
+                               UNAME_MACHINE="alphaev67"
+                               ;;
+                       2-1307)
+                               UNAME_MACHINE="alphaev68"
+                               ;;
+                       3-1307)
+                               UNAME_MACHINE="alphaev7"
+                               ;;
+               esac
+       fi
+       rm -f $dummy.s $dummy && rmdir $tmpdir
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
        exit 0 ;;
     Alpha\ *:Windows_NT*:*)
        # How do we know it's Interix rather than the generic POSIX subsystem?
@@ -319,12 +310,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:OS/390:*:*)
        echo i370-ibm-openedition
        exit 0 ;;
-    *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit 0 ;;
-    *:OS400:*:*)
-        echo powerpc-ibm-os400
-       exit 0 ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
        echo arm-acorn-riscix${UNAME_RELEASE}
        exit 0;;
@@ -342,10 +327,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     NILE*:*:*:dcosx)
        echo pyramid-pyramid-svr4
        exit 0 ;;
-    DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit 0 ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+    DRS?6000:UNIX_SV:4.2*:7*)
        case `/usr/bin/uname -p` in
            sparc) echo sparc-icl-nx7 && exit 0 ;;
        esac ;;
@@ -417,9 +399,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
         echo m68k-unknown-mint${UNAME_RELEASE}
         exit 0 ;;
-    m68k:machten:*:*)
-       echo m68k-apple-machten${UNAME_RELEASE}
-       exit 0 ;;
     powerpc:machten:*:*)
        echo powerpc-apple-machten${UNAME_RELEASE}
        exit 0 ;;
@@ -458,18 +437,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
          exit (-1);
        }
 EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c \
+       $CC_FOR_BUILD $dummy.c -o $dummy \
          && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
-         && exit 0
+         && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+       rm -f $dummy.c $dummy && rmdir $tmpdir
        echo mips-mips-riscos${UNAME_RELEASE}
        exit 0 ;;
     Motorola:PowerMAX_OS:*:*)
        echo powerpc-motorola-powermax
        exit 0 ;;
-    Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit 0 ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+    Night_Hawk:*:*:PowerMAX_OS)
        echo powerpc-harris-powermax
        exit 0 ;;
     Night_Hawk:Power_UNIX:*:*)
@@ -544,7 +521,8 @@ EOF
                        exit(0);
                        }
 EOF
-               $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+               $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+               rm -f $dummy.c $dummy && rmdir $tmpdir
                echo rs6000-ibm-aix3.2.5
        elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
                echo rs6000-ibm-aix3.2.4
@@ -642,21 +620,11 @@ EOF
                   exit (0);
               }
 EOF
-                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-                   test -z "$HP_ARCH" && HP_ARCH=hppa
+                   (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`$dummy`
+                   if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+                   rm -f $dummy.c $dummy && rmdir $tmpdir
                fi ;;
        esac
-       if [ ${HP_ARCH} = "hppa2.0w" ]
-       then
-           # avoid double evaluation of $set_cc_for_build
-           test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
-           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
-           then
-               HP_ARCH="hppa2.0w"
-           else
-               HP_ARCH="hppa64"
-           fi
-       fi
        echo ${HP_ARCH}-hp-hpux${HPUX_REV}
        exit 0 ;;
     ia64:HP-UX:*:*)
@@ -690,7 +658,8 @@ EOF
          exit (0);
        }
 EOF
-       $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+       $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+       rm -f $dummy.c $dummy && rmdir $tmpdir
        echo unknown-hitachi-hiuxwe2
        exit 0 ;;
     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
@@ -748,26 +717,21 @@ EOF
     CRAY*TS:*:*:*)
        echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit 0 ;;
+    CRAY*T3D:*:*:*)
+       echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
     CRAY*T3E:*:*:*)
        echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit 0 ;;
     CRAY*SV1:*:*:*)
        echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit 0 ;;
-    *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-       exit 0 ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
        FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
         FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
         FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
         echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
         exit 0 ;;
-    5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit 0 ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
        echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
        exit 0 ;;
@@ -778,7 +742,19 @@ EOF
        echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
        exit 0 ;;
     *:FreeBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       # Determine whether the default compiler uses glibc.
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <features.h>
+       #if __GLIBC__ >= 2
+       LIBC=gnu
+       #else
+       LIBC=
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+       rm -f $dummy.c && rmdir $tmpdir
+       echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
        exit 0 ;;
     i*:CYGWIN*:*)
        echo ${UNAME_MACHINE}-pc-cygwin
@@ -789,24 +765,18 @@ EOF
     i*:PW*:*)
        echo ${UNAME_MACHINE}-pc-pw32
        exit 0 ;;
-    x86:Interix*:[34]*)
-       echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
-       exit 0 ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-       echo i${UNAME_MACHINE}-pc-mks
+    x86:Interix*:3*)
+       echo i386-pc-interix3
        exit 0 ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
        # How do we know it's Interix rather than the generic POSIX subsystem?
        # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
        # UNAME_MACHINE based on the output of uname instead of i386?
-       echo i586-pc-interix
+       echo i386-pc-interix
        exit 0 ;;
     i*:UWIN*:*)
        echo ${UNAME_MACHINE}-pc-uwin
        exit 0 ;;
-    amd64:CYGWIN*:*:*)
-       echo x86_64-unknown-cygwin
-       exit 0 ;;
     p*:CYGWIN*:*)
        echo powerpcle-unknown-cygwin
        exit 0 ;;
@@ -814,34 +784,17 @@ EOF
        echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit 0 ;;
     *:GNU:*:*)
-       # the GNU system
        echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
        exit 0 ;;
-    *:GNU/*:*:*)
-       # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
-       exit 0 ;;
     i*86:Minix:*:*)
        echo ${UNAME_MACHINE}-pc-minix
        exit 0 ;;
     arm*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit 0 ;;
-    cris:Linux:*:*)
-       echo cris-axis-linux-gnu
-       exit 0 ;;
-    crisv32:Linux:*:*)
-       echo crisv32-axis-linux-gnu
-       exit 0 ;;
-    frv:Linux:*:*)
-       echo frv-unknown-linux-gnu
-       exit 0 ;;
     ia64:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit 0 ;;
-    m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit 0 ;;
     m68*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit 0 ;;
@@ -862,26 +815,8 @@ EOF
        #endif
 EOF
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-       test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
-       ;;
-    mips64:Linux:*:*)
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #undef CPU
-       #undef mips64
-       #undef mips64el
-       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=mips64el
-       #else
-       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=mips64
-       #else
-       CPU=
-       #endif
-       #endif
-EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
-       test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+       rm -f $dummy.c && rmdir $tmpdir
+       test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
        ;;
     ppc:Linux:*:*)
        echo powerpc-unknown-linux-gnu
@@ -917,9 +852,6 @@ EOF
     s390:Linux:*:* | s390x:Linux:*:*)
        echo ${UNAME_MACHINE}-ibm-linux
        exit 0 ;;
-    sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
-       exit 0 ;;
     sh*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit 0 ;;
@@ -977,11 +909,9 @@ EOF
        LIBC=gnuaout
        #endif
        #endif
-       #ifdef __dietlibc__
-       LIBC=dietlibc
-       #endif
 EOF
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+       rm -f $dummy.c && rmdir $tmpdir
        test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
        test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
        ;;
@@ -999,26 +929,6 @@ EOF
         # Use sysv4.2uw... so that sysv4* matches it.
        echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
        exit 0 ;;
-    i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
-       # is probably installed.
-       echo ${UNAME_MACHINE}-pc-os2-emx
-       exit 0 ;;
-    i*86:XTS-300:*:STOP)
-       echo ${UNAME_MACHINE}-unknown-stop
-       exit 0 ;;
-    i*86:atheos:*:*)
-       echo ${UNAME_MACHINE}-unknown-atheos
-       exit 0 ;;
-       i*86:syllable:*:*)
-       echo ${UNAME_MACHINE}-pc-syllable
-       exit 0 ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-       echo i386-unknown-lynxos${UNAME_RELEASE}
-       exit 0 ;;
-    i*86:*DOS:*:*)
-       echo ${UNAME_MACHINE}-pc-msdosdjgpp
-       exit 0 ;;
     i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
        UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
        if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
@@ -1053,6 +963,9 @@ EOF
                echo ${UNAME_MACHINE}-pc-sysv32
        fi
        exit 0 ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit 0 ;;
     pc:*:*:*)
        # Left here for compatibility:
         # uname -m prints for DJGPP always 'pc', but it prints nothing about
@@ -1076,15 +989,9 @@ EOF
        # "miniframe"
        echo m68010-convergent-sysv
        exit 0 ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit 0 ;;
-    M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit 0 ;;
-    M68*:*:R3V[5678]*:*)
+    M68*:*:R3V[567]*:*)
        test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
        OS_REL=''
        test -r /etc/.relid \
        && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -1101,6 +1008,9 @@ EOF
     mc68030:UNIX_System_V:4.*:*)
        echo m68k-atari-sysv4
        exit 0 ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
     TSUNAMI:LynxOS:2.*:*)
        echo sparc-unknown-lynxos${UNAME_RELEASE}
        exit 0 ;;
@@ -1140,10 +1050,6 @@ EOF
        # From seanf@swdc.stratus.com.
        echo i860-stratus-sysv4
        exit 0 ;;
-    i*86:VOS:*:*)
-       # From Paul.Green@stratus.com.
-       echo ${UNAME_MACHINE}-stratus-vos
-       exit 0 ;;
     *:VOS:*:*)
        # From Paul.Green@stratus.com.
        echo hppa1.1-stratus-vos
@@ -1176,9 +1082,6 @@ EOF
     SX-5:SUPER-UX:*:*)
        echo sx5-nec-superux${UNAME_RELEASE}
        exit 0 ;;
-    SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux${UNAME_RELEASE}
-       exit 0 ;;
     Power*:Rhapsody:*:*)
        echo powerpc-apple-rhapsody${UNAME_RELEASE}
        exit 0 ;;
@@ -1186,12 +1089,7 @@ EOF
        echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
        exit 0 ;;
     *:Darwin:*:*)
-       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       case $UNAME_PROCESSOR in
-           *86) UNAME_PROCESSOR=i686 ;;
-           unknown) UNAME_PROCESSOR=powerpc ;;
-       esac
-       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       echo `uname -p`-apple-darwin${UNAME_RELEASE}
        exit 0 ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
        UNAME_PROCESSOR=`uname -p`
@@ -1204,10 +1102,7 @@ EOF
     *:QNX:*:4*)
        echo i386-pc-qnx
        exit 0 ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk${UNAME_RELEASE}
-       exit 0 ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
+    NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
        echo nsr-tandem-nsk${UNAME_RELEASE}
        exit 0 ;;
     *:NonStop-UX:*:*)
@@ -1230,6 +1125,11 @@ EOF
        fi
        echo ${UNAME_MACHINE}-unknown-plan9
        exit 0 ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit 0 ;;
     *:TOPS-10:*:*)
        echo pdp10-unknown-tops10
        exit 0 ;;
@@ -1248,21 +1148,11 @@ EOF
     *:ITS:*:*)
        echo pdp10-unknown-its
        exit 0 ;;
-    SEI:*:*:SEIUX)
-        echo mips-sei-seiux${UNAME_RELEASE}
-       exit 0 ;;
-    *:DragonFly:*:*)
-       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
        exit 0 ;;
-    *:*VMS:*:*)
-       UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "${UNAME_MACHINE}" in
-           A*) echo alpha-dec-vms && exit 0 ;;
-           I*) echo ia64-dec-vms && exit 0 ;;
-           V*) echo vax-dec-vms && exit 0 ;;
-       esac ;;
-    *:XENIX:*:SysV)
-       echo i386-pc-xenix
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
        exit 0 ;;
 esac
 
@@ -1384,7 +1274,8 @@ main ()
 }
 EOF
 
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+rm -f $dummy.c $dummy && rmdir $tmpdir
 
 # Apollos put the system type in the environment.
 
@@ -1423,9 +1314,7 @@ This script, last modified $timestamp, has failed to recognize
 the operating system you are using. It is advised that you
 download the most up to date version of the config scripts from
 
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
-and
-  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+    ftp://ftp.gnu.org/pub/gnu/config/
 
 If the version you run ($0) is already up to date, please
 send the following data and any information you think might be
index 87a1ee4..9ff085e 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+#   2000, 2001, 2002 Free Software Foundation, Inc.
 
-timestamp='2005-04-22'
+timestamp='2002-07-03'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -70,7 +70,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
@@ -118,8 +118,7 @@ esac
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
-  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+  nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
     ;;
@@ -145,7 +144,7 @@ case $os in
        -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
        -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
        -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray)
+       -apple | -axis)
                os=
                basic_machine=$1
                ;;
@@ -229,47 +228,39 @@ case $basic_machine in
        | a29k \
        | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
        | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-       | am33_2.0 \
        | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
-       | bfin \
        | c4x | clipper \
        | d10v | d30v | dlx | dsp16xx \
        | fr30 | frv \
        | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
        | i370 | i860 | i960 | ia64 \
-       | ip2k | iq2000 \
-       | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
+       | ip2k \
+       | m32r | m68000 | m68k | m88k | mcore \
        | mips | mipsbe | mipseb | mipsel | mipsle \
        | mips16 \
        | mips64 | mips64el \
-       | mips64vr | mips64vrel \
        | mips64orion | mips64orionel \
        | mips64vr4100 | mips64vr4100el \
        | mips64vr4300 | mips64vr4300el \
        | mips64vr5000 | mips64vr5000el \
        | mipsisa32 | mipsisa32el \
-       | mipsisa32r2 | mipsisa32r2el \
        | mipsisa64 | mipsisa64el \
-       | mipsisa64r2 | mipsisa64r2el \
        | mipsisa64sb1 | mipsisa64sb1el \
-       | mipsisa64sr71k | mipsisa64sr71kel \
        | mipstx39 | mipstx39el \
        | mn10200 | mn10300 \
-       | msp430 \
        | ns16k | ns32k \
        | openrisc | or32 \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
        | pyramid \
-       | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+       | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
        | sh64 | sh64le \
-       | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
-       | sparcv8 | sparcv9 | sparcv9b \
+       | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
        | strongarm \
-       | tahoe | thumb | tic4x | tic80 | tron \
+       | tahoe | thumb | tic80 | tron \
        | v850 | v850e \
        | we32k \
-       | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+       | x86 | xscale | xstormy16 | xtensa \
        | z8k)
                basic_machine=$basic_machine-unknown
                ;;
@@ -300,54 +291,45 @@ case $basic_machine in
        | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
        | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
        | avr-* \
-       | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-       | clipper-* | craynv-* | cydra-* \
+       | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c54x-* \
+       | clipper-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
        | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
        | h8300-* | h8500-* \
        | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
        | i*86-* | i860-* | i960-* | ia64-* \
-       | ip2k-* | iq2000-* \
-       | m32r-* | m32rle-* \
+       | ip2k-* \
+       | m32r-* \
        | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* \
+       | m88110-* | m88k-* | mcore-* \
        | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
        | mips16-* \
        | mips64-* | mips64el-* \
-       | mips64vr-* | mips64vrel-* \
        | mips64orion-* | mips64orionel-* \
        | mips64vr4100-* | mips64vr4100el-* \
        | mips64vr4300-* | mips64vr4300el-* \
        | mips64vr5000-* | mips64vr5000el-* \
        | mipsisa32-* | mipsisa32el-* \
-       | mipsisa32r2-* | mipsisa32r2el-* \
        | mipsisa64-* | mipsisa64el-* \
-       | mipsisa64r2-* | mipsisa64r2el-* \
        | mipsisa64sb1-* | mipsisa64sb1el-* \
-       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-       | mipstx39-* | mipstx39el-* \
-       | mmix-* \
-       | msp430-* \
+       | mipstx39 | mipstx39el \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
        | pyramid-* \
        | romp-* | rs6000-* \
-       | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+       | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \
        | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-       | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
-       | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
-       | tahoe-* | thumb-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tron-* \
+       | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+       | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+       | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
        | v850-* | v850e-* | vax-* \
        | we32k-* \
-       | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
-       | xstormy16-* | xtensa-* \
+       | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+       | xtensa-* \
        | ymp-* \
        | z8k-*)
                ;;
@@ -367,9 +349,6 @@ case $basic_machine in
                basic_machine=a29k-amd
                os=-udi
                ;;
-       abacus)
-               basic_machine=abacus-unknown
-               ;;
        adobe68k)
                basic_machine=m68010-adobe
                os=-scout
@@ -384,12 +363,6 @@ case $basic_machine in
                basic_machine=a29k-none
                os=-bsd
                ;;
-       amd64)
-               basic_machine=x86_64-pc
-               ;;
-       amd64-*)
-               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
        amdahl)
                basic_machine=580-amdahl
                os=-sysv
@@ -449,27 +422,12 @@ case $basic_machine in
                basic_machine=j90-cray
                os=-unicos
                ;;
-       craynv)
-               basic_machine=craynv-cray
-               os=-unicosmp
-               ;;
-       cr16c)
-               basic_machine=cr16c-unknown
-               os=-elf
-               ;;
        crds | unos)
                basic_machine=m68k-crds
                ;;
-       crisv32 | crisv32-* | etraxfs*)
-               basic_machine=crisv32-axis
-               ;;
        cris | cris-* | etrax*)
                basic_machine=cris-axis
                ;;
-       crx)
-               basic_machine=crx-unknown
-               os=-elf
-               ;;
        da30 | da30-*)
                basic_machine=m68k-da30
                ;;
@@ -492,10 +450,6 @@ case $basic_machine in
                basic_machine=m88k-motorola
                os=-sysv3
                ;;
-       djgpp)
-               basic_machine=i586-pc
-               os=-msdosdjgpp
-               ;;
        dpx20 | dpx20-*)
                basic_machine=rs6000-bull
                os=-bosx
@@ -674,6 +628,10 @@ case $basic_machine in
        mips3*)
                basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
                ;;
+       mmix*)
+               basic_machine=mmix-knuth
+               os=-mmixware
+               ;;
        monitor)
                basic_machine=m68k-rom68k
                os=-coff
@@ -765,10 +723,6 @@ case $basic_machine in
                basic_machine=or32-unknown
                os=-coff
                ;;
-       os400)
-               basic_machine=powerpc-ibm
-               os=-os400
-               ;;
        OSE68000 | ose68000)
                basic_machine=m68000-ericsson
                os=-ose
@@ -791,55 +745,49 @@ case $basic_machine in
        pbb)
                basic_machine=m68k-tti
                ;;
-       pc532 | pc532-*)
+        pc532 | pc532-*)
                basic_machine=ns32k-pc532
                ;;
        pentium | p5 | k5 | k6 | nexgen | viac3)
                basic_machine=i586-pc
                ;;
-       pentiumpro | p6 | 6x86 | athlon | athlon_*)
+       pentiumpro | p6 | 6x86 | athlon)
                basic_machine=i686-pc
                ;;
-       pentiumii | pentium2 | pentiumiii | pentium3)
+       pentiumii | pentium2)
                basic_machine=i686-pc
                ;;
-       pentium4)
-               basic_machine=i786-pc
-               ;;
        pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
                basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        pentiumpro-* | p6-* | 6x86-* | athlon-*)
                basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+       pentiumii-* | pentium2-*)
                basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
-       pentium4-*)
-               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
        pn)
                basic_machine=pn-gould
                ;;
        power)  basic_machine=power-ibm
                ;;
        ppc)    basic_machine=powerpc-unknown
-               ;;
+               ;;
        ppc-*)  basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        ppcle | powerpclittle | ppc-le | powerpc-little)
                basic_machine=powerpcle-unknown
-               ;;
+               ;;
        ppcle-* | powerpclittle-*)
                basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        ppc64)  basic_machine=powerpc64-unknown
-               ;;
+               ;;
        ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
        ppc64le | powerpc64little | ppc64-le | powerpc64-little)
                basic_machine=powerpc64le-unknown
-               ;;
+               ;;
        ppc64le-* | powerpc64little-*)
                basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
@@ -870,16 +818,6 @@ case $basic_machine in
                basic_machine=a29k-amd
                os=-udi
                ;;
-       sb1)
-               basic_machine=mipsisa64sb1-unknown
-               ;;
-       sb1el)
-               basic_machine=mipsisa64sb1el-unknown
-               ;;
-       sei)
-               basic_machine=mips-sei
-               os=-seiux
-               ;;
        sequent)
                basic_machine=i386-sequent
                ;;
@@ -887,9 +825,6 @@ case $basic_machine in
                basic_machine=sh-hitachi
                os=-hms
                ;;
-       sh64)
-               basic_machine=sh64-unknown
-               ;;
        sparclite-wrs | simso-wrs)
                basic_machine=sparclite-wrs
                os=-vxworks
@@ -948,7 +883,7 @@ case $basic_machine in
        sun386 | sun386i | roadrunner)
                basic_machine=i386-sun
                ;;
-       sv1)
+        sv1)
                basic_machine=sv1-cray
                os=-unicos
                ;;
@@ -956,6 +891,10 @@ case $basic_machine in
                basic_machine=i386-sequent
                os=-dynix
                ;;
+       t3d)
+               basic_machine=alpha-cray
+               os=-unicos
+               ;;
        t3e)
                basic_machine=alphaev5-cray
                os=-unicos
@@ -968,14 +907,6 @@ case $basic_machine in
                basic_machine=tic54x-unknown
                os=-coff
                ;;
-       tic55x | c55x*)
-               basic_machine=tic55x-unknown
-               os=-coff
-               ;;
-       tic6x | c6x*)
-               basic_machine=tic6x-unknown
-               os=-coff
-               ;;
        tx39)
                basic_machine=mipstx39-unknown
                ;;
@@ -989,10 +920,6 @@ case $basic_machine in
        tower | tower-32)
                basic_machine=m68k-ncr
                ;;
-       tpf)
-               basic_machine=s390x-ibm
-               os=-tpf
-               ;;
        udi29k)
                basic_machine=a29k-amd
                os=-udi
@@ -1014,8 +941,8 @@ case $basic_machine in
                os=-vms
                ;;
        vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
-               ;;
+               basic_machine=f301-fujitsu
+               ;;
        vxworks960)
                basic_machine=i960-wrs
                os=-vxworks
@@ -1036,11 +963,11 @@ case $basic_machine in
                basic_machine=hppa1.1-winbond
                os=-proelf
                ;;
-       xbox)
-               basic_machine=i686-pc
-               os=-mingw32
+       windows32)
+               basic_machine=i386-pc
+               os=-windows32-msvcrt
                ;;
-       xps | xps100)
+        xps | xps100)
                basic_machine=xps100-honeywell
                ;;
        ymp)
@@ -1070,9 +997,6 @@ case $basic_machine in
        romp)
                basic_machine=romp-ibm
                ;;
-       mmix)
-               basic_machine=mmix-knuth
-               ;;
        rs6000)
                basic_machine=rs6000-ibm
                ;;
@@ -1089,16 +1013,16 @@ case $basic_machine in
        we32k)
                basic_machine=we32k-att
                ;;
-       sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+       sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele)
                basic_machine=sh-unknown
                ;;
        sh64)
                basic_machine=sh64-unknown
                ;;
-       sparc | sparcv8 | sparcv9 | sparcv9b)
+       sparc | sparcv9 | sparcv9b)
                basic_machine=sparc-sun
                ;;
-       cydra)
+        cydra)
                basic_machine=cydra-cydrome
                ;;
        orion)
@@ -1113,6 +1037,10 @@ case $basic_machine in
        pmac | pmac-mpw)
                basic_machine=powerpc-apple
                ;;
+       c4x*)
+               basic_machine=c4x-none
+               os=-coff
+               ;;
        *-unknown)
                # Make sure to match an already-canonicalized machine name.
                ;;
@@ -1168,20 +1096,18 @@ case $os in
              | -aos* \
              | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
-             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+             | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -chorusos* | -chorusrdb* \
              | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
-             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+             | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
              | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
+             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1193,10 +1119,8 @@ case $os in
                        ;;
                esac
                ;;
-       -nto-qnx*)
-               ;;
        -nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+               os=-nto-qnx
                ;;
        -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
              | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
@@ -1205,9 +1129,6 @@ case $os in
        -mac*)
                os=`echo $os | sed -e 's|mac|macos|'`
                ;;
-       -linux-dietlibc)
-               os=-linux-dietlibc
-               ;;
        -linux*)
                os=`echo $os | sed -e 's|linux|linux-gnu|'`
                ;;
@@ -1220,9 +1141,6 @@ case $os in
        -opened*)
                os=-openedition
                ;;
-        -os400*)
-               os=-os400
-               ;;
        -wince*)
                os=-wince
                ;;
@@ -1244,9 +1162,6 @@ case $os in
        -atheos*)
                os=-atheos
                ;;
-       -syllable*)
-               os=-syllable
-               ;;
        -386bsd)
                os=-bsd
                ;;
@@ -1257,7 +1172,7 @@ case $os in
                os=-rtmk-nova
                ;;
        -ns2 )
-               os=-nextstep2
+               os=-nextstep2
                ;;
        -nsk*)
                os=-nsk
@@ -1269,9 +1184,6 @@ case $os in
        -sinix*)
                os=-sysv4
                ;;
-        -tpf*)
-               os=-tpf
-               ;;
        -triton*)
                os=-sysv3
                ;;
@@ -1299,17 +1211,8 @@ case $os in
        -xenix)
                os=-xenix
                ;;
-       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-               os=-mint
-               ;;
-       -aros*)
-               os=-aros
-               ;;
-       -kaos*)
-               os=-kaos
-               ;;
-       -zvmoe)
-               os=-zvmoe
+        -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
                ;;
        -none)
                ;;
@@ -1342,14 +1245,11 @@ case $basic_machine in
        arm*-semi)
                os=-aout
                ;;
-    c4x-* | tic4x-*)
-        os=-coff
-        ;;
        # This must come before the *-dec entry.
        pdp10-*)
                os=-tops20
                ;;
-       pdp11-*)
+        pdp11-*)
                os=-none
                ;;
        *-dec | vax-*)
@@ -1391,9 +1291,6 @@ case $basic_machine in
        *-ibm)
                os=-aix
                ;;
-       *-knuth)
-               os=-mmixware
-               ;;
        *-wec)
                os=-proelf
                ;;
@@ -1445,19 +1342,19 @@ case $basic_machine in
        *-next)
                os=-nextstep3
                ;;
-       *-gould)
+        *-gould)
                os=-sysv
                ;;
-       *-highlevel)
+        *-highlevel)
                os=-bsd
                ;;
        *-encore)
                os=-bsd
                ;;
-       *-sgi)
+        *-sgi)
                os=-irix
                ;;
-       *-siemens)
+        *-siemens)
                os=-sysv4
                ;;
        *-masscomp)
@@ -1526,15 +1423,9 @@ case $basic_machine in
                        -mvs* | -opened*)
                                vendor=ibm
                                ;;
-                       -os400*)
-                               vendor=ibm
-                               ;;
                        -ptx*)
                                vendor=sequent
                                ;;
-                       -tpf*)
-                               vendor=ibm
-                               ;;
                        -vxsim* | -vxworks* | -windiss*)
                                vendor=wrs
                                ;;
diff --git a/debian/README.Debian b/debian/README.Debian
deleted file mode 100644 (file)
index d272617..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-libtheora for Debian
---------------------
-
-<possible notes regarding this package - if none, delete this file>
-
- -- unknown <seungbae.shin>  Fri, 12 Mar 2010 17:27:39 +0900
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644 (file)
index a257e27..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-libtheora (1.1.1-1slp4) unstable; urgency=low
-
-  * Fix build break by adding png library dependancy
-  * Git : 165.213.180.234:slp/unmodified/libtheora
-  * Tag : libtheora_1.1.1-1slp4
-
- -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 01 Dec 2011 20:43:22 +0900
-
-libtheora (1.1.1-1slp3) unstable; urgency=low
-
-  * Add dbg-package, fPIC, hash-style
-  * Git : 165.213.180.234:/git/slp/unmodified/libtheora
-  * Tag : libtheora_1.1.1-1slp3
-
- -- Seungbae Shin <seungbae.shin@samsung.com>  Fri, 19 Nov 2010 11:51:03 +0900
-
-libtheora (1.1.1-1slp2) unstable; urgency=low
-
-  * Change package naming rule
-
- -- Seungbae Shin <seungbae.shin@samsung.com>  Thu, 25 Mar 2010 14:18:41 +0900
-
-libtheora (1.1.1-1) unstable; urgency=low
-
-  * Initial upload
-
- -- Seungbae Shin <seungbae.shin@samsung.com>  Fri, 12 Mar 2010 17:27:39 +0900
-
diff --git a/debian/compat b/debian/compat
deleted file mode 100644 (file)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/debian/control b/debian/control
deleted file mode 100644 (file)
index 8a7230a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-Source: libtheora
-Section: libs
-Priority: optional
-Maintainer: Seungbae Shin <seungbae.shin@samsung.com>
-Build-Depends: autotools-dev, cdbs (>= 0.4.27-3), debhelper (>> 4.0.0), devscripts, doxygen, libogg-dev (>= 1.1.0), libvorbis-dev, python, libtool, automake, quilt, libpng12-dev
-Standards-Version: 3.7.2
-
-Package: libtheora0
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}
-Description: The Theora Video Compression Codec
- Theora is an open video codec being developed by the Xiph.org
- Foundation as part of their Ogg project (It is a project that aims to
- integrate On2's VP3 video codec, Ogg Vorbis audio codec and Ogg
- multimedia container formats into a multimedia solution that can
- compete with MPEG-4 format).  Theora is derived directly from On2's
- VP3 codec; currently the two are nearly identical, varying only in
- framing headers, but Theora will diverge and improve from the main
- VP3 development lineage as time progresses.
-
-Package: libtheora-dev
-Architecture: any
-Section: libdevel
-Depends: libtheora0 (= ${binary:Version}), libogg-dev
-Description: The Theora Video Compression Codec (development files)
- Theora is a fully open, non-proprietary, patent-and-royalty-free,
- general-purpose compressed video format.
- .
- This package contains the header files and documentation needed to develop
- applications with libtheora.
-
-Package: libtheora-dbg
-Section: debug
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, libtheora0 (= ${Source-Version})
-Description: The Theora Video Compression Codec (unstripped)
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644 (file)
index f2ae220..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-This package was debianized by unknown <seungbae.shin> on
-Fri, 12 Mar 2010 17:27:39 +0900.
-
-It was downloaded from <fill in http/ftp site>
-
-Upstream Author: <put author(s) name and email here>
-
-Copyright: <put the year(s) of the copyright, and the names of the
-            copyright holder(s) here>
-
-License:
-
-<Put the license of the package here>
-
-
-The Debian packaging is (C) 2010, unknown <seungbae.shin> and
-is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
-
-
-# Please also look if there are files or directories which have a
-# different copyright/license attached and list them here.
-
diff --git a/debian/dirs b/debian/dirs
deleted file mode 100644 (file)
index ca882bb..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/bin
-usr/sbin
diff --git a/debian/docs b/debian/docs
deleted file mode 100644 (file)
index e845566..0000000
+++ /dev/null
@@ -1 +0,0 @@
-README
diff --git a/debian/libtheora-dev.install b/debian/libtheora-dev.install
deleted file mode 100644 (file)
index 09c716d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-usr/include/theora/*
-usr/lib/*.a
-usr/lib/*.la
-usr/lib/pkgconfig/*.pc
-usr/share/doc/libtheora-1.1.1/html/*
diff --git a/debian/libtheora0.install b/debian/libtheora0.install
deleted file mode 100644 (file)
index c497a89..0000000
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib/libtheora*.so*
diff --git a/debian/rules b/debian/rules
deleted file mode 100755 (executable)
index f2e48e0..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/usr/bin/make -f
-# -*- makefile -*-
-# Sample debian/rules that uses debhelper.
-# This file was originally written by Joey Hess and Craig Small.
-# As a special exception, when this file is copied by dh-make into a
-# dh-make output file, you may use that output file without restriction.
-# This special exception was added by Craig Small in version 0.37 of dh-make.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-
-# These are used for cross-compiling and for saving the configure script
-# from having to guess our platform (since we know it already)
-DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-
-CFLAGS ?= -Wall -g -fPIC
-LDFLAGS ?= 
-PREFIX ?= /usr
-DATADIR ?= /opt
-
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-       CFLAGS += -O0
-else
-       CFLAGS += -O2
-endif
-
-LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--hash-style=both -Wl,--as-needed
-
-config.status: configure
-       dh_testdir
-       # Add here commands to configure the package.
-       CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure --prefix=$(PREFIX) 
-
-build: build-stamp
-
-build-stamp:  config.status
-       dh_testdir
-
-       # Add here commands to compile the package.
-       $(MAKE)
-       #docbook-to-man debian/iniparser.sgml > iniparser.1
-
-       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
-               cat $$f > $${f%.in}; \
-               sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
-               sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
-       done
-
-       touch $@
-
-clean:
-       dh_testdir
-       dh_testroot
-       rm -f build-stamp 
-
-       # Add here commands to clean up after the build process.
-       -$(MAKE) distclean
-ifneq "$(wildcard /usr/share/misc/config.sub)" ""
-       cp -f /usr/share/misc/config.sub config.sub
-endif
-ifneq "$(wildcard /usr/share/misc/config.guess)" ""
-       cp -f /usr/share/misc/config.guess config.guess
-endif
-
-       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
-               rm -f $${f%.in}; \
-       done
-
-       dh_clean 
-
-install: build
-       dh_testdir
-       dh_testroot
-       dh_clean -k 
-       dh_installdirs
-
-       # Add here commands to install the package into debian/iniparser.
-       $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
-       dh_testdir
-       dh_testroot
-       dh_installchangelogs 
-       dh_installdocs
-       dh_installexamples
-       dh_install --sourcedir=debian/tmp
-#      dh_installmenu
-#      dh_installdebconf       
-#      dh_installlogrotate
-#      dh_installemacsen
-#      dh_installpam
-#      dh_installmime
-#      dh_python
-#      dh_installinit
-#      dh_installcron
-#      dh_installinfo
-       dh_installman
-       dh_link
-       dh_strip --dbg-package=libtheora-dbg
-       dh_compress
-       dh_fixperms
-#      dh_perl
-       dh_makeshlibs
-       dh_installdeb
-       dh_shlibdeps
-       dh_gencontrol
-       dh_md5sums
-       dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install 
diff --git a/doc/libtheora/html/annotated.html b/doc/libtheora/html/annotated.html
new file mode 100644 (file)
index 0000000..3804f95
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Structures</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Data Structures</h1>Here are the data structures with brief descriptions:<table>
+  <tr><td class="indexkey"><a class="el" href="structth__comment.html">th_comment</a></td><td class="indexvalue">The comment information </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structth__huff__code.html">th_huff_code</a></td><td class="indexvalue">A Huffman code for a Theora DCT token </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structth__img__plane.html">th_img_plane</a></td><td class="indexvalue">A buffer for a single color plane in an uncompressed image </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structth__info.html">th_info</a></td><td class="indexvalue">Theora bitstream information </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structth__quant__info.html">th_quant_info</a></td><td class="indexvalue">A complete set of quantization parameters </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a></td><td class="indexvalue">A set of <em>qi</em> ranges </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structth__stripe__callback.html">th_stripe_callback</a></td><td class="indexvalue">The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a> </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structtheora__comment.html">theora_comment</a></td><td class="indexvalue">Comment header metadata </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structtheora__info.html">theora_info</a></td><td class="indexvalue">Theora bitstream info </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structtheora__state.html">theora_state</a></td><td class="indexvalue">Codec internal state and context </td></tr>
+  <tr><td class="indexkey"><a class="el" href="structyuv__buffer.html">yuv_buffer</a></td><td class="indexvalue">A YUV buffer for passing uncompressed frames to and from the codec </td></tr>
+</table>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/classes.html b/doc/libtheora/html/classes.html
new file mode 100644 (file)
index 0000000..cf3768c
--- /dev/null
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Alphabetical List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Data Structure Index</h1><div class="qindex"><a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Y">Y</a></div>
+<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;T&nbsp;&nbsp;</div></td></tr></table>
+</td><td><a class="el" href="structth__img__plane.html">th_img_plane</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structtheora__info.html">theora_info</a>&nbsp;&nbsp;&nbsp;</td><td><a name="letter_Y"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;Y&nbsp;&nbsp;</div></td></tr></table>
+</td></tr><tr><td><a class="el" href="structth__comment.html">th_comment</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__info.html">th_info</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__stripe__callback.html">th_stripe_callback</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structtheora__state.html">theora_state</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structyuv__buffer.html">yuv_buffer</a>&nbsp;&nbsp;&nbsp;</td></tr><tr><td><a class="el" href="structth__huff__code.html">th_huff_code</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structth__quant__info.html">th_quant_info</a>&nbsp;&nbsp;&nbsp;</td><td><a class="el" href="structtheora__comment.html">theora_comment</a>&nbsp;&nbsp;&nbsp;</td></tr></table><div class="qindex"><a class="qindex" href="#letter_T">T</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_Y">Y</a></div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/codec_8h.html b/doc/libtheora/html/codec_8h.html
new file mode 100644 (file)
index 0000000..ca85eb4
--- /dev/null
@@ -0,0 +1,411 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: codec.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>codec.h File Reference</h1>
+<p>The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API.  
+<a href="#_details">More...</a></p>
+<code>#include &lt;ogg/ogg.h&gt;</code><br/>
+
+<p><a href="codec_8h_source.html">Go to the source code of this file.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html">th_img_plane</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A buffer for a single color plane in an uncompressed image.  <a href="structth__img__plane.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html">th_info</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Theora bitstream information.  <a href="structth__info.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html">th_comment</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The comment information.  <a href="structth__comment.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A set of <em>qi</em> ranges.  <a href="structth__quant__ranges.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html">th_quant_info</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A complete set of quantization parameters.  <a href="structth__quant__info.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html">th_huff_code</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A Huffman code for a Theora DCT token.  <a href="structth__huff__code.html#_details">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">_O_THEORA_CODEC_H_</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">TH_NHUFFMAN_TABLES</a>&nbsp;&nbsp;&nbsp;(80)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of Huffman tables used by Theora.  <a href="#a49bf449eae33c5320f0c308f32c6ae42"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">TH_NDCT_TOKENS</a>&nbsp;&nbsp;&nbsp;(32)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of DCT token values in each table.  <a href="#a2a44f48084e76a58cae48fb5d47cd422"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Return codes</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp800007e5fae550658ee577ca16693452"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">TH_EFAULT</a>&nbsp;&nbsp;&nbsp;(-1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An invalid pointer was provided.  <a href="#a4d8d8e34fc5ec39ffa05d61a310a0407"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">TH_EINVAL</a>&nbsp;&nbsp;&nbsp;(-10)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An invalid argument was provided.  <a href="#afbbd9f19fbf292aeb62a37792cecb870"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">TH_EBADHEADER</a>&nbsp;&nbsp;&nbsp;(-20)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The contents of the header were incomplete, invalid, or unexpected.  <a href="#af00f7ecc5242d12a717202537324a510"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">TH_ENOTFORMAT</a>&nbsp;&nbsp;&nbsp;(-21)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The header does not belong to a Theora stream.  <a href="#a3dc08a00a9aba231be398f3e31726d9c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">TH_EVERSION</a>&nbsp;&nbsp;&nbsp;(-22)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The bitstream version is too high.  <a href="#ac3a45ef2b24f75259258edc481e3a122"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">TH_EIMPL</a>&nbsp;&nbsp;&nbsp;(-23)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The specified function is not implemented.  <a href="#a921c47accc17841f220af5a6afb79efe"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">TH_EBADPACKET</a>&nbsp;&nbsp;&nbsp;(-24)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">There were errors in the video data packet.  <a href="#a6efb84e9c2213a8840003eee2847b27f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">TH_DUPFRAME</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The decoded packet represented a dropped frame.  <a href="#ab10e7b64f17a02707fc9348ea9832d09"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structth__img__plane.html">th_img_plane</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> [3]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A complete image buffer for an uncompressed frame.  <a href="#a343f7cfabad179cc4fe527cf06873f45"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a> [64]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A single base matrix.  <a href="#a6a1426d16beef8a311d7f0e9d2e96326"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a> { <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">TH_CS_UNSPECIFIED</a>, 
+<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">TH_CS_ITU_REC_470M</a>, 
+<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">TH_CS_ITU_REC_470BG</a>, 
+<a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">TH_CS_NSPACES</a>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>The currently defined color space tags. </p>
+ <a href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a> { <br/>
+&nbsp;&nbsp;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">TH_PF_420</a>, 
+<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">TH_PF_RSVD</a>, 
+<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">TH_PF_422</a>, 
+<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">TH_PF_444</a>, 
+<br/>
+&nbsp;&nbsp;<a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">TH_PF_NFORMATS</a>
+<br/>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>The currently defined pixel format tags. </p>
+ <a href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Basic shared functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpb625c22fa07613c734f71c378fe32d7a"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">th_version_string</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves a human-readable string to identify the library vendor and version.  <a href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">th_version_number</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the library version number.  <a href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">th_granule_frame</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute frame index, starting at <code>0</code>.  <a href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">th_granule_time</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute time in seconds.  <a href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">th_packet_isheader</a> (ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a Theora packet is a header or not.  <a href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">th_packet_iskeyframe</a> (ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a theora packet is a key frame or not.  <a href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions for manipulating header data</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp14ef5f819e97c870c128539ed1f334e3"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">th_info_init</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure.  <a href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">th_info_clear</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure.  <a href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">th_comment_init</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">th_comment_add</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_comment)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">th_comment_add_tag</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, char *_val)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">th_comment_query</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, int _count)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by its tag.  <a href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">th_comment_query_count</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag.  <a href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">th_comment_clear</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API. </p>
+<p>You don't need to include this directly. </p>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a15352a6a862d25ab00a8f06ea65ee75b"></a><!-- doxytag: member="codec.h::_O_THEORA_CODEC_H_" ref="a15352a6a862d25ab00a8f06ea65ee75b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _O_THEORA_CODEC_H_&nbsp;&nbsp;&nbsp;(1)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab10e7b64f17a02707fc9348ea9832d09"></a><!-- doxytag: member="codec.h::TH_DUPFRAME" ref="ab10e7b64f17a02707fc9348ea9832d09" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DUPFRAME&nbsp;&nbsp;&nbsp;(1)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The decoded packet represented a dropped frame. </p>
+<p>The player can continue to display the current frame, as the contents of the decoded frame buffer have not changed. </p>
+
+</div>
+</div>
+<a class="anchor" id="af00f7ecc5242d12a717202537324a510"></a><!-- doxytag: member="codec.h::TH_EBADHEADER" ref="af00f7ecc5242d12a717202537324a510" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_EBADHEADER&nbsp;&nbsp;&nbsp;(-20)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The contents of the header were incomplete, invalid, or unexpected. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6efb84e9c2213a8840003eee2847b27f"></a><!-- doxytag: member="codec.h::TH_EBADPACKET" ref="a6efb84e9c2213a8840003eee2847b27f" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_EBADPACKET&nbsp;&nbsp;&nbsp;(-24)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>There were errors in the video data packet. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4d8d8e34fc5ec39ffa05d61a310a0407"></a><!-- doxytag: member="codec.h::TH_EFAULT" ref="a4d8d8e34fc5ec39ffa05d61a310a0407" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_EFAULT&nbsp;&nbsp;&nbsp;(-1)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>An invalid pointer was provided. </p>
+
+</div>
+</div>
+<a class="anchor" id="a921c47accc17841f220af5a6afb79efe"></a><!-- doxytag: member="codec.h::TH_EIMPL" ref="a921c47accc17841f220af5a6afb79efe" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_EIMPL&nbsp;&nbsp;&nbsp;(-23)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The specified function is not implemented. </p>
+
+</div>
+</div>
+<a class="anchor" id="afbbd9f19fbf292aeb62a37792cecb870"></a><!-- doxytag: member="codec.h::TH_EINVAL" ref="afbbd9f19fbf292aeb62a37792cecb870" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_EINVAL&nbsp;&nbsp;&nbsp;(-10)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>An invalid argument was provided. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3dc08a00a9aba231be398f3e31726d9c"></a><!-- doxytag: member="codec.h::TH_ENOTFORMAT" ref="a3dc08a00a9aba231be398f3e31726d9c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENOTFORMAT&nbsp;&nbsp;&nbsp;(-21)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The header does not belong to a Theora stream. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac3a45ef2b24f75259258edc481e3a122"></a><!-- doxytag: member="codec.h::TH_EVERSION" ref="ac3a45ef2b24f75259258edc481e3a122" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_EVERSION&nbsp;&nbsp;&nbsp;(-22)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The bitstream version is too high. </p>
+
+</div>
+</div>
+<a class="anchor" id="a2a44f48084e76a58cae48fb5d47cd422"></a><!-- doxytag: member="codec.h::TH_NDCT_TOKENS" ref="a2a44f48084e76a58cae48fb5d47cd422" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_NDCT_TOKENS&nbsp;&nbsp;&nbsp;(32)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The number of DCT token values in each table. </p>
+
+</div>
+</div>
+<a class="anchor" id="a49bf449eae33c5320f0c308f32c6ae42"></a><!-- doxytag: member="codec.h::TH_NHUFFMAN_TABLES" ref="a49bf449eae33c5320f0c308f32c6ae42" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_NHUFFMAN_TABLES&nbsp;&nbsp;&nbsp;(80)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The number of Huffman tables used by Theora. </p>
+
+</div>
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="a6a1426d16beef8a311d7f0e9d2e96326"></a><!-- doxytag: member="codec.h::th_quant_base" ref="a6a1426d16beef8a311d7f0e9d2e96326" args="[64]" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef unsigned char <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a>[64]</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>A single base matrix. </p>
+
+</div>
+</div>
+<a class="anchor" id="a343f7cfabad179cc4fe527cf06873f45"></a><!-- doxytag: member="codec.h::th_ycbcr_buffer" ref="a343f7cfabad179cc4fe527cf06873f45" args="[3]" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="structth__img__plane.html">th_img_plane</a> <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>[3]</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>A complete image buffer for an uncompressed frame. </p>
+<p>The chroma planes may be decimated by a factor of two in either direction, as indicated by <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e" title="The pixel format.">th_info::pixel_fmt</a>. The width and height of the Y' plane must be multiples of 16. They may need to be cropped for display, using the rectangle specified by <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f" title="The X offset of the displayed picture.">th_info::pic_x</a>, <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">th_info::pic_y</a>, <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">th_info::pic_width</a>, and <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">th_info::pic_height</a>. All samples are 8 bits. </p>
+<dl class="note"><dt><b>Note:</b></dt><dd>The term YUV often used to describe a colorspace is ambiguous. The exact parameters of the RGB to YUV conversion process aside, in many contexts the U and V channels actually have opposite meanings. To avoid this confusion, we are explicit: the name of the color channels are Y'CbCr, and they appear in that order, always. The prime symbol denotes that the Y channel is non-linear. Cb and Cr stand for "Chroma blue" and "Chroma red", respectively. </dd></dl>
+
+</div>
+</div>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0"></a><!-- doxytag: member="codec.h::th_colorspace" ref="a4ce7a695ce353b1582d29b6c1ddf31a0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The currently defined color space tags. </p>
+<p>See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Chapter 4, for exact details on the meaning of each of these color spaces. </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf"></a><!-- doxytag: member="TH_CS_UNSPECIFIED" ref="a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf" args="" -->TH_CS_UNSPECIFIED</em>&nbsp;</td><td>
+<p>The color space was not specified at the encoder. </p>
+<p>It may be conveyed by an external means. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397"></a><!-- doxytag: member="TH_CS_ITU_REC_470M" ref="a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397" args="" -->TH_CS_ITU_REC_470M</em>&nbsp;</td><td>
+<p>A color space designed for NTSC content. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe"></a><!-- doxytag: member="TH_CS_ITU_REC_470BG" ref="a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe" args="" -->TH_CS_ITU_REC_470BG</em>&nbsp;</td><td>
+<p>A color space designed for PAL/SECAM content. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e"></a><!-- doxytag: member="TH_CS_NSPACES" ref="a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e" args="" -->TH_CS_NSPACES</em>&nbsp;</td><td>
+<p>The total number of currently defined color spaces. </p>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bc"></a><!-- doxytag: member="codec.h::th_pixel_fmt" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bc" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The currently defined pixel format tags. </p>
+<p>See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 4.4, for details on the precise sample locations. </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162"></a><!-- doxytag: member="TH_PF_420" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162" args="" -->TH_PF_420</em>&nbsp;</td><td>
+<p>Chroma decimation by 2 in both the X and Y directions (4:2:0). </p>
+<p>The Cb and Cr chroma planes are half the width and half the height of the luma plane. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6"></a><!-- doxytag: member="TH_PF_RSVD" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6" args="" -->TH_PF_RSVD</em>&nbsp;</td><td>
+<p>Currently reserved. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa"></a><!-- doxytag: member="TH_PF_422" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa" args="" -->TH_PF_422</em>&nbsp;</td><td>
+<p>Chroma decimation by 2 in the X direction (4:2:2). </p>
+<p>The Cb and Cr chroma planes are half the width of the luma plane, but full height. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86"></a><!-- doxytag: member="TH_PF_444" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86" args="" -->TH_PF_444</em>&nbsp;</td><td>
+<p>No chroma decimation (4:4:4). </p>
+<p>The Cb and Cr chroma planes are full width and full height. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb"></a><!-- doxytag: member="TH_PF_NFORMATS" ref="a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb" args="" -->TH_PF_NFORMATS</em>&nbsp;</td><td>
+<p>The total number of currently defined pixel formats. </p>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/codec_8h_source.html b/doc/libtheora/html/codec_8h_source.html
new file mode 100644 (file)
index 0000000..651c3cf
--- /dev/null
@@ -0,0 +1,195 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: codec.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>codec.h</h1><a href="codec_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
+<a name="l00002"></a>00002 <span class="comment"> *                                                                  *</span>
+<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span>
+<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span>
+<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
+<a name="l00006"></a>00006 <span class="comment"> * IN &apos;COPYING&apos;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span>
+<a name="l00007"></a>00007 <span class="comment"> *                                                                  *</span>
+<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span>
+<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/                  *</span>
+<a name="l00010"></a>00010 <span class="comment"> *                                                                  *</span>
+<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">  function:</span>
+<a name="l00014"></a>00014 <span class="comment">  last mod: $Id: theora.h,v 1.8 2004/03/15 22:17:32 derf Exp $</span>
+<a name="l00015"></a>00015 <span class="comment"></span>
+<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
+<a name="l00017"></a>00017 
+<a name="l00062"></a>00062 <span class="preprocessor">#if !defined(_O_THEORA_CODEC_H_)</span>
+<a name="l00063"></a><a class="code" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">00063</a> <span class="preprocessor"></span><span class="preprocessor"># define _O_THEORA_CODEC_H_ (1)</span>
+<a name="l00064"></a>00064 <span class="preprocessor"></span><span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span>
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
+<a name="l00068"></a>00068 <span class="preprocessor">#endif</span>
+<a name="l00069"></a>00069 <span class="preprocessor"></span>
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071 
+<a name="l00075"></a><a class="code" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">00075</a> <span class="preprocessor">#define TH_EFAULT     (-1)</span>
+<a name="l00076"></a>00076 <span class="preprocessor"></span>
+<a name="l00077"></a><a class="code" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">00077</a> <span class="preprocessor">#define TH_EINVAL     (-10)</span>
+<a name="l00078"></a>00078 <span class="preprocessor"></span>
+<a name="l00079"></a><a class="code" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">00079</a> <span class="preprocessor">#define TH_EBADHEADER (-20)</span>
+<a name="l00080"></a>00080 <span class="preprocessor"></span>
+<a name="l00081"></a><a class="code" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">00081</a> <span class="preprocessor">#define TH_ENOTFORMAT (-21)</span>
+<a name="l00082"></a>00082 <span class="preprocessor"></span>
+<a name="l00083"></a><a class="code" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">00083</a> <span class="preprocessor">#define TH_EVERSION   (-22)</span>
+<a name="l00084"></a>00084 <span class="preprocessor"></span>
+<a name="l00085"></a><a class="code" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">00085</a> <span class="preprocessor">#define TH_EIMPL      (-23)</span>
+<a name="l00086"></a>00086 <span class="preprocessor"></span>
+<a name="l00087"></a><a class="code" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">00087</a> <span class="preprocessor">#define TH_EBADPACKET (-24)</span>
+<a name="l00088"></a>00088 <span class="preprocessor"></span>
+<a name="l00091"></a><a class="code" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">00091</a> <span class="preprocessor">#define TH_DUPFRAME   (1)</span>
+<a name="l00092"></a>00092 <span class="preprocessor"></span>
+<a name="l00098"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">00098</a> <span class="keyword">typedef</span> <span class="keyword">enum</span>{
+<a name="l00101"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">00101</a>   <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf" title="The color space was not specified at the encoder.">TH_CS_UNSPECIFIED</a>,
+<a name="l00103"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">00103</a>   <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397" title="A color space designed for NTSC content.">TH_CS_ITU_REC_470M</a>,
+<a name="l00105"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">00105</a>   <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe" title="A color space designed for PAL/SECAM content.">TH_CS_ITU_REC_470BG</a>,
+<a name="l00107"></a><a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">00107</a>   <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e" title="The total number of currently defined color spaces.">TH_CS_NSPACES</a>
+<a name="l00108"></a>00108 }<a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0" title="The currently defined color space tags.">th_colorspace</a>;
+<a name="l00109"></a>00109 
+<a name="l00114"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">00114</a> <span class="keyword">typedef</span> <span class="keyword">enum</span>{
+<a name="l00118"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">00118</a>   <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162" title="Chroma decimation by 2 in both the X and Y directions (4:2:0).">TH_PF_420</a>,
+<a name="l00120"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">00120</a>   <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6" title="Currently reserved.">TH_PF_RSVD</a>,
+<a name="l00124"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">00124</a>   <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa" title="Chroma decimation by 2 in the X direction (4:2:2).">TH_PF_422</a>,
+<a name="l00127"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">00127</a>   <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86" title="No chroma decimation (4:4:4).">TH_PF_444</a>,
+<a name="l00129"></a><a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">00129</a>   <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb" title="The total number of currently defined pixel formats.">TH_PF_NFORMATS</a>
+<a name="l00130"></a>00130 }<a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc" title="The currently defined pixel format tags.">th_pixel_fmt</a>;
+<a name="l00131"></a>00131 
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133 
+<a name="l00142"></a><a class="code" href="structth__img__plane.html">00142</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00144"></a><a class="code" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">00144</a>   <span class="keywordtype">int</span>            width;
+<a name="l00146"></a><a class="code" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">00146</a>   <span class="keywordtype">int</span>            height;
+<a name="l00148"></a><a class="code" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">00148</a>   <span class="keywordtype">int</span>            stride;
+<a name="l00150"></a><a class="code" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">00150</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *data;
+<a name="l00151"></a>00151 }<a class="code" href="structth__img__plane.html" title="A buffer for a single color plane in an uncompressed image.">th_img_plane</a>;
+<a name="l00152"></a>00152 
+<a name="l00168"></a><a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">00168</a> <span class="keyword">typedef</span> <a class="code" href="structth__img__plane.html" title="A buffer for a single color plane in an uncompressed image.">th_img_plane</a> <a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a>[3];
+<a name="l00169"></a>00169 
+<a name="l00204"></a><a class="code" href="structth__info.html">00204</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00208"></a><a class="code" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">00208</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_major;
+<a name="l00209"></a><a class="code" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">00209</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_minor;
+<a name="l00210"></a><a class="code" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">00210</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_subminor;
+<a name="l00214"></a><a class="code" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">00214</a>   ogg_uint32_t  frame_width;
+<a name="l00217"></a><a class="code" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">00217</a>   ogg_uint32_t  frame_height;
+<a name="l00220"></a><a class="code" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">00220</a>   ogg_uint32_t  pic_width;
+<a name="l00223"></a><a class="code" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">00223</a>   ogg_uint32_t  pic_height;
+<a name="l00227"></a><a class="code" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">00227</a>   ogg_uint32_t  pic_x;
+<a name="l00235"></a><a class="code" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">00235</a>   ogg_uint32_t  pic_y;
+<a name="l00240"></a><a class="code" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">00240</a>   ogg_uint32_t  fps_numerator;
+<a name="l00241"></a><a class="code" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">00241</a>   ogg_uint32_t  fps_denominator;
+<a name="l00252"></a><a class="code" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">00252</a>   ogg_uint32_t  aspect_numerator;
+<a name="l00253"></a><a class="code" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">00253</a>   ogg_uint32_t  aspect_denominator;
+<a name="l00256"></a><a class="code" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">00256</a>   <a class="code" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0" title="The currently defined color space tags.">th_colorspace</a> colorspace;
+<a name="l00258"></a><a class="code" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">00258</a>   <a class="code" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc" title="The currently defined pixel format tags.">th_pixel_fmt</a>  pixel_fmt;
+<a name="l00262"></a><a class="code" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">00262</a>   <span class="keywordtype">int</span>           target_bitrate;
+<a name="l00268"></a>00268   <span class="comment">/*Currently this is set so that a qi of 0 corresponds to distortions of 24</span>
+<a name="l00269"></a>00269 <span class="comment">     times the JND, and each increase by 16 halves that value.</span>
+<a name="l00270"></a>00270 <span class="comment">    This gives us fine discrimination at low qualities, yet effective rate</span>
+<a name="l00271"></a>00271 <span class="comment">     control at high qualities.</span>
+<a name="l00272"></a>00272 <span class="comment">    The qi value 63 is special, however.</span>
+<a name="l00273"></a>00273 <span class="comment">    For this, the highest quality, we use one half of a JND for our threshold.</span>
+<a name="l00274"></a>00274 <span class="comment">    Due to the lower bounds placed on allowable quantizers in Theora, we will</span>
+<a name="l00275"></a>00275 <span class="comment">     not actually be able to achieve quality this good, but this should</span>
+<a name="l00276"></a>00276 <span class="comment">     provide as close to visually lossless quality as Theora is capable of.</span>
+<a name="l00277"></a>00277 <span class="comment">    We could lift the quantizer restrictions without breaking VP3.1</span>
+<a name="l00278"></a>00278 <span class="comment">     compatibility, but this would result in quantized coefficients that are</span>
+<a name="l00279"></a>00279 <span class="comment">     too large for the current bitstream to be able to store.</span>
+<a name="l00280"></a>00280 <span class="comment">    We&apos;d have to redesign the token syntax to store these large coefficients,</span>
+<a name="l00281"></a>00281 <span class="comment">     which would make transcoding complex.*/</span>
+<a name="l00282"></a><a class="code" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">00282</a>   <span class="keywordtype">int</span>           quality;
+<a name="l00296"></a><a class="code" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">00296</a>   <span class="keywordtype">int</span>           keyframe_granule_shift;
+<a name="l00297"></a>00297 }<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a>;
+<a name="l00298"></a>00298 
+<a name="l00323"></a><a class="code" href="structth__comment.html">00323</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structth__comment.html" title="The comment information.">th_comment</a>{
+<a name="l00325"></a><a class="code" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">00325</a>   <span class="keywordtype">char</span> **<a class="code" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4" title="The array of comment string vectors.">user_comments</a>;
+<a name="l00327"></a><a class="code" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">00327</a>   <span class="keywordtype">int</span>   *<a class="code" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898" title="An array of the corresponding length of each vector, in bytes.">comment_lengths</a>;
+<a name="l00329"></a><a class="code" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">00329</a>   <span class="keywordtype">int</span>    <a class="code" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78" title="The total number of comment strings.">comments</a>;
+<a name="l00332"></a><a class="code" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">00332</a>   <span class="keywordtype">char</span>  *<a class="code" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0" title="The null-terminated vendor string.">vendor</a>;
+<a name="l00333"></a>00333 }<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a>;
+<a name="l00334"></a>00334 
+<a name="l00335"></a>00335 
+<a name="l00336"></a>00336 
+<a name="l00338"></a><a class="code" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">00338</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326" title="A single base matrix.">th_quant_base</a>[64];
+<a name="l00339"></a>00339 
+<a name="l00341"></a><a class="code" href="structth__quant__ranges.html">00341</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00343"></a><a class="code" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">00343</a>   <span class="keywordtype">int</span>                  nranges;
+<a name="l00346"></a><a class="code" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">00346</a>   <span class="keyword">const</span> <span class="keywordtype">int</span>           *sizes;
+<a name="l00349"></a><a class="code" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">00349</a>   <span class="keyword">const</span> th_quant_base *base_matrices;
+<a name="l00350"></a>00350 }<a class="code" href="structth__quant__ranges.html" title="A set of qi ranges.">th_quant_ranges</a>;
+<a name="l00351"></a>00351 
+<a name="l00409"></a><a class="code" href="structth__quant__info.html">00409</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00411"></a><a class="code" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">00411</a>   ogg_uint16_t    dc_scale[64];
+<a name="l00413"></a><a class="code" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">00413</a>   ogg_uint16_t    ac_scale[64];
+<a name="l00415"></a><a class="code" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">00415</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>   loop_filter_limits[64];
+<a name="l00417"></a><a class="code" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">00417</a>   <a class="code" href="structth__quant__ranges.html" title="A set of qi ranges.">th_quant_ranges</a> qi_ranges[2][3];
+<a name="l00418"></a>00418 }<a class="code" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a>;
+<a name="l00419"></a>00419 
+<a name="l00420"></a>00420 
+<a name="l00421"></a>00421 
+<a name="l00423"></a><a class="code" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">00423</a> <span class="preprocessor">#define TH_NHUFFMAN_TABLES (80)</span>
+<a name="l00424"></a>00424 <span class="preprocessor"></span>
+<a name="l00425"></a><a class="code" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">00425</a> <span class="preprocessor">#define TH_NDCT_TOKENS     (32)</span>
+<a name="l00426"></a>00426 <span class="preprocessor"></span>
+<a name="l00438"></a><a class="code" href="structth__huff__code.html">00438</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00441"></a><a class="code" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">00441</a>   ogg_uint32_t pattern;
+<a name="l00444"></a><a class="code" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">00444</a>   <span class="keywordtype">int</span>          nbits;
+<a name="l00445"></a>00445 }<a class="code" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>;
+<a name="l00446"></a>00446 
+<a name="l00447"></a>00447 
+<a name="l00448"></a>00448 
+<a name="l00456"></a>00456 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc" title="Retrieves a human-readable string to identify the library vendor and version.">th_version_string</a>(<span class="keywordtype">void</span>);
+<a name="l00466"></a>00466 <span class="keyword">extern</span> ogg_uint32_t <a class="code" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b" title="Retrieves the library version number.">th_version_number</a>(<span class="keywordtype">void</span>);
+<a name="l00476"></a>00476 <span class="keyword">extern</span> ogg_int64_t <a class="code" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd" title="Converts a granule position to an absolute frame index, starting at 0.">th_granule_frame</a>(<span class="keywordtype">void</span> *_encdec,ogg_int64_t _granpos);
+<a name="l00488"></a>00488 <span class="keyword">extern</span> <span class="keywordtype">double</span> <a class="code" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432" title="Converts a granule position to an absolute time in seconds.">th_granule_time</a>(<span class="keywordtype">void</span> *_encdec,ogg_int64_t _granpos);
+<a name="l00498"></a>00498 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1" title="Determines whether a Theora packet is a header or not.">th_packet_isheader</a>(ogg_packet *_op);
+<a name="l00509"></a>00509 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a" title="Determines whether a theora packet is a key frame or not.">th_packet_iskeyframe</a>(ogg_packet *_op);
+<a name="l00519"></a>00519 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926" title="Initializes a th_info structure.">th_info_init</a>(<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info);
+<a name="l00524"></a>00524 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c" title="Clears a th_info structure.">th_info_clear</a>(<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info);
+<a name="l00525"></a>00525 
+<a name="l00530"></a>00530 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09" title="Initialize a th_comment structure.">th_comment_init</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc);
+<a name="l00540"></a>00540 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272" title="Add a comment to an initialized th_comment structure.">th_comment_add</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc, <span class="keywordtype">char</span> *_comment);
+<a name="l00551"></a>00551 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf" title="Add a comment to an initialized th_comment structure.">th_comment_add_tag</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,<span class="keywordtype">char</span> *_tag,<span class="keywordtype">char</span> *_val);
+<a name="l00567"></a>00567 <span class="keyword">extern</span> <span class="keywordtype">char</span> *<a class="code" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa" title="Look up a comment value by its tag.">th_comment_query</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,<span class="keywordtype">char</span> *_tag,<span class="keywordtype">int</span> _count);
+<a name="l00575"></a>00575 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc" title="Look up the number of instances of a tag.">th_comment_query_count</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,<span class="keywordtype">char</span> *_tag);
+<a name="l00581"></a>00581 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3" title="Clears a th_comment structure.">th_comment_clear</a>(<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc);
+<a name="l00584"></a>00584 
+<a name="l00585"></a>00585 
+<a name="l00586"></a>00586 
+<a name="l00587"></a>00587 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00588"></a>00588 <span class="preprocessor"></span>}
+<a name="l00589"></a>00589 <span class="preprocessor">#endif</span>
+<a name="l00590"></a>00590 <span class="preprocessor"></span>
+<a name="l00591"></a>00591 <span class="preprocessor">#endif</span>
+</pre></div></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/doxygen.css b/doc/libtheora/html/doxygen.css
new file mode 100644 (file)
index 0000000..9ca3caf
--- /dev/null
@@ -0,0 +1,498 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+       font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+       font-size: 12px;
+}
+
+/* @group Heading Levels */
+
+h1 {
+       text-align: center;
+       font-size: 150%;
+}
+
+h2 {
+       font-size: 120%;
+}
+
+h3 {
+       font-size: 100%;
+}
+
+dt {
+       font-weight: bold;
+}
+
+div.multicol {
+       -moz-column-gap: 1em;
+       -webkit-column-gap: 1em;
+       -moz-column-count: 3;
+       -webkit-column-count: 3;
+}
+
+p.startli, p.startdd {
+       margin-top: 2px;
+}
+
+p.endli {
+       margin-bottom: 0px;
+}
+
+p.enddd {
+       margin-bottom: 4px;
+}
+
+/* @end */
+
+caption {
+       font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+}
+
+div.qindex, div.navpath {
+       width: 100%;
+       line-height: 140%;
+}
+
+div.navtab {
+       margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+       color: #153788;
+       font-weight: normal;
+       text-decoration: none;
+}
+
+.contents a:visited {
+       color: #1b77c5;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+a.qindex {
+       font-weight: bold;
+}
+
+a.qindexHL {
+       font-weight: bold;
+       background-color: #6666cc;
+       color: #ffffff;
+       border: 1px double #9295C2;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+       font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+}
+
+a.codeRef {
+}
+
+/* @end */
+
+dl.el {
+       margin-left: -1cm;
+}
+
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 105%;
+}
+
+pre.fragment {
+       border: 1px solid #CCCCCC;
+       background-color: #f5f5f5;
+       padding: 4px 6px;
+       margin: 4px 8px 4px 2px;
+}
+
+div.ah {
+       background-color: black;
+       font-weight: bold;
+       color: #ffffff;
+       margin-bottom: 3px;
+       margin-top: 3px
+}
+
+div.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+
+div.groupText {
+       margin-left: 16px;
+       font-style: italic;
+}
+
+body {
+       background: white;
+       color: black;
+       margin-right: 20px;
+       margin-left: 20px;
+}
+
+td.indexkey {
+       background-color: #e8eef2;
+       font-weight: bold;
+       border: 1px solid #CCCCCC;
+       margin: 2px 0px 2px 0;
+       padding: 2px 10px;
+}
+
+td.indexvalue {
+       background-color: #e8eef2;
+       border: 1px solid #CCCCCC;
+       padding: 2px 10px;
+       margin: 2px 0px;
+}
+
+tr.memlist {
+       background-color: #f0f0f0;
+}
+
+p.formulaDsp {
+       text-align: center;
+}
+
+img.formulaDsp {
+       
+}
+
+img.formulaInl {
+       vertical-align: middle;
+}
+
+div.center {
+       text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+       border: 0px;
+}
+
+img.footer {
+       border: 0px;
+       vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+       color: #008000
+}
+
+span.keywordtype {
+       color: #604020
+}
+
+span.keywordflow {
+       color: #e08000
+}
+
+span.comment {
+       color: #800000
+}
+
+span.preprocessor {
+       color: #806020
+}
+
+span.stringliteral {
+       color: #002080
+}
+
+span.charliteral {
+       color: #008080
+}
+
+span.vhdldigit { 
+       color: #ff00ff 
+}
+
+span.vhdlchar { 
+       color: #000000 
+}
+
+span.vhdlkeyword { 
+       color: #700070 
+}
+
+span.vhdllogic { 
+       color: #ff0000 
+}
+
+/* @end */
+
+.search {
+       color: #003399;
+       font-weight: bold;
+}
+
+form.search {
+       margin-bottom: 0px;
+       margin-top: 0px;
+}
+
+input.search {
+       font-size: 75%;
+       color: #000080;
+       font-weight: normal;
+       background-color: #e8eef2;
+}
+
+td.tiny {
+       font-size: 75%;
+}
+
+.dirtab {
+       padding: 4px;
+       border-collapse: collapse;
+       border: 1px solid #84b0c7;
+}
+
+th.dirtab {
+       background: #e8eef2;
+       font-weight: bold;
+}
+
+hr {
+       height: 0;
+       border: none;
+       border-top: 1px solid #666;
+}
+
+/* @group Member Descriptions */
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+       background-color: #FAFAFA;
+       border: none;
+       margin: 4px;
+       padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+       padding: 0px 8px 4px 8px;
+       color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+       border-top: 1px solid #ccc;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memTemplParams {
+       color: #606060;
+        white-space: nowrap;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+       font-size: 80%;
+       color: #606060;
+       font-weight: normal;
+       margin-left: 3px;
+}
+
+.memnav {
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+
+.memitem {
+       padding: 0;
+       margin-bottom: 10px;
+}
+
+.memname {
+       white-space: nowrap;
+       font-weight: bold;
+}
+
+.memproto, .memdoc {
+       border: 1px solid #84b0c7;      
+}
+
+.memproto {
+       padding: 0;
+       background-color: #d5e1e8;
+       font-weight: bold;
+       -webkit-border-top-left-radius: 8px;
+       -webkit-border-top-right-radius: 8px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+       -moz-border-radius-topleft: 8px;
+       -moz-border-radius-topright: 8px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+
+}
+
+.memdoc {
+       padding: 2px 5px;
+       background-color: #eef3f5;
+       border-top-width: 0;
+       -webkit-border-bottom-left-radius: 8px;
+       -webkit-border-bottom-right-radius: 8px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+       -moz-border-radius-bottomleft: 8px;
+       -moz-border-radius-bottomright: 8px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+}
+
+.paramkey {
+       text-align: right;
+}
+
+.paramtype {
+       white-space: nowrap;
+}
+
+.paramname {
+       color: #602020;
+       white-space: nowrap;
+}
+.paramname em {
+       font-style: normal;
+}
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+       font-family: sans-serif;
+       margin: 0.5em;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+       font-size: 9pt;
+       font-weight: bold;
+}
+
+.directory h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice.  Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+       height: 61px;
+       background-repeat: no-repeat;
+       background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+       display: none;
+}
+*/
+
+.directory > h3 {
+       margin-top: 0;
+}
+
+.directory p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory div {
+       display: none;
+       margin: 0px;
+}
+
+.directory img {
+       vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+       font-size: 100%;
+       font-weight: bold;
+}
+
+.directory-alt h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+.directory-alt > h3 {
+       margin-top: 0;
+}
+
+.directory-alt p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory-alt div {
+       display: none;
+       margin: 0px;
+}
+
+.directory-alt img {
+       vertical-align: -30%;
+}
+
+/* @end */
+
+address {
+       font-style: normal;
+       color: #333;
+}
diff --git a/doc/libtheora/html/doxygen.png b/doc/libtheora/html/doxygen.png
new file mode 100644 (file)
index 0000000..f0a274b
Binary files /dev/null and b/doc/libtheora/html/doxygen.png differ
diff --git a/doc/libtheora/html/files.html b/doc/libtheora/html/files.html
new file mode 100644 (file)
index 0000000..8ea7e77
--- /dev/null
@@ -0,0 +1,39 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: File Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>File List</h1>Here is a list of all files with brief descriptions:<table>
+  <tr><td class="indexkey"><a class="el" href="codec_8h.html">codec.h</a> <a href="codec_8h_source.html">[code]</a></td><td class="indexvalue">The shared <code>libtheoradec</code> and <code>libtheoraenc</code> C API </td></tr>
+  <tr><td class="indexkey"><a class="el" href="theora_8h.html">theora.h</a> <a href="theora_8h_source.html">[code]</a></td><td class="indexvalue">The libtheora pre-1.0 legacy C API </td></tr>
+  <tr><td class="indexkey"><a class="el" href="theoradec_8h.html">theoradec.h</a> <a href="theoradec_8h_source.html">[code]</a></td><td class="indexvalue">The <code>libtheoradec</code> C decoding API </td></tr>
+  <tr><td class="indexkey"><a class="el" href="theoraenc_8h.html">theoraenc.h</a> <a href="theoraenc_8h_source.html">[code]</a></td><td class="indexvalue">The <code>libtheoraenc</code> C encoding API </td></tr>
+</table>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/functions.html b/doc/libtheora/html/functions.html
new file mode 100644 (file)
index 0000000..f8a85cb
--- /dev/null
@@ -0,0 +1,353 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="functions.html"><span>All</span></a></li>
+      <li><a href="functions_vars.html"><span>Variables</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="#index_a"><span>a</span></a></li>
+      <li><a href="#index_b"><span>b</span></a></li>
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_g"><span>g</span></a></li>
+      <li><a href="#index_h"><span>h</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_k"><span>k</span></a></li>
+      <li><a href="#index_l"><span>l</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_o"><span>o</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
+      <li><a href="#index_q"><span>q</span></a></li>
+      <li><a href="#index_s"><span>s</span></a></li>
+      <li><a href="#index_t"><span>t</span></a></li>
+      <li><a href="#index_u"><span>u</span></a></li>
+      <li><a href="#index_v"><span>v</span></a></li>
+      <li><a href="#index_w"><span>w</span></a></li>
+      <li><a href="#index_y"><span>y</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all struct and union fields with links to the structures/unions they belong to:
+
+<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
+<li>ac_scale
+: <a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info</a>
+</li>
+<li>aspect_denominator
+: <a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info</a>
+, <a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info</a>
+</li>
+<li>aspect_numerator
+: <a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info</a>
+, <a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
+<li>base_matrices
+: <a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
+<li>codec_setup
+: <a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info</a>
+</li>
+<li>colorspace
+: <a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info</a>
+, <a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info</a>
+</li>
+<li>comment_lengths
+: <a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment</a>
+</li>
+<li>comments
+: <a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment</a>
+</li>
+<li>ctx
+: <a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
+<li>data
+: <a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane</a>
+</li>
+<li>dc_scale
+: <a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info</a>
+</li>
+<li>dropframes_p
+: <a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
+<li>fps_denominator
+: <a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info</a>
+, <a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info</a>
+</li>
+<li>fps_numerator
+: <a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info</a>
+, <a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info</a>
+</li>
+<li>frame_height
+: <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info</a>
+, <a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info</a>
+</li>
+<li>frame_width
+: <a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info</a>
+, <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
+<li>granulepos
+: <a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane</a>
+, <a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
+<li>i
+: <a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state</a>
+</li>
+<li>internal_decode
+: <a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state</a>
+</li>
+<li>internal_encode
+: <a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_k">- k -</a></h3><ul>
+<li>keyframe_auto_p
+: <a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info</a>
+</li>
+<li>keyframe_auto_threshold
+: <a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info</a>
+</li>
+<li>keyframe_data_target_bitrate
+: <a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info</a>
+</li>
+<li>keyframe_frequency
+: <a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info</a>
+</li>
+<li>keyframe_frequency_force
+: <a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info</a>
+</li>
+<li>keyframe_granule_shift
+: <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info</a>
+</li>
+<li>keyframe_mindistance
+: <a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
+<li>loop_filter_limits
+: <a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">th_quant_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
+<li>nbits
+: <a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code</a>
+</li>
+<li>noise_sensitivity
+: <a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info</a>
+</li>
+<li>nranges
+: <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
+<li>offset_x
+: <a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info</a>
+</li>
+<li>offset_y
+: <a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
+<li>pattern
+: <a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code</a>
+</li>
+<li>pic_height
+: <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info</a>
+</li>
+<li>pic_width
+: <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info</a>
+</li>
+<li>pic_x
+: <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info</a>
+</li>
+<li>pic_y
+: <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info</a>
+</li>
+<li>pixel_fmt
+: <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info</a>
+</li>
+<li>pixelformat
+: <a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
+<li>qi_ranges
+: <a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">th_quant_info</a>
+</li>
+<li>quality
+: <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info</a>
+, <a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info</a>
+</li>
+<li>quick_p
+: <a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
+<li>sharpness
+: <a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info</a>
+</li>
+<li>sizes
+: <a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges</a>
+</li>
+<li>stride
+: <a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane</a>
+</li>
+<li>stripe_decoded
+: <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>target_bitrate
+: <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info</a>
+, <a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_u">- u -</a></h3><ul>
+<li>u
+: <a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer</a>
+</li>
+<li>user_comments
+: <a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment</a>
+</li>
+<li>uv_height
+: <a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer</a>
+</li>
+<li>uv_stride
+: <a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer</a>
+</li>
+<li>uv_width
+: <a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_v">- v -</a></h3><ul>
+<li>v
+: <a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer</a>
+</li>
+<li>vendor
+: <a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment</a>
+, <a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment</a>
+</li>
+<li>version_major
+: <a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info</a>
+, <a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info</a>
+</li>
+<li>version_minor
+: <a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info</a>
+, <a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info</a>
+</li>
+<li>version_subminor
+: <a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info</a>
+, <a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_w">- w -</a></h3><ul>
+<li>width
+: <a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane</a>
+, <a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_y">- y -</a></h3><ul>
+<li>y
+: <a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer</a>
+</li>
+<li>y_height
+: <a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer</a>
+</li>
+<li>y_stride
+: <a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer</a>
+</li>
+<li>y_width
+: <a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/functions_vars.html b/doc/libtheora/html/functions_vars.html
new file mode 100644 (file)
index 0000000..b2103c1
--- /dev/null
@@ -0,0 +1,353 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields - Variables</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="functions.html"><span>All</span></a></li>
+      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="#index_a"><span>a</span></a></li>
+      <li><a href="#index_b"><span>b</span></a></li>
+      <li><a href="#index_c"><span>c</span></a></li>
+      <li><a href="#index_d"><span>d</span></a></li>
+      <li><a href="#index_f"><span>f</span></a></li>
+      <li><a href="#index_g"><span>g</span></a></li>
+      <li><a href="#index_h"><span>h</span></a></li>
+      <li><a href="#index_i"><span>i</span></a></li>
+      <li><a href="#index_k"><span>k</span></a></li>
+      <li><a href="#index_l"><span>l</span></a></li>
+      <li><a href="#index_n"><span>n</span></a></li>
+      <li><a href="#index_o"><span>o</span></a></li>
+      <li><a href="#index_p"><span>p</span></a></li>
+      <li><a href="#index_q"><span>q</span></a></li>
+      <li><a href="#index_s"><span>s</span></a></li>
+      <li><a href="#index_t"><span>t</span></a></li>
+      <li><a href="#index_u"><span>u</span></a></li>
+      <li><a href="#index_v"><span>v</span></a></li>
+      <li><a href="#index_w"><span>w</span></a></li>
+      <li><a href="#index_y"><span>y</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;
+
+<h3><a class="anchor" id="index_a">- a -</a></h3><ul>
+<li>ac_scale
+: <a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info</a>
+</li>
+<li>aspect_denominator
+: <a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info</a>
+, <a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info</a>
+</li>
+<li>aspect_numerator
+: <a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info</a>
+, <a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_b">- b -</a></h3><ul>
+<li>base_matrices
+: <a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_c">- c -</a></h3><ul>
+<li>codec_setup
+: <a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info</a>
+</li>
+<li>colorspace
+: <a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info</a>
+, <a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info</a>
+</li>
+<li>comment_lengths
+: <a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment</a>
+</li>
+<li>comments
+: <a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment</a>
+</li>
+<li>ctx
+: <a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d">- d -</a></h3><ul>
+<li>data
+: <a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane</a>
+</li>
+<li>dc_scale
+: <a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info</a>
+</li>
+<li>dropframes_p
+: <a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_f">- f -</a></h3><ul>
+<li>fps_denominator
+: <a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info</a>
+, <a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info</a>
+</li>
+<li>fps_numerator
+: <a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info</a>
+, <a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info</a>
+</li>
+<li>frame_height
+: <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info</a>
+, <a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info</a>
+</li>
+<li>frame_width
+: <a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info</a>
+, <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_g">- g -</a></h3><ul>
+<li>granulepos
+: <a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_h">- h -</a></h3><ul>
+<li>height
+: <a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane</a>
+, <a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i">- i -</a></h3><ul>
+<li>i
+: <a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state</a>
+</li>
+<li>internal_decode
+: <a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state</a>
+</li>
+<li>internal_encode
+: <a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_k">- k -</a></h3><ul>
+<li>keyframe_auto_p
+: <a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info</a>
+</li>
+<li>keyframe_auto_threshold
+: <a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info</a>
+</li>
+<li>keyframe_data_target_bitrate
+: <a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info</a>
+</li>
+<li>keyframe_frequency
+: <a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info</a>
+</li>
+<li>keyframe_frequency_force
+: <a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info</a>
+</li>
+<li>keyframe_granule_shift
+: <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info</a>
+</li>
+<li>keyframe_mindistance
+: <a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_l">- l -</a></h3><ul>
+<li>loop_filter_limits
+: <a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">th_quant_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n">- n -</a></h3><ul>
+<li>nbits
+: <a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code</a>
+</li>
+<li>noise_sensitivity
+: <a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info</a>
+</li>
+<li>nranges
+: <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
+<li>offset_x
+: <a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info</a>
+</li>
+<li>offset_y
+: <a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p">- p -</a></h3><ul>
+<li>pattern
+: <a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code</a>
+</li>
+<li>pic_height
+: <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info</a>
+</li>
+<li>pic_width
+: <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info</a>
+</li>
+<li>pic_x
+: <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info</a>
+</li>
+<li>pic_y
+: <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info</a>
+</li>
+<li>pixel_fmt
+: <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info</a>
+</li>
+<li>pixelformat
+: <a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_q">- q -</a></h3><ul>
+<li>qi_ranges
+: <a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">th_quant_info</a>
+</li>
+<li>quality
+: <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info</a>
+, <a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info</a>
+</li>
+<li>quick_p
+: <a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s">- s -</a></h3><ul>
+<li>sharpness
+: <a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info</a>
+</li>
+<li>sizes
+: <a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges</a>
+</li>
+<li>stride
+: <a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane</a>
+</li>
+<li>stripe_decoded
+: <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>target_bitrate
+: <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info</a>
+, <a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_u">- u -</a></h3><ul>
+<li>u
+: <a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer</a>
+</li>
+<li>user_comments
+: <a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment</a>
+, <a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment</a>
+</li>
+<li>uv_height
+: <a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer</a>
+</li>
+<li>uv_stride
+: <a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer</a>
+</li>
+<li>uv_width
+: <a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_v">- v -</a></h3><ul>
+<li>v
+: <a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer</a>
+</li>
+<li>vendor
+: <a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment</a>
+, <a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment</a>
+</li>
+<li>version_major
+: <a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info</a>
+, <a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info</a>
+</li>
+<li>version_minor
+: <a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info</a>
+, <a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info</a>
+</li>
+<li>version_subminor
+: <a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info</a>
+, <a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_w">- w -</a></h3><ul>
+<li>width
+: <a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane</a>
+, <a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_y">- y -</a></h3><ul>
+<li>y
+: <a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer</a>
+</li>
+<li>y_height
+: <a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer</a>
+</li>
+<li>y_stride
+: <a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer</a>
+</li>
+<li>y_width
+: <a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals.html b/doc/libtheora/html/globals.html
new file mode 100644 (file)
index 0000000..42641e0
--- /dev/null
@@ -0,0 +1,464 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="#index__"><span>_</span></a></li>
+      <li><a href="#index_o"><span>o</span></a></li>
+      <li><a href="#index_t"><span>t</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+
+<h3><a class="anchor" id="index__">- _ -</a></h3><ul>
+<li>_O_THEORA_CODEC_H_
+: <a class="el" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">codec.h</a>
+</li>
+<li>_O_THEORA_THEORADEC_H_
+: <a class="el" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">theoradec.h</a>
+</li>
+<li>_O_THEORA_THEORAENC_H_
+: <a class="el" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">theoraenc.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
+<li>OC_BADHEADER
+: <a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">theora.h</a>
+</li>
+<li>OC_BADPACKET
+: <a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">theora.h</a>
+</li>
+<li>OC_CS_ITU_REC_470BG
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">theora.h</a>
+</li>
+<li>OC_CS_ITU_REC_470M
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">theora.h</a>
+</li>
+<li>OC_CS_NSPACES
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">theora.h</a>
+</li>
+<li>OC_CS_UNSPECIFIED
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">theora.h</a>
+</li>
+<li>OC_DISABLED
+: <a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">theora.h</a>
+</li>
+<li>OC_DUPFRAME
+: <a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">theora.h</a>
+</li>
+<li>OC_EINVAL
+: <a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">theora.h</a>
+</li>
+<li>OC_FAULT
+: <a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">theora.h</a>
+</li>
+<li>OC_IMPL
+: <a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">theora.h</a>
+</li>
+<li>OC_NEWPACKET
+: <a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">theora.h</a>
+</li>
+<li>OC_NOTFORMAT
+: <a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">theora.h</a>
+</li>
+<li>OC_PF_420
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">theora.h</a>
+</li>
+<li>OC_PF_422
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">theora.h</a>
+</li>
+<li>OC_PF_444
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">theora.h</a>
+</li>
+<li>OC_PF_RSVD
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">theora.h</a>
+</li>
+<li>OC_VERSION
+: <a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">theora.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>th_colorspace
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">codec.h</a>
+</li>
+<li>th_comment_add()
+: <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">codec.h</a>
+</li>
+<li>th_comment_add_tag()
+: <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">codec.h</a>
+</li>
+<li>th_comment_clear()
+: <a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">codec.h</a>
+</li>
+<li>th_comment_init()
+: <a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">codec.h</a>
+</li>
+<li>th_comment_query()
+: <a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">codec.h</a>
+</li>
+<li>th_comment_query_count()
+: <a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">codec.h</a>
+</li>
+<li>TH_CS_ITU_REC_470BG
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">codec.h</a>
+</li>
+<li>TH_CS_ITU_REC_470M
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">codec.h</a>
+</li>
+<li>TH_CS_NSPACES
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">codec.h</a>
+</li>
+<li>TH_CS_UNSPECIFIED
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">codec.h</a>
+</li>
+<li>th_dec_ctx
+: <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">theoradec.h</a>
+</li>
+<li>TH_DECCTL_GET_PPLEVEL_MAX
+: <a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">theora.h</a>
+, <a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_GRANPOS
+: <a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">theoradec.h</a>
+, <a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">theora.h</a>
+</li>
+<li>TH_DECCTL_SET_PPLEVEL
+: <a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">theora.h</a>
+, <a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_STRIPE_CB
+: <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_BITS
+: <a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_MBMODE
+: <a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_MV
+: <a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_QI
+: <a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">theoradec.h</a>
+</li>
+<li>th_decode_alloc()
+: <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">theoradec.h</a>
+</li>
+<li>th_decode_ctl()
+: <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">theoradec.h</a>
+</li>
+<li>th_decode_free()
+: <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">theoradec.h</a>
+</li>
+<li>th_decode_headerin()
+: <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">theoradec.h</a>
+</li>
+<li>th_decode_packetin()
+: <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">theoradec.h</a>
+</li>
+<li>th_decode_ycbcr_out()
+: <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">theoradec.h</a>
+</li>
+<li>TH_DUPFRAME
+: <a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">codec.h</a>
+</li>
+<li>TH_EBADHEADER
+: <a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">codec.h</a>
+</li>
+<li>TH_EBADPACKET
+: <a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">codec.h</a>
+</li>
+<li>TH_EFAULT
+: <a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">codec.h</a>
+</li>
+<li>TH_EIMPL
+: <a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">codec.h</a>
+</li>
+<li>TH_EINVAL
+: <a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">codec.h</a>
+</li>
+<li>th_enc_ctx
+: <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_2PASS_IN
+: <a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_2PASS_OUT
+: <a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_GET_SPLEVEL
+: <a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_GET_SPLEVEL_MAX
+: <a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_BITRATE
+: <a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_DUP_COUNT
+: <a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_HUFFMAN_CODES
+: <a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE
+: <a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_QUALITY
+: <a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_QUANT_PARAMS
+: <a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_RATE_BUFFER
+: <a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_RATE_FLAGS
+: <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_SPLEVEL
+: <a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_VP3_COMPATIBLE
+: <a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">theoraenc.h</a>
+</li>
+<li>th_encode_alloc()
+: <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">theoraenc.h</a>
+</li>
+<li>th_encode_ctl()
+: <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">theoraenc.h</a>
+</li>
+<li>th_encode_flushheader()
+: <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">theoraenc.h</a>
+</li>
+<li>th_encode_free()
+: <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">theoraenc.h</a>
+</li>
+<li>th_encode_packetout()
+: <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">theoraenc.h</a>
+</li>
+<li>th_encode_ycbcr_in()
+: <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">theoraenc.h</a>
+</li>
+<li>TH_ENOTFORMAT
+: <a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">codec.h</a>
+</li>
+<li>TH_EVERSION
+: <a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">codec.h</a>
+</li>
+<li>th_granule_frame()
+: <a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">codec.h</a>
+</li>
+<li>th_granule_time()
+: <a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">codec.h</a>
+</li>
+<li>th_info_clear()
+: <a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">codec.h</a>
+</li>
+<li>th_info_init()
+: <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">codec.h</a>
+</li>
+<li>TH_NDCT_TOKENS
+: <a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">codec.h</a>
+</li>
+<li>TH_NHUFFMAN_TABLES
+: <a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">codec.h</a>
+</li>
+<li>th_packet_isheader()
+: <a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">codec.h</a>
+</li>
+<li>th_packet_iskeyframe()
+: <a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">codec.h</a>
+</li>
+<li>TH_PF_420
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">codec.h</a>
+</li>
+<li>TH_PF_422
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">codec.h</a>
+</li>
+<li>TH_PF_444
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">codec.h</a>
+</li>
+<li>TH_PF_NFORMATS
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">codec.h</a>
+</li>
+<li>TH_PF_RSVD
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">codec.h</a>
+</li>
+<li>th_pixel_fmt
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">codec.h</a>
+</li>
+<li>th_quant_base
+: <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">codec.h</a>
+</li>
+<li>TH_RATECTL_CAP_OVERFLOW
+: <a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">theoraenc.h</a>
+</li>
+<li>TH_RATECTL_CAP_UNDERFLOW
+: <a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">theoraenc.h</a>
+</li>
+<li>TH_RATECTL_DROP_FRAMES
+: <a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">theoraenc.h</a>
+</li>
+<li>th_setup_free()
+: <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">theoradec.h</a>
+</li>
+<li>th_setup_info
+: <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">theoradec.h</a>
+</li>
+<li>th_stripe_decoded_func
+: <a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">theoradec.h</a>
+</li>
+<li>th_version_number()
+: <a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">codec.h</a>
+</li>
+<li>th_version_string()
+: <a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">codec.h</a>
+</li>
+<li>TH_VP31_HUFF_CODES
+: <a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">theoraenc.h</a>
+</li>
+<li>TH_VP31_QUANT_INFO
+: <a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">theoraenc.h</a>
+</li>
+<li>th_ycbcr_buffer
+: <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">codec.h</a>
+</li>
+<li>theora_clear()
+: <a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora.h</a>
+</li>
+<li>theora_colorspace
+: <a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora.h</a>
+</li>
+<li>theora_comment_add()
+: <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora.h</a>
+</li>
+<li>theora_comment_add_tag()
+: <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora.h</a>
+</li>
+<li>theora_comment_clear()
+: <a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora.h</a>
+</li>
+<li>theora_comment_init()
+: <a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora.h</a>
+</li>
+<li>theora_comment_query()
+: <a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora.h</a>
+</li>
+<li>theora_comment_query_count()
+: <a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora.h</a>
+</li>
+<li>theora_control()
+: <a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora.h</a>
+</li>
+<li>theora_decode_header()
+: <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora.h</a>
+</li>
+<li>theora_decode_init()
+: <a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora.h</a>
+</li>
+<li>theora_decode_packetin()
+: <a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora.h</a>
+</li>
+<li>theora_decode_YUVout()
+: <a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora.h</a>
+</li>
+<li>theora_encode_comment()
+: <a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora.h</a>
+</li>
+<li>theora_encode_header()
+: <a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora.h</a>
+</li>
+<li>theora_encode_init()
+: <a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora.h</a>
+</li>
+<li>theora_encode_packetout()
+: <a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora.h</a>
+</li>
+<li>theora_encode_tables()
+: <a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora.h</a>
+</li>
+<li>theora_encode_YUVin()
+: <a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora.h</a>
+</li>
+<li>theora_granule_frame()
+: <a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora.h</a>
+</li>
+<li>theora_granule_shift()
+: <a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora.h</a>
+</li>
+<li>theora_granule_time()
+: <a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora.h</a>
+</li>
+<li>theora_info_clear()
+: <a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora.h</a>
+</li>
+<li>theora_info_init()
+: <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora.h</a>
+</li>
+<li>theora_packet_isheader()
+: <a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora.h</a>
+</li>
+<li>theora_packet_iskeyframe()
+: <a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora.h</a>
+</li>
+<li>theora_pixelformat
+: <a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora.h</a>
+</li>
+<li>theora_version_number()
+: <a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora.h</a>
+</li>
+<li>theora_version_string()
+: <a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_defs.html b/doc/libtheora/html/globals_defs.html
new file mode 100644 (file)
index 0000000..c29f5cd
--- /dev/null
@@ -0,0 +1,215 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="#index__"><span>_</span></a></li>
+      <li><a href="#index_o"><span>o</span></a></li>
+      <li><a href="#index_t"><span>t</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;
+
+<h3><a class="anchor" id="index__">- _ -</a></h3><ul>
+<li>_O_THEORA_CODEC_H_
+: <a class="el" href="codec_8h.html#a15352a6a862d25ab00a8f06ea65ee75b">codec.h</a>
+</li>
+<li>_O_THEORA_THEORADEC_H_
+: <a class="el" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">theoradec.h</a>
+</li>
+<li>_O_THEORA_THEORAENC_H_
+: <a class="el" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">theoraenc.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o">- o -</a></h3><ul>
+<li>OC_BADHEADER
+: <a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">theora.h</a>
+</li>
+<li>OC_BADPACKET
+: <a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">theora.h</a>
+</li>
+<li>OC_DISABLED
+: <a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">theora.h</a>
+</li>
+<li>OC_DUPFRAME
+: <a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">theora.h</a>
+</li>
+<li>OC_EINVAL
+: <a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">theora.h</a>
+</li>
+<li>OC_FAULT
+: <a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">theora.h</a>
+</li>
+<li>OC_IMPL
+: <a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">theora.h</a>
+</li>
+<li>OC_NEWPACKET
+: <a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">theora.h</a>
+</li>
+<li>OC_NOTFORMAT
+: <a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">theora.h</a>
+</li>
+<li>OC_VERSION
+: <a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">theora.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>TH_DECCTL_GET_PPLEVEL_MAX
+: <a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">theora.h</a>
+, <a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_GRANPOS
+: <a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">theoradec.h</a>
+, <a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">theora.h</a>
+</li>
+<li>TH_DECCTL_SET_PPLEVEL
+: <a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">theora.h</a>
+, <a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_STRIPE_CB
+: <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_BITS
+: <a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_MBMODE
+: <a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_MV
+: <a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">theoradec.h</a>
+</li>
+<li>TH_DECCTL_SET_TELEMETRY_QI
+: <a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">theoradec.h</a>
+</li>
+<li>TH_DUPFRAME
+: <a class="el" href="codec_8h.html#ab10e7b64f17a02707fc9348ea9832d09">codec.h</a>
+</li>
+<li>TH_EBADHEADER
+: <a class="el" href="codec_8h.html#af00f7ecc5242d12a717202537324a510">codec.h</a>
+</li>
+<li>TH_EBADPACKET
+: <a class="el" href="codec_8h.html#a6efb84e9c2213a8840003eee2847b27f">codec.h</a>
+</li>
+<li>TH_EFAULT
+: <a class="el" href="codec_8h.html#a4d8d8e34fc5ec39ffa05d61a310a0407">codec.h</a>
+</li>
+<li>TH_EIMPL
+: <a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe">codec.h</a>
+</li>
+<li>TH_EINVAL
+: <a class="el" href="codec_8h.html#afbbd9f19fbf292aeb62a37792cecb870">codec.h</a>
+</li>
+<li>TH_ENCCTL_2PASS_IN
+: <a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_2PASS_OUT
+: <a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_GET_SPLEVEL
+: <a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_GET_SPLEVEL_MAX
+: <a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_BITRATE
+: <a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_DUP_COUNT
+: <a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_HUFFMAN_CODES
+: <a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE
+: <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">theoraenc.h</a>
+, <a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">theora.h</a>
+</li>
+<li>TH_ENCCTL_SET_QUALITY
+: <a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_QUANT_PARAMS
+: <a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_RATE_BUFFER
+: <a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_RATE_FLAGS
+: <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_SPLEVEL
+: <a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">theora.h</a>
+, <a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">theoraenc.h</a>
+</li>
+<li>TH_ENCCTL_SET_VP3_COMPATIBLE
+: <a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">theoraenc.h</a>
+, <a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">theora.h</a>
+</li>
+<li>TH_ENOTFORMAT
+: <a class="el" href="codec_8h.html#a3dc08a00a9aba231be398f3e31726d9c">codec.h</a>
+</li>
+<li>TH_EVERSION
+: <a class="el" href="codec_8h.html#ac3a45ef2b24f75259258edc481e3a122">codec.h</a>
+</li>
+<li>TH_NDCT_TOKENS
+: <a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422">codec.h</a>
+</li>
+<li>TH_NHUFFMAN_TABLES
+: <a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42">codec.h</a>
+</li>
+<li>TH_RATECTL_CAP_OVERFLOW
+: <a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">theoraenc.h</a>
+</li>
+<li>TH_RATECTL_CAP_UNDERFLOW
+: <a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">theoraenc.h</a>
+</li>
+<li>TH_RATECTL_DROP_FRAMES
+: <a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">theoraenc.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_enum.html b/doc/libtheora/html/globals_enum.html
new file mode 100644 (file)
index 0000000..87193ee
--- /dev/null
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;<ul>
+<li>th_colorspace
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">codec.h</a>
+</li>
+<li>th_pixel_fmt
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">codec.h</a>
+</li>
+<li>theora_colorspace
+: <a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora.h</a>
+</li>
+<li>theora_pixelformat
+: <a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_eval.html b/doc/libtheora/html/globals_eval.html
new file mode 100644 (file)
index 0000000..b145d87
--- /dev/null
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;<ul>
+<li>OC_CS_ITU_REC_470BG
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">theora.h</a>
+</li>
+<li>OC_CS_ITU_REC_470M
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">theora.h</a>
+</li>
+<li>OC_CS_NSPACES
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">theora.h</a>
+</li>
+<li>OC_CS_UNSPECIFIED
+: <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">theora.h</a>
+</li>
+<li>OC_PF_420
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">theora.h</a>
+</li>
+<li>OC_PF_422
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">theora.h</a>
+</li>
+<li>OC_PF_444
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">theora.h</a>
+</li>
+<li>OC_PF_RSVD
+: <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">theora.h</a>
+</li>
+<li>TH_CS_ITU_REC_470BG
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe">codec.h</a>
+</li>
+<li>TH_CS_ITU_REC_470M
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397">codec.h</a>
+</li>
+<li>TH_CS_NSPACES
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e">codec.h</a>
+</li>
+<li>TH_CS_UNSPECIFIED
+: <a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf">codec.h</a>
+</li>
+<li>TH_PF_420
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162">codec.h</a>
+</li>
+<li>TH_PF_422
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa">codec.h</a>
+</li>
+<li>TH_PF_444
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86">codec.h</a>
+</li>
+<li>TH_PF_NFORMATS
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb">codec.h</a>
+</li>
+<li>TH_PF_RSVD
+: <a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6">codec.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_func.html b/doc/libtheora/html/globals_func.html
new file mode 100644 (file)
index 0000000..98219c4
--- /dev/null
@@ -0,0 +1,215 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="#index_t"><span>t</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;
+
+<h3><a class="anchor" id="index_t">- t -</a></h3><ul>
+<li>th_comment_add()
+: <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">codec.h</a>
+</li>
+<li>th_comment_add_tag()
+: <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">codec.h</a>
+</li>
+<li>th_comment_clear()
+: <a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">codec.h</a>
+</li>
+<li>th_comment_init()
+: <a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">codec.h</a>
+</li>
+<li>th_comment_query()
+: <a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">codec.h</a>
+</li>
+<li>th_comment_query_count()
+: <a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">codec.h</a>
+</li>
+<li>th_decode_alloc()
+: <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">theoradec.h</a>
+</li>
+<li>th_decode_ctl()
+: <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">theoradec.h</a>
+</li>
+<li>th_decode_free()
+: <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">theoradec.h</a>
+</li>
+<li>th_decode_headerin()
+: <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">theoradec.h</a>
+</li>
+<li>th_decode_packetin()
+: <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">theoradec.h</a>
+</li>
+<li>th_decode_ycbcr_out()
+: <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">theoradec.h</a>
+</li>
+<li>th_encode_alloc()
+: <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">theoraenc.h</a>
+</li>
+<li>th_encode_ctl()
+: <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">theoraenc.h</a>
+</li>
+<li>th_encode_flushheader()
+: <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">theoraenc.h</a>
+</li>
+<li>th_encode_free()
+: <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">theoraenc.h</a>
+</li>
+<li>th_encode_packetout()
+: <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">theoraenc.h</a>
+</li>
+<li>th_encode_ycbcr_in()
+: <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">theoraenc.h</a>
+</li>
+<li>th_granule_frame()
+: <a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">codec.h</a>
+</li>
+<li>th_granule_time()
+: <a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">codec.h</a>
+</li>
+<li>th_info_clear()
+: <a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">codec.h</a>
+</li>
+<li>th_info_init()
+: <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">codec.h</a>
+</li>
+<li>th_packet_isheader()
+: <a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">codec.h</a>
+</li>
+<li>th_packet_iskeyframe()
+: <a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">codec.h</a>
+</li>
+<li>th_setup_free()
+: <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">theoradec.h</a>
+</li>
+<li>th_version_number()
+: <a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">codec.h</a>
+</li>
+<li>th_version_string()
+: <a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">codec.h</a>
+</li>
+<li>theora_clear()
+: <a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora.h</a>
+</li>
+<li>theora_comment_add()
+: <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora.h</a>
+</li>
+<li>theora_comment_add_tag()
+: <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora.h</a>
+</li>
+<li>theora_comment_clear()
+: <a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora.h</a>
+</li>
+<li>theora_comment_init()
+: <a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora.h</a>
+</li>
+<li>theora_comment_query()
+: <a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora.h</a>
+</li>
+<li>theora_comment_query_count()
+: <a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora.h</a>
+</li>
+<li>theora_control()
+: <a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora.h</a>
+</li>
+<li>theora_decode_header()
+: <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora.h</a>
+</li>
+<li>theora_decode_init()
+: <a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora.h</a>
+</li>
+<li>theora_decode_packetin()
+: <a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora.h</a>
+</li>
+<li>theora_decode_YUVout()
+: <a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora.h</a>
+</li>
+<li>theora_encode_comment()
+: <a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora.h</a>
+</li>
+<li>theora_encode_header()
+: <a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora.h</a>
+</li>
+<li>theora_encode_init()
+: <a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora.h</a>
+</li>
+<li>theora_encode_packetout()
+: <a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora.h</a>
+</li>
+<li>theora_encode_tables()
+: <a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora.h</a>
+</li>
+<li>theora_encode_YUVin()
+: <a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora.h</a>
+</li>
+<li>theora_granule_frame()
+: <a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora.h</a>
+</li>
+<li>theora_granule_shift()
+: <a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora.h</a>
+</li>
+<li>theora_granule_time()
+: <a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora.h</a>
+</li>
+<li>theora_info_clear()
+: <a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora.h</a>
+</li>
+<li>theora_info_init()
+: <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora.h</a>
+</li>
+<li>theora_packet_isheader()
+: <a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora.h</a>
+</li>
+<li>theora_packet_iskeyframe()
+: <a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora.h</a>
+</li>
+<li>theora_version_number()
+: <a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora.h</a>
+</li>
+<li>theora_version_string()
+: <a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_type.html b/doc/libtheora/html/globals_type.html
new file mode 100644 (file)
index 0000000..d40bf26
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;<ul>
+<li>th_dec_ctx
+: <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">theoradec.h</a>
+</li>
+<li>th_enc_ctx
+: <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">theoraenc.h</a>
+</li>
+<li>th_quant_base
+: <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">codec.h</a>
+</li>
+<li>th_setup_info
+: <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">theoradec.h</a>
+</li>
+<li>th_stripe_decoded_func
+: <a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">theoradec.h</a>
+</li>
+<li>th_ycbcr_buffer
+: <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">codec.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/globals_vars.html b/doc/libtheora/html/globals_vars.html
new file mode 100644 (file)
index 0000000..9fffd53
--- /dev/null
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="globals.html"><span>All</span></a></li>
+      <li><a href="globals_func.html"><span>Functions</span></a></li>
+      <li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
+      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
+      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
+      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
+      <li><a href="globals_defs.html"><span>Defines</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+&nbsp;<ul>
+<li>TH_VP31_HUFF_CODES
+: <a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">theoraenc.h</a>
+</li>
+<li>TH_VP31_QUANT_INFO
+: <a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">theoraenc.h</a>
+</li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/group__basefuncs.html b/doc/libtheora/html/group__basefuncs.html
new file mode 100644 (file)
index 0000000..08d4162
--- /dev/null
@@ -0,0 +1,542 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Functions Shared by Encode and Decode</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Functions Shared by Encode and Decode</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Basic shared functions</h2></td></tr>
+<tr><td colspan="2"><p><a class="anchor" id="amgrpb625c22fa07613c734f71c378fe32d7a"></a> </p>
+<br/><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga04846066738d9f2024fc9961162b2dbc">th_version_string</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves a human-readable string to identify the library vendor and version.  <a href="#ga04846066738d9f2024fc9961162b2dbc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab723a75c0f95b3eb817f7f769846016b">th_version_number</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves the library version number.  <a href="#gab723a75c0f95b3eb817f7f769846016b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga95b10e76fc4c05d0240ea2dfd9fd62bd">th_granule_frame</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute frame index, starting at <code>0</code>.  <a href="#ga95b10e76fc4c05d0240ea2dfd9fd62bd"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga707e1e281de788af0df39ef00f3fb432">th_granule_time</a> (void *_encdec, ogg_int64_t _granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a granule position to an absolute time in seconds.  <a href="#ga707e1e281de788af0df39ef00f3fb432"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga02f3f38261a9b39452d8a5e6f8737cc1">th_packet_isheader</a> (ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a Theora packet is a header or not.  <a href="#ga02f3f38261a9b39452d8a5e6f8737cc1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gafe95cfd06f0fef413266c9168a66248a">th_packet_iskeyframe</a> (ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines whether a theora packet is a key frame or not.  <a href="#gafe95cfd06f0fef413266c9168a66248a"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions for manipulating header data</h2></td></tr>
+<tr><td colspan="2"><p><a class="anchor" id="amgrp14ef5f819e97c870c128539ed1f334e3"></a> </p>
+<br/><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926">th_info_init</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure.  <a href="#ga430d9c605816a6ca0bdce3a0b965b926"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gab3d6441ab4a4969859ef5fd78a9e3c1c">th_info_clear</a> (<a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure.  <a href="#gab3d6441ab4a4969859ef5fd78a9e3c1c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c8ab25988e7ea9d7b1e31a54cf58f09">th_comment_init</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="#ga6c8ab25988e7ea9d7b1e31a54cf58f09"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272">th_comment_add</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_comment)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="#ga19a1f7b8032db957df151a34e5ac9272"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf">th_comment_add_tag</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, char *_val)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="#ga6c5edc201ca220a30787ca6c1ddcaeaf"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa">th_comment_query</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag, int _count)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by its tag.  <a href="#ga33c8b4f57a03217636d704c2ebb211fa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc">th_comment_query_count</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc, char *_tag)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag.  <a href="#ga81d518dc4426f63ceaedcbe2668679fc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__basefuncs.html#gae736c1afa514947a3feb223143af95e3">th_comment_clear</a> (<a class="el" href="structth__comment.html">th_comment</a> *_tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure.  <a href="#gae736c1afa514947a3feb223143af95e3"></a><br/></td></tr>
+</table>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="ga19a1f7b8032db957df151a34e5ac9272"></a><!-- doxytag: member="codec.h::th_comment_add" ref="ga19a1f7b8032db957df151a34e5ac9272" args="(th_comment *_tc, char *_comment)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_comment_add </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>_tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>_comment</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Neither <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272" title="Add a comment to an initialized th_comment structure.">th_comment_add()</a> nor <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf" title="Add a comment to an initialized th_comment structure.">th_comment_add_tag()</a> support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure directly. </dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to add the comment to. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_comment</em>&nbsp;</td><td>Must be a null-terminated UTF-8 string containing the comment in "TAG=the value" form. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga6c5edc201ca220a30787ca6c1ddcaeaf"></a><!-- doxytag: member="codec.h::th_comment_add_tag" ref="ga6c5edc201ca220a30787ca6c1ddcaeaf" args="(th_comment *_tc, char *_tag, char *_val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_comment_add_tag </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>_tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>_tag</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>_val</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Neither <a class="el" href="group__basefuncs.html#ga19a1f7b8032db957df151a34e5ac9272" title="Add a comment to an initialized th_comment structure.">th_comment_add()</a> nor <a class="el" href="group__basefuncs.html#ga6c5edc201ca220a30787ca6c1ddcaeaf" title="Add a comment to an initialized th_comment structure.">th_comment_add_tag()</a> support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure directly. </dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to add the comment to. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_tag</em>&nbsp;</td><td>A null-terminated string containing the tag associated with the comment. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_val</em>&nbsp;</td><td>The corresponding value as a null-terminated string. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gae736c1afa514947a3feb223143af95e3"></a><!-- doxytag: member="codec.h::th_comment_clear" ref="gae736c1afa514947a3feb223143af95e3" args="(th_comment *_tc)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_comment_clear </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>_tc</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Clears a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<p>This should be called on a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure after it is no longer needed. It will free all memory used by the structure members. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to clear. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga6c8ab25988e7ea9d7b1e31a54cf58f09"></a><!-- doxytag: member="codec.h::th_comment_init" ref="ga6c8ab25988e7ea9d7b1e31a54cf58f09" args="(th_comment *_tc)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_comment_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>_tc</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Initialize a <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </p>
+<p>This should be called on a freshly allocated <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure before attempting to use it. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>The <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> struct to initialize. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga33c8b4f57a03217636d704c2ebb211fa"></a><!-- doxytag: member="codec.h::th_comment_query" ref="ga33c8b4f57a03217636d704c2ebb211fa" args="(th_comment *_tc, char *_tag, int _count)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* th_comment_query </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>_tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>_tag</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>_count</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Look up a comment value by its tag. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>An initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_tag</em>&nbsp;</td><td>The tag to look up. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_count</em>&nbsp;</td><td>The instance of the tag. The same tag can appear multiple times, each with a distinct value, so an index is required to retrieve them all. The order in which these values appear is significant and should be preserved. Use <a class="el" href="group__basefuncs.html#ga81d518dc4426f63ceaedcbe2668679fc" title="Look up the number of instances of a tag.">th_comment_query_count()</a> to get the legal range for the <em>_count</em> parameter. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A pointer to the queried tag's value. This points directly to data in the <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. It should not be modified or freed by the application, and modifications to the structure may invalidate the pointer. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>If no matching tag is found. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga81d518dc4426f63ceaedcbe2668679fc"></a><!-- doxytag: member="codec.h::th_comment_query_count" ref="ga81d518dc4426f63ceaedcbe2668679fc" args="(th_comment *_tc, char *_tag)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_comment_query_count </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>_tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>_tag</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Look up the number of instances of a tag. </p>
+<p>Call this first when querying for a specific tag and then iterate over the number of instances with separate calls to <a class="el" href="group__basefuncs.html#ga33c8b4f57a03217636d704c2ebb211fa" title="Look up a comment value by its tag.">th_comment_query()</a> to retrieve all the values for that tag in order. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>An initialized <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_tag</em>&nbsp;</td><td>The tag to look up. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The number on instances of this particular tag. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga95b10e76fc4c05d0240ea2dfd9fd62bd"></a><!-- doxytag: member="codec.h::th_granule_frame" ref="ga95b10e76fc4c05d0240ea2dfd9fd62bd" args="(void *_encdec, ogg_int64_t _granpos)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_int64_t th_granule_frame </td>
+          <td>(</td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>_encdec</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_int64_t&nbsp;</td>
+          <td class="paramname"> <em>_granpos</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Converts a granule position to an absolute frame index, starting at <code>0</code>. </p>
+<p>The granule position is interpreted in the context of a given <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle (either will suffice). </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_encdec</em>&nbsp;</td><td>A previously allocated <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_granpos</em>&nbsp;</td><td>The granule position to convert. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The absolute frame index corresponding to <em>_granpos</em>. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The given granule position was invalid (i.e. negative). </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga707e1e281de788af0df39ef00f3fb432"></a><!-- doxytag: member="codec.h::th_granule_time" ref="ga707e1e281de788af0df39ef00f3fb432" args="(void *_encdec, ogg_int64_t _granpos)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double th_granule_time </td>
+          <td>(</td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>_encdec</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_int64_t&nbsp;</td>
+          <td class="paramname"> <em>_granpos</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Converts a granule position to an absolute time in seconds. </p>
+<p>The granule position is interpreted in the context of a given <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle (either will suffice). </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_encdec</em>&nbsp;</td><td>A previously allocated <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> or <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_granpos</em>&nbsp;</td><td>The granule position to convert. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The absolute time in seconds corresponding to <em>_granpos</em>. This is the "end time" for the frame, or the latest time it should be displayed. It is not the presentation time. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The given granule position was invalid (i.e. negative). </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gab3d6441ab4a4969859ef5fd78a9e3c1c"></a><!-- doxytag: member="codec.h::th_info_clear" ref="gab3d6441ab4a4969859ef5fd78a9e3c1c" args="(th_info *_info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_info_clear </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>_info</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Clears a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. </p>
+<p>This should be called on a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure after it is no longer needed. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>The <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct to clear. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga430d9c605816a6ca0bdce3a0b965b926"></a><!-- doxytag: member="codec.h::th_info_init" ref="ga430d9c605816a6ca0bdce3a0b965b926" args="(th_info *_info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_info_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>_info</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Initializes a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure. </p>
+<p>This should be called on a freshly allocated <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure before attempting to use it. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>The <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct to initialize. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga02f3f38261a9b39452d8a5e6f8737cc1"></a><!-- doxytag: member="codec.h::th_packet_isheader" ref="ga02f3f38261a9b39452d8a5e6f8737cc1" args="(ogg_packet *_op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_packet_isheader </td>
+          <td>(</td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>_op</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Determines whether a Theora packet is a header or not. </p>
+<p>This function does no verification beyond checking the packet type bit, so it should not be used for bitstream identification; use <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> for that. As per the Theora specification, an empty (0-byte) packet is treated as a data packet (a delta frame with no coded blocks). </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> containing encoded Theora data. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet is a header packet </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet is a video data packet. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gafe95cfd06f0fef413266c9168a66248a"></a><!-- doxytag: member="codec.h::th_packet_iskeyframe" ref="gafe95cfd06f0fef413266c9168a66248a" args="(ogg_packet *_op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_packet_iskeyframe </td>
+          <td>(</td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>_op</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Determines whether a theora packet is a key frame or not. </p>
+<p>This function does no verification beyond checking the packet type and key frame bits, so it should not be used for bitstream identification; use <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> for that. As per the Theora specification, an empty (0-byte) packet is treated as a delta frame (with no coded blocks). </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> containing encoded Theora data. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet contains a key frame. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet contains a delta frame. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The packet is not a video data packet. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gab723a75c0f95b3eb817f7f769846016b"></a><!-- doxytag: member="codec.h::th_version_number" ref="gab723a75c0f95b3eb817f7f769846016b" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t th_version_number </td>
+          <td>(</td>
+          <td class="paramtype">void&nbsp;</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Retrieves the library version number. </p>
+<p>This is the highest bitstream version that the encoder library will produce, or that the decoder library can decode. This number is composed of a 16-bit major version, 8-bit minor version and 8 bit sub-version, composed as follows: </p>
+<div class="fragment"><pre class="fragment"> (VERSION_MAJOR&lt;&lt;16)+(VERSION_MINOR&lt;&lt;8)+(VERSION_SUBMINOR)
+</pre></div> <dl class="return"><dt><b>Returns:</b></dt><dd>the version number. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga04846066738d9f2024fc9961162b2dbc"></a><!-- doxytag: member="codec.h::th_version_string" ref="ga04846066738d9f2024fc9961162b2dbc" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* th_version_string </td>
+          <td>(</td>
+          <td class="paramtype">void&nbsp;</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Retrieves a human-readable string to identify the library vendor and version. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>the version string. </dd></dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/group__decfuncs.html b/doc/libtheora/html/group__decfuncs.html
new file mode 100644 (file)
index 0000000..d9e658e
--- /dev/null
@@ -0,0 +1,367 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Functions for Decoding</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Functions for Decoding</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Functions for decoding</h2></td></tr>
+<tr><td colspan="2"><p><a class="anchor" id="amgrp9d29c94aa62f20426aa5ff062c7daedd"></a>You must link to <code>libtheoradec</code> if you use any of the functions in this section.</p>
+<p>The functions are listed in the order they are used in a typical decode. The basic steps are:</p>
+<ul>
+<li>Parse the header packets by repeatedly calling <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>.</li>
+<li>Allocate a <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle with <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>.</li>
+<li>Call <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free()</a> to free any memory used for codec setup information.</li>
+<li>Perform any additional decoder configuration with <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl()</a>.</li>
+<li>For each video data packet:<ul>
+<li>Submit the packet to the decoder via <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>.</li>
+<li>Retrieve the uncompressed video data via <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>.</li>
+</ul>
+</li>
+<li>Call <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0" title="Frees an allocated decoder instance.">th_decode_free()</a> to release all decoder memory. </li>
+</ul>
+<br/><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">th_decode_headerin</a> (<a class="el" href="structth__info.html">th_info</a> *_info, <a class="el" href="structth__comment.html">th_comment</a> *_tc, <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **_setup, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decodes the header packets of a Theora stream.  <a href="#ga006d01d36fbe64768c571e6a12b7fc50"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">th_decode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info, const <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates a decoder instance.  <a href="#ga0ef07a9a97849054aa606c595a2d807e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">th_setup_free</a> (<a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Releases all storage used for the decoder setup information.  <a href="#gadef55431b68aaa59d0d7b32b2f118f27"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">th_decode_ctl</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, int _req, void *_buf, size_t _buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decoder control function.  <a href="#ga1a8051958d75b1012573b6e3c8f670e1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">th_decode_packetin</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, const ogg_packet *_op, ogg_int64_t *_granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits a packet containing encoded video data to the decoder.  <a href="#ga31c814bf09b2232aff69c57ae20f04eb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">th_decode_ycbcr_out</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next available frame of decoded Y'CbCr data.  <a href="#gaa9cc8af63fa8540e0fc95572f259cdcb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">th_decode_free</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated decoder instance.  <a href="#gafb6684ad8ba507b71112bc9de148e7d0"></a><br/></td></tr>
+</table>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="ga0ef07a9a97849054aa606c595a2d807e"></a><!-- doxytag: member="theoradec.h::th_decode_alloc" ref="ga0ef07a9a97849054aa606c595a2d807e" args="(const th_info *_info, const th_setup_info *_setup)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a>* th_decode_alloc </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>_info</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>_setup</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Allocates a decoder instance. </p>
+<p><b>Security Warning:</b> The Theora format supports very large frame sizes, potentially even larger than the address space of a 32-bit machine, and creating a decoder context allocates the space for several frames of data. If the allocation fails here, your program will crash, possibly at some future point because the OS kernel returned a valid memory range and will only fail when it tries to map the pages in it the first time they are used. Even if it succeeds, you may experience a denial of service if the frame size is large enough to cause excessive paging. If you are integrating libtheora in a larger application where such things are undesirable, it is highly recommended that you check the frame size in <em>_info</em> before calling this function and refuse to decode streams where it is larger than some reasonable maximum. libtheora will not check this for you, because there may be machines that can handle such streams and applications that wish to. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct filled via <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_setup</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> handle returned via <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The initialized <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>If the decoding parameters were invalid. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga1a8051958d75b1012573b6e3c8f670e1"></a><!-- doxytag: member="theoradec.h::th_decode_ctl" ref="ga1a8051958d75b1012573b6e3c8f670e1" args="(th_dec_ctx *_dec, int _req, void *_buf, size_t _buf_sz)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_decode_ctl </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
+          <td class="paramname"> <em>_dec</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>_req</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>_buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&nbsp;</td>
+          <td class="paramname"> <em>_buf_sz</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Decoder control function. </p>
+<p>This is used to provide advanced control of the decoding process. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_req</em>&nbsp;</td><td>The control code to process. See <a class="el" href="theoradec_8h.html#decctlcodes">the list of available control codes</a> for details. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_buf</em>&nbsp;</td><td>The parameters for this control code. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_buf_sz</em>&nbsp;</td><td>The size of the parameter buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gafb6684ad8ba507b71112bc9de148e7d0"></a><!-- doxytag: member="theoradec.h::th_decode_free" ref="gafb6684ad8ba507b71112bc9de148e7d0" args="(th_dec_ctx *_dec)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_decode_free </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
+          <td class="paramname"> <em>_dec</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Frees an allocated decoder instance. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga006d01d36fbe64768c571e6a12b7fc50"></a><!-- doxytag: member="theoradec.h::th_decode_headerin" ref="ga006d01d36fbe64768c571e6a12b7fc50" args="(th_info *_info, th_comment *_tc, th_setup_info **_setup, ogg_packet *_op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_decode_headerin </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>_info</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>_tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **&nbsp;</td>
+          <td class="paramname"> <em>_setup</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>_op</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Decodes the header packets of a Theora stream. </p>
+<p>This should be called on the initial packets of the stream, in succession, until it returns <code>0</code>, indicating that all headers have been processed, or an error is encountered. At least three header packets are required, and additional optional header packets may follow. This can be used on the first packet of any logical stream to determine if that stream is a Theora stream. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure to fill in. This must have been previously initialized with <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926" title="Initializes a th_info structure.">th_info_init()</a>. The application may immediately begin using the contents of this structure after the first header is decoded, though it must continue to be passed in on all subsequent calls. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_tc</em>&nbsp;</td><td>A <a class="el" href="structth__comment.html" title="The comment information.">th_comment</a> structure to fill in. The application may immediately begin using the contents of this structure after the second header is decoded, though it must continue to be passed in on all subsequent calls. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_setup</em>&nbsp;</td><td>Returns a pointer to additional, private setup information needed by the decoder. The contents of this pointer must be initialized to <code>NULL</code> on the first call, and the returned value must continue to be passed in on all subsequent calls. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> structure which contains one of the initial packets of an Ogg logical stream. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A positive value indicates that a Theora header was successfully processed. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The first video data packet was encountered after all required header packets were parsed. The packet just passed in on this call should be saved and fed to <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a> to begin decoding video data. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td>One of <em>_info</em>, <em>_tc</em>, or <em>_setup</em> was <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EBADHEADER</em>&nbsp;</td><td><em>_op</em> was <code>NULL</code>, the packet was not the next header packet in the expected sequence, or the format of the header data was invalid. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EVERSION</em>&nbsp;</td><td>The packet data was a Theora info header, but for a bitstream version not decodable with this version of <code>libtheoradec</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_ENOTFORMAT</em>&nbsp;</td><td>The packet was not a Theora header. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga31c814bf09b2232aff69c57ae20f04eb"></a><!-- doxytag: member="theoradec.h::th_decode_packetin" ref="ga31c814bf09b2232aff69c57ae20f04eb" args="(th_dec_ctx *_dec, const ogg_packet *_op, ogg_int64_t *_granpos)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_decode_packetin </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
+          <td class="paramname"> <em>_dec</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>_op</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_int64_t *&nbsp;</td>
+          <td class="paramname"> <em>_granpos</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Submits a packet containing encoded video data to the decoder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> containing encoded video data. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_granpos</em>&nbsp;</td><td>Returns the granule position of the decoded packet. If non-<code>NULL</code>, the granule position for this specific packet is stored in this location. This is computed incrementally from previously decoded packets. After a seek, the correct granule position must be set via <a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5" title="Sets the granule position.">TH_DECCTL_SET_GRANPOS</a> for this to work properly. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. A new decoded frame can be retrieved by calling <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_DUPFRAME</em>&nbsp;</td><td>The packet represented a dropped (0-byte) frame. The player can skip the call to <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>, as the contents of the decoded frame buffer have not changed. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec</em> or <em>_op</em> was <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EBADPACKET</em>&nbsp;</td><td><em>_op</em> does not contain encoded video data. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>The video data uses bitstream features which this library does not support. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gaa9cc8af63fa8540e0fc95572f259cdcb"></a><!-- doxytag: member="theoradec.h::th_decode_ycbcr_out" ref="gaa9cc8af63fa8540e0fc95572f259cdcb" args="(th_dec_ctx *_dec, th_ycbcr_buffer _ycbcr)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_decode_ycbcr_out </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td>
+          <td class="paramname"> <em>_dec</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>&nbsp;</td>
+          <td class="paramname"> <em>_ycbcr</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Outputs the next available frame of decoded Y'CbCr data. </p>
+<p>If a striped decode callback has been set with <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>, then the application does not need to call this function. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_dec</em>&nbsp;</td><td>A <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_ycbcr</em>&nbsp;</td><td>A video buffer structure to fill in. <code>libtheoradec</code> will fill in all the members of this structure, including the pointers to the uncompressed video data. The memory for this video data is owned by <code>libtheoradec</code>. It may be freed or overwritten without notification when subsequent frames are decoded. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec</em> or <em>_ycbcr</em> was <code>NULL</code>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gadef55431b68aaa59d0d7b32b2f118f27"></a><!-- doxytag: member="theoradec.h::th_setup_free" ref="gadef55431b68aaa59d0d7b32b2f118f27" args="(th_setup_info *_setup)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_setup_free </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>_setup</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Releases all storage used for the decoder setup information. </p>
+<p>This should be called after you no longer want to create any decoders for a stream whose headers you have parsed with <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_setup</em>&nbsp;</td><td>The setup information to free. This can safely be <code>NULL</code>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/group__encfuncs.html b/doc/libtheora/html/group__encfuncs.html
new file mode 100644 (file)
index 0000000..a080c39
--- /dev/null
@@ -0,0 +1,317 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Functions for Encoding</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Functions for Encoding</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Functions for encoding</h2></td></tr>
+<tr><td colspan="2"><p><a class="anchor" id="amgrpc58fb8743a7ca83eb895d57e29e032c8"></a>You must link to <code>libtheoraenc</code> and <code>libtheoradec</code> if you use any of the functions in this section.</p>
+<p>The functions are listed in the order they are used in a typical encode. The basic steps are:</p>
+<ul>
+<li>Fill in a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure with details on the format of the video you wish to encode.</li>
+<li>Allocate a <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle with <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc()</a>.</li>
+<li>Perform any additional encoder configuration required with <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl()</a>.</li>
+<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader()</a> to retrieve all the header packets.</li>
+<li>For each uncompressed frame:<ul>
+<li>Submit the uncompressed frame via <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in()</a></li>
+<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout()</a> to retrieve any video data packets that are ready.</li>
+</ul>
+</li>
+<li>Call <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680" title="Frees an allocated encoder instance.">th_encode_free()</a> to release all encoder memory. </li>
+</ul>
+<br/><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">th_encode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates an encoder instance.  <a href="#gaa91e47bc9dd5f6ee52045bd7b815e5a7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">th_encode_ctl</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _req, void *_buf, size_t _buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function.  <a href="#ga3a427f6514dfdc01ea72172c469d51d9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">th_encode_flushheader</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="structth__comment.html">th_comment</a> *_comments, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next header packet.  <a href="#ga9439d61b566039d194ff782681fbc408"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">th_encode_ycbcr_in</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits an uncompressed frame to the encoder.  <a href="#gadbe7dd66b411c2d61ab8153c15308750"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">th_encode_packetout</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _last, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves encoded video data packets.  <a href="#ga96d8ac1dda53187455352f99bbb5b04b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">th_encode_free</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated encoder instance.  <a href="#ga36b23d216532231925c4107894204680"></a><br/></td></tr>
+</table>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="gaa91e47bc9dd5f6ee52045bd7b815e5a7"></a><!-- doxytag: member="theoraenc.h::th_encode_alloc" ref="gaa91e47bc9dd5f6ee52045bd7b815e5a7" args="(const th_info *_info)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a>* th_encode_alloc </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structth__info.html">th_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>_info</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Allocates an encoder instance. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_info</em>&nbsp;</td><td>A <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct filled with the desired encoding parameters. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The initialized <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>If the encoding parameters were invalid. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga3a427f6514dfdc01ea72172c469d51d9"></a><!-- doxytag: member="theoraenc.h::th_encode_ctl" ref="ga3a427f6514dfdc01ea72172c469d51d9" args="(th_enc_ctx *_enc, int _req, void *_buf, size_t _buf_sz)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_encode_ctl </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
+          <td class="paramname"> <em>_enc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>_req</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>_buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&nbsp;</td>
+          <td class="paramname"> <em>_buf_sz</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Encoder control function. </p>
+<p>This is used to provide advanced control the encoding process. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_req</em>&nbsp;</td><td>The control code to process. See <a class="el" href="theoraenc_8h.html#encctlcodes">the list of available control codes</a> for details. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_buf</em>&nbsp;</td><td>The parameters for this control code. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_buf_sz</em>&nbsp;</td><td>The size of the parameter buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga9439d61b566039d194ff782681fbc408"></a><!-- doxytag: member="theoraenc.h::th_encode_flushheader" ref="ga9439d61b566039d194ff782681fbc408" args="(th_enc_ctx *_enc, th_comment *_comments, ogg_packet *_op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_encode_flushheader </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
+          <td class="paramname"> <em>_enc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structth__comment.html">th_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>_comments</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>_op</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Outputs the next header packet. </p>
+<p>This should be called repeatedly after encoder initialization until it returns 0 in order to get all of the header packets, in order, before encoding actual video data. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_comments</em>&nbsp;</td><td>The metadata to place in the comment header, when it is encoded. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> structure to fill. All of the elements of this structure will be set, including a pointer to the header data. The memory for the header data is owned by <code>libtheoraenc</code>, and may be invalidated when the next encoder function is called. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A positive value indicates that a header packet was successfully produced. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No packet was produced, and no more header packets remain. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em>, <em>_comments</em>, or <em>_op</em> was <code>NULL</code>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga36b23d216532231925c4107894204680"></a><!-- doxytag: member="theoraenc.h::th_encode_free" ref="ga36b23d216532231925c4107894204680" args="(th_enc_ctx *_enc)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void th_encode_free </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
+          <td class="paramname"> <em>_enc</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Frees an allocated encoder instance. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga96d8ac1dda53187455352f99bbb5b04b"></a><!-- doxytag: member="theoraenc.h::th_encode_packetout" ref="ga96d8ac1dda53187455352f99bbb5b04b" args="(th_enc_ctx *_enc, int _last, ogg_packet *_op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_encode_packetout </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
+          <td class="paramname"> <em>_enc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>_last</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>_op</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Retrieves encoded video data packets. </p>
+<p>This should be called repeatedly after each frame is submitted to flush any encoded packets, until it returns 0. The encoder will not buffer these packets as subsequent frames are compressed, so a failure to do so will result in lost video data. </p>
+<dl class="note"><dt><b>Note:</b></dt><dd>Currently the encoder operates in a one-frame-in, one-packet-out manner. However, this may be changed in the future. </dd></dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_last</em>&nbsp;</td><td>Set this flag to a non-zero value if no more uncompressed frames will be submitted. This ensures that a proper EOS flag is set on the last packet. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_op</em>&nbsp;</td><td>An <code>ogg_packet</code> structure to fill. All of the elements of this structure will be set, including a pointer to the video data. The memory for the video data is owned by <code>libtheoraenc</code>, and may be invalidated when the next encoder function is called. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A positive value indicates that a video data packet was successfully produced. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No packet was produced, and no more encoded video data remains. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_op</em> was <code>NULL</code>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gadbe7dd66b411c2d61ab8153c15308750"></a><!-- doxytag: member="theoraenc.h::th_encode_ycbcr_in" ref="gadbe7dd66b411c2d61ab8153c15308750" args="(th_enc_ctx *_enc, th_ycbcr_buffer _ycbcr)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int th_encode_ycbcr_in </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td>
+          <td class="paramname"> <em>_enc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a>&nbsp;</td>
+          <td class="paramname"> <em>_ycbcr</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Submits an uncompressed frame to the encoder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_enc</em>&nbsp;</td><td>A <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_ycbcr</em>&nbsp;</td><td>A buffer of Y'CbCr data to encode. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc</em> or <em>_ycbcr</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>The buffer size does not match the frame size the encoder was initialized with, or encoding has already completed. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/group__oldfuncs.html b/doc/libtheora/html/group__oldfuncs.html
new file mode 100644 (file)
index 0000000..89cbd91
--- /dev/null
@@ -0,0 +1,1606 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Legacy pre-1.0 C API</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Legacy pre-1.0 C API</h1><table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html">yuv_buffer</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A YUV buffer for passing uncompressed frames to and from the codec.  <a href="structyuv__buffer.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html">theora_info</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Theora bitstream info.  <a href="structtheora__info.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html">theora_state</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Codec internal state and context.  <a href="structtheora__state.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html">theora_comment</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comment header metadata.  <a href="structtheora__comment.html#_details">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Files</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theora_8h.html">theora.h</a></td></tr>
+
+<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>The libtheora pre-1.0 legacy C API. </p>
+<br/></td></tr>
+</p>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">OC_FAULT</a>&nbsp;&nbsp;&nbsp;-1</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">General failure.  <a href="#gaa4370e13ed3aea6441ccf69dcab2506e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">OC_EINVAL</a>&nbsp;&nbsp;&nbsp;-10</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Library encountered invalid internal data.  <a href="#ga43d15091b1a03a734a124e9a04d3be55"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">OC_DISABLED</a>&nbsp;&nbsp;&nbsp;-11</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Requested action is disabled.  <a href="#ga38b9fa0af856d5930c534db26e2ac2d1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">OC_BADHEADER</a>&nbsp;&nbsp;&nbsp;-20</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Header packet was corrupt/invalid.  <a href="#ga809cbad2eb36be17a235a3cadfb737ba"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">OC_NOTFORMAT</a>&nbsp;&nbsp;&nbsp;-21</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is not a theora packet.  <a href="#ga9558d6d9eacd2273c8da27f945d725ad"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">OC_VERSION</a>&nbsp;&nbsp;&nbsp;-22</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bitstream version is not handled.  <a href="#ga4611cfd61160405721d1e2ab0ec2564b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">OC_IMPL</a>&nbsp;&nbsp;&nbsp;-23</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Feature or action not implemented.  <a href="#ga895dc2597b3bf9c97bf7701c6eff5b0c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">OC_BADPACKET</a>&nbsp;&nbsp;&nbsp;-24</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is corrupt.  <a href="#ga117774c062a63dfad2a5b4d092fa2bb1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">OC_NEWPACKET</a>&nbsp;&nbsp;&nbsp;-25</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is an (ignorable) unhandled extension.  <a href="#ga60be4dc92c933eac3542bce3ce076496"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">OC_DUPFRAME</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is a dropped frame.  <a href="#ga84a8d2f5080ad62b415a4e7551941cbb"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> { <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">OC_CS_UNSPECIFIED</a>, 
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">OC_CS_ITU_REC_470M</a>, 
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">OC_CS_ITU_REC_470BG</a>, 
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">OC_CS_NSPACES</a>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Colorspace. </p>
+ <a href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> { <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">OC_PF_420</a>, 
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">OC_PF_RSVD</a>, 
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">OC_PF_422</a>, 
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">OC_PF_444</a>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Chroma subsampling. </p>
+ <a href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora_version_string</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a human-readable string to identify the encoder vendor and version.  <a href="#ga5a3da8fd262a60f055f96536eec06df2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora_version_number</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a 32-bit version number.  <a href="#gad181f4b19d455dcc2bef2533530b84c8"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora_encode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the theora encoder.  <a href="#ga0f7ad4d4b2343278cb4ba8fb2bd5109a"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora_encode_YUVin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submit a YUV buffer to the theora encoder.  <a href="#gac0d33d896ca70cedfc94c5986d947078"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora_encode_packetout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, int last_p, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request the next packet of encoded video.  <a href="#ga5f4929677a735bc2198c2309d235f1b3"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora_encode_header</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the initial header.  <a href="#ga451feb58d6bde726edbae193689887be"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora_encode_comment</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a comment header packet from provided metadata.  <a href="#ga45e8db0713eaaca0f1144f3724cb834a"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora_encode_tables</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the codebook tables for the stream.  <a href="#ga5085baf20855b283fa01fc948505d9d2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora_decode_header</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ci, <a class="el" href="structtheora__comment.html">theora_comment</a> *cc, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.  <a href="#ga02915e63c1bd733ee291f577a8b75a82"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora_decode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle for decoding.  <a href="#ga264907c66003799ff77ecbd09eb33d2c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora_decode_packetin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Input a packet containing encoded data into the theora decoder.  <a href="#gaa65a9e53b46fd54ab344bd599fa96975"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora_decode_YUVout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output the next available frame of decoded YUV data.  <a href="#ga09d47c80e1e94bff0a46a496816b8daa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora_packet_isheader</a> (ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> for that.  <a href="#gab969f9d0407683f0e5abe73d0839a25b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora_packet_iskeyframe</a> (ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a keyframe or not.  <a href="#ga39ccc8f847a748d7074c926b4fdd12b2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora_granule_shift</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report the granulepos shift radix.  <a href="#gacd9360e6a47139c761002410af457a02"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora_granule_frame</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to an absolute frame index, starting at 0.  <a href="#ga7bfa3ceb2fb4b41a282456c56e1dd269"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora_granule_time</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to absolute time in seconds.  <a href="#ga4376358b12b9fa23ce6fe21cb5c65ac6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora_info_init</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure.  <a href="#ga3091c87d48f1faba018c5956379a6d90"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora_info_clear</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure.  <a href="#gaba7022d58edbc4825cacad03f68b3e0d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora_clear</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all internal data associated with a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle.  <a href="#gab252d5d81b925136dda72e8f1c09c5eb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora_comment_init</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="#ga811b92785df3bdbbebb3de612d9d6ce0"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora_comment_add</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *comment)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="#ga650642ed23894e41109bbc42ec393ed4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora_comment_add_tag</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, char *value)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="#ga339bd80b5bf4bb168b7052d8ec0b5a92"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora_comment_query</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, int count)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by tag.  <a href="#ga4361f6001abb5c83c36a2ddfb648a8dc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora_comment_query_count</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag.  <a href="#ga10f66a3c752442a3e0c0098e0f88df8b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora_comment_clear</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> struct so that it can be freed.  <a href="#ga04c07c2eefba3a433e43f9fbde14719f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora_control</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, int req, void *buf, size_t buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function.  <a href="#ga186773db3bc8cd550047e7df1b2ba2c9"></a><br/></td></tr>
+<tr><td colspan="2"><h2>theora_control() codes</h2></td></tr>
+<tr><td colspan="2"><p><a class="anchor" id="amgrp13fd61986cff4566fe89a40e30b74ad9"></a> </p>
+<br/><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">TH_DECCTL_GET_PPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the maximum post-processing level.  <a href="#gab31f251c9319f2140d247585d30b3d07"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">TH_DECCTL_SET_PPLEVEL</a>&nbsp;&nbsp;&nbsp;(3)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the post-processing level.  <a href="#ga87774c35e1a755a84e2d705b38ebef0d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>&nbsp;&nbsp;&nbsp;(4)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the maximum distance between key frames.  <a href="#ga27e755e15b4b5604c54974b304037a49"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">TH_DECCTL_SET_GRANPOS</a>&nbsp;&nbsp;&nbsp;(5)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the granule position.  <a href="#ga1e870c654d35394f0d490045df04e0f5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">TH_ENCCTL_SET_QUANT_PARAMS</a>&nbsp;&nbsp;&nbsp;(2)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the quantization parameters to use.  <a href="#ga3befcdd66678f8d27034f9c4b16d1b9c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">TH_ENCCTL_SET_VP3_COMPATIBLE</a>&nbsp;&nbsp;&nbsp;(10)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disables any encoder features that would prevent lossless transcoding back to VP3.  <a href="#ga382d685a39a34d8e6ba76b00d804efd8"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">TH_ENCCTL_GET_SPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(12)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum speed level.  <a href="#ga9baf5bdd206e80c78a8fd44687e89783"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">TH_ENCCTL_SET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(14)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the speed level.  <a href="#gabd9fbcb6a25a77d991d3620164fe59d6"></a><br/></td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ga809cbad2eb36be17a235a3cadfb737ba"></a><!-- doxytag: member="theora.h::OC_BADHEADER" ref="ga809cbad2eb36be17a235a3cadfb737ba" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_BADHEADER&nbsp;&nbsp;&nbsp;-20</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Header packet was corrupt/invalid. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga117774c062a63dfad2a5b4d092fa2bb1"></a><!-- doxytag: member="theora.h::OC_BADPACKET" ref="ga117774c062a63dfad2a5b4d092fa2bb1" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_BADPACKET&nbsp;&nbsp;&nbsp;-24</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Packet is corrupt. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga38b9fa0af856d5930c534db26e2ac2d1"></a><!-- doxytag: member="theora.h::OC_DISABLED" ref="ga38b9fa0af856d5930c534db26e2ac2d1" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_DISABLED&nbsp;&nbsp;&nbsp;-11</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Requested action is disabled. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga84a8d2f5080ad62b415a4e7551941cbb"></a><!-- doxytag: member="theora.h::OC_DUPFRAME" ref="ga84a8d2f5080ad62b415a4e7551941cbb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_DUPFRAME&nbsp;&nbsp;&nbsp;1</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Packet is a dropped frame. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga43d15091b1a03a734a124e9a04d3be55"></a><!-- doxytag: member="theora.h::OC_EINVAL" ref="ga43d15091b1a03a734a124e9a04d3be55" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_EINVAL&nbsp;&nbsp;&nbsp;-10</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Library encountered invalid internal data. </p>
+
+</div>
+</div>
+<a class="anchor" id="gaa4370e13ed3aea6441ccf69dcab2506e"></a><!-- doxytag: member="theora.h::OC_FAULT" ref="gaa4370e13ed3aea6441ccf69dcab2506e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_FAULT&nbsp;&nbsp;&nbsp;-1</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>General failure. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga895dc2597b3bf9c97bf7701c6eff5b0c"></a><!-- doxytag: member="theora.h::OC_IMPL" ref="ga895dc2597b3bf9c97bf7701c6eff5b0c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_IMPL&nbsp;&nbsp;&nbsp;-23</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Feature or action not implemented. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga60be4dc92c933eac3542bce3ce076496"></a><!-- doxytag: member="theora.h::OC_NEWPACKET" ref="ga60be4dc92c933eac3542bce3ce076496" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_NEWPACKET&nbsp;&nbsp;&nbsp;-25</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Packet is an (ignorable) unhandled extension. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga9558d6d9eacd2273c8da27f945d725ad"></a><!-- doxytag: member="theora.h::OC_NOTFORMAT" ref="ga9558d6d9eacd2273c8da27f945d725ad" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_NOTFORMAT&nbsp;&nbsp;&nbsp;-21</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Packet is not a theora packet. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga4611cfd61160405721d1e2ab0ec2564b"></a><!-- doxytag: member="theora.h::OC_VERSION" ref="ga4611cfd61160405721d1e2ab0ec2564b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define OC_VERSION&nbsp;&nbsp;&nbsp;-22</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Bitstream version is not handled. </p>
+
+</div>
+</div>
+<a class="anchor" id="gab31f251c9319f2140d247585d30b3d07"></a><!-- doxytag: member="theora.h::TH_DECCTL_GET_PPLEVEL_MAX" ref="gab31f251c9319f2140d247585d30b3d07" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_GET_PPLEVEL_MAX&nbsp;&nbsp;&nbsp;(1)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Get the maximum post-processing level. </p>
+<p>The decoder supports a post-processing filter that can improve the appearance of the decoded images. This returns the highest level setting for this post-processor, corresponding to maximum improvement and computational expense. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga1e870c654d35394f0d490045df04e0f5"></a><!-- doxytag: member="theora.h::TH_DECCTL_SET_GRANPOS" ref="ga1e870c654d35394f0d490045df04e0f5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_GRANPOS&nbsp;&nbsp;&nbsp;(5)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Set the granule position. </p>
+<p>Call this after a seek, to update the internal granulepos in the decoder, to insure that subsequent frames are marked properly. If you track timestamps yourself and do not use the granule postion returned by the decoder, then you do not need to use this control. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga87774c35e1a755a84e2d705b38ebef0d"></a><!-- doxytag: member="theora.h::TH_DECCTL_SET_PPLEVEL" ref="ga87774c35e1a755a84e2d705b38ebef0d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_PPLEVEL&nbsp;&nbsp;&nbsp;(3)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Set the post-processing level. </p>
+<p>Sets the level of post-processing to use when decoding the compressed stream. This must be a value between zero (off) and the maximum returned by TH_DECCTL_GET_PPLEVEL_MAX. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga9baf5bdd206e80c78a8fd44687e89783"></a><!-- doxytag: member="theora.h::TH_ENCCTL_GET_SPLEVEL_MAX" ref="ga9baf5bdd206e80c78a8fd44687e89783" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_GET_SPLEVEL_MAX&nbsp;&nbsp;&nbsp;(12)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Gets the maximum speed level. </p>
+<p>Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. CQI, etc.).</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td>int: The maximum encoding speed level. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga27e755e15b4b5604c54974b304037a49"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE" ref="ga27e755e15b4b5604c54974b304037a49" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE&nbsp;&nbsp;&nbsp;(4)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the maximum distance between key frames. </p>
+<p>This can be changed during an encode, but will be bounded by <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position...">th_info::keyframe_granule_shift</a></code>. If it is set before encoding begins, <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position...">th_info::keyframe_granule_shift</a> will be enlarged appropriately.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The maximum distance between key frames. </td></tr>
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The actual maximum distance set. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(ogg_uint32_t)</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga3befcdd66678f8d27034f9c4b16d1b9c"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_QUANT_PARAMS" ref="ga3befcdd66678f8d27034f9c4b16d1b9c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_QUANT_PARAMS&nbsp;&nbsp;&nbsp;(2)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the quantization parameters to use. </p>
+<p><a class="anchor" id="encctlcodes_old"></a> The parameters are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default parameters.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td>Encoding has already begun, the quantization parameters are not acceptable to this version of the encoder, <em>buf</em> is <code>NULL</code> and <em>buf_sz</em> is not zero, or <em>buf</em> is non-<code>NULL</code> and <em>buf_sz</em> is not <code>sizeof(<a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a>)</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gabd9fbcb6a25a77d991d3620164fe59d6"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_SPLEVEL" ref="gabd9fbcb6a25a77d991d3620164fe59d6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_SPLEVEL&nbsp;&nbsp;&nbsp;(14)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the speed level. </p>
+<p>By default a speed value of 1 is used.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td>int: The new encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga382d685a39a34d8e6ba76b00d804efd8"></a><!-- doxytag: member="theora.h::TH_ENCCTL_SET_VP3_COMPATIBLE" ref="ga382d685a39a34d8e6ba76b00d804efd8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_VP3_COMPATIBLE&nbsp;&nbsp;&nbsp;(10)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Disables any encoder features that would prevent lossless transcoding back to VP3. </p>
+<p>This primarily means disabling block-level QI values and not using 4MV mode when any of the luma blocks in a macro block are not coded. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-compatible. If you enable VP3-compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-multiple-of-16 width or height), then non-VP3 bitstream features will still be disabled, but the stream will still not be VP3-compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-level features will be enabled or disabled as requested.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>int</code>: a non-zero value to enable VP3 compatibility, or 0 to disable it (the default). </td></tr>
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>buf</em>&nbsp;</td><td><code>int</code>: 1 if all bitstream features required for VP3-compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>OC_FAULT</em>&nbsp;</td><td><em><a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a></em> or <em>buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td><em>buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_IMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="gaa567da4ce591f7373149ce3ef3acdac9"></a><!-- doxytag: member="theora.h::theora_colorspace" ref="gaa567da4ce591f7373149ce3ef3acdac9" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>A Colorspace. </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f"></a><!-- doxytag: member="OC_CS_UNSPECIFIED" ref="ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f" args="" -->OC_CS_UNSPECIFIED</em>&nbsp;</td><td>
+<p>The colorspace is unknown or unspecified. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294"></a><!-- doxytag: member="OC_CS_ITU_REC_470M" ref="ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294" args="" -->OC_CS_ITU_REC_470M</em>&nbsp;</td><td>
+<p>This is the best option for 'NTSC' content. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a"></a><!-- doxytag: member="OC_CS_ITU_REC_470BG" ref="ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a" args="" -->OC_CS_ITU_REC_470BG</em>&nbsp;</td><td>
+<p>This is the best option for 'PAL' content. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186"></a><!-- doxytag: member="OC_CS_NSPACES" ref="ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186" args="" -->OC_CS_NSPACES</em>&nbsp;</td><td>
+<p>This marks the end of the defined colorspaces. </p>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gae169da05bfaaf4e964a6866552d45079"></a><!-- doxytag: member="theora.h::theora_pixelformat" ref="gae169da05bfaaf4e964a6866552d45079" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>A Chroma subsampling. </p>
+<p>These enumerate the available chroma subsampling options supported by the theora format. See Section 4.4 of the specification for exact definitions. </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b"></a><!-- doxytag: member="OC_PF_420" ref="ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b" args="" -->OC_PF_420</em>&nbsp;</td><td>
+<p>Chroma subsampling by 2 in each direction (4:2:0). </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb"></a><!-- doxytag: member="OC_PF_RSVD" ref="ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb" args="" -->OC_PF_RSVD</em>&nbsp;</td><td>
+<p>Reserved value. </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b"></a><!-- doxytag: member="OC_PF_422" ref="ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b" args="" -->OC_PF_422</em>&nbsp;</td><td>
+<p>Horizonatal chroma subsampling by 2 (4:2:2). </p>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044"></a><!-- doxytag: member="OC_PF_444" ref="ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044" args="" -->OC_PF_444</em>&nbsp;</td><td>
+<p>No chroma subsampling at all (4:4:4). </p>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="gab252d5d81b925136dda72e8f1c09c5eb"></a><!-- doxytag: member="theora.h::theora_clear" ref="gab252d5d81b925136dda72e8f1c09c5eb" args="(theora_state *t)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_clear </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>t</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Free all internal data associated with a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga650642ed23894e41109bbc42ec393ed4"></a><!-- doxytag: member="theora.h::theora_comment_add" ref="ga650642ed23894e41109bbc42ec393ed4" args="(theora_comment *tc, char *comment)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_comment_add </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>comment</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>A previously initialized theora comment structure </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>comment</em>&nbsp;</td><td>A null-terminated string encoding the comment in the form "TAG=the value"</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Neither <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4" title="Add a comment to an initialized theora_comment structure.">theora_comment_add()</a> nor <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92" title="Add a comment to an initialized theora_comment structure.">theora_comment_add_tag()</a> support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure directly. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga339bd80b5bf4bb168b7052d8ec0b5a92"></a><!-- doxytag: member="theora.h::theora_comment_add_tag" ref="ga339bd80b5bf4bb168b7052d8ec0b5a92" args="(theora_comment *tc, char *tag, char *value)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_comment_add_tag </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>tag</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>A previously initialized theora comment structure </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td>A null-terminated string containing the tag associated with the comment. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>The corresponding value as a null-terminated string</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Neither <a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4" title="Add a comment to an initialized theora_comment structure.">theora_comment_add()</a> nor <a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92" title="Add a comment to an initialized theora_comment structure.">theora_comment_add_tag()</a> support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure directly. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga04c07c2eefba3a433e43f9fbde14719f"></a><!-- doxytag: member="theora.h::theora_comment_clear" ref="ga04c07c2eefba3a433e43f9fbde14719f" args="(theora_comment *tc)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_comment_clear </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>tc</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Clear an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> struct so that it can be freed. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>An allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga811b92785df3bdbbebb3de612d9d6ce0"></a><!-- doxytag: member="theora.h::theora_comment_init" ref="ga811b92785df3bdbbebb3de612d9d6ce0" args="(theora_comment *tc)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_comment_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>tc</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Initialize an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>An allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga4361f6001abb5c83c36a2ddfb648a8dc"></a><!-- doxytag: member="theora.h::theora_comment_query" ref="ga4361f6001abb5c83c36a2ddfb648a8dc" args="(theora_comment *tc, char *tag, int count)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* theora_comment_query </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>tag</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Look up a comment value by tag. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>Tn initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td>The tag to look up </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>The instance of the tag. The same tag can appear multiple times, each with a distinct and ordered value, so an index is required to retrieve them all. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A pointer to the queried tag's value </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>No matching tag is found</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>Use <a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b" title="Look up the number of instances of a tag.">theora_comment_query_count()</a> to get the legal range for the count parameter. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga10f66a3c752442a3e0c0098e0f88df8b"></a><!-- doxytag: member="theora.h::theora_comment_query_count" ref="ga10f66a3c752442a3e0c0098e0f88df8b" args="(theora_comment *tc, char *tag)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_comment_query_count </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>tag</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Look up the number of instances of a tag. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>An initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>tag</em>&nbsp;</td><td>The tag to look up </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The number on instances of a particular tag.</dd></dl>
+<p>Call this first when querying for a specific tag and then interate over the number of instances with separate calls to <a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc" title="Look up a comment value by tag.">theora_comment_query()</a> to retrieve all instances in order. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga186773db3bc8cd550047e7df1b2ba2c9"></a><!-- doxytag: member="theora.h::theora_control" ref="ga186773db3bc8cd550047e7df1b2ba2c9" args="(theora_state *th, int req, void *buf, size_t buf_sz)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_control </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>req</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void *&nbsp;</td>
+          <td class="paramname"> <em>buf</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">size_t&nbsp;</td>
+          <td class="paramname"> <em>buf_sz</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Encoder control function. </p>
+<p>This is used to provide advanced control the encoding process. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>req</em>&nbsp;</td><td>The control code to process. See <a class="el" href="group__oldfuncs.html#encctlcodes_old">the list of available </a> control codes for details. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The parameters for this control code. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>buf_sz</em>&nbsp;</td><td>The size of the parameter buffer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga02915e63c1bd733ee291f577a8b75a82"></a><!-- doxytag: member="theora.h::theora_decode_header" ref="ga02915e63c1bd733ee291f577a8b75a82" args="(theora_info *ci, theora_comment *cc, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_decode_header </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>ci</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>cc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ci</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure to fill. This must have been previously initialized with <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90" title="Initialize a theora_info structure.">theora_info_init()</a>. If <em>op</em> contains an initial header, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> will fill <em>ci</em> with the parsed header values. If <em>op</em> contains codebook tables, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> will parse these and attach an internal representation to <em>ci-&gt;codec_setup</em>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>cc</em>&nbsp;</td><td>A <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure to fill. If <em>op</em> contains comment data, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> will fill <em>cc</em> with the parsed comments. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure which you expect contains an initial header, comment data or codebook tables.</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>OC_BADHEADER</em>&nbsp;</td><td><em>op</em> is NULL; OR the first byte of <em>op-&gt;packet</em> has the signature of an initial packet, but op is not a b_o_s packet; OR this packet has the signature of an initial header packet, but an initial header packet has already been seen; OR this packet has the signature of a comment packet, but the initial header has not yet been seen; OR this packet has the signature of a comment packet, but contains invalid data; OR this packet has the signature of codebook tables, but the initial header or comments have not yet been seen; OR this packet has the signature of codebook tables, but contains invalid data; OR the stream being decoded has a compatible version but this packet does not have the signature of a theora initial header, comments, or codebook packet </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_VERSION</em>&nbsp;</td><td>The packet data of <em>op</em> is an initial header with a version which is incompatible with this version of libtheora. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_NEWPACKET</em>&nbsp;</td><td>the stream being decoded has an incompatible (future) version and contains an unknown signature. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="note"><dt><b>Note:</b></dt><dd>The normal usage is that <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> be called on the first three packets of a theora logical bitstream in succession. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga264907c66003799ff77ecbd09eb33d2c"></a><!-- doxytag: member="theora.h::theora_decode_init" ref="ga264907c66003799ff77ecbd09eb33d2c" args="(theora_state *th, theora_info *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_decode_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Initialize a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle for decoding. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>The <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle to initialize. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct filled with the desired decoding parameters. This is of course usually obtained from a previous call to <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a>. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gaa65a9e53b46fd54ab344bd599fa96975"></a><!-- doxytag: member="theora.h::theora_decode_packetin" ref="gaa65a9e53b46fd54ab344bd599fa96975" args="(theora_state *th, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_decode_packetin </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Input a packet containing encoded data into the theora decoder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for decoding. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet containing encoded theora data. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>OC_BADPACKET</em>&nbsp;</td><td><em>op</em> does not contain encoded video data </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga09d47c80e1e94bff0a46a496816b8daa"></a><!-- doxytag: member="theora.h::theora_decode_YUVout" ref="ga09d47c80e1e94bff0a46a496816b8daa" args="(theora_state *th, yuv_buffer *yuv)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_decode_YUVout </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structyuv__buffer.html">yuv_buffer</a> *&nbsp;</td>
+          <td class="paramname"> <em>yuv</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Output the next available frame of decoded YUV data. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for decoding. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>yuv</em>&nbsp;</td><td>A <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> in which libtheora should place the decoded data. Note that the buffer struct itself is allocated by the user, but that the luma and chroma pointers will be filled in by the library. Also note that these luma and chroma regions should be considered read-only by the user. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga45e8db0713eaaca0f1144f3724cb834a"></a><!-- doxytag: member="theora.h::theora_encode_comment" ref="ga45e8db0713eaaca0f1144f3724cb834a" args="(theora_comment *tc, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_comment </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__comment.html">theora_comment</a> *&nbsp;</td>
+          <td class="paramname"> <em>tc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Request a comment header packet from provided metadata. </p>
+<p>A pointer to the comment data is placed in a user-provided ogg_packet structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>tc</em>&nbsp;</td><td>A <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure filled with the desired metadata </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the encoded comment data. The memory for the comment data is owned by libtheora. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga451feb58d6bde726edbae193689887be"></a><!-- doxytag: member="theora.h::theora_encode_header" ref="ga451feb58d6bde726edbae193689887be" args="(theora_state *t, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_header </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>t</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Request a packet containing the initial header. </p>
+<p>A pointer to the header data is placed in a user-provided ogg_packet structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the header data. The memory for the header data is owned by libtheora. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga0f7ad4d4b2343278cb4ba8fb2bd5109a"></a><!-- doxytag: member="theora.h::theora_encode_init" ref="ga0f7ad4d4b2343278cb4ba8fb2bd5109a" args="(theora_state *th, theora_info *ti)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>ti</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Initialize the theora encoder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>The <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle to initialize for encoding. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>ti</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct filled with the desired encoding parameters. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga5f4929677a735bc2198c2309d235f1b3"></a><!-- doxytag: member="theora.h::theora_encode_packetout" ref="ga5f4929677a735bc2198c2309d235f1b3" args="(theora_state *t, int last_p, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_packetout </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>t</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>last_p</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Request the next packet of encoded video. </p>
+<p>The encoded data is placed in a user-provided ogg_packet structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>last_p</em>&nbsp;</td><td>whether this is the last packet the encoder should produce. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to encoded data. The memory for the encoded data is owned by libtheora. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No internal storage exists OR no packet is ready </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The encoding process has completed </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga5085baf20855b283fa01fc948505d9d2"></a><!-- doxytag: member="theora.h::theora_encode_tables" ref="ga5085baf20855b283fa01fc948505d9d2" args="(theora_state *t, ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_tables </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>t</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>op</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Request a packet containing the codebook tables for the stream. </p>
+<p>A pointer to the codebook data is placed in a user-provided ogg_packet structure. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet structure to fill. libtheora will set all elements of this structure, including a pointer to the codebook data. The memory for the header data is owned by libtheora. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gac0d33d896ca70cedfc94c5986d947078"></a><!-- doxytag: member="theora.h::theora_encode_YUVin" ref="gac0d33d896ca70cedfc94c5986d947078" args="(theora_state *t, yuv_buffer *yuv)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_encode_YUVin </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>t</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structyuv__buffer.html">yuv_buffer</a> *&nbsp;</td>
+          <td class="paramname"> <em>yuv</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Submit a YUV buffer to the theora encoder. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>A <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle previously initialized for encoding. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>yuv</em>&nbsp;</td><td>A buffer of YUV data to encode. Note that both the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> struct and the luma/chroma buffers within should be allocated by the user. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>OC_EINVAL</em>&nbsp;</td><td>Encoder is not ready, or is finished. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The size of the given frame differs from those previously input </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga7bfa3ceb2fb4b41a282456c56e1dd269"></a><!-- doxytag: member="theora.h::theora_granule_frame" ref="ga7bfa3ceb2fb4b41a282456c56e1dd269" args="(theora_state *th, ogg_int64_t granulepos)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_int64_t theora_granule_frame </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_int64_t&nbsp;</td>
+          <td class="paramname"> <em>granulepos</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Convert a granulepos to an absolute frame index, starting at 0. </p>
+<p>The granulepos is interpreted in the context of a given <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle.</p>
+<p>Note that while the granulepos encodes the frame count (i.e. starting from 1) this call returns the frame index, starting from zero. Thus One can calculate the presentation time by multiplying the index by the rate.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A previously initialized <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle (encode or decode) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>granulepos</em>&nbsp;</td><td>The granulepos to convert. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The frame index corresponding to <em>granulepos</em>. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The given granulepos is undefined (i.e. negative)</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Thus function was added in the 1.0alpha4 release. </p>
+
+</div>
+</div>
+<a class="anchor" id="gacd9360e6a47139c761002410af457a02"></a><!-- doxytag: member="theora.h::theora_granule_shift" ref="gacd9360e6a47139c761002410af457a02" args="(theora_info *ti)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_granule_shift </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>ti</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Report the granulepos shift radix. </p>
+<p>When embedded in Ogg, Theora uses a two-part granulepos, splitting the 64-bit field into two pieces. The more-significant section represents the frame count at the last keyframe, and the less-significant section represents the count of frames since the last keyframe. In this way the overall field is still non-decreasing with time, but usefully encodes a pointer to the last keyframe, which is necessary for correctly restarting decode after a seek.</p>
+<p>This function reports the number of bits used to represent the distance to the last keyframe, and thus how the granulepos field must be shifted or masked to obtain the two parts.</p>
+<p>Since libtheora returns compressed data in an ogg_packet structure, this may be generally useful even if the Theora packets are not being used in an Ogg container.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>ti</em>&nbsp;</td><td>A previously initialized <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The bit shift dividing the two granulepos fields</dd></dl>
+<p>This function was added in the 1.0alpha5 release. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga4376358b12b9fa23ce6fe21cb5c65ac6"></a><!-- doxytag: member="theora.h::theora_granule_time" ref="ga4376358b12b9fa23ce6fe21cb5c65ac6" args="(theora_state *th, ogg_int64_t granulepos)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">double theora_granule_time </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__state.html">theora_state</a> *&nbsp;</td>
+          <td class="paramname"> <em>th</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">ogg_int64_t&nbsp;</td>
+          <td class="paramname"> <em>granulepos</em></td><td>&nbsp;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Convert a granulepos to absolute time in seconds. </p>
+<p>The granulepos is interpreted in the context of a given <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle, and gives the end time of a frame's presentation as used in Ogg mux ordering.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>th</em>&nbsp;</td><td>A previously initialized <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle (encode or decode) </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>granulepos</em>&nbsp;</td><td>The granulepos to convert. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>The absolute time in seconds corresponding to <em>granulepos</em>. This is the "end time" for the frame, or the latest time it should be displayed. It is not the presentation time. </dd></dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>-1.</em>&nbsp;</td><td>The given granulepos is undefined (i.e. negative), or </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>-1.</em>&nbsp;</td><td>The function has been disabled because floating point support is not available. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gaba7022d58edbc4825cacad03f68b3e0d"></a><!-- doxytag: member="theora.h::theora_info_clear" ref="gaba7022d58edbc4825cacad03f68b3e0d" args="(theora_info *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_info_clear </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>c</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Clear a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. </p>
+<p>All values within the given <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure are cleared, and associated internal codec setup data is freed. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct to initialize. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ga3091c87d48f1faba018c5956379a6d90"></a><!-- doxytag: member="theora.h::theora_info_init" ref="ga3091c87d48f1faba018c5956379a6d90" args="(theora_info *c)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void theora_info_init </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td>
+          <td class="paramname"> <em>c</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Initialize a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure. </p>
+<p>All values within the given <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure are initialized, and space is allocated within libtheora for internal codec setup data. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>A <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct to initialize. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="gab969f9d0407683f0e5abe73d0839a25b"></a><!-- doxytag: member="theora.h::theora_packet_isheader" ref="gab969f9d0407683f0e5abe73d0839a25b" args="(ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_packet_isheader </td>
+          <td>(</td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>op</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> for that. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet containing encoded theora data. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet is a header packet </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet is not a header packet (and so contains frame data)</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Thus function was added in the 1.0alpha4 release. </p>
+
+</div>
+</div>
+<a class="anchor" id="ga39ccc8f847a748d7074c926b4fdd12b2"></a><!-- doxytag: member="theora.h::theora_packet_iskeyframe" ref="ga39ccc8f847a748d7074c926b4fdd12b2" args="(ogg_packet *op)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int theora_packet_iskeyframe </td>
+          <td>(</td>
+          <td class="paramtype">ogg_packet *&nbsp;</td>
+          <td class="paramname"> <em>op</em></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Report whether a theora packet is a keyframe or not. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>op</em>&nbsp;</td><td>An ogg_packet containing encoded theora data. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>The packet contains a keyframe image </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>The packet is contains an interframe delta </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>-1</em>&nbsp;</td><td>The packet is not an image data packet at all</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>Thus function was added in the 1.0alpha4 release. </p>
+
+</div>
+</div>
+<a class="anchor" id="gad181f4b19d455dcc2bef2533530b84c8"></a><!-- doxytag: member="theora.h::theora_version_number" ref="gad181f4b19d455dcc2bef2533530b84c8" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t theora_version_number </td>
+          <td>(</td>
+          <td class="paramtype">void&nbsp;</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Retrieve a 32-bit version number. </p>
+<p>This number is composed of a 16-bit major version, 8-bit minor version and 8 bit sub-version, composed as follows: </p>
+<pre>
+   (VERSION_MAJOR&lt;&lt;16) + (VERSION_MINOR&lt;&lt;8) + (VERSION_SUB)
+</pre> <dl class="return"><dt><b>Returns:</b></dt><dd>The version number. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ga5a3da8fd262a60f055f96536eec06df2"></a><!-- doxytag: member="theora.h::theora_version_string" ref="ga5a3da8fd262a60f055f96536eec06df2" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const char* theora_version_string </td>
+          <td>(</td>
+          <td class="paramtype">void&nbsp;</td>
+          <td class="paramname"></td>
+          <td>&nbsp;)&nbsp;</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Retrieve a human-readable string to identify the encoder vendor and version. </p>
+<dl class="return"><dt><b>Returns:</b></dt><dd>A version string. </dd></dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/index.html b/doc/libtheora/html/index.html
new file mode 100644 (file)
index 0000000..b1c83c1
--- /dev/null
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>libtheora Documentation</h1><h3>1.1.0+svn </h3><h2><a class="anchor" id="intro">
+Introduction</a></h2>
+<p>This is the documentation for <code>libtheora</code> C API. The current reference implementation for <a href="http://www.theora.org/">Theora</a>, a free, patent-unencumbered video codec. Theora is derived from On2's VP3 codec with additional features and integration with Ogg multimedia formats by <a href="http://www.xiph.org/">the Xiph.Org Foundation</a>. Complete documentation of the format itself is available in <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>.</p>
+<h3><a class="anchor" id="Organization">
+Organization</a></h3>
+<p>The functions documented here are actually subdivided into three separate libraries:</p>
+<ul>
+<li><code>libtheoraenc</code> contains the encoder interface, described in <a class="el" href="group__encfuncs.html">Functions for Encoding</a>.</li>
+<li><code>libtheoradec</code> contains the decoder interface and routines shared with the encoder. You must also link to this if you link to <code>libtheoraenc</code>. The routines in this library are described in <a class="el" href="group__decfuncs.html">Functions for Decoding</a> and <a class="el" href="group__basefuncs.html">Functions Shared by Encode and Decode</a>.</li>
+<li><code>libtheora</code> contains the <a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>.</li>
+</ul>
+<p>New code should link to <code>libtheoradec</code> and, if using encoder features, <code>libtheoraenc</code>. Together these two export both the standard and the legacy API, so this is all that is needed by any code. The older <code>libtheora</code> library is provided just for compatibility with older build configurations.</p>
+<p>In general the recommended 1.x API symbols can be distinguished by their <code>th_</code> or <code>TH_</code> namespace prefix. The older, legacy API uses <code>theora_</code> or <code>OC_</code> prefixes instead. </p>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/modules.html b/doc/libtheora/html/modules.html
new file mode 100644 (file)
index 0000000..ad58739
--- /dev/null
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: Module Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>Modules</h1>Here is a list of all modules:<ul>
+<li><a class="el" href="group__basefuncs.html">Functions Shared by Encode and Decode</a></li>
+<li><a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a></li>
+<li><a class="el" href="group__decfuncs.html">Functions for Decoding</a></li>
+<li><a class="el" href="group__encfuncs.html">Functions for Encoding</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__comment.html b/doc/libtheora/html/structth__comment.html
new file mode 100644 (file)
index 0000000..7c6428a
--- /dev/null
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_comment Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>th_comment Struct Reference</h1><!-- doxytag: class="th_comment" -->
+<p>The comment information.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">user_comments</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The array of comment string vectors.  <a href="#ad72830e183e707bb0df423eb73b00de4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">comment_lengths</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An array of the corresponding length of each vector, in bytes.  <a href="#a723dc6fdf75757e70e28eea864b10898"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">comments</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The total number of comment strings.  <a href="#a5990c34932376f070ad0fc314daaeb78"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">vendor</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The null-terminated vendor string.  <a href="#a93fbe894d23603f56843be15b0cbdba0"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The comment information. </p>
+<p>This structure holds the in-stream metadata corresponding to the 'comment' header packet. The comment header is meant to be used much like someone jotting a quick note on the label of a video. It should be a short, to the point text note that can be more than a couple words, but not more than a short paragraph.</p>
+<p>The metadata is stored as a series of (tag, value) pairs, in length-encoded string vectors. The first occurrence of the '=' character delimits the tag and value. A particular tag may occur more than once, and order is significant. The character set encoding for the strings is always UTF-8, but the tag names are limited to ASCII, and treated as case-insensitive. See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 6.3.3 for details.</p>
+<p>In filling in this structure, <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> will null-terminate the user_comment strings for safety. However, the bitstream format itself treats them as 8-bit clean vectors, possibly containing null characters, and so the length array should be treated as their authoritative length. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a723dc6fdf75757e70e28eea864b10898"></a><!-- doxytag: member="th_comment::comment_lengths" ref="a723dc6fdf75757e70e28eea864b10898" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int* <a class="el" href="structth__comment.html#a723dc6fdf75757e70e28eea864b10898">th_comment::comment_lengths</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>An array of the corresponding length of each vector, in bytes. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5990c34932376f070ad0fc314daaeb78"></a><!-- doxytag: member="th_comment::comments" ref="a5990c34932376f070ad0fc314daaeb78" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structth__comment.html#a5990c34932376f070ad0fc314daaeb78">th_comment::comments</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The total number of comment strings. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad72830e183e707bb0df423eb73b00de4"></a><!-- doxytag: member="th_comment::user_comments" ref="ad72830e183e707bb0df423eb73b00de4" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char** <a class="el" href="structth__comment.html#ad72830e183e707bb0df423eb73b00de4">th_comment::user_comments</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The array of comment string vectors. </p>
+
+</div>
+</div>
+<a class="anchor" id="a93fbe894d23603f56843be15b0cbdba0"></a><!-- doxytag: member="th_comment::vendor" ref="a93fbe894d23603f56843be15b0cbdba0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* <a class="el" href="structth__comment.html#a93fbe894d23603f56843be15b0cbdba0">th_comment::vendor</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The null-terminated vendor string. </p>
+<p>This identifies the software used to encode the stream. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__huff__code.html b/doc/libtheora/html/structth__huff__code.html
new file mode 100644 (file)
index 0000000..866e725
--- /dev/null
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_huff_code Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>th_huff_code Struct Reference</h1><!-- doxytag: class="th_huff_code" -->
+<p>A Huffman code for a Theora DCT token.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">pattern</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word.  <a href="#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">nbits</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of bits in the code.  <a href="#aaf97b8f2f90042f7bc136a7b2bc35e35"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>A Huffman code for a Theora DCT token. </p>
+<p>Each set of Huffman codes in a given table must form a complete, prefix-free code. There is no requirement that all the tokens in a table have a valid code, but the current encoder is not optimized to take advantage of this. If each of the five grouops of 16 tables does not contain at least one table with a code for every token, then the encoder may fail to encode certain frames. The complete table in the first group of 16 does not have to be in the same place as the complete table in the other groups, but the complete tables in the remaining four groups must all be in the same place. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="aaf97b8f2f90042f7bc136a7b2bc35e35"></a><!-- doxytag: member="th_huff_code::nbits" ref="aaf97b8f2f90042f7bc136a7b2bc35e35" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structth__huff__code.html#aaf97b8f2f90042f7bc136a7b2bc35e35">th_huff_code::nbits</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The number of bits in the code. </p>
+<p>This must be between 0 and 32, inclusive. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6dd29e3aa5a0c5a2dd5ce1f45b1162b4"></a><!-- doxytag: member="th_huff_code::pattern" ref="a6dd29e3aa5a0c5a2dd5ce1f45b1162b4" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structth__huff__code.html#a6dd29e3aa5a0c5a2dd5ce1f45b1162b4">th_huff_code::pattern</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__img__plane.html b/doc/libtheora/html/structth__img__plane.html
new file mode 100644 (file)
index 0000000..00d8c39
--- /dev/null
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_img_plane Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>th_img_plane Struct Reference</h1><!-- doxytag: class="th_img_plane" -->
+<p>A buffer for a single color plane in an uncompressed image.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The width of this plane.  <a href="#a58cc297a99cd4594c3d30e56f2ed6b74"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The height of this plane.  <a href="#a21aea1367894468de489d529d7eaf44d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">stride</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The offset in bytes between successive rows.  <a href="#ab1100f071ffee3b37e07e3222f819bad"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">data</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A pointer to the beginning of the first row.  <a href="#af8133681516ce88b5a201c1b4b7e6ba2"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>A buffer for a single color plane in an uncompressed image. </p>
+<p>This contains the image data in a left-to-right, top-down format. Each row of pixels is stored contiguously in memory, but successive rows need not be. Use <em>stride</em> to compute the offset of the next row. The encoder accepts both positive <em>stride</em> values (top-down in memory) and negative (bottom-up in memory). The decoder currently always generates images with positive strides. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="af8133681516ce88b5a201c1b4b7e6ba2"></a><!-- doxytag: member="th_img_plane::data" ref="af8133681516ce88b5a201c1b4b7e6ba2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char* <a class="el" href="structth__img__plane.html#af8133681516ce88b5a201c1b4b7e6ba2">th_img_plane::data</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>A pointer to the beginning of the first row. </p>
+
+</div>
+</div>
+<a class="anchor" id="a21aea1367894468de489d529d7eaf44d"></a><!-- doxytag: member="th_img_plane::height" ref="a21aea1367894468de489d529d7eaf44d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structth__img__plane.html#a21aea1367894468de489d529d7eaf44d">th_img_plane::height</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The height of this plane. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab1100f071ffee3b37e07e3222f819bad"></a><!-- doxytag: member="th_img_plane::stride" ref="ab1100f071ffee3b37e07e3222f819bad" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structth__img__plane.html#ab1100f071ffee3b37e07e3222f819bad">th_img_plane::stride</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The offset in bytes between successive rows. </p>
+
+</div>
+</div>
+<a class="anchor" id="a58cc297a99cd4594c3d30e56f2ed6b74"></a><!-- doxytag: member="th_img_plane::width" ref="a58cc297a99cd4594c3d30e56f2ed6b74" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structth__img__plane.html#a58cc297a99cd4594c3d30e56f2ed6b74">th_img_plane::width</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The width of this plane. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__info.html b/doc/libtheora/html/structth__info.html
new file mode 100644 (file)
index 0000000..52f4b9b
--- /dev/null
@@ -0,0 +1,358 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>th_info Struct Reference</h1><!-- doxytag: class="th_info" -->
+<p>Theora bitstream information.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">frame_width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The encoded frame width.  <a href="#a6b8087a4d831da53011a43b8d74087a0"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">frame_height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The encoded frame height.  <a href="#a6b1adc3a16a8336a72692b0a5937214c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">pic_width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The displayed picture width.  <a href="#a5048edf77b141dd3e9a92ca85e317345"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">pic_height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The displayed picture height.  <a href="#a775178474283c5990ba73f9ba7f6b88b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">pic_x</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The X offset of the displayed picture.  <a href="#a5b3f834bcf141564e7bb14f49101870f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">pic_y</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The Y offset of the displayed picture.  <a href="#a8aacc575cab2dfe3735001c2ad32aa14"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">colorspace</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The color space.  <a href="#a8c7828cd0e023e9d21108160d53659a6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">pixel_fmt</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The pixel format.  <a href="#a2301388ef3755c41ab12fd144c1fc54e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">target_bitrate</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The target bit-rate in bits per second.  <a href="#a1d9c8d768a4ae623269f5bd8f6f7a015"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">quality</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The target quality level.  <a href="#aa4cdcf96cb46b256821993e9a830ee02"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">keyframe_granule_shift</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The amount to shift to extract the last keyframe number from the granule position.  <a href="#a693ca4ab11fbc0c3f32594b4bb8766ed"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Theora version</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpf735645ddddaaf44dc0647da0e883f6c"></a>Bitstream version information.</p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">version_major</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">version_minor</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">version_subminor</a></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Frame rate</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp801309c4a0e25a4db3fe5739b322b0a7"></a>The frame rate, as a fraction.</p>
+<p>If either is 0, the frame rate is undefined. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">fps_numerator</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">fps_denominator</a></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Aspect ratio</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpdeca19914b5126815a2220f15d067c9b"></a>The aspect ratio of the pixels.</p>
+<p>If either value is zero, the aspect ratio is undefined. If not specified by any external means, 1:1 should be assumed. The aspect ratio of the full picture can be computed as </p>
+<div class="fragment"><pre class="fragment">  <a class="code" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">aspect_numerator</a>*<a class="code" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">pic_width</a>/(<a class="code" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">aspect_denominator</a>*<a class="code" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a>).
+</pre></div> <br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">aspect_numerator</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">aspect_denominator</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Theora bitstream information. </p>
+<p>This contains the basic playback parameters for a stream, and corresponds to the initial 'info' header packet. To initialize an encoder, the application fills in this structure and passes it to <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc()</a>. A default encoding mode is chosen based on the values of the <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02" title="The target quality level.">quality</a> and <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015" title="The target bit-rate in bits per second.">target_bitrate</a> fields. On decode, it is filled in by <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>, and then passed to <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>.</p>
+<p>Encoded Theora frames must be a multiple of 16 in size; this is what the <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0" title="The encoded frame width.">frame_width</a> and <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a> members represent. To handle arbitrary picture sizes, a crop rectangle is specified in the <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f" title="The X offset of the displayed picture.">pic_x</a>, <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">pic_y</a>, <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">pic_width</a> and <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a> members.</p>
+<p>All frame buffers contain pointers to the full, padded frame. However, the current encoder <em>will not</em> reference pixels outside of the cropped picture region, and the application does not need to fill them in. The decoder <em>will</em> allocate storage for a full frame, but the application <em>should not</em> rely on the padding containing sensible data.</p>
+<p>It is also generally recommended that the offsets and sizes should still be multiples of 2 to avoid chroma sampling shifts when chroma is sub-sampled. See <a href="http://www.theora.org/doc/Theora.pdf">the Theora specification</a>, Section 4.4, for more details.</p>
+<p>Frame rate, in frames per second, is stored as a rational fraction, as is the pixel aspect ratio. Note that this refers to the aspect ratio of the individual pixels, not of the overall frame itself. The frame aspect ratio can be computed from pixel aspect ratio using the image dimensions. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a04c0bd477222d747a76085d8720322e2"></a><!-- doxytag: member="th_info::aspect_denominator" ref="a04c0bd477222d747a76085d8720322e2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a04c0bd477222d747a76085d8720322e2">th_info::aspect_denominator</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a5be65dac9f75e37864cf73dd543570cd"></a><!-- doxytag: member="th_info::aspect_numerator" ref="a5be65dac9f75e37864cf73dd543570cd" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a5be65dac9f75e37864cf73dd543570cd">th_info::aspect_numerator</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a8c7828cd0e023e9d21108160d53659a6"></a><!-- doxytag: member="th_info::colorspace" ref="a8c7828cd0e023e9d21108160d53659a6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="codec_8h.html#a4ce7a695ce353b1582d29b6c1ddf31a0">th_colorspace</a> <a class="el" href="structth__info.html#a8c7828cd0e023e9d21108160d53659a6">th_info::colorspace</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The color space. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa619408f70c03935529f1d3eda7a3ec2"></a><!-- doxytag: member="th_info::fps_denominator" ref="aa619408f70c03935529f1d3eda7a3ec2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#aa619408f70c03935529f1d3eda7a3ec2">th_info::fps_denominator</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a20606e61676f585a7e59cfc96de190a5"></a><!-- doxytag: member="th_info::fps_numerator" ref="a20606e61676f585a7e59cfc96de190a5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a20606e61676f585a7e59cfc96de190a5">th_info::fps_numerator</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6b1adc3a16a8336a72692b0a5937214c"></a><!-- doxytag: member="th_info::frame_height" ref="a6b1adc3a16a8336a72692b0a5937214c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c">th_info::frame_height</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The encoded frame height. </p>
+<p>This must be a multiple of 16, and less than 1048576. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6b8087a4d831da53011a43b8d74087a0"></a><!-- doxytag: member="th_info::frame_width" ref="a6b8087a4d831da53011a43b8d74087a0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0">th_info::frame_width</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The encoded frame width. </p>
+<p>This must be a multiple of 16, and less than 1048576. </p>
+
+</div>
+</div>
+<a class="anchor" id="a693ca4ab11fbc0c3f32594b4bb8766ed"></a><!-- doxytag: member="th_info::keyframe_granule_shift" ref="a693ca4ab11fbc0c3f32594b4bb8766ed" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed">th_info::keyframe_granule_shift</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The amount to shift to extract the last keyframe number from the granule position. </p>
+<p>This can be at most 31. <a class="el" href="group__basefuncs.html#ga430d9c605816a6ca0bdce3a0b965b926" title="Initializes a th_info structure.">th_info_init()</a> will set this to a default value (currently <code>6</code>, which is good for streaming applications), but you can set it to 0 to make every frame a keyframe. The maximum distance between key frames is <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position...">keyframe_granule_shift</a></code>. The keyframe frequency can be more finely controlled with <a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49" title="Sets the maximum distance between key frames.">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>, which can also be adjusted during encoding (for example, to force the next frame to be a keyframe), but it cannot be set larger than the amount permitted by this field after the headers have been output. </p>
+
+</div>
+</div>
+<a class="anchor" id="a775178474283c5990ba73f9ba7f6b88b"></a><!-- doxytag: member="th_info::pic_height" ref="a775178474283c5990ba73f9ba7f6b88b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b">th_info::pic_height</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The displayed picture height. </p>
+<p>This must be no larger than height. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5048edf77b141dd3e9a92ca85e317345"></a><!-- doxytag: member="th_info::pic_width" ref="a5048edf77b141dd3e9a92ca85e317345" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345">th_info::pic_width</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The displayed picture width. </p>
+<p>This must be no larger than width. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5b3f834bcf141564e7bb14f49101870f"></a><!-- doxytag: member="th_info::pic_x" ref="a5b3f834bcf141564e7bb14f49101870f" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a5b3f834bcf141564e7bb14f49101870f">th_info::pic_x</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The X offset of the displayed picture. </p>
+<p>This must be no larger than <a class="el" href="structth__info.html#a6b8087a4d831da53011a43b8d74087a0" title="The encoded frame width.">frame_width</a>-<a class="el" href="structth__info.html#a5048edf77b141dd3e9a92ca85e317345" title="The displayed picture width.">pic_width</a> or 255, whichever is smaller. </p>
+
+</div>
+</div>
+<a class="anchor" id="a8aacc575cab2dfe3735001c2ad32aa14"></a><!-- doxytag: member="th_info::pic_y" ref="a8aacc575cab2dfe3735001c2ad32aa14" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14">th_info::pic_y</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The Y offset of the displayed picture. </p>
+<p>This must be no larger than <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a>-<a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a>, and <a class="el" href="structth__info.html#a6b1adc3a16a8336a72692b0a5937214c" title="The encoded frame height.">frame_height</a>-<a class="el" href="structth__info.html#a775178474283c5990ba73f9ba7f6b88b" title="The displayed picture height.">pic_height</a>-<a class="el" href="structth__info.html#a8aacc575cab2dfe3735001c2ad32aa14" title="The Y offset of the displayed picture.">pic_y</a> must be no larger than 255. This slightly funny restriction is due to the fact that the offset is specified from the top of the image for consistency with the standard graphics left-handed coordinate system used throughout this API, while it is stored in the encoded stream as an offset from the bottom. </p>
+
+</div>
+</div>
+<a class="anchor" id="a2301388ef3755c41ab12fd144c1fc54e"></a><!-- doxytag: member="th_info::pixel_fmt" ref="a2301388ef3755c41ab12fd144c1fc54e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="codec_8h.html#a5c9e7f2f0c7ed209c9ca3ed0abd328bc">th_pixel_fmt</a> <a class="el" href="structth__info.html#a2301388ef3755c41ab12fd144c1fc54e">th_info::pixel_fmt</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The pixel format. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa4cdcf96cb46b256821993e9a830ee02"></a><!-- doxytag: member="th_info::quality" ref="aa4cdcf96cb46b256821993e9a830ee02" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structth__info.html#aa4cdcf96cb46b256821993e9a830ee02">th_info::quality</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The target quality level. </p>
+<p>Valid values range from 0 to 63, inclusive, with higher values giving higher quality. If initializing an encoder with this struct, and <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015" title="The target bit-rate in bits per second.">target_bitrate</a> is set to zero, VBR encoding at this quality will be activated by default. </p>
+
+</div>
+</div>
+<a class="anchor" id="a1d9c8d768a4ae623269f5bd8f6f7a015"></a><!-- doxytag: member="th_info::target_bitrate" ref="a1d9c8d768a4ae623269f5bd8f6f7a015" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structth__info.html#a1d9c8d768a4ae623269f5bd8f6f7a015">th_info::target_bitrate</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The target bit-rate in bits per second. </p>
+<p>If initializing an encoder with this struct, set this field to a non-zero value to activate CBR encoding by default. </p>
+
+</div>
+</div>
+<a class="anchor" id="a60b3e2cac006fee0e105a918d6a5a9f9"></a><!-- doxytag: member="th_info::version_major" ref="a60b3e2cac006fee0e105a918d6a5a9f9" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char <a class="el" href="structth__info.html#a60b3e2cac006fee0e105a918d6a5a9f9">th_info::version_major</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abb1d4887a8079c6c5aaa6d7229f243d7"></a><!-- doxytag: member="th_info::version_minor" ref="abb1d4887a8079c6c5aaa6d7229f243d7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char <a class="el" href="structth__info.html#abb1d4887a8079c6c5aaa6d7229f243d7">th_info::version_minor</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abfacc79b7cabae12b6ac2484f76602d3"></a><!-- doxytag: member="th_info::version_subminor" ref="abfacc79b7cabae12b6ac2484f76602d3" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char <a class="el" href="structth__info.html#abfacc79b7cabae12b6ac2484f76602d3">th_info::version_subminor</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__quant__info.html b/doc/libtheora/html/structth__quant__info.html
new file mode 100644 (file)
index 0000000..90a64d3
--- /dev/null
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_quant_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>th_quant_info Struct Reference</h1><!-- doxytag: class="th_quant_info" -->
+<p>A complete set of quantization parameters.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">dc_scale</a> [64]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The DC scaling factors.  <a href="#ad5c1c0d1aa4127fcf864ae747d732ed9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint16_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">ac_scale</a> [64]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The AC scaling factors.  <a href="#a102f079c8f4a135dc0895c10768aeb06"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">loop_filter_limits</a> [64]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The loop filter limit values.  <a href="#a4ac56bf0a45b5743b36daf85d5cd9e33"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">qi_ranges</a> [2][3]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The <em>qi</em> ranges for each <em>ci</em> and <em>pli</em>.  <a href="#a6feacf4b365e305a7df7b93d87ee7bb8"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>A complete set of quantization parameters. </p>
+<p>The quantizer for each coefficient is calculated as: </p>
+<div class="fragment"><pre class="fragment">    Q=MAX(MIN(qmin[qti][ci!=0],scale[ci!=0][qi]*base[qti][pli][qi][ci]/100),
+     1024).
+</pre></div><p><em>qti</em> is the quantization type index: 0 for intra, 1 for inter. <code>ci!=0</code> is 0 for the DC coefficient and 1 for AC coefficients. <em>qi</em> is the quality index, ranging between 0 (low quality) and 63 (high quality). <em>pli</em> is the color plane index: 0 for Y', 1 for Cb, 2 for Cr. <em>ci</em> is the DCT coefficient index. Coefficient indices correspond to the normal 2D DCT block ordering--row-major with low frequencies first--<em>not</em> zig-zag order.</p>
+<p>Minimum quantizers are constant, and are given by: </p>
+<div class="fragment"><pre class="fragment">   qmin[2][2]={{4,2},{8,4}}.
+</pre></div><p>Parameters that can be stored in the bitstream are as follows:</p>
+<ul>
+<li>The two scale matrices ac_scale and dc_scale. <div class="fragment"><pre class="fragment">      scale[2][64]={<a class="code" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9" title="The DC scaling factors.">dc_scale</a>,<a class="code" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06" title="The AC scaling factors.">ac_scale</a>}.
+</pre></div></li>
+<li>The base matrices for each <em>qi</em>, <em>qti</em> and <em>pli</em> (up to 384 in all). In order to avoid storing a full 384 base matrices, only a sparse set of matrices are stored, and the rest are linearly interpolated. This is done as follows. For each <em>qti</em> and <em>pli</em>, a series of <em>n</em> <em>qi</em> ranges is defined. The size of each <em>qi</em> range can vary arbitrarily, but they must sum to 63. Then, <code>n+1</code> matrices are specified, one for each endpoint of the ranges. For interpolation purposes, each range's endpoints are the first <em>qi</em> value it contains and one past the last <em>qi</em> value it contains. Fractional values are rounded to the nearest integer, with ties rounded away from zero.</li>
+</ul>
+<p>Base matrices are stored by reference, so if the same matrices are used multiple times, they will only appear once in the bitstream. The bitstream is also capable of omitting an entire set of ranges and its associated matrices if they are the same as either the previous set (indexed in row-major order) or if the inter set is the same as the intra set.</p>
+<ul>
+<li>Loop filter limit values. The same limits are used for the loop filter in all color planes, despite potentially differing levels of quantization in each.</li>
+</ul>
+<p>For the current encoder, <code>scale[ci!=0][qi]</code> must be no greater than <code>scale[ci!=0][qi-1]</code> and <code>base[qti][pli][qi][ci]</code> must be no greater than <code>base[qti][pli][qi-1][ci]</code>. These two conditions ensure that the actual quantizer for a given <em>qti</em>, <em>pli</em>, and <em>ci</em> does not increase as <em>qi</em> increases. This is not required by the decoder. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a102f079c8f4a135dc0895c10768aeb06"></a><!-- doxytag: member="th_quant_info::ac_scale" ref="a102f079c8f4a135dc0895c10768aeb06" args="[64]" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint16_t <a class="el" href="structth__quant__info.html#a102f079c8f4a135dc0895c10768aeb06">th_quant_info::ac_scale</a>[64]</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The AC scaling factors. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad5c1c0d1aa4127fcf864ae747d732ed9"></a><!-- doxytag: member="th_quant_info::dc_scale" ref="ad5c1c0d1aa4127fcf864ae747d732ed9" args="[64]" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint16_t <a class="el" href="structth__quant__info.html#ad5c1c0d1aa4127fcf864ae747d732ed9">th_quant_info::dc_scale</a>[64]</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The DC scaling factors. </p>
+
+</div>
+</div>
+<a class="anchor" id="a4ac56bf0a45b5743b36daf85d5cd9e33"></a><!-- doxytag: member="th_quant_info::loop_filter_limits" ref="a4ac56bf0a45b5743b36daf85d5cd9e33" args="[64]" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char <a class="el" href="structth__quant__info.html#a4ac56bf0a45b5743b36daf85d5cd9e33">th_quant_info::loop_filter_limits</a>[64]</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The loop filter limit values. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6feacf4b365e305a7df7b93d87ee7bb8"></a><!-- doxytag: member="th_quant_info::qi_ranges" ref="a6feacf4b365e305a7df7b93d87ee7bb8" args="[2][3]" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structth__quant__ranges.html">th_quant_ranges</a> <a class="el" href="structth__quant__info.html#a6feacf4b365e305a7df7b93d87ee7bb8">th_quant_info::qi_ranges</a>[2][3]</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The <em>qi</em> ranges for each <em>ci</em> and <em>pli</em>. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__quant__ranges.html b/doc/libtheora/html/structth__quant__ranges.html
new file mode 100644 (file)
index 0000000..aa2620e
--- /dev/null
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_quant_ranges Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>th_quant_ranges Struct Reference</h1><!-- doxytag: class="th_quant_ranges" -->
+<p>A set of <em>qi</em> ranges.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="codec_8h_source.html">codec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">nranges</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of ranges in the set.  <a href="#a53e5a3d7f7a112100b4b670929b3ebab"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">sizes</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The size of each of the <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> ranges.  <a href="#af3188a373bc0b8ffaa330d0ab4c1a194"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">base_matrices</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> <code>+1</code> base matrices.  <a href="#a52cb432f034737087492ea448de20bdb"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>A set of <em>qi</em> ranges. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a52cb432f034737087492ea448de20bdb"></a><!-- doxytag: member="th_quant_ranges::base_matrices" ref="a52cb432f034737087492ea448de20bdb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="codec_8h.html#a6a1426d16beef8a311d7f0e9d2e96326">th_quant_base</a>* <a class="el" href="structth__quant__ranges.html#a52cb432f034737087492ea448de20bdb">th_quant_ranges::base_matrices</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p><a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> <code>+1</code> base matrices. </p>
+<p>Matrices <em>i</em> and <code>i+1</code> form the endpoints of range <em>i</em>. </p>
+
+</div>
+</div>
+<a class="anchor" id="a53e5a3d7f7a112100b4b670929b3ebab"></a><!-- doxytag: member="th_quant_ranges::nranges" ref="a53e5a3d7f7a112100b4b670929b3ebab" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab">th_quant_ranges::nranges</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The number of ranges in the set. </p>
+
+</div>
+</div>
+<a class="anchor" id="af3188a373bc0b8ffaa330d0ab4c1a194"></a><!-- doxytag: member="th_quant_ranges::sizes" ref="af3188a373bc0b8ffaa330d0ab4c1a194" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const int* <a class="el" href="structth__quant__ranges.html#af3188a373bc0b8ffaa330d0ab4c1a194">th_quant_ranges::sizes</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The size of each of the <a class="el" href="structth__quant__ranges.html#a53e5a3d7f7a112100b4b670929b3ebab" title="The number of ranges in the set.">nranges</a> ranges. </p>
+<p>These must sum to 63. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="codec_8h_source.html">codec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structth__stripe__callback.html b/doc/libtheora/html/structth__stripe__callback.html
new file mode 100644 (file)
index 0000000..b801242
--- /dev/null
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: th_stripe_callback Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>th_stripe_callback Struct Reference</h1><!-- doxytag: class="th_stripe_callback" -->
+<p>The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="theoradec_8h_source.html">theoradec.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">ctx</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An application-provided context pointer.  <a href="#ab895162ce29a411fa98e0ba9661f47d4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">stripe_decoded</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The callback function pointer.  <a href="#a977c725680a37e3446e459f063b1f4a5"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="ab895162ce29a411fa98e0ba9661f47d4"></a><!-- doxytag: member="th_stripe_callback::ctx" ref="ab895162ce29a411fa98e0ba9661f47d4" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* <a class="el" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">th_stripe_callback::ctx</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>An application-provided context pointer. </p>
+<p>This will be passed back verbatim to the application. </p>
+
+</div>
+</div>
+<a class="anchor" id="a977c725680a37e3446e459f063b1f4a5"></a><!-- doxytag: member="th_stripe_callback::stripe_decoded" ref="a977c725680a37e3446e459f063b1f4a5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a> <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">th_stripe_callback::stripe_decoded</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The callback function pointer. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="theoradec_8h_source.html">theoradec.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structtheora__comment.html b/doc/libtheora/html/structtheora__comment.html
new file mode 100644 (file)
index 0000000..1be4297
--- /dev/null
@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theora_comment Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>theora_comment Struct Reference<br/>
+<small>
+[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
+</h1><!-- doxytag: class="theora_comment" -->
+<p>Comment header metadata.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char **&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">user_comments</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An array of comment string vectors.  <a href="#a1e236fd180dfce19be89081399444cf5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">comment_lengths</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An array of corresponding string vector lengths in bytes.  <a href="#a5ab4a376d3c217282a684577c9c9f49a"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">comments</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The total number of comment string vectors.  <a href="#a122393035c8352ff9be42d69e73aee00"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">vendor</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The vendor string identifying the encoder, null terminated.  <a href="#adb371baf8f0daed42af8b875cf8430ef"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Comment header metadata. </p>
+<p>This structure holds the in-stream metadata corresponding to the 'comment' header packet.</p>
+<p>Meta data is stored as a series of (tag, value) pairs, in length-encoded string vectors. The first occurence of the '=' character delimits the tag and value. A particular tag may occur more than once. The character set encoding for the strings is always UTF-8, but the tag names are limited to case-insensitive ASCII. See the spec for details.</p>
+<p>In filling in this structure, <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> will null-terminate the user_comment strings for safety. However, the bitstream format itself treats them as 8-bit clean, and so the length array should be treated as authoritative for their length. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a5ab4a376d3c217282a684577c9c9f49a"></a><!-- doxytag: member="theora_comment::comment_lengths" ref="a5ab4a376d3c217282a684577c9c9f49a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int* <a class="el" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">theora_comment::comment_lengths</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>An array of corresponding string vector lengths in bytes. </p>
+
+</div>
+</div>
+<a class="anchor" id="a122393035c8352ff9be42d69e73aee00"></a><!-- doxytag: member="theora_comment::comments" ref="a122393035c8352ff9be42d69e73aee00" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">theora_comment::comments</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The total number of comment string vectors. </p>
+
+</div>
+</div>
+<a class="anchor" id="a1e236fd180dfce19be89081399444cf5"></a><!-- doxytag: member="theora_comment::user_comments" ref="a1e236fd180dfce19be89081399444cf5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char** <a class="el" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">theora_comment::user_comments</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>An array of comment string vectors. </p>
+
+</div>
+</div>
+<a class="anchor" id="adb371baf8f0daed42af8b875cf8430ef"></a><!-- doxytag: member="theora_comment::vendor" ref="adb371baf8f0daed42af8b875cf8430ef" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">char* <a class="el" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">theora_comment::vendor</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The vendor string identifying the encoder, null terminated. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="theora_8h_source.html">theora.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structtheora__info.html b/doc/libtheora/html/structtheora__info.html
new file mode 100644 (file)
index 0000000..756ba65
--- /dev/null
@@ -0,0 +1,491 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theora_info Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>theora_info Struct Reference<br/>
+<small>
+[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
+</h1><!-- doxytag: class="theora_info" -->
+<p>Theora bitstream info.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encoded frame width  <a href="#a17c2fc651bb3329f1ea6b13ff1d3957b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encoded frame height  <a href="#ae6f0274fc4a7f285c422d91abb35f9c6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">frame_width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display frame width  <a href="#a8f28f4018a25634d40e4ae861fbbccfa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">frame_height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display frame height  <a href="#a287e4c194f1d2e6deb39d59f1748ea48"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">offset_x</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">horizontal offset of the displayed frame  <a href="#af5949a02bef29512f2705e6f6c944e3b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">offset_y</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">vertical offset of the displayed frame  <a href="#a91c3922097ba32a85acd584a01dc2c93"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">fps_numerator</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">frame rate numerator  <a href="#a3478199aa5ab213816c1819f70085ad7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">fps_denominator</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">frame rate denominator  <a href="#a9aa7e826e0323a4ae8cd8646a6cfbfea"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">aspect_numerator</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pixel aspect ratio numerator  <a href="#a5a3ed8c79815fba1aa06c3f7d8e48b35"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">aspect_denominator</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pixel aspect ratio denominator  <a href="#afebc4d0cbfb34b68c833a8c79e83ae12"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">colorspace</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">colorspace  <a href="#a5eaba99c96706d47b426ab7b7602dc5d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">target_bitrate</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">nominal bitrate in bits per second  <a href="#a0cfba041767ae2416dd190a406afe713"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">quality</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Nominal quality setting, 0-63.  <a href="#a71a4748a5f31bd58d0e403b7806c980d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">quick_p</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Quick encode/decode.  <a href="#a2dfae4fd175dbd19254eaf0697778ff5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">version_major</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">version_minor</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">version_subminor</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">codec_setup</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">dropframes_p</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">keyframe_auto_p</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">keyframe_frequency</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">keyframe_frequency_force</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">keyframe_data_target_bitrate</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">keyframe_auto_threshold</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">keyframe_mindistance</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">noise_sensitivity</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">sharpness</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">pixelformat</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">chroma subsampling mode to expect  <a href="#a65ab4376ab5242ee82e06c78fb7008ab"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Theora bitstream info. </p>
+<p>Contains the basic playback parameters for a stream, corresponding to the initial 'info' header packet.</p>
+<p>Encoded theora frames must be a multiple of 16 in width and height. To handle other frame sizes, a crop rectangle is specified in frame_height and frame_width, offset_x and * offset_y. The offset and size should still be a multiple of 2 to avoid chroma sampling shifts. Offset values in this structure are measured from the upper left of the image.</p>
+<p>Frame rate, in frames per second, is stored as a rational fraction. Aspect ratio is also stored as a rational fraction, and refers to the aspect ratio of the frame pixels, not of the overall frame itself.</p>
+<p>See <a href="http://svn.xiph.org/trunk/theora/examples/encoder_example.c">examples/encoder_example.c</a> for usage examples of the other paramters and good default settings for the encoder parameters. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="afebc4d0cbfb34b68c833a8c79e83ae12"></a><!-- doxytag: member="theora_info::aspect_denominator" ref="afebc4d0cbfb34b68c833a8c79e83ae12" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">theora_info::aspect_denominator</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>pixel aspect ratio denominator </p>
+
+</div>
+</div>
+<a class="anchor" id="a5a3ed8c79815fba1aa06c3f7d8e48b35"></a><!-- doxytag: member="theora_info::aspect_numerator" ref="a5a3ed8c79815fba1aa06c3f7d8e48b35" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">theora_info::aspect_numerator</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>pixel aspect ratio numerator </p>
+
+</div>
+</div>
+<a class="anchor" id="a719a1d77a4a3bfeab79aa5747dbbb04c"></a><!-- doxytag: member="theora_info::codec_setup" ref="a719a1d77a4a3bfeab79aa5747dbbb04c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* <a class="el" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">theora_info::codec_setup</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a5eaba99c96706d47b426ab7b7602dc5d"></a><!-- doxytag: member="theora_info::colorspace" ref="a5eaba99c96706d47b426ab7b7602dc5d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> <a class="el" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">theora_info::colorspace</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>colorspace </p>
+
+</div>
+</div>
+<a class="anchor" id="af294db65a8363a0bcf43f4727763b291"></a><!-- doxytag: member="theora_info::dropframes_p" ref="af294db65a8363a0bcf43f4727763b291" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">theora_info::dropframes_p</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a9aa7e826e0323a4ae8cd8646a6cfbfea"></a><!-- doxytag: member="theora_info::fps_denominator" ref="a9aa7e826e0323a4ae8cd8646a6cfbfea" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">theora_info::fps_denominator</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>frame rate denominator </p>
+
+</div>
+</div>
+<a class="anchor" id="a3478199aa5ab213816c1819f70085ad7"></a><!-- doxytag: member="theora_info::fps_numerator" ref="a3478199aa5ab213816c1819f70085ad7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">theora_info::fps_numerator</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>frame rate numerator </p>
+
+</div>
+</div>
+<a class="anchor" id="a287e4c194f1d2e6deb39d59f1748ea48"></a><!-- doxytag: member="theora_info::frame_height" ref="a287e4c194f1d2e6deb39d59f1748ea48" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">theora_info::frame_height</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>display frame height </p>
+
+</div>
+</div>
+<a class="anchor" id="a8f28f4018a25634d40e4ae861fbbccfa"></a><!-- doxytag: member="theora_info::frame_width" ref="a8f28f4018a25634d40e4ae861fbbccfa" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">theora_info::frame_width</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>display frame width </p>
+
+</div>
+</div>
+<a class="anchor" id="ae6f0274fc4a7f285c422d91abb35f9c6"></a><!-- doxytag: member="theora_info::height" ref="ae6f0274fc4a7f285c422d91abb35f9c6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">theora_info::height</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>encoded frame height </p>
+
+</div>
+</div>
+<a class="anchor" id="a23648173369174f687085c0ce85ef30e"></a><!-- doxytag: member="theora_info::keyframe_auto_p" ref="a23648173369174f687085c0ce85ef30e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">theora_info::keyframe_auto_p</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a95cb8958e29ad3d24047ee8f9e7fd99b"></a><!-- doxytag: member="theora_info::keyframe_auto_threshold" ref="a95cb8958e29ad3d24047ee8f9e7fd99b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_int32_t <a class="el" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">theora_info::keyframe_auto_threshold</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a588942d1ee90a26a7effdf6a0e98b9ce"></a><!-- doxytag: member="theora_info::keyframe_data_target_bitrate" ref="a588942d1ee90a26a7effdf6a0e98b9ce" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">theora_info::keyframe_data_target_bitrate</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a03e1b3e337af5f9dabaaaeb9050f145a"></a><!-- doxytag: member="theora_info::keyframe_frequency" ref="a03e1b3e337af5f9dabaaaeb9050f145a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">theora_info::keyframe_frequency</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad9d2e22c44a53473010e6d1042dfe0d8"></a><!-- doxytag: member="theora_info::keyframe_frequency_force" ref="ad9d2e22c44a53473010e6d1042dfe0d8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">theora_info::keyframe_frequency_force</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa79ca8c0e77a884d4487fd627fae32e9"></a><!-- doxytag: member="theora_info::keyframe_mindistance" ref="aa79ca8c0e77a884d4487fd627fae32e9" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">theora_info::keyframe_mindistance</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac4789034f547b57d1075e035050eeed9"></a><!-- doxytag: member="theora_info::noise_sensitivity" ref="ac4789034f547b57d1075e035050eeed9" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_int32_t <a class="el" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">theora_info::noise_sensitivity</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="af5949a02bef29512f2705e6f6c944e3b"></a><!-- doxytag: member="theora_info::offset_x" ref="af5949a02bef29512f2705e6f6c944e3b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">theora_info::offset_x</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>horizontal offset of the displayed frame </p>
+
+</div>
+</div>
+<a class="anchor" id="a91c3922097ba32a85acd584a01dc2c93"></a><!-- doxytag: member="theora_info::offset_y" ref="a91c3922097ba32a85acd584a01dc2c93" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">theora_info::offset_y</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>vertical offset of the displayed frame </p>
+
+</div>
+</div>
+<a class="anchor" id="a65ab4376ab5242ee82e06c78fb7008ab"></a><!-- doxytag: member="theora_info::pixelformat" ref="a65ab4376ab5242ee82e06c78fb7008ab" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> <a class="el" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">theora_info::pixelformat</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>chroma subsampling mode to expect </p>
+
+</div>
+</div>
+<a class="anchor" id="a71a4748a5f31bd58d0e403b7806c980d"></a><!-- doxytag: member="theora_info::quality" ref="a71a4748a5f31bd58d0e403b7806c980d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">theora_info::quality</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Nominal quality setting, 0-63. </p>
+
+</div>
+</div>
+<a class="anchor" id="a2dfae4fd175dbd19254eaf0697778ff5"></a><!-- doxytag: member="theora_info::quick_p" ref="a2dfae4fd175dbd19254eaf0697778ff5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">theora_info::quick_p</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Quick encode/decode. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3fb695de2b2f56dd0203b9e2eb0df1cc"></a><!-- doxytag: member="theora_info::sharpness" ref="a3fb695de2b2f56dd0203b9e2eb0df1cc" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_int32_t <a class="el" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">theora_info::sharpness</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0cfba041767ae2416dd190a406afe713"></a><!-- doxytag: member="theora_info::target_bitrate" ref="a0cfba041767ae2416dd190a406afe713" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">theora_info::target_bitrate</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>nominal bitrate in bits per second </p>
+
+</div>
+</div>
+<a class="anchor" id="a7c5ebb9e6700aaef87f29f7c6074e474"></a><!-- doxytag: member="theora_info::version_major" ref="a7c5ebb9e6700aaef87f29f7c6074e474" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char <a class="el" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">theora_info::version_major</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a75eda4f30270d833c7b9dba43932a06a"></a><!-- doxytag: member="theora_info::version_minor" ref="a75eda4f30270d833c7b9dba43932a06a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char <a class="el" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">theora_info::version_minor</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa07967ecd6e20bd2928ead42b6397b3d"></a><!-- doxytag: member="theora_info::version_subminor" ref="aa07967ecd6e20bd2928ead42b6397b3d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char <a class="el" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">theora_info::version_subminor</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a17c2fc651bb3329f1ea6b13ff1d3957b"></a><!-- doxytag: member="theora_info::width" ref="a17c2fc651bb3329f1ea6b13ff1d3957b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_uint32_t <a class="el" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">theora_info::width</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>encoded frame width </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="theora_8h_source.html">theora.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structtheora__state.html b/doc/libtheora/html/structtheora__state.html
new file mode 100644 (file)
index 0000000..0e94be0
--- /dev/null
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theora_state Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>theora_state Struct Reference<br/>
+<small>
+[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
+</h1><!-- doxytag: class="theora_state" -->
+<p>Codec internal state and context.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structtheora__info.html">theora_info</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">i</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">granulepos</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">internal_encode</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">internal_decode</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Codec internal state and context. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a5dd344a3f79ea7501b18c756772fab7b"></a><!-- doxytag: member="theora_state::granulepos" ref="a5dd344a3f79ea7501b18c756772fab7b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ogg_int64_t <a class="el" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">theora_state::granulepos</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0efc7ac581ef260b0ca17f518ace0731"></a><!-- doxytag: member="theora_state::i" ref="a0efc7ac581ef260b0ca17f518ace0731" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="structtheora__info.html">theora_info</a>* <a class="el" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">theora_state::i</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad20c4eebbc5ed9764cf03ba8b90e796e"></a><!-- doxytag: member="theora_state::internal_decode" ref="ad20c4eebbc5ed9764cf03ba8b90e796e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* <a class="el" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">theora_state::internal_decode</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1fbfd82fb7210cbcc4233cb680ec2af6"></a><!-- doxytag: member="theora_state::internal_encode" ref="a1fbfd82fb7210cbcc4233cb680ec2af6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void* <a class="el" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">theora_state::internal_encode</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="theora_8h_source.html">theora.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/structyuv__buffer.html b/doc/libtheora/html/structyuv__buffer.html
new file mode 100644 (file)
index 0000000..98d2e03
--- /dev/null
@@ -0,0 +1,207 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: yuv_buffer Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>yuv_buffer Struct Reference<br/>
+<small>
+[<a class="el" href="group__oldfuncs.html">Legacy pre-1.0 C API</a>]</small>
+</h1><!-- doxytag: class="yuv_buffer" -->
+<p>A YUV buffer for passing uncompressed frames to and from the codec.  
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="theora_8h_source.html">theora.h</a>&gt;</code></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">y_width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Width of the Y' luminance plane.  <a href="#aaa6c06c071da933231647238418d5fc0"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">y_height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Height of the luminance plane.  <a href="#a5a8b60e012247e2caffcbbaca99414e0"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">y_stride</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Offset in bytes between successive rows.  <a href="#a9cdf61834c11b2351640a4a243ad0549"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">uv_width</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Width of the Cb and Cr chroma planes.  <a href="#a8c59a57c35af0be519ee47f15e49fe2b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">uv_height</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Height of the chroma planes.  <a href="#a640f1a0b456d3807f9f0538b22f10097"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">uv_stride</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Offset between successive chroma rows.  <a href="#ab265cc24ffb5650bf52daf223b0debb9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">y</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to start of luminance data.  <a href="#a725727c70eeced6b8c90866973399ac1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">u</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to start of Cb data.  <a href="#a8b1857afe3ffac28f259499a57a559e1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">unsigned char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">v</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to start of Cr data.  <a href="#aa429491dd112adb0254672c59ef55075"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>A YUV buffer for passing uncompressed frames to and from the codec. </p>
+<p>This holds a Y'CbCr frame in planar format. The CbCr planes can be subsampled and have their own separate dimensions and row stride offsets. Note that the strides may be negative in some configurations. For theora the width and height of the largest plane must be a multiple of 16. The actual meaningful picture size and offset are stored in the <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure; frames returned by the decoder may need to be cropped for display.</p>
+<p>All samples are 8 bits. Within each plane samples are ordered by row from the top of the frame to the bottom. Within each row samples are ordered from left to right.</p>
+<p>During decode, the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> struct is allocated by the user, but all fields (including luma and chroma pointers) are filled by the library. These pointers address library-internal memory and their contents should not be modified.</p>
+<p>Conversely, during encode the user allocates the struct and fills out all fields. The user also manages the data addressed by the luma and chroma pointers. See the encoder_example.c and dump_video.c example files in theora/examples/ for more information. </p>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a8b1857afe3ffac28f259499a57a559e1"></a><!-- doxytag: member="yuv_buffer::u" ref="a8b1857afe3ffac28f259499a57a559e1" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char* <a class="el" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">yuv_buffer::u</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Pointer to start of Cb data. </p>
+
+</div>
+</div>
+<a class="anchor" id="a640f1a0b456d3807f9f0538b22f10097"></a><!-- doxytag: member="yuv_buffer::uv_height" ref="a640f1a0b456d3807f9f0538b22f10097" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">yuv_buffer::uv_height</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Height of the chroma planes. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab265cc24ffb5650bf52daf223b0debb9"></a><!-- doxytag: member="yuv_buffer::uv_stride" ref="ab265cc24ffb5650bf52daf223b0debb9" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">yuv_buffer::uv_stride</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Offset between successive chroma rows. </p>
+
+</div>
+</div>
+<a class="anchor" id="a8c59a57c35af0be519ee47f15e49fe2b"></a><!-- doxytag: member="yuv_buffer::uv_width" ref="a8c59a57c35af0be519ee47f15e49fe2b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">yuv_buffer::uv_width</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Width of the Cb and Cr chroma planes. </p>
+
+</div>
+</div>
+<a class="anchor" id="aa429491dd112adb0254672c59ef55075"></a><!-- doxytag: member="yuv_buffer::v" ref="aa429491dd112adb0254672c59ef55075" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char* <a class="el" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">yuv_buffer::v</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Pointer to start of Cr data. </p>
+
+</div>
+</div>
+<a class="anchor" id="a725727c70eeced6b8c90866973399ac1"></a><!-- doxytag: member="yuv_buffer::y" ref="a725727c70eeced6b8c90866973399ac1" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">unsigned char* <a class="el" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">yuv_buffer::y</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Pointer to start of luminance data. </p>
+
+</div>
+</div>
+<a class="anchor" id="a5a8b60e012247e2caffcbbaca99414e0"></a><!-- doxytag: member="yuv_buffer::y_height" ref="a5a8b60e012247e2caffcbbaca99414e0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">yuv_buffer::y_height</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Height of the luminance plane. </p>
+
+</div>
+</div>
+<a class="anchor" id="a9cdf61834c11b2351640a4a243ad0549"></a><!-- doxytag: member="yuv_buffer::y_stride" ref="a9cdf61834c11b2351640a4a243ad0549" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">yuv_buffer::y_stride</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Offset in bytes between successive rows. </p>
+
+</div>
+</div>
+<a class="anchor" id="aaa6c06c071da933231647238418d5fc0"></a><!-- doxytag: member="yuv_buffer::y_width" ref="aaa6c06c071da933231647238418d5fc0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int <a class="el" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">yuv_buffer::y_width</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Width of the Y' luminance plane. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="theora_8h_source.html">theora.h</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/tab_b.gif b/doc/libtheora/html/tab_b.gif
new file mode 100644 (file)
index 0000000..0d62348
Binary files /dev/null and b/doc/libtheora/html/tab_b.gif differ
diff --git a/doc/libtheora/html/tab_l.gif b/doc/libtheora/html/tab_l.gif
new file mode 100644 (file)
index 0000000..9b1e633
Binary files /dev/null and b/doc/libtheora/html/tab_l.gif differ
diff --git a/doc/libtheora/html/tab_r.gif b/doc/libtheora/html/tab_r.gif
new file mode 100644 (file)
index 0000000..ce9dd9f
Binary files /dev/null and b/doc/libtheora/html/tab_r.gif differ
diff --git a/doc/libtheora/html/tabs.css b/doc/libtheora/html/tabs.css
new file mode 100644 (file)
index 0000000..a444163
--- /dev/null
@@ -0,0 +1,105 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+   float            : left;
+   width            : 100%;
+   background       : url("tab_b.gif") repeat-x bottom;
+   margin-bottom    : 4px;
+}
+
+DIV.tabs UL
+{
+   margin           : 0px;
+   padding-left     : 10px;
+   list-style       : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+   display          : inline;
+   margin           : 0px;
+   padding          : 0px;
+}
+
+DIV.tabs FORM
+{
+   float            : right;
+}
+
+DIV.tabs A
+{
+   float            : left;
+   background       : url("tab_r.gif") no-repeat right top;
+   border-bottom    : 1px solid #84B0C7;
+   font-size        : 80%;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+DIV.tabs A:hover
+{
+   background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+       color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+   float            : left;
+   display          : block;
+   background       : url("tab_l.gif") no-repeat left top;
+   padding          : 5px 9px;
+   white-space      : nowrap;
+}
+
+DIV.tabs #MSearchBox
+{
+   float            : right;
+   display          : inline;
+   font-size        : 1em;
+}
+
+DIV.tabs TD
+{
+   font-size        : 80%;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+   background-position: 0% -150px;
+}
+
+DIV.tabs LI.current A
+{
+   background-position: 100% -150px;
+   border-width     : 0px;
+}
+
+DIV.tabs LI.current SPAN
+{
+   background-position: 0% -150px;
+   padding-bottom   : 6px;
+}
+
+DIV.navpath
+{
+   background       : none;
+   border           : none;
+   border-bottom    : 1px solid #84B0C7;
+   text-align       : center;
+   margin           : 2px;
+   padding          : 2px;
+}
diff --git a/doc/libtheora/html/theora_8h.html b/doc/libtheora/html/theora_8h.html
new file mode 100644 (file)
index 0000000..2adc3b1
--- /dev/null
@@ -0,0 +1,212 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theora.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>theora.h File Reference</h1>
+<p>The libtheora pre-1.0 legacy C API.  
+<a href="#_details">More...</a></p>
+<code>#include &lt;stddef.h&gt;</code><br/>
+<code>#include &lt;ogg/ogg.h&gt;</code><br/>
+
+<p><a href="theora_8h_source.html">Go to the source code of this file.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structyuv__buffer.html">yuv_buffer</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A YUV buffer for passing uncompressed frames to and from the codec.  <a href="structyuv__buffer.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__info.html">theora_info</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Theora bitstream info.  <a href="structtheora__info.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__state.html">theora_state</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Codec internal state and context.  <a href="structtheora__state.html#_details">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtheora__comment.html">theora_comment</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Comment header metadata.  <a href="structtheora__comment.html#_details">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">OC_FAULT</a>&nbsp;&nbsp;&nbsp;-1</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">General failure.  <a href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">OC_EINVAL</a>&nbsp;&nbsp;&nbsp;-10</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Library encountered invalid internal data.  <a href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">OC_DISABLED</a>&nbsp;&nbsp;&nbsp;-11</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Requested action is disabled.  <a href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">OC_BADHEADER</a>&nbsp;&nbsp;&nbsp;-20</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Header packet was corrupt/invalid.  <a href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">OC_NOTFORMAT</a>&nbsp;&nbsp;&nbsp;-21</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is not a theora packet.  <a href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">OC_VERSION</a>&nbsp;&nbsp;&nbsp;-22</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bitstream version is not handled.  <a href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">OC_IMPL</a>&nbsp;&nbsp;&nbsp;-23</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Feature or action not implemented.  <a href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">OC_BADPACKET</a>&nbsp;&nbsp;&nbsp;-24</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is corrupt.  <a href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">OC_NEWPACKET</a>&nbsp;&nbsp;&nbsp;-25</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is an (ignorable) unhandled extension.  <a href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">OC_DUPFRAME</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Packet is a dropped frame.  <a href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">theora_control() codes</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp13fd61986cff4566fe89a40e30b74ad9"></a> </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">TH_DECCTL_GET_PPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the maximum post-processing level.  <a href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">TH_DECCTL_SET_PPLEVEL</a>&nbsp;&nbsp;&nbsp;(3)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the post-processing level.  <a href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>&nbsp;&nbsp;&nbsp;(4)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the maximum distance between key frames.  <a href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">TH_DECCTL_SET_GRANPOS</a>&nbsp;&nbsp;&nbsp;(5)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the granule position.  <a href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">TH_ENCCTL_SET_QUANT_PARAMS</a>&nbsp;&nbsp;&nbsp;(2)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the quantization parameters to use.  <a href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">TH_ENCCTL_SET_VP3_COMPATIBLE</a>&nbsp;&nbsp;&nbsp;(10)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disables any encoder features that would prevent lossless transcoding back to VP3.  <a href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">TH_ENCCTL_GET_SPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(12)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum speed level.  <a href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">TH_ENCCTL_SET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(14)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the speed level.  <a href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">theora_colorspace</a> { <a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">OC_CS_UNSPECIFIED</a>, 
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">OC_CS_ITU_REC_470M</a>, 
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">OC_CS_ITU_REC_470BG</a>, 
+<a class="el" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">OC_CS_NSPACES</a>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Colorspace. </p>
+ <a href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">More...</a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">theora_pixelformat</a> { <a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">OC_PF_420</a>, 
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">OC_PF_RSVD</a>, 
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">OC_PF_422</a>, 
+<a class="el" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">OC_PF_444</a>
+ }</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>A Chroma subsampling. </p>
+ <a href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2">theora_version_string</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a human-readable string to identify the encoder vendor and version.  <a href="group__oldfuncs.html#ga5a3da8fd262a60f055f96536eec06df2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_uint32_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8">theora_version_number</a> (void)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a 32-bit version number.  <a href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a">theora_encode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the theora encoder.  <a href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078">theora_encode_YUVin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submit a YUV buffer to the theora encoder.  <a href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3">theora_encode_packetout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, int last_p, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request the next packet of encoded video.  <a href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be">theora_encode_header</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the initial header.  <a href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a">theora_encode_comment</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a comment header packet from provided metadata.  <a href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2">theora_encode_tables</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Request a packet containing the codebook tables for the stream.  <a href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82">theora_decode_header</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ci, <a class="el" href="structtheora__comment.html">theora_comment</a> *cc, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables.  <a href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c">theora_decode_init</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle for decoding.  <a href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975">theora_decode_packetin</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Input a packet containing encoded data into the theora decoder.  <a href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa">theora_decode_YUVout</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, <a class="el" href="structyuv__buffer.html">yuv_buffer</a> *yuv)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output the next available frame of decoded YUV data.  <a href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b">theora_packet_isheader</a> (ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> for that.  <a href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2">theora_packet_iskeyframe</a> (ogg_packet *op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report whether a theora packet is a keyframe or not.  <a href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02">theora_granule_shift</a> (<a class="el" href="structtheora__info.html">theora_info</a> *ti)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Report the granulepos shift radix.  <a href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">ogg_int64_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269">theora_granule_frame</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to an absolute frame index, starting at 0.  <a href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6">theora_granule_time</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, ogg_int64_t granulepos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a granulepos to absolute time in seconds.  <a href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90">theora_info_init</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure.  <a href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d">theora_info_clear</a> (<a class="el" href="structtheora__info.html">theora_info</a> *c)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> structure.  <a href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb">theora_clear</a> (<a class="el" href="structtheora__state.html">theora_state</a> *t)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all internal data associated with a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> handle.  <a href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0">theora_comment_init</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4">theora_comment_add</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *comment)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92">theora_comment_add_tag</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, char *value)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a comment to an initialized <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structure.  <a href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc">theora_comment_query</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag, int count)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up a comment value by tag.  <a href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b">theora_comment_query_count</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc, char *tag)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Look up the number of instances of a tag.  <a href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f">theora_comment_clear</a> (<a class="el" href="structtheora__comment.html">theora_comment</a> *tc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear an allocated <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> struct so that it can be freed.  <a href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9">theora_control</a> (<a class="el" href="structtheora__state.html">theora_state</a> *th, int req, void *buf, size_t buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function.  <a href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The libtheora pre-1.0 legacy C API. </p>
+<h2><a class="anchor" id="intro">
+Introduction</a></h2>
+<p>This is the documentation for the libtheora legacy C API, declared in the <a class="el" href="theora_8h.html" title="The libtheora pre-1.0 legacy C API.">theora.h</a> header, which describes the old interface used before the 1.0 release. This API was widely deployed for several years and remains supported, but for new code we recommend the cleaner API declared in <a class="el" href="theoradec_8h.html" title="The libtheoradec C decoding API.">theoradec.h</a> and <a class="el" href="theoraenc_8h.html" title="The libtheoraenc C encoding API.">theoraenc.h</a>.</p>
+<p>libtheora is the reference implementation for <a href="http://www.theora.org/">Theora</a>, a free video codec. Theora is derived from On2's VP3 codec with improved integration with Ogg multimedia formats by <a href="http://www.xiph.org/">Xiph.Org</a>.</p>
+<h2><a class="anchor" id="overview">
+Overview</a></h2>
+<p>This library will both decode and encode theora packets to/from raw YUV frames. In either case, the packets will most likely either come from or need to be embedded in an Ogg stream. Use <a href="http://xiph.org/ogg/">libogg</a> or <a href="http://www.annodex.net/software/liboggz/index.html">liboggz</a> to extract/package these packets.</p>
+<h2><a class="anchor" id="decoding">
+Decoding Process</a></h2>
+<p>Decoding can be separated into the following steps:</p>
+<ol type="1">
+<li>initialise <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> and <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structures using <a class="el" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90" title="Initialize a theora_info structure.">theora_info_init()</a> and <a class="el" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0" title="Initialize an allocated theora_comment structure.">theora_comment_init()</a>: <div class="fragment"><pre class="fragment">
+ theora_info     info;
+ theora_comment  comment;
+   
+ theora_info_init(&amp;info);
+ theora_comment_init(&amp;comment);
+ </pre></div></li>
+<li>retrieve header packets from Ogg stream (there should be 3) and decode into <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> and <a class="el" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> structures using <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a>. See <a class="el" href="theora_8h.html#identification">Identifying Theora Packets</a> for more information on identifying which packets are theora packets. <div class="fragment"><pre class="fragment">
+ int i;
+ for (i = 0; i &lt; 3; i++)
+ {
+   (get a theora packet "op" from the Ogg stream)
+   theora_decode_header(&amp;info, &amp;comment, op);
+ }
+ </pre></div></li>
+<li>initialise the decoder based on the information retrieved into the <a class="el" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> struct by <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a>. You will need a <a class="el" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> struct. <div class="fragment"><pre class="fragment">
+ theora_state state;
+ theora_decode_init(&amp;state, &amp;info);
+ </pre></div></li>
+<li>pass in packets and retrieve decoded frames! See the <a class="el" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> documentation for information on how to retrieve raw YUV data. <div class="fragment"><pre class="fragment">
+ yuf_buffer buffer;
+ while (last packet was not e_o_s) {
+   (get a theora packet "op" from the Ogg stream)
+   theora_decode_packetin(&amp;state, op);
+   theora_decode_YUVout(&amp;state, &amp;buffer);
+ }
+ </pre></div></li>
+</ol>
+<h3><a class="anchor" id="identification">
+Identifying Theora Packets</a></h3>
+<p>All streams inside an Ogg file have a unique serial_no attached to the stream. Typically, you will want to</p>
+<ul>
+<li>retrieve the serial_no for each b_o_s (beginning of stream) page encountered within the Ogg file;</li>
+<li>test the first (only) packet on that page to determine if it is a theora packet;</li>
+<li>once you have found a theora b_o_s page then use the retrieved serial_no to identify future packets belonging to the same theora stream.</li>
+</ul>
+<p>Note that you <em>cannot</em> use <a class="el" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b" title="Report whether a theora packet is a header or not This function does no verification...">theora_packet_isheader()</a> to determine if a packet is a theora packet or not, as this function does not perform any checking beyond whether a header bit is present. Instead, use the <a class="el" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header()</a> function and check the return value; or examine the header bytes at the beginning of the Ogg page. </p>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/theora_8h_source.html b/doc/libtheora/html/theora_8h_source.html
new file mode 100644 (file)
index 0000000..c9549bf
--- /dev/null
@@ -0,0 +1,245 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theora.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>theora.h</h1><a href="theora_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
+<a name="l00002"></a>00002 <span class="comment"> *                                                                  *</span>
+<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span>
+<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span>
+<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
+<a name="l00006"></a>00006 <span class="comment"> * IN &apos;COPYING&apos;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span>
+<a name="l00007"></a>00007 <span class="comment"> *                                                                  *</span>
+<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span>
+<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/                  *</span>
+<a name="l00010"></a>00010 <span class="comment"> *                                                                  *</span>
+<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">  function:</span>
+<a name="l00014"></a>00014 <span class="comment">  last mod: $Id: theora.h,v 1.17 2003/12/06 18:06:19 arc Exp $</span>
+<a name="l00015"></a>00015 <span class="comment"></span>
+<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
+<a name="l00017"></a>00017 
+<a name="l00018"></a>00018 <span class="preprocessor">#ifndef _O_THEORA_H_</span>
+<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#define _O_THEORA_H_</span>
+<a name="l00020"></a>00020 <span class="preprocessor"></span>
+<a name="l00021"></a>00021 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span>
+<a name="l00023"></a>00023 {
+<a name="l00024"></a>00024 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
+<a name="l00025"></a>00025 
+<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;stddef.h&gt;</span>     <span class="comment">/* for size_t */</span>
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;ogg/ogg.h&gt;</span>
+<a name="l00029"></a>00029 
+<a name="l00121"></a>00121 <span class="comment">/*  @{ */</span>
+<a name="l00122"></a>00122 
+<a name="l00147"></a><a class="code" href="structyuv__buffer.html">00147</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
+<a name="l00148"></a><a class="code" href="structyuv__buffer.html#aaa6c06c071da933231647238418d5fc0">00148</a>     <span class="keywordtype">int</span>   y_width;      
+<a name="l00149"></a><a class="code" href="structyuv__buffer.html#a5a8b60e012247e2caffcbbaca99414e0">00149</a>     <span class="keywordtype">int</span>   y_height;     
+<a name="l00150"></a><a class="code" href="structyuv__buffer.html#a9cdf61834c11b2351640a4a243ad0549">00150</a>     <span class="keywordtype">int</span>   y_stride;     
+<a name="l00152"></a><a class="code" href="structyuv__buffer.html#a8c59a57c35af0be519ee47f15e49fe2b">00152</a>     <span class="keywordtype">int</span>   uv_width;     
+<a name="l00153"></a><a class="code" href="structyuv__buffer.html#a640f1a0b456d3807f9f0538b22f10097">00153</a>     <span class="keywordtype">int</span>   uv_height;    
+<a name="l00154"></a><a class="code" href="structyuv__buffer.html#ab265cc24ffb5650bf52daf223b0debb9">00154</a>     <span class="keywordtype">int</span>   uv_stride;    
+<a name="l00155"></a><a class="code" href="structyuv__buffer.html#a725727c70eeced6b8c90866973399ac1">00155</a>     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *y;   
+<a name="l00156"></a><a class="code" href="structyuv__buffer.html#a8b1857afe3ffac28f259499a57a559e1">00156</a>     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *u;   
+<a name="l00157"></a><a class="code" href="structyuv__buffer.html#aa429491dd112adb0254672c59ef55075">00157</a>     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *v;   
+<a name="l00159"></a>00159 } <a class="code" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a>;
+<a name="l00160"></a>00160 
+<a name="l00164"></a><a class="code" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9">00164</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00165"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f">00165</a>   <a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f" title="The colorspace is unknown or unspecified.">OC_CS_UNSPECIFIED</a>,    
+<a name="l00166"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294">00166</a>   <a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294" title="This is the best option for &amp;#39;NTSC&amp;#39; content.">OC_CS_ITU_REC_470M</a>,   
+<a name="l00167"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a">00167</a>   <a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a" title="This is the best option for &amp;#39;PAL&amp;#39; content.">OC_CS_ITU_REC_470BG</a>,  
+<a name="l00168"></a><a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186">00168</a>   <a class="code" href="group__oldfuncs.html#ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186" title="This marks the end of the defined colorspaces.">OC_CS_NSPACES</a>         
+<a name="l00169"></a>00169 } <a class="code" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9" title="A Colorspace.">theora_colorspace</a>;
+<a name="l00170"></a>00170 
+<a name="l00178"></a><a class="code" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079">00178</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00179"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b">00179</a>   <a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b" title="Chroma subsampling by 2 in each direction (4:2:0).">OC_PF_420</a>,    
+<a name="l00180"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb">00180</a>   <a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb" title="Reserved value.">OC_PF_RSVD</a>,   
+<a name="l00181"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b">00181</a>   <a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b" title="Horizonatal chroma subsampling by 2 (4:2:2).">OC_PF_422</a>,    
+<a name="l00182"></a><a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044">00182</a>   <a class="code" href="group__oldfuncs.html#ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044" title="No chroma subsampling at all (4:4:4).">OC_PF_444</a>,    
+<a name="l00183"></a>00183 } <a class="code" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079" title="A Chroma subsampling.">theora_pixelformat</a>;
+<a name="l00184"></a>00184 
+<a name="l00206"></a><a class="code" href="structtheora__info.html">00206</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
+<a name="l00207"></a><a class="code" href="structtheora__info.html#a17c2fc651bb3329f1ea6b13ff1d3957b">00207</a>   ogg_uint32_t  width;          
+<a name="l00208"></a><a class="code" href="structtheora__info.html#ae6f0274fc4a7f285c422d91abb35f9c6">00208</a>   ogg_uint32_t  height;         
+<a name="l00209"></a><a class="code" href="structtheora__info.html#a8f28f4018a25634d40e4ae861fbbccfa">00209</a>   ogg_uint32_t  frame_width;    
+<a name="l00210"></a><a class="code" href="structtheora__info.html#a287e4c194f1d2e6deb39d59f1748ea48">00210</a>   ogg_uint32_t  frame_height;   
+<a name="l00211"></a><a class="code" href="structtheora__info.html#af5949a02bef29512f2705e6f6c944e3b">00211</a>   ogg_uint32_t  offset_x;       
+<a name="l00212"></a><a class="code" href="structtheora__info.html#a91c3922097ba32a85acd584a01dc2c93">00212</a>   ogg_uint32_t  offset_y;       
+<a name="l00213"></a><a class="code" href="structtheora__info.html#a3478199aa5ab213816c1819f70085ad7">00213</a>   ogg_uint32_t  fps_numerator;      
+<a name="l00214"></a><a class="code" href="structtheora__info.html#a9aa7e826e0323a4ae8cd8646a6cfbfea">00214</a>   ogg_uint32_t  fps_denominator;    
+<a name="l00215"></a><a class="code" href="structtheora__info.html#a5a3ed8c79815fba1aa06c3f7d8e48b35">00215</a>   ogg_uint32_t  aspect_numerator;   
+<a name="l00216"></a><a class="code" href="structtheora__info.html#afebc4d0cbfb34b68c833a8c79e83ae12">00216</a>   ogg_uint32_t  aspect_denominator; 
+<a name="l00217"></a><a class="code" href="structtheora__info.html#a5eaba99c96706d47b426ab7b7602dc5d">00217</a>   <a class="code" href="group__oldfuncs.html#gaa567da4ce591f7373149ce3ef3acdac9" title="A Colorspace.">theora_colorspace</a> colorspace;     
+<a name="l00218"></a><a class="code" href="structtheora__info.html#a0cfba041767ae2416dd190a406afe713">00218</a>   <span class="keywordtype">int</span>           target_bitrate;     
+<a name="l00219"></a><a class="code" href="structtheora__info.html#a71a4748a5f31bd58d0e403b7806c980d">00219</a>   <span class="keywordtype">int</span>           quality;  
+<a name="l00220"></a><a class="code" href="structtheora__info.html#a2dfae4fd175dbd19254eaf0697778ff5">00220</a>   <span class="keywordtype">int</span>           quick_p;  
+<a name="l00222"></a>00222   <span class="comment">/* decode only */</span>
+<a name="l00223"></a><a class="code" href="structtheora__info.html#a7c5ebb9e6700aaef87f29f7c6074e474">00223</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_major;
+<a name="l00224"></a><a class="code" href="structtheora__info.html#a75eda4f30270d833c7b9dba43932a06a">00224</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_minor;
+<a name="l00225"></a><a class="code" href="structtheora__info.html#aa07967ecd6e20bd2928ead42b6397b3d">00225</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> version_subminor;
+<a name="l00226"></a>00226 
+<a name="l00227"></a><a class="code" href="structtheora__info.html#a719a1d77a4a3bfeab79aa5747dbbb04c">00227</a>   <span class="keywordtype">void</span> *codec_setup;
+<a name="l00228"></a>00228 
+<a name="l00229"></a>00229   <span class="comment">/* encode only */</span>
+<a name="l00230"></a><a class="code" href="structtheora__info.html#af294db65a8363a0bcf43f4727763b291">00230</a>   <span class="keywordtype">int</span>           dropframes_p;
+<a name="l00231"></a><a class="code" href="structtheora__info.html#a23648173369174f687085c0ce85ef30e">00231</a>   <span class="keywordtype">int</span>           keyframe_auto_p;
+<a name="l00232"></a><a class="code" href="structtheora__info.html#a03e1b3e337af5f9dabaaaeb9050f145a">00232</a>   ogg_uint32_t  keyframe_frequency;
+<a name="l00233"></a><a class="code" href="structtheora__info.html#ad9d2e22c44a53473010e6d1042dfe0d8">00233</a>   ogg_uint32_t  keyframe_frequency_force;  <span class="comment">/* also used for decode init to</span>
+<a name="l00234"></a>00234 <span class="comment">                                              get granpos shift correct */</span>
+<a name="l00235"></a><a class="code" href="structtheora__info.html#a588942d1ee90a26a7effdf6a0e98b9ce">00235</a>   ogg_uint32_t  keyframe_data_target_bitrate;
+<a name="l00236"></a><a class="code" href="structtheora__info.html#a95cb8958e29ad3d24047ee8f9e7fd99b">00236</a>   ogg_int32_t   keyframe_auto_threshold;
+<a name="l00237"></a><a class="code" href="structtheora__info.html#aa79ca8c0e77a884d4487fd627fae32e9">00237</a>   ogg_uint32_t  keyframe_mindistance;
+<a name="l00238"></a><a class="code" href="structtheora__info.html#ac4789034f547b57d1075e035050eeed9">00238</a>   ogg_int32_t   noise_sensitivity;
+<a name="l00239"></a><a class="code" href="structtheora__info.html#a3fb695de2b2f56dd0203b9e2eb0df1cc">00239</a>   ogg_int32_t   sharpness;
+<a name="l00240"></a>00240 
+<a name="l00241"></a><a class="code" href="structtheora__info.html#a65ab4376ab5242ee82e06c78fb7008ab">00241</a>   <a class="code" href="group__oldfuncs.html#gae169da05bfaaf4e964a6866552d45079" title="A Chroma subsampling.">theora_pixelformat</a> pixelformat;       
+<a name="l00243"></a>00243 } <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a>;
+<a name="l00244"></a>00244 
+<a name="l00247"></a><a class="code" href="structtheora__state.html">00247</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00248"></a><a class="code" href="structtheora__state.html#a0efc7ac581ef260b0ca17f518ace0731">00248</a>   <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *i;
+<a name="l00249"></a><a class="code" href="structtheora__state.html#a5dd344a3f79ea7501b18c756772fab7b">00249</a>   ogg_int64_t granulepos;
+<a name="l00250"></a>00250 
+<a name="l00251"></a><a class="code" href="structtheora__state.html#a1fbfd82fb7210cbcc4233cb680ec2af6">00251</a>   <span class="keywordtype">void</span> *internal_encode;
+<a name="l00252"></a><a class="code" href="structtheora__state.html#ad20c4eebbc5ed9764cf03ba8b90e796e">00252</a>   <span class="keywordtype">void</span> *internal_decode;
+<a name="l00253"></a>00253 
+<a name="l00254"></a>00254 } <a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a>;
+<a name="l00255"></a>00255 
+<a name="l00275"></a><a class="code" href="structtheora__comment.html">00275</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a>{
+<a name="l00276"></a><a class="code" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5">00276</a>   <span class="keywordtype">char</span> **<a class="code" href="structtheora__comment.html#a1e236fd180dfce19be89081399444cf5" title="An array of comment string vectors.">user_comments</a>;         
+<a name="l00277"></a><a class="code" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a">00277</a>   <span class="keywordtype">int</span>   *<a class="code" href="structtheora__comment.html#a5ab4a376d3c217282a684577c9c9f49a" title="An array of corresponding string vector lengths in bytes.">comment_lengths</a>;       
+<a name="l00278"></a><a class="code" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00">00278</a>   <span class="keywordtype">int</span>    <a class="code" href="structtheora__comment.html#a122393035c8352ff9be42d69e73aee00" title="The total number of comment string vectors.">comments</a>;              
+<a name="l00279"></a><a class="code" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef">00279</a>   <span class="keywordtype">char</span>  *<a class="code" href="structtheora__comment.html#adb371baf8f0daed42af8b875cf8430ef" title="The vendor string identifying the encoder, null terminated.">vendor</a>;                
+<a name="l00281"></a>00281 } <a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a>;
+<a name="l00282"></a>00282 
+<a name="l00283"></a>00283 
+<a name="l00285"></a>00285 <span class="comment">/* \anchor decctlcodes_old</span>
+<a name="l00286"></a>00286 <span class="comment"> * These are the available request codes for theora_control()</span>
+<a name="l00287"></a>00287 <span class="comment"> * when called with a decoder instance.</span>
+<a name="l00288"></a>00288 <span class="comment"> * By convention decoder control codes are odd, to distinguish </span>
+<a name="l00289"></a>00289 <span class="comment"> * them from \ref encctlcodes_old &quot;encoder control codes&quot; which</span>
+<a name="l00290"></a>00290 <span class="comment"> * are even.</span>
+<a name="l00291"></a>00291 <span class="comment"> *</span>
+<a name="l00292"></a>00292 <span class="comment"> * Note that since the 1.0 release, both the legacy and the final</span>
+<a name="l00293"></a>00293 <span class="comment"> * implementation accept all the same control codes, but only the</span>
+<a name="l00294"></a>00294 <span class="comment"> * final API declares the newer codes.</span>
+<a name="l00295"></a>00295 <span class="comment"> *</span>
+<a name="l00296"></a>00296 <span class="comment"> * Keep any experimental or vendor-specific values above \c 0x8000.*/</span>
+<a name="l00297"></a>00297 
+<a name="l00306"></a><a class="code" href="group__oldfuncs.html#gab31f251c9319f2140d247585d30b3d07">00306</a> <span class="preprocessor">#define TH_DECCTL_GET_PPLEVEL_MAX (1)</span>
+<a name="l00307"></a>00307 <span class="preprocessor"></span>
+<a name="l00313"></a><a class="code" href="group__oldfuncs.html#ga87774c35e1a755a84e2d705b38ebef0d">00313</a> <span class="preprocessor">#define TH_DECCTL_SET_PPLEVEL (3)</span>
+<a name="l00314"></a>00314 <span class="preprocessor"></span>
+<a name="l00327"></a><a class="code" href="group__oldfuncs.html#ga27e755e15b4b5604c54974b304037a49">00327</a> <span class="preprocessor">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE (4)</span>
+<a name="l00328"></a>00328 <span class="preprocessor"></span>
+<a name="l00336"></a><a class="code" href="group__oldfuncs.html#ga1e870c654d35394f0d490045df04e0f5">00336</a> <span class="preprocessor">#define TH_DECCTL_SET_GRANPOS (5)</span>
+<a name="l00337"></a>00337 <span class="preprocessor"></span>
+<a name="l00353"></a><a class="code" href="group__oldfuncs.html#ga3befcdd66678f8d27034f9c4b16d1b9c">00353</a> <span class="preprocessor">#define TH_ENCCTL_SET_QUANT_PARAMS (2)</span>
+<a name="l00354"></a>00354 <span class="preprocessor"></span>
+<a name="l00382"></a><a class="code" href="group__oldfuncs.html#ga382d685a39a34d8e6ba76b00d804efd8">00382</a> <span class="preprocessor">#define TH_ENCCTL_SET_VP3_COMPATIBLE (10)</span>
+<a name="l00383"></a>00383 <span class="preprocessor"></span>
+<a name="l00397"></a><a class="code" href="group__oldfuncs.html#ga9baf5bdd206e80c78a8fd44687e89783">00397</a> <span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL_MAX (12)</span>
+<a name="l00398"></a>00398 <span class="preprocessor"></span>
+<a name="l00412"></a><a class="code" href="group__oldfuncs.html#gabd9fbcb6a25a77d991d3620164fe59d6">00412</a> <span class="preprocessor">#define TH_ENCCTL_SET_SPLEVEL (14)</span>
+<a name="l00413"></a>00413 <span class="preprocessor"></span>
+<a name="l00416"></a><a class="code" href="group__oldfuncs.html#gaa4370e13ed3aea6441ccf69dcab2506e">00416</a> <span class="preprocessor">#define OC_FAULT       -1       </span>
+<a name="l00417"></a><a class="code" href="group__oldfuncs.html#ga43d15091b1a03a734a124e9a04d3be55">00417</a> <span class="preprocessor">#define OC_EINVAL      -10      </span>
+<a name="l00418"></a><a class="code" href="group__oldfuncs.html#ga38b9fa0af856d5930c534db26e2ac2d1">00418</a> <span class="preprocessor">#define OC_DISABLED    -11      </span>
+<a name="l00419"></a><a class="code" href="group__oldfuncs.html#ga809cbad2eb36be17a235a3cadfb737ba">00419</a> <span class="preprocessor">#define OC_BADHEADER   -20      </span>
+<a name="l00420"></a><a class="code" href="group__oldfuncs.html#ga9558d6d9eacd2273c8da27f945d725ad">00420</a> <span class="preprocessor">#define OC_NOTFORMAT   -21      </span>
+<a name="l00421"></a><a class="code" href="group__oldfuncs.html#ga4611cfd61160405721d1e2ab0ec2564b">00421</a> <span class="preprocessor">#define OC_VERSION     -22      </span>
+<a name="l00422"></a><a class="code" href="group__oldfuncs.html#ga895dc2597b3bf9c97bf7701c6eff5b0c">00422</a> <span class="preprocessor">#define OC_IMPL        -23      </span>
+<a name="l00423"></a><a class="code" href="group__oldfuncs.html#ga117774c062a63dfad2a5b4d092fa2bb1">00423</a> <span class="preprocessor">#define OC_BADPACKET   -24      </span>
+<a name="l00424"></a><a class="code" href="group__oldfuncs.html#ga60be4dc92c933eac3542bce3ce076496">00424</a> <span class="preprocessor">#define OC_NEWPACKET   -25      </span>
+<a name="l00425"></a><a class="code" href="group__oldfuncs.html#ga84a8d2f5080ad62b415a4e7551941cbb">00425</a> <span class="preprocessor">#define OC_DUPFRAME    1        </span>
+<a name="l00431"></a>00431 <span class="preprocessor">extern const char *theora_version_string(void);</span>
+<a name="l00432"></a>00432 <span class="preprocessor"></span>
+<a name="l00442"></a>00442 <span class="keyword">extern</span> ogg_uint32_t <a class="code" href="group__oldfuncs.html#gad181f4b19d455dcc2bef2533530b84c8" title="Retrieve a 32-bit version number.">theora_version_number</a>(<span class="keywordtype">void</span>);
+<a name="l00443"></a>00443 
+<a name="l00450"></a>00450 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga0f7ad4d4b2343278cb4ba8fb2bd5109a" title="Initialize the theora encoder.">theora_encode_init</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th, <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *ti);
+<a name="l00451"></a>00451 
+<a name="l00462"></a>00462 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gac0d33d896ca70cedfc94c5986d947078" title="Submit a YUV buffer to the theora encoder.">theora_encode_YUVin</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, <a class="code" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> *yuv);
+<a name="l00463"></a>00463 
+<a name="l00476"></a>00476 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga5f4929677a735bc2198c2309d235f1b3" title="Request the next packet of encoded video.">theora_encode_packetout</a>( <a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, <span class="keywordtype">int</span> last_p,
+<a name="l00477"></a>00477                                     ogg_packet *op);
+<a name="l00478"></a>00478 
+<a name="l00489"></a>00489 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga451feb58d6bde726edbae193689887be" title="Request a packet containing the initial header.">theora_encode_header</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, ogg_packet *op);
+<a name="l00490"></a>00490 
+<a name="l00502"></a>00502 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga45e8db0713eaaca0f1144f3724cb834a" title="Request a comment header packet from provided metadata.">theora_encode_comment</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, ogg_packet *op);
+<a name="l00503"></a>00503 
+<a name="l00514"></a>00514 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga5085baf20855b283fa01fc948505d9d2" title="Request a packet containing the codebook tables for the stream.">theora_encode_tables</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t, ogg_packet *op);
+<a name="l00515"></a>00515 
+<a name="l00557"></a>00557 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga02915e63c1bd733ee291f577a8b75a82" title="Decode an Ogg packet, with the expectation that the packet contains an initial header...">theora_decode_header</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *ci, <a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *cc,
+<a name="l00558"></a>00558                                 ogg_packet *op);
+<a name="l00559"></a>00559 
+<a name="l00568"></a>00568 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga264907c66003799ff77ecbd09eb33d2c" title="Initialize a theora_state handle for decoding.">theora_decode_init</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th, <a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *c);
+<a name="l00569"></a>00569 
+<a name="l00577"></a>00577 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gaa65a9e53b46fd54ab344bd599fa96975" title="Input a packet containing encoded data into the theora decoder.">theora_decode_packetin</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,ogg_packet *op);
+<a name="l00578"></a>00578 
+<a name="l00589"></a>00589 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga09d47c80e1e94bff0a46a496816b8daa" title="Output the next available frame of decoded YUV data.">theora_decode_YUVout</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,<a class="code" href="structyuv__buffer.html" title="A YUV buffer for passing uncompressed frames to and from the codec.">yuv_buffer</a> *yuv);
+<a name="l00590"></a>00590 
+<a name="l00603"></a>00603 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gab969f9d0407683f0e5abe73d0839a25b" title="Report whether a theora packet is a header or not This function does no verification...">theora_packet_isheader</a>(ogg_packet *op);
+<a name="l00604"></a>00604 
+<a name="l00615"></a>00615 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga39ccc8f847a748d7074c926b4fdd12b2" title="Report whether a theora packet is a keyframe or not.">theora_packet_iskeyframe</a>(ogg_packet *op);
+<a name="l00616"></a>00616 
+<a name="l00642"></a>00642 <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#gacd9360e6a47139c761002410af457a02" title="Report the granulepos shift radix.">theora_granule_shift</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *ti);
+<a name="l00643"></a>00643 
+<a name="l00660"></a>00660 <span class="keyword">extern</span> ogg_int64_t <a class="code" href="group__oldfuncs.html#ga7bfa3ceb2fb4b41a282456c56e1dd269" title="Convert a granulepos to an absolute frame index, starting at 0.">theora_granule_frame</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,ogg_int64_t granulepos);
+<a name="l00661"></a>00661 
+<a name="l00677"></a>00677 <span class="keyword">extern</span> <span class="keywordtype">double</span> <a class="code" href="group__oldfuncs.html#ga4376358b12b9fa23ce6fe21cb5c65ac6" title="Convert a granulepos to absolute time in seconds.">theora_granule_time</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,ogg_int64_t granulepos);
+<a name="l00678"></a>00678 
+<a name="l00685"></a>00685 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga3091c87d48f1faba018c5956379a6d90" title="Initialize a theora_info structure.">theora_info_init</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *c);
+<a name="l00686"></a>00686 
+<a name="l00692"></a>00692 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#gaba7022d58edbc4825cacad03f68b3e0d" title="Clear a theora_info structure.">theora_info_clear</a>(<a class="code" href="structtheora__info.html" title="Theora bitstream info.">theora_info</a> *c);
+<a name="l00693"></a>00693 
+<a name="l00698"></a>00698 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#gab252d5d81b925136dda72e8f1c09c5eb" title="Free all internal data associated with a theora_state handle.">theora_clear</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *t);
+<a name="l00699"></a>00699 
+<a name="l00704"></a>00704 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga811b92785df3bdbbebb3de612d9d6ce0" title="Initialize an allocated theora_comment structure.">theora_comment_init</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc);
+<a name="l00705"></a>00705 
+<a name="l00718"></a>00718 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga650642ed23894e41109bbc42ec393ed4" title="Add a comment to an initialized theora_comment structure.">theora_comment_add</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, <span class="keywordtype">char</span> *comment);
+<a name="l00719"></a>00719 
+<a name="l00732"></a>00732 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__oldfuncs.html#ga339bd80b5bf4bb168b7052d8ec0b5a92" title="Add a comment to an initialized theora_comment structure.">theora_comment_add_tag</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc,
+<a name="l00733"></a>00733                                        <span class="keywordtype">char</span> *tag, <span class="keywordtype">char</span> *value);
+<a name="l00734"></a>00734 
+<a name="l00749"></a>00749 <span class="keyword">extern</span> <span class="keywordtype">char</span> *<a class="code" href="group__oldfuncs.html#ga4361f6001abb5c83c36a2ddfb648a8dc" title="Look up a comment value by tag.">theora_comment_query</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, <span class="keywordtype">char</span> *tag, <span class="keywordtype">int</span> count);
+<a name="l00750"></a>00750 
+<a name="l00760"></a>00760 <span class="keyword">extern</span> <span class="keywordtype">int</span>   <a class="code" href="group__oldfuncs.html#ga10f66a3c752442a3e0c0098e0f88df8b" title="Look up the number of instances of a tag.">theora_comment_query_count</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc, <span class="keywordtype">char</span> *tag);
+<a name="l00761"></a>00761 
+<a name="l00766"></a>00766 <span class="keyword">extern</span> <span class="keywordtype">void</span>  <a class="code" href="group__oldfuncs.html#ga04c07c2eefba3a433e43f9fbde14719f" title="Clear an allocated theora_comment struct so that it can be freed.">theora_comment_clear</a>(<a class="code" href="structtheora__comment.html" title="Comment header metadata.">theora_comment</a> *tc);
+<a name="l00767"></a>00767 
+<a name="l00776"></a>00776 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__oldfuncs.html#ga186773db3bc8cd550047e7df1b2ba2c9" title="Encoder control function.">theora_control</a>(<a class="code" href="structtheora__state.html" title="Codec internal state and context.">theora_state</a> *th,<span class="keywordtype">int</span> req,<span class="keywordtype">void</span> *buf,<span class="keywordtype">size_t</span> buf_sz);
+<a name="l00777"></a>00777 
+<a name="l00778"></a>00778 <span class="comment">/* @} */</span> <span class="comment">/* end oldfuncs doxygen group */</span>
+<a name="l00779"></a>00779 
+<a name="l00780"></a>00780 <span class="preprocessor">#ifdef __cplusplus</span>
+<a name="l00781"></a>00781 <span class="preprocessor"></span>}
+<a name="l00782"></a>00782 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
+<a name="l00783"></a>00783 
+<a name="l00784"></a>00784 <span class="preprocessor">#endif </span><span class="comment">/* _O_THEORA_H_ */</span>
+</pre></div></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/theoradec_8h.html b/doc/libtheora/html/theoradec_8h.html
new file mode 100644 (file)
index 0000000..1f5432a
--- /dev/null
@@ -0,0 +1,361 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theoradec.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>theoradec.h File Reference</h1>
+<p>The <code>libtheoradec</code> C decoding API.  
+<a href="#_details">More...</a></p>
+<code>#include &lt;stddef.h&gt;</code><br/>
+<code>#include &lt;ogg/ogg.h&gt;</code><br/>
+<code>#include &quot;<a class="el" href="codec_8h_source.html">codec.h</a>&quot;</code><br/>
+
+<p><a href="theoradec_8h_source.html">Go to the source code of this file.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structth__stripe__callback.html">th_stripe_callback</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The striped decode callback data to pass to <a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e" title="Sets the striped decode callback function.">TH_DECCTL_SET_STRIPE_CB</a>.  <a href="structth__stripe__callback.html#_details">More...</a><br/></td></tr>
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">_O_THEORA_THEORADEC_H_</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">th_decode_ctl() codes</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp638dfd34390d0a936dbf76caf938d78d"></a><a class="anchor" id="decctlcodes"></a> These are the available request codes for <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl()</a>. By convention, these are odd, to distinguish them from the <a class="el" href="theoraenc_8h.html#encctlcodes">encoder control codes</a>. Keep any experimental or vendor-specific values above <code>0x8000</code>. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">TH_DECCTL_GET_PPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum post-processing level.  <a href="#ab31f251c9319f2140d247585d30b3d07"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">TH_DECCTL_SET_PPLEVEL</a>&nbsp;&nbsp;&nbsp;(3)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the post-processing level.  <a href="#a87774c35e1a755a84e2d705b38ebef0d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">TH_DECCTL_SET_GRANPOS</a>&nbsp;&nbsp;&nbsp;(5)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the granule position.  <a href="#a1e870c654d35394f0d490045df04e0f5"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">TH_DECCTL_SET_STRIPE_CB</a>&nbsp;&nbsp;&nbsp;(7)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the striped decode callback function.  <a href="#ac95cc9e109474b0fa4bb920ab2cfdf1e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">TH_DECCTL_SET_TELEMETRY_MBMODE</a>&nbsp;&nbsp;&nbsp;(9)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the macroblock display mode.  <a href="#a8d5e0b9b4c8898f93f241acbeb7e7ffb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">TH_DECCTL_SET_TELEMETRY_MV</a>&nbsp;&nbsp;&nbsp;(11)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the motion vector display mode.  <a href="#a829285a03d24832c583f33c6357df8aa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">TH_DECCTL_SET_TELEMETRY_QI</a>&nbsp;&nbsp;&nbsp;(13)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the adaptive quantization display mode.  <a href="#ae3e2f7674ad92fe67b63915d48c9df5b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">TH_DECCTL_SET_TELEMETRY_BITS</a>&nbsp;&nbsp;&nbsp;(15)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables telemetry and sets the bitstream breakdown visualization mode.  <a href="#a7f43fec07486f8a5f00e92aab7d44a25"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a> )(void *_ctx, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _buf, int _yfrag0, int _yfrag_end)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A callback function for striped decode.  <a href="#a25dfc8713157545abd81eda476ca4b54"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Decoder state</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp20ad7456b6a1ebc1cb57f3e51d4d7bc3"></a>The following data structures are opaque, and their contents are not publicly defined by this API.</p>
+<p>Referring to their internals directly is unsupported, and may break without warning. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The decoder context.  <a href="#a843d70bb02563885a8d54b9c1a781729"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Setup information.  <a href="#ab71cd2657455cc27d6c0127c66a89f28"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions for decoding</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp9d29c94aa62f20426aa5ff062c7daedd"></a>You must link to <code>libtheoradec</code> if you use any of the functions in this section.</p>
+<p>The functions are listed in the order they are used in a typical decode. The basic steps are:</p>
+<ul>
+<li>Parse the header packets by repeatedly calling <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a>.</li>
+<li>Allocate a <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> handle with <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>.</li>
+<li>Call <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free()</a> to free any memory used for codec setup information.</li>
+<li>Perform any additional decoder configuration with <a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl()</a>.</li>
+<li>For each video data packet:<ul>
+<li>Submit the packet to the decoder via <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>.</li>
+<li>Retrieve the uncompressed video data via <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a>.</li>
+</ul>
+</li>
+<li>Call <a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0" title="Frees an allocated decoder instance.">th_decode_free()</a> to release all decoder memory. </li>
+</ul>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50">th_decode_headerin</a> (<a class="el" href="structth__info.html">th_info</a> *_info, <a class="el" href="structth__comment.html">th_comment</a> *_tc, <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> **_setup, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decodes the header packets of a Theora stream.  <a href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e">th_decode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info, const <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates a decoder instance.  <a href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27">th_setup_free</a> (<a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> *_setup)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Releases all storage used for the decoder setup information.  <a href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1">th_decode_ctl</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, int _req, void *_buf, size_t _buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decoder control function.  <a href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb">th_decode_packetin</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, const ogg_packet *_op, ogg_int64_t *_granpos)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits a packet containing encoded video data to the decoder.  <a href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb">th_decode_ycbcr_out</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next available frame of decoded Y'CbCr data.  <a href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0">th_decode_free</a> (<a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> *_dec)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated decoder instance.  <a href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The <code>libtheoradec</code> C decoding API. </p>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a0d78767a326c34dbf84d5b845cba7b4a"></a><!-- doxytag: member="theoradec.h::_O_THEORA_THEORADEC_H_" ref="a0d78767a326c34dbf84d5b845cba7b4a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _O_THEORA_THEORADEC_H_&nbsp;&nbsp;&nbsp;(1)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab31f251c9319f2140d247585d30b3d07"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_GET_PPLEVEL_MAX" ref="ab31f251c9319f2140d247585d30b3d07" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_GET_PPLEVEL_MAX&nbsp;&nbsp;&nbsp;(1)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Gets the maximum post-processing level. </p>
+<p>The decoder supports a post-processing filter that can improve the appearance of the decoded images. This returns the highest level setting for this post-processor, corresponding to maximum improvement and computational expense.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td>int: The maximum post-processing level. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1e870c654d35394f0d490045df04e0f5"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_GRANPOS" ref="a1e870c654d35394f0d490045df04e0f5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_GRANPOS&nbsp;&nbsp;&nbsp;(5)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the granule position. </p>
+<p>Call this after a seek, before decoding the first frame, to ensure that the proper granule position is returned for all subsequent frames. If you track timestamps yourself and do not use the granule position returned by the decoder, then you need not call this function.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>ogg_int64_t</code>: The granule position of the next frame. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(ogg_int64_t)</code>, or the granule position is negative. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a87774c35e1a755a84e2d705b38ebef0d"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_PPLEVEL" ref="a87774c35e1a755a84e2d705b38ebef0d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_PPLEVEL&nbsp;&nbsp;&nbsp;(3)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the post-processing level. </p>
+<p>By default, post-processing is disabled.</p>
+<p>Sets the level of post-processing to use when decoding the compressed stream. This must be a value between zero (off) and the maximum returned by TH_DECCTL_GET_PPLEVEL_MAX.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td>int: The new post-processing level. 0 to disable; larger values use more CPU. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the post-processing level is out of bounds. The maximum post-processing level may be implementation-specific, and can be obtained via <a class="el" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07" title="Gets the maximum post-processing level.">TH_DECCTL_GET_PPLEVEL_MAX</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac95cc9e109474b0fa4bb920ab2cfdf1e"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_STRIPE_CB" ref="ac95cc9e109474b0fa4bb920ab2cfdf1e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_STRIPE_CB&nbsp;&nbsp;&nbsp;(7)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the striped decode callback function. </p>
+<p>If set, this function will be called as each piece of a frame is fully decoded in <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>. You can pass in a <a class="el" href="structth__stripe__callback.html" title="The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.">th_stripe_callback</a> with <a class="el" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5" title="The callback function pointer.">th_stripe_callback::stripe_decoded</a> set to <code>NULL</code> to disable the callbacks at any point. Enabling striped decode does not prevent you from calling <a class="el" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&#39;CbCr data.">th_decode_ycbcr_out()</a> after the frame is fully decoded.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><a class="el" href="structth__stripe__callback.html" title="The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.">th_stripe_callback</a>: The callback parameters. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_dec_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(th_stripe_callback)</code>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7f43fec07486f8a5f00e92aab7d44a25"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_BITS" ref="a7f43fec07486f8a5f00e92aab7d44a25" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_BITS&nbsp;&nbsp;&nbsp;(15)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Enables telemetry and sets the bitstream breakdown visualization mode. </p>
+
+</div>
+</div>
+<a class="anchor" id="a8d5e0b9b4c8898f93f241acbeb7e7ffb"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_MBMODE" ref="a8d5e0b9b4c8898f93f241acbeb7e7ffb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_MBMODE&nbsp;&nbsp;&nbsp;(9)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Enables telemetry and sets the macroblock display mode. </p>
+
+</div>
+</div>
+<a class="anchor" id="a829285a03d24832c583f33c6357df8aa"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_MV" ref="a829285a03d24832c583f33c6357df8aa" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_MV&nbsp;&nbsp;&nbsp;(11)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Enables telemetry and sets the motion vector display mode. </p>
+
+</div>
+</div>
+<a class="anchor" id="ae3e2f7674ad92fe67b63915d48c9df5b"></a><!-- doxytag: member="theoradec.h::TH_DECCTL_SET_TELEMETRY_QI" ref="ae3e2f7674ad92fe67b63915d48c9df5b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_DECCTL_SET_TELEMETRY_QI&nbsp;&nbsp;&nbsp;(13)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Enables telemetry and sets the adaptive quantization display mode. </p>
+
+</div>
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="a843d70bb02563885a8d54b9c1a781729"></a><!-- doxytag: member="theoradec.h::th_dec_ctx" ref="a843d70bb02563885a8d54b9c1a781729" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a> <a class="el" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">th_dec_ctx</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The decoder context. </p>
+
+</div>
+</div>
+<a class="anchor" id="ab71cd2657455cc27d6c0127c66a89f28"></a><!-- doxytag: member="theoradec.h::th_setup_info" ref="ab71cd2657455cc27d6c0127c66a89f28" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a> <a class="el" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">th_setup_info</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Setup information. </p>
+<p>This contains auxiliary information (Huffman tables and quantization parameters) decoded from the setup header by <a class="el" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin()</a> to be passed to <a class="el" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc()</a>. It can be re-used to initialize any number of decoders, and can be freed via <a class="el" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free()</a> at any time. </p>
+
+</div>
+</div>
+<a class="anchor" id="a25dfc8713157545abd81eda476ca4b54"></a><!-- doxytag: member="theoradec.h::th_stripe_decoded_func" ref="a25dfc8713157545abd81eda476ca4b54" args=")(void *_ctx, th_ycbcr_buffer _buf, int _yfrag0, int _yfrag_end)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void(* <a class="el" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">th_stripe_decoded_func</a>)(void *_ctx, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _buf, int _yfrag0, int _yfrag_end)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>A callback function for striped decode. </p>
+<p>This is a function pointer to an application-provided function that will be called each time a section of the image is fully decoded in <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>. This allows the application to process the section immediately, while it is still in cache. Note that the frame is decoded bottom to top, so <em>_yfrag0</em> will steadily decrease with each call until it reaches 0, at which point the full frame is decoded. The number of fragment rows made available in each call depends on the pixel format and the number of post-processing filters enabled, and may not even be constant for the entire frame. If a non-<code>NULL</code> <em>_granpos</em> pointer is passed to <a class="el" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin()</a>, the granule position for the frame will be stored in it before the first callback is made. If an entire frame is dropped (a 0-byte packet), then no callbacks will be made at all for that frame. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>_ctx</em>&nbsp;</td><td>An application-provided context pointer. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_buf</em>&nbsp;</td><td>The image buffer for the decoded frame. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_yfrag0</em>&nbsp;</td><td>The Y coordinate of the first row of 8x8 fragments decoded. Multiply this by 8 to obtain the pixel row number in the luma plane. If the chroma planes are subsampled in the Y direction, this will always be divisible by two. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>_yfrag_end</em>&nbsp;</td><td>The Y coordinate of the first row of 8x8 fragments past the newly decoded section. If the chroma planes are subsampled in the Y direction, this will always be divisible by two. I.e., this section contains fragment rows <code><em>_yfrag0</em> ...<em>_yfrag_end</em> -1</code>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/theoradec_8h_source.html b/doc/libtheora/html/theoradec_8h_source.html
new file mode 100644 (file)
index 0000000..4ea5a7e
--- /dev/null
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theoradec.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>theoradec.h</h1><a href="theoradec_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
+<a name="l00002"></a>00002 <span class="comment"> *                                                                  *</span>
+<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span>
+<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span>
+<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
+<a name="l00006"></a>00006 <span class="comment"> * IN &apos;COPYING&apos;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span>
+<a name="l00007"></a>00007 <span class="comment"> *                                                                  *</span>
+<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span>
+<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/                  *</span>
+<a name="l00010"></a>00010 <span class="comment"> *                                                                  *</span>
+<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">  function:</span>
+<a name="l00014"></a>00014 <span class="comment">  last mod: $Id: theora.h,v 1.8 2004/03/15 22:17:32 derf Exp $</span>
+<a name="l00015"></a>00015 <span class="comment"></span>
+<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
+<a name="l00017"></a>00017 
+<a name="l00021"></a>00021 <span class="preprocessor">#if !defined(_O_THEORA_THEORADEC_H_)</span>
+<a name="l00022"></a><a class="code" href="theoradec_8h.html#a0d78767a326c34dbf84d5b845cba7b4a">00022</a> <span class="preprocessor"></span><span class="preprocessor"># define _O_THEORA_THEORADEC_H_ (1)</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"># include &lt;stddef.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor"># include &quot;<a class="code" href="codec_8h.html" title="The shared libtheoradec and libtheoraenc C API.">codec.h</a>&quot;</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
+<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span>
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 
+<a name="l00050"></a><a class="code" href="theoradec_8h.html#ab31f251c9319f2140d247585d30b3d07">00050</a> <span class="preprocessor">#define TH_DECCTL_GET_PPLEVEL_MAX (1)</span>
+<a name="l00051"></a>00051 <span class="preprocessor"></span>
+<a name="l00067"></a><a class="code" href="theoradec_8h.html#a87774c35e1a755a84e2d705b38ebef0d">00067</a> <span class="preprocessor">#define TH_DECCTL_SET_PPLEVEL (3)</span>
+<a name="l00068"></a>00068 <span class="preprocessor"></span>
+<a name="l00079"></a><a class="code" href="theoradec_8h.html#a1e870c654d35394f0d490045df04e0f5">00079</a> <span class="preprocessor">#define TH_DECCTL_SET_GRANPOS (5)</span>
+<a name="l00080"></a>00080 <span class="preprocessor"></span>
+<a name="l00093"></a><a class="code" href="theoradec_8h.html#ac95cc9e109474b0fa4bb920ab2cfdf1e">00093</a> <span class="preprocessor">#define TH_DECCTL_SET_STRIPE_CB (7)</span>
+<a name="l00094"></a>00094 <span class="preprocessor"></span>
+<a name="l00096"></a><a class="code" href="theoradec_8h.html#a8d5e0b9b4c8898f93f241acbeb7e7ffb">00096</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_MBMODE (9)</span>
+<a name="l00097"></a>00097 <span class="preprocessor"></span>
+<a name="l00098"></a><a class="code" href="theoradec_8h.html#a829285a03d24832c583f33c6357df8aa">00098</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_MV (11)</span>
+<a name="l00099"></a>00099 <span class="preprocessor"></span>
+<a name="l00100"></a><a class="code" href="theoradec_8h.html#ae3e2f7674ad92fe67b63915d48c9df5b">00100</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_QI (13)</span>
+<a name="l00101"></a>00101 <span class="preprocessor"></span>
+<a name="l00102"></a><a class="code" href="theoradec_8h.html#a7f43fec07486f8a5f00e92aab7d44a25">00102</a> <span class="preprocessor">#define TH_DECCTL_SET_TELEMETRY_BITS (15)</span>
+<a name="l00103"></a>00103 <span class="preprocessor"></span>
+<a name="l00138"></a><a class="code" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54">00138</a> <span class="keyword">typedef</span> void (*<a class="code" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54" title="A callback function for striped decode.">th_stripe_decoded_func</a>)(<span class="keywordtype">void</span> *_ctx,<a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a> _buf,
+<a name="l00139"></a>00139  <span class="keywordtype">int</span> _yfrag0,<span class="keywordtype">int</span> _yfrag_end);
+<a name="l00140"></a>00140 
+<a name="l00142"></a><a class="code" href="structth__stripe__callback.html">00142</a> <span class="keyword">typedef</span> <span class="keyword">struct</span>{
+<a name="l00145"></a><a class="code" href="structth__stripe__callback.html#ab895162ce29a411fa98e0ba9661f47d4">00145</a>   <span class="keywordtype">void</span>                   *ctx;
+<a name="l00147"></a><a class="code" href="structth__stripe__callback.html#a977c725680a37e3446e459f063b1f4a5">00147</a>   <a class="code" href="theoradec_8h.html#a25dfc8713157545abd81eda476ca4b54" title="A callback function for striped decode.">th_stripe_decoded_func</a>  stripe_decoded;
+<a name="l00148"></a>00148 }<a class="code" href="structth__stripe__callback.html" title="The striped decode callback data to pass to TH_DECCTL_SET_STRIPE_CB.">th_stripe_callback</a>;
+<a name="l00149"></a>00149 
+<a name="l00150"></a>00150 
+<a name="l00151"></a>00151 
+<a name="l00159"></a><a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729">00159</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a>    <a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a>;
+<a name="l00166"></a><a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28">00166</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> <a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a>;
+<a name="l00231"></a>00231 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#ga006d01d36fbe64768c571e6a12b7fc50" title="Decodes the header packets of a Theora stream.">th_decode_headerin</a>(<a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info,<a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_tc,
+<a name="l00232"></a>00232  <a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> **_setup,ogg_packet *_op);
+<a name="l00255"></a>00255 <span class="keyword">extern</span> <a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *<a class="code" href="group__decfuncs.html#ga0ef07a9a97849054aa606c595a2d807e" title="Allocates a decoder instance.">th_decode_alloc</a>(<span class="keyword">const</span> <a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info,
+<a name="l00256"></a>00256  <span class="keyword">const</span> <a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> *_setup);
+<a name="l00262"></a>00262 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__decfuncs.html#gadef55431b68aaa59d0d7b32b2f118f27" title="Releases all storage used for the decoder setup information.">th_setup_free</a>(<a class="code" href="theoradec_8h.html#ab71cd2657455cc27d6c0127c66a89f28" title="Setup information.">th_setup_info</a> *_setup);
+<a name="l00271"></a>00271 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#ga1a8051958d75b1012573b6e3c8f670e1" title="Decoder control function.">th_decode_ctl</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec,<span class="keywordtype">int</span> _req,<span class="keywordtype">void</span> *_buf,
+<a name="l00272"></a>00272  <span class="keywordtype">size_t</span> _buf_sz);
+<a name="l00294"></a>00294 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#ga31c814bf09b2232aff69c57ae20f04eb" title="Submits a packet containing encoded video data to the decoder.">th_decode_packetin</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec,<span class="keyword">const</span> ogg_packet *_op,
+<a name="l00295"></a>00295  ogg_int64_t *_granpos);
+<a name="l00311"></a>00311 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__decfuncs.html#gaa9cc8af63fa8540e0fc95572f259cdcb" title="Outputs the next available frame of decoded Y&amp;#39;CbCr data.">th_decode_ycbcr_out</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec,
+<a name="l00312"></a>00312  <a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a> _ycbcr);
+<a name="l00315"></a>00315 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__decfuncs.html#gafb6684ad8ba507b71112bc9de148e7d0" title="Frees an allocated decoder instance.">th_decode_free</a>(<a class="code" href="theoradec_8h.html#a843d70bb02563885a8d54b9c1a781729" title="The decoder context.">th_dec_ctx</a> *_dec);
+<a name="l00318"></a>00318 
+<a name="l00319"></a>00319 
+<a name="l00320"></a>00320 
+<a name="l00321"></a>00321 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00322"></a>00322 <span class="preprocessor"></span>}
+<a name="l00323"></a>00323 <span class="preprocessor">#endif</span>
+<a name="l00324"></a>00324 <span class="preprocessor"></span>
+<a name="l00325"></a>00325 <span class="preprocessor">#endif</span>
+</pre></div></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/theoraenc_8h.html b/doc/libtheora/html/theoraenc_8h.html
new file mode 100644 (file)
index 0000000..ab896db
--- /dev/null
@@ -0,0 +1,674 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theoraenc.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+</div>
+<div class="contents">
+<h1>theoraenc.h File Reference</h1>
+<p>The <code>libtheoraenc</code> C encoding API.  
+<a href="#_details">More...</a></p>
+<code>#include &lt;stddef.h&gt;</code><br/>
+<code>#include &lt;ogg/ogg.h&gt;</code><br/>
+<code>#include &quot;<a class="el" href="codec_8h_source.html">codec.h</a>&quot;</code><br/>
+
+<p><a href="theoraenc_8h_source.html">Go to the source code of this file.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">_O_THEORA_THEORAENC_H_</a>&nbsp;&nbsp;&nbsp;(1)</td></tr>
+<tr><td colspan="2"><div class="groupHeader">th_encode_ctl() codes</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp652c8d6bf1cea216ce117704a398b5f8"></a><a class="anchor" id="encctlcodes"></a> These are the available request codes for <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl()</a>. By convention, these are even, to distinguish them from the <a class="el" href="theoradec_8h.html#decctlcodes">decoder control codes</a>. Keep any experimental or vendor-specific values above <code>0x8000</code>. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">TH_ENCCTL_SET_HUFFMAN_CODES</a>&nbsp;&nbsp;&nbsp;(0)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the Huffman tables to use.  <a href="#a0165348788e560a19b7c61ae8f0c2283"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">TH_ENCCTL_SET_QUANT_PARAMS</a>&nbsp;&nbsp;&nbsp;(2)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the quantization parameters to use.  <a href="#a3befcdd66678f8d27034f9c4b16d1b9c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE</a>&nbsp;&nbsp;&nbsp;(4)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the maximum distance between key frames.  <a href="#a27e755e15b4b5604c54974b304037a49"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">TH_ENCCTL_SET_VP3_COMPATIBLE</a>&nbsp;&nbsp;&nbsp;(10)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disables any encoder features that would prevent lossless transcoding back to VP3.  <a href="#a382d685a39a34d8e6ba76b00d804efd8"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">TH_ENCCTL_GET_SPLEVEL_MAX</a>&nbsp;&nbsp;&nbsp;(12)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the maximum speed level.  <a href="#a9baf5bdd206e80c78a8fd44687e89783"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">TH_ENCCTL_SET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(14)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the speed level.  <a href="#abd9fbcb6a25a77d991d3620164fe59d6"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">TH_ENCCTL_GET_SPLEVEL</a>&nbsp;&nbsp;&nbsp;(16)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the current speed level.  <a href="#a114b7c552f50b7b8d881a39489af1f61"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">TH_ENCCTL_SET_DUP_COUNT</a>&nbsp;&nbsp;&nbsp;(18)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the number of duplicates of the next frame to produce.  <a href="#a8bb9b05471c42a09f8684a2583b8a1df"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">TH_ENCCTL_SET_RATE_FLAGS</a>&nbsp;&nbsp;&nbsp;(20)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Modifies the default bitrate management behavior.  <a href="#a026502e08fbe1af0a1063f39bd18129c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">TH_ENCCTL_SET_RATE_BUFFER</a>&nbsp;&nbsp;&nbsp;(22)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the size of the bitrate management bit reservoir as a function of number of frames.  <a href="#aaefb515876b2a180ad5c3120fc584a52"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">TH_ENCCTL_2PASS_OUT</a>&nbsp;&nbsp;&nbsp;(24)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable pass 1 of two-pass encoding mode and retrieve the first pass metrics.  <a href="#ac3751b9c3838888ec2e3f0b0d2823282"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">TH_ENCCTL_2PASS_IN</a>&nbsp;&nbsp;&nbsp;(26)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits two-pass encoding metric data collected the first encoding pass to the second pass.  <a href="#a4a84f982cdd9a3e3c803a29bbde9df0b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">TH_ENCCTL_SET_QUALITY</a>&nbsp;&nbsp;&nbsp;(28)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the current encoding quality.  <a href="#aac087983fa951b9148c9db6bc2e81ef4"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">TH_ENCCTL_SET_BITRATE</a>&nbsp;&nbsp;&nbsp;(30)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the current encoding bitrate.  <a href="#a9b969df55ecad1acd1ae207fad42592e"></a><br/></td></tr>
+<tr><td colspan="2"><div class="groupHeader">TH_ENCCTL_SET_RATE_FLAGS flags</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp6d70796e675cce22589d15a73cb3a16b"></a><a class="anchor" id="ratectlflags"></a> These are the flags available for use with <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c" title="Modifies the default bitrate management behavior.">TH_ENCCTL_SET_RATE_FLAGS</a>. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">TH_RATECTL_DROP_FRAMES</a>&nbsp;&nbsp;&nbsp;(0x1)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Drop frames to keep within bitrate buffer constraints.  <a href="#a3e7fab53b902b54135522ba286f45e33"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">TH_RATECTL_CAP_OVERFLOW</a>&nbsp;&nbsp;&nbsp;(0x2)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ignore bitrate buffer overflows.  <a href="#a32f9983b344a431334493cefb0b9337c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">TH_RATECTL_CAP_UNDERFLOW</a>&nbsp;&nbsp;&nbsp;(0x4)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Ignore bitrate buffer underflows.  <a href="#ad0d62d9dce542caf5296b03b97e020a6"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Encoder state</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrp4ebc85bd8522a8b6128225c02b31c8b7"></a>The following data structure is opaque, and its contents are not publicly defined by this API.</p>
+<p>Referring to its internals directly is unsupported, and may break without warning. </p>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The encoder context.  <a href="#af5cc40472b925456d42526a035d66edd"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions for encoding</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><p><a class="anchor" id="amgrpc58fb8743a7ca83eb895d57e29e032c8"></a>You must link to <code>libtheoraenc</code> and <code>libtheoradec</code> if you use any of the functions in this section.</p>
+<p>The functions are listed in the order they are used in a typical encode. The basic steps are:</p>
+<ul>
+<li>Fill in a <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> structure with details on the format of the video you wish to encode.</li>
+<li>Allocate a <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> handle with <a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc()</a>.</li>
+<li>Perform any additional encoder configuration required with <a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl()</a>.</li>
+<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader()</a> to retrieve all the header packets.</li>
+<li>For each uncompressed frame:<ul>
+<li>Submit the uncompressed frame via <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in()</a></li>
+<li>Repeatedly call <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout()</a> to retrieve any video data packets that are ready.</li>
+</ul>
+</li>
+<li>Call <a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680" title="Frees an allocated encoder instance.">th_encode_free()</a> to release all encoder memory. </li>
+</ul>
+<br/><br/></div></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7">th_encode_alloc</a> (const <a class="el" href="structth__info.html">th_info</a> *_info)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates an encoder instance.  <a href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9">th_encode_ctl</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _req, void *_buf, size_t _buf_sz)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Encoder control function.  <a href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408">th_encode_flushheader</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="structth__comment.html">th_comment</a> *_comments, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outputs the next header packet.  <a href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750">th_encode_ycbcr_in</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, <a class="el" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45">th_ycbcr_buffer</a> _ycbcr)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Submits an uncompressed frame to the encoder.  <a href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b">th_encode_packetout</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc, int _last, ogg_packet *_op)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieves encoded video data packets.  <a href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__encfuncs.html#ga36b23d216532231925c4107894204680">th_encode_free</a> (<a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> *_enc)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Frees an allocated encoder instance.  <a href="group__encfuncs.html#ga36b23d216532231925c4107894204680"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structth__quant__info.html">th_quant_info</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">TH_VP31_QUANT_INFO</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The quantization parameters used by VP3.  <a href="#a3b1b462989f4e7a5a98e6e697f1a7f7d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structth__huff__code.html">th_huff_code</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">TH_VP31_HUFF_CODES</a> [TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS]</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The Huffman tables used by VP3.  <a href="#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>The <code>libtheoraenc</code> C encoding API. </p>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ab915dd90f069a2431454fd62365e9381"></a><!-- doxytag: member="theoraenc.h::_O_THEORA_THEORAENC_H_" ref="ab915dd90f069a2431454fd62365e9381" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _O_THEORA_THEORAENC_H_&nbsp;&nbsp;&nbsp;(1)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4a84f982cdd9a3e3c803a29bbde9df0b"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_2PASS_IN" ref="a4a84f982cdd9a3e3c803a29bbde9df0b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_2PASS_IN&nbsp;&nbsp;&nbsp;(26)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Submits two-pass encoding metric data collected the first encoding pass to the second pass. </p>
+<p>The first call must be made before the first frame is encoded, and a target bitrate must have already been specified to the encoder. It sets the encoder to pass 2 mode implicitly; this cannot be disabled. The encoder may require reading data from some or all of the frames in advance, depending on, e.g., the reservoir size used in the second pass. You must call this function repeatedly before each frame to provide data until either a) it fails to consume all of the data presented or b) all of the pass 1 data has been consumed. In the first case, you must save the remaining data to be presented after the next frame. You can call this function with a NULL argument to get an upper bound on the number of bytes that will be required before the next frame.</p>
+<p>When pass 2 is first enabled, the default bit reservoir is set to the entire file; this gives maximum flexibility but can lead to very high peak rates. You can subsequently set it to another value with <a class="el" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52" title="Sets the size of the bitrate management bit reservoir as a function of number of...">TH_ENCCTL_SET_RATE_BUFFER</a> (e.g., to set it to the keyframe interval for non-live streaming), however, you may then need to provide more data before the next frame.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>char[]</code>: A buffer containing the data returned by <a class="el" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282" title="Enable pass 1 of two-pass encoding mode and retrieve the first pass metrics.">TH_ENCCTL_2PASS_OUT</a> in pass 1. You may pass <code>NULL</code> for <em>_buf</em> to return an upper bound on the number of additional bytes needed before the next frame. The summary data returned at the end of pass 1 must be at the head of the buffer on the first call with a non-<code>NULL</code> <em>_buf</em>, and the placeholder data returned at the start of pass 1 should be omitted. After each call you should advance this buffer by the number of bytes consumed. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>&gt;0</em>&nbsp;</td><td>The number of bytes of metric data required/consumed. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No more data is required before the next frame. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>No target bitrate has been set, or the first call was made after the first frame was submitted for encoding. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_ENOTFORMAT</em>&nbsp;</td><td>The data did not appear to be pass 1 from a compatible implementation of this library. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EBADHEADER</em>&nbsp;</td><td>The data was invalid; this may be returned when attempting to read an aborted pass 1 file that still has the placeholder data in place of the summary data. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac3751b9c3838888ec2e3f0b0d2823282"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_2PASS_OUT" ref="ac3751b9c3838888ec2e3f0b0d2823282" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_2PASS_OUT&nbsp;&nbsp;&nbsp;(24)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Enable pass 1 of two-pass encoding mode and retrieve the first pass metrics. </p>
+<p>Pass 1 mode must be enabled before the first frame is encoded, and a target bitrate must have already been specified to the encoder. Although this does not have to be the exact rate that will be used in the second pass, closer values may produce better results. The first call returns the size of the two-pass header data, along with some placeholder content, and sets the encoder into pass 1 mode implicitly. This call sets the encoder to pass 1 mode implicitly. Then, a subsequent call must be made after each call to <a class="el" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in()</a> to retrieve the metrics for that frame. An additional, final call must be made to retrieve the summary data, containing such information as the total number of frames, etc. This must be stored in place of the placeholder data that was returned in the first call, before the frame metrics data. All of this data must be presented back to the encoder during pass 2 using <a class="el" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b" title="Submits two-pass encoding metric data collected the first encoding pass to the second...">TH_ENCCTL_2PASS_IN</a>.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>&lt;tt&gt;char</em>&nbsp;</td><td>*_buf: Returns a pointer to internal storage containing the two pass metrics data. This storage is only valid until the next call, or until the encoder context is freed, and must be copied by the application. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>&gt;=0</em>&nbsp;</td><td>The number of bytes of metric data available in the returned buffer. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(char *)</code>, no target bitrate has been set, or the first call was made after the first frame was submitted for encoding. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a114b7c552f50b7b8d881a39489af1f61"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_GET_SPLEVEL" ref="a114b7c552f50b7b8d881a39489af1f61" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_GET_SPLEVEL&nbsp;&nbsp;&nbsp;(16)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Gets the current speed level. </p>
+<p>The default speed level may vary according to encoder implementation, but if this control code is not supported (it returns <a class="el" href="codec_8h.html#a921c47accc17841f220af5a6afb79efe" title="The specified function is not implemented.">TH_EIMPL</a>), the default may be assumed to be the slowest available speed (0). The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The current encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9baf5bdd206e80c78a8fd44687e89783"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_GET_SPLEVEL_MAX" ref="a9baf5bdd206e80c78a8fd44687e89783" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_GET_SPLEVEL_MAX&nbsp;&nbsp;&nbsp;(12)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Gets the maximum speed level. </p>
+<p>Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. constant quality, etc.).</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The maximum encoding speed level. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9b969df55ecad1acd1ae207fad42592e"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_BITRATE" ref="a9b969df55ecad1acd1ae207fad42592e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_BITRATE&nbsp;&nbsp;&nbsp;(30)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the current encoding bitrate. </p>
+<p>Once a bitrate is set, the encoder must use a rate-controlled mode for all future frames (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target bitrate encoded in them will be updated. Due to the buffer delay, the exact bitrate of each section of the encode is not guaranteed. The encoder may have already used more bits than allowed for the frames it has encoded, expecting to make them up in future frames, or it may have used fewer, holding the excess in reserve. The exact transition between the two bitrates is not well-defined by this API, but may be affected by flags set with <a class="el" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c" title="Modifies the default bitrate management behavior.">TH_ENCCTL_SET_RATE_FLAGS</a>. After a number of frames equal to the buffer delay, one may expect further output to average at the target bitrate.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>long</code>: The new target bitrate, in bits per second. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>The target bitrate was not positive. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a8bb9b05471c42a09f8684a2583b8a1df"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_DUP_COUNT" ref="a8bb9b05471c42a09f8684a2583b8a1df" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_DUP_COUNT&nbsp;&nbsp;&nbsp;(18)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the number of duplicates of the next frame to produce. </p>
+<p>Although libtheora can encode duplicate frames very cheaply, it costs some amount of CPU to detect them, and a run of duplicates cannot span a keyframe boundary. This control code tells the encoder to produce the specified number of extra duplicates of the next frame. This allows the encoder to make smarter keyframe placement decisions and rate control decisions, and reduces CPU usage as well, when compared to just submitting the same frame for encoding multiple times. This setting only applies to the next frame submitted for encoding. You MUST call <a class="el" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout()</a> repeatedly until it returns 0, or the extra duplicate frames will be lost.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The number of duplicates to produce. If this is negative or zero, no duplicates will be produced. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the number of duplicates is greater than or equal to the maximum keyframe interval. In the latter case, NO duplicate frames will be produced. You must ensure that the maximum keyframe interval is set larger than the maximum number of duplicates you will ever wish to insert prior to encoding. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0165348788e560a19b7c61ae8f0c2283"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_HUFFMAN_CODES" ref="a0165348788e560a19b7c61ae8f0c2283" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_HUFFMAN_CODES&nbsp;&nbsp;&nbsp;(0)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the Huffman tables to use. </p>
+<p>The tables are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default tables.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code><a class="el" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>[<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42" title="The number of Huffman tables used by Theora.">TH_NHUFFMAN_TABLES</a>][<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422" title="The number of DCT token values in each table.">TH_NDCT_TOKENS</a>]</code> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>Encoding has already begun or one or more of the given tables is not full or prefix-free, <em>_buf</em> is <code>NULL</code> and <em>_buf_sz</em> is not zero, or <em>_buf</em> is non-<code>NULL</code> and <em>_buf_sz</em> is not <code>sizeof(<a class="el" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>)*<a class="el" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42" title="The number of Huffman tables used by Theora.">TH_NHUFFMAN_TABLES</a>*<a class="el" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422" title="The number of DCT token values in each table.">TH_NDCT_TOKENS</a></code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a27e755e15b4b5604c54974b304037a49"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE" ref="a27e755e15b4b5604c54974b304037a49" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE&nbsp;&nbsp;&nbsp;(4)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the maximum distance between key frames. </p>
+<p>This can be changed during an encode, but will be bounded by <code>1&lt;&lt;<a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position...">th_info::keyframe_granule_shift</a></code>. If it is set before encoding begins, <a class="el" href="structth__info.html#a693ca4ab11fbc0c3f32594b4bb8766ed" title="The amount to shift to extract the last keyframe number from the granule position...">th_info::keyframe_granule_shift</a> will be enlarged appropriately.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The maximum distance between key frames. </td></tr>
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>ogg_uint32_t</code>: The actual maximum distance set. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(ogg_uint32_t)</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aac087983fa951b9148c9db6bc2e81ef4"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_QUALITY" ref="aac087983fa951b9148c9db6bc2e81ef4" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_QUALITY&nbsp;&nbsp;&nbsp;(28)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the current encoding quality. </p>
+<p>This is only valid so long as no bitrate has been specified, either through the <a class="el" href="structth__info.html" title="Theora bitstream information.">th_info</a> struct used to initialize the encoder or through <a class="el" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e" title="Sets the current encoding bitrate.">TH_ENCCTL_SET_BITRATE</a> (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target quality encoded in them will be updated.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The new target quality, in the range 0...63, inclusive. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>A target bitrate has already been specified, or the quality index was not in the range 0...63. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a3befcdd66678f8d27034f9c4b16d1b9c"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_QUANT_PARAMS" ref="a3befcdd66678f8d27034f9c4b16d1b9c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_QUANT_PARAMS&nbsp;&nbsp;&nbsp;(2)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the quantization parameters to use. </p>
+<p>The parameters are copied, not stored by reference, so they can be freed after this call. <code>NULL</code> may be specified to revert to the default parameters.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a> </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td>Encoding has already begun, <em>_buf</em> is <code>NULL</code> and <em>_buf_sz</em> is not zero, or <em>_buf</em> is non-<code>NULL</code> and <em>_buf_sz</em> is not <code>sizeof(<a class="el" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a>)</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aaefb515876b2a180ad5c3120fc584a52"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_RATE_BUFFER" ref="aaefb515876b2a180ad5c3120fc584a52" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_RATE_BUFFER&nbsp;&nbsp;&nbsp;(22)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the size of the bitrate management bit reservoir as a function of number of frames. </p>
+<p>The reservoir size affects how quickly bitrate management reacts to instantaneous changes in the video complexity. Larger reservoirs react more slowly, and provide better overall quality, but require more buffering by a client, adding more latency to live streams. By default, libtheora sets the reservoir to the maximum distance between keyframes, subject to a minimum and maximum limit. This call may be used to increase or decrease the reservoir, increasing or decreasing the allowed temporary variance in bitrate. An implementation may impose some limits on the size of a reservoir it can handle, in which case the actual reservoir size may not be exactly what was requested. The actual value set will be returned.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: Requested size of the reservoir measured in frames. </td></tr>
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The actual size of the reservoir set. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or rate control is not enabled. The buffer has an implementation defined minimum and maximum size and the value in _buf will be adjusted to match the actual value set. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a026502e08fbe1af0a1063f39bd18129c"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_RATE_FLAGS" ref="a026502e08fbe1af0a1063f39bd18129c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_RATE_FLAGS&nbsp;&nbsp;&nbsp;(20)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Modifies the default bitrate management behavior. </p>
+<p>Use to allow or disallow frame dropping, and to enable or disable capping bit reservoir overflows and underflows. See <a class="el" href="theoraenc_8h.html#encctlcodes">the list of available flags</a>. The flags are set by default to <code><a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33" title="Drop frames to keep within bitrate buffer constraints.">TH_RATECTL_DROP_FRAMES</a>|<a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c" title="Ignore bitrate buffer overflows.">TH_RATECTL_CAP_OVERFLOW</a></code>.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: Any combination of <a class="el" href="theoraenc_8h.html#ratectlflags">the available flags</a>:</p>
+<ul>
+<li><a class="el" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33" title="Drop frames to keep within bitrate buffer constraints.">TH_RATECTL_DROP_FRAMES</a>: Enable frame dropping.</li>
+<li><a class="el" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c" title="Ignore bitrate buffer overflows.">TH_RATECTL_CAP_OVERFLOW</a>: Don't bank excess bits for later use.</li>
+<li><a class="el" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6" title="Ignore bitrate buffer underflows.">TH_RATECTL_CAP_UNDERFLOW</a>: Don't try to make up shortfalls later. </li>
+</ul>
+</td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code> or rate control is not enabled. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="abd9fbcb6a25a77d991d3620164fe59d6"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_SPLEVEL" ref="abd9fbcb6a25a77d991d3620164fe59d6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_SPLEVEL&nbsp;&nbsp;&nbsp;(14)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Sets the speed level. </p>
+<p>The current speed level may be retrieved using <a class="el" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61" title="Gets the current speed level.">TH_ENCCTL_GET_SPLEVEL</a>.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: The new encoding speed level. 0 is slowest, larger values use less CPU. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation- and encoding mode-specific, and can be obtained via <a class="el" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783" title="Gets the maximum speed level.">TH_ENCCTL_GET_SPLEVEL_MAX</a>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation in the current encoding mode. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a382d685a39a34d8e6ba76b00d804efd8"></a><!-- doxytag: member="theoraenc.h::TH_ENCCTL_SET_VP3_COMPATIBLE" ref="a382d685a39a34d8e6ba76b00d804efd8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_ENCCTL_SET_VP3_COMPATIBLE&nbsp;&nbsp;&nbsp;(10)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Disables any encoder features that would prevent lossless transcoding back to VP3. </p>
+<p>This primarily means disabling block-adaptive quantization and always coding all four luma blocks in a macro block when 4MV is used. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-compatible. If you enable VP3-compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-multiple-of-16 width or height), then non-VP3 bitstream features will still be disabled, but the stream will still not be VP3-compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-level features will be enabled or disabled as requested.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: a non-zero value to enable VP3 compatibility, or 0 to disable it (the default). </td></tr>
+    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>_buf</em>&nbsp;</td><td><code>int</code>: 1 if all bitstream features required for VP3-compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl><dt><b>Return values:</b></dt><dd>
+  <table border="0" cellspacing="2" cellpadding="0">
+    <tr><td valign="top"></td><td valign="top"><em>TH_EFAULT</em>&nbsp;</td><td><em>_enc_ctx</em> or <em>_buf</em> is <code>NULL</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EINVAL</em>&nbsp;</td><td><em>_buf_sz</em> is not <code>sizeof(int)</code>. </td></tr>
+    <tr><td valign="top"></td><td valign="top"><em>TH_EIMPL</em>&nbsp;</td><td>Not supported by this implementation. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a32f9983b344a431334493cefb0b9337c"></a><!-- doxytag: member="theoraenc.h::TH_RATECTL_CAP_OVERFLOW" ref="a32f9983b344a431334493cefb0b9337c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_RATECTL_CAP_OVERFLOW&nbsp;&nbsp;&nbsp;(0x2)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Ignore bitrate buffer overflows. </p>
+<p>If the encoder uses so few bits that the reservoir of available bits overflows, ignore the excess. The encoder will not try to use these extra bits in future frames. At high rates this may cause the result to be undersized, but allows a client to play the stream using a finite buffer; it should normally be enabled. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad0d62d9dce542caf5296b03b97e020a6"></a><!-- doxytag: member="theoraenc.h::TH_RATECTL_CAP_UNDERFLOW" ref="ad0d62d9dce542caf5296b03b97e020a6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_RATECTL_CAP_UNDERFLOW&nbsp;&nbsp;&nbsp;(0x4)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Ignore bitrate buffer underflows. </p>
+<p>If the encoder uses so many bits that the reservoir of available bits underflows, ignore the deficit. The encoder will not try to make up these extra bits in future frames. At low rates this may cause the result to be oversized; it should normally be disabled. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3e7fab53b902b54135522ba286f45e33"></a><!-- doxytag: member="theoraenc.h::TH_RATECTL_DROP_FRAMES" ref="a3e7fab53b902b54135522ba286f45e33" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TH_RATECTL_DROP_FRAMES&nbsp;&nbsp;&nbsp;(0x1)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Drop frames to keep within bitrate buffer constraints. </p>
+<p>This can have a severe impact on quality, but is the only way to ensure that bitrate targets are met at low rates during sudden bursts of activity. </p>
+
+</div>
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="af5cc40472b925456d42526a035d66edd"></a><!-- doxytag: member="theoraenc.h::th_enc_ctx" ref="af5cc40472b925456d42526a035d66edd" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef struct <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a> <a class="el" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">th_enc_ctx</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The encoder context. </p>
+
+</div>
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e"></a><!-- doxytag: member="theoraenc.h::TH_VP31_HUFF_CODES" ref="aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e" args="[TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS]" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="structth__huff__code.html">th_huff_code</a> <a class="el" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e">TH_VP31_HUFF_CODES</a>[TH_NHUFFMAN_TABLES][TH_NDCT_TOKENS]</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The Huffman tables used by VP3. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3b1b462989f4e7a5a98e6e697f1a7f7d"></a><!-- doxytag: member="theoraenc.h::TH_VP31_QUANT_INFO" ref="a3b1b462989f4e7a5a98e6e697f1a7f7d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="structth__quant__info.html">th_quant_info</a> <a class="el" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d">TH_VP31_QUANT_INFO</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>The quantization parameters used by VP3. </p>
+
+</div>
+</div>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/html/theoraenc_8h_source.html b/doc/libtheora/html/theoraenc_8h_source.html
new file mode 100644 (file)
index 0000000..2ead1cf
--- /dev/null
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libtheora: theoraenc.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+  <div class="tabs">
+    <ul>
+      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+    </ul>
+  </div>
+  <div class="tabs">
+    <ul>
+      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+      <li><a href="globals.html"><span>Globals</span></a></li>
+    </ul>
+  </div>
+<h1>theoraenc.h</h1><a href="theoraenc_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/********************************************************************</span>
+<a name="l00002"></a>00002 <span class="comment"> *                                                                  *</span>
+<a name="l00003"></a>00003 <span class="comment"> * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *</span>
+<a name="l00004"></a>00004 <span class="comment"> * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *</span>
+<a name="l00005"></a>00005 <span class="comment"> * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *</span>
+<a name="l00006"></a>00006 <span class="comment"> * IN &apos;COPYING&apos;. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *</span>
+<a name="l00007"></a>00007 <span class="comment"> *                                                                  *</span>
+<a name="l00008"></a>00008 <span class="comment"> * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009                *</span>
+<a name="l00009"></a>00009 <span class="comment"> * by the Xiph.Org Foundation http://www.xiph.org/                  *</span>
+<a name="l00010"></a>00010 <span class="comment"> *                                                                  *</span>
+<a name="l00011"></a>00011 <span class="comment"> ********************************************************************</span>
+<a name="l00012"></a>00012 <span class="comment"></span>
+<a name="l00013"></a>00013 <span class="comment">  function:</span>
+<a name="l00014"></a>00014 <span class="comment">  last mod: $Id: theora.h,v 1.8 2004/03/15 22:17:32 derf Exp $</span>
+<a name="l00015"></a>00015 <span class="comment"></span>
+<a name="l00016"></a>00016 <span class="comment"> ********************************************************************/</span>
+<a name="l00017"></a>00017 
+<a name="l00021"></a>00021 <span class="preprocessor">#if !defined(_O_THEORA_THEORAENC_H_)</span>
+<a name="l00022"></a><a class="code" href="theoraenc_8h.html#ab915dd90f069a2431454fd62365e9381">00022</a> <span class="preprocessor"></span><span class="preprocessor"># define _O_THEORA_THEORAENC_H_ (1)</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"># include &lt;stddef.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor"># include &lt;ogg/ogg.h&gt;</span>
+<a name="l00025"></a>00025 <span class="preprocessor"># include &quot;<a class="code" href="codec_8h.html" title="The shared libtheoradec and libtheoraenc C API.">codec.h</a>&quot;</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
+<a name="l00029"></a>00029 <span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span>
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 
+<a name="l00053"></a><a class="code" href="theoraenc_8h.html#a0165348788e560a19b7c61ae8f0c2283">00053</a> <span class="preprocessor">#define TH_ENCCTL_SET_HUFFMAN_CODES (0)</span>
+<a name="l00054"></a>00054 <span class="preprocessor"></span>
+<a name="l00066"></a><a class="code" href="theoraenc_8h.html#a3befcdd66678f8d27034f9c4b16d1b9c">00066</a> <span class="preprocessor">#define TH_ENCCTL_SET_QUANT_PARAMS (2)</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span>
+<a name="l00079"></a><a class="code" href="theoraenc_8h.html#a27e755e15b4b5604c54974b304037a49">00079</a> <span class="preprocessor">#define TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE (4)</span>
+<a name="l00080"></a>00080 <span class="preprocessor"></span>
+<a name="l00107"></a><a class="code" href="theoraenc_8h.html#a382d685a39a34d8e6ba76b00d804efd8">00107</a> <span class="preprocessor">#define TH_ENCCTL_SET_VP3_COMPATIBLE (10)</span>
+<a name="l00108"></a>00108 <span class="preprocessor"></span>
+<a name="l00121"></a><a class="code" href="theoraenc_8h.html#a9baf5bdd206e80c78a8fd44687e89783">00121</a> <span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL_MAX (12)</span>
+<a name="l00122"></a>00122 <span class="preprocessor"></span>
+<a name="l00135"></a><a class="code" href="theoraenc_8h.html#abd9fbcb6a25a77d991d3620164fe59d6">00135</a> <span class="preprocessor">#define TH_ENCCTL_SET_SPLEVEL (14)</span>
+<a name="l00136"></a>00136 <span class="preprocessor"></span>
+<a name="l00149"></a><a class="code" href="theoraenc_8h.html#a114b7c552f50b7b8d881a39489af1f61">00149</a> <span class="preprocessor">#define TH_ENCCTL_GET_SPLEVEL (16)</span>
+<a name="l00150"></a>00150 <span class="preprocessor"></span>
+<a name="l00175"></a><a class="code" href="theoraenc_8h.html#a8bb9b05471c42a09f8684a2583b8a1df">00175</a> <span class="preprocessor">#define TH_ENCCTL_SET_DUP_COUNT (18)</span>
+<a name="l00176"></a>00176 <span class="preprocessor"></span>
+<a name="l00195"></a><a class="code" href="theoraenc_8h.html#a026502e08fbe1af0a1063f39bd18129c">00195</a> <span class="preprocessor">#define TH_ENCCTL_SET_RATE_FLAGS (20)</span>
+<a name="l00196"></a>00196 <span class="preprocessor"></span>
+<a name="l00221"></a><a class="code" href="theoraenc_8h.html#aaefb515876b2a180ad5c3120fc584a52">00221</a> <span class="preprocessor">#define TH_ENCCTL_SET_RATE_BUFFER (22)</span>
+<a name="l00222"></a>00222 <span class="preprocessor"></span>
+<a name="l00251"></a><a class="code" href="theoraenc_8h.html#ac3751b9c3838888ec2e3f0b0d2823282">00251</a> <span class="preprocessor">#define TH_ENCCTL_2PASS_OUT (24)</span>
+<a name="l00252"></a>00252 <span class="preprocessor"></span>
+<a name="l00297"></a><a class="code" href="theoraenc_8h.html#a4a84f982cdd9a3e3c803a29bbde9df0b">00297</a> <span class="preprocessor">#define TH_ENCCTL_2PASS_IN (26)</span>
+<a name="l00298"></a>00298 <span class="preprocessor"></span>
+<a name="l00313"></a><a class="code" href="theoraenc_8h.html#aac087983fa951b9148c9db6bc2e81ef4">00313</a> <span class="preprocessor">#define TH_ENCCTL_SET_QUALITY (28)</span>
+<a name="l00314"></a>00314 <span class="preprocessor"></span>
+<a name="l00334"></a><a class="code" href="theoraenc_8h.html#a9b969df55ecad1acd1ae207fad42592e">00334</a> <span class="preprocessor">#define TH_ENCCTL_SET_BITRATE (30)</span>
+<a name="l00335"></a>00335 <span class="preprocessor"></span>
+<a name="l00346"></a><a class="code" href="theoraenc_8h.html#a3e7fab53b902b54135522ba286f45e33">00346</a> <span class="preprocessor">#define TH_RATECTL_DROP_FRAMES   (0x1)</span>
+<a name="l00347"></a>00347 <span class="preprocessor"></span>
+<a name="l00354"></a><a class="code" href="theoraenc_8h.html#a32f9983b344a431334493cefb0b9337c">00354</a> <span class="preprocessor">#define TH_RATECTL_CAP_OVERFLOW  (0x2)</span>
+<a name="l00355"></a>00355 <span class="preprocessor"></span>
+<a name="l00361"></a><a class="code" href="theoraenc_8h.html#ad0d62d9dce542caf5296b03b97e020a6">00361</a> <span class="preprocessor">#define TH_RATECTL_CAP_UNDERFLOW (0x4)</span>
+<a name="l00362"></a>00362 <span class="preprocessor"></span>
+<a name="l00367"></a>00367 <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structth__quant__info.html" title="A complete set of quantization parameters.">th_quant_info</a> <a class="code" href="theoraenc_8h.html#a3b1b462989f4e7a5a98e6e697f1a7f7d" title="The quantization parameters used by VP3.">TH_VP31_QUANT_INFO</a>;
+<a name="l00368"></a>00368 
+<a name="l00370"></a>00370 <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structth__huff__code.html" title="A Huffman code for a Theora DCT token.">th_huff_code</a>
+<a name="l00371"></a>00371  <a class="code" href="theoraenc_8h.html#aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e" title="The Huffman tables used by VP3.">TH_VP31_HUFF_CODES</a>[<a class="code" href="codec_8h.html#a49bf449eae33c5320f0c308f32c6ae42" title="The number of Huffman tables used by Theora.">TH_NHUFFMAN_TABLES</a>][<a class="code" href="codec_8h.html#a2a44f48084e76a58cae48fb5d47cd422" title="The number of DCT token values in each table.">TH_NDCT_TOKENS</a>];
+<a name="l00372"></a>00372 
+<a name="l00373"></a>00373 
+<a name="l00374"></a>00374 
+<a name="l00382"></a><a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd">00382</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a>    <a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a>;
+<a name="l00412"></a>00412 <span class="keyword">extern</span> <a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *<a class="code" href="group__encfuncs.html#gaa91e47bc9dd5f6ee52045bd7b815e5a7" title="Allocates an encoder instance.">th_encode_alloc</a>(<span class="keyword">const</span> <a class="code" href="structth__info.html" title="Theora bitstream information.">th_info</a> *_info);
+<a name="l00421"></a>00421 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#ga3a427f6514dfdc01ea72172c469d51d9" title="Encoder control function.">th_encode_ctl</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,<span class="keywordtype">int</span> _req,<span class="keywordtype">void</span> *_buf,<span class="keywordtype">size_t</span> _buf_sz);
+<a name="l00439"></a>00439 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#ga9439d61b566039d194ff782681fbc408" title="Outputs the next header packet.">th_encode_flushheader</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,
+<a name="l00440"></a>00440  <a class="code" href="structth__comment.html" title="The comment information.">th_comment</a> *_comments,ogg_packet *_op);
+<a name="l00449"></a>00449 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#gadbe7dd66b411c2d61ab8153c15308750" title="Submits an uncompressed frame to the encoder.">th_encode_ycbcr_in</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,<a class="code" href="codec_8h.html#a343f7cfabad179cc4fe527cf06873f45" title="A complete image buffer for an uncompressed frame.">th_ycbcr_buffer</a> _ycbcr);
+<a name="l00473"></a>00473 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="group__encfuncs.html#ga96d8ac1dda53187455352f99bbb5b04b" title="Retrieves encoded video data packets.">th_encode_packetout</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc,<span class="keywordtype">int</span> _last,ogg_packet *_op);
+<a name="l00476"></a>00476 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="group__encfuncs.html#ga36b23d216532231925c4107894204680" title="Frees an allocated encoder instance.">th_encode_free</a>(<a class="code" href="theoraenc_8h.html#af5cc40472b925456d42526a035d66edd" title="The encoder context.">th_enc_ctx</a> *_enc);
+<a name="l00479"></a>00479 
+<a name="l00480"></a>00480 
+<a name="l00481"></a>00481 
+<a name="l00482"></a>00482 <span class="preprocessor">#if defined(__cplusplus)</span>
+<a name="l00483"></a>00483 <span class="preprocessor"></span>}
+<a name="l00484"></a>00484 <span class="preprocessor">#endif</span>
+<a name="l00485"></a>00485 <span class="preprocessor"></span>
+<a name="l00486"></a>00486 <span class="preprocessor">#endif</span>
+</pre></div></div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on 28 Sep 2009 for libtheora by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>
diff --git a/doc/libtheora/latex/Makefile b/doc/libtheora/latex/Makefile
new file mode 100644 (file)
index 0000000..776fcf9
--- /dev/null
@@ -0,0 +1,39 @@
+all: clean refman.dvi
+
+ps: refman.ps
+
+pdf: refman.pdf
+
+ps_2on1: refman_2on1.ps
+
+pdf_2on1: refman_2on1.pdf
+
+refman.ps: refman.dvi
+       dvips -o refman.ps refman.dvi
+
+refman.pdf: refman.ps
+       ps2pdf refman.ps refman.pdf
+
+refman.dvi: refman.tex doxygen.sty
+       echo "Running latex..."
+       latex refman.tex
+       echo "Running makeindex..."
+       makeindex refman.idx
+       echo "Rerunning latex...."
+       latex refman.tex
+       latex_count=5 ; \
+       while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
+           do \
+             echo "Rerunning latex...." ;\
+             latex refman.tex ;\
+             latex_count=`expr $$latex_count - 1` ;\
+           done
+
+refman_2on1.ps: refman.ps
+       psnup -2 refman.ps >refman_2on1.ps
+
+refman_2on1.pdf: refman_2on1.ps
+       ps2pdf refman_2on1.ps refman_2on1.pdf
+
+clean:
+       rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out refman.pdf
diff --git a/doc/libtheora/latex/annotated.tex b/doc/libtheora/latex/annotated.tex
new file mode 100644 (file)
index 0000000..b1a0ed0
--- /dev/null
@@ -0,0 +1,14 @@
+\section{Data Structures}
+Here are the data structures with brief descriptions:\begin{DoxyCompactList}
+\item\contentsline{section}{{\bf th\_\-comment} (The comment information )}{\pageref{structth__comment}}{}
+\item\contentsline{section}{{\bf th\_\-huff\_\-code} (A Huffman code for a Theora DCT token )}{\pageref{structth__huff__code}}{}
+\item\contentsline{section}{{\bf th\_\-img\_\-plane} (A buffer for a single color plane in an uncompressed image )}{\pageref{structth__img__plane}}{}
+\item\contentsline{section}{{\bf th\_\-info} (Theora bitstream information )}{\pageref{structth__info}}{}
+\item\contentsline{section}{{\bf th\_\-quant\_\-info} (A complete set of quantization parameters )}{\pageref{structth__quant__info}}{}
+\item\contentsline{section}{{\bf th\_\-quant\_\-ranges} (A set of {\itshape qi\/} ranges )}{\pageref{structth__quant__ranges}}{}
+\item\contentsline{section}{{\bf th\_\-stripe\_\-callback} (The striped decode callback data to pass to \doxyref{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}{p.}{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e} )}{\pageref{structth__stripe__callback}}{}
+\item\contentsline{section}{{\bf theora\_\-comment} (Comment header metadata )}{\pageref{structtheora__comment}}{}
+\item\contentsline{section}{{\bf theora\_\-info} (Theora bitstream info )}{\pageref{structtheora__info}}{}
+\item\contentsline{section}{{\bf theora\_\-state} (Codec internal state and context )}{\pageref{structtheora__state}}{}
+\item\contentsline{section}{{\bf yuv\_\-buffer} (A YUV buffer for passing uncompressed frames to and from the codec )}{\pageref{structyuv__buffer}}{}
+\end{DoxyCompactList}
diff --git a/doc/libtheora/latex/codec_8h.tex b/doc/libtheora/latex/codec_8h.tex
new file mode 100644 (file)
index 0000000..a84076c
--- /dev/null
@@ -0,0 +1,233 @@
+\section{codec.h File Reference}
+\label{codec_8h}\index{codec.h@{codec.h}}
+
+
+The shared {\ttfamily libtheoradec} and {\ttfamily libtheoraenc} C API.  
+{\ttfamily \#include $<$ogg/ogg.h$>$}\par
+\subsection*{Data Structures}
+\begin{DoxyCompactItemize}
+\item 
+struct {\bf th\_\-img\_\-plane}
+\begin{DoxyCompactList}\small\item\em A buffer for a single color plane in an uncompressed image. \item\end{DoxyCompactList}\item 
+struct {\bf th\_\-info}
+\begin{DoxyCompactList}\small\item\em Theora bitstream information. \item\end{DoxyCompactList}\item 
+struct {\bf th\_\-comment}
+\begin{DoxyCompactList}\small\item\em The comment information. \item\end{DoxyCompactList}\item 
+struct {\bf th\_\-quant\_\-ranges}
+\begin{DoxyCompactList}\small\item\em A set of {\itshape qi\/} ranges. \item\end{DoxyCompactList}\item 
+struct {\bf th\_\-quant\_\-info}
+\begin{DoxyCompactList}\small\item\em A complete set of quantization parameters. \item\end{DoxyCompactList}\item 
+struct {\bf th\_\-huff\_\-code}
+\begin{DoxyCompactList}\small\item\em A Huffman code for a Theora DCT token. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Defines}
+\begin{DoxyCompactItemize}
+\item 
+\#define {\bf \_\-O\_\-THEORA\_\-CODEC\_\-H\_\-}~(1)
+\item 
+\#define {\bf TH\_\-NHUFFMAN\_\-TABLES}~(80)
+\begin{DoxyCompactList}\small\item\em The number of Huffman tables used by Theora. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-NDCT\_\-TOKENS}~(32)
+\begin{DoxyCompactList}\small\item\em The number of DCT token values in each table. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\begin{Indent}{\bf Return codes}\par
+{\em \label{_amgrp800007e5fae550658ee577ca16693452}
+ }\begin{DoxyCompactItemize}
+\item 
+\#define {\bf TH\_\-EFAULT}~(-\/1)
+\begin{DoxyCompactList}\small\item\em An invalid pointer was provided. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-EINVAL}~(-\/10)
+\begin{DoxyCompactList}\small\item\em An invalid argument was provided. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-EBADHEADER}~(-\/20)
+\begin{DoxyCompactList}\small\item\em The contents of the header were incomplete, invalid, or unexpected. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENOTFORMAT}~(-\/21)
+\begin{DoxyCompactList}\small\item\em The header does not belong to a Theora stream. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-EVERSION}~(-\/22)
+\begin{DoxyCompactList}\small\item\em The bitstream version is too high. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-EIMPL}~(-\/23)
+\begin{DoxyCompactList}\small\item\em The specified function is not implemented. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-EBADPACKET}~(-\/24)
+\begin{DoxyCompactList}\small\item\em There were errors in the video data packet. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DUPFRAME}~(1)
+\begin{DoxyCompactList}\small\item\em The decoded packet represented a dropped frame. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Typedefs}
+\begin{DoxyCompactItemize}
+\item 
+typedef {\bf th\_\-img\_\-plane} {\bf th\_\-ycbcr\_\-buffer} [3]
+\begin{DoxyCompactList}\small\item\em A complete image buffer for an uncompressed frame. \item\end{DoxyCompactList}\item 
+typedef unsigned char {\bf th\_\-quant\_\-base} [64]
+\begin{DoxyCompactList}\small\item\em A single base matrix. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Enumerations}
+\begin{DoxyCompactItemize}
+\item 
+enum {\bf th\_\-colorspace} \{ {\bf TH\_\-CS\_\-UNSPECIFIED}, 
+{\bf TH\_\-CS\_\-ITU\_\-REC\_\-470M}, 
+{\bf TH\_\-CS\_\-ITU\_\-REC\_\-470BG}, 
+{\bf TH\_\-CS\_\-NSPACES}
+ \}
+\begin{DoxyCompactList}\small\item\em The currently defined color space tags. \item\end{DoxyCompactList}\item 
+enum {\bf th\_\-pixel\_\-fmt} \{ \par
+{\bf TH\_\-PF\_\-420}, 
+{\bf TH\_\-PF\_\-RSVD}, 
+{\bf TH\_\-PF\_\-422}, 
+{\bf TH\_\-PF\_\-444}, 
+\par
+{\bf TH\_\-PF\_\-NFORMATS}
+ \}
+\begin{DoxyCompactList}\small\item\em The currently defined pixel format tags. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Functions}
+\begin{Indent}{\bf Basic shared functions}\par
+{\em \label{_amgrpb625c22fa07613c734f71c378fe32d7a}
+ }\begin{DoxyCompactItemize}
+\item 
+const char $\ast$ {\bf th\_\-version\_\-string} (void)
+\begin{DoxyCompactList}\small\item\em Retrieves a human-\/readable string to identify the library vendor and version. \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf th\_\-version\_\-number} (void)
+\begin{DoxyCompactList}\small\item\em Retrieves the library version number. \item\end{DoxyCompactList}\item 
+ogg\_\-int64\_\-t {\bf th\_\-granule\_\-frame} (void $\ast$\_\-encdec, ogg\_\-int64\_\-t \_\-granpos)
+\begin{DoxyCompactList}\small\item\em Converts a granule position to an absolute frame index, starting at {\ttfamily 0}. \item\end{DoxyCompactList}\item 
+double {\bf th\_\-granule\_\-time} (void $\ast$\_\-encdec, ogg\_\-int64\_\-t \_\-granpos)
+\begin{DoxyCompactList}\small\item\em Converts a granule position to an absolute time in seconds. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-packet\_\-isheader} (ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Determines whether a Theora packet is a header or not. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-packet\_\-iskeyframe} (ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Determines whether a theora packet is a key frame or not. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\begin{Indent}{\bf Functions for manipulating header data}\par
+{\em \label{_amgrp14ef5f819e97c870c128539ed1f334e3}
+ }\begin{DoxyCompactItemize}
+\item 
+void {\bf th\_\-info\_\-init} ({\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Initializes a \doxyref{th\_\-info}{p.}{structth__info} structure. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-info\_\-clear} ({\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Clears a \doxyref{th\_\-info}{p.}{structth__info} structure. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-comment\_\-init} ({\bf th\_\-comment} $\ast$\_\-tc)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-comment\_\-add} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-comment)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-comment\_\-add\_\-tag} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag, char $\ast$\_\-val)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item 
+char $\ast$ {\bf th\_\-comment\_\-query} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag, int \_\-count)
+\begin{DoxyCompactList}\small\item\em Look up a comment value by its tag. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-comment\_\-query\_\-count} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag)
+\begin{DoxyCompactList}\small\item\em Look up the number of instances of a tag. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-comment\_\-clear} ({\bf th\_\-comment} $\ast$\_\-tc)
+\begin{DoxyCompactList}\small\item\em Clears a \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+The shared {\ttfamily libtheoradec} and {\ttfamily libtheoraenc} C API. You don't need to include this directly. 
+
+\subsection{Define Documentation}
+\index{codec.h@{codec.h}!\_\-O\_\-THEORA\_\-CODEC\_\-H\_\-@{\_\-O\_\-THEORA\_\-CODEC\_\-H\_\-}}
+\index{\_\-O\_\-THEORA\_\-CODEC\_\-H\_\-@{\_\-O\_\-THEORA\_\-CODEC\_\-H\_\-}!codec.h@{codec.h}}
+\subsubsection[{\_\-O\_\-THEORA\_\-CODEC\_\-H\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-O\_\-THEORA\_\-CODEC\_\-H\_\-~(1)}\label{codec_8h_a15352a6a862d25ab00a8f06ea65ee75b}
+\index{codec.h@{codec.h}!TH\_\-DUPFRAME@{TH\_\-DUPFRAME}}
+\index{TH\_\-DUPFRAME@{TH\_\-DUPFRAME}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-DUPFRAME}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DUPFRAME~(1)}\label{codec_8h_ab10e7b64f17a02707fc9348ea9832d09}
+
+
+The decoded packet represented a dropped frame. The player can continue to display the current frame, as the contents of the decoded frame buffer have not changed. \index{codec.h@{codec.h}!TH\_\-EBADHEADER@{TH\_\-EBADHEADER}}
+\index{TH\_\-EBADHEADER@{TH\_\-EBADHEADER}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EBADHEADER}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EBADHEADER~(-\/20)}\label{codec_8h_af00f7ecc5242d12a717202537324a510}
+
+
+The contents of the header were incomplete, invalid, or unexpected. \index{codec.h@{codec.h}!TH\_\-EBADPACKET@{TH\_\-EBADPACKET}}
+\index{TH\_\-EBADPACKET@{TH\_\-EBADPACKET}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EBADPACKET}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EBADPACKET~(-\/24)}\label{codec_8h_a6efb84e9c2213a8840003eee2847b27f}
+
+
+There were errors in the video data packet. \index{codec.h@{codec.h}!TH\_\-EFAULT@{TH\_\-EFAULT}}
+\index{TH\_\-EFAULT@{TH\_\-EFAULT}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EFAULT}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EFAULT~(-\/1)}\label{codec_8h_a4d8d8e34fc5ec39ffa05d61a310a0407}
+
+
+An invalid pointer was provided. \index{codec.h@{codec.h}!TH\_\-EIMPL@{TH\_\-EIMPL}}
+\index{TH\_\-EIMPL@{TH\_\-EIMPL}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EIMPL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EIMPL~(-\/23)}\label{codec_8h_a921c47accc17841f220af5a6afb79efe}
+
+
+The specified function is not implemented. \index{codec.h@{codec.h}!TH\_\-EINVAL@{TH\_\-EINVAL}}
+\index{TH\_\-EINVAL@{TH\_\-EINVAL}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EINVAL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EINVAL~(-\/10)}\label{codec_8h_afbbd9f19fbf292aeb62a37792cecb870}
+
+
+An invalid argument was provided. \index{codec.h@{codec.h}!TH\_\-ENOTFORMAT@{TH\_\-ENOTFORMAT}}
+\index{TH\_\-ENOTFORMAT@{TH\_\-ENOTFORMAT}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-ENOTFORMAT}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENOTFORMAT~(-\/21)}\label{codec_8h_a3dc08a00a9aba231be398f3e31726d9c}
+
+
+The header does not belong to a Theora stream. \index{codec.h@{codec.h}!TH\_\-EVERSION@{TH\_\-EVERSION}}
+\index{TH\_\-EVERSION@{TH\_\-EVERSION}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-EVERSION}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-EVERSION~(-\/22)}\label{codec_8h_ac3a45ef2b24f75259258edc481e3a122}
+
+
+The bitstream version is too high. \index{codec.h@{codec.h}!TH\_\-NDCT\_\-TOKENS@{TH\_\-NDCT\_\-TOKENS}}
+\index{TH\_\-NDCT\_\-TOKENS@{TH\_\-NDCT\_\-TOKENS}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-NDCT\_\-TOKENS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-NDCT\_\-TOKENS~(32)}\label{codec_8h_a2a44f48084e76a58cae48fb5d47cd422}
+
+
+The number of DCT token values in each table. \index{codec.h@{codec.h}!TH\_\-NHUFFMAN\_\-TABLES@{TH\_\-NHUFFMAN\_\-TABLES}}
+\index{TH\_\-NHUFFMAN\_\-TABLES@{TH\_\-NHUFFMAN\_\-TABLES}!codec.h@{codec.h}}
+\subsubsection[{TH\_\-NHUFFMAN\_\-TABLES}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-NHUFFMAN\_\-TABLES~(80)}\label{codec_8h_a49bf449eae33c5320f0c308f32c6ae42}
+
+
+The number of Huffman tables used by Theora. 
+
+\subsection{Typedef Documentation}
+\index{codec.h@{codec.h}!th\_\-quant\_\-base@{th\_\-quant\_\-base}}
+\index{th\_\-quant\_\-base@{th\_\-quant\_\-base}!codec.h@{codec.h}}
+\subsubsection[{th\_\-quant\_\-base}]{\setlength{\rightskip}{0pt plus 5cm}typedef unsigned char {\bf th\_\-quant\_\-base}[64]}\label{codec_8h_a6a1426d16beef8a311d7f0e9d2e96326}
+
+
+A single base matrix. \index{codec.h@{codec.h}!th\_\-ycbcr\_\-buffer@{th\_\-ycbcr\_\-buffer}}
+\index{th\_\-ycbcr\_\-buffer@{th\_\-ycbcr\_\-buffer}!codec.h@{codec.h}}
+\subsubsection[{th\_\-ycbcr\_\-buffer}]{\setlength{\rightskip}{0pt plus 5cm}typedef {\bf th\_\-img\_\-plane} {\bf th\_\-ycbcr\_\-buffer}[3]}\label{codec_8h_a343f7cfabad179cc4fe527cf06873f45}
+
+
+A complete image buffer for an uncompressed frame. The chroma planes may be decimated by a factor of two in either direction, as indicated by \doxyref{th\_\-info::pixel\_\-fmt}{p.}{structth__info_a2301388ef3755c41ab12fd144c1fc54e}. The width and height of the Y' plane must be multiples of 16. They may need to be cropped for display, using the rectangle specified by \doxyref{th\_\-info::pic\_\-x}{p.}{structth__info_a5b3f834bcf141564e7bb14f49101870f}, \doxyref{th\_\-info::pic\_\-y}{p.}{structth__info_a8aacc575cab2dfe3735001c2ad32aa14}, \doxyref{th\_\-info::pic\_\-width}{p.}{structth__info_a5048edf77b141dd3e9a92ca85e317345}, and \doxyref{th\_\-info::pic\_\-height}{p.}{structth__info_a775178474283c5990ba73f9ba7f6b88b}. All samples are 8 bits. \begin{DoxyNote}{Note}
+The term YUV often used to describe a colorspace is ambiguous. The exact parameters of the RGB to YUV conversion process aside, in many contexts the U and V channels actually have opposite meanings. To avoid this confusion, we are explicit: the name of the color channels are Y'CbCr, and they appear in that order, always. The prime symbol denotes that the Y channel is non-\/linear. Cb and Cr stand for \char`\"{}Chroma blue\char`\"{} and \char`\"{}Chroma red\char`\"{}, respectively. 
+\end{DoxyNote}
+
+
+\subsection{Enumeration Type Documentation}
+\index{codec.h@{codec.h}!th\_\-colorspace@{th\_\-colorspace}}
+\index{th\_\-colorspace@{th\_\-colorspace}!codec.h@{codec.h}}
+\subsubsection[{th\_\-colorspace}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf th\_\-colorspace}}\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0}
+
+
+The currently defined color space tags. See {\tt the Theora specification}, Chapter 4, for exact details on the meaning of each of these color spaces. \begin{Desc}
+\item[Enumerator: ]\par
+\begin{description}
+\index{TH\_\-CS\_\-UNSPECIFIED@{TH\_\-CS\_\-UNSPECIFIED}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-CS\_\-UNSPECIFIED@{TH\_\-CS\_\-UNSPECIFIED}}\item[{\em 
+TH\_\-CS\_\-UNSPECIFIED\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0adb9a17a3283c8d490652e507db2427cf}
+}]The color space was not specified at the encoder. It may be conveyed by an external means. \index{TH\_\-CS\_\-ITU\_\-REC\_\-470M@{TH\_\-CS\_\-ITU\_\-REC\_\-470M}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-CS\_\-ITU\_\-REC\_\-470M@{TH\_\-CS\_\-ITU\_\-REC\_\-470M}}\item[{\em 
+TH\_\-CS\_\-ITU\_\-REC\_\-470M\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0a1a19346bbfb8192baa4c185df73d3397}
+}]A color space designed for NTSC content. \index{TH\_\-CS\_\-ITU\_\-REC\_\-470BG@{TH\_\-CS\_\-ITU\_\-REC\_\-470BG}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-CS\_\-ITU\_\-REC\_\-470BG@{TH\_\-CS\_\-ITU\_\-REC\_\-470BG}}\item[{\em 
+TH\_\-CS\_\-ITU\_\-REC\_\-470BG\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0a009021d50836ddb0ec6004a2803775fe}
+}]A color space designed for PAL/SECAM content. \index{TH\_\-CS\_\-NSPACES@{TH\_\-CS\_\-NSPACES}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-CS\_\-NSPACES@{TH\_\-CS\_\-NSPACES}}\item[{\em 
+TH\_\-CS\_\-NSPACES\label{codec_8h_a4ce7a695ce353b1582d29b6c1ddf31a0a0fa8ea07f583ee57943520ddb2f6e62e}
+}]The total number of currently defined color spaces. \end{description}
+\end{Desc}
+
+\index{codec.h@{codec.h}!th\_\-pixel\_\-fmt@{th\_\-pixel\_\-fmt}}
+\index{th\_\-pixel\_\-fmt@{th\_\-pixel\_\-fmt}!codec.h@{codec.h}}
+\subsubsection[{th\_\-pixel\_\-fmt}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf th\_\-pixel\_\-fmt}}\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bc}
+
+
+The currently defined pixel format tags. See {\tt the Theora specification}, Section 4.4, for details on the precise sample locations. \begin{Desc}
+\item[Enumerator: ]\par
+\begin{description}
+\index{TH\_\-PF\_\-420@{TH\_\-PF\_\-420}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-PF\_\-420@{TH\_\-PF\_\-420}}\item[{\em 
+TH\_\-PF\_\-420\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bcafed7ad7ee4345930255827bff6055162}
+}]Chroma decimation by 2 in both the X and Y directions (4:2:0). The Cb and Cr chroma planes are half the width and half the height of the luma plane. \index{TH\_\-PF\_\-RSVD@{TH\_\-PF\_\-RSVD}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-PF\_\-RSVD@{TH\_\-PF\_\-RSVD}}\item[{\em 
+TH\_\-PF\_\-RSVD\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca9e60af0159d42b20806d7eb4a8b833e6}
+}]Currently reserved. \index{TH\_\-PF\_\-422@{TH\_\-PF\_\-422}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-PF\_\-422@{TH\_\-PF\_\-422}}\item[{\em 
+TH\_\-PF\_\-422\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca0271d01babf2f51512479f4a6245b9fa}
+}]Chroma decimation by 2 in the X direction (4:2:2). The Cb and Cr chroma planes are half the width of the luma plane, but full height. \index{TH\_\-PF\_\-444@{TH\_\-PF\_\-444}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-PF\_\-444@{TH\_\-PF\_\-444}}\item[{\em 
+TH\_\-PF\_\-444\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca2ac50ac048ea75501a5e0f99a63c8c86}
+}]No chroma decimation (4:4:4). The Cb and Cr chroma planes are full width and full height. \index{TH\_\-PF\_\-NFORMATS@{TH\_\-PF\_\-NFORMATS}!codec.h@{codec.h}}\index{codec.h@{codec.h}!TH\_\-PF\_\-NFORMATS@{TH\_\-PF\_\-NFORMATS}}\item[{\em 
+TH\_\-PF\_\-NFORMATS\label{codec_8h_a5c9e7f2f0c7ed209c9ca3ed0abd328bca2d6d78b9df1df086bb60f32f963a31eb}
+}]The total number of currently defined pixel formats. \end{description}
+\end{Desc}
+
diff --git a/doc/libtheora/latex/doxygen.sty b/doc/libtheora/latex/doxygen.sty
new file mode 100644 (file)
index 0000000..ad07649
--- /dev/null
@@ -0,0 +1,351 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{doxygen}
+
+% Packages used by this style file
+\RequirePackage{alltt}
+\RequirePackage{array}
+\RequirePackage{calc}
+\RequirePackage{color}
+\RequirePackage{fancyhdr}
+\RequirePackage{verbatim}
+
+% Setup fancy headings
+\pagestyle{fancyplain}
+\newcommand{\clearemptydoublepage}{%
+  \newpage{\pagestyle{empty}\cleardoublepage}%
+}
+\renewcommand{\chaptermark}[1]{%
+  \markboth{#1}{}%
+}
+\renewcommand{\sectionmark}[1]{%
+  \markright{\thesection\ #1}%
+}
+\lhead[\fancyplain{}{\bfseries\thepage}]{%
+  \fancyplain{}{\bfseries\rightmark}%
+}
+\rhead[\fancyplain{}{\bfseries\leftmark}]{%
+  \fancyplain{}{\bfseries\thepage}%
+}
+\rfoot[\fancyplain{}{\bfseries\scriptsize%
+  Generated on Mon Sep 28 11:02:24 2009 for libtheora by Doxygen }]{}
+\lfoot[]{\fancyplain{}{\bfseries\scriptsize%
+  Generated on Mon Sep 28 11:02:24 2009 for libtheora by Doxygen }}
+\cfoot{}
+
+%---------- Internal commands used in this style file ----------------
+
+% Generic environment used by all paragraph-based environments defined
+% below. Note that the command \title{...} needs to be defined inside
+% those environments!
+\newenvironment{DoxyDesc}[1]{%
+  \begin{list}{}%
+  {%
+    \settowidth{\labelwidth}{40pt}%
+    \setlength{\leftmargin}{\labelwidth}%
+    \setlength{\parsep}{0pt}%
+    \setlength{\itemsep}{-4pt}%
+    \renewcommand{\makelabel}{\entrylabel}%
+  }%
+  \item[#1:]%
+}{%
+  \end{list}%
+}
+
+%---------- Commands used by doxygen LaTeX output generator ----------
+
+% Used by <pre> ... </pre>
+\newenvironment{DoxyPre}{%
+  \small%
+  \begin{alltt}%
+}{%
+  \end{alltt}%
+  \normalsize%
+}
+
+% Used by @code ... @endcode
+\newenvironment{DoxyCode}{%
+  \footnotesize%
+  \verbatim%
+}{%
+  \endverbatim%
+  \normalsize%
+}
+
+% Used by @example, @include, @includelineno and @dontinclude
+\newenvironment{DoxyCodeInclude}{%
+  \DoxyCode%
+}{%
+  \endDoxyCode%
+}
+
+% Used by @verbatim ... @endverbatim
+\newenvironment{DoxyVerb}{%
+  \footnotesize%
+  \verbatim%
+}{%
+  \endverbatim%
+  \normalsize%
+}
+
+% Used by @verbinclude
+\newenvironment{DoxyVerbInclude}{%
+  \DoxyVerb%
+}{%
+  \endDoxyVerb%
+}
+
+% Used by numbered lists (using '-#' or <ol> ... </ol>)
+\newenvironment{DoxyEnumerate}{%
+  \enumerate%
+}{%
+  \endenumerate%
+}
+
+% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
+\newenvironment{DoxyItemize}{%
+  \itemize%
+}{%
+  \enditemize%
+}
+
+% Used by description lists (using <dl> ... </dl>)
+\newenvironment{DoxyDescription}{%
+  \description%
+}{%
+  \enddescription%
+}
+
+% Used by @image, @dotfile, and @dot ... @enddot
+% (only if caption is specified)
+\newenvironment{DoxyImage}{%
+  \begin{figure}[H]%
+  \begin{center}%
+}{%
+  \end{center}%
+  \end{figure}%
+}
+
+% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
+% (only if no caption is specified)
+\newenvironment{DoxyImageNoCaption}{%
+}{%
+}
+
+% Used by @attention
+\newenvironment{DoxyAttention}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @author and @authors
+\newenvironment{DoxyAuthor}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @date
+\newenvironment{DoxyDate}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @invariant
+\newenvironment{DoxyInvariant}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @note
+\newenvironment{DoxyNote}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @post
+\newenvironment{DoxyPostcond}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @pre
+\newenvironment{DoxyPrecond}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @remark
+\newenvironment{DoxyRemark}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @return
+\newenvironment{DoxyReturn}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @since
+\newenvironment{DoxySince}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @see
+\newenvironment{DoxySeeAlso}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @version
+\newenvironment{DoxyVersion}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @warning
+\newenvironment{DoxyWarning}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @internal
+\newenvironment{DoxyInternal}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @par and @paragraph
+\newenvironment{DoxyParagraph}[1]{%
+  \begin{list}{}%
+  {%
+    \settowidth{\labelwidth}{40pt}%
+    \setlength{\leftmargin}{\labelwidth}%
+    \setlength{\parsep}{0pt}%
+    \setlength{\itemsep}{-4pt}%
+    \renewcommand{\makelabel}{\entrylabel}%
+  }%
+  \item[#1]%
+}{%
+  \end{list}%
+}
+
+% Used by parameter lists
+\newenvironment{DoxyParams}[1]{%
+  \begin{DoxyDesc}{#1}%
+    \begin{description}%
+}{%
+    \end{description}%
+  \end{DoxyDesc}%
+}
+
+% Used by return value lists
+\newenvironment{DoxyRetVals}[1]{%
+  \begin{DoxyDesc}{#1}%
+    \begin{description}%
+}{%
+    \end{description}%
+  \end{DoxyDesc}%
+}
+
+% Used by exception lists
+\newenvironment{DoxyExceptions}[1]{%
+  \begin{DoxyDesc}{#1}%
+    \begin{description}%
+}{%
+    \end{description}%
+  \end{DoxyDesc}%
+}
+
+% Used by template parameter lists
+\newenvironment{DoxyTemplParams}[1]{%
+  \begin{DoxyDesc}{#1}%
+    \begin{description}%
+}{%
+    \end{description}%
+  \end{DoxyDesc}%
+}
+
+\newcommand{\doxyref}[3]{\textbf{#1} (\textnormal{#2}\,\pageref{#3})}
+\newenvironment{DoxyCompactList}
+{\begin{list}{}{
+  \setlength{\leftmargin}{0.5cm}
+  \setlength{\itemsep}{0pt}
+  \setlength{\parsep}{0pt}
+  \setlength{\topsep}{0pt}
+  \renewcommand{\makelabel}{\hfill}}}
+{\end{list}}
+\newenvironment{DoxyCompactItemize}
+{
+  \begin{itemize}
+  \setlength{\itemsep}{-3pt}
+  \setlength{\parsep}{0pt}
+  \setlength{\topsep}{0pt}
+  \setlength{\partopsep}{0pt}
+}
+{\end{itemize}}
+\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}
+\newlength{\tmplength}
+\newenvironment{TabularC}[1]
+{
+\setlength{\tmplength}
+     {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}
+      \par\begin{tabular*}{\linewidth}
+             {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}
+}
+{\end{tabular*}\par}
+\newcommand{\entrylabel}[1]{
+   {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\vspace{1.5\baselineskip}}}}
+\newenvironment{Desc}
+{\begin{list}{}
+  {
+    \settowidth{\labelwidth}{40pt}
+    \setlength{\leftmargin}{\labelwidth}
+    \setlength{\parsep}{0pt}
+    \setlength{\itemsep}{-4pt}
+    \renewcommand{\makelabel}{\entrylabel}
+  }
+}
+{\end{list}}
+\newenvironment{Indent}
+  {\begin{list}{}{\setlength{\leftmargin}{0.5cm}}
+      \item[]\ignorespaces}
+  {\unskip\end{list}}
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{0.2cm}
+\addtocounter{secnumdepth}{1}
+\sloppy
+\usepackage[T1]{fontenc}
+\makeatletter
+\renewcommand{\paragraph}{\@startsection{paragraph}{4}{0ex}%
+   {-3.25ex plus -1ex minus -0.2ex}%
+   {1.5ex plus 0.2ex}%
+   {\normalfont\normalsize\bfseries}}
+\makeatother
+\stepcounter{secnumdepth}
+\stepcounter{tocdepth}
+\definecolor{comment}{rgb}{0.5,0.0,0.0}
+\definecolor{keyword}{rgb}{0.0,0.5,0.0}
+\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
+\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
+\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
+\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
+\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
+\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
+\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
+\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
+\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
diff --git a/doc/libtheora/latex/files.tex b/doc/libtheora/latex/files.tex
new file mode 100644 (file)
index 0000000..8340639
--- /dev/null
@@ -0,0 +1,7 @@
+\section{File List}
+Here is a list of all files with brief descriptions:\begin{DoxyCompactList}
+\item\contentsline{section}{{\bf codec.h} (The shared {\ttfamily libtheoradec} and {\ttfamily libtheoraenc} C API )}{\pageref{codec_8h}}{}
+\item\contentsline{section}{{\bf theora.h} (The libtheora pre-\/1.0 legacy C API )}{\pageref{theora_8h}}{}
+\item\contentsline{section}{{\bf theoradec.h} (The {\ttfamily libtheoradec} C decoding API )}{\pageref{theoradec_8h}}{}
+\item\contentsline{section}{{\bf theoraenc.h} (The {\ttfamily libtheoraenc} C encoding API )}{\pageref{theoraenc_8h}}{}
+\end{DoxyCompactList}
diff --git a/doc/libtheora/latex/group__basefuncs.tex b/doc/libtheora/latex/group__basefuncs.tex
new file mode 100644 (file)
index 0000000..f7d9f20
--- /dev/null
@@ -0,0 +1,190 @@
+\section{Functions Shared by Encode and Decode}
+\label{group__basefuncs}\index{Functions Shared by Encode and Decode@{Functions Shared by Encode and Decode}}
+\subsection*{Basic shared functions}
+\label{_amgrpb625c22fa07613c734f71c378fe32d7a}
+ \begin{DoxyCompactItemize}
+\item 
+const char $\ast$ {\bf th\_\-version\_\-string} (void)
+\begin{DoxyCompactList}\small\item\em Retrieves a human-\/readable string to identify the library vendor and version. \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf th\_\-version\_\-number} (void)
+\begin{DoxyCompactList}\small\item\em Retrieves the library version number. \item\end{DoxyCompactList}\item 
+ogg\_\-int64\_\-t {\bf th\_\-granule\_\-frame} (void $\ast$\_\-encdec, ogg\_\-int64\_\-t \_\-granpos)
+\begin{DoxyCompactList}\small\item\em Converts a granule position to an absolute frame index, starting at {\ttfamily 0}. \item\end{DoxyCompactList}\item 
+double {\bf th\_\-granule\_\-time} (void $\ast$\_\-encdec, ogg\_\-int64\_\-t \_\-granpos)
+\begin{DoxyCompactList}\small\item\em Converts a granule position to an absolute time in seconds. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-packet\_\-isheader} (ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Determines whether a Theora packet is a header or not. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-packet\_\-iskeyframe} (ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Determines whether a theora packet is a key frame or not. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Functions for manipulating header data}
+\label{_amgrp14ef5f819e97c870c128539ed1f334e3}
+ \begin{DoxyCompactItemize}
+\item 
+void {\bf th\_\-info\_\-init} ({\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Initializes a \doxyref{th\_\-info}{p.}{structth__info} structure. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-info\_\-clear} ({\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Clears a \doxyref{th\_\-info}{p.}{structth__info} structure. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-comment\_\-init} ({\bf th\_\-comment} $\ast$\_\-tc)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-comment\_\-add} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-comment)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-comment\_\-add\_\-tag} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag, char $\ast$\_\-val)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\item 
+char $\ast$ {\bf th\_\-comment\_\-query} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag, int \_\-count)
+\begin{DoxyCompactList}\small\item\em Look up a comment value by its tag. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-comment\_\-query\_\-count} ({\bf th\_\-comment} $\ast$\_\-tc, char $\ast$\_\-tag)
+\begin{DoxyCompactList}\small\item\em Look up the number of instances of a tag. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-comment\_\-clear} ({\bf th\_\-comment} $\ast$\_\-tc)
+\begin{DoxyCompactList}\small\item\em Clears a \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Function Documentation}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-add@{th\_\-comment\_\-add}}
+\index{th\_\-comment\_\-add@{th\_\-comment\_\-add}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-add}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-comment\_\-add ({\bf th\_\-comment} $\ast$ {\em \_\-tc}, \/  char $\ast$ {\em \_\-comment})}\label{group__basefuncs_ga19a1f7b8032db957df151a34e5ac9272}
+
+
+Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \begin{DoxyNote}{Note}
+Neither \doxyref{th\_\-comment\_\-add()}{p.}{group__basefuncs_ga19a1f7b8032db957df151a34e5ac9272} nor \doxyref{th\_\-comment\_\-add\_\-tag()}{p.}{group__basefuncs_ga6c5edc201ca220a30787ca6c1ddcaeaf} support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the \doxyref{th\_\-comment}{p.}{structth__comment} structure directly. 
+\end{DoxyNote}
+
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]The \doxyref{th\_\-comment}{p.}{structth__comment} struct to add the comment to. \item[{\em \_\-comment}]Must be a null-\/terminated UTF-\/8 string containing the comment in \char`\"{}TAG=the value\char`\"{} form. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-add\_\-tag@{th\_\-comment\_\-add\_\-tag}}
+\index{th\_\-comment\_\-add\_\-tag@{th\_\-comment\_\-add\_\-tag}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-add\_\-tag}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-comment\_\-add\_\-tag ({\bf th\_\-comment} $\ast$ {\em \_\-tc}, \/  char $\ast$ {\em \_\-tag}, \/  char $\ast$ {\em \_\-val})}\label{group__basefuncs_ga6c5edc201ca220a30787ca6c1ddcaeaf}
+
+
+Add a comment to an initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \begin{DoxyNote}{Note}
+Neither \doxyref{th\_\-comment\_\-add()}{p.}{group__basefuncs_ga19a1f7b8032db957df151a34e5ac9272} nor \doxyref{th\_\-comment\_\-add\_\-tag()}{p.}{group__basefuncs_ga6c5edc201ca220a30787ca6c1ddcaeaf} support comments containing null values, although the bitstream format does support them. To add such comments you will need to manipulate the \doxyref{th\_\-comment}{p.}{structth__comment} structure directly. 
+\end{DoxyNote}
+
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]The \doxyref{th\_\-comment}{p.}{structth__comment} struct to add the comment to. \item[{\em \_\-tag}]A null-\/terminated string containing the tag associated with the comment. \item[{\em \_\-val}]The corresponding value as a null-\/terminated string. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-clear@{th\_\-comment\_\-clear}}
+\index{th\_\-comment\_\-clear@{th\_\-comment\_\-clear}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-comment\_\-clear ({\bf th\_\-comment} $\ast$ {\em \_\-tc})}\label{group__basefuncs_gae736c1afa514947a3feb223143af95e3}
+
+
+Clears a \doxyref{th\_\-comment}{p.}{structth__comment} structure. This should be called on a \doxyref{th\_\-comment}{p.}{structth__comment} structure after it is no longer needed. It will free all memory used by the structure members. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]The \doxyref{th\_\-comment}{p.}{structth__comment} struct to clear. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-init@{th\_\-comment\_\-init}}
+\index{th\_\-comment\_\-init@{th\_\-comment\_\-init}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-comment\_\-init ({\bf th\_\-comment} $\ast$ {\em \_\-tc})}\label{group__basefuncs_ga6c8ab25988e7ea9d7b1e31a54cf58f09}
+
+
+Initialize a \doxyref{th\_\-comment}{p.}{structth__comment} structure. This should be called on a freshly allocated \doxyref{th\_\-comment}{p.}{structth__comment} structure before attempting to use it. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]The \doxyref{th\_\-comment}{p.}{structth__comment} struct to initialize. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-query@{th\_\-comment\_\-query}}
+\index{th\_\-comment\_\-query@{th\_\-comment\_\-query}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-query}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ th\_\-comment\_\-query ({\bf th\_\-comment} $\ast$ {\em \_\-tc}, \/  char $\ast$ {\em \_\-tag}, \/  int {\em \_\-count})}\label{group__basefuncs_ga33c8b4f57a03217636d704c2ebb211fa}
+
+
+Look up a comment value by its tag. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]An initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item[{\em \_\-tag}]The tag to look up. \item[{\em \_\-count}]The instance of the tag. The same tag can appear multiple times, each with a distinct value, so an index is required to retrieve them all. The order in which these values appear is significant and should be preserved. Use \doxyref{th\_\-comment\_\-query\_\-count()}{p.}{group__basefuncs_ga81d518dc4426f63ceaedcbe2668679fc} to get the legal range for the {\itshape \_\-count\/} parameter. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+A pointer to the queried tag's value. This points directly to data in the \doxyref{th\_\-comment}{p.}{structth__comment} structure. It should not be modified or freed by the application, and modifications to the structure may invalidate the pointer. 
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em NULL}]If no matching tag is found. \end{DoxyRetVals}
+\index{basefuncs@{basefuncs}!th\_\-comment\_\-query\_\-count@{th\_\-comment\_\-query\_\-count}}
+\index{th\_\-comment\_\-query\_\-count@{th\_\-comment\_\-query\_\-count}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-comment\_\-query\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-comment\_\-query\_\-count ({\bf th\_\-comment} $\ast$ {\em \_\-tc}, \/  char $\ast$ {\em \_\-tag})}\label{group__basefuncs_ga81d518dc4426f63ceaedcbe2668679fc}
+
+
+Look up the number of instances of a tag. Call this first when querying for a specific tag and then iterate over the number of instances with separate calls to \doxyref{th\_\-comment\_\-query()}{p.}{group__basefuncs_ga33c8b4f57a03217636d704c2ebb211fa} to retrieve all the values for that tag in order. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-tc}]An initialized \doxyref{th\_\-comment}{p.}{structth__comment} structure. \item[{\em \_\-tag}]The tag to look up. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The number on instances of this particular tag. 
+\end{DoxyReturn}
+\index{basefuncs@{basefuncs}!th\_\-granule\_\-frame@{th\_\-granule\_\-frame}}
+\index{th\_\-granule\_\-frame@{th\_\-granule\_\-frame}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-granule\_\-frame}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int64\_\-t th\_\-granule\_\-frame (void $\ast$ {\em \_\-encdec}, \/  ogg\_\-int64\_\-t {\em \_\-granpos})}\label{group__basefuncs_ga95b10e76fc4c05d0240ea2dfd9fd62bd}
+
+
+Converts a granule position to an absolute frame index, starting at {\ttfamily 0}. The granule position is interpreted in the context of a given \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} or \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle (either will suffice). 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-encdec}]A previously allocated \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} or \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \item[{\em \_\-granpos}]The granule position to convert. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The absolute frame index corresponding to {\itshape \_\-granpos\/}. 
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em -\/1}]The given granule position was invalid (i.e. negative). \end{DoxyRetVals}
+\index{basefuncs@{basefuncs}!th\_\-granule\_\-time@{th\_\-granule\_\-time}}
+\index{th\_\-granule\_\-time@{th\_\-granule\_\-time}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-granule\_\-time}]{\setlength{\rightskip}{0pt plus 5cm}double th\_\-granule\_\-time (void $\ast$ {\em \_\-encdec}, \/  ogg\_\-int64\_\-t {\em \_\-granpos})}\label{group__basefuncs_ga707e1e281de788af0df39ef00f3fb432}
+
+
+Converts a granule position to an absolute time in seconds. The granule position is interpreted in the context of a given \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} or \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle (either will suffice). 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-encdec}]A previously allocated \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} or \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \item[{\em \_\-granpos}]The granule position to convert. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The absolute time in seconds corresponding to {\itshape \_\-granpos\/}. This is the \char`\"{}end time\char`\"{} for the frame, or the latest time it should be displayed. It is not the presentation time. 
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em -\/1}]The given granule position was invalid (i.e. negative). \end{DoxyRetVals}
+\index{basefuncs@{basefuncs}!th\_\-info\_\-clear@{th\_\-info\_\-clear}}
+\index{th\_\-info\_\-clear@{th\_\-info\_\-clear}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-info\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-info\_\-clear ({\bf th\_\-info} $\ast$ {\em \_\-info})}\label{group__basefuncs_gab3d6441ab4a4969859ef5fd78a9e3c1c}
+
+
+Clears a \doxyref{th\_\-info}{p.}{structth__info} structure. This should be called on a \doxyref{th\_\-info}{p.}{structth__info} structure after it is no longer needed. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-info}]The \doxyref{th\_\-info}{p.}{structth__info} struct to clear. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-info\_\-init@{th\_\-info\_\-init}}
+\index{th\_\-info\_\-init@{th\_\-info\_\-init}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-info\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-info\_\-init ({\bf th\_\-info} $\ast$ {\em \_\-info})}\label{group__basefuncs_ga430d9c605816a6ca0bdce3a0b965b926}
+
+
+Initializes a \doxyref{th\_\-info}{p.}{structth__info} structure. This should be called on a freshly allocated \doxyref{th\_\-info}{p.}{structth__info} structure before attempting to use it. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-info}]The \doxyref{th\_\-info}{p.}{structth__info} struct to initialize. \end{DoxyParams}
+\index{basefuncs@{basefuncs}!th\_\-packet\_\-isheader@{th\_\-packet\_\-isheader}}
+\index{th\_\-packet\_\-isheader@{th\_\-packet\_\-isheader}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-packet\_\-isheader}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-packet\_\-isheader (ogg\_\-packet $\ast$ {\em \_\-op})}\label{group__basefuncs_ga02f3f38261a9b39452d8a5e6f8737cc1}
+
+
+Determines whether a Theora packet is a header or not. This function does no verification beyond checking the packet type bit, so it should not be used for bitstream identification; use \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50} for that. As per the Theora specification, an empty (0-\/byte) packet is treated as a data packet (a delta frame with no coded blocks). 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} containing encoded Theora data. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 1}]The packet is a header packet \item[{\em 0}]The packet is a video data packet. \end{DoxyRetVals}
+\index{basefuncs@{basefuncs}!th\_\-packet\_\-iskeyframe@{th\_\-packet\_\-iskeyframe}}
+\index{th\_\-packet\_\-iskeyframe@{th\_\-packet\_\-iskeyframe}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-packet\_\-iskeyframe}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-packet\_\-iskeyframe (ogg\_\-packet $\ast$ {\em \_\-op})}\label{group__basefuncs_gafe95cfd06f0fef413266c9168a66248a}
+
+
+Determines whether a theora packet is a key frame or not. This function does no verification beyond checking the packet type and key frame bits, so it should not be used for bitstream identification; use \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50} for that. As per the Theora specification, an empty (0-\/byte) packet is treated as a delta frame (with no coded blocks). 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} containing encoded Theora data. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 1}]The packet contains a key frame. \item[{\em 0}]The packet contains a delta frame. \item[{\em -\/1}]The packet is not a video data packet. \end{DoxyRetVals}
+\index{basefuncs@{basefuncs}!th\_\-version\_\-number@{th\_\-version\_\-number}}
+\index{th\_\-version\_\-number@{th\_\-version\_\-number}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-version\_\-number}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t th\_\-version\_\-number (void)}\label{group__basefuncs_gab723a75c0f95b3eb817f7f769846016b}
+
+
+Retrieves the library version number. This is the highest bitstream version that the encoder library will produce, or that the decoder library can decode. This number is composed of a 16-\/bit major version, 8-\/bit minor version and 8 bit sub-\/version, composed as follows: 
+\begin{DoxyCode}
+ (VERSION_MAJOR<<16)+(VERSION_MINOR<<8)+(VERSION_SUBMINOR)
+\end{DoxyCode}
+ \begin{DoxyReturn}{Returns}
+the version number. 
+\end{DoxyReturn}
+\index{basefuncs@{basefuncs}!th\_\-version\_\-string@{th\_\-version\_\-string}}
+\index{th\_\-version\_\-string@{th\_\-version\_\-string}!basefuncs@{basefuncs}}
+\subsubsection[{th\_\-version\_\-string}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ th\_\-version\_\-string (void)}\label{group__basefuncs_ga04846066738d9f2024fc9961162b2dbc}
+
+
+Retrieves a human-\/readable string to identify the library vendor and version. \begin{DoxyReturn}{Returns}
+the version string. 
+\end{DoxyReturn}
diff --git a/doc/libtheora/latex/group__decfuncs.tex b/doc/libtheora/latex/group__decfuncs.tex
new file mode 100644 (file)
index 0000000..fbbda58
--- /dev/null
@@ -0,0 +1,111 @@
+\section{Functions for Decoding}
+\label{group__decfuncs}\index{Functions for Decoding@{Functions for Decoding}}
+\subsection*{Functions for decoding}
+\label{_amgrp9d29c94aa62f20426aa5ff062c7daedd}
+You must link to {\ttfamily libtheoradec} if you use any of the functions in this section.
+
+The functions are listed in the order they are used in a typical decode. The basic steps are:
+\begin{DoxyItemize}
+\item Parse the header packets by repeatedly calling \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}.
+\item Allocate a \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle with \doxyref{th\_\-decode\_\-alloc()}{p.}{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}.
+\item Call \doxyref{th\_\-setup\_\-free()}{p.}{group__decfuncs_gadef55431b68aaa59d0d7b32b2f118f27} to free any memory used for codec setup information.
+\item Perform any additional decoder configuration with \doxyref{th\_\-decode\_\-ctl()}{p.}{group__decfuncs_ga1a8051958d75b1012573b6e3c8f670e1}.
+\item For each video data packet:
+\begin{DoxyItemize}
+\item Submit the packet to the decoder via \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}.
+\item Retrieve the uncompressed video data via \doxyref{th\_\-decode\_\-ycbcr\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb}.
+\end{DoxyItemize}
+\item Call \doxyref{th\_\-decode\_\-free()}{p.}{group__decfuncs_gafb6684ad8ba507b71112bc9de148e7d0} to release all decoder memory. 
+\end{DoxyItemize}\begin{DoxyCompactItemize}
+\item 
+int {\bf th\_\-decode\_\-headerin} ({\bf th\_\-info} $\ast$\_\-info, {\bf th\_\-comment} $\ast$\_\-tc, {\bf th\_\-setup\_\-info} $\ast$$\ast$\_\-setup, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Decodes the header packets of a Theora stream. \item\end{DoxyCompactList}\item 
+{\bf th\_\-dec\_\-ctx} $\ast$ {\bf th\_\-decode\_\-alloc} (const {\bf th\_\-info} $\ast$\_\-info, const {\bf th\_\-setup\_\-info} $\ast$\_\-setup)
+\begin{DoxyCompactList}\small\item\em Allocates a decoder instance. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-setup\_\-free} ({\bf th\_\-setup\_\-info} $\ast$\_\-setup)
+\begin{DoxyCompactList}\small\item\em Releases all storage used for the decoder setup information. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-decode\_\-ctl} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, int \_\-req, void $\ast$\_\-buf, size\_\-t \_\-buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Decoder control function. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-decode\_\-packetin} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, const ogg\_\-packet $\ast$\_\-op, ogg\_\-int64\_\-t $\ast$\_\-granpos)
+\begin{DoxyCompactList}\small\item\em Submits a packet containing encoded video data to the decoder. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-decode\_\-ycbcr\_\-out} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, {\bf th\_\-ycbcr\_\-buffer} \_\-ycbcr)
+\begin{DoxyCompactList}\small\item\em Outputs the next available frame of decoded Y'CbCr data. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-decode\_\-free} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec)
+\begin{DoxyCompactList}\small\item\em Frees an allocated decoder instance. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Function Documentation}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-alloc@{th\_\-decode\_\-alloc}}
+\index{th\_\-decode\_\-alloc@{th\_\-decode\_\-alloc}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-alloc}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-dec\_\-ctx}$\ast$ th\_\-decode\_\-alloc (const {\bf th\_\-info} $\ast$ {\em \_\-info}, \/  const {\bf th\_\-setup\_\-info} $\ast$ {\em \_\-setup})}\label{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}
+
+
+Allocates a decoder instance. {\bfseries Security Warning:} The Theora format supports very large frame sizes, potentially even larger than the address space of a 32-\/bit machine, and creating a decoder context allocates the space for several frames of data. If the allocation fails here, your program will crash, possibly at some future point because the OS kernel returned a valid memory range and will only fail when it tries to map the pages in it the first time they are used. Even if it succeeds, you may experience a denial of service if the frame size is large enough to cause excessive paging. If you are integrating libtheora in a larger application where such things are undesirable, it is highly recommended that you check the frame size in {\itshape \_\-info\/} before calling this function and refuse to decode streams where it is larger than some reasonable maximum. libtheora will not check this for you, because there may be machines that can handle such streams and applications that wish to. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-info}]A \doxyref{th\_\-info}{p.}{structth__info} struct filled via \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}. \item[{\em \_\-setup}]A \doxyref{th\_\-setup\_\-info}{p.}{theoradec_8h_ab71cd2657455cc27d6c0127c66a89f28} handle returned via \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The initialized \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. 
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em NULL}]If the decoding parameters were invalid. \end{DoxyRetVals}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-ctl@{th\_\-decode\_\-ctl}}
+\index{th\_\-decode\_\-ctl@{th\_\-decode\_\-ctl}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-ctl}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-decode\_\-ctl ({\bf th\_\-dec\_\-ctx} $\ast$ {\em \_\-dec}, \/  int {\em \_\-req}, \/  void $\ast$ {\em \_\-buf}, \/  size\_\-t {\em \_\-buf\_\-sz})}\label{group__decfuncs_ga1a8051958d75b1012573b6e3c8f670e1}
+
+
+Decoder control function. This is used to provide advanced control of the decoding process. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-dec}]A \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \item[{\em \_\-req}]The control code to process. See \doxyref{the list of available control codes}{p.}{theoradec_8h_decctlcodes} for details. \item[{\em \_\-buf}]The parameters for this control code. \item[{\em \_\-buf\_\-sz}]The size of the parameter buffer. \end{DoxyParams}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-free@{th\_\-decode\_\-free}}
+\index{th\_\-decode\_\-free@{th\_\-decode\_\-free}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-free}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-decode\_\-free ({\bf th\_\-dec\_\-ctx} $\ast$ {\em \_\-dec})}\label{group__decfuncs_gafb6684ad8ba507b71112bc9de148e7d0}
+
+
+Frees an allocated decoder instance. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-dec}]A \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \end{DoxyParams}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-headerin@{th\_\-decode\_\-headerin}}
+\index{th\_\-decode\_\-headerin@{th\_\-decode\_\-headerin}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-headerin}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-decode\_\-headerin ({\bf th\_\-info} $\ast$ {\em \_\-info}, \/  {\bf th\_\-comment} $\ast$ {\em \_\-tc}, \/  {\bf th\_\-setup\_\-info} $\ast$$\ast$ {\em \_\-setup}, \/  ogg\_\-packet $\ast$ {\em \_\-op})}\label{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}
+
+
+Decodes the header packets of a Theora stream. This should be called on the initial packets of the stream, in succession, until it returns {\ttfamily 0}, indicating that all headers have been processed, or an error is encountered. At least three header packets are required, and additional optional header packets may follow. This can be used on the first packet of any logical stream to determine if that stream is a Theora stream. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-info}]A \doxyref{th\_\-info}{p.}{structth__info} structure to fill in. This must have been previously initialized with \doxyref{th\_\-info\_\-init()}{p.}{group__basefuncs_ga430d9c605816a6ca0bdce3a0b965b926}. The application may immediately begin using the contents of this structure after the first header is decoded, though it must continue to be passed in on all subsequent calls. \item[{\em \_\-tc}]A \doxyref{th\_\-comment}{p.}{structth__comment} structure to fill in. The application may immediately begin using the contents of this structure after the second header is decoded, though it must continue to be passed in on all subsequent calls. \item[{\em \_\-setup}]Returns a pointer to additional, private setup information needed by the decoder. The contents of this pointer must be initialized to {\ttfamily NULL} on the first call, and the returned value must continue to be passed in on all subsequent calls. \item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} structure which contains one of the initial packets of an Ogg logical stream. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+A positive value indicates that a Theora header was successfully processed. 
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]The first video data packet was encountered after all required header packets were parsed. The packet just passed in on this call should be saved and fed to \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb} to begin decoding video data. \item[{\em TH\_\-EFAULT}]One of {\itshape \_\-info\/}, {\itshape \_\-tc\/}, or {\itshape \_\-setup\/} was {\ttfamily NULL}. \item[{\em TH\_\-EBADHEADER}]{\itshape \_\-op\/} was {\ttfamily NULL}, the packet was not the next header packet in the expected sequence, or the format of the header data was invalid. \item[{\em TH\_\-EVERSION}]The packet data was a Theora info header, but for a bitstream version not decodable with this version of {\ttfamily libtheoradec}. \item[{\em TH\_\-ENOTFORMAT}]The packet was not a Theora header. \end{DoxyRetVals}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-packetin@{th\_\-decode\_\-packetin}}
+\index{th\_\-decode\_\-packetin@{th\_\-decode\_\-packetin}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-packetin}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-decode\_\-packetin ({\bf th\_\-dec\_\-ctx} $\ast$ {\em \_\-dec}, \/  const ogg\_\-packet $\ast$ {\em \_\-op}, \/  ogg\_\-int64\_\-t $\ast$ {\em \_\-granpos})}\label{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}
+
+
+Submits a packet containing encoded video data to the decoder. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-dec}]A \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} containing encoded video data. \item[{\em \_\-granpos}]Returns the granule position of the decoded packet. If non-\/{\ttfamily NULL}, the granule position for this specific packet is stored in this location. This is computed incrementally from previously decoded packets. After a seek, the correct granule position must be set via \doxyref{TH\_\-DECCTL\_\-SET\_\-GRANPOS}{p.}{theoradec_8h_a1e870c654d35394f0d490045df04e0f5} for this to work properly. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success. A new decoded frame can be retrieved by calling \doxyref{th\_\-decode\_\-ycbcr\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb}. \item[{\em TH\_\-DUPFRAME}]The packet represented a dropped (0-\/byte) frame. The player can skip the call to \doxyref{th\_\-decode\_\-ycbcr\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb}, as the contents of the decoded frame buffer have not changed. \item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\/} or {\itshape \_\-op\/} was {\ttfamily NULL}. \item[{\em TH\_\-EBADPACKET}]{\itshape \_\-op\/} does not contain encoded video data. \item[{\em TH\_\-EIMPL}]The video data uses bitstream features which this library does not support. \end{DoxyRetVals}
+\index{decfuncs@{decfuncs}!th\_\-decode\_\-ycbcr\_\-out@{th\_\-decode\_\-ycbcr\_\-out}}
+\index{th\_\-decode\_\-ycbcr\_\-out@{th\_\-decode\_\-ycbcr\_\-out}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-decode\_\-ycbcr\_\-out}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-decode\_\-ycbcr\_\-out ({\bf th\_\-dec\_\-ctx} $\ast$ {\em \_\-dec}, \/  {\bf th\_\-ycbcr\_\-buffer} {\em \_\-ycbcr})}\label{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb}
+
+
+Outputs the next available frame of decoded Y'CbCr data. If a striped decode callback has been set with \doxyref{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}{p.}{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e}, then the application does not need to call this function. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-dec}]A \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle. \item[{\em \_\-ycbcr}]A video buffer structure to fill in. {\ttfamily libtheoradec} will fill in all the members of this structure, including the pointers to the uncompressed video data. The memory for this video data is owned by {\ttfamily libtheoradec}. It may be freed or overwritten without notification when subsequent frames are decoded. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\/} or {\itshape \_\-ycbcr\/} was {\ttfamily NULL}. \end{DoxyRetVals}
+\index{decfuncs@{decfuncs}!th\_\-setup\_\-free@{th\_\-setup\_\-free}}
+\index{th\_\-setup\_\-free@{th\_\-setup\_\-free}!decfuncs@{decfuncs}}
+\subsubsection[{th\_\-setup\_\-free}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-setup\_\-free ({\bf th\_\-setup\_\-info} $\ast$ {\em \_\-setup})}\label{group__decfuncs_gadef55431b68aaa59d0d7b32b2f118f27}
+
+
+Releases all storage used for the decoder setup information. This should be called after you no longer want to create any decoders for a stream whose headers you have parsed with \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-setup}]The setup information to free. This can safely be {\ttfamily NULL}. \end{DoxyParams}
diff --git a/doc/libtheora/latex/group__encfuncs.tex b/doc/libtheora/latex/group__encfuncs.tex
new file mode 100644 (file)
index 0000000..c2ab2e1
--- /dev/null
@@ -0,0 +1,107 @@
+\section{Functions for Encoding}
+\label{group__encfuncs}\index{Functions for Encoding@{Functions for Encoding}}
+\subsection*{Functions for encoding}
+\label{_amgrpc58fb8743a7ca83eb895d57e29e032c8}
+You must link to {\ttfamily libtheoraenc} and {\ttfamily libtheoradec} if you use any of the functions in this section.
+
+The functions are listed in the order they are used in a typical encode. The basic steps are:
+\begin{DoxyItemize}
+\item Fill in a \doxyref{th\_\-info}{p.}{structth__info} structure with details on the format of the video you wish to encode.
+\item Allocate a \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle with \doxyref{th\_\-encode\_\-alloc()}{p.}{group__encfuncs_gaa91e47bc9dd5f6ee52045bd7b815e5a7}.
+\item Perform any additional encoder configuration required with \doxyref{th\_\-encode\_\-ctl()}{p.}{group__encfuncs_ga3a427f6514dfdc01ea72172c469d51d9}.
+\item Repeatedly call \doxyref{th\_\-encode\_\-flushheader()}{p.}{group__encfuncs_ga9439d61b566039d194ff782681fbc408} to retrieve all the header packets.
+\item For each uncompressed frame:
+\begin{DoxyItemize}
+\item Submit the uncompressed frame via \doxyref{th\_\-encode\_\-ycbcr\_\-in()}{p.}{group__encfuncs_gadbe7dd66b411c2d61ab8153c15308750}
+\item Repeatedly call \doxyref{th\_\-encode\_\-packetout()}{p.}{group__encfuncs_ga96d8ac1dda53187455352f99bbb5b04b} to retrieve any video data packets that are ready.
+\end{DoxyItemize}
+\item Call \doxyref{th\_\-encode\_\-free()}{p.}{group__encfuncs_ga36b23d216532231925c4107894204680} to release all encoder memory. 
+\end{DoxyItemize}\begin{DoxyCompactItemize}
+\item 
+{\bf th\_\-enc\_\-ctx} $\ast$ {\bf th\_\-encode\_\-alloc} (const {\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Allocates an encoder instance. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-encode\_\-ctl} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, int \_\-req, void $\ast$\_\-buf, size\_\-t \_\-buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Encoder control function. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-encode\_\-flushheader} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, {\bf th\_\-comment} $\ast$\_\-comments, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Outputs the next header packet. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-encode\_\-ycbcr\_\-in} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, {\bf th\_\-ycbcr\_\-buffer} \_\-ycbcr)
+\begin{DoxyCompactList}\small\item\em Submits an uncompressed frame to the encoder. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-encode\_\-packetout} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, int \_\-last, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Retrieves encoded video data packets. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-encode\_\-free} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc)
+\begin{DoxyCompactList}\small\item\em Frees an allocated encoder instance. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Function Documentation}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-alloc@{th\_\-encode\_\-alloc}}
+\index{th\_\-encode\_\-alloc@{th\_\-encode\_\-alloc}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-alloc}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-enc\_\-ctx}$\ast$ th\_\-encode\_\-alloc (const {\bf th\_\-info} $\ast$ {\em \_\-info})}\label{group__encfuncs_gaa91e47bc9dd5f6ee52045bd7b815e5a7}
+
+
+Allocates an encoder instance. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-info}]A \doxyref{th\_\-info}{p.}{structth__info} struct filled with the desired encoding parameters. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The initialized \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle. 
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em NULL}]If the encoding parameters were invalid. \end{DoxyRetVals}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-ctl@{th\_\-encode\_\-ctl}}
+\index{th\_\-encode\_\-ctl@{th\_\-encode\_\-ctl}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-ctl}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-encode\_\-ctl ({\bf th\_\-enc\_\-ctx} $\ast$ {\em \_\-enc}, \/  int {\em \_\-req}, \/  void $\ast$ {\em \_\-buf}, \/  size\_\-t {\em \_\-buf\_\-sz})}\label{group__encfuncs_ga3a427f6514dfdc01ea72172c469d51d9}
+
+
+Encoder control function. This is used to provide advanced control the encoding process. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-enc}]A \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle. \item[{\em \_\-req}]The control code to process. See \doxyref{the list of available control codes}{p.}{theoraenc_8h_encctlcodes} for details. \item[{\em \_\-buf}]The parameters for this control code. \item[{\em \_\-buf\_\-sz}]The size of the parameter buffer. \end{DoxyParams}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-flushheader@{th\_\-encode\_\-flushheader}}
+\index{th\_\-encode\_\-flushheader@{th\_\-encode\_\-flushheader}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-flushheader}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-encode\_\-flushheader ({\bf th\_\-enc\_\-ctx} $\ast$ {\em \_\-enc}, \/  {\bf th\_\-comment} $\ast$ {\em \_\-comments}, \/  ogg\_\-packet $\ast$ {\em \_\-op})}\label{group__encfuncs_ga9439d61b566039d194ff782681fbc408}
+
+
+Outputs the next header packet. This should be called repeatedly after encoder initialization until it returns 0 in order to get all of the header packets, in order, before encoding actual video data. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-enc}]A \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle. \item[{\em \_\-comments}]The metadata to place in the comment header, when it is encoded. \item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} structure to fill. All of the elements of this structure will be set, including a pointer to the header data. The memory for the header data is owned by {\ttfamily libtheoraenc}, and may be invalidated when the next encoder function is called. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+A positive value indicates that a header packet was successfully produced. 
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]No packet was produced, and no more header packets remain. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\/}, {\itshape \_\-comments\/}, or {\itshape \_\-op\/} was {\ttfamily NULL}. \end{DoxyRetVals}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-free@{th\_\-encode\_\-free}}
+\index{th\_\-encode\_\-free@{th\_\-encode\_\-free}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-free}]{\setlength{\rightskip}{0pt plus 5cm}void th\_\-encode\_\-free ({\bf th\_\-enc\_\-ctx} $\ast$ {\em \_\-enc})}\label{group__encfuncs_ga36b23d216532231925c4107894204680}
+
+
+Frees an allocated encoder instance. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-enc}]A \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle. \end{DoxyParams}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-packetout@{th\_\-encode\_\-packetout}}
+\index{th\_\-encode\_\-packetout@{th\_\-encode\_\-packetout}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-packetout}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-encode\_\-packetout ({\bf th\_\-enc\_\-ctx} $\ast$ {\em \_\-enc}, \/  int {\em \_\-last}, \/  ogg\_\-packet $\ast$ {\em \_\-op})}\label{group__encfuncs_ga96d8ac1dda53187455352f99bbb5b04b}
+
+
+Retrieves encoded video data packets. This should be called repeatedly after each frame is submitted to flush any encoded packets, until it returns 0. The encoder will not buffer these packets as subsequent frames are compressed, so a failure to do so will result in lost video data. \begin{DoxyNote}{Note}
+Currently the encoder operates in a one-\/frame-\/in, one-\/packet-\/out manner. However, this may be changed in the future. 
+\end{DoxyNote}
+
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-enc}]A \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle. \item[{\em \_\-last}]Set this flag to a non-\/zero value if no more uncompressed frames will be submitted. This ensures that a proper EOS flag is set on the last packet. \item[{\em \_\-op}]An {\ttfamily ogg\_\-packet} structure to fill. All of the elements of this structure will be set, including a pointer to the video data. The memory for the video data is owned by {\ttfamily libtheoraenc}, and may be invalidated when the next encoder function is called. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+A positive value indicates that a video data packet was successfully produced. 
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]No packet was produced, and no more encoded video data remains. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\/} or {\itshape \_\-op\/} was {\ttfamily NULL}. \end{DoxyRetVals}
+\index{encfuncs@{encfuncs}!th\_\-encode\_\-ycbcr\_\-in@{th\_\-encode\_\-ycbcr\_\-in}}
+\index{th\_\-encode\_\-ycbcr\_\-in@{th\_\-encode\_\-ycbcr\_\-in}!encfuncs@{encfuncs}}
+\subsubsection[{th\_\-encode\_\-ycbcr\_\-in}]{\setlength{\rightskip}{0pt plus 5cm}int th\_\-encode\_\-ycbcr\_\-in ({\bf th\_\-enc\_\-ctx} $\ast$ {\em \_\-enc}, \/  {\bf th\_\-ycbcr\_\-buffer} {\em \_\-ycbcr})}\label{group__encfuncs_gadbe7dd66b411c2d61ab8153c15308750}
+
+
+Submits an uncompressed frame to the encoder. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-enc}]A \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle. \item[{\em \_\-ycbcr}]A buffer of Y'CbCr data to encode. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\/} or {\itshape \_\-ycbcr\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]The buffer size does not match the frame size the encoder was initialized with, or encoding has already completed. \end{DoxyRetVals}
diff --git a/doc/libtheora/latex/group__oldfuncs.tex b/doc/libtheora/latex/group__oldfuncs.tex
new file mode 100644 (file)
index 0000000..5f4bb6f
--- /dev/null
@@ -0,0 +1,611 @@
+\section{Legacy pre-\/1.0 C API}
+\label{group__oldfuncs}\index{Legacy pre-\/1.0 C API@{Legacy pre-\/1.0 C API}}
+\subsection*{Data Structures}
+\begin{DoxyCompactItemize}
+\item 
+struct {\bf yuv\_\-buffer}
+\begin{DoxyCompactList}\small\item\em A YUV buffer for passing uncompressed frames to and from the codec. \item\end{DoxyCompactList}\item 
+struct {\bf theora\_\-info}
+\begin{DoxyCompactList}\small\item\em Theora bitstream info. \item\end{DoxyCompactList}\item 
+struct {\bf theora\_\-state}
+\begin{DoxyCompactList}\small\item\em Codec internal state and context. \item\end{DoxyCompactList}\item 
+struct {\bf theora\_\-comment}
+\begin{DoxyCompactList}\small\item\em Comment header metadata. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Files}
+\begin{DoxyCompactItemize}
+\item 
+file {\bf theora.h}
+
+
+\begin{DoxyCompactList}\small\item\em The libtheora pre-\/1.0 legacy C API. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Defines}
+\begin{DoxyCompactItemize}
+\item 
+\#define {\bf OC\_\-FAULT}~-\/1
+\begin{DoxyCompactList}\small\item\em General failure. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-EINVAL}~-\/10
+\begin{DoxyCompactList}\small\item\em Library encountered invalid internal data. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-DISABLED}~-\/11
+\begin{DoxyCompactList}\small\item\em Requested action is disabled. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-BADHEADER}~-\/20
+\begin{DoxyCompactList}\small\item\em Header packet was corrupt/invalid. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-NOTFORMAT}~-\/21
+\begin{DoxyCompactList}\small\item\em Packet is not a theora packet. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-VERSION}~-\/22
+\begin{DoxyCompactList}\small\item\em Bitstream version is not handled. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-IMPL}~-\/23
+\begin{DoxyCompactList}\small\item\em Feature or action not implemented. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-BADPACKET}~-\/24
+\begin{DoxyCompactList}\small\item\em Packet is corrupt. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-NEWPACKET}~-\/25
+\begin{DoxyCompactList}\small\item\em Packet is an (ignorable) unhandled extension. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-DUPFRAME}~1
+\begin{DoxyCompactList}\small\item\em Packet is a dropped frame. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Enumerations}
+\begin{DoxyCompactItemize}
+\item 
+enum {\bf theora\_\-colorspace} \{ {\bf OC\_\-CS\_\-UNSPECIFIED}, 
+{\bf OC\_\-CS\_\-ITU\_\-REC\_\-470M}, 
+{\bf OC\_\-CS\_\-ITU\_\-REC\_\-470BG}, 
+{\bf OC\_\-CS\_\-NSPACES}
+ \}
+\begin{DoxyCompactList}\small\item\em A Colorspace. \item\end{DoxyCompactList}\item 
+enum {\bf theora\_\-pixelformat} \{ {\bf OC\_\-PF\_\-420}, 
+{\bf OC\_\-PF\_\-RSVD}, 
+{\bf OC\_\-PF\_\-422}, 
+{\bf OC\_\-PF\_\-444}
+ \}
+\begin{DoxyCompactList}\small\item\em A Chroma subsampling. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item 
+const char $\ast$ {\bf theora\_\-version\_\-string} (void)
+\begin{DoxyCompactList}\small\item\em Retrieve a human-\/readable string to identify the encoder vendor and version. \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf theora\_\-version\_\-number} (void)
+\begin{DoxyCompactList}\small\item\em Retrieve a 32-\/bit version number. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-init} ({\bf theora\_\-state} $\ast$th, {\bf theora\_\-info} $\ast$ti)
+\begin{DoxyCompactList}\small\item\em Initialize the theora encoder. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-YUVin} ({\bf theora\_\-state} $\ast$t, {\bf yuv\_\-buffer} $\ast$yuv)
+\begin{DoxyCompactList}\small\item\em Submit a YUV buffer to the theora encoder. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-packetout} ({\bf theora\_\-state} $\ast$t, int last\_\-p, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request the next packet of encoded video. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-header} ({\bf theora\_\-state} $\ast$t, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a packet containing the initial header. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-comment} ({\bf theora\_\-comment} $\ast$tc, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a comment header packet from provided metadata. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-tables} ({\bf theora\_\-state} $\ast$t, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a packet containing the codebook tables for the stream. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-decode\_\-header} ({\bf theora\_\-info} $\ast$ci, {\bf theora\_\-comment} $\ast$cc, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-decode\_\-init} ({\bf theora\_\-state} $\ast$th, {\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{theora\_\-state}{p.}{structtheora__state} handle for decoding. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-decode\_\-packetin} ({\bf theora\_\-state} $\ast$th, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Input a packet containing encoded data into the theora decoder. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-decode\_\-YUVout} ({\bf theora\_\-state} $\ast$th, {\bf yuv\_\-buffer} $\ast$yuv)
+\begin{DoxyCompactList}\small\item\em Output the next available frame of decoded YUV data. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-packet\_\-isheader} (ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} for that. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-packet\_\-iskeyframe} (ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Report whether a theora packet is a keyframe or not. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-granule\_\-shift} ({\bf theora\_\-info} $\ast$ti)
+\begin{DoxyCompactList}\small\item\em Report the granulepos shift radix. \item\end{DoxyCompactList}\item 
+ogg\_\-int64\_\-t {\bf theora\_\-granule\_\-frame} ({\bf theora\_\-state} $\ast$th, ogg\_\-int64\_\-t granulepos)
+\begin{DoxyCompactList}\small\item\em Convert a granulepos to an absolute frame index, starting at 0. \item\end{DoxyCompactList}\item 
+double {\bf theora\_\-granule\_\-time} ({\bf theora\_\-state} $\ast$th, ogg\_\-int64\_\-t granulepos)
+\begin{DoxyCompactList}\small\item\em Convert a granulepos to absolute time in seconds. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-info\_\-init} ({\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-info\_\-clear} ({\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Clear a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-clear} ({\bf theora\_\-state} $\ast$t)
+\begin{DoxyCompactList}\small\item\em Free all internal data associated with a \doxyref{theora\_\-state}{p.}{structtheora__state} handle. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-comment\_\-init} ({\bf theora\_\-comment} $\ast$tc)
+\begin{DoxyCompactList}\small\item\em Initialize an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-comment\_\-add} ({\bf theora\_\-comment} $\ast$tc, char $\ast$comment)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-comment\_\-add\_\-tag} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag, char $\ast$value)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item 
+char $\ast$ {\bf theora\_\-comment\_\-query} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag, int count)
+\begin{DoxyCompactList}\small\item\em Look up a comment value by tag. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-comment\_\-query\_\-count} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag)
+\begin{DoxyCompactList}\small\item\em Look up the number of instances of a tag. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-comment\_\-clear} ({\bf theora\_\-comment} $\ast$tc)
+\begin{DoxyCompactList}\small\item\em Clear an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} struct so that it can be freed. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-control} ({\bf theora\_\-state} $\ast$th, int req, void $\ast$buf, size\_\-t buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Encoder control function. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{theora\_\-control() codes}
+\label{_amgrp13fd61986cff4566fe89a40e30b74ad9}
+ \begin{DoxyCompactItemize}
+\item 
+\#define {\bf TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}~(1)
+\begin{DoxyCompactList}\small\item\em Get the maximum post-\/processing level. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-PPLEVEL}~(3)
+\begin{DoxyCompactList}\small\item\em Set the post-\/processing level. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}~(4)
+\begin{DoxyCompactList}\small\item\em Sets the maximum distance between key frames. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-GRANPOS}~(5)
+\begin{DoxyCompactList}\small\item\em Set the granule position. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}~(2)
+\begin{DoxyCompactList}\small\item\em Sets the quantization parameters to use. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}~(10)
+\begin{DoxyCompactList}\small\item\em Disables any encoder features that would prevent lossless transcoding back to VP3. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}~(12)
+\begin{DoxyCompactList}\small\item\em Gets the maximum speed level. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}~(14)
+\begin{DoxyCompactList}\small\item\em Sets the speed level. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Define Documentation}
+\index{oldfuncs@{oldfuncs}!OC\_\-BADHEADER@{OC\_\-BADHEADER}}
+\index{OC\_\-BADHEADER@{OC\_\-BADHEADER}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-BADHEADER}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-BADHEADER~-\/20}\label{group__oldfuncs_ga809cbad2eb36be17a235a3cadfb737ba}
+
+
+Header packet was corrupt/invalid. \index{oldfuncs@{oldfuncs}!OC\_\-BADPACKET@{OC\_\-BADPACKET}}
+\index{OC\_\-BADPACKET@{OC\_\-BADPACKET}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-BADPACKET}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-BADPACKET~-\/24}\label{group__oldfuncs_ga117774c062a63dfad2a5b4d092fa2bb1}
+
+
+Packet is corrupt. \index{oldfuncs@{oldfuncs}!OC\_\-DISABLED@{OC\_\-DISABLED}}
+\index{OC\_\-DISABLED@{OC\_\-DISABLED}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-DISABLED}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-DISABLED~-\/11}\label{group__oldfuncs_ga38b9fa0af856d5930c534db26e2ac2d1}
+
+
+Requested action is disabled. \index{oldfuncs@{oldfuncs}!OC\_\-DUPFRAME@{OC\_\-DUPFRAME}}
+\index{OC\_\-DUPFRAME@{OC\_\-DUPFRAME}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-DUPFRAME}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-DUPFRAME~1}\label{group__oldfuncs_ga84a8d2f5080ad62b415a4e7551941cbb}
+
+
+Packet is a dropped frame. \index{oldfuncs@{oldfuncs}!OC\_\-EINVAL@{OC\_\-EINVAL}}
+\index{OC\_\-EINVAL@{OC\_\-EINVAL}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-EINVAL}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-EINVAL~-\/10}\label{group__oldfuncs_ga43d15091b1a03a734a124e9a04d3be55}
+
+
+Library encountered invalid internal data. \index{oldfuncs@{oldfuncs}!OC\_\-FAULT@{OC\_\-FAULT}}
+\index{OC\_\-FAULT@{OC\_\-FAULT}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-FAULT}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-FAULT~-\/1}\label{group__oldfuncs_gaa4370e13ed3aea6441ccf69dcab2506e}
+
+
+General failure. \index{oldfuncs@{oldfuncs}!OC\_\-IMPL@{OC\_\-IMPL}}
+\index{OC\_\-IMPL@{OC\_\-IMPL}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-IMPL}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-IMPL~-\/23}\label{group__oldfuncs_ga895dc2597b3bf9c97bf7701c6eff5b0c}
+
+
+Feature or action not implemented. \index{oldfuncs@{oldfuncs}!OC\_\-NEWPACKET@{OC\_\-NEWPACKET}}
+\index{OC\_\-NEWPACKET@{OC\_\-NEWPACKET}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-NEWPACKET}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-NEWPACKET~-\/25}\label{group__oldfuncs_ga60be4dc92c933eac3542bce3ce076496}
+
+
+Packet is an (ignorable) unhandled extension. \index{oldfuncs@{oldfuncs}!OC\_\-NOTFORMAT@{OC\_\-NOTFORMAT}}
+\index{OC\_\-NOTFORMAT@{OC\_\-NOTFORMAT}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-NOTFORMAT}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-NOTFORMAT~-\/21}\label{group__oldfuncs_ga9558d6d9eacd2273c8da27f945d725ad}
+
+
+Packet is not a theora packet. \index{oldfuncs@{oldfuncs}!OC\_\-VERSION@{OC\_\-VERSION}}
+\index{OC\_\-VERSION@{OC\_\-VERSION}!oldfuncs@{oldfuncs}}
+\subsubsection[{OC\_\-VERSION}]{\setlength{\rightskip}{0pt plus 5cm}\#define OC\_\-VERSION~-\/22}\label{group__oldfuncs_ga4611cfd61160405721d1e2ab0ec2564b}
+
+
+Bitstream version is not handled. \index{oldfuncs@{oldfuncs}!TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX@{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}}
+\index{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX@{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX~(1)}\label{group__oldfuncs_gab31f251c9319f2140d247585d30b3d07}
+
+
+Get the maximum post-\/processing level. The decoder supports a post-\/processing filter that can improve the appearance of the decoded images. This returns the highest level setting for this post-\/processor, corresponding to maximum improvement and computational expense. \index{oldfuncs@{oldfuncs}!TH\_\-DECCTL\_\-SET\_\-GRANPOS@{TH\_\-DECCTL\_\-SET\_\-GRANPOS}}
+\index{TH\_\-DECCTL\_\-SET\_\-GRANPOS@{TH\_\-DECCTL\_\-SET\_\-GRANPOS}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-GRANPOS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-GRANPOS~(5)}\label{group__oldfuncs_ga1e870c654d35394f0d490045df04e0f5}
+
+
+Set the granule position. Call this after a seek, to update the internal granulepos in the decoder, to insure that subsequent frames are marked properly. If you track timestamps yourself and do not use the granule postion returned by the decoder, then you do not need to use this control. \index{oldfuncs@{oldfuncs}!TH\_\-DECCTL\_\-SET\_\-PPLEVEL@{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}}
+\index{TH\_\-DECCTL\_\-SET\_\-PPLEVEL@{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-PPLEVEL~(3)}\label{group__oldfuncs_ga87774c35e1a755a84e2d705b38ebef0d}
+
+
+Set the post-\/processing level. Sets the level of post-\/processing to use when decoding the compressed stream. This must be a value between zero (off) and the maximum returned by TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX. \index{oldfuncs@{oldfuncs}!TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}}
+\index{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX~(12)}\label{group__oldfuncs_ga9baf5bdd206e80c78a8fd44687e89783}
+
+
+Gets the maximum speed level. Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. CQI, etc.).
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\rightarrow$} {\em buf}]int: The maximum encoding speed level. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-FAULT}]{\itshape \doxyref{theora\_\-state}{p.}{structtheora__state}\/} or {\itshape buf\/} is {\ttfamily NULL}. \item[{\em OC\_\-EINVAL}]{\itshape buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em OC\_\-IMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE@{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}}
+\index{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE@{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE~(4)}\label{group__oldfuncs_ga27e755e15b4b5604c54974b304037a49}
+
+
+Sets the maximum distance between key frames. This can be changed during an encode, but will be bounded by {\ttfamily 1$<$$<$\doxyref{th\_\-info::keyframe\_\-granule\_\-shift}{p.}{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed}}. If it is set before encoding begins, \doxyref{th\_\-info::keyframe\_\-granule\_\-shift}{p.}{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed} will be enlarged appropriately.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em buf}]{\ttfamily ogg\_\-uint32\_\-t}: The maximum distance between key frames. \item[\mbox{$\rightarrow$} {\em buf}]{\ttfamily ogg\_\-uint32\_\-t}: The actual maximum distance set. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-FAULT}]{\itshape \doxyref{theora\_\-state}{p.}{structtheora__state}\/} or {\itshape buf\/} is {\ttfamily NULL}. \item[{\em OC\_\-EINVAL}]{\itshape buf\_\-sz\/} is not {\ttfamily sizeof(ogg\_\-uint32\_\-t)}. \item[{\em OC\_\-IMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS@{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}}
+\index{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS@{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS~(2)}\label{group__oldfuncs_ga3befcdd66678f8d27034f9c4b16d1b9c}
+
+
+Sets the quantization parameters to use. \label{group__oldfuncs_encctlcodes_old}
+ The parameters are copied, not stored by reference, so they can be freed after this call. {\ttfamily NULL} may be specified to revert to the default parameters.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em buf}]\doxyref{th\_\-quant\_\-info}{p.}{structth__quant__info} \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-FAULT}]{\itshape \doxyref{theora\_\-state}{p.}{structtheora__state}\/} is {\ttfamily NULL}. \item[{\em OC\_\-EINVAL}]Encoding has already begun, the quantization parameters are not acceptable to this version of the encoder, {\itshape buf\/} is {\ttfamily NULL} and {\itshape buf\_\-sz\/} is not zero, or {\itshape buf\/} is non-\/{\ttfamily NULL} and {\itshape buf\_\-sz\/} is not {\ttfamily sizeof(\doxyref{th\_\-quant\_\-info}{p.}{structth__quant__info})}. \item[{\em OC\_\-IMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!TH\_\-ENCCTL\_\-SET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}}
+\index{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-SPLEVEL~(14)}\label{group__oldfuncs_gabd9fbcb6a25a77d991d3620164fe59d6}
+
+
+Sets the speed level. By default a speed value of 1 is used.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em buf}]int: The new encoding speed level. 0 is slowest, larger values use less CPU. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-FAULT}]{\itshape \doxyref{theora\_\-state}{p.}{structtheora__state}\/} or {\itshape buf\/} is {\ttfamily NULL}. \item[{\em OC\_\-EINVAL}]{\itshape buf\_\-sz\/} is not {\ttfamily sizeof(int)}, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation-\/ and encoding mode-\/specific, and can be obtained via \doxyref{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}{p.}{theoraenc_8h_a9baf5bdd206e80c78a8fd44687e89783}. \item[{\em OC\_\-IMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE@{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}}
+\index{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE@{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}!oldfuncs@{oldfuncs}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE~(10)}\label{group__oldfuncs_ga382d685a39a34d8e6ba76b00d804efd8}
+
+
+Disables any encoder features that would prevent lossless transcoding back to VP3. This primarily means disabling block-\/level QI values and not using 4MV mode when any of the luma blocks in a macro block are not coded. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-\/compatible. If you enable VP3-\/compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-\/multiple-\/of-\/16 width or height), then non-\/VP3 bitstream features will still be disabled, but the stream will still not be VP3-\/compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-\/level features will be enabled or disabled as requested.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em buf}]{\ttfamily int}: a non-\/zero value to enable VP3 compatibility, or 0 to disable it (the default). \item[\mbox{$\rightarrow$} {\em buf}]{\ttfamily int}: 1 if all bitstream features required for VP3-\/compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-FAULT}]{\itshape \doxyref{theora\_\-state}{p.}{structtheora__state}\/} or {\itshape buf\/} is {\ttfamily NULL}. \item[{\em OC\_\-EINVAL}]{\itshape buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em OC\_\-IMPL}]Not supported by this implementation. \end{DoxyRetVals}
+
+
+\subsection{Enumeration Type Documentation}
+\index{oldfuncs@{oldfuncs}!theora\_\-colorspace@{theora\_\-colorspace}}
+\index{theora\_\-colorspace@{theora\_\-colorspace}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-colorspace}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf theora\_\-colorspace}}\label{group__oldfuncs_gaa567da4ce591f7373149ce3ef3acdac9}
+
+
+A Colorspace. \begin{Desc}
+\item[Enumerator: ]\par
+\begin{description}
+\index{OC\_\-CS\_\-UNSPECIFIED@{OC\_\-CS\_\-UNSPECIFIED}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-CS\_\-UNSPECIFIED@{OC\_\-CS\_\-UNSPECIFIED}}\item[{\em 
+OC\_\-CS\_\-UNSPECIFIED\label{group__oldfuncs_ggaa567da4ce591f7373149ce3ef3acdac9abf217cf83d7d7cbf73295e6689f5cf5f}
+}]The colorspace is unknown or unspecified. \index{OC\_\-CS\_\-ITU\_\-REC\_\-470M@{OC\_\-CS\_\-ITU\_\-REC\_\-470M}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-CS\_\-ITU\_\-REC\_\-470M@{OC\_\-CS\_\-ITU\_\-REC\_\-470M}}\item[{\em 
+OC\_\-CS\_\-ITU\_\-REC\_\-470M\label{group__oldfuncs_ggaa567da4ce591f7373149ce3ef3acdac9ab20c9851a21ab148fef0bf2c00c0a294}
+}]This is the best option for 'NTSC' content. \index{OC\_\-CS\_\-ITU\_\-REC\_\-470BG@{OC\_\-CS\_\-ITU\_\-REC\_\-470BG}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-CS\_\-ITU\_\-REC\_\-470BG@{OC\_\-CS\_\-ITU\_\-REC\_\-470BG}}\item[{\em 
+OC\_\-CS\_\-ITU\_\-REC\_\-470BG\label{group__oldfuncs_ggaa567da4ce591f7373149ce3ef3acdac9a04f8fa2da26f9ec513f514163705666a}
+}]This is the best option for 'PAL' content. \index{OC\_\-CS\_\-NSPACES@{OC\_\-CS\_\-NSPACES}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-CS\_\-NSPACES@{OC\_\-CS\_\-NSPACES}}\item[{\em 
+OC\_\-CS\_\-NSPACES\label{group__oldfuncs_ggaa567da4ce591f7373149ce3ef3acdac9a640b572f11fa7102d434e1c605aaa186}
+}]This marks the end of the defined colorspaces. \end{description}
+\end{Desc}
+
+\index{oldfuncs@{oldfuncs}!theora\_\-pixelformat@{theora\_\-pixelformat}}
+\index{theora\_\-pixelformat@{theora\_\-pixelformat}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-pixelformat}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf theora\_\-pixelformat}}\label{group__oldfuncs_gae169da05bfaaf4e964a6866552d45079}
+
+
+A Chroma subsampling. These enumerate the available chroma subsampling options supported by the theora format. See Section 4.4 of the specification for exact definitions. \begin{Desc}
+\item[Enumerator: ]\par
+\begin{description}
+\index{OC\_\-PF\_\-420@{OC\_\-PF\_\-420}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-PF\_\-420@{OC\_\-PF\_\-420}}\item[{\em 
+OC\_\-PF\_\-420\label{group__oldfuncs_ggae169da05bfaaf4e964a6866552d45079a4e451af01be2645511b0e431f5225d2b}
+}]Chroma subsampling by 2 in each direction (4:2:0). \index{OC\_\-PF\_\-RSVD@{OC\_\-PF\_\-RSVD}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-PF\_\-RSVD@{OC\_\-PF\_\-RSVD}}\item[{\em 
+OC\_\-PF\_\-RSVD\label{group__oldfuncs_ggae169da05bfaaf4e964a6866552d45079a7d21c63341ad299766839c83ed1216eb}
+}]Reserved value. \index{OC\_\-PF\_\-422@{OC\_\-PF\_\-422}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-PF\_\-422@{OC\_\-PF\_\-422}}\item[{\em 
+OC\_\-PF\_\-422\label{group__oldfuncs_ggae169da05bfaaf4e964a6866552d45079a36a88c55b7ddd5aedeac2d61d57fee5b}
+}]Horizonatal chroma subsampling by 2 (4:2:2). \index{OC\_\-PF\_\-444@{OC\_\-PF\_\-444}!oldfuncs@{oldfuncs}}\index{oldfuncs@{oldfuncs}!OC\_\-PF\_\-444@{OC\_\-PF\_\-444}}\item[{\em 
+OC\_\-PF\_\-444\label{group__oldfuncs_ggae169da05bfaaf4e964a6866552d45079a1d5c6d1b0365e06b4a87880b7825f044}
+}]No chroma subsampling at all (4:4:4). \end{description}
+\end{Desc}
+
+
+
+\subsection{Function Documentation}
+\index{oldfuncs@{oldfuncs}!theora\_\-clear@{theora\_\-clear}}
+\index{theora\_\-clear@{theora\_\-clear}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-clear ({\bf theora\_\-state} $\ast$ {\em t})}\label{group__oldfuncs_gab252d5d81b925136dda72e8f1c09c5eb}
+
+
+Free all internal data associated with a \doxyref{theora\_\-state}{p.}{structtheora__state} handle. 
+\begin{DoxyParams}{Parameters}
+\item[{\em t}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle. \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-add@{theora\_\-comment\_\-add}}
+\index{theora\_\-comment\_\-add@{theora\_\-comment\_\-add}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-add}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-comment\_\-add ({\bf theora\_\-comment} $\ast$ {\em tc}, \/  char $\ast$ {\em comment})}\label{group__oldfuncs_ga650642ed23894e41109bbc42ec393ed4}
+
+
+Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. 
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]A previously initialized theora comment structure \item[{\em comment}]A null-\/terminated string encoding the comment in the form \char`\"{}TAG=the value\char`\"{}\end{DoxyParams}
+Neither \doxyref{theora\_\-comment\_\-add()}{p.}{group__oldfuncs_ga650642ed23894e41109bbc42ec393ed4} nor \doxyref{theora\_\-comment\_\-add\_\-tag()}{p.}{group__oldfuncs_ga339bd80b5bf4bb168b7052d8ec0b5a92} support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure directly. \index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-add\_\-tag@{theora\_\-comment\_\-add\_\-tag}}
+\index{theora\_\-comment\_\-add\_\-tag@{theora\_\-comment\_\-add\_\-tag}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-add\_\-tag}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-comment\_\-add\_\-tag ({\bf theora\_\-comment} $\ast$ {\em tc}, \/  char $\ast$ {\em tag}, \/  char $\ast$ {\em value})}\label{group__oldfuncs_ga339bd80b5bf4bb168b7052d8ec0b5a92}
+
+
+Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. 
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]A previously initialized theora comment structure \item[{\em tag}]A null-\/terminated string containing the tag associated with the comment. \item[{\em value}]The corresponding value as a null-\/terminated string\end{DoxyParams}
+Neither \doxyref{theora\_\-comment\_\-add()}{p.}{group__oldfuncs_ga650642ed23894e41109bbc42ec393ed4} nor \doxyref{theora\_\-comment\_\-add\_\-tag()}{p.}{group__oldfuncs_ga339bd80b5bf4bb168b7052d8ec0b5a92} support comments containing null values, although the bitstream format supports this. To add such comments you will need to manipulate the \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure directly. \index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-clear@{theora\_\-comment\_\-clear}}
+\index{theora\_\-comment\_\-clear@{theora\_\-comment\_\-clear}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-comment\_\-clear ({\bf theora\_\-comment} $\ast$ {\em tc})}\label{group__oldfuncs_ga04c07c2eefba3a433e43f9fbde14719f}
+
+
+Clear an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} struct so that it can be freed. 
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]An allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-init@{theora\_\-comment\_\-init}}
+\index{theora\_\-comment\_\-init@{theora\_\-comment\_\-init}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-comment\_\-init ({\bf theora\_\-comment} $\ast$ {\em tc})}\label{group__oldfuncs_ga811b92785df3bdbbebb3de612d9d6ce0}
+
+
+Initialize an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. 
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]An allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-query@{theora\_\-comment\_\-query}}
+\index{theora\_\-comment\_\-query@{theora\_\-comment\_\-query}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-query}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ theora\_\-comment\_\-query ({\bf theora\_\-comment} $\ast$ {\em tc}, \/  char $\ast$ {\em tag}, \/  int {\em count})}\label{group__oldfuncs_ga4361f6001abb5c83c36a2ddfb648a8dc}
+
+
+Look up a comment value by tag. 
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]Tn initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure \item[{\em tag}]The tag to look up \item[{\em count}]The instance of the tag. The same tag can appear multiple times, each with a distinct and ordered value, so an index is required to retrieve them all. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+A pointer to the queried tag's value 
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em NULL}]No matching tag is found\end{DoxyRetVals}
+\begin{DoxyNote}{Note}
+Use \doxyref{theora\_\-comment\_\-query\_\-count()}{p.}{group__oldfuncs_ga10f66a3c752442a3e0c0098e0f88df8b} to get the legal range for the count parameter. 
+\end{DoxyNote}
+\index{oldfuncs@{oldfuncs}!theora\_\-comment\_\-query\_\-count@{theora\_\-comment\_\-query\_\-count}}
+\index{theora\_\-comment\_\-query\_\-count@{theora\_\-comment\_\-query\_\-count}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-comment\_\-query\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-comment\_\-query\_\-count ({\bf theora\_\-comment} $\ast$ {\em tc}, \/  char $\ast$ {\em tag})}\label{group__oldfuncs_ga10f66a3c752442a3e0c0098e0f88df8b}
+
+
+Look up the number of instances of a tag. 
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]An initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure \item[{\em tag}]The tag to look up \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The number on instances of a particular tag.
+\end{DoxyReturn}
+Call this first when querying for a specific tag and then interate over the number of instances with separate calls to \doxyref{theora\_\-comment\_\-query()}{p.}{group__oldfuncs_ga4361f6001abb5c83c36a2ddfb648a8dc} to retrieve all instances in order. \index{oldfuncs@{oldfuncs}!theora\_\-control@{theora\_\-control}}
+\index{theora\_\-control@{theora\_\-control}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-control}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-control ({\bf theora\_\-state} $\ast$ {\em th}, \/  int {\em req}, \/  void $\ast$ {\em buf}, \/  size\_\-t {\em buf\_\-sz})}\label{group__oldfuncs_ga186773db3bc8cd550047e7df1b2ba2c9}
+
+
+Encoder control function. This is used to provide advanced control the encoding process. 
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle. \item[{\em req}]The control code to process. See \doxyref{the list of available }{p.}{group__oldfuncs_encctlcodes_old} control codes for details. \item[{\em buf}]The parameters for this control code. \item[{\em buf\_\-sz}]The size of the parameter buffer. \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-decode\_\-header@{theora\_\-decode\_\-header}}
+\index{theora\_\-decode\_\-header@{theora\_\-decode\_\-header}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-decode\_\-header}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-decode\_\-header ({\bf theora\_\-info} $\ast$ {\em ci}, \/  {\bf theora\_\-comment} $\ast$ {\em cc}, \/  ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82}
+
+
+Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables. 
+\begin{DoxyParams}{Parameters}
+\item[{\em ci}]A \doxyref{theora\_\-info}{p.}{structtheora__info} structure to fill. This must have been previously initialized with \doxyref{theora\_\-info\_\-init()}{p.}{group__oldfuncs_ga3091c87d48f1faba018c5956379a6d90}. If {\itshape op\/} contains an initial header, \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} will fill {\itshape ci\/} with the parsed header values. If {\itshape op\/} contains codebook tables, \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} will parse these and attach an internal representation to {\itshape ci-\/$>$codec\_\-setup\/}. \item[{\em cc}]A \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure to fill. If {\itshape op\/} contains comment data, \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} will fill {\itshape cc\/} with the parsed comments. \item[{\em op}]An ogg\_\-packet structure which you expect contains an initial header, comment data or codebook tables.\end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-BADHEADER}]{\itshape op\/} is NULL; OR the first byte of {\itshape op-\/$>$packet\/} has the signature of an initial packet, but op is not a b\_\-o\_\-s packet; OR this packet has the signature of an initial header packet, but an initial header packet has already been seen; OR this packet has the signature of a comment packet, but the initial header has not yet been seen; OR this packet has the signature of a comment packet, but contains invalid data; OR this packet has the signature of codebook tables, but the initial header or comments have not yet been seen; OR this packet has the signature of codebook tables, but contains invalid data; OR the stream being decoded has a compatible version but this packet does not have the signature of a theora initial header, comments, or codebook packet \item[{\em OC\_\-VERSION}]The packet data of {\itshape op\/} is an initial header with a version which is incompatible with this version of libtheora. \item[{\em OC\_\-NEWPACKET}]the stream being decoded has an incompatible (future) version and contains an unknown signature. \item[{\em 0}]Success\end{DoxyRetVals}
+\begin{DoxyNote}{Note}
+The normal usage is that \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} be called on the first three packets of a theora logical bitstream in succession. 
+\end{DoxyNote}
+\index{oldfuncs@{oldfuncs}!theora\_\-decode\_\-init@{theora\_\-decode\_\-init}}
+\index{theora\_\-decode\_\-init@{theora\_\-decode\_\-init}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-decode\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-decode\_\-init ({\bf theora\_\-state} $\ast$ {\em th}, \/  {\bf theora\_\-info} $\ast$ {\em c})}\label{group__oldfuncs_ga264907c66003799ff77ecbd09eb33d2c}
+
+
+Initialize a \doxyref{theora\_\-state}{p.}{structtheora__state} handle for decoding. 
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]The \doxyref{theora\_\-state}{p.}{structtheora__state} handle to initialize. \item[{\em c}]A \doxyref{theora\_\-info}{p.}{structtheora__info} struct filled with the desired decoding parameters. This is of course usually obtained from a previous call to \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82}. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-decode\_\-packetin@{theora\_\-decode\_\-packetin}}
+\index{theora\_\-decode\_\-packetin@{theora\_\-decode\_\-packetin}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-decode\_\-packetin}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-decode\_\-packetin ({\bf theora\_\-state} $\ast$ {\em th}, \/  ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_gaa65a9e53b46fd54ab344bd599fa96975}
+
+
+Input a packet containing encoded data into the theora decoder. 
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for decoding. \item[{\em op}]An ogg\_\-packet containing encoded theora data. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \item[{\em OC\_\-BADPACKET}]{\itshape op\/} does not contain encoded video data \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-decode\_\-YUVout@{theora\_\-decode\_\-YUVout}}
+\index{theora\_\-decode\_\-YUVout@{theora\_\-decode\_\-YUVout}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-decode\_\-YUVout}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-decode\_\-YUVout ({\bf theora\_\-state} $\ast$ {\em th}, \/  {\bf yuv\_\-buffer} $\ast$ {\em yuv})}\label{group__oldfuncs_ga09d47c80e1e94bff0a46a496816b8daa}
+
+
+Output the next available frame of decoded YUV data. 
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for decoding. \item[{\em yuv}]A \doxyref{yuv\_\-buffer}{p.}{structyuv__buffer} in which libtheora should place the decoded data. Note that the buffer struct itself is allocated by the user, but that the luma and chroma pointers will be filled in by the library. Also note that these luma and chroma regions should be considered read-\/only by the user. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-comment@{theora\_\-encode\_\-comment}}
+\index{theora\_\-encode\_\-comment@{theora\_\-encode\_\-comment}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-comment}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-comment ({\bf theora\_\-comment} $\ast$ {\em tc}, \/  ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga45e8db0713eaaca0f1144f3724cb834a}
+
+
+Request a comment header packet from provided metadata. A pointer to the comment data is placed in a user-\/provided ogg\_\-packet structure. 
+\begin{DoxyParams}{Parameters}
+\item[{\em tc}]A \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure filled with the desired metadata \item[{\em op}]An ogg\_\-packet structure to fill. libtheora will set all elements of this structure, including a pointer to the encoded comment data. The memory for the comment data is owned by libtheora. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-header@{theora\_\-encode\_\-header}}
+\index{theora\_\-encode\_\-header@{theora\_\-encode\_\-header}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-header}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-header ({\bf theora\_\-state} $\ast$ {\em t}, \/  ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga451feb58d6bde726edbae193689887be}
+
+
+Request a packet containing the initial header. A pointer to the header data is placed in a user-\/provided ogg\_\-packet structure. 
+\begin{DoxyParams}{Parameters}
+\item[{\em t}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for encoding. \item[{\em op}]An ogg\_\-packet structure to fill. libtheora will set all elements of this structure, including a pointer to the header data. The memory for the header data is owned by libtheora. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-init@{theora\_\-encode\_\-init}}
+\index{theora\_\-encode\_\-init@{theora\_\-encode\_\-init}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-init ({\bf theora\_\-state} $\ast$ {\em th}, \/  {\bf theora\_\-info} $\ast$ {\em ti})}\label{group__oldfuncs_ga0f7ad4d4b2343278cb4ba8fb2bd5109a}
+
+
+Initialize the theora encoder. 
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]The \doxyref{theora\_\-state}{p.}{structtheora__state} handle to initialize for encoding. \item[{\em ti}]A \doxyref{theora\_\-info}{p.}{structtheora__info} struct filled with the desired encoding parameters. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-packetout@{theora\_\-encode\_\-packetout}}
+\index{theora\_\-encode\_\-packetout@{theora\_\-encode\_\-packetout}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-packetout}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-packetout ({\bf theora\_\-state} $\ast$ {\em t}, \/  int {\em last\_\-p}, \/  ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga5f4929677a735bc2198c2309d235f1b3}
+
+
+Request the next packet of encoded video. The encoded data is placed in a user-\/provided ogg\_\-packet structure. 
+\begin{DoxyParams}{Parameters}
+\item[{\em t}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for encoding. \item[{\em last\_\-p}]whether this is the last packet the encoder should produce. \item[{\em op}]An ogg\_\-packet structure to fill. libtheora will set all elements of this structure, including a pointer to encoded data. The memory for the encoded data is owned by libtheora. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]No internal storage exists OR no packet is ready \item[{\em -\/1}]The encoding process has completed \item[{\em 1}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-tables@{theora\_\-encode\_\-tables}}
+\index{theora\_\-encode\_\-tables@{theora\_\-encode\_\-tables}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-tables}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-tables ({\bf theora\_\-state} $\ast$ {\em t}, \/  ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga5085baf20855b283fa01fc948505d9d2}
+
+
+Request a packet containing the codebook tables for the stream. A pointer to the codebook data is placed in a user-\/provided ogg\_\-packet structure. 
+\begin{DoxyParams}{Parameters}
+\item[{\em t}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for encoding. \item[{\em op}]An ogg\_\-packet structure to fill. libtheora will set all elements of this structure, including a pointer to the codebook data. The memory for the header data is owned by libtheora. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-encode\_\-YUVin@{theora\_\-encode\_\-YUVin}}
+\index{theora\_\-encode\_\-YUVin@{theora\_\-encode\_\-YUVin}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-encode\_\-YUVin}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-encode\_\-YUVin ({\bf theora\_\-state} $\ast$ {\em t}, \/  {\bf yuv\_\-buffer} $\ast$ {\em yuv})}\label{group__oldfuncs_gac0d33d896ca70cedfc94c5986d947078}
+
+
+Submit a YUV buffer to the theora encoder. 
+\begin{DoxyParams}{Parameters}
+\item[{\em t}]A \doxyref{theora\_\-state}{p.}{structtheora__state} handle previously initialized for encoding. \item[{\em yuv}]A buffer of YUV data to encode. Note that both the \doxyref{yuv\_\-buffer}{p.}{structyuv__buffer} struct and the luma/chroma buffers within should be allocated by the user. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em OC\_\-EINVAL}]Encoder is not ready, or is finished. \item[{\em -\/1}]The size of the given frame differs from those previously input \item[{\em 0}]Success \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-granule\_\-frame@{theora\_\-granule\_\-frame}}
+\index{theora\_\-granule\_\-frame@{theora\_\-granule\_\-frame}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-granule\_\-frame}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int64\_\-t theora\_\-granule\_\-frame ({\bf theora\_\-state} $\ast$ {\em th}, \/  ogg\_\-int64\_\-t {\em granulepos})}\label{group__oldfuncs_ga7bfa3ceb2fb4b41a282456c56e1dd269}
+
+
+Convert a granulepos to an absolute frame index, starting at 0. The granulepos is interpreted in the context of a given \doxyref{theora\_\-state}{p.}{structtheora__state} handle.
+
+Note that while the granulepos encodes the frame count (i.e. starting from 1) this call returns the frame index, starting from zero. Thus One can calculate the presentation time by multiplying the index by the rate.
+
+
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]A previously initialized \doxyref{theora\_\-state}{p.}{structtheora__state} handle (encode or decode) \item[{\em granulepos}]The granulepos to convert. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The frame index corresponding to {\itshape granulepos\/}. 
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em -\/1}]The given granulepos is undefined (i.e. negative)\end{DoxyRetVals}
+Thus function was added in the 1.0alpha4 release. \index{oldfuncs@{oldfuncs}!theora\_\-granule\_\-shift@{theora\_\-granule\_\-shift}}
+\index{theora\_\-granule\_\-shift@{theora\_\-granule\_\-shift}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-granule\_\-shift}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-granule\_\-shift ({\bf theora\_\-info} $\ast$ {\em ti})}\label{group__oldfuncs_gacd9360e6a47139c761002410af457a02}
+
+
+Report the granulepos shift radix. When embedded in Ogg, Theora uses a two-\/part granulepos, splitting the 64-\/bit field into two pieces. The more-\/significant section represents the frame count at the last keyframe, and the less-\/significant section represents the count of frames since the last keyframe. In this way the overall field is still non-\/decreasing with time, but usefully encodes a pointer to the last keyframe, which is necessary for correctly restarting decode after a seek.
+
+This function reports the number of bits used to represent the distance to the last keyframe, and thus how the granulepos field must be shifted or masked to obtain the two parts.
+
+Since libtheora returns compressed data in an ogg\_\-packet structure, this may be generally useful even if the Theora packets are not being used in an Ogg container.
+
+
+\begin{DoxyParams}{Parameters}
+\item[{\em ti}]A previously initialized \doxyref{theora\_\-info}{p.}{structtheora__info} struct \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The bit shift dividing the two granulepos fields
+\end{DoxyReturn}
+This function was added in the 1.0alpha5 release. \index{oldfuncs@{oldfuncs}!theora\_\-granule\_\-time@{theora\_\-granule\_\-time}}
+\index{theora\_\-granule\_\-time@{theora\_\-granule\_\-time}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-granule\_\-time}]{\setlength{\rightskip}{0pt plus 5cm}double theora\_\-granule\_\-time ({\bf theora\_\-state} $\ast$ {\em th}, \/  ogg\_\-int64\_\-t {\em granulepos})}\label{group__oldfuncs_ga4376358b12b9fa23ce6fe21cb5c65ac6}
+
+
+Convert a granulepos to absolute time in seconds. The granulepos is interpreted in the context of a given \doxyref{theora\_\-state}{p.}{structtheora__state} handle, and gives the end time of a frame's presentation as used in Ogg mux ordering.
+
+
+\begin{DoxyParams}{Parameters}
+\item[{\em th}]A previously initialized \doxyref{theora\_\-state}{p.}{structtheora__state} handle (encode or decode) \item[{\em granulepos}]The granulepos to convert. \end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+The absolute time in seconds corresponding to {\itshape granulepos\/}. This is the \char`\"{}end time\char`\"{} for the frame, or the latest time it should be displayed. It is not the presentation time. 
+\end{DoxyReturn}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em -\/1.}]The given granulepos is undefined (i.e. negative), or \item[{\em -\/1.}]The function has been disabled because floating point support is not available. \end{DoxyRetVals}
+\index{oldfuncs@{oldfuncs}!theora\_\-info\_\-clear@{theora\_\-info\_\-clear}}
+\index{theora\_\-info\_\-clear@{theora\_\-info\_\-clear}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-info\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-info\_\-clear ({\bf theora\_\-info} $\ast$ {\em c})}\label{group__oldfuncs_gaba7022d58edbc4825cacad03f68b3e0d}
+
+
+Clear a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. All values within the given \doxyref{theora\_\-info}{p.}{structtheora__info} structure are cleared, and associated internal codec setup data is freed. 
+\begin{DoxyParams}{Parameters}
+\item[{\em c}]A \doxyref{theora\_\-info}{p.}{structtheora__info} struct to initialize. \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-info\_\-init@{theora\_\-info\_\-init}}
+\index{theora\_\-info\_\-init@{theora\_\-info\_\-init}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-info\_\-init}]{\setlength{\rightskip}{0pt plus 5cm}void theora\_\-info\_\-init ({\bf theora\_\-info} $\ast$ {\em c})}\label{group__oldfuncs_ga3091c87d48f1faba018c5956379a6d90}
+
+
+Initialize a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. All values within the given \doxyref{theora\_\-info}{p.}{structtheora__info} structure are initialized, and space is allocated within libtheora for internal codec setup data. 
+\begin{DoxyParams}{Parameters}
+\item[{\em c}]A \doxyref{theora\_\-info}{p.}{structtheora__info} struct to initialize. \end{DoxyParams}
+\index{oldfuncs@{oldfuncs}!theora\_\-packet\_\-isheader@{theora\_\-packet\_\-isheader}}
+\index{theora\_\-packet\_\-isheader@{theora\_\-packet\_\-isheader}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-packet\_\-isheader}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-packet\_\-isheader (ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_gab969f9d0407683f0e5abe73d0839a25b}
+
+
+Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} for that. 
+\begin{DoxyParams}{Parameters}
+\item[{\em op}]An ogg\_\-packet containing encoded theora data. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 1}]The packet is a header packet \item[{\em 0}]The packet is not a header packet (and so contains frame data)\end{DoxyRetVals}
+Thus function was added in the 1.0alpha4 release. \index{oldfuncs@{oldfuncs}!theora\_\-packet\_\-iskeyframe@{theora\_\-packet\_\-iskeyframe}}
+\index{theora\_\-packet\_\-iskeyframe@{theora\_\-packet\_\-iskeyframe}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-packet\_\-iskeyframe}]{\setlength{\rightskip}{0pt plus 5cm}int theora\_\-packet\_\-iskeyframe (ogg\_\-packet $\ast$ {\em op})}\label{group__oldfuncs_ga39ccc8f847a748d7074c926b4fdd12b2}
+
+
+Report whether a theora packet is a keyframe or not. 
+\begin{DoxyParams}{Parameters}
+\item[{\em op}]An ogg\_\-packet containing encoded theora data. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 1}]The packet contains a keyframe image \item[{\em 0}]The packet is contains an interframe delta \item[{\em -\/1}]The packet is not an image data packet at all\end{DoxyRetVals}
+Thus function was added in the 1.0alpha4 release. \index{oldfuncs@{oldfuncs}!theora\_\-version\_\-number@{theora\_\-version\_\-number}}
+\index{theora\_\-version\_\-number@{theora\_\-version\_\-number}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-version\_\-number}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t theora\_\-version\_\-number (void)}\label{group__oldfuncs_gad181f4b19d455dcc2bef2533530b84c8}
+
+
+Retrieve a 32-\/bit version number. This number is composed of a 16-\/bit major version, 8-\/bit minor version and 8 bit sub-\/version, composed as follows: 
+\begin{DoxyPre}
+   (VERSION\_MAJOR<<16) + (VERSION\_MINOR<<8) + (VERSION\_SUB)
+\end{DoxyPre}
+ \begin{DoxyReturn}{Returns}
+The version number. 
+\end{DoxyReturn}
+\index{oldfuncs@{oldfuncs}!theora\_\-version\_\-string@{theora\_\-version\_\-string}}
+\index{theora\_\-version\_\-string@{theora\_\-version\_\-string}!oldfuncs@{oldfuncs}}
+\subsubsection[{theora\_\-version\_\-string}]{\setlength{\rightskip}{0pt plus 5cm}const char$\ast$ theora\_\-version\_\-string (void)}\label{group__oldfuncs_ga5a3da8fd262a60f055f96536eec06df2}
+
+
+Retrieve a human-\/readable string to identify the encoder vendor and version. \begin{DoxyReturn}{Returns}
+A version string. 
+\end{DoxyReturn}
diff --git a/doc/libtheora/latex/index.tex b/doc/libtheora/latex/index.tex
new file mode 100644 (file)
index 0000000..6a36a67
--- /dev/null
@@ -0,0 +1,12 @@
+\section{Introduction}\label{index_intro}
+This is the documentation for {\ttfamily libtheora} C API. The current reference implementation for {\tt Theora}, a free, patent-\/unencumbered video codec. Theora is derived from On2's VP3 codec with additional features and integration with Ogg multimedia formats by {\tt the Xiph.Org Foundation}. Complete documentation of the format itself is available in {\tt the Theora specification}.\subsection{Organization}\label{index_Organization}
+The functions documented here are actually subdivided into three separate libraries:
+\begin{DoxyItemize}
+\item {\ttfamily libtheoraenc} contains the encoder interface, described in \doxyref{Functions for Encoding}{p.}{group__encfuncs}.
+\item {\ttfamily libtheoradec} contains the decoder interface and routines shared with the encoder. You must also link to this if you link to {\ttfamily libtheoraenc}. The routines in this library are described in \doxyref{Functions for Decoding}{p.}{group__decfuncs} and \doxyref{Functions Shared by Encode and Decode}{p.}{group__basefuncs}.
+\item {\ttfamily libtheora} contains the \doxyref{Legacy pre-\/1.0 C API}{p.}{group__oldfuncs}.
+\end{DoxyItemize}
+
+New code should link to {\ttfamily libtheoradec} and, if using encoder features, {\ttfamily libtheoraenc}. Together these two export both the standard and the legacy API, so this is all that is needed by any code. The older {\ttfamily libtheora} library is provided just for compatibility with older build configurations.
+
+In general the recommended 1.x API symbols can be distinguished by their {\ttfamily th\_\-} or {\ttfamily TH\_\-} namespace prefix. The older, legacy API uses {\ttfamily theora\_\-} or {\ttfamily OC\_\-} prefixes instead. 
\ No newline at end of file
diff --git a/doc/libtheora/latex/modules.tex b/doc/libtheora/latex/modules.tex
new file mode 100644 (file)
index 0000000..7e83e09
--- /dev/null
@@ -0,0 +1,7 @@
+\section{Modules}
+Here is a list of all modules:\begin{DoxyCompactList}
+\item \contentsline{section}{Functions Shared by Encode and Decode}{\pageref{group__basefuncs}}{}
+\item \contentsline{section}{Legacy pre-\/1.0 C API}{\pageref{group__oldfuncs}}{}
+\item \contentsline{section}{Functions for Decoding}{\pageref{group__decfuncs}}{}
+\item \contentsline{section}{Functions for Encoding}{\pageref{group__encfuncs}}{}
+\end{DoxyCompactList}
diff --git a/doc/libtheora/latex/refman.tex b/doc/libtheora/latex/refman.tex
new file mode 100644 (file)
index 0000000..4bbc465
--- /dev/null
@@ -0,0 +1,64 @@
+\documentclass[a4paper]{book}
+\usepackage{a4wide}
+\usepackage{makeidx}
+\usepackage{graphicx}
+\usepackage{multicol}
+\usepackage{float}
+\usepackage{listings}
+\usepackage{color}
+\usepackage{textcomp}
+\usepackage{alltt}
+\usepackage[utf8]{inputenc}
+\usepackage{doxygen}
+\lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=8,numbers=left }
+\makeindex
+\setcounter{tocdepth}{3}
+\renewcommand{\footrulewidth}{0.4pt}
+\begin{document}
+\begin{titlepage}
+\vspace*{7cm}
+\begin{center}
+{\Large libtheora \\[1ex]\large 1.1.0+svn }\\
+\vspace*{1cm}
+{\large Generated by Doxygen 1.6.1}\\
+\vspace*{0.5cm}
+{\small Mon Sep 28 11:02:24 2009}\\
+\end{center}
+\end{titlepage}
+\clearemptydoublepage
+\pagenumbering{roman}
+\tableofcontents
+\clearemptydoublepage
+\pagenumbering{arabic}
+\chapter{Main Page}
+\label{index}\input{index}
+\chapter{Module Index}
+\input{modules}
+\chapter{Data Structure Index}
+\input{annotated}
+\chapter{File Index}
+\input{files}
+\chapter{Module Documentation}
+\input{group__basefuncs}
+\include{group__oldfuncs}
+\include{group__decfuncs}
+\include{group__encfuncs}
+\chapter{Data Structure Documentation}
+\input{structth__comment}
+\include{structth__huff__code}
+\include{structth__img__plane}
+\include{structth__info}
+\include{structth__quant__info}
+\include{structth__quant__ranges}
+\include{structth__stripe__callback}
+\include{structtheora__comment}
+\include{structtheora__info}
+\include{structtheora__state}
+\include{structyuv__buffer}
+\chapter{File Documentation}
+\input{codec_8h}
+\include{theora_8h}
+\include{theoradec_8h}
+\include{theoraenc_8h}
+\printindex
+\end{document}
diff --git a/doc/libtheora/latex/structth__comment.tex b/doc/libtheora/latex/structth__comment.tex
new file mode 100644 (file)
index 0000000..9ce92b6
--- /dev/null
@@ -0,0 +1,53 @@
+\section{th\_\-comment Struct Reference}
+\label{structth__comment}\index{th\_\-comment@{th\_\-comment}}
+
+
+The comment information.  
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item 
+char $\ast$$\ast$ {\bf user\_\-comments}
+\begin{DoxyCompactList}\small\item\em The array of comment string vectors. \item\end{DoxyCompactList}\item 
+int $\ast$ {\bf comment\_\-lengths}
+\begin{DoxyCompactList}\small\item\em An array of the corresponding length of each vector, in bytes. \item\end{DoxyCompactList}\item 
+int {\bf comments}
+\begin{DoxyCompactList}\small\item\em The total number of comment strings. \item\end{DoxyCompactList}\item 
+char $\ast$ {\bf vendor}
+\begin{DoxyCompactList}\small\item\em The null-\/terminated vendor string. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+The comment information. This structure holds the in-\/stream metadata corresponding to the 'comment' header packet. The comment header is meant to be used much like someone jotting a quick note on the label of a video. It should be a short, to the point text note that can be more than a couple words, but not more than a short paragraph.
+
+The metadata is stored as a series of (tag, value) pairs, in length-\/encoded string vectors. The first occurrence of the '=' character delimits the tag and value. A particular tag may occur more than once, and order is significant. The character set encoding for the strings is always UTF-\/8, but the tag names are limited to ASCII, and treated as case-\/insensitive. See {\tt the Theora specification}, Section 6.3.3 for details.
+
+In filling in this structure, \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50} will null-\/terminate the user\_\-comment strings for safety. However, the bitstream format itself treats them as 8-\/bit clean vectors, possibly containing null characters, and so the length array should be treated as their authoritative length. 
+
+\subsection{Field Documentation}
+\index{th\_\-comment@{th\_\-comment}!comment\_\-lengths@{comment\_\-lengths}}
+\index{comment\_\-lengths@{comment\_\-lengths}!th_comment@{th\_\-comment}}
+\subsubsection[{comment\_\-lengths}]{\setlength{\rightskip}{0pt plus 5cm}int$\ast$ {\bf th\_\-comment::comment\_\-lengths}}\label{structth__comment_a723dc6fdf75757e70e28eea864b10898}
+
+
+An array of the corresponding length of each vector, in bytes. \index{th\_\-comment@{th\_\-comment}!comments@{comments}}
+\index{comments@{comments}!th_comment@{th\_\-comment}}
+\subsubsection[{comments}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-comment::comments}}\label{structth__comment_a5990c34932376f070ad0fc314daaeb78}
+
+
+The total number of comment strings. \index{th\_\-comment@{th\_\-comment}!user\_\-comments@{user\_\-comments}}
+\index{user\_\-comments@{user\_\-comments}!th_comment@{th\_\-comment}}
+\subsubsection[{user\_\-comments}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$$\ast$ {\bf th\_\-comment::user\_\-comments}}\label{structth__comment_ad72830e183e707bb0df423eb73b00de4}
+
+
+The array of comment string vectors. \index{th\_\-comment@{th\_\-comment}!vendor@{vendor}}
+\index{vendor@{vendor}!th_comment@{th\_\-comment}}
+\subsubsection[{vendor}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf th\_\-comment::vendor}}\label{structth__comment_a93fbe894d23603f56843be15b0cbdba0}
+
+
+The null-\/terminated vendor string. This identifies the software used to encode the stream. 
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item 
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__huff__code.tex b/doc/libtheora/latex/structth__huff__code.tex
new file mode 100644 (file)
index 0000000..6c761bb
--- /dev/null
@@ -0,0 +1,35 @@
+\section{th\_\-huff\_\-code Struct Reference}
+\label{structth__huff__code}\index{th\_\-huff\_\-code@{th\_\-huff\_\-code}}
+
+
+A Huffman code for a Theora DCT token.  
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item 
+ogg\_\-uint32\_\-t {\bf pattern}
+\begin{DoxyCompactList}\small\item\em The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word. \item\end{DoxyCompactList}\item 
+int {\bf nbits}
+\begin{DoxyCompactList}\small\item\em The number of bits in the code. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+A Huffman code for a Theora DCT token. Each set of Huffman codes in a given table must form a complete, prefix-\/free code. There is no requirement that all the tokens in a table have a valid code, but the current encoder is not optimized to take advantage of this. If each of the five grouops of 16 tables does not contain at least one table with a code for every token, then the encoder may fail to encode certain frames. The complete table in the first group of 16 does not have to be in the same place as the complete table in the other groups, but the complete tables in the remaining four groups must all be in the same place. 
+
+\subsection{Field Documentation}
+\index{th\_\-huff\_\-code@{th\_\-huff\_\-code}!nbits@{nbits}}
+\index{nbits@{nbits}!th_huff_code@{th\_\-huff\_\-code}}
+\subsubsection[{nbits}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-huff\_\-code::nbits}}\label{structth__huff__code_aaf97b8f2f90042f7bc136a7b2bc35e35}
+
+
+The number of bits in the code. This must be between 0 and 32, inclusive. \index{th\_\-huff\_\-code@{th\_\-huff\_\-code}!pattern@{pattern}}
+\index{pattern@{pattern}!th_huff_code@{th\_\-huff\_\-code}}
+\subsubsection[{pattern}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-huff\_\-code::pattern}}\label{structth__huff__code_a6dd29e3aa5a0c5a2dd5ce1f45b1162b4}
+
+
+The bit pattern for the code, with the LSbit of the pattern aligned in the LSbit of the word. 
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item 
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__img__plane.tex b/doc/libtheora/latex/structth__img__plane.tex
new file mode 100644 (file)
index 0000000..2566858
--- /dev/null
@@ -0,0 +1,49 @@
+\section{th\_\-img\_\-plane Struct Reference}
+\label{structth__img__plane}\index{th\_\-img\_\-plane@{th\_\-img\_\-plane}}
+
+
+A buffer for a single color plane in an uncompressed image.  
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item 
+int {\bf width}
+\begin{DoxyCompactList}\small\item\em The width of this plane. \item\end{DoxyCompactList}\item 
+int {\bf height}
+\begin{DoxyCompactList}\small\item\em The height of this plane. \item\end{DoxyCompactList}\item 
+int {\bf stride}
+\begin{DoxyCompactList}\small\item\em The offset in bytes between successive rows. \item\end{DoxyCompactList}\item 
+unsigned char $\ast$ {\bf data}
+\begin{DoxyCompactList}\small\item\em A pointer to the beginning of the first row. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+A buffer for a single color plane in an uncompressed image. This contains the image data in a left-\/to-\/right, top-\/down format. Each row of pixels is stored contiguously in memory, but successive rows need not be. Use {\itshape stride\/} to compute the offset of the next row. The encoder accepts both positive {\itshape stride\/} values (top-\/down in memory) and negative (bottom-\/up in memory). The decoder currently always generates images with positive strides. 
+
+\subsection{Field Documentation}
+\index{th\_\-img\_\-plane@{th\_\-img\_\-plane}!data@{data}}
+\index{data@{data}!th_img_plane@{th\_\-img\_\-plane}}
+\subsubsection[{data}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char$\ast$ {\bf th\_\-img\_\-plane::data}}\label{structth__img__plane_af8133681516ce88b5a201c1b4b7e6ba2}
+
+
+A pointer to the beginning of the first row. \index{th\_\-img\_\-plane@{th\_\-img\_\-plane}!height@{height}}
+\index{height@{height}!th_img_plane@{th\_\-img\_\-plane}}
+\subsubsection[{height}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-img\_\-plane::height}}\label{structth__img__plane_a21aea1367894468de489d529d7eaf44d}
+
+
+The height of this plane. \index{th\_\-img\_\-plane@{th\_\-img\_\-plane}!stride@{stride}}
+\index{stride@{stride}!th_img_plane@{th\_\-img\_\-plane}}
+\subsubsection[{stride}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-img\_\-plane::stride}}\label{structth__img__plane_ab1100f071ffee3b37e07e3222f819bad}
+
+
+The offset in bytes between successive rows. \index{th\_\-img\_\-plane@{th\_\-img\_\-plane}!width@{width}}
+\index{width@{width}!th_img_plane@{th\_\-img\_\-plane}}
+\subsubsection[{width}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-img\_\-plane::width}}\label{structth__img__plane_a58cc297a99cd4594c3d30e56f2ed6b74}
+
+
+The width of this plane. 
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item 
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__info.tex b/doc/libtheora/latex/structth__info.tex
new file mode 100644 (file)
index 0000000..998cd47
--- /dev/null
@@ -0,0 +1,164 @@
+\section{th\_\-info Struct Reference}
+\label{structth__info}\index{th\_\-info@{th\_\-info}}
+
+
+Theora bitstream information.  
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item 
+ogg\_\-uint32\_\-t {\bf frame\_\-width}
+\begin{DoxyCompactList}\small\item\em The encoded frame width. \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf frame\_\-height}
+\begin{DoxyCompactList}\small\item\em The encoded frame height. \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf pic\_\-width}
+\begin{DoxyCompactList}\small\item\em The displayed picture width. \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf pic\_\-height}
+\begin{DoxyCompactList}\small\item\em The displayed picture height. \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf pic\_\-x}
+\begin{DoxyCompactList}\small\item\em The X offset of the displayed picture. \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf pic\_\-y}
+\begin{DoxyCompactList}\small\item\em The Y offset of the displayed picture. \item\end{DoxyCompactList}\item 
+{\bf th\_\-colorspace} {\bf colorspace}
+\begin{DoxyCompactList}\small\item\em The color space. \item\end{DoxyCompactList}\item 
+{\bf th\_\-pixel\_\-fmt} {\bf pixel\_\-fmt}
+\begin{DoxyCompactList}\small\item\em The pixel format. \item\end{DoxyCompactList}\item 
+int {\bf target\_\-bitrate}
+\begin{DoxyCompactList}\small\item\em The target bit-\/rate in bits per second. \item\end{DoxyCompactList}\item 
+int {\bf quality}
+\begin{DoxyCompactList}\small\item\em The target quality level. \item\end{DoxyCompactList}\item 
+int {\bf keyframe\_\-granule\_\-shift}
+\begin{DoxyCompactList}\small\item\em The amount to shift to extract the last keyframe number from the granule position. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\begin{Indent}{\bf Theora version}\par
+{\em \label{_amgrpf735645ddddaaf44dc0647da0e883f6c}
+Bitstream version information.}\begin{DoxyCompactItemize}
+\item 
+unsigned char {\bf version\_\-major}
+\item 
+unsigned char {\bf version\_\-minor}
+\item 
+unsigned char {\bf version\_\-subminor}
+\end{DoxyCompactItemize}
+\end{Indent}
+\begin{Indent}{\bf Frame rate}\par
+{\em \label{_amgrp801309c4a0e25a4db3fe5739b322b0a7}
+The frame rate, as a fraction.
+
+If either is 0, the frame rate is undefined. }\begin{DoxyCompactItemize}
+\item 
+ogg\_\-uint32\_\-t {\bf fps\_\-numerator}
+\item 
+ogg\_\-uint32\_\-t {\bf fps\_\-denominator}
+\end{DoxyCompactItemize}
+\end{Indent}
+\begin{Indent}{\bf Aspect ratio}\par
+{\em \label{_amgrpdeca19914b5126815a2220f15d067c9b}
+The aspect ratio of the pixels.
+
+If either value is zero, the aspect ratio is undefined. If not specified by any external means, 1:1 should be assumed. The aspect ratio of the full picture can be computed as 
+\begin{DoxyCode}
+  aspect_numerator*pic_width/(aspect_denominator*pic_height).
+\end{DoxyCode}
+ }\begin{DoxyCompactItemize}
+\item 
+ogg\_\-uint32\_\-t {\bf aspect\_\-numerator}
+\item 
+ogg\_\-uint32\_\-t {\bf aspect\_\-denominator}
+\end{DoxyCompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+Theora bitstream information. This contains the basic playback parameters for a stream, and corresponds to the initial 'info' header packet. To initialize an encoder, the application fills in this structure and passes it to \doxyref{th\_\-encode\_\-alloc()}{p.}{group__encfuncs_gaa91e47bc9dd5f6ee52045bd7b815e5a7}. A default encoding mode is chosen based on the values of the \doxyref{quality}{p.}{structth__info_aa4cdcf96cb46b256821993e9a830ee02} and \doxyref{target\_\-bitrate}{p.}{structth__info_a1d9c8d768a4ae623269f5bd8f6f7a015} fields. On decode, it is filled in by \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}, and then passed to \doxyref{th\_\-decode\_\-alloc()}{p.}{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}.
+
+Encoded Theora frames must be a multiple of 16 in size; this is what the \doxyref{frame\_\-width}{p.}{structth__info_a6b8087a4d831da53011a43b8d74087a0} and \doxyref{frame\_\-height}{p.}{structth__info_a6b1adc3a16a8336a72692b0a5937214c} members represent. To handle arbitrary picture sizes, a crop rectangle is specified in the \doxyref{pic\_\-x}{p.}{structth__info_a5b3f834bcf141564e7bb14f49101870f}, \doxyref{pic\_\-y}{p.}{structth__info_a8aacc575cab2dfe3735001c2ad32aa14}, \doxyref{pic\_\-width}{p.}{structth__info_a5048edf77b141dd3e9a92ca85e317345} and \doxyref{pic\_\-height}{p.}{structth__info_a775178474283c5990ba73f9ba7f6b88b} members.
+
+All frame buffers contain pointers to the full, padded frame. However, the current encoder {\itshape will not\/} reference pixels outside of the cropped picture region, and the application does not need to fill them in. The decoder {\itshape will\/} allocate storage for a full frame, but the application {\itshape should not\/} rely on the padding containing sensible data.
+
+It is also generally recommended that the offsets and sizes should still be multiples of 2 to avoid chroma sampling shifts when chroma is sub-\/sampled. See {\tt the Theora specification}, Section 4.4, for more details.
+
+Frame rate, in frames per second, is stored as a rational fraction, as is the pixel aspect ratio. Note that this refers to the aspect ratio of the individual pixels, not of the overall frame itself. The frame aspect ratio can be computed from pixel aspect ratio using the image dimensions. 
+
+\subsection{Field Documentation}
+\index{th\_\-info@{th\_\-info}!aspect\_\-denominator@{aspect\_\-denominator}}
+\index{aspect\_\-denominator@{aspect\_\-denominator}!th_info@{th\_\-info}}
+\subsubsection[{aspect\_\-denominator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::aspect\_\-denominator}}\label{structth__info_a04c0bd477222d747a76085d8720322e2}
+\index{th\_\-info@{th\_\-info}!aspect\_\-numerator@{aspect\_\-numerator}}
+\index{aspect\_\-numerator@{aspect\_\-numerator}!th_info@{th\_\-info}}
+\subsubsection[{aspect\_\-numerator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::aspect\_\-numerator}}\label{structth__info_a5be65dac9f75e37864cf73dd543570cd}
+\index{th\_\-info@{th\_\-info}!colorspace@{colorspace}}
+\index{colorspace@{colorspace}!th_info@{th\_\-info}}
+\subsubsection[{colorspace}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-colorspace} {\bf th\_\-info::colorspace}}\label{structth__info_a8c7828cd0e023e9d21108160d53659a6}
+
+
+The color space. \index{th\_\-info@{th\_\-info}!fps\_\-denominator@{fps\_\-denominator}}
+\index{fps\_\-denominator@{fps\_\-denominator}!th_info@{th\_\-info}}
+\subsubsection[{fps\_\-denominator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::fps\_\-denominator}}\label{structth__info_aa619408f70c03935529f1d3eda7a3ec2}
+\index{th\_\-info@{th\_\-info}!fps\_\-numerator@{fps\_\-numerator}}
+\index{fps\_\-numerator@{fps\_\-numerator}!th_info@{th\_\-info}}
+\subsubsection[{fps\_\-numerator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::fps\_\-numerator}}\label{structth__info_a20606e61676f585a7e59cfc96de190a5}
+\index{th\_\-info@{th\_\-info}!frame\_\-height@{frame\_\-height}}
+\index{frame\_\-height@{frame\_\-height}!th_info@{th\_\-info}}
+\subsubsection[{frame\_\-height}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::frame\_\-height}}\label{structth__info_a6b1adc3a16a8336a72692b0a5937214c}
+
+
+The encoded frame height. This must be a multiple of 16, and less than 1048576. \index{th\_\-info@{th\_\-info}!frame\_\-width@{frame\_\-width}}
+\index{frame\_\-width@{frame\_\-width}!th_info@{th\_\-info}}
+\subsubsection[{frame\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::frame\_\-width}}\label{structth__info_a6b8087a4d831da53011a43b8d74087a0}
+
+
+The encoded frame width. This must be a multiple of 16, and less than 1048576. \index{th\_\-info@{th\_\-info}!keyframe\_\-granule\_\-shift@{keyframe\_\-granule\_\-shift}}
+\index{keyframe\_\-granule\_\-shift@{keyframe\_\-granule\_\-shift}!th_info@{th\_\-info}}
+\subsubsection[{keyframe\_\-granule\_\-shift}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-info::keyframe\_\-granule\_\-shift}}\label{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed}
+
+
+The amount to shift to extract the last keyframe number from the granule position. This can be at most 31. \doxyref{th\_\-info\_\-init()}{p.}{group__basefuncs_ga430d9c605816a6ca0bdce3a0b965b926} will set this to a default value (currently {\ttfamily 6}, which is good for streaming applications), but you can set it to 0 to make every frame a keyframe. The maximum distance between key frames is {\ttfamily 1$<$$<$\doxyref{keyframe\_\-granule\_\-shift}{p.}{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed}}. The keyframe frequency can be more finely controlled with \doxyref{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}{p.}{theoraenc_8h_a27e755e15b4b5604c54974b304037a49}, which can also be adjusted during encoding (for example, to force the next frame to be a keyframe), but it cannot be set larger than the amount permitted by this field after the headers have been output. \index{th\_\-info@{th\_\-info}!pic\_\-height@{pic\_\-height}}
+\index{pic\_\-height@{pic\_\-height}!th_info@{th\_\-info}}
+\subsubsection[{pic\_\-height}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::pic\_\-height}}\label{structth__info_a775178474283c5990ba73f9ba7f6b88b}
+
+
+The displayed picture height. This must be no larger than height. \index{th\_\-info@{th\_\-info}!pic\_\-width@{pic\_\-width}}
+\index{pic\_\-width@{pic\_\-width}!th_info@{th\_\-info}}
+\subsubsection[{pic\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::pic\_\-width}}\label{structth__info_a5048edf77b141dd3e9a92ca85e317345}
+
+
+The displayed picture width. This must be no larger than width. \index{th\_\-info@{th\_\-info}!pic\_\-x@{pic\_\-x}}
+\index{pic\_\-x@{pic\_\-x}!th_info@{th\_\-info}}
+\subsubsection[{pic\_\-x}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::pic\_\-x}}\label{structth__info_a5b3f834bcf141564e7bb14f49101870f}
+
+
+The X offset of the displayed picture. This must be no larger than \doxyref{frame\_\-width}{p.}{structth__info_a6b8087a4d831da53011a43b8d74087a0}-\/\doxyref{pic\_\-width}{p.}{structth__info_a5048edf77b141dd3e9a92ca85e317345} or 255, whichever is smaller. \index{th\_\-info@{th\_\-info}!pic\_\-y@{pic\_\-y}}
+\index{pic\_\-y@{pic\_\-y}!th_info@{th\_\-info}}
+\subsubsection[{pic\_\-y}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf th\_\-info::pic\_\-y}}\label{structth__info_a8aacc575cab2dfe3735001c2ad32aa14}
+
+
+The Y offset of the displayed picture. This must be no larger than \doxyref{frame\_\-height}{p.}{structth__info_a6b1adc3a16a8336a72692b0a5937214c}-\/\doxyref{pic\_\-height}{p.}{structth__info_a775178474283c5990ba73f9ba7f6b88b}, and \doxyref{frame\_\-height}{p.}{structth__info_a6b1adc3a16a8336a72692b0a5937214c}-\/\doxyref{pic\_\-height}{p.}{structth__info_a775178474283c5990ba73f9ba7f6b88b}-\/\doxyref{pic\_\-y}{p.}{structth__info_a8aacc575cab2dfe3735001c2ad32aa14} must be no larger than 255. This slightly funny restriction is due to the fact that the offset is specified from the top of the image for consistency with the standard graphics left-\/handed coordinate system used throughout this API, while it is stored in the encoded stream as an offset from the bottom. \index{th\_\-info@{th\_\-info}!pixel\_\-fmt@{pixel\_\-fmt}}
+\index{pixel\_\-fmt@{pixel\_\-fmt}!th_info@{th\_\-info}}
+\subsubsection[{pixel\_\-fmt}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-pixel\_\-fmt} {\bf th\_\-info::pixel\_\-fmt}}\label{structth__info_a2301388ef3755c41ab12fd144c1fc54e}
+
+
+The pixel format. \index{th\_\-info@{th\_\-info}!quality@{quality}}
+\index{quality@{quality}!th_info@{th\_\-info}}
+\subsubsection[{quality}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-info::quality}}\label{structth__info_aa4cdcf96cb46b256821993e9a830ee02}
+
+
+The target quality level. Valid values range from 0 to 63, inclusive, with higher values giving higher quality. If initializing an encoder with this struct, and \doxyref{target\_\-bitrate}{p.}{structth__info_a1d9c8d768a4ae623269f5bd8f6f7a015} is set to zero, VBR encoding at this quality will be activated by default. \index{th\_\-info@{th\_\-info}!target\_\-bitrate@{target\_\-bitrate}}
+\index{target\_\-bitrate@{target\_\-bitrate}!th_info@{th\_\-info}}
+\subsubsection[{target\_\-bitrate}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-info::target\_\-bitrate}}\label{structth__info_a1d9c8d768a4ae623269f5bd8f6f7a015}
+
+
+The target bit-\/rate in bits per second. If initializing an encoder with this struct, set this field to a non-\/zero value to activate CBR encoding by default. \index{th\_\-info@{th\_\-info}!version\_\-major@{version\_\-major}}
+\index{version\_\-major@{version\_\-major}!th_info@{th\_\-info}}
+\subsubsection[{version\_\-major}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf th\_\-info::version\_\-major}}\label{structth__info_a60b3e2cac006fee0e105a918d6a5a9f9}
+\index{th\_\-info@{th\_\-info}!version\_\-minor@{version\_\-minor}}
+\index{version\_\-minor@{version\_\-minor}!th_info@{th\_\-info}}
+\subsubsection[{version\_\-minor}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf th\_\-info::version\_\-minor}}\label{structth__info_abb1d4887a8079c6c5aaa6d7229f243d7}
+\index{th\_\-info@{th\_\-info}!version\_\-subminor@{version\_\-subminor}}
+\index{version\_\-subminor@{version\_\-subminor}!th_info@{th\_\-info}}
+\subsubsection[{version\_\-subminor}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf th\_\-info::version\_\-subminor}}\label{structth__info_abfacc79b7cabae12b6ac2484f76602d3}
+
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item 
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__quant__info.tex b/doc/libtheora/latex/structth__quant__info.tex
new file mode 100644 (file)
index 0000000..8bb5020
--- /dev/null
@@ -0,0 +1,81 @@
+\section{th\_\-quant\_\-info Struct Reference}
+\label{structth__quant__info}\index{th\_\-quant\_\-info@{th\_\-quant\_\-info}}
+
+
+A complete set of quantization parameters.  
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item 
+ogg\_\-uint16\_\-t {\bf dc\_\-scale} [64]
+\begin{DoxyCompactList}\small\item\em The DC scaling factors. \item\end{DoxyCompactList}\item 
+ogg\_\-uint16\_\-t {\bf ac\_\-scale} [64]
+\begin{DoxyCompactList}\small\item\em The AC scaling factors. \item\end{DoxyCompactList}\item 
+unsigned char {\bf loop\_\-filter\_\-limits} [64]
+\begin{DoxyCompactList}\small\item\em The loop filter limit values. \item\end{DoxyCompactList}\item 
+{\bf th\_\-quant\_\-ranges} {\bf qi\_\-ranges} [2][3]
+\begin{DoxyCompactList}\small\item\em The {\itshape qi\/} ranges for each {\itshape ci\/} and {\itshape pli\/}. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+A complete set of quantization parameters. The quantizer for each coefficient is calculated as: 
+\begin{DoxyCode}
+    Q=MAX(MIN(qmin[qti][ci!=0],scale[ci!=0][qi]*base[qti][pli][qi][ci]/100),
+     1024).
+\end{DoxyCode}
+
+
+{\itshape qti\/} is the quantization type index: 0 for intra, 1 for inter. {\ttfamily ci!=0} is 0 for the DC coefficient and 1 for AC coefficients. {\itshape qi\/} is the quality index, ranging between 0 (low quality) and 63 (high quality). {\itshape pli\/} is the color plane index: 0 for Y', 1 for Cb, 2 for Cr. {\itshape ci\/} is the DCT coefficient index. Coefficient indices correspond to the normal 2D DCT block ordering-\/-\/row-\/major with low frequencies first-\/-\/{\itshape not\/} zig-\/zag order.
+
+Minimum quantizers are constant, and are given by: 
+\begin{DoxyCode}
+   qmin[2][2]={{4,2},{8,4}}.
+\end{DoxyCode}
+
+
+Parameters that can be stored in the bitstream are as follows:
+\begin{DoxyItemize}
+\item The two scale matrices ac\_\-scale and dc\_\-scale. 
+\begin{DoxyCode}
+      scale[2][64]={dc_scale,ac_scale}.
+\end{DoxyCode}
+
+\item The base matrices for each {\itshape qi\/}, {\itshape qti\/} and {\itshape pli\/} (up to 384 in all). In order to avoid storing a full 384 base matrices, only a sparse set of matrices are stored, and the rest are linearly interpolated. This is done as follows. For each {\itshape qti\/} and {\itshape pli\/}, a series of {\itshape n\/} {\itshape qi\/} ranges is defined. The size of each {\itshape qi\/} range can vary arbitrarily, but they must sum to 63. Then, {\ttfamily n+1} matrices are specified, one for each endpoint of the ranges. For interpolation purposes, each range's endpoints are the first {\itshape qi\/} value it contains and one past the last {\itshape qi\/} value it contains. Fractional values are rounded to the nearest integer, with ties rounded away from zero.
+\end{DoxyItemize}
+
+Base matrices are stored by reference, so if the same matrices are used multiple times, they will only appear once in the bitstream. The bitstream is also capable of omitting an entire set of ranges and its associated matrices if they are the same as either the previous set (indexed in row-\/major order) or if the inter set is the same as the intra set.
+
+
+\begin{DoxyItemize}
+\item Loop filter limit values. The same limits are used for the loop filter in all color planes, despite potentially differing levels of quantization in each.
+\end{DoxyItemize}
+
+For the current encoder, {\ttfamily scale[ci!=0][qi]} must be no greater than {\ttfamily scale[ci!=0][qi-\/1]} and {\ttfamily base[qti][pli][qi][ci]} must be no greater than {\ttfamily base[qti][pli][qi-\/1][ci]}. These two conditions ensure that the actual quantizer for a given {\itshape qti\/}, {\itshape pli\/}, and {\itshape ci\/} does not increase as {\itshape qi\/} increases. This is not required by the decoder. 
+
+\subsection{Field Documentation}
+\index{th\_\-quant\_\-info@{th\_\-quant\_\-info}!ac\_\-scale@{ac\_\-scale}}
+\index{ac\_\-scale@{ac\_\-scale}!th_quant_info@{th\_\-quant\_\-info}}
+\subsubsection[{ac\_\-scale}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint16\_\-t {\bf th\_\-quant\_\-info::ac\_\-scale}[64]}\label{structth__quant__info_a102f079c8f4a135dc0895c10768aeb06}
+
+
+The AC scaling factors. \index{th\_\-quant\_\-info@{th\_\-quant\_\-info}!dc\_\-scale@{dc\_\-scale}}
+\index{dc\_\-scale@{dc\_\-scale}!th_quant_info@{th\_\-quant\_\-info}}
+\subsubsection[{dc\_\-scale}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint16\_\-t {\bf th\_\-quant\_\-info::dc\_\-scale}[64]}\label{structth__quant__info_ad5c1c0d1aa4127fcf864ae747d732ed9}
+
+
+The DC scaling factors. \index{th\_\-quant\_\-info@{th\_\-quant\_\-info}!loop\_\-filter\_\-limits@{loop\_\-filter\_\-limits}}
+\index{loop\_\-filter\_\-limits@{loop\_\-filter\_\-limits}!th_quant_info@{th\_\-quant\_\-info}}
+\subsubsection[{loop\_\-filter\_\-limits}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf th\_\-quant\_\-info::loop\_\-filter\_\-limits}[64]}\label{structth__quant__info_a4ac56bf0a45b5743b36daf85d5cd9e33}
+
+
+The loop filter limit values. \index{th\_\-quant\_\-info@{th\_\-quant\_\-info}!qi\_\-ranges@{qi\_\-ranges}}
+\index{qi\_\-ranges@{qi\_\-ranges}!th_quant_info@{th\_\-quant\_\-info}}
+\subsubsection[{qi\_\-ranges}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-quant\_\-ranges} {\bf th\_\-quant\_\-info::qi\_\-ranges}[2][3]}\label{structth__quant__info_a6feacf4b365e305a7df7b93d87ee7bb8}
+
+
+The {\itshape qi\/} ranges for each {\itshape ci\/} and {\itshape pli\/}. 
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item 
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__quant__ranges.tex b/doc/libtheora/latex/structth__quant__ranges.tex
new file mode 100644 (file)
index 0000000..d1c6ce0
--- /dev/null
@@ -0,0 +1,42 @@
+\section{th\_\-quant\_\-ranges Struct Reference}
+\label{structth__quant__ranges}\index{th\_\-quant\_\-ranges@{th\_\-quant\_\-ranges}}
+
+
+A set of {\itshape qi\/} ranges.  
+
+
+{\ttfamily \#include $<$codec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item 
+int {\bf nranges}
+\begin{DoxyCompactList}\small\item\em The number of ranges in the set. \item\end{DoxyCompactList}\item 
+const int $\ast$ {\bf sizes}
+\begin{DoxyCompactList}\small\item\em The size of each of the \doxyref{nranges}{p.}{structth__quant__ranges_a53e5a3d7f7a112100b4b670929b3ebab} ranges. \item\end{DoxyCompactList}\item 
+const {\bf th\_\-quant\_\-base} $\ast$ {\bf base\_\-matrices}
+\begin{DoxyCompactList}\small\item\em \doxyref{nranges}{p.}{structth__quant__ranges_a53e5a3d7f7a112100b4b670929b3ebab} {\ttfamily +1} base matrices. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+A set of {\itshape qi\/} ranges. 
+
+\subsection{Field Documentation}
+\index{th\_\-quant\_\-ranges@{th\_\-quant\_\-ranges}!base\_\-matrices@{base\_\-matrices}}
+\index{base\_\-matrices@{base\_\-matrices}!th_quant_ranges@{th\_\-quant\_\-ranges}}
+\subsubsection[{base\_\-matrices}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf th\_\-quant\_\-base}$\ast$ {\bf th\_\-quant\_\-ranges::base\_\-matrices}}\label{structth__quant__ranges_a52cb432f034737087492ea448de20bdb}
+
+
+\doxyref{nranges}{p.}{structth__quant__ranges_a53e5a3d7f7a112100b4b670929b3ebab} {\ttfamily +1} base matrices. Matrices {\itshape i\/} and {\ttfamily i+1} form the endpoints of range {\itshape i\/}. \index{th\_\-quant\_\-ranges@{th\_\-quant\_\-ranges}!nranges@{nranges}}
+\index{nranges@{nranges}!th_quant_ranges@{th\_\-quant\_\-ranges}}
+\subsubsection[{nranges}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf th\_\-quant\_\-ranges::nranges}}\label{structth__quant__ranges_a53e5a3d7f7a112100b4b670929b3ebab}
+
+
+The number of ranges in the set. \index{th\_\-quant\_\-ranges@{th\_\-quant\_\-ranges}!sizes@{sizes}}
+\index{sizes@{sizes}!th_quant_ranges@{th\_\-quant\_\-ranges}}
+\subsubsection[{sizes}]{\setlength{\rightskip}{0pt plus 5cm}const int$\ast$ {\bf th\_\-quant\_\-ranges::sizes}}\label{structth__quant__ranges_af3188a373bc0b8ffaa330d0ab4c1a194}
+
+
+The size of each of the \doxyref{nranges}{p.}{structth__quant__ranges_a53e5a3d7f7a112100b4b670929b3ebab} ranges. These must sum to 63. 
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item 
+{\bf codec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structth__stripe__callback.tex b/doc/libtheora/latex/structth__stripe__callback.tex
new file mode 100644 (file)
index 0000000..2cf1261
--- /dev/null
@@ -0,0 +1,35 @@
+\section{th\_\-stripe\_\-callback Struct Reference}
+\label{structth__stripe__callback}\index{th\_\-stripe\_\-callback@{th\_\-stripe\_\-callback}}
+
+
+The striped decode callback data to pass to \doxyref{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}{p.}{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e}.  
+
+
+{\ttfamily \#include $<$theoradec.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item 
+void $\ast$ {\bf ctx}
+\begin{DoxyCompactList}\small\item\em An application-\/provided context pointer. \item\end{DoxyCompactList}\item 
+{\bf th\_\-stripe\_\-decoded\_\-func} {\bf stripe\_\-decoded}
+\begin{DoxyCompactList}\small\item\em The callback function pointer. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+The striped decode callback data to pass to \doxyref{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}{p.}{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e}. 
+
+\subsection{Field Documentation}
+\index{th\_\-stripe\_\-callback@{th\_\-stripe\_\-callback}!ctx@{ctx}}
+\index{ctx@{ctx}!th_stripe_callback@{th\_\-stripe\_\-callback}}
+\subsubsection[{ctx}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ {\bf th\_\-stripe\_\-callback::ctx}}\label{structth__stripe__callback_ab895162ce29a411fa98e0ba9661f47d4}
+
+
+An application-\/provided context pointer. This will be passed back verbatim to the application. \index{th\_\-stripe\_\-callback@{th\_\-stripe\_\-callback}!stripe\_\-decoded@{stripe\_\-decoded}}
+\index{stripe\_\-decoded@{stripe\_\-decoded}!th_stripe_callback@{th\_\-stripe\_\-callback}}
+\subsubsection[{stripe\_\-decoded}]{\setlength{\rightskip}{0pt plus 5cm}{\bf th\_\-stripe\_\-decoded\_\-func} {\bf th\_\-stripe\_\-callback::stripe\_\-decoded}}\label{structth__stripe__callback_a977c725680a37e3446e459f063b1f4a5}
+
+
+The callback function pointer. 
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item 
+{\bf theoradec.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structtheora__comment.tex b/doc/libtheora/latex/structtheora__comment.tex
new file mode 100644 (file)
index 0000000..7ff6338
--- /dev/null
@@ -0,0 +1,53 @@
+\section{theora\_\-comment Struct Reference}
+\label{structtheora__comment}\index{theora\_\-comment@{theora\_\-comment}}
+
+
+Comment header metadata.  
+
+
+{\ttfamily \#include $<$theora.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item 
+char $\ast$$\ast$ {\bf user\_\-comments}
+\begin{DoxyCompactList}\small\item\em An array of comment string vectors. \item\end{DoxyCompactList}\item 
+int $\ast$ {\bf comment\_\-lengths}
+\begin{DoxyCompactList}\small\item\em An array of corresponding string vector lengths in bytes. \item\end{DoxyCompactList}\item 
+int {\bf comments}
+\begin{DoxyCompactList}\small\item\em The total number of comment string vectors. \item\end{DoxyCompactList}\item 
+char $\ast$ {\bf vendor}
+\begin{DoxyCompactList}\small\item\em The vendor string identifying the encoder, null terminated. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+Comment header metadata. This structure holds the in-\/stream metadata corresponding to the 'comment' header packet.
+
+Meta data is stored as a series of (tag, value) pairs, in length-\/encoded string vectors. The first occurence of the '=' character delimits the tag and value. A particular tag may occur more than once. The character set encoding for the strings is always UTF-\/8, but the tag names are limited to case-\/insensitive ASCII. See the spec for details.
+
+In filling in this structure, \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} will null-\/terminate the user\_\-comment strings for safety. However, the bitstream format itself treats them as 8-\/bit clean, and so the length array should be treated as authoritative for their length. 
+
+\subsection{Field Documentation}
+\index{theora\_\-comment@{theora\_\-comment}!comment\_\-lengths@{comment\_\-lengths}}
+\index{comment\_\-lengths@{comment\_\-lengths}!theora_comment@{theora\_\-comment}}
+\subsubsection[{comment\_\-lengths}]{\setlength{\rightskip}{0pt plus 5cm}int$\ast$ {\bf theora\_\-comment::comment\_\-lengths}}\label{structtheora__comment_a5ab4a376d3c217282a684577c9c9f49a}
+
+
+An array of corresponding string vector lengths in bytes. \index{theora\_\-comment@{theora\_\-comment}!comments@{comments}}
+\index{comments@{comments}!theora_comment@{theora\_\-comment}}
+\subsubsection[{comments}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-comment::comments}}\label{structtheora__comment_a122393035c8352ff9be42d69e73aee00}
+
+
+The total number of comment string vectors. \index{theora\_\-comment@{theora\_\-comment}!user\_\-comments@{user\_\-comments}}
+\index{user\_\-comments@{user\_\-comments}!theora_comment@{theora\_\-comment}}
+\subsubsection[{user\_\-comments}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$$\ast$ {\bf theora\_\-comment::user\_\-comments}}\label{structtheora__comment_a1e236fd180dfce19be89081399444cf5}
+
+
+An array of comment string vectors. \index{theora\_\-comment@{theora\_\-comment}!vendor@{vendor}}
+\index{vendor@{vendor}!theora_comment@{theora\_\-comment}}
+\subsubsection[{vendor}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ {\bf theora\_\-comment::vendor}}\label{structtheora__comment_adb371baf8f0daed42af8b875cf8430ef}
+
+
+The vendor string identifying the encoder, null terminated. 
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item 
+{\bf theora.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structtheora__info.tex b/doc/libtheora/latex/structtheora__info.tex
new file mode 100644 (file)
index 0000000..8d6866e
--- /dev/null
@@ -0,0 +1,197 @@
+\section{theora\_\-info Struct Reference}
+\label{structtheora__info}\index{theora\_\-info@{theora\_\-info}}
+
+
+Theora bitstream info.  
+
+
+{\ttfamily \#include $<$theora.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item 
+ogg\_\-uint32\_\-t {\bf width}
+\begin{DoxyCompactList}\small\item\em encoded frame width \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf height}
+\begin{DoxyCompactList}\small\item\em encoded frame height \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf frame\_\-width}
+\begin{DoxyCompactList}\small\item\em display frame width \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf frame\_\-height}
+\begin{DoxyCompactList}\small\item\em display frame height \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf offset\_\-x}
+\begin{DoxyCompactList}\small\item\em horizontal offset of the displayed frame \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf offset\_\-y}
+\begin{DoxyCompactList}\small\item\em vertical offset of the displayed frame \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf fps\_\-numerator}
+\begin{DoxyCompactList}\small\item\em frame rate numerator \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf fps\_\-denominator}
+\begin{DoxyCompactList}\small\item\em frame rate denominator \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf aspect\_\-numerator}
+\begin{DoxyCompactList}\small\item\em pixel aspect ratio numerator \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf aspect\_\-denominator}
+\begin{DoxyCompactList}\small\item\em pixel aspect ratio denominator \item\end{DoxyCompactList}\item 
+{\bf theora\_\-colorspace} {\bf colorspace}
+\begin{DoxyCompactList}\small\item\em colorspace \item\end{DoxyCompactList}\item 
+int {\bf target\_\-bitrate}
+\begin{DoxyCompactList}\small\item\em nominal bitrate in bits per second \item\end{DoxyCompactList}\item 
+int {\bf quality}
+\begin{DoxyCompactList}\small\item\em Nominal quality setting, 0-\/63. \item\end{DoxyCompactList}\item 
+int {\bf quick\_\-p}
+\begin{DoxyCompactList}\small\item\em Quick encode/decode. \item\end{DoxyCompactList}\item 
+unsigned char {\bf version\_\-major}
+\item 
+unsigned char {\bf version\_\-minor}
+\item 
+unsigned char {\bf version\_\-subminor}
+\item 
+void $\ast$ {\bf codec\_\-setup}
+\item 
+int {\bf dropframes\_\-p}
+\item 
+int {\bf keyframe\_\-auto\_\-p}
+\item 
+ogg\_\-uint32\_\-t {\bf keyframe\_\-frequency}
+\item 
+ogg\_\-uint32\_\-t {\bf keyframe\_\-frequency\_\-force}
+\item 
+ogg\_\-uint32\_\-t {\bf keyframe\_\-data\_\-target\_\-bitrate}
+\item 
+ogg\_\-int32\_\-t {\bf keyframe\_\-auto\_\-threshold}
+\item 
+ogg\_\-uint32\_\-t {\bf keyframe\_\-mindistance}
+\item 
+ogg\_\-int32\_\-t {\bf noise\_\-sensitivity}
+\item 
+ogg\_\-int32\_\-t {\bf sharpness}
+\item 
+{\bf theora\_\-pixelformat} {\bf pixelformat}
+\begin{DoxyCompactList}\small\item\em chroma subsampling mode to expect \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+Theora bitstream info. Contains the basic playback parameters for a stream, corresponding to the initial 'info' header packet.
+
+Encoded theora frames must be a multiple of 16 in width and height. To handle other frame sizes, a crop rectangle is specified in frame\_\-height and frame\_\-width, offset\_\-x and $\ast$ offset\_\-y. The offset and size should still be a multiple of 2 to avoid chroma sampling shifts. Offset values in this structure are measured from the upper left of the image.
+
+Frame rate, in frames per second, is stored as a rational fraction. Aspect ratio is also stored as a rational fraction, and refers to the aspect ratio of the frame pixels, not of the overall frame itself.
+
+See {\tt examples/encoder\_\-example.c} for usage examples of the other paramters and good default settings for the encoder parameters. 
+
+\subsection{Field Documentation}
+\index{theora\_\-info@{theora\_\-info}!aspect\_\-denominator@{aspect\_\-denominator}}
+\index{aspect\_\-denominator@{aspect\_\-denominator}!theora_info@{theora\_\-info}}
+\subsubsection[{aspect\_\-denominator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::aspect\_\-denominator}}\label{structtheora__info_afebc4d0cbfb34b68c833a8c79e83ae12}
+
+
+pixel aspect ratio denominator \index{theora\_\-info@{theora\_\-info}!aspect\_\-numerator@{aspect\_\-numerator}}
+\index{aspect\_\-numerator@{aspect\_\-numerator}!theora_info@{theora\_\-info}}
+\subsubsection[{aspect\_\-numerator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::aspect\_\-numerator}}\label{structtheora__info_a5a3ed8c79815fba1aa06c3f7d8e48b35}
+
+
+pixel aspect ratio numerator \index{theora\_\-info@{theora\_\-info}!codec\_\-setup@{codec\_\-setup}}
+\index{codec\_\-setup@{codec\_\-setup}!theora_info@{theora\_\-info}}
+\subsubsection[{codec\_\-setup}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ {\bf theora\_\-info::codec\_\-setup}}\label{structtheora__info_a719a1d77a4a3bfeab79aa5747dbbb04c}
+\index{theora\_\-info@{theora\_\-info}!colorspace@{colorspace}}
+\index{colorspace@{colorspace}!theora_info@{theora\_\-info}}
+\subsubsection[{colorspace}]{\setlength{\rightskip}{0pt plus 5cm}{\bf theora\_\-colorspace} {\bf theora\_\-info::colorspace}}\label{structtheora__info_a5eaba99c96706d47b426ab7b7602dc5d}
+
+
+colorspace \index{theora\_\-info@{theora\_\-info}!dropframes\_\-p@{dropframes\_\-p}}
+\index{dropframes\_\-p@{dropframes\_\-p}!theora_info@{theora\_\-info}}
+\subsubsection[{dropframes\_\-p}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-info::dropframes\_\-p}}\label{structtheora__info_af294db65a8363a0bcf43f4727763b291}
+\index{theora\_\-info@{theora\_\-info}!fps\_\-denominator@{fps\_\-denominator}}
+\index{fps\_\-denominator@{fps\_\-denominator}!theora_info@{theora\_\-info}}
+\subsubsection[{fps\_\-denominator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::fps\_\-denominator}}\label{structtheora__info_a9aa7e826e0323a4ae8cd8646a6cfbfea}
+
+
+frame rate denominator \index{theora\_\-info@{theora\_\-info}!fps\_\-numerator@{fps\_\-numerator}}
+\index{fps\_\-numerator@{fps\_\-numerator}!theora_info@{theora\_\-info}}
+\subsubsection[{fps\_\-numerator}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::fps\_\-numerator}}\label{structtheora__info_a3478199aa5ab213816c1819f70085ad7}
+
+
+frame rate numerator \index{theora\_\-info@{theora\_\-info}!frame\_\-height@{frame\_\-height}}
+\index{frame\_\-height@{frame\_\-height}!theora_info@{theora\_\-info}}
+\subsubsection[{frame\_\-height}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::frame\_\-height}}\label{structtheora__info_a287e4c194f1d2e6deb39d59f1748ea48}
+
+
+display frame height \index{theora\_\-info@{theora\_\-info}!frame\_\-width@{frame\_\-width}}
+\index{frame\_\-width@{frame\_\-width}!theora_info@{theora\_\-info}}
+\subsubsection[{frame\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::frame\_\-width}}\label{structtheora__info_a8f28f4018a25634d40e4ae861fbbccfa}
+
+
+display frame width \index{theora\_\-info@{theora\_\-info}!height@{height}}
+\index{height@{height}!theora_info@{theora\_\-info}}
+\subsubsection[{height}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::height}}\label{structtheora__info_ae6f0274fc4a7f285c422d91abb35f9c6}
+
+
+encoded frame height \index{theora\_\-info@{theora\_\-info}!keyframe\_\-auto\_\-p@{keyframe\_\-auto\_\-p}}
+\index{keyframe\_\-auto\_\-p@{keyframe\_\-auto\_\-p}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-auto\_\-p}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-info::keyframe\_\-auto\_\-p}}\label{structtheora__info_a23648173369174f687085c0ce85ef30e}
+\index{theora\_\-info@{theora\_\-info}!keyframe\_\-auto\_\-threshold@{keyframe\_\-auto\_\-threshold}}
+\index{keyframe\_\-auto\_\-threshold@{keyframe\_\-auto\_\-threshold}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-auto\_\-threshold}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int32\_\-t {\bf theora\_\-info::keyframe\_\-auto\_\-threshold}}\label{structtheora__info_a95cb8958e29ad3d24047ee8f9e7fd99b}
+\index{theora\_\-info@{theora\_\-info}!keyframe\_\-data\_\-target\_\-bitrate@{keyframe\_\-data\_\-target\_\-bitrate}}
+\index{keyframe\_\-data\_\-target\_\-bitrate@{keyframe\_\-data\_\-target\_\-bitrate}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-data\_\-target\_\-bitrate}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::keyframe\_\-data\_\-target\_\-bitrate}}\label{structtheora__info_a588942d1ee90a26a7effdf6a0e98b9ce}
+\index{theora\_\-info@{theora\_\-info}!keyframe\_\-frequency@{keyframe\_\-frequency}}
+\index{keyframe\_\-frequency@{keyframe\_\-frequency}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-frequency}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::keyframe\_\-frequency}}\label{structtheora__info_a03e1b3e337af5f9dabaaaeb9050f145a}
+\index{theora\_\-info@{theora\_\-info}!keyframe\_\-frequency\_\-force@{keyframe\_\-frequency\_\-force}}
+\index{keyframe\_\-frequency\_\-force@{keyframe\_\-frequency\_\-force}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-frequency\_\-force}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::keyframe\_\-frequency\_\-force}}\label{structtheora__info_ad9d2e22c44a53473010e6d1042dfe0d8}
+\index{theora\_\-info@{theora\_\-info}!keyframe\_\-mindistance@{keyframe\_\-mindistance}}
+\index{keyframe\_\-mindistance@{keyframe\_\-mindistance}!theora_info@{theora\_\-info}}
+\subsubsection[{keyframe\_\-mindistance}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::keyframe\_\-mindistance}}\label{structtheora__info_aa79ca8c0e77a884d4487fd627fae32e9}
+\index{theora\_\-info@{theora\_\-info}!noise\_\-sensitivity@{noise\_\-sensitivity}}
+\index{noise\_\-sensitivity@{noise\_\-sensitivity}!theora_info@{theora\_\-info}}
+\subsubsection[{noise\_\-sensitivity}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int32\_\-t {\bf theora\_\-info::noise\_\-sensitivity}}\label{structtheora__info_ac4789034f547b57d1075e035050eeed9}
+\index{theora\_\-info@{theora\_\-info}!offset\_\-x@{offset\_\-x}}
+\index{offset\_\-x@{offset\_\-x}!theora_info@{theora\_\-info}}
+\subsubsection[{offset\_\-x}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::offset\_\-x}}\label{structtheora__info_af5949a02bef29512f2705e6f6c944e3b}
+
+
+horizontal offset of the displayed frame \index{theora\_\-info@{theora\_\-info}!offset\_\-y@{offset\_\-y}}
+\index{offset\_\-y@{offset\_\-y}!theora_info@{theora\_\-info}}
+\subsubsection[{offset\_\-y}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::offset\_\-y}}\label{structtheora__info_a91c3922097ba32a85acd584a01dc2c93}
+
+
+vertical offset of the displayed frame \index{theora\_\-info@{theora\_\-info}!pixelformat@{pixelformat}}
+\index{pixelformat@{pixelformat}!theora_info@{theora\_\-info}}
+\subsubsection[{pixelformat}]{\setlength{\rightskip}{0pt plus 5cm}{\bf theora\_\-pixelformat} {\bf theora\_\-info::pixelformat}}\label{structtheora__info_a65ab4376ab5242ee82e06c78fb7008ab}
+
+
+chroma subsampling mode to expect \index{theora\_\-info@{theora\_\-info}!quality@{quality}}
+\index{quality@{quality}!theora_info@{theora\_\-info}}
+\subsubsection[{quality}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-info::quality}}\label{structtheora__info_a71a4748a5f31bd58d0e403b7806c980d}
+
+
+Nominal quality setting, 0-\/63. \index{theora\_\-info@{theora\_\-info}!quick\_\-p@{quick\_\-p}}
+\index{quick\_\-p@{quick\_\-p}!theora_info@{theora\_\-info}}
+\subsubsection[{quick\_\-p}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-info::quick\_\-p}}\label{structtheora__info_a2dfae4fd175dbd19254eaf0697778ff5}
+
+
+Quick encode/decode. \index{theora\_\-info@{theora\_\-info}!sharpness@{sharpness}}
+\index{sharpness@{sharpness}!theora_info@{theora\_\-info}}
+\subsubsection[{sharpness}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int32\_\-t {\bf theora\_\-info::sharpness}}\label{structtheora__info_a3fb695de2b2f56dd0203b9e2eb0df1cc}
+\index{theora\_\-info@{theora\_\-info}!target\_\-bitrate@{target\_\-bitrate}}
+\index{target\_\-bitrate@{target\_\-bitrate}!theora_info@{theora\_\-info}}
+\subsubsection[{target\_\-bitrate}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf theora\_\-info::target\_\-bitrate}}\label{structtheora__info_a0cfba041767ae2416dd190a406afe713}
+
+
+nominal bitrate in bits per second \index{theora\_\-info@{theora\_\-info}!version\_\-major@{version\_\-major}}
+\index{version\_\-major@{version\_\-major}!theora_info@{theora\_\-info}}
+\subsubsection[{version\_\-major}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf theora\_\-info::version\_\-major}}\label{structtheora__info_a7c5ebb9e6700aaef87f29f7c6074e474}
+\index{theora\_\-info@{theora\_\-info}!version\_\-minor@{version\_\-minor}}
+\index{version\_\-minor@{version\_\-minor}!theora_info@{theora\_\-info}}
+\subsubsection[{version\_\-minor}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf theora\_\-info::version\_\-minor}}\label{structtheora__info_a75eda4f30270d833c7b9dba43932a06a}
+\index{theora\_\-info@{theora\_\-info}!version\_\-subminor@{version\_\-subminor}}
+\index{version\_\-subminor@{version\_\-subminor}!theora_info@{theora\_\-info}}
+\subsubsection[{version\_\-subminor}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf theora\_\-info::version\_\-subminor}}\label{structtheora__info_aa07967ecd6e20bd2928ead42b6397b3d}
+\index{theora\_\-info@{theora\_\-info}!width@{width}}
+\index{width@{width}!theora_info@{theora\_\-info}}
+\subsubsection[{width}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-uint32\_\-t {\bf theora\_\-info::width}}\label{structtheora__info_a17c2fc651bb3329f1ea6b13ff1d3957b}
+
+
+encoded frame width 
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item 
+{\bf theora.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structtheora__state.tex b/doc/libtheora/latex/structtheora__state.tex
new file mode 100644 (file)
index 0000000..ef57a04
--- /dev/null
@@ -0,0 +1,41 @@
+\section{theora\_\-state Struct Reference}
+\label{structtheora__state}\index{theora\_\-state@{theora\_\-state}}
+
+
+Codec internal state and context.  
+
+
+{\ttfamily \#include $<$theora.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item 
+{\bf theora\_\-info} $\ast$ {\bf i}
+\item 
+ogg\_\-int64\_\-t {\bf granulepos}
+\item 
+void $\ast$ {\bf internal\_\-encode}
+\item 
+void $\ast$ {\bf internal\_\-decode}
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+Codec internal state and context. 
+
+\subsection{Field Documentation}
+\index{theora\_\-state@{theora\_\-state}!granulepos@{granulepos}}
+\index{granulepos@{granulepos}!theora_state@{theora\_\-state}}
+\subsubsection[{granulepos}]{\setlength{\rightskip}{0pt plus 5cm}ogg\_\-int64\_\-t {\bf theora\_\-state::granulepos}}\label{structtheora__state_a5dd344a3f79ea7501b18c756772fab7b}
+\index{theora\_\-state@{theora\_\-state}!i@{i}}
+\index{i@{i}!theora_state@{theora\_\-state}}
+\subsubsection[{i}]{\setlength{\rightskip}{0pt plus 5cm}{\bf theora\_\-info}$\ast$ {\bf theora\_\-state::i}}\label{structtheora__state_a0efc7ac581ef260b0ca17f518ace0731}
+\index{theora\_\-state@{theora\_\-state}!internal\_\-decode@{internal\_\-decode}}
+\index{internal\_\-decode@{internal\_\-decode}!theora_state@{theora\_\-state}}
+\subsubsection[{internal\_\-decode}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ {\bf theora\_\-state::internal\_\-decode}}\label{structtheora__state_ad20c4eebbc5ed9764cf03ba8b90e796e}
+\index{theora\_\-state@{theora\_\-state}!internal\_\-encode@{internal\_\-encode}}
+\index{internal\_\-encode@{internal\_\-encode}!theora_state@{theora\_\-state}}
+\subsubsection[{internal\_\-encode}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ {\bf theora\_\-state::internal\_\-encode}}\label{structtheora__state_a1fbfd82fb7210cbcc4233cb680ec2af6}
+
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item 
+{\bf theora.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/structyuv__buffer.tex b/doc/libtheora/latex/structyuv__buffer.tex
new file mode 100644 (file)
index 0000000..08d9d28
--- /dev/null
@@ -0,0 +1,90 @@
+\section{yuv\_\-buffer Struct Reference}
+\label{structyuv__buffer}\index{yuv\_\-buffer@{yuv\_\-buffer}}
+
+
+A YUV buffer for passing uncompressed frames to and from the codec.  
+
+
+{\ttfamily \#include $<$theora.h$>$}\subsection*{Data Fields}
+\begin{DoxyCompactItemize}
+\item 
+int {\bf y\_\-width}
+\begin{DoxyCompactList}\small\item\em Width of the Y' luminance plane. \item\end{DoxyCompactList}\item 
+int {\bf y\_\-height}
+\begin{DoxyCompactList}\small\item\em Height of the luminance plane. \item\end{DoxyCompactList}\item 
+int {\bf y\_\-stride}
+\begin{DoxyCompactList}\small\item\em Offset in bytes between successive rows. \item\end{DoxyCompactList}\item 
+int {\bf uv\_\-width}
+\begin{DoxyCompactList}\small\item\em Width of the Cb and Cr chroma planes. \item\end{DoxyCompactList}\item 
+int {\bf uv\_\-height}
+\begin{DoxyCompactList}\small\item\em Height of the chroma planes. \item\end{DoxyCompactList}\item 
+int {\bf uv\_\-stride}
+\begin{DoxyCompactList}\small\item\em Offset between successive chroma rows. \item\end{DoxyCompactList}\item 
+unsigned char $\ast$ {\bf y}
+\begin{DoxyCompactList}\small\item\em Pointer to start of luminance data. \item\end{DoxyCompactList}\item 
+unsigned char $\ast$ {\bf u}
+\begin{DoxyCompactList}\small\item\em Pointer to start of Cb data. \item\end{DoxyCompactList}\item 
+unsigned char $\ast$ {\bf v}
+\begin{DoxyCompactList}\small\item\em Pointer to start of Cr data. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+A YUV buffer for passing uncompressed frames to and from the codec. This holds a Y'CbCr frame in planar format. The CbCr planes can be subsampled and have their own separate dimensions and row stride offsets. Note that the strides may be negative in some configurations. For theora the width and height of the largest plane must be a multiple of 16. The actual meaningful picture size and offset are stored in the \doxyref{theora\_\-info}{p.}{structtheora__info} structure; frames returned by the decoder may need to be cropped for display.
+
+All samples are 8 bits. Within each plane samples are ordered by row from the top of the frame to the bottom. Within each row samples are ordered from left to right.
+
+During decode, the \doxyref{yuv\_\-buffer}{p.}{structyuv__buffer} struct is allocated by the user, but all fields (including luma and chroma pointers) are filled by the library. These pointers address library-\/internal memory and their contents should not be modified.
+
+Conversely, during encode the user allocates the struct and fills out all fields. The user also manages the data addressed by the luma and chroma pointers. See the encoder\_\-example.c and dump\_\-video.c example files in theora/examples/ for more information. 
+
+\subsection{Field Documentation}
+\index{yuv\_\-buffer@{yuv\_\-buffer}!u@{u}}
+\index{u@{u}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{u}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char$\ast$ {\bf yuv\_\-buffer::u}}\label{structyuv__buffer_a8b1857afe3ffac28f259499a57a559e1}
+
+
+Pointer to start of Cb data. \index{yuv\_\-buffer@{yuv\_\-buffer}!uv\_\-height@{uv\_\-height}}
+\index{uv\_\-height@{uv\_\-height}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{uv\_\-height}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::uv\_\-height}}\label{structyuv__buffer_a640f1a0b456d3807f9f0538b22f10097}
+
+
+Height of the chroma planes. \index{yuv\_\-buffer@{yuv\_\-buffer}!uv\_\-stride@{uv\_\-stride}}
+\index{uv\_\-stride@{uv\_\-stride}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{uv\_\-stride}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::uv\_\-stride}}\label{structyuv__buffer_ab265cc24ffb5650bf52daf223b0debb9}
+
+
+Offset between successive chroma rows. \index{yuv\_\-buffer@{yuv\_\-buffer}!uv\_\-width@{uv\_\-width}}
+\index{uv\_\-width@{uv\_\-width}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{uv\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::uv\_\-width}}\label{structyuv__buffer_a8c59a57c35af0be519ee47f15e49fe2b}
+
+
+Width of the Cb and Cr chroma planes. \index{yuv\_\-buffer@{yuv\_\-buffer}!v@{v}}
+\index{v@{v}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{v}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char$\ast$ {\bf yuv\_\-buffer::v}}\label{structyuv__buffer_aa429491dd112adb0254672c59ef55075}
+
+
+Pointer to start of Cr data. \index{yuv\_\-buffer@{yuv\_\-buffer}!y@{y}}
+\index{y@{y}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{y}]{\setlength{\rightskip}{0pt plus 5cm}unsigned char$\ast$ {\bf yuv\_\-buffer::y}}\label{structyuv__buffer_a725727c70eeced6b8c90866973399ac1}
+
+
+Pointer to start of luminance data. \index{yuv\_\-buffer@{yuv\_\-buffer}!y\_\-height@{y\_\-height}}
+\index{y\_\-height@{y\_\-height}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{y\_\-height}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::y\_\-height}}\label{structyuv__buffer_a5a8b60e012247e2caffcbbaca99414e0}
+
+
+Height of the luminance plane. \index{yuv\_\-buffer@{yuv\_\-buffer}!y\_\-stride@{y\_\-stride}}
+\index{y\_\-stride@{y\_\-stride}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{y\_\-stride}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::y\_\-stride}}\label{structyuv__buffer_a9cdf61834c11b2351640a4a243ad0549}
+
+
+Offset in bytes between successive rows. \index{yuv\_\-buffer@{yuv\_\-buffer}!y\_\-width@{y\_\-width}}
+\index{y\_\-width@{y\_\-width}!yuv_buffer@{yuv\_\-buffer}}
+\subsubsection[{y\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}int {\bf yuv\_\-buffer::y\_\-width}}\label{structyuv__buffer_aaa6c06c071da933231647238418d5fc0}
+
+
+Width of the Y' luminance plane. 
+
+The documentation for this struct was generated from the following file:\begin{DoxyCompactItemize}
+\item 
+{\bf theora.h}\end{DoxyCompactItemize}
diff --git a/doc/libtheora/latex/theora_8h.tex b/doc/libtheora/latex/theora_8h.tex
new file mode 100644 (file)
index 0000000..3bb3b17
--- /dev/null
@@ -0,0 +1,185 @@
+\section{theora.h File Reference}
+\label{theora_8h}\index{theora.h@{theora.h}}
+
+
+The libtheora pre-\/1.0 legacy C API.  
+{\ttfamily \#include $<$stddef.h$>$}\par
+{\ttfamily \#include $<$ogg/ogg.h$>$}\par
+\subsection*{Data Structures}
+\begin{DoxyCompactItemize}
+\item 
+struct {\bf yuv\_\-buffer}
+\begin{DoxyCompactList}\small\item\em A YUV buffer for passing uncompressed frames to and from the codec. \item\end{DoxyCompactList}\item 
+struct {\bf theora\_\-info}
+\begin{DoxyCompactList}\small\item\em Theora bitstream info. \item\end{DoxyCompactList}\item 
+struct {\bf theora\_\-state}
+\begin{DoxyCompactList}\small\item\em Codec internal state and context. \item\end{DoxyCompactList}\item 
+struct {\bf theora\_\-comment}
+\begin{DoxyCompactList}\small\item\em Comment header metadata. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Defines}
+\begin{DoxyCompactItemize}
+\item 
+\#define {\bf OC\_\-FAULT}~-\/1
+\begin{DoxyCompactList}\small\item\em General failure. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-EINVAL}~-\/10
+\begin{DoxyCompactList}\small\item\em Library encountered invalid internal data. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-DISABLED}~-\/11
+\begin{DoxyCompactList}\small\item\em Requested action is disabled. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-BADHEADER}~-\/20
+\begin{DoxyCompactList}\small\item\em Header packet was corrupt/invalid. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-NOTFORMAT}~-\/21
+\begin{DoxyCompactList}\small\item\em Packet is not a theora packet. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-VERSION}~-\/22
+\begin{DoxyCompactList}\small\item\em Bitstream version is not handled. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-IMPL}~-\/23
+\begin{DoxyCompactList}\small\item\em Feature or action not implemented. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-BADPACKET}~-\/24
+\begin{DoxyCompactList}\small\item\em Packet is corrupt. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-NEWPACKET}~-\/25
+\begin{DoxyCompactList}\small\item\em Packet is an (ignorable) unhandled extension. \item\end{DoxyCompactList}\item 
+\#define {\bf OC\_\-DUPFRAME}~1
+\begin{DoxyCompactList}\small\item\em Packet is a dropped frame. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\begin{Indent}{\bf theora\_\-control() codes}\par
+{\em \label{_amgrp13fd61986cff4566fe89a40e30b74ad9}
+ }\begin{DoxyCompactItemize}
+\item 
+\#define {\bf TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}~(1)
+\begin{DoxyCompactList}\small\item\em Get the maximum post-\/processing level. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-PPLEVEL}~(3)
+\begin{DoxyCompactList}\small\item\em Set the post-\/processing level. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}~(4)
+\begin{DoxyCompactList}\small\item\em Sets the maximum distance between key frames. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-GRANPOS}~(5)
+\begin{DoxyCompactList}\small\item\em Set the granule position. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}~(2)
+\begin{DoxyCompactList}\small\item\em Sets the quantization parameters to use. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}~(10)
+\begin{DoxyCompactList}\small\item\em Disables any encoder features that would prevent lossless transcoding back to VP3. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}~(12)
+\begin{DoxyCompactList}\small\item\em Gets the maximum speed level. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}~(14)
+\begin{DoxyCompactList}\small\item\em Sets the speed level. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Enumerations}
+\begin{DoxyCompactItemize}
+\item 
+enum {\bf theora\_\-colorspace} \{ {\bf OC\_\-CS\_\-UNSPECIFIED}, 
+{\bf OC\_\-CS\_\-ITU\_\-REC\_\-470M}, 
+{\bf OC\_\-CS\_\-ITU\_\-REC\_\-470BG}, 
+{\bf OC\_\-CS\_\-NSPACES}
+ \}
+\begin{DoxyCompactList}\small\item\em A Colorspace. \item\end{DoxyCompactList}\item 
+enum {\bf theora\_\-pixelformat} \{ {\bf OC\_\-PF\_\-420}, 
+{\bf OC\_\-PF\_\-RSVD}, 
+{\bf OC\_\-PF\_\-422}, 
+{\bf OC\_\-PF\_\-444}
+ \}
+\begin{DoxyCompactList}\small\item\em A Chroma subsampling. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item 
+const char $\ast$ {\bf theora\_\-version\_\-string} (void)
+\begin{DoxyCompactList}\small\item\em Retrieve a human-\/readable string to identify the encoder vendor and version. \item\end{DoxyCompactList}\item 
+ogg\_\-uint32\_\-t {\bf theora\_\-version\_\-number} (void)
+\begin{DoxyCompactList}\small\item\em Retrieve a 32-\/bit version number. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-init} ({\bf theora\_\-state} $\ast$th, {\bf theora\_\-info} $\ast$ti)
+\begin{DoxyCompactList}\small\item\em Initialize the theora encoder. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-YUVin} ({\bf theora\_\-state} $\ast$t, {\bf yuv\_\-buffer} $\ast$yuv)
+\begin{DoxyCompactList}\small\item\em Submit a YUV buffer to the theora encoder. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-packetout} ({\bf theora\_\-state} $\ast$t, int last\_\-p, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request the next packet of encoded video. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-header} ({\bf theora\_\-state} $\ast$t, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a packet containing the initial header. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-comment} ({\bf theora\_\-comment} $\ast$tc, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a comment header packet from provided metadata. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-encode\_\-tables} ({\bf theora\_\-state} $\ast$t, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Request a packet containing the codebook tables for the stream. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-decode\_\-header} ({\bf theora\_\-info} $\ast$ci, {\bf theora\_\-comment} $\ast$cc, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Decode an Ogg packet, with the expectation that the packet contains an initial header, comment data or codebook tables. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-decode\_\-init} ({\bf theora\_\-state} $\ast$th, {\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{theora\_\-state}{p.}{structtheora__state} handle for decoding. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-decode\_\-packetin} ({\bf theora\_\-state} $\ast$th, ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Input a packet containing encoded data into the theora decoder. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-decode\_\-YUVout} ({\bf theora\_\-state} $\ast$th, {\bf yuv\_\-buffer} $\ast$yuv)
+\begin{DoxyCompactList}\small\item\em Output the next available frame of decoded YUV data. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-packet\_\-isheader} (ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Report whether a theora packet is a header or not This function does no verification beyond checking the header flag bit so it should not be used for bitstream identification; use \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} for that. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-packet\_\-iskeyframe} (ogg\_\-packet $\ast$op)
+\begin{DoxyCompactList}\small\item\em Report whether a theora packet is a keyframe or not. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-granule\_\-shift} ({\bf theora\_\-info} $\ast$ti)
+\begin{DoxyCompactList}\small\item\em Report the granulepos shift radix. \item\end{DoxyCompactList}\item 
+ogg\_\-int64\_\-t {\bf theora\_\-granule\_\-frame} ({\bf theora\_\-state} $\ast$th, ogg\_\-int64\_\-t granulepos)
+\begin{DoxyCompactList}\small\item\em Convert a granulepos to an absolute frame index, starting at 0. \item\end{DoxyCompactList}\item 
+double {\bf theora\_\-granule\_\-time} ({\bf theora\_\-state} $\ast$th, ogg\_\-int64\_\-t granulepos)
+\begin{DoxyCompactList}\small\item\em Convert a granulepos to absolute time in seconds. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-info\_\-init} ({\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Initialize a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-info\_\-clear} ({\bf theora\_\-info} $\ast$c)
+\begin{DoxyCompactList}\small\item\em Clear a \doxyref{theora\_\-info}{p.}{structtheora__info} structure. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-clear} ({\bf theora\_\-state} $\ast$t)
+\begin{DoxyCompactList}\small\item\em Free all internal data associated with a \doxyref{theora\_\-state}{p.}{structtheora__state} handle. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-comment\_\-init} ({\bf theora\_\-comment} $\ast$tc)
+\begin{DoxyCompactList}\small\item\em Initialize an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-comment\_\-add} ({\bf theora\_\-comment} $\ast$tc, char $\ast$comment)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-comment\_\-add\_\-tag} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag, char $\ast$value)
+\begin{DoxyCompactList}\small\item\em Add a comment to an initialized \doxyref{theora\_\-comment}{p.}{structtheora__comment} structure. \item\end{DoxyCompactList}\item 
+char $\ast$ {\bf theora\_\-comment\_\-query} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag, int count)
+\begin{DoxyCompactList}\small\item\em Look up a comment value by tag. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-comment\_\-query\_\-count} ({\bf theora\_\-comment} $\ast$tc, char $\ast$tag)
+\begin{DoxyCompactList}\small\item\em Look up the number of instances of a tag. \item\end{DoxyCompactList}\item 
+void {\bf theora\_\-comment\_\-clear} ({\bf theora\_\-comment} $\ast$tc)
+\begin{DoxyCompactList}\small\item\em Clear an allocated \doxyref{theora\_\-comment}{p.}{structtheora__comment} struct so that it can be freed. \item\end{DoxyCompactList}\item 
+int {\bf theora\_\-control} ({\bf theora\_\-state} $\ast$th, int req, void $\ast$buf, size\_\-t buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Encoder control function. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+The libtheora pre-\/1.0 legacy C API. \subsection{Introduction}\label{index_intro}
+This is the documentation for the libtheora legacy C API, declared in the \doxyref{theora.h}{p.}{theora_8h} header, which describes the old interface used before the 1.0 release. This API was widely deployed for several years and remains supported, but for new code we recommend the cleaner API declared in \doxyref{theoradec.h}{p.}{theoradec_8h} and \doxyref{theoraenc.h}{p.}{theoraenc_8h}.
+
+libtheora is the reference implementation for {\tt Theora}, a free video codec. Theora is derived from On2's VP3 codec with improved integration with Ogg multimedia formats by {\tt Xiph.Org}.\subsection{Overview}\label{theora_8h_overview}
+This library will both decode and encode theora packets to/from raw YUV frames. In either case, the packets will most likely either come from or need to be embedded in an Ogg stream. Use {\tt libogg} or {\tt liboggz} to extract/package these packets.\subsection{Decoding Process}\label{theora_8h_decoding}
+Decoding can be separated into the following steps:
+\begin{DoxyEnumerate}
+\item initialise \doxyref{theora\_\-info}{p.}{structtheora__info} and \doxyref{theora\_\-comment}{p.}{structtheora__comment} structures using \doxyref{theora\_\-info\_\-init()}{p.}{group__oldfuncs_ga3091c87d48f1faba018c5956379a6d90} and \doxyref{theora\_\-comment\_\-init()}{p.}{group__oldfuncs_ga811b92785df3bdbbebb3de612d9d6ce0}: \begin{DoxyVerb}
+ theora_info     info;
+ theora_comment  comment;
+   
+ theora_info_init(&info);
+ theora_comment_init(&comment);
+ \end{DoxyVerb}
+
+\item retrieve header packets from Ogg stream (there should be 3) and decode into \doxyref{theora\_\-info}{p.}{structtheora__info} and \doxyref{theora\_\-comment}{p.}{structtheora__comment} structures using \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82}. See \doxyref{Identifying Theora Packets}{p.}{theora_8h_identification} for more information on identifying which packets are theora packets. \begin{DoxyVerb}
+ int i;
+ for (i = 0; i < 3; i++)
+ {
+   (get a theora packet "op" from the Ogg stream)
+   theora_decode_header(&info, &comment, op);
+ }
+ \end{DoxyVerb}
+
+\item initialise the decoder based on the information retrieved into the \doxyref{theora\_\-info}{p.}{structtheora__info} struct by \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82}. You will need a \doxyref{theora\_\-state}{p.}{structtheora__state} struct. \begin{DoxyVerb}
+ theora_state state;
+ theora_decode_init(&state, &info);
+ \end{DoxyVerb}
+
+\item pass in packets and retrieve decoded frames! See the \doxyref{yuv\_\-buffer}{p.}{structyuv__buffer} documentation for information on how to retrieve raw YUV data. \begin{DoxyVerb}
+ yuf_buffer buffer;
+ while (last packet was not e_o_s) {
+   (get a theora packet "op" from the Ogg stream)
+   theora_decode_packetin(&state, op);
+   theora_decode_YUVout(&state, &buffer);
+ }
+ \end{DoxyVerb}
+
+\end{DoxyEnumerate}\subsubsection{Identifying Theora Packets}\label{theora_8h_identification}
+All streams inside an Ogg file have a unique serial\_\-no attached to the stream. Typically, you will want to
+\begin{DoxyItemize}
+\item retrieve the serial\_\-no for each b\_\-o\_\-s (beginning of stream) page encountered within the Ogg file;
+\item test the first (only) packet on that page to determine if it is a theora packet;
+\item once you have found a theora b\_\-o\_\-s page then use the retrieved serial\_\-no to identify future packets belonging to the same theora stream.
+\end{DoxyItemize}
+
+Note that you {\itshape cannot\/} use \doxyref{theora\_\-packet\_\-isheader()}{p.}{group__oldfuncs_gab969f9d0407683f0e5abe73d0839a25b} to determine if a packet is a theora packet or not, as this function does not perform any checking beyond whether a header bit is present. Instead, use the \doxyref{theora\_\-decode\_\-header()}{p.}{group__oldfuncs_ga02915e63c1bd733ee291f577a8b75a82} function and check the return value; or examine the header bytes at the beginning of the Ogg page. 
\ No newline at end of file
diff --git a/doc/libtheora/latex/theoradec_8h.tex b/doc/libtheora/latex/theoradec_8h.tex
new file mode 100644 (file)
index 0000000..f19d902
--- /dev/null
@@ -0,0 +1,194 @@
+\section{theoradec.h File Reference}
+\label{theoradec_8h}\index{theoradec.h@{theoradec.h}}
+
+
+The {\ttfamily libtheoradec} C decoding API.  
+{\ttfamily \#include $<$stddef.h$>$}\par
+{\ttfamily \#include $<$ogg/ogg.h$>$}\par
+{\ttfamily \#include \char`\"{}codec.h\char`\"{}}\par
+\subsection*{Data Structures}
+\begin{DoxyCompactItemize}
+\item 
+struct {\bf th\_\-stripe\_\-callback}
+\begin{DoxyCompactList}\small\item\em The striped decode callback data to pass to \doxyref{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}{p.}{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e}. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Defines}
+\begin{DoxyCompactItemize}
+\item 
+\#define {\bf \_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-}~(1)
+\end{DoxyCompactItemize}
+\begin{Indent}{\bf th\_\-decode\_\-ctl() codes}\par
+{\em \label{_amgrp638dfd34390d0a936dbf76caf938d78d}
+\label{theoradec_8h_decctlcodes}
+ These are the available request codes for \doxyref{th\_\-decode\_\-ctl()}{p.}{group__decfuncs_ga1a8051958d75b1012573b6e3c8f670e1}. By convention, these are odd, to distinguish them from the \doxyref{encoder control codes}{p.}{theoraenc_8h_encctlcodes}. Keep any experimental or vendor-\/specific values above {\ttfamily 0x8000}. }\begin{DoxyCompactItemize}
+\item 
+\#define {\bf TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}~(1)
+\begin{DoxyCompactList}\small\item\em Gets the maximum post-\/processing level. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-PPLEVEL}~(3)
+\begin{DoxyCompactList}\small\item\em Sets the post-\/processing level. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-GRANPOS}~(5)
+\begin{DoxyCompactList}\small\item\em Sets the granule position. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}~(7)
+\begin{DoxyCompactList}\small\item\em Sets the striped decode callback function. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE}~(9)
+\begin{DoxyCompactList}\small\item\em Enables telemetry and sets the macroblock display mode. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV}~(11)
+\begin{DoxyCompactList}\small\item\em Enables telemetry and sets the motion vector display mode. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI}~(13)
+\begin{DoxyCompactList}\small\item\em Enables telemetry and sets the adaptive quantization display mode. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS}~(15)
+\begin{DoxyCompactList}\small\item\em Enables telemetry and sets the bitstream breakdown visualization mode. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Typedefs}
+\begin{DoxyCompactItemize}
+\item 
+typedef void($\ast$ {\bf th\_\-stripe\_\-decoded\_\-func} )(void $\ast$\_\-ctx, {\bf th\_\-ycbcr\_\-buffer} \_\-buf, int \_\-yfrag0, int \_\-yfrag\_\-end)
+\begin{DoxyCompactList}\small\item\em A callback function for striped decode. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\begin{Indent}{\bf Decoder state}\par
+{\em \label{_amgrp20ad7456b6a1ebc1cb57f3e51d4d7bc3}
+The following data structures are opaque, and their contents are not publicly defined by this API.
+
+Referring to their internals directly is unsupported, and may break without warning. }\begin{DoxyCompactItemize}
+\item 
+typedef struct {\bf th\_\-dec\_\-ctx} {\bf th\_\-dec\_\-ctx}
+\begin{DoxyCompactList}\small\item\em The decoder context. \item\end{DoxyCompactList}\item 
+typedef struct {\bf th\_\-setup\_\-info} {\bf th\_\-setup\_\-info}
+\begin{DoxyCompactList}\small\item\em Setup information. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Functions}
+\begin{Indent}{\bf Functions for decoding}\par
+{\em \label{_amgrp9d29c94aa62f20426aa5ff062c7daedd}
+You must link to {\ttfamily libtheoradec} if you use any of the functions in this section.
+
+The functions are listed in the order they are used in a typical decode. The basic steps are:
+\begin{DoxyItemize}
+\item Parse the header packets by repeatedly calling \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50}.
+\item Allocate a \doxyref{th\_\-dec\_\-ctx}{p.}{theoradec_8h_a843d70bb02563885a8d54b9c1a781729} handle with \doxyref{th\_\-decode\_\-alloc()}{p.}{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}.
+\item Call \doxyref{th\_\-setup\_\-free()}{p.}{group__decfuncs_gadef55431b68aaa59d0d7b32b2f118f27} to free any memory used for codec setup information.
+\item Perform any additional decoder configuration with \doxyref{th\_\-decode\_\-ctl()}{p.}{group__decfuncs_ga1a8051958d75b1012573b6e3c8f670e1}.
+\item For each video data packet:
+\begin{DoxyItemize}
+\item Submit the packet to the decoder via \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}.
+\item Retrieve the uncompressed video data via \doxyref{th\_\-decode\_\-ycbcr\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb}.
+\end{DoxyItemize}
+\item Call \doxyref{th\_\-decode\_\-free()}{p.}{group__decfuncs_gafb6684ad8ba507b71112bc9de148e7d0} to release all decoder memory. 
+\end{DoxyItemize}}\begin{DoxyCompactItemize}
+\item 
+int {\bf th\_\-decode\_\-headerin} ({\bf th\_\-info} $\ast$\_\-info, {\bf th\_\-comment} $\ast$\_\-tc, {\bf th\_\-setup\_\-info} $\ast$$\ast$\_\-setup, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Decodes the header packets of a Theora stream. \item\end{DoxyCompactList}\item 
+{\bf th\_\-dec\_\-ctx} $\ast$ {\bf th\_\-decode\_\-alloc} (const {\bf th\_\-info} $\ast$\_\-info, const {\bf th\_\-setup\_\-info} $\ast$\_\-setup)
+\begin{DoxyCompactList}\small\item\em Allocates a decoder instance. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-setup\_\-free} ({\bf th\_\-setup\_\-info} $\ast$\_\-setup)
+\begin{DoxyCompactList}\small\item\em Releases all storage used for the decoder setup information. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-decode\_\-ctl} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, int \_\-req, void $\ast$\_\-buf, size\_\-t \_\-buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Decoder control function. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-decode\_\-packetin} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, const ogg\_\-packet $\ast$\_\-op, ogg\_\-int64\_\-t $\ast$\_\-granpos)
+\begin{DoxyCompactList}\small\item\em Submits a packet containing encoded video data to the decoder. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-decode\_\-ycbcr\_\-out} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec, {\bf th\_\-ycbcr\_\-buffer} \_\-ycbcr)
+\begin{DoxyCompactList}\small\item\em Outputs the next available frame of decoded Y'CbCr data. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-decode\_\-free} ({\bf th\_\-dec\_\-ctx} $\ast$\_\-dec)
+\begin{DoxyCompactList}\small\item\em Frees an allocated decoder instance. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+
+
+\subsection{Detailed Description}
+The {\ttfamily libtheoradec} C decoding API. 
+
+\subsection{Define Documentation}
+\index{theoradec.h@{theoradec.h}!\_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-@{\_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-}}
+\index{\_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-@{\_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-}!theoradec.h@{theoradec.h}}
+\subsubsection[{\_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-O\_\-THEORA\_\-THEORADEC\_\-H\_\-~(1)}\label{theoradec_8h_a0d78767a326c34dbf84d5b845cba7b4a}
+\index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX@{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}}
+\index{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX@{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX~(1)}\label{theoradec_8h_ab31f251c9319f2140d247585d30b3d07}
+
+
+Gets the maximum post-\/processing level. The decoder supports a post-\/processing filter that can improve the appearance of the decoded images. This returns the highest level setting for this post-\/processor, corresponding to maximum improvement and computational expense.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\rightarrow$} {\em \_\-buf}]int: The maximum post-\/processing level. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-GRANPOS@{TH\_\-DECCTL\_\-SET\_\-GRANPOS}}
+\index{TH\_\-DECCTL\_\-SET\_\-GRANPOS@{TH\_\-DECCTL\_\-SET\_\-GRANPOS}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-GRANPOS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-GRANPOS~(5)}\label{theoradec_8h_a1e870c654d35394f0d490045df04e0f5}
+
+
+Sets the granule position. Call this after a seek, before decoding the first frame, to ensure that the proper granule position is returned for all subsequent frames. If you track timestamps yourself and do not use the granule position returned by the decoder, then you need not call this function.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily ogg\_\-int64\_\-t}: The granule position of the next frame. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(ogg\_\-int64\_\-t)}, or the granule position is negative. \end{DoxyRetVals}
+\index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-PPLEVEL@{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}}
+\index{TH\_\-DECCTL\_\-SET\_\-PPLEVEL@{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-PPLEVEL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-PPLEVEL~(3)}\label{theoradec_8h_a87774c35e1a755a84e2d705b38ebef0d}
+
+
+Sets the post-\/processing level. By default, post-\/processing is disabled.
+
+Sets the level of post-\/processing to use when decoding the compressed stream. This must be a value between zero (off) and the maximum returned by TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]int: The new post-\/processing level. 0 to disable; larger values use more CPU. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}, or the post-\/processing level is out of bounds. The maximum post-\/processing level may be implementation-\/specific, and can be obtained via \doxyref{TH\_\-DECCTL\_\-GET\_\-PPLEVEL\_\-MAX}{p.}{theoradec_8h_ab31f251c9319f2140d247585d30b3d07}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB@{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}}
+\index{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB@{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-STRIPE\_\-CB~(7)}\label{theoradec_8h_ac95cc9e109474b0fa4bb920ab2cfdf1e}
+
+
+Sets the striped decode callback function. If set, this function will be called as each piece of a frame is fully decoded in \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}. You can pass in a \doxyref{th\_\-stripe\_\-callback}{p.}{structth__stripe__callback} with \doxyref{th\_\-stripe\_\-callback::stripe\_\-decoded}{p.}{structth__stripe__callback_a977c725680a37e3446e459f063b1f4a5} set to {\ttfamily NULL} to disable the callbacks at any point. Enabling striped decode does not prevent you from calling \doxyref{th\_\-decode\_\-ycbcr\_\-out()}{p.}{group__decfuncs_gaa9cc8af63fa8540e0fc95572f259cdcb} after the frame is fully decoded.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]\doxyref{th\_\-stripe\_\-callback}{p.}{structth__stripe__callback}: The callback parameters. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-dec\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(th\_\-stripe\_\-callback)}. \end{DoxyRetVals}
+\index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS}}
+\index{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-BITS~(15)}\label{theoradec_8h_a7f43fec07486f8a5f00e92aab7d44a25}
+
+
+Enables telemetry and sets the bitstream breakdown visualization mode. \index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE}}
+\index{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MBMODE~(9)}\label{theoradec_8h_a8d5e0b9b4c8898f93f241acbeb7e7ffb}
+
+
+Enables telemetry and sets the macroblock display mode. \index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV}}
+\index{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-MV~(11)}\label{theoradec_8h_a829285a03d24832c583f33c6357df8aa}
+
+
+Enables telemetry and sets the motion vector display mode. \index{theoradec.h@{theoradec.h}!TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI}}
+\index{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI@{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI}!theoradec.h@{theoradec.h}}
+\subsubsection[{TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-DECCTL\_\-SET\_\-TELEMETRY\_\-QI~(13)}\label{theoradec_8h_ae3e2f7674ad92fe67b63915d48c9df5b}
+
+
+Enables telemetry and sets the adaptive quantization display mode. 
+
+\subsection{Typedef Documentation}
+\index{theoradec.h@{theoradec.h}!th\_\-dec\_\-ctx@{th\_\-dec\_\-ctx}}
+\index{th\_\-dec\_\-ctx@{th\_\-dec\_\-ctx}!theoradec.h@{theoradec.h}}
+\subsubsection[{th\_\-dec\_\-ctx}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf th\_\-dec\_\-ctx} {\bf th\_\-dec\_\-ctx}}\label{theoradec_8h_a843d70bb02563885a8d54b9c1a781729}
+
+
+The decoder context. \index{theoradec.h@{theoradec.h}!th\_\-setup\_\-info@{th\_\-setup\_\-info}}
+\index{th\_\-setup\_\-info@{th\_\-setup\_\-info}!theoradec.h@{theoradec.h}}
+\subsubsection[{th\_\-setup\_\-info}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf th\_\-setup\_\-info} {\bf th\_\-setup\_\-info}}\label{theoradec_8h_ab71cd2657455cc27d6c0127c66a89f28}
+
+
+Setup information. This contains auxiliary information (Huffman tables and quantization parameters) decoded from the setup header by \doxyref{th\_\-decode\_\-headerin()}{p.}{group__decfuncs_ga006d01d36fbe64768c571e6a12b7fc50} to be passed to \doxyref{th\_\-decode\_\-alloc()}{p.}{group__decfuncs_ga0ef07a9a97849054aa606c595a2d807e}. It can be re-\/used to initialize any number of decoders, and can be freed via \doxyref{th\_\-setup\_\-free()}{p.}{group__decfuncs_gadef55431b68aaa59d0d7b32b2f118f27} at any time. \index{theoradec.h@{theoradec.h}!th\_\-stripe\_\-decoded\_\-func@{th\_\-stripe\_\-decoded\_\-func}}
+\index{th\_\-stripe\_\-decoded\_\-func@{th\_\-stripe\_\-decoded\_\-func}!theoradec.h@{theoradec.h}}
+\subsubsection[{th\_\-stripe\_\-decoded\_\-func}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ {\bf th\_\-stripe\_\-decoded\_\-func})(void $\ast$\_\-ctx, {\bf th\_\-ycbcr\_\-buffer} \_\-buf, int \_\-yfrag0, int \_\-yfrag\_\-end)}\label{theoradec_8h_a25dfc8713157545abd81eda476ca4b54}
+
+
+A callback function for striped decode. This is a function pointer to an application-\/provided function that will be called each time a section of the image is fully decoded in \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}. This allows the application to process the section immediately, while it is still in cache. Note that the frame is decoded bottom to top, so {\itshape \_\-yfrag0\/} will steadily decrease with each call until it reaches 0, at which point the full frame is decoded. The number of fragment rows made available in each call depends on the pixel format and the number of post-\/processing filters enabled, and may not even be constant for the entire frame. If a non-\/{\ttfamily NULL} {\itshape \_\-granpos\/} pointer is passed to \doxyref{th\_\-decode\_\-packetin()}{p.}{group__decfuncs_ga31c814bf09b2232aff69c57ae20f04eb}, the granule position for the frame will be stored in it before the first callback is made. If an entire frame is dropped (a 0-\/byte packet), then no callbacks will be made at all for that frame. 
+\begin{DoxyParams}{Parameters}
+\item[{\em \_\-ctx}]An application-\/provided context pointer. \item[{\em \_\-buf}]The image buffer for the decoded frame. \item[{\em \_\-yfrag0}]The Y coordinate of the first row of 8x8 fragments decoded. Multiply this by 8 to obtain the pixel row number in the luma plane. If the chroma planes are subsampled in the Y direction, this will always be divisible by two. \item[{\em \_\-yfrag\_\-end}]The Y coordinate of the first row of 8x8 fragments past the newly decoded section. If the chroma planes are subsampled in the Y direction, this will always be divisible by two. I.e., this section contains fragment rows {\ttfamily {\itshape \_\-yfrag0\/} ...{\itshape \_\-yfrag\_\-end\/} -\/1}. \end{DoxyParams}
diff --git a/doc/libtheora/latex/theoraenc_8h.tex b/doc/libtheora/latex/theoraenc_8h.tex
new file mode 100644 (file)
index 0000000..d4c0b3c
--- /dev/null
@@ -0,0 +1,343 @@
+\section{theoraenc.h File Reference}
+\label{theoraenc_8h}\index{theoraenc.h@{theoraenc.h}}
+
+
+The {\ttfamily libtheoraenc} C encoding API.  
+{\ttfamily \#include $<$stddef.h$>$}\par
+{\ttfamily \#include $<$ogg/ogg.h$>$}\par
+{\ttfamily \#include \char`\"{}codec.h\char`\"{}}\par
+\subsection*{Defines}
+\begin{DoxyCompactItemize}
+\item 
+\#define {\bf \_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-}~(1)
+\end{DoxyCompactItemize}
+\begin{Indent}{\bf th\_\-encode\_\-ctl() codes}\par
+{\em \label{_amgrp652c8d6bf1cea216ce117704a398b5f8}
+\label{theoraenc_8h_encctlcodes}
+ These are the available request codes for \doxyref{th\_\-encode\_\-ctl()}{p.}{group__encfuncs_ga3a427f6514dfdc01ea72172c469d51d9}. By convention, these are even, to distinguish them from the \doxyref{decoder control codes}{p.}{theoradec_8h_decctlcodes}. Keep any experimental or vendor-\/specific values above {\ttfamily 0x8000}. }\begin{DoxyCompactItemize}
+\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES}~(0)
+\begin{DoxyCompactList}\small\item\em Sets the Huffman tables to use. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}~(2)
+\begin{DoxyCompactList}\small\item\em Sets the quantization parameters to use. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}~(4)
+\begin{DoxyCompactList}\small\item\em Sets the maximum distance between key frames. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}~(10)
+\begin{DoxyCompactList}\small\item\em Disables any encoder features that would prevent lossless transcoding back to VP3. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}~(12)
+\begin{DoxyCompactList}\small\item\em Gets the maximum speed level. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}~(14)
+\begin{DoxyCompactList}\small\item\em Sets the speed level. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-GET\_\-SPLEVEL}~(16)
+\begin{DoxyCompactList}\small\item\em Gets the current speed level. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT}~(18)
+\begin{DoxyCompactList}\small\item\em Sets the number of duplicates of the next frame to produce. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}~(20)
+\begin{DoxyCompactList}\small\item\em Modifies the default bitrate management behavior. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER}~(22)
+\begin{DoxyCompactList}\small\item\em Sets the size of the bitrate management bit reservoir as a function of number of frames. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-2PASS\_\-OUT}~(24)
+\begin{DoxyCompactList}\small\item\em Enable pass 1 of two-\/pass encoding mode and retrieve the first pass metrics. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-2PASS\_\-IN}~(26)
+\begin{DoxyCompactList}\small\item\em Submits two-\/pass encoding metric data collected the first encoding pass to the second pass. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-QUALITY}~(28)
+\begin{DoxyCompactList}\small\item\em Sets the current encoding quality. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-ENCCTL\_\-SET\_\-BITRATE}~(30)
+\begin{DoxyCompactList}\small\item\em Sets the current encoding bitrate. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\begin{Indent}{\bf TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS flags}\par
+{\em \label{_amgrp6d70796e675cce22589d15a73cb3a16b}
+\label{theoraenc_8h_ratectlflags}
+ These are the flags available for use with \doxyref{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}{p.}{theoraenc_8h_a026502e08fbe1af0a1063f39bd18129c}. }\begin{DoxyCompactItemize}
+\item 
+\#define {\bf TH\_\-RATECTL\_\-DROP\_\-FRAMES}~(0x1)
+\begin{DoxyCompactList}\small\item\em Drop frames to keep within bitrate buffer constraints. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}~(0x2)
+\begin{DoxyCompactList}\small\item\em Ignore bitrate buffer overflows. \item\end{DoxyCompactList}\item 
+\#define {\bf TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW}~(0x4)
+\begin{DoxyCompactList}\small\item\em Ignore bitrate buffer underflows. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Typedefs}
+\begin{Indent}{\bf Encoder state}\par
+{\em \label{_amgrp4ebc85bd8522a8b6128225c02b31c8b7}
+The following data structure is opaque, and its contents are not publicly defined by this API.
+
+Referring to its internals directly is unsupported, and may break without warning. }\begin{DoxyCompactItemize}
+\item 
+typedef struct {\bf th\_\-enc\_\-ctx} {\bf th\_\-enc\_\-ctx}
+\begin{DoxyCompactList}\small\item\em The encoder context. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Functions}
+\begin{Indent}{\bf Functions for encoding}\par
+{\em \label{_amgrpc58fb8743a7ca83eb895d57e29e032c8}
+You must link to {\ttfamily libtheoraenc} and {\ttfamily libtheoradec} if you use any of the functions in this section.
+
+The functions are listed in the order they are used in a typical encode. The basic steps are:
+\begin{DoxyItemize}
+\item Fill in a \doxyref{th\_\-info}{p.}{structth__info} structure with details on the format of the video you wish to encode.
+\item Allocate a \doxyref{th\_\-enc\_\-ctx}{p.}{theoraenc_8h_af5cc40472b925456d42526a035d66edd} handle with \doxyref{th\_\-encode\_\-alloc()}{p.}{group__encfuncs_gaa91e47bc9dd5f6ee52045bd7b815e5a7}.
+\item Perform any additional encoder configuration required with \doxyref{th\_\-encode\_\-ctl()}{p.}{group__encfuncs_ga3a427f6514dfdc01ea72172c469d51d9}.
+\item Repeatedly call \doxyref{th\_\-encode\_\-flushheader()}{p.}{group__encfuncs_ga9439d61b566039d194ff782681fbc408} to retrieve all the header packets.
+\item For each uncompressed frame:
+\begin{DoxyItemize}
+\item Submit the uncompressed frame via \doxyref{th\_\-encode\_\-ycbcr\_\-in()}{p.}{group__encfuncs_gadbe7dd66b411c2d61ab8153c15308750}
+\item Repeatedly call \doxyref{th\_\-encode\_\-packetout()}{p.}{group__encfuncs_ga96d8ac1dda53187455352f99bbb5b04b} to retrieve any video data packets that are ready.
+\end{DoxyItemize}
+\item Call \doxyref{th\_\-encode\_\-free()}{p.}{group__encfuncs_ga36b23d216532231925c4107894204680} to release all encoder memory. 
+\end{DoxyItemize}}\begin{DoxyCompactItemize}
+\item 
+{\bf th\_\-enc\_\-ctx} $\ast$ {\bf th\_\-encode\_\-alloc} (const {\bf th\_\-info} $\ast$\_\-info)
+\begin{DoxyCompactList}\small\item\em Allocates an encoder instance. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-encode\_\-ctl} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, int \_\-req, void $\ast$\_\-buf, size\_\-t \_\-buf\_\-sz)
+\begin{DoxyCompactList}\small\item\em Encoder control function. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-encode\_\-flushheader} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, {\bf th\_\-comment} $\ast$\_\-comments, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Outputs the next header packet. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-encode\_\-ycbcr\_\-in} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, {\bf th\_\-ycbcr\_\-buffer} \_\-ycbcr)
+\begin{DoxyCompactList}\small\item\em Submits an uncompressed frame to the encoder. \item\end{DoxyCompactList}\item 
+int {\bf th\_\-encode\_\-packetout} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc, int \_\-last, ogg\_\-packet $\ast$\_\-op)
+\begin{DoxyCompactList}\small\item\em Retrieves encoded video data packets. \item\end{DoxyCompactList}\item 
+void {\bf th\_\-encode\_\-free} ({\bf th\_\-enc\_\-ctx} $\ast$\_\-enc)
+\begin{DoxyCompactList}\small\item\em Frees an allocated encoder instance. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+\end{Indent}
+\subsection*{Variables}
+\begin{DoxyCompactItemize}
+\item 
+const {\bf th\_\-quant\_\-info} {\bf TH\_\-VP31\_\-QUANT\_\-INFO}
+\begin{DoxyCompactList}\small\item\em The quantization parameters used by VP3. \item\end{DoxyCompactList}\item 
+const {\bf th\_\-huff\_\-code} {\bf TH\_\-VP31\_\-HUFF\_\-CODES} [TH\_\-NHUFFMAN\_\-TABLES][TH\_\-NDCT\_\-TOKENS]
+\begin{DoxyCompactList}\small\item\em The Huffman tables used by VP3. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+The {\ttfamily libtheoraenc} C encoding API. 
+
+\subsection{Define Documentation}
+\index{theoraenc.h@{theoraenc.h}!\_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-@{\_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-}}
+\index{\_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-@{\_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{\_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-}]{\setlength{\rightskip}{0pt plus 5cm}\#define \_\-O\_\-THEORA\_\-THEORAENC\_\-H\_\-~(1)}\label{theoraenc_8h_ab915dd90f069a2431454fd62365e9381}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-2PASS\_\-IN@{TH\_\-ENCCTL\_\-2PASS\_\-IN}}
+\index{TH\_\-ENCCTL\_\-2PASS\_\-IN@{TH\_\-ENCCTL\_\-2PASS\_\-IN}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-2PASS\_\-IN}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-2PASS\_\-IN~(26)}\label{theoraenc_8h_a4a84f982cdd9a3e3c803a29bbde9df0b}
+
+
+Submits two-\/pass encoding metric data collected the first encoding pass to the second pass. The first call must be made before the first frame is encoded, and a target bitrate must have already been specified to the encoder. It sets the encoder to pass 2 mode implicitly; this cannot be disabled. The encoder may require reading data from some or all of the frames in advance, depending on, e.g., the reservoir size used in the second pass. You must call this function repeatedly before each frame to provide data until either a) it fails to consume all of the data presented or b) all of the pass 1 data has been consumed. In the first case, you must save the remaining data to be presented after the next frame. You can call this function with a NULL argument to get an upper bound on the number of bytes that will be required before the next frame.
+
+When pass 2 is first enabled, the default bit reservoir is set to the entire file; this gives maximum flexibility but can lead to very high peak rates. You can subsequently set it to another value with \doxyref{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER}{p.}{theoraenc_8h_aaefb515876b2a180ad5c3120fc584a52} (e.g., to set it to the keyframe interval for non-\/live streaming), however, you may then need to provide more data before the next frame.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily char[]}: A buffer containing the data returned by \doxyref{TH\_\-ENCCTL\_\-2PASS\_\-OUT}{p.}{theoraenc_8h_ac3751b9c3838888ec2e3f0b0d2823282} in pass 1. You may pass {\ttfamily NULL} for {\itshape \_\-buf\/} to return an upper bound on the number of additional bytes needed before the next frame. The summary data returned at the end of pass 1 must be at the head of the buffer on the first call with a non-\/{\ttfamily NULL} {\itshape \_\-buf\/}, and the placeholder data returned at the start of pass 1 should be omitted. After each call you should advance this buffer by the number of bytes consumed. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em $>$0}]The number of bytes of metric data required/consumed. \item[{\em 0}]No more data is required before the next frame. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]No target bitrate has been set, or the first call was made after the first frame was submitted for encoding. \item[{\em TH\_\-ENOTFORMAT}]The data did not appear to be pass 1 from a compatible implementation of this library. \item[{\em TH\_\-EBADHEADER}]The data was invalid; this may be returned when attempting to read an aborted pass 1 file that still has the placeholder data in place of the summary data. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-2PASS\_\-OUT@{TH\_\-ENCCTL\_\-2PASS\_\-OUT}}
+\index{TH\_\-ENCCTL\_\-2PASS\_\-OUT@{TH\_\-ENCCTL\_\-2PASS\_\-OUT}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-2PASS\_\-OUT}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-2PASS\_\-OUT~(24)}\label{theoraenc_8h_ac3751b9c3838888ec2e3f0b0d2823282}
+
+
+Enable pass 1 of two-\/pass encoding mode and retrieve the first pass metrics. Pass 1 mode must be enabled before the first frame is encoded, and a target bitrate must have already been specified to the encoder. Although this does not have to be the exact rate that will be used in the second pass, closer values may produce better results. The first call returns the size of the two-\/pass header data, along with some placeholder content, and sets the encoder into pass 1 mode implicitly. This call sets the encoder to pass 1 mode implicitly. Then, a subsequent call must be made after each call to \doxyref{th\_\-encode\_\-ycbcr\_\-in()}{p.}{group__encfuncs_gadbe7dd66b411c2d61ab8153c15308750} to retrieve the metrics for that frame. An additional, final call must be made to retrieve the summary data, containing such information as the total number of frames, etc. This must be stored in place of the placeholder data that was returned in the first call, before the frame metrics data. All of this data must be presented back to the encoder during pass 2 using \doxyref{TH\_\-ENCCTL\_\-2PASS\_\-IN}{p.}{theoraenc_8h_a4a84f982cdd9a3e3c803a29bbde9df0b}.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\rightarrow$} {\em $<$tt$>$char}]$\ast$\_\-buf: Returns a pointer to internal storage containing the two pass metrics data. This storage is only valid until the next call, or until the encoder context is freed, and must be copied by the application. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em $>$=0}]The number of bytes of metric data available in the returned buffer. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(char $\ast$)}, no target bitrate has been set, or the first call was made after the first frame was submitted for encoding. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-GET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL}}
+\index{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-GET\_\-SPLEVEL~(16)}\label{theoraenc_8h_a114b7c552f50b7b8d881a39489af1f61}
+
+
+Gets the current speed level. The default speed level may vary according to encoder implementation, but if this control code is not supported (it returns \doxyref{TH\_\-EIMPL}{p.}{codec_8h_a921c47accc17841f220af5a6afb79efe}), the default may be assumed to be the slowest available speed (0). The maximum encoding speed level may be implementation-\/ and encoding mode-\/specific, and can be obtained via \doxyref{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}{p.}{theoraenc_8h_a9baf5bdd206e80c78a8fd44687e89783}.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\rightarrow$} {\em \_\-buf}]{\ttfamily int}: The current encoding speed level. 0 is slowest, larger values use less CPU. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}}
+\index{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX@{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX~(12)}\label{theoraenc_8h_a9baf5bdd206e80c78a8fd44687e89783}
+
+
+Gets the maximum speed level. Higher speed levels favor quicker encoding over better quality per bit. Depending on the encoding mode, and the internal algorithms used, quality may actually improve, but in this case bitrate will also likely increase. In any case, overall rate/distortion performance will probably decrease. The maximum value, and the meaning of each value, may change depending on the current encoding mode (VBR vs. constant quality, etc.).
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\rightarrow$} {\em \_\-buf}]{\ttfamily int}: The maximum encoding speed level. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-BITRATE@{TH\_\-ENCCTL\_\-SET\_\-BITRATE}}
+\index{TH\_\-ENCCTL\_\-SET\_\-BITRATE@{TH\_\-ENCCTL\_\-SET\_\-BITRATE}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-BITRATE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-BITRATE~(30)}\label{theoraenc_8h_a9b969df55ecad1acd1ae207fad42592e}
+
+
+Sets the current encoding bitrate. Once a bitrate is set, the encoder must use a rate-\/controlled mode for all future frames (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target bitrate encoded in them will be updated. Due to the buffer delay, the exact bitrate of each section of the encode is not guaranteed. The encoder may have already used more bits than allowed for the frames it has encoded, expecting to make them up in future frames, or it may have used fewer, holding the excess in reserve. The exact transition between the two bitrates is not well-\/defined by this API, but may be affected by flags set with \doxyref{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}{p.}{theoraenc_8h_a026502e08fbe1af0a1063f39bd18129c}. After a number of frames equal to the buffer delay, one may expect further output to average at the target bitrate.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily long}: The new target bitrate, in bits per second. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]The target bitrate was not positive. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT@{TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT}}
+\index{TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT@{TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-DUP\_\-COUNT~(18)}\label{theoraenc_8h_a8bb9b05471c42a09f8684a2583b8a1df}
+
+
+Sets the number of duplicates of the next frame to produce. Although libtheora can encode duplicate frames very cheaply, it costs some amount of CPU to detect them, and a run of duplicates cannot span a keyframe boundary. This control code tells the encoder to produce the specified number of extra duplicates of the next frame. This allows the encoder to make smarter keyframe placement decisions and rate control decisions, and reduces CPU usage as well, when compared to just submitting the same frame for encoding multiple times. This setting only applies to the next frame submitted for encoding. You MUST call \doxyref{th\_\-encode\_\-packetout()}{p.}{group__encfuncs_ga96d8ac1dda53187455352f99bbb5b04b} repeatedly until it returns 0, or the extra duplicate frames will be lost.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: The number of duplicates to produce. If this is negative or zero, no duplicates will be produced. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}, or the number of duplicates is greater than or equal to the maximum keyframe interval. In the latter case, NO duplicate frames will be produced. You must ensure that the maximum keyframe interval is set larger than the maximum number of duplicates you will ever wish to insert prior to encoding. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES@{TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES}}
+\index{TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES@{TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-HUFFMAN\_\-CODES~(0)}\label{theoraenc_8h_a0165348788e560a19b7c61ae8f0c2283}
+
+
+Sets the Huffman tables to use. The tables are copied, not stored by reference, so they can be freed after this call. {\ttfamily NULL} may be specified to revert to the default tables.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily \doxyref{th\_\-huff\_\-code}{p.}{structth__huff__code}[\doxyref{TH\_\-NHUFFMAN\_\-TABLES}{p.}{codec_8h_a49bf449eae33c5320f0c308f32c6ae42}][\doxyref{TH\_\-NDCT\_\-TOKENS}{p.}{codec_8h_a2a44f48084e76a58cae48fb5d47cd422}]} \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]Encoding has already begun or one or more of the given tables is not full or prefix-\/free, {\itshape \_\-buf\/} is {\ttfamily NULL} and {\itshape \_\-buf\_\-sz\/} is not zero, or {\itshape \_\-buf\/} is non-\/{\ttfamily NULL} and {\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(\doxyref{th\_\-huff\_\-code}{p.}{structth__huff__code})$\ast$\doxyref{TH\_\-NHUFFMAN\_\-TABLES}{p.}{codec_8h_a49bf449eae33c5320f0c308f32c6ae42}$\ast$\doxyref{TH\_\-NDCT\_\-TOKENS}{p.}{codec_8h_a2a44f48084e76a58cae48fb5d47cd422}}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE@{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}}
+\index{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE@{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-KEYFRAME\_\-FREQUENCY\_\-FORCE~(4)}\label{theoraenc_8h_a27e755e15b4b5604c54974b304037a49}
+
+
+Sets the maximum distance between key frames. This can be changed during an encode, but will be bounded by {\ttfamily 1$<$$<$\doxyref{th\_\-info::keyframe\_\-granule\_\-shift}{p.}{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed}}. If it is set before encoding begins, \doxyref{th\_\-info::keyframe\_\-granule\_\-shift}{p.}{structth__info_a693ca4ab11fbc0c3f32594b4bb8766ed} will be enlarged appropriately.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily ogg\_\-uint32\_\-t}: The maximum distance between key frames. \item[\mbox{$\rightarrow$} {\em \_\-buf}]{\ttfamily ogg\_\-uint32\_\-t}: The actual maximum distance set. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(ogg\_\-uint32\_\-t)}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-QUALITY@{TH\_\-ENCCTL\_\-SET\_\-QUALITY}}
+\index{TH\_\-ENCCTL\_\-SET\_\-QUALITY@{TH\_\-ENCCTL\_\-SET\_\-QUALITY}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-QUALITY}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-QUALITY~(28)}\label{theoraenc_8h_aac087983fa951b9148c9db6bc2e81ef4}
+
+
+Sets the current encoding quality. This is only valid so long as no bitrate has been specified, either through the \doxyref{th\_\-info}{p.}{structth__info} struct used to initialize the encoder or through \doxyref{TH\_\-ENCCTL\_\-SET\_\-BITRATE}{p.}{theoraenc_8h_a9b969df55ecad1acd1ae207fad42592e} (this restriction may be relaxed in a future version). If it is set before the headers are emitted, the target quality encoded in them will be updated.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: The new target quality, in the range 0...63, inclusive. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em 0}]Success. \item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]A target bitrate has already been specified, or the quality index was not in the range 0...63. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS@{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}}
+\index{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS@{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-QUANT\_\-PARAMS~(2)}\label{theoraenc_8h_a3befcdd66678f8d27034f9c4b16d1b9c}
+
+
+Sets the quantization parameters to use. The parameters are copied, not stored by reference, so they can be freed after this call. {\ttfamily NULL} may be specified to revert to the default parameters.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]\doxyref{th\_\-quant\_\-info}{p.}{structth__quant__info} \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]Encoding has already begun, {\itshape \_\-buf\/} is {\ttfamily NULL} and {\itshape \_\-buf\_\-sz\/} is not zero, or {\itshape \_\-buf\/} is non-\/{\ttfamily NULL} and {\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(\doxyref{th\_\-quant\_\-info}{p.}{structth__quant__info})}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER@{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER}}
+\index{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER@{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-RATE\_\-BUFFER~(22)}\label{theoraenc_8h_aaefb515876b2a180ad5c3120fc584a52}
+
+
+Sets the size of the bitrate management bit reservoir as a function of number of frames. The reservoir size affects how quickly bitrate management reacts to instantaneous changes in the video complexity. Larger reservoirs react more slowly, and provide better overall quality, but require more buffering by a client, adding more latency to live streams. By default, libtheora sets the reservoir to the maximum distance between keyframes, subject to a minimum and maximum limit. This call may be used to increase or decrease the reservoir, increasing or decreasing the allowed temporary variance in bitrate. An implementation may impose some limits on the size of a reservoir it can handle, in which case the actual reservoir size may not be exactly what was requested. The actual value set will be returned.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: Requested size of the reservoir measured in frames. \item[\mbox{$\rightarrow$} {\em \_\-buf}]{\ttfamily int}: The actual size of the reservoir set. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}, or rate control is not enabled. The buffer has an implementation defined minimum and maximum size and the value in \_\-buf will be adjusted to match the actual value set. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS@{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}}
+\index{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS@{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-RATE\_\-FLAGS~(20)}\label{theoraenc_8h_a026502e08fbe1af0a1063f39bd18129c}
+
+
+Modifies the default bitrate management behavior. Use to allow or disallow frame dropping, and to enable or disable capping bit reservoir overflows and underflows. See \doxyref{the list of available flags}{p.}{theoraenc_8h_encctlcodes}. The flags are set by default to {\ttfamily \doxyref{TH\_\-RATECTL\_\-DROP\_\-FRAMES}{p.}{theoraenc_8h_a3e7fab53b902b54135522ba286f45e33}$|$\doxyref{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}{p.}{theoraenc_8h_a32f9983b344a431334493cefb0b9337c}}.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: Any combination of \doxyref{the available flags}{p.}{theoraenc_8h_ratectlflags}:
+\begin{DoxyItemize}
+\item \doxyref{TH\_\-RATECTL\_\-DROP\_\-FRAMES}{p.}{theoraenc_8h_a3e7fab53b902b54135522ba286f45e33}: Enable frame dropping.
+\item \doxyref{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}{p.}{theoraenc_8h_a32f9983b344a431334493cefb0b9337c}: Don't bank excess bits for later use.
+\item \doxyref{TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW}{p.}{theoraenc_8h_ad0d62d9dce542caf5296b03b97e020a6}: Don't try to make up shortfalls later. 
+\end{DoxyItemize}\end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)} or rate control is not enabled. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}}
+\index{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL@{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-SPLEVEL}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-SPLEVEL~(14)}\label{theoraenc_8h_abd9fbcb6a25a77d991d3620164fe59d6}
+
+
+Sets the speed level. The current speed level may be retrieved using \doxyref{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL}{p.}{theoraenc_8h_a114b7c552f50b7b8d881a39489af1f61}.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: The new encoding speed level. 0 is slowest, larger values use less CPU. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}, or the encoding speed level is out of bounds. The maximum encoding speed level may be implementation-\/ and encoding mode-\/specific, and can be obtained via \doxyref{TH\_\-ENCCTL\_\-GET\_\-SPLEVEL\_\-MAX}{p.}{theoraenc_8h_a9baf5bdd206e80c78a8fd44687e89783}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation in the current encoding mode. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE@{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}}
+\index{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE@{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-ENCCTL\_\-SET\_\-VP3\_\-COMPATIBLE~(10)}\label{theoraenc_8h_a382d685a39a34d8e6ba76b00d804efd8}
+
+
+Disables any encoder features that would prevent lossless transcoding back to VP3. This primarily means disabling block-\/adaptive quantization and always coding all four luma blocks in a macro block when 4MV is used. It also includes using the VP3 quantization tables and Huffman codes; if you set them explicitly after calling this function, the resulting stream will not be VP3-\/compatible. If you enable VP3-\/compatibility when encoding 4:2:2 or 4:4:4 source material, or when using a picture region smaller than the full frame (e.g. a non-\/multiple-\/of-\/16 width or height), then non-\/VP3 bitstream features will still be disabled, but the stream will still not be VP3-\/compatible, as VP3 was not capable of encoding such formats. If you call this after encoding has already begun, then the quantization tables and codebooks cannot be changed, but the frame-\/level features will be enabled or disabled as requested.
+
+
+\begin{DoxyParams}{Parameters}
+\item[\mbox{$\leftarrow$} {\em \_\-buf}]{\ttfamily int}: a non-\/zero value to enable VP3 compatibility, or 0 to disable it (the default). \item[\mbox{$\rightarrow$} {\em \_\-buf}]{\ttfamily int}: 1 if all bitstream features required for VP3-\/compatibility could be set, and 0 otherwise. The latter will be returned if the pixel format is not 4:2:0, the picture region is smaller than the full frame, or if encoding has begun, preventing the quantization tables and codebooks from being set. \end{DoxyParams}
+
+\begin{DoxyRetVals}{Return values}
+\item[{\em TH\_\-EFAULT}]{\itshape \_\-enc\_\-ctx\/} or {\itshape \_\-buf\/} is {\ttfamily NULL}. \item[{\em TH\_\-EINVAL}]{\itshape \_\-buf\_\-sz\/} is not {\ttfamily sizeof(int)}. \item[{\em TH\_\-EIMPL}]Not supported by this implementation. \end{DoxyRetVals}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-RATECTL\_\-CAP\_\-OVERFLOW@{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}}
+\index{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW@{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-RATECTL\_\-CAP\_\-OVERFLOW}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-RATECTL\_\-CAP\_\-OVERFLOW~(0x2)}\label{theoraenc_8h_a32f9983b344a431334493cefb0b9337c}
+
+
+Ignore bitrate buffer overflows. If the encoder uses so few bits that the reservoir of available bits overflows, ignore the excess. The encoder will not try to use these extra bits in future frames. At high rates this may cause the result to be undersized, but allows a client to play the stream using a finite buffer; it should normally be enabled. \index{theoraenc.h@{theoraenc.h}!TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW@{TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW}}
+\index{TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW@{TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-RATECTL\_\-CAP\_\-UNDERFLOW~(0x4)}\label{theoraenc_8h_ad0d62d9dce542caf5296b03b97e020a6}
+
+
+Ignore bitrate buffer underflows. If the encoder uses so many bits that the reservoir of available bits underflows, ignore the deficit. The encoder will not try to make up these extra bits in future frames. At low rates this may cause the result to be oversized; it should normally be disabled. \index{theoraenc.h@{theoraenc.h}!TH\_\-RATECTL\_\-DROP\_\-FRAMES@{TH\_\-RATECTL\_\-DROP\_\-FRAMES}}
+\index{TH\_\-RATECTL\_\-DROP\_\-FRAMES@{TH\_\-RATECTL\_\-DROP\_\-FRAMES}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-RATECTL\_\-DROP\_\-FRAMES}]{\setlength{\rightskip}{0pt plus 5cm}\#define TH\_\-RATECTL\_\-DROP\_\-FRAMES~(0x1)}\label{theoraenc_8h_a3e7fab53b902b54135522ba286f45e33}
+
+
+Drop frames to keep within bitrate buffer constraints. This can have a severe impact on quality, but is the only way to ensure that bitrate targets are met at low rates during sudden bursts of activity. 
+
+\subsection{Typedef Documentation}
+\index{theoraenc.h@{theoraenc.h}!th\_\-enc\_\-ctx@{th\_\-enc\_\-ctx}}
+\index{th\_\-enc\_\-ctx@{th\_\-enc\_\-ctx}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{th\_\-enc\_\-ctx}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf th\_\-enc\_\-ctx} {\bf th\_\-enc\_\-ctx}}\label{theoraenc_8h_af5cc40472b925456d42526a035d66edd}
+
+
+The encoder context. 
+
+\subsection{Variable Documentation}
+\index{theoraenc.h@{theoraenc.h}!TH\_\-VP31\_\-HUFF\_\-CODES@{TH\_\-VP31\_\-HUFF\_\-CODES}}
+\index{TH\_\-VP31\_\-HUFF\_\-CODES@{TH\_\-VP31\_\-HUFF\_\-CODES}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-VP31\_\-HUFF\_\-CODES}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf th\_\-huff\_\-code} {\bf TH\_\-VP31\_\-HUFF\_\-CODES}[TH\_\-NHUFFMAN\_\-TABLES][TH\_\-NDCT\_\-TOKENS]}\label{theoraenc_8h_aee1f7cb1fa0d3b7cc1d4ca0f17e6ae5e}
+
+
+The Huffman tables used by VP3. \index{theoraenc.h@{theoraenc.h}!TH\_\-VP31\_\-QUANT\_\-INFO@{TH\_\-VP31\_\-QUANT\_\-INFO}}
+\index{TH\_\-VP31\_\-QUANT\_\-INFO@{TH\_\-VP31\_\-QUANT\_\-INFO}!theoraenc.h@{theoraenc.h}}
+\subsubsection[{TH\_\-VP31\_\-QUANT\_\-INFO}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf th\_\-quant\_\-info} {\bf TH\_\-VP31\_\-QUANT\_\-INFO}}\label{theoraenc_8h_a3b1b462989f4e7a5a98e6e697f1a7f7d}
+
+
+The quantization parameters used by VP3. 
\ No newline at end of file
index 45cb515..fe66a21 100644 (file)
@@ -13,9 +13,11 @@ LDADDDEC = ../lib/libtheoradec.la $(OGG_LIBS)
 LDADDENC = ../lib/libtheoraenc.la ../lib/libtheoradec.la $(OGG_LIBS)
 
 dump_video_SOURCES = dump_video.c
+EXTRA_dump_video_SOURCES = getopt.c getopt1.c getopt.h
 dump_video_LDADD = $(GETOPT_OBJS) $(LDADDDEC)
 
 dump_psnr_SOURCES = dump_psnr.c
+EXTRA_dump_psnr_SOURCES = getopt.c getopt1.c getopt.h
 dump_psnr_LDADD = $(GETOPT_OBJS) $(LDADDDEC) -lm
 
 player_example_SOURCES = player_example.c
@@ -23,6 +25,7 @@ player_example_CFLAGS = $(SDL_CFLAGS) $(OGG_CFLAGS) $(VORBIS_CFLAGS)
 player_example_LDADD = $(LDADDDEC) $(SDL_LIBS) $(VORBIS_LIBS) $(OSS_LIBS)
 
 encoder_example_SOURCES = encoder_example.c
+EXTRA_encoder_example_SOURCES = getopt.c getopt1.c getopt.h
 encoder_example_CFLAGS = $(OGG_CFLAGS) $(VORBIS_CFLAGS)
 encoder_example_LDADD = $(GETOPT_OBJS) $(LDADDENC) $(VORBIS_LIBS) $(VORBISENC_LIBS) -lm
 
diff --git a/examples/getopt.c b/examples/getopt.c
new file mode 100644 (file)
index 0000000..9bafa45
--- /dev/null
@@ -0,0 +1,1055 @@
+/* Getopt for GNU.
+   NOTE: getopt is now part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to drepper@gnu.org
+   before changing it!
+   Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001
+       Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+\f
+/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
+   Ditto for AIX 3.2 and <stdlib.h>.  */
+#ifndef _NO_PROTO
+# define _NO_PROTO
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#if !defined __STDC__ || !__STDC__
+/* This is a separate conditional since some stdc systems
+   reject `defined (const)'.  */
+# ifndef const
+#  define const
+# endif
+#endif
+
+#include <stdio.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#define GETOPT_INTERFACE_VERSION 2
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+# include <gnu-versions.h>
+# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+#  define ELIDE_CODE
+# endif
+#endif
+
+#ifndef ELIDE_CODE
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef __GNU_LIBRARY__
+/* Don't include stdlib.h for non-GNU C libraries because some of them
+   contain conflicting prototypes for getopt.  */
+# include <stdlib.h>
+# include <unistd.h>
+#endif /* GNU C library.  */
+
+#ifdef VMS
+# include <unixlib.h>
+# if HAVE_STRING_H - 0
+#  include <string.h>
+# endif
+#endif
+
+#ifndef _
+/* This is for other GNU distributions with internationalized messages.  */
+# if defined HAVE_LIBINTL_H || defined _LIBC
+#  include <libintl.h>
+#  ifndef _
+#   define _(msgid)    gettext (msgid)
+#  endif
+# else
+#  define _(msgid)     (msgid)
+# endif
+#endif
+
+/* This version of `getopt' appears to the caller like standard Unix `getopt'
+   but it behaves differently for the user, since it allows the user
+   to intersperse the options with the other arguments.
+
+   As `getopt' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Setting the environment variable POSIXLY_CORRECT disables permutation.
+   Then the behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* 1003.2 says this must be 1 before any call.  */
+int optind = 1;
+
+/* Formerly, initialization of getopt depended on optind==0, which
+   causes problems with re-calling getopt as programs generally don't
+   know that. */
+
+int __getopt_initialized;
+
+/* The next char to be scanned in the option-element
+   in which the last option character we returned was found.
+   This allows us to pick up the scan where we left off.
+
+   If this is zero, or a null string, it means resume the scan
+   by advancing to the next ARGV-element.  */
+
+static char *nextchar;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+int optopt = '?';
+
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+   If the caller did not specify anything,
+   the default is REQUIRE_ORDER if the environment variable
+   POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+   REQUIRE_ORDER means don't recognize them as options;
+   stop option processing when the first non-option is seen.
+   This is what Unix does.
+   This mode of operation is selected by either setting the environment
+   variable POSIXLY_CORRECT, or using `+' as the first character
+   of the list of option characters.
+
+   PERMUTE is the default.  We permute the contents of ARGV as we scan,
+   so that eventually all the non-options are at the end.  This allows options
+   to be given in any order, even with programs that were not written to
+   expect this.
+
+   RETURN_IN_ORDER is an option available to programs that were written
+   to expect options and other ARGV-elements in any order and that care about
+   the ordering of the two.  We describe each non-option ARGV-element
+   as if it were the argument of an option with character code 1.
+   Using `-' as the first character of the list of option characters
+   selects this mode of operation.
+
+   The special argument `--' forces an end of option-scanning regardless
+   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+   `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+
+static enum
+{
+  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+} ordering;
+
+/* Value of POSIXLY_CORRECT environment variable.  */
+static char *posixly_correct;
+\f
+#ifdef __GNU_LIBRARY__
+/* We want to avoid inclusion of string.h with non-GNU libraries
+   because there are many ways it can cause trouble.
+   On some systems, it contains special magic macros that don't work
+   in GCC.  */
+# include <string.h>
+# define my_index      strchr
+#else
+
+# if HAVE_STRING_H
+#  include <string.h>
+# else
+#  include <strings.h>
+# endif
+
+/* Avoid depending on library functions or files
+   whose names are inconsistent.  */
+
+#ifndef getenv
+extern char *getenv ();
+#endif
+
+static char *
+my_index (str, chr)
+     const char *str;
+     int chr;
+{
+  while (*str)
+    {
+      if (*str == chr)
+       return (char *) str;
+      str++;
+    }
+  return 0;
+}
+
+/* If using GCC, we can safely declare strlen this way.
+   If not using GCC, it is ok not to declare it.  */
+#ifdef __GNUC__
+/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
+   That was relevant to code that was here before.  */
+# if (!defined __STDC__ || !__STDC__) && !defined strlen
+/* gcc with -traditional declares the built-in strlen to return int,
+   and has done so at least since version 2.4.5. -- rms.  */
+extern int strlen (const char *);
+# endif /* not __STDC__ */
+#endif /* __GNUC__ */
+
+#endif /* not __GNU_LIBRARY__ */
+\f
+/* Handle permutation of arguments.  */
+
+/* Describe the part of ARGV that contains non-options that have
+   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
+   `last_nonopt' is the index after the last of them.  */
+
+static int first_nonopt;
+static int last_nonopt;
+
+#ifdef _LIBC
+/* Stored original parameters.
+   XXX This is no good solution.  We should rather copy the args so
+   that we can compare them later.  But we must not use malloc(3).  */
+extern int __libc_argc;
+extern char **__libc_argv;
+
+/* Bash 2.0 gives us an environment variable containing flags
+   indicating ARGV elements that should not be considered arguments.  */
+
+# ifdef USE_NONOPTION_FLAGS
+/* Defined in getopt_init.c  */
+extern char *__getopt_nonoption_flags;
+
+static int nonoption_flags_max_len;
+static int nonoption_flags_len;
+# endif
+
+# ifdef USE_NONOPTION_FLAGS
+#  define SWAP_FLAGS(ch1, ch2) \
+  if (nonoption_flags_len > 0)                                               \
+    {                                                                        \
+      char __tmp = __getopt_nonoption_flags[ch1];                            \
+      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];         \
+      __getopt_nonoption_flags[ch2] = __tmp;                                 \
+    }
+# else
+#  define SWAP_FLAGS(ch1, ch2)
+# endif
+#else  /* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif /* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.  */
+
+#if defined __STDC__ && __STDC__
+static void exchange (char **);
+#endif
+
+static void
+exchange (argv)
+     char **argv;
+{
+  int bottom = first_nonopt;
+  int middle = last_nonopt;
+  int top = optind;
+  char *tem;
+
+  /* Exchange the shorter segment with the far end of the longer segment.
+     That puts the shorter segment into the right place.
+     It leaves the longer segment in the right place overall,
+     but it consists of two parts that need to be swapped next.  */
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  /* First make sure the handling of the `__getopt_nonoption_flags'
+     string can work normally.  Our top argument must be in the range
+     of the string.  */
+  if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
+    {
+      /* We must extend the array.  The user plays games with us and
+        presents new arguments.  */
+      char *new_str = malloc (top + 1);
+      if (new_str == NULL)
+       nonoption_flags_len = nonoption_flags_max_len = 0;
+      else
+       {
+         memset (__mempcpy (new_str, __getopt_nonoption_flags,
+                            nonoption_flags_max_len),
+                 '\0', top + 1 - nonoption_flags_max_len);
+         nonoption_flags_max_len = top + 1;
+         __getopt_nonoption_flags = new_str;
+       }
+    }
+#endif
+
+  while (top > middle && middle > bottom)
+    {
+      if (top - middle > middle - bottom)
+       {
+         /* Bottom segment is the short one.  */
+         int len = middle - bottom;
+         register int i;
+
+         /* Swap it with the top part of the top segment.  */
+         for (i = 0; i < len; i++)
+           {
+             tem = argv[bottom + i];
+             argv[bottom + i] = argv[top - (middle - bottom) + i];
+             argv[top - (middle - bottom) + i] = tem;
+             SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+           }
+         /* Exclude the moved bottom segment from further swapping.  */
+         top -= len;
+       }
+      else
+       {
+         /* Top segment is the short one.  */
+         int len = top - middle;
+         register int i;
+
+         /* Swap it with the bottom part of the bottom segment.  */
+         for (i = 0; i < len; i++)
+           {
+             tem = argv[bottom + i];
+             argv[bottom + i] = argv[middle + i];
+             argv[middle + i] = tem;
+             SWAP_FLAGS (bottom + i, middle + i);
+           }
+         /* Exclude the moved top segment from further swapping.  */
+         bottom += len;
+       }
+    }
+
+  /* Update records for the slots the non-options now occupy.  */
+
+  first_nonopt += (optind - last_nonopt);
+  last_nonopt = optind;
+}
+
+/* Initialize the internal data when the first call is made.  */
+
+#if defined __STDC__ && __STDC__
+static const char *_getopt_initialize (int, char *const *, const char *);
+#endif
+static const char *
+_getopt_initialize (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  /* Start processing options with ARGV-element 1 (since ARGV-element 0
+     is the program name); the sequence of previously skipped
+     non-option ARGV-elements is empty.  */
+
+  first_nonopt = last_nonopt = optind;
+
+  nextchar = NULL;
+
+  posixly_correct = getenv ("POSIXLY_CORRECT");
+
+  /* Determine how to handle the ordering of options and nonoptions.  */
+
+  if (optstring[0] == '-')
+    {
+      ordering = RETURN_IN_ORDER;
+      ++optstring;
+    }
+  else if (optstring[0] == '+')
+    {
+      ordering = REQUIRE_ORDER;
+      ++optstring;
+    }
+  else if (posixly_correct != NULL)
+    ordering = REQUIRE_ORDER;
+  else
+    ordering = PERMUTE;
+
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+  if (posixly_correct == NULL
+      && argc == __libc_argc && argv == __libc_argv)
+    {
+      if (nonoption_flags_max_len == 0)
+       {
+         if (__getopt_nonoption_flags == NULL
+             || __getopt_nonoption_flags[0] == '\0')
+           nonoption_flags_max_len = -1;
+         else
+           {
+             const char *orig_str = __getopt_nonoption_flags;
+             int len = nonoption_flags_max_len = strlen (orig_str);
+             if (nonoption_flags_max_len < argc)
+               nonoption_flags_max_len = argc;
+             __getopt_nonoption_flags =
+               (char *) malloc (nonoption_flags_max_len);
+             if (__getopt_nonoption_flags == NULL)
+               nonoption_flags_max_len = -1;
+             else
+               memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+                       '\0', nonoption_flags_max_len - len);
+           }
+       }
+      nonoption_flags_len = nonoption_flags_max_len;
+    }
+  else
+    nonoption_flags_len = 0;
+#endif
+
+  return optstring;
+}
+\f
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns -1.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return '?' after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return '?'.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   The elements of ARGV aren't really const, because we permute them.
+   But we pretend they're const in the prototype to be compatible
+   with other systems.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.  */
+
+int
+_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+     const struct option *longopts;
+     int *longind;
+     int long_only;
+{
+  int print_errors = opterr;
+  if (optstring[0] == ':')
+    print_errors = 0;
+
+  if (argc < 1)
+    return -1;
+
+  optarg = NULL;
+
+  if (optind == 0 || !__getopt_initialized)
+    {
+      if (optind == 0)
+       optind = 1;     /* Don't scan ARGV[0], the program name.  */
+      optstring = _getopt_initialize (argc, argv, optstring);
+      __getopt_initialized = 1;
+    }
+
+  /* Test whether ARGV[optind] points to a non-option argument.
+     Either it does not have option syntax, or there is an environment flag
+     from the shell indicating it is not an option.  The later information
+     is only used when the used in the GNU libc.  */
+#if defined _LIBC && defined USE_NONOPTION_FLAGS
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0'              \
+                     || (optind < nonoption_flags_len                        \
+                         && __getopt_nonoption_flags[optind] == '1'))
+#else
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
+#endif
+
+  if (nextchar == NULL || *nextchar == '\0')
+    {
+      /* Advance to the next ARGV-element.  */
+
+      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+        moved back by the user (who may also have changed the arguments).  */
+      if (last_nonopt > optind)
+       last_nonopt = optind;
+      if (first_nonopt > optind)
+       first_nonopt = optind;
+
+      if (ordering == PERMUTE)
+       {
+         /* If we have just processed some options following some non-options,
+            exchange them so that the options come first.  */
+
+         if (first_nonopt != last_nonopt && last_nonopt != optind)
+           exchange ((char **) argv);
+         else if (last_nonopt != optind)
+           first_nonopt = optind;
+
+         /* Skip any additional non-options
+            and extend the range of non-options previously skipped.  */
+
+         while (optind < argc && NONOPTION_P)
+           optind++;
+         last_nonopt = optind;
+       }
+
+      /* The special ARGV-element `--' means premature end of options.
+        Skip it like a null option,
+        then exchange with previous non-options as if it were an option,
+        then skip everything else like a non-option.  */
+
+      if (optind != argc && !strcmp (argv[optind], "--"))
+       {
+         optind++;
+
+         if (first_nonopt != last_nonopt && last_nonopt != optind)
+           exchange ((char **) argv);
+         else if (first_nonopt == last_nonopt)
+           first_nonopt = optind;
+         last_nonopt = argc;
+
+         optind = argc;
+       }
+
+      /* If we have done all the ARGV-elements, stop the scan
+        and back over any non-options that we skipped and permuted.  */
+
+      if (optind == argc)
+       {
+         /* Set the next-arg-index to point at the non-options
+            that we previously skipped, so the caller will digest them.  */
+         if (first_nonopt != last_nonopt)
+           optind = first_nonopt;
+         return -1;
+       }
+
+      /* If we have come to a non-option and did not permute it,
+        either stop the scan or describe it to the caller and pass it by.  */
+
+      if (NONOPTION_P)
+       {
+         if (ordering == REQUIRE_ORDER)
+           return -1;
+         optarg = argv[optind++];
+         return 1;
+       }
+
+      /* We have found another option-ARGV-element.
+        Skip the initial punctuation.  */
+
+      nextchar = (argv[optind] + 1
+                 + (longopts != NULL && argv[optind][1] == '-'));
+    }
+
+  /* Decode the current option-ARGV-element.  */
+
+  /* Check whether the ARGV-element is a long option.
+
+     If long_only and the ARGV-element has the form "-f", where f is
+     a valid short option, don't consider it an abbreviated form of
+     a long option that starts with f.  Otherwise there would be no
+     way to give the -f short option.
+
+     On the other hand, if there's a long option "fubar" and
+     the ARGV-element is "-fu", do consider that an abbreviation of
+     the long option, just like "--fu", and not "-f" with arg "u".
+
+     This distinction seems to be the most useful approach.  */
+
+  if (longopts != NULL
+      && (argv[optind][1] == '-'
+         || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
+    {
+      char *nameend;
+      const struct option *p;
+      const struct option *pfound = NULL;
+      int exact = 0;
+      int ambig = 0;
+      int indfound = -1;
+      int option_index;
+
+      for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
+       /* Do nothing.  */ ;
+
+      /* Test all long options for either exact match
+        or abbreviated matches.  */
+      for (p = longopts, option_index = 0; p->name; p++, option_index++)
+       if (!strncmp (p->name, nextchar, nameend - nextchar))
+         {
+           if ((unsigned int) (nameend - nextchar)
+               == (unsigned int) strlen (p->name))
+             {
+               /* Exact match found.  */
+               pfound = p;
+               indfound = option_index;
+               exact = 1;
+               break;
+             }
+           else if (pfound == NULL)
+             {
+               /* First nonexact match found.  */
+               pfound = p;
+               indfound = option_index;
+             }
+           else if (long_only
+                    || pfound->has_arg != p->has_arg
+                    || pfound->flag != p->flag
+                    || pfound->val != p->val)
+             /* Second or later nonexact match found.  */
+             ambig = 1;
+         }
+
+      if (ambig && !exact)
+       {
+         if (print_errors)
+           fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+                    argv[0], argv[optind]);
+         nextchar += strlen (nextchar);
+         optind++;
+         optopt = 0;
+         return '?';
+       }
+
+      if (pfound != NULL)
+       {
+         option_index = indfound;
+         optind++;
+         if (*nameend)
+           {
+             /* Don't test has_arg with >, because some C compilers don't
+                allow it to be used on enums.  */
+             if (pfound->has_arg)
+               optarg = nameend + 1;
+             else
+               {
+                 if (print_errors)
+                   {
+                     if (argv[optind - 1][1] == '-')
+                       /* --option */
+                       fprintf (stderr,
+                                _("%s: option `--%s' doesn't allow an argument\n"),
+                                argv[0], pfound->name);
+                     else
+                       /* +option or -option */
+                       fprintf (stderr,
+                                _("%s: option `%c%s' doesn't allow an argument\n"),
+                                argv[0], argv[optind - 1][0], pfound->name);
+                   }
+
+                 nextchar += strlen (nextchar);
+
+                 optopt = pfound->val;
+                 return '?';
+               }
+           }
+         else if (pfound->has_arg == 1)
+           {
+             if (optind < argc)
+               optarg = argv[optind++];
+             else
+               {
+                 if (print_errors)
+                   fprintf (stderr,
+                          _("%s: option `%s' requires an argument\n"),
+                          argv[0], argv[optind - 1]);
+                 nextchar += strlen (nextchar);
+                 optopt = pfound->val;
+                 return optstring[0] == ':' ? ':' : '?';
+               }
+           }
+         nextchar += strlen (nextchar);
+         if (longind != NULL)
+           *longind = option_index;
+         if (pfound->flag)
+           {
+             *(pfound->flag) = pfound->val;
+             return 0;
+           }
+         return pfound->val;
+       }
+
+      /* Can't find it as a long option.  If this is not getopt_long_only,
+        or the option starts with '--' or is not a valid short
+        option, then it's an error.
+        Otherwise interpret it as a short option.  */
+      if (!long_only || argv[optind][1] == '-'
+         || my_index (optstring, *nextchar) == NULL)
+       {
+         if (print_errors)
+           {
+             if (argv[optind][1] == '-')
+               /* --option */
+               fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+                        argv[0], nextchar);
+             else
+               /* +option or -option */
+               fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+                        argv[0], argv[optind][0], nextchar);
+           }
+         nextchar = (char *) "";
+         optind++;
+         optopt = 0;
+         return '?';
+       }
+    }
+
+  /* Look at and handle the next short option-character.  */
+
+  {
+    char c = *nextchar++;
+    char *temp = my_index (optstring, c);
+
+    /* Increment `optind' when we start to process its last character.  */
+    if (*nextchar == '\0')
+      ++optind;
+
+    if (temp == NULL || c == ':')
+      {
+       if (print_errors)
+         {
+           if (posixly_correct)
+             /* 1003.2 specifies the format of this message.  */
+             fprintf (stderr, _("%s: illegal option -- %c\n"),
+                      argv[0], c);
+           else
+             fprintf (stderr, _("%s: invalid option -- %c\n"),
+                      argv[0], c);
+         }
+       optopt = c;
+       return '?';
+      }
+    /* Convenience. Treat POSIX -W foo same as long option --foo */
+    if (temp[0] == 'W' && temp[1] == ';')
+      {
+       char *nameend;
+       const struct option *p;
+       const struct option *pfound = NULL;
+       int exact = 0;
+       int ambig = 0;
+       int indfound = 0;
+       int option_index;
+
+       /* This is an option that requires an argument.  */
+       if (*nextchar != '\0')
+         {
+           optarg = nextchar;
+           /* If we end this ARGV-element by taking the rest as an arg,
+              we must advance to the next element now.  */
+           optind++;
+         }
+       else if (optind == argc)
+         {
+           if (print_errors)
+             {
+               /* 1003.2 specifies the format of this message.  */
+               fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+                        argv[0], c);
+             }
+           optopt = c;
+           if (optstring[0] == ':')
+             c = ':';
+           else
+             c = '?';
+           return c;
+         }
+       else
+         /* We already incremented `optind' once;
+            increment it again when taking next ARGV-elt as argument.  */
+         optarg = argv[optind++];
+
+       /* optarg is now the argument, see if it's in the
+          table of longopts.  */
+
+       for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
+         /* Do nothing.  */ ;
+
+       /* Test all long options for either exact match
+          or abbreviated matches.  */
+       for (p = longopts, option_index = 0; p->name; p++, option_index++)
+         if (!strncmp (p->name, nextchar, nameend - nextchar))
+           {
+             if ((unsigned int) (nameend - nextchar) == strlen (p->name))
+               {
+                 /* Exact match found.  */
+                 pfound = p;
+                 indfound = option_index;
+                 exact = 1;
+                 break;
+               }
+             else if (pfound == NULL)
+               {
+                 /* First nonexact match found.  */
+                 pfound = p;
+                 indfound = option_index;
+               }
+             else
+               /* Second or later nonexact match found.  */
+               ambig = 1;
+           }
+       if (ambig && !exact)
+         {
+           if (print_errors)
+             fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+                      argv[0], argv[optind]);
+           nextchar += strlen (nextchar);
+           optind++;
+           return '?';
+         }
+       if (pfound != NULL)
+         {
+           option_index = indfound;
+           if (*nameend)
+             {
+               /* Don't test has_arg with >, because some C compilers don't
+                  allow it to be used on enums.  */
+               if (pfound->has_arg)
+                 optarg = nameend + 1;
+               else
+                 {
+                   if (print_errors)
+                     fprintf (stderr, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                              argv[0], pfound->name);
+
+                   nextchar += strlen (nextchar);
+                   return '?';
+                 }
+             }
+           else if (pfound->has_arg == 1)
+             {
+               if (optind < argc)
+                 optarg = argv[optind++];
+               else
+                 {
+                   if (print_errors)
+                     fprintf (stderr,
+                              _("%s: option `%s' requires an argument\n"),
+                              argv[0], argv[optind - 1]);
+                   nextchar += strlen (nextchar);
+                   return optstring[0] == ':' ? ':' : '?';
+                 }
+             }
+           nextchar += strlen (nextchar);
+           if (longind != NULL)
+             *longind = option_index;
+           if (pfound->flag)
+             {
+               *(pfound->flag) = pfound->val;
+               return 0;
+             }
+           return pfound->val;
+         }
+         nextchar = NULL;
+         return 'W';   /* Let the application handle it.   */
+      }
+    if (temp[1] == ':')
+      {
+       if (temp[2] == ':')
+         {
+           /* This is an option that accepts an argument optionally.  */
+           if (*nextchar != '\0')
+             {
+               optarg = nextchar;
+               optind++;
+             }
+           else
+             optarg = NULL;
+           nextchar = NULL;
+         }
+       else
+         {
+           /* This is an option that requires an argument.  */
+           if (*nextchar != '\0')
+             {
+               optarg = nextchar;
+               /* If we end this ARGV-element by taking the rest as an arg,
+                  we must advance to the next element now.  */
+               optind++;
+             }
+           else if (optind == argc)
+             {
+               if (print_errors)
+                 {
+                   /* 1003.2 specifies the format of this message.  */
+                   fprintf (stderr,
+                            _("%s: option requires an argument -- %c\n"),
+                            argv[0], c);
+                 }
+               optopt = c;
+               if (optstring[0] == ':')
+                 c = ':';
+               else
+                 c = '?';
+             }
+           else
+             /* We already incremented `optind' once;
+                increment it again when taking next ARGV-elt as argument.  */
+             optarg = argv[optind++];
+           nextchar = NULL;
+         }
+      }
+    return c;
+  }
+}
+
+int
+getopt (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  return _getopt_internal (argc, argv, optstring,
+                          (const struct option *) 0,
+                          (int *) 0,
+                          0);
+}
+
+#endif /* Not ELIDE_CODE.  */
+\f
+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+
+      c = getopt (argc, argv, "abc:d:0123456789");
+      if (c == -1)
+       break;
+
+      switch (c)
+       {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+         if (digit_optind != 0 && digit_optind != this_option_optind)
+           printf ("digits occur in two different argv-elements.\n");
+         digit_optind = this_option_optind;
+         printf ("option %c\n", c);
+         break;
+
+       case 'a':
+         printf ("option a\n");
+         break;
+
+       case 'b':
+         printf ("option b\n");
+         break;
+
+       case 'c':
+         printf ("option c with value `%s'\n", optarg);
+         break;
+
+       case '?':
+         break;
+
+       default:
+         printf ("?? getopt returned character code 0%o ??\n", c);
+       }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+       printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/examples/getopt.h b/examples/getopt.h
new file mode 100644 (file)
index 0000000..a1b8dd6
--- /dev/null
@@ -0,0 +1,180 @@
+/* Declarations for getopt.
+   Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _GETOPT_H
+
+#ifndef __need_getopt
+# define _GETOPT_H 1
+#endif
+
+/* If __GNU_LIBRARY__ is not already defined, either we are being used
+   standalone, or this is the first header included in the source file.
+   If we are being used with glibc, we need to include <features.h>, but
+   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
+   not defined, include <ctype.h>, which will pull in <features.h> for us
+   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
+   doesn't flood the namespace with stuff the way some other headers do.)  */
+#if !defined __GNU_LIBRARY__
+# include <ctype.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument         (or 0) if the option does not take an argument,
+   required_argument   (or 1) if the option requires an argument,
+   optional_argument   (or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+# if (defined __STDC__ && __STDC__) || defined __cplusplus
+  const char *name;
+# else
+  char *name;
+# endif
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+# define no_argument           0
+# define required_argument     1
+# define optional_argument     2
+#endif /* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.
+
+   Return the option character from OPTS just read.  Return -1 when
+   there are no more options.  For unrecognized options, or options
+   missing arguments, `optopt' is set to the option letter, and '?' is
+   returned.
+
+   The OPTS string is a list of characters which are recognized option
+   letters, optionally followed by colons, specifying that that letter
+   takes an argument, to be placed in `optarg'.
+
+   If a letter in OPTS is followed by two colons, its argument is
+   optional.  This behavior is specific to the GNU `getopt'.
+
+   The argument `--' causes premature termination of argument
+   scanning, explicitly telling `getopt' that there are no more
+   options.
+
+   If OPTS begins with `--', then non-option arguments are treated as
+   arguments to the option '\0'.  This behavior is specific to the GNU
+   `getopt'.  */
+
+#if (defined __STDC__ && __STDC__) || defined __cplusplus
+# ifdef __GNU_LIBRARY__
+/* Many other libraries have conflicting prototypes for getopt, with
+   differences in the consts, in stdlib.h.  To avoid compilation
+   errors, only prototype getopt for the GNU C library.  */
+extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
+# else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+# endif /* __GNU_LIBRARY__ */
+
+# ifndef __need_getopt
+extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
+                       const struct option *__longopts, int *__longind);
+extern int getopt_long_only (int __argc, char *const *__argv,
+                            const char *__shortopts,
+                            const struct option *__longopts, int *__longind);
+
+/* Internal only.  Users should not call this directly.  */
+extern int _getopt_internal (int __argc, char *const *__argv,
+                            const char *__shortopts,
+                            const struct option *__longopts, int *__longind,
+                            int __long_only);
+# endif
+#else /* not __STDC__ */
+extern int getopt ();
+# ifndef __need_getopt
+extern int getopt_long ();
+extern int getopt_long_only ();
+
+extern int _getopt_internal ();
+# endif
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations.  */
+#undef __need_getopt
+
+#endif /* getopt.h */
diff --git a/examples/getopt1.c b/examples/getopt1.c
new file mode 100644 (file)
index 0000000..22a7efb
--- /dev/null
@@ -0,0 +1,188 @@
+/* getopt_long and getopt_long_only entry points for GNU getopt.
+   Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
+     Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+\f
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "getopt.h"
+
+#if !defined __STDC__ || !__STDC__
+/* This is a separate conditional since some stdc systems
+   reject `defined (const)'.  */
+#ifndef const
+#define const
+#endif
+#endif
+
+#include <stdio.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#define GETOPT_INTERFACE_VERSION 2
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+#include <gnu-versions.h>
+#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+#define ELIDE_CODE
+#endif
+#endif
+
+#ifndef ELIDE_CODE
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef __GNU_LIBRARY__
+#include <stdlib.h>
+#endif
+
+#ifndef        NULL
+#define NULL 0
+#endif
+
+int
+getopt_long (argc, argv, options, long_options, opt_index)
+     int argc;
+     char *const *argv;
+     const char *options;
+     const struct option *long_options;
+     int *opt_index;
+{
+  return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
+}
+
+/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+   If an option that starts with '-' (not '--') doesn't match a long option,
+   but does match a short option, it is parsed as a short option
+   instead.  */
+
+int
+getopt_long_only (argc, argv, options, long_options, opt_index)
+     int argc;
+     char *const *argv;
+     const char *options;
+     const struct option *long_options;
+     int *opt_index;
+{
+  return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
+}
+
+
+#endif /* Not ELIDE_CODE.  */
+\f
+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+      int option_index = 0;
+      static struct option long_options[] =
+      {
+       {"add", 1, 0, 0},
+       {"append", 0, 0, 0},
+       {"delete", 1, 0, 0},
+       {"verbose", 0, 0, 0},
+       {"create", 0, 0, 0},
+       {"file", 1, 0, 0},
+       {0, 0, 0, 0}
+      };
+
+      c = getopt_long (argc, argv, "abc:d:0123456789",
+                      long_options, &option_index);
+      if (c == -1)
+       break;
+
+      switch (c)
+       {
+       case 0:
+         printf ("option %s", long_options[option_index].name);
+         if (optarg)
+           printf (" with arg %s", optarg);
+         printf ("\n");
+         break;
+
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+         if (digit_optind != 0 && digit_optind != this_option_optind)
+           printf ("digits occur in two different argv-elements.\n");
+         digit_optind = this_option_optind;
+         printf ("option %c\n", c);
+         break;
+
+       case 'a':
+         printf ("option a\n");
+         break;
+
+       case 'b':
+         printf ("option b\n");
+         break;
+
+       case 'c':
+         printf ("option c with value `%s'\n", optarg);
+         break;
+
+       case 'd':
+         printf ("option d with value `%s'\n", optarg);
+         break;
+
+       case '?':
+         break;
+
+       default:
+         printf ("?? getopt returned character code 0%o ??\n", c);
+       }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+       printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/libtheora.manifest b/libtheora.manifest
deleted file mode 100755 (executable)
index a76fdba..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<manifest>
-       <request>
-               <domain name="_" />
-       </request>
-</manifest>
diff --git a/libtheora.spec b/libtheora.spec
new file mode 100644 (file)
index 0000000..897bde6
--- /dev/null
@@ -0,0 +1,82 @@
+Name:          libtheora
+Version:       1.1.1
+Release:       0.xiph.0.4.alpha5
+Summary:       The Theora Video Compression Codec.
+
+Group:         System Environment/Libraries
+License:       BSD
+URL:           http://www.theora.org/
+Vendor:                Xiph.org Foundation <team@xiph.org>
+Source:                http://downloads.xiph.org/releases/theora/%{name}-%{version}.tar.gz
+BuildRoot:     %{_tmppath}/%{name}-%{version}-root
+
+BuildRequires: libogg-devel >= 2:1.1
+BuildRequires: libvorbis-devel >= 1:1.0.1
+BuildRequires: SDL-devel
+
+# this needs to be explicit since vorbis's .so versioning didn't get bumped
+# when going from 1.0 to 1.0.1
+Requires:       libvorbis >= 1:1.0.1
+
+%description
+Theora is Xiph.Org's first publicly released video codec, intended
+for use within the Ogg's project's Ogg multimedia streaming system.
+Theora is derived directly from On2's VP3 codec; Currently the two are
+nearly identical, varying only in encapsulating decoder tables in the
+bitstream headers, but Theora will make use of this extra freedom
+in the future to improve over what is possible with VP3.
+
+%package devel
+Summary:        Development tools for Theora applications.
+Group:          Development/Libraries
+Requires:       %{name} = %{version}-%{release}
+Requires:       libogg-devel >= 2:1.1
+
+%description devel
+The libtheora-devel package contains the header files and documentation
+needed to develop applications with Ogg Theora.
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%build
+%configure --enable-shared
+make
+
+%install
+rm -rf $RPM_BUILD_ROOT
+# make sure our temp doc build dir is removed
+rm -rf $(pwd)/__docs
+
+%makeinstall docdir=$(pwd)/__docs
+
+find $RPM_BUILD_ROOT -type f -name "*.la" -exec rm -f {} ';'
+
+%clean 
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root)
+%doc COPYING README
+%{_libdir}/libtheora.so.*
+
+%files devel
+%defattr(-,root,root,-)
+%doc __docs/*
+%{_libdir}/libtheora.a
+%{_libdir}/libtheora.so
+%dir %{_includedir}/theora
+%{_includedir}/theora/codec.h
+%{_includedir}/theora/theora.h
+%{_includedir}/theora/theoradec.h
+%{_libdir}/pkgconfig/theora.pc
+
+%changelog
+* Sat Aug 20 2005 Ralph Giles <giles at xiph.org>
+- updated version for 1.0alpha5 release
+* Thu Jun 10 2004 Thomas Vander Stichele <thomas at apestaart dot org>
+- transported fedora.us spec file
diff --git a/packaging/baselibs.conf b/packaging/baselibs.conf
new file mode 100644 (file)
index 0000000..cafe836
--- /dev/null
@@ -0,0 +1,2 @@
+libtheora
+  provides "libtheora-<targettype> = <version>"
diff --git a/packaging/libtheora.changes b/packaging/libtheora.changes
new file mode 100644 (file)
index 0000000..2759e6f
--- /dev/null
@@ -0,0 +1,3 @@
+* Mon Mar 18 2013 Anas Nashif <anas.nashif@intel.com> upstream/1.1.1@553184a
+- Fixed package groups
+
diff --git a/packaging/libtheora.manifest b/packaging/libtheora.manifest
new file mode 100644 (file)
index 0000000..017d22d
--- /dev/null
@@ -0,0 +1,5 @@
+<manifest>
+ <request>
+    <domain name="_"/>
+ </request>
+</manifest>
index eb5d420..6a4c5d2 100644 (file)
@@ -1,80 +1,75 @@
-#sbs-git:slp/unmodified/libtheora libtheora 1.1.1 24a87e1f6ce116d854505b81f26184facdb18602
-Name:       libtheora
-Summary:    Theora Video Compression Codec
-Version:    1.1.1
-Release:    6
-Group:      System/Libraries
-License:    BSD-2.0
-URL:        http://www.theora.org/
-Source0:    http://downloads.xiph.org/releases/theora/%{name}-%{version}.tar.bz2
-Requires(post):  /sbin/ldconfig
-Requires(postun):  /sbin/ldconfig
-BuildRequires:  pkgconfig(ogg)
-BuildRequires:  pkgconfig(vorbis)
-BuildRequires:  pkgconfig(libpng)
-
-BuildRoot:  %{_tmppath}/%{name}-%{version}-build
+Name:           libtheora
+Version:        1.1.1
+Release:        14
+License:        BSD-2.0
+Summary:        Free Video Codec
+Url:            http://www.theora.org/
+Group:          Multimedia/Video
+%define pkg_version %{version}
+Source:         %{name}-%{version}.tar.bz2
+Source2:        baselibs.conf
+Source1001:    libtheora.manifest
+BuildRequires:  gcc-c++
+BuildRequires:  libogg-devel
+BuildRequires:  libtool
+BuildRequires:  libvorbis-devel
+BuildRequires:  pkg-config
+BuildRequires:  python
 
 %description
-Theora is a free and open video compression format from the Xiph.org Foundation.
-It can be used to distribute film and video online and on disc without the
-licensing and royalty fees or vendor lock-in associated with other formats.
+Theora is a free video codec based on VP3. The package contains the
+library that can decode and encode Theora streams. Theora is also able
+to playback VP3 streams.
 
 %package devel
-Summary:    Development tools for Theora applications
-Group:      Development/Libraries
-Requires:   %{name} = %{version}-%{release}
+License:        BSD-2.0
+Summary:        Free Video Codec
+Group:          Development/Libraries
+Requires:       libogg-devel
+Requires:       libtheora = %{version}
 
 %description devel
-Description: Headers for Theora Video Compression Codec
+Theora is a free video codec based on VP3. The package contains the
+library that can decode and encode Theora streams. Theora is also able
+to playback VP3 streams.
 
 %prep
-%setup -q -n %{name}-%{version}
+%setup -q -n %{name}-%{pkg_version}
+cp %{SOURCE1001} .
 
 %build
+ACLOCAL="aclocal -I m4" autoreconf -f -i
+%configure --disable-examples \
+    --disable-static \
+    --with-pic
+make %{?_smp_mflags} docdir=%{_docdir}/%{name}
 
-%ifarch %{arm}
-%ifarch armv7hl armv7nhl
-export FLOAT_ABI="-mfloat-abi=hard"
-%else
-export FLOAT_ABI="-mfloat-abi=softfp -D__SOFTFP__"
-%endif
-export CFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security  -fmessage-length=0 -march=armv7-a -mtune=cortex-a8 -mlittle-endian $FLOAT_ABI"
-export CXXFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security  -fmessage-length=0 -march=armv7-a -mtune=cortex-a8 -mlittle-endian $FLOAT_ABI"
-export FFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security  -fmessage-length=0 -march=armv7-a -mtune=cortex-a8 -mlittle-endian $FLOAT_ABI"
-%endif
-%configure --disable-static \
-    --enable-shared \
-    --disable-sdltest \
-    --disable-examples
-
-make %{?jobs:-j%jobs}
+%check
+make check
 
 %install
-rm -rf %{buildroot}
-mkdir -p %{buildroot}/usr/share/license
-cp COPYING %{buildroot}/usr/share/license/%{name}
 %make_install
-rm -rf $RPM_BUILD_ROOT%{_docdir}
+install -d %{buildroot}%{_bindir}
 
-%clean
-rm -rf %{buildroot}
+rm -rf %{buildroot}/%{_datadir}/doc/%{name}-%{version}/*
 
-%post -p /sbin/ldconfig
+%post  -p /sbin/ldconfig
 
-%postun -p /sbin/ldconfig
+%postun  -p /sbin/ldconfig
 
 %files
-%manifest libtheora.manifest
-%{_libdir}/libtheora.so.*
-%{_libdir}/libtheoradec.so.*
-%{_libdir}/libtheoraenc.so.*
-/usr/share/license/%{name}
+%manifest %{name}.manifest
+%defattr(-,root,root)
+%doc COPYING LICENSE
+%{_libdir}/libtheora.so.0*
+%{_libdir}/libtheoradec.so.1*
+%{_libdir}/libtheoraenc.so.1*
 
 %files devel
+%manifest %{name}.manifest
+%defattr(-,root,root)
 %{_includedir}/theora
 %{_libdir}/*.so
-%{_libdir}/pkgconfig/theora.pc
-%{_libdir}/pkgconfig/theoraenc.pc
 %{_libdir}/pkgconfig/theoradec.pc
-
+%{_libdir}/pkgconfig/theoraenc.pc
+%{_libdir}/pkgconfig/theora.pc
diff --git a/win32/VS2005/README b/win32/VS2005/README
new file mode 100644 (file)
index 0000000..d40e044
--- /dev/null
@@ -0,0 +1,22 @@
+libtheora has libogg as a dependency, and for examples, also \r
+libvorbis, therefore you need to have libogg and libvorbis\r
+compiled beforehand.\r
+\r
+Lets say you have libogg, libvorbis and libtheora in the same directory:\r
+\r
+libogg-1.1.4 \r
+libvorbis-1.2.2\r
+libtheora-1.0\r
+\r
+Because there is no automatic library detection you have to,\r
+either:\r
+\r
+1. Rename libogg-1.1.4 to libogg, and libvorbis-1.2.2 to libvorbis.\r
+\r
+2. Open libogg.vsprops with a text editor (even notepad.exe\r
+will suffice) and see if LIBOGG_VERSION is set to the correct\r
+version, in this case "1.1.4".\r
+\r
+The same procedure should be done for libvorbis.vsprops and \r
+check LIBVORBIS_VERSION for the correct version, in this \r
+case "1.2.2".\r
diff --git a/win32/VS2005/dump_video/dump_video_dynamic.vcproj b/win32/VS2005/dump_video/dump_video_dynamic.vcproj
new file mode 100644 (file)
index 0000000..60368d6
--- /dev/null
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="8.00" Name="dump_video" ProjectGUID="{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}" RootNamespace="dump_video" Keyword="Win32Proj">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="4"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+               <ProjectReference ReferencedProjectIdentifier="{653F3841-3F26-49B9-AFCF-091DB4B67031}" RelativePathToProject=".\libtheora\libtheora_dynamic.vcproj"/>\r
+       </References>\r
+       <Files>\r
+               <File RelativePath="..\..\..\examples\dump_video.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt.c">\r
+               </File>\r
+               <File RelativePath="..\..\..\examples\getopt.h">\r
+               </File>\r
+               <File RelativePath="..\..\getopt1.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt_win.h">\r
+               </File>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2005/dump_video/dump_video_static.vcproj b/win32/VS2005/dump_video/dump_video_static.vcproj
new file mode 100644 (file)
index 0000000..5218023
--- /dev/null
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="8,00" Name="dump_video_static" ProjectGUID="{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}" RootNamespace="dump_video" Keyword="Win32Proj">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="4"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+               <ProjectReference ReferencedProjectIdentifier="{653F3841-3F26-49B9-AFCF-091DB4B67031}"/>\r
+       </References>\r
+       <Files>\r
+               <File RelativePath="..\..\..\examples\dump_video.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt.c">\r
+               </File>\r
+               <File RelativePath="..\..\..\examples\getopt.h">\r
+               </File>\r
+               <File RelativePath="..\..\getopt1.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt_win.h">\r
+               </File>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2005/encoder_example/encoder_example_dynamic.vcproj b/win32/VS2005/encoder_example/encoder_example_dynamic.vcproj
new file mode 100644 (file)
index 0000000..477510e
--- /dev/null
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="8.00" Name="encoder_example" ProjectGUID="{AD710263-EBFA-4388-BAA9-AD73C32AFF26}" RootNamespace="encoder_example" Keyword="Win32Proj">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="4"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+               <ProjectReference ReferencedProjectIdentifier="{653F3841-3F26-49B9-AFCF-091DB4B67031}" RelativePathToProject=".\libtheora\libtheora_dynamic.vcproj"/>\r
+       </References>\r
+       <Files>\r
+               <File RelativePath="..\..\..\examples\encoder_example.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt1.c">\r
+               </File>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2005/encoder_example/encoder_example_static.vcproj b/win32/VS2005/encoder_example/encoder_example_static.vcproj
new file mode 100644 (file)
index 0000000..9da78c4
--- /dev/null
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="8,00" Name="encoder_example_static" ProjectGUID="{AD710263-EBFA-4388-BAA9-AD73C32AFF26}" RootNamespace="encoder_example" Keyword="Win32Proj">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="4"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+               <ProjectReference ReferencedProjectIdentifier="{653F3841-3F26-49B9-AFCF-091DB4B67031}" RelativePathToProject=".\libtheora\libtheora_static.vcproj"/>\r
+       </References>\r
+       <Files>\r
+               <File RelativePath="..\..\..\examples\encoder_example.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt1.c">\r
+               </File>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2005/libogg.vsprops b/win32/VS2005/libogg.vsprops
new file mode 100644 (file)
index 0000000..7fe0db7
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="windows-1250"?>\r
+<VisualStudioPropertySheet\r
+       ProjectType="Visual C++"\r
+       Version="8.00"\r
+       Name="libogg"\r
+       >\r
+       <Tool\r
+               Name="VCCLCompilerTool"\r
+               AdditionalIncludeDirectories="&quot;..\..\..\..\libogg-$(LIBOGG_VERSION)\include&quot;;..\..\..\..\ogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include"\r
+       />\r
+       <Tool\r
+               Name="VCLinkerTool"\r
+               AdditionalLibraryDirectories="&quot;..\..\..\..\libogg-$(LIBOGG_VERSION)\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\ogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\..\..\core\ogg\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;"\r
+       />\r
+       <UserMacro\r
+               Name="LIBOGG_VERSION"\r
+               Value="1.1.4"\r
+       />\r
+</VisualStudioPropertySheet>\r
diff --git a/win32/VS2005/libtheora/libtheora_dynamic.vcproj b/win32/VS2005/libtheora/libtheora_dynamic.vcproj
new file mode 100644 (file)
index 0000000..31d8e9f
--- /dev/null
@@ -0,0 +1,882 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="8.00" Name="libtheora" ProjectGUID="{653F3841-3F26-49B9-AFCF-091DB4B67031}" RootNamespace="libtheora" Keyword="Win32Proj">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+               <Platform Name="Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)"/>\r
+               <Platform Name="Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)"/>\r
+               <Platform Name="Windows Mobile 6 Professional SDK (ARMV4I)"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;OC_X86_ASM" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="false" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="false" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;OC_X86_ASM" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCWebDeploymentTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2005\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter Name="include">\r
+                       <Filter Name="theora">\r
+                               <File RelativePath="..\..\..\include\theora\codec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\include\theora\theora.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\include\theora\theoradec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\include\theora\theoraenc.h">\r
+                               </File>\r
+                       </Filter>\r
+               </Filter>\r
+               <Filter Name="lib">\r
+                       <File RelativePath="..\..\..\lib\cpu.c">\r
+                       </File>\r
+                       <File RelativePath="..\..\..\lib\cpu.h">\r
+                       </File>\r
+                       <File RelativePath="..\..\..\lib\internal.h">\r
+                       </File>\r
+                       <Filter Name="enc">\r
+                               <File RelativePath="..\..\..\lib\analyze.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encapiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encfrag.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encinfo.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encint.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encode.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encoder_disabled.c">\r
+                                       <FileConfiguration Name="Debug|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\fdct.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffenc.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffenc.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mathops.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mathops.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mcenc.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mode_select.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\rate.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\tokenize.c">\r
+                               </File>\r
+                               <Filter Name="x86_vc">\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxencfrag.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxfdct.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\x86enc.c">\r
+                                       </File>\r
+                               </Filter>\r
+                       </Filter>\r
+                       <Filter Name="dec">\r
+                               <File RelativePath="..\..\..\lib\apiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\apiwrapper.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\bitpack.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\bitpack.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dct.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decapiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decinfo.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decint.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decode.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dequant.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dequant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\fragment.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffdec.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffdec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffman.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\idct.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\idct.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\info.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\internal.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\ocintrin.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\quant.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\quant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\state.c">\r
+                               </File>\r
+                               <Filter Name="x86_vc">\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxfrag.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxidct.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxstate.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\x86state.c">\r
+                                       </File>\r
+                               </Filter>\r
+                       </Filter>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2005/libtheora/libtheora_static.vcproj b/win32/VS2005/libtheora/libtheora_static.vcproj
new file mode 100644 (file)
index 0000000..2c5f4da
--- /dev/null
@@ -0,0 +1,872 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="8,00" Name="libtheora_static" ProjectGUID="{653F3841-3F26-49B9-AFCF-091DB4B67031}" RootNamespace="libtheora" Keyword="Win32Proj">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+               <Platform Name="Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)"/>\r
+               <Platform Name="Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)"/>\r
+               <Platform Name="Windows Mobile 6 Professional SDK (ARMV4I)"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;OC_X86_ASM" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="false" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;OC_X86_ASM" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter Name="include">\r
+                       <Filter Name="theora">\r
+                               <File RelativePath="..\..\..\include\theora\codec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\include\theora\theora.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\include\theora\theoradec.h">\r
+                               </File>\r
+                       </Filter>\r
+               </Filter>\r
+               <Filter Name="lib">\r
+                       <File RelativePath="..\..\..\lib\cpu.c">\r
+                       </File>\r
+                       <File RelativePath="..\..\..\lib\cpu.h">\r
+                       </File>\r
+                       <File RelativePath="..\..\..\lib\internal.h">\r
+                       </File>\r
+                       <Filter Name="enc">\r
+                               <File RelativePath="..\..\..\lib\analyze.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encapiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encfrag.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encinfo.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encint.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encode.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encoder_disabled.c">\r
+                                       <FileConfiguration Name="Debug|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encoder_huffman.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encoder_lookup.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\fdct.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffenc.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffenc.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mathops.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mathops.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mcenc.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mode_select.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\rate.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\tokenize.c">\r
+                               </File>\r
+                               <Filter Name="x86_vc">\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxencfrag.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxfdct.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\x86enc.c">\r
+                                       </File>\r
+                               </Filter>\r
+                       </Filter>\r
+                       <Filter Name="dec">\r
+                               <File RelativePath="..\..\..\lib\apiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\apiwrapper.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\bitpack.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\bitpack.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dct.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decapiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decinfo.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decint.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decode.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dequant.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dequant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\fragment.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffdec.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffdec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffman.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\idct.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\idct.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\info.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\internal.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\ocintrin.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\quant.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\quant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\state.c">\r
+                               </File>\r
+                               <Filter Name="x86_vc">\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxfrag.c">\r
+                                               <FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">\r
+                                                       <Tool Name="VCCLCompilerTool"/>\r
+                                               </FileConfiguration>\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxidct.c">\r
+                                               <FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">\r
+                                                       <Tool Name="VCCLCompilerTool"/>\r
+                                               </FileConfiguration>\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxstate.c">\r
+                                               <FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">\r
+                                                       <Tool Name="VCCLCompilerTool"/>\r
+                                               </FileConfiguration>\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\x86state.c">\r
+                                               <FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">\r
+                                                       <Tool Name="VCCLCompilerTool"/>\r
+                                               </FileConfiguration>\r
+                                       </File>\r
+                               </Filter>\r
+                       </Filter>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2005/libtheora_dynamic.sln b/win32/VS2005/libtheora_dynamic.sln
new file mode 100644 (file)
index 0000000..c14cf85
--- /dev/null
@@ -0,0 +1,146 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 9.00\r
+# Visual Studio 2005\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtheora", "libtheora\libtheora_dynamic.vcproj", "{653F3841-3F26-49B9-AFCF-091DB4B67031}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_video", "dump_video\dump_video_dynamic.vcproj", "{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder_example", "encoder_example\encoder_example_dynamic.vcproj", "{AD710263-EBFA-4388-BAA9-AD73C32AFF26}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Win32 = Debug|Win32\r
+               Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Debug|x64 = Debug|x64\r
+               Release_SSE|Win32 = Release_SSE|Win32\r
+               Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release_SSE|x64 = Release_SSE|x64\r
+               Release_SSE2|Win32 = Release_SSE2|Win32\r
+               Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release_SSE2|x64 = Release_SSE2|x64\r
+               Release|Win32 = Release|Win32\r
+               Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release|x64 = Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.Build.0 = Debug|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.ActiveCfg = Debug|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.Build.0 = Debug|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.ActiveCfg = Release|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.Build.0 = Release|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.ActiveCfg = Release|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.Build.0 = Release|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.Build.0 = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.ActiveCfg = Debug|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.Build.0 = Debug|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.Build.0 = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.ActiveCfg = Release|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.Build.0 = Release|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.Build.0 = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.ActiveCfg = Debug|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.Build.0 = Debug|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.Build.0 = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.ActiveCfg = Release|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.Build.0 = Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/win32/VS2005/libtheora_static.sln b/win32/VS2005/libtheora_static.sln
new file mode 100644 (file)
index 0000000..30eab85
--- /dev/null
@@ -0,0 +1,146 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 9.00\r
+# Visual Studio 2005\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_video_static", "dump_video\dump_video_static.vcproj", "{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtheora_static", "libtheora\libtheora_static.vcproj", "{653F3841-3F26-49B9-AFCF-091DB4B67031}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder_example_static", "encoder_example\encoder_example_static.vcproj", "{AD710263-EBFA-4388-BAA9-AD73C32AFF26}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Win32 = Debug|Win32\r
+               Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Debug|x64 = Debug|x64\r
+               Release_SSE|Win32 = Release_SSE|Win32\r
+               Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release_SSE|x64 = Release_SSE|x64\r
+               Release_SSE2|Win32 = Release_SSE2|Win32\r
+               Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release_SSE2|x64 = Release_SSE2|x64\r
+               Release|Win32 = Release|Win32\r
+               Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release|x64 = Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.Build.0 = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.ActiveCfg = Debug|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.Build.0 = Debug|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.Build.0 = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.ActiveCfg = Release|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.Build.0 = Release|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.Build.0 = Debug|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.ActiveCfg = Debug|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.Build.0 = Debug|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.ActiveCfg = Release|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.Build.0 = Release|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.ActiveCfg = Release|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.Build.0 = Release|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.Build.0 = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.ActiveCfg = Debug|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.Build.0 = Debug|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.Build.0 = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.ActiveCfg = Release|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.Build.0 = Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/win32/VS2005/libvorbis.vsprops b/win32/VS2005/libvorbis.vsprops
new file mode 100644 (file)
index 0000000..1b9577e
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="windows-1250"?>\r
+<VisualStudioPropertySheet\r
+       ProjectType="Visual C++"\r
+       Version="8.00"\r
+       Name="libvorbis"\r
+       >\r
+       <Tool\r
+               Name="VCCLCompilerTool"\r
+               AdditionalIncludeDirectories="&quot;..\..\..\..\libvorbis-$(LIBVORBIS_VERSION)\include&quot;;..\..\..\..\vorbis\include;..\..\..\..\..\..\vorbis\libs\libvorbis\include"\r
+       />\r
+       <Tool\r
+               Name="VCLinkerTool"\r
+               AdditionalLibraryDirectories="&quot;..\..\..\..\libvorbis-$(LIBVORBIS_VERSION)\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\vorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\..\vorbis\libs\libvorbis\win32\VS2005\$(PlatformName)\$(ConfigurationName)&quot;"\r
+       />\r
+       <UserMacro\r
+               Name="LIBVORBIS_VERSION"\r
+               Value="1.2.2"\r
+       />\r
+</VisualStudioPropertySheet>\r
diff --git a/win32/VS2008/README b/win32/VS2008/README
new file mode 100644 (file)
index 0000000..d40e044
--- /dev/null
@@ -0,0 +1,22 @@
+libtheora has libogg as a dependency, and for examples, also \r
+libvorbis, therefore you need to have libogg and libvorbis\r
+compiled beforehand.\r
+\r
+Lets say you have libogg, libvorbis and libtheora in the same directory:\r
+\r
+libogg-1.1.4 \r
+libvorbis-1.2.2\r
+libtheora-1.0\r
+\r
+Because there is no automatic library detection you have to,\r
+either:\r
+\r
+1. Rename libogg-1.1.4 to libogg, and libvorbis-1.2.2 to libvorbis.\r
+\r
+2. Open libogg.vsprops with a text editor (even notepad.exe\r
+will suffice) and see if LIBOGG_VERSION is set to the correct\r
+version, in this case "1.1.4".\r
+\r
+The same procedure should be done for libvorbis.vsprops and \r
+check LIBVORBIS_VERSION for the correct version, in this \r
+case "1.2.2".\r
diff --git a/win32/VS2008/dump_video/dump_video_dynamic.vcproj b/win32/VS2008/dump_video/dump_video_dynamic.vcproj
new file mode 100644 (file)
index 0000000..9a6f49f
--- /dev/null
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="9,00" Name="dump_video" ProjectGUID="{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}" RootNamespace="dump_video" Keyword="Win32Proj" TargetFrameworkVersion="131072">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="4"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+               <ProjectReference ReferencedProjectIdentifier="{653F3841-3F26-49B9-AFCF-091DB4B67031}"/>\r
+       </References>\r
+       <Files>\r
+               <File RelativePath="..\..\..\examples\dump_video.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt.c">\r
+               </File>\r
+               <File RelativePath="..\..\..\examples\getopt.h">\r
+               </File>\r
+               <File RelativePath="..\..\getopt1.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt_win.h">\r
+               </File>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2008/dump_video/dump_video_static.vcproj b/win32/VS2008/dump_video/dump_video_static.vcproj
new file mode 100644 (file)
index 0000000..60d6d74
--- /dev/null
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="9,00" Name="dump_video_static" ProjectGUID="{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}" RootNamespace="dump_video" Keyword="Win32Proj" TargetFrameworkVersion="131072">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="4"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+               <ProjectReference ReferencedProjectIdentifier="{653F3841-3F26-49B9-AFCF-091DB4B67031}"/>\r
+       </References>\r
+       <Files>\r
+               <File RelativePath="..\..\..\examples\dump_video.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt.c">\r
+               </File>\r
+               <File RelativePath="..\..\..\examples\getopt.h">\r
+               </File>\r
+               <File RelativePath="..\..\getopt1.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt_win.h">\r
+               </File>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2008/encoder_example/encoder_example_dynamic.vcproj b/win32/VS2008/encoder_example/encoder_example_dynamic.vcproj
new file mode 100644 (file)
index 0000000..d68d8ac
--- /dev/null
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="9,00" Name="encoder_example" ProjectGUID="{AD710263-EBFA-4388-BAA9-AD73C32AFF26}" RootNamespace="encoder_example" Keyword="Win32Proj" TargetFrameworkVersion="131072">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="4"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib libvorbis.lib libtheora.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+               <ProjectReference ReferencedProjectIdentifier="{653F3841-3F26-49B9-AFCF-091DB4B67031}"/>\r
+       </References>\r
+       <Files>\r
+               <File RelativePath="..\..\..\examples\encoder_example.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt1.c">\r
+               </File>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2008/encoder_example/encoder_example_static.vcproj b/win32/VS2008/encoder_example/encoder_example_static.vcproj
new file mode 100644 (file)
index 0000000..91cee2d
--- /dev/null
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="9,00" Name="encoder_example_static" ProjectGUID="{AD710263-EBFA-4388-BAA9-AD73C32AFF26}" RootNamespace="encoder_example" Keyword="Win32Proj" TargetFrameworkVersion="131072">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="4"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="2" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="true" SubSystem="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="1"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets="..\libogg.vsprops;..\libvorbis.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\libogg\include;..\..\..\..\libvorbis\include;" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" RuntimeLibrary="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="true" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg_static.lib libvorbis_static.lib libtheora_static.lib" LinkIncremental="1" AdditionalLibraryDirectories="&quot;..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\$(PlatformName)\$(ConfigurationName)&quot;" GenerateDebugInformation="false" SubSystem="1" OptimizeReferences="2" EnableCOMDATFolding="2" OptimizeForWindows98="1" RandomizedBaseAddress="1" DataExecutionPrevention="0" TargetMachine="17"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+               <ProjectReference ReferencedProjectIdentifier="{653F3841-3F26-49B9-AFCF-091DB4B67031}"/>\r
+       </References>\r
+       <Files>\r
+               <File RelativePath="..\..\..\examples\encoder_example.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt.c">\r
+               </File>\r
+               <File RelativePath="..\..\getopt1.c">\r
+               </File>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2008/libogg.vsprops b/win32/VS2008/libogg.vsprops
new file mode 100644 (file)
index 0000000..1355b50
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="windows-1250"?>\r
+<VisualStudioPropertySheet\r
+       ProjectType="Visual C++"\r
+       Version="8.00"\r
+       Name="libogg"\r
+       >\r
+       <Tool\r
+               Name="VCCLCompilerTool"\r
+               AdditionalIncludeDirectories="&quot;..\..\..\..\libogg-$(LIBOGG_VERSION)\include&quot;;..\..\..\..\ogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include"\r
+       />\r
+       <Tool\r
+               Name="VCLinkerTool"\r
+               AdditionalLibraryDirectories="&quot;..\..\..\..\libogg-$(LIBOGG_VERSION)\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\ogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\..\..\core\ogg\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;"\r
+       />\r
+       <UserMacro\r
+               Name="LIBOGG_VERSION"\r
+               Value="1.1.4"\r
+       />\r
+</VisualStudioPropertySheet>\r
diff --git a/win32/VS2008/libtheora/libtheora_dynamic.vcproj b/win32/VS2008/libtheora/libtheora_dynamic.vcproj
new file mode 100644 (file)
index 0000000..56fcee5
--- /dev/null
@@ -0,0 +1,766 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="9.00" Name="libtheora" ProjectGUID="{653F3841-3F26-49B9-AFCF-091DB4B67031}" RootNamespace="libtheora" Keyword="Win32Proj" TargetFrameworkVersion="131072">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+               <Platform Name="Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)"/>\r
+               <Platform Name="Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)"/>\r
+               <Platform Name="Windows Mobile 6 Professional SDK (ARMV4I)"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;OC_X86_ASM" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="false" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def " RandomizedBaseAddress="1" DataExecutionPrevention="0"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="false" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def " RandomizedBaseAddress="1" DataExecutionPrevention="0"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;OC_X86_ASM" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def " RandomizedBaseAddress="1" DataExecutionPrevention="0"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def " RandomizedBaseAddress="1" DataExecutionPrevention="0"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def " RandomizedBaseAddress="1" DataExecutionPrevention="0"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def " RandomizedBaseAddress="1" DataExecutionPrevention="0"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def " RandomizedBaseAddress="1" DataExecutionPrevention="0"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\..\lib\theora.def " RandomizedBaseAddress="1" DataExecutionPrevention="0"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCManifestTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCAppVerifierTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="2" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="libogg.lib" AdditionalLibraryDirectories="..\..\..\..\libogg\win32\VS2008\$(PlatformName)\$(ConfigurationName)" ModuleDefinitionFile="..\..\libtheora.def "/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter Name="include">\r
+                       <Filter Name="theora">\r
+                               <File RelativePath="..\..\..\include\theora\codec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\include\theora\theora.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\include\theora\theoradec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\include\theora\theoraenc.h">\r
+                               </File>\r
+                       </Filter>\r
+               </Filter>\r
+               <Filter Name="lib">\r
+                       <File RelativePath="..\..\..\lib\cpu.c">\r
+                       </File>\r
+                       <File RelativePath="..\..\..\lib\cpu.h">\r
+                       </File>\r
+                       <File RelativePath="..\..\..\lib\internal.h">\r
+                       </File>\r
+                       <Filter Name="enc">\r
+                               <File RelativePath="..\..\..\lib\analyze.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encapiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encfrag.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encinfo.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encint.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encode.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encoder_disabled.c">\r
+                                       <FileConfiguration Name="Debug|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\fdct.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffenc.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffenc.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mathops.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mathops.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mcenc.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\modedec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\rate.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\tokenize.c">\r
+                               </File>\r
+                               <Filter Name="x86_vc">\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxencfrag.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxfdct.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\x86enc.c">\r
+                                       </File>\r
+                               </Filter>\r
+                       </Filter>\r
+                       <Filter Name="dec">\r
+                               <File RelativePath="..\..\..\lib\apiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\apiwrapper.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\bitpack.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\bitpack.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dct.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decapiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decinfo.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decint.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decode.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dequant.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dequant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\fragment.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffdec.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffdec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffman.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\idct.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\idct.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\info.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\internal.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\ocintrin.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\quant.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\quant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\state.c">\r
+                               </File>\r
+                               <Filter Name="x86_vc">\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxfrag.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxidct.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxstate.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\x86state.c">\r
+                                       </File>\r
+                               </Filter>\r
+                       </Filter>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2008/libtheora/libtheora_static.vcproj b/win32/VS2008/libtheora/libtheora_static.vcproj
new file mode 100644 (file)
index 0000000..9ad6033
--- /dev/null
@@ -0,0 +1,748 @@
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject ProjectType="Visual C++" Version="9,00" Name="libtheora_static" ProjectGUID="{653F3841-3F26-49B9-AFCF-091DB4B67031}" RootNamespace="libtheora" Keyword="Win32Proj" TargetFrameworkVersion="131072">\r
+       <Platforms>\r
+               <Platform Name="Win32"/>\r
+               <Platform Name="x64"/>\r
+               <Platform Name="Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)"/>\r
+               <Platform Name="Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)"/>\r
+               <Platform Name="Windows Mobile 6 Professional SDK (ARMV4I)"/>\r
+       </Platforms>\r
+       <ToolFiles>\r
+       </ToolFiles>\r
+       <Configurations>\r
+               <Configuration Name="Debug|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;OC_X86_ASM" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="false" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="false" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;OC_X86_ASM" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" EnableEnhancedInstructionSet="1" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Win32" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" EnableEnhancedInstructionSet="2" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|x64" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="3"/>\r
+                       <Tool Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_BIND_TO_CURRENT_CRT_VERSION;WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" Detect64BitPortabilityProblems="false" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool"/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCFxCopTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="0" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_DEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" MinimalRebuild="true" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" DebugInformationFormat="3"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+               <Configuration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" IntermediateDirectory="$(PlatformName)\$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops;..\libogg.vsprops" CharacterSet="1" WholeProgramOptimization="1">\r
+                       <Tool Name="VCPreBuildEventTool"/>\r
+                       <Tool Name="VCCustomBuildTool"/>\r
+                       <Tool Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool Name="VCMIDLTool" TargetEnvironment="1"/>\r
+                       <Tool Name="VCCLCompilerTool" ExecutionBucket="7" Optimization="2" InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" FavorSizeOrSpeed="1" AdditionalIncludeDirectories="..\..\..\include;..\..\..\lib;..\..\..\..\libogg\include;..\..\..\..\..\..\..\core\ogg\libogg\include\" PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;NDEBUG;_WINDOWS;_USRDLL;LIBTHEORA_EXPORTS;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;$(ARCHFAM);$(_ARCHFAM_);$(PLATFORMDEFINES)" StringPooling="true" ExceptionHandling="0" RuntimeLibrary="2" BufferSecurityCheck="false" UsePrecompiledHeader="0" WarningLevel="4" DebugInformationFormat="0" CompileAs="1" DisableSpecificWarnings="4244;4267;4057;4100;4245"/>\r
+                       <Tool Name="VCManagedResourceCompilerTool"/>\r
+                       <Tool Name="VCResourceCompilerTool"/>\r
+                       <Tool Name="VCPreLinkEventTool"/>\r
+                       <Tool Name="VCLibrarianTool" AdditionalOptions=""/>\r
+                       <Tool Name="VCALinkTool"/>\r
+                       <Tool Name="VCXDCMakeTool"/>\r
+                       <Tool Name="VCBscMakeTool"/>\r
+                       <Tool Name="VCCodeSignTool"/>\r
+                       <Tool Name="VCPostBuildEventTool"/>\r
+                       <DeploymentTool ForceDirty="-1" RemoteDirectory="" RegisterOutput="0" AdditionalFiles=""/>\r
+                       <DebuggerTool/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter Name="include">\r
+                       <Filter Name="theora">\r
+                               <File RelativePath="..\..\..\include\theora\codec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\include\theora\theora.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\include\theora\theoradec.h">\r
+                               </File>\r
+                       </Filter>\r
+               </Filter>\r
+               <Filter Name="lib">\r
+                       <File RelativePath="..\..\..\lib\cpu.c">\r
+                       </File>\r
+                       <File RelativePath="..\..\..\lib\cpu.h">\r
+                       </File>\r
+                       <File RelativePath="..\..\..\lib\internal.h">\r
+                       </File>\r
+                       <Filter Name="enc">\r
+                               <File RelativePath="..\..\..\lib\analyze.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encapiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encfrag.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encinfo.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encint.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encode.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\encoder_disabled.c">\r
+                                       <FileConfiguration Name="Debug|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64" ExcludedFromBuild="true">\r
+                                               <Tool Name="VCCLCompilerTool"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\fdct.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffenc.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffenc.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mathops.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mathops.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\mcenc.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\modedec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\rate.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\tokenize.c">\r
+                               </File>\r
+                               <Filter Name="x86_vc">\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxencfrag.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxfdct.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\x86enc.c">\r
+                                       </File>\r
+                               </Filter>\r
+                       </Filter>\r
+                       <Filter Name="dec">\r
+                               <File RelativePath="..\..\..\lib\apiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\apiwrapper.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\bitpack.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\bitpack.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dct.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decapiwrapper.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decinfo.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decint.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\decode.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dequant.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\dequant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\enquant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\fragment.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffdec.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffdec.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\huffman.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\idct.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\idct.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\info.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\internal.c">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\ocintrin.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\quant.c">\r
+                                       <FileConfiguration Name="Debug|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Debug_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|Win32">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                                       <FileConfiguration Name="Release_RTL_dll|x64">\r
+                                               <Tool Name="VCCLCompilerTool" ObjectFile="$(IntDir)\$(InputName)1.obj" XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"/>\r
+                                       </FileConfiguration>\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\quant.h">\r
+                               </File>\r
+                               <File RelativePath="..\..\..\lib\state.c">\r
+                               </File>\r
+                               <Filter Name="x86_vc">\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxfrag.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxidct.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\mmxstate.c">\r
+                                       </File>\r
+                                       <File RelativePath="..\..\..\lib\x86_vc\x86state.c">\r
+                                       </File>\r
+                               </Filter>\r
+                       </Filter>\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r
diff --git a/win32/VS2008/libtheora_dynamic.sln b/win32/VS2008/libtheora_dynamic.sln
new file mode 100644 (file)
index 0000000..d4bde5d
--- /dev/null
@@ -0,0 +1,146 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 10.00\r
+# Visual Studio 2008\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtheora", "libtheora\libtheora_dynamic.vcproj", "{653F3841-3F26-49B9-AFCF-091DB4B67031}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_video", "dump_video\dump_video_dynamic.vcproj", "{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder_example", "encoder_example\encoder_example_dynamic.vcproj", "{AD710263-EBFA-4388-BAA9-AD73C32AFF26}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Win32 = Debug|Win32\r
+               Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Debug|x64 = Debug|x64\r
+               Release_SSE|Win32 = Release_SSE|Win32\r
+               Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release_SSE|x64 = Release_SSE|x64\r
+               Release_SSE2|Win32 = Release_SSE2|Win32\r
+               Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release_SSE2|x64 = Release_SSE2|x64\r
+               Release|Win32 = Release|Win32\r
+               Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release|x64 = Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.Build.0 = Debug|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.ActiveCfg = Debug|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.Build.0 = Debug|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.ActiveCfg = Release|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.Build.0 = Release|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.ActiveCfg = Release|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.Build.0 = Release|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.Build.0 = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.ActiveCfg = Debug|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.Build.0 = Debug|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.Build.0 = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.ActiveCfg = Release|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.Build.0 = Release|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.Build.0 = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.ActiveCfg = Debug|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.Build.0 = Debug|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.Build.0 = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.ActiveCfg = Release|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.Build.0 = Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/win32/VS2008/libtheora_static.sln b/win32/VS2008/libtheora_static.sln
new file mode 100644 (file)
index 0000000..2b39635
--- /dev/null
@@ -0,0 +1,146 @@
+\r
+Microsoft Visual Studio Solution File, Format Version 10.00\r
+# Visual Studio 2008\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dump_video_static", "dump_video\dump_video_static.vcproj", "{1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtheora_static", "libtheora\libtheora_static.vcproj", "{653F3841-3F26-49B9-AFCF-091DB4B67031}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder_example_static", "encoder_example\encoder_example_static.vcproj", "{AD710263-EBFA-4388-BAA9-AD73C32AFF26}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Win32 = Debug|Win32\r
+               Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Debug|x64 = Debug|x64\r
+               Release_SSE|Win32 = Release_SSE|Win32\r
+               Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release_SSE|x64 = Release_SSE|x64\r
+               Release_SSE2|Win32 = Release_SSE2|Win32\r
+               Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I) = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release_SSE2|x64 = Release_SSE2|x64\r
+               Release|Win32 = Release|Win32\r
+               Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I) = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               Release|x64 = Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Win32.Build.0 = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.ActiveCfg = Debug|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Debug|x64.Build.0 = Debug|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Win32.Build.0 = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.ActiveCfg = Release|x64\r
+               {1A8CA99D-B6C7-48CB-B263-6CECDADF5FBF}.Release|x64.Build.0 = Release|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Win32.Build.0 = Debug|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.ActiveCfg = Debug|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Debug|x64.Build.0 = Debug|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.ActiveCfg = Release|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Win32.Build.0 = Release|Win32\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.ActiveCfg = Release|x64\r
+               {653F3841-3F26-49B9-AFCF-091DB4B67031}.Release|x64.Build.0 = Release|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Win32.Build.0 = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.ActiveCfg = Debug|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Debug|x64.Build.0 = Debug|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Win32.Build.0 = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.ActiveCfg = Release_SSE|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE|x64.Build.0 = Release_SSE|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Win32.Build.0 = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release_SSE2|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.ActiveCfg = Release_SSE2|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release_SSE2|x64.Build.0 = Release_SSE2|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Win32.Build.0 = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Pocket PC SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 5.0 Smartphone SDK 2 (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Win32\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.ActiveCfg = Release|x64\r
+               {AD710263-EBFA-4388-BAA9-AD73C32AFF26}.Release|x64.Build.0 = Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/win32/VS2008/libvorbis.vsprops b/win32/VS2008/libvorbis.vsprops
new file mode 100644 (file)
index 0000000..004dcc5
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="windows-1250"?>\r
+<VisualStudioPropertySheet\r
+       ProjectType="Visual C++"\r
+       Version="8.00"\r
+       Name="libvorbis"\r
+       >\r
+       <Tool\r
+               Name="VCCLCompilerTool"\r
+               AdditionalIncludeDirectories="&quot;..\..\..\..\libvorbis-$(LIBVORBIS_VERSION)\include&quot;;..\..\..\..\vorbis\include;..\..\..\..\..\..\vorbis\libs\libvorbis\include"\r
+       />\r
+       <Tool\r
+               Name="VCLinkerTool"\r
+               AdditionalLibraryDirectories="&quot;..\..\..\..\libvorbis-$(LIBVORBIS_VERSION)\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\vorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\..\vorbis\libs\libvorbis\win32\VS2008\$(PlatformName)\$(ConfigurationName)&quot;"\r
+       />\r
+       <UserMacro\r
+               Name="LIBVORBIS_VERSION"\r
+               Value="1.2.2"\r
+       />\r
+</VisualStudioPropertySheet>\r
diff --git a/win32/build_theora_static.bat b/win32/build_theora_static.bat
new file mode 100755 (executable)
index 0000000..842cef0
--- /dev/null
@@ -0,0 +1,18 @@
+@echo off\r
+echo ---+++--- Building Theora (Static) ---+++---\r
+\r
+if .%SRCROOT%==. set SRCROOT=D:\xiph\r
+\r
+set OLDPATH=%PATH%\r
+set OLDINCLUDE=%INCLUDE%\r
+set OLDLIB=%LIB%\r
+\r
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"\r
+echo Setting include paths for Theora\r
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\theora\include\r
+echo Compiling...\r
+msdev theora_static.dsp /useenv /make "theora_static - Win32 Release" /rebuild\r
+\r
+set PATH=%OLDPATH%\r
+set INCLUDE=%OLDINCLUDE%\r
+set LIB=%OLDLIB%\r
diff --git a/win32/build_theora_static_debug.bat b/win32/build_theora_static_debug.bat
new file mode 100755 (executable)
index 0000000..c58edb0
--- /dev/null
@@ -0,0 +1,18 @@
+@echo off\r
+echo ---+++--- Building Theora (Static) ---+++---\r
+\r
+if .%SRCROOT%==. set SRCROOT=D:\xiph\r
+\r
+set OLDPATH=%PATH%\r
+set OLDINCLUDE=%INCLUDE%\r
+set OLDLIB=%LIB%\r
+\r
+call "c:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"\r
+echo Setting include paths for Theora\r
+set INCLUDE=%INCLUDE%;%SRCROOT%\ogg\include;%SRCROOT%\theora\include\r
+echo Compiling...\r
+msdev theora_static.dsp /useenv /make "theora_static - Win32 Debug" /rebuild\r
+\r
+set PATH=%OLDPATH%\r
+set INCLUDE=%OLDINCLUDE%\r
+set LIB=%OLDLIB%\r
diff --git a/win32/experimental/dumpvid/dumpvid.dsp b/win32/experimental/dumpvid/dumpvid.dsp
new file mode 100644 (file)
index 0000000..40c4b07
--- /dev/null
@@ -0,0 +1,121 @@
+# Microsoft Developer Studio Project File - Name="dumpvid" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+\r
+CFG=dumpvid - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "dumpvid.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "dumpvid.mak" CFG="dumpvid - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "dumpvid - Win32 Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "dumpvid - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "dumpvid - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static.lib ogg_static.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBCMT" /out:"dump_vid.exe" /libpath:"..\..\Static_Release" /libpath:"..\..\..\..\ogg\win32\Static_Release" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Release" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Release"\r
+\r
+!ELSEIF  "$(CFG)" == "dumpvid - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static_d.lib ogg_static_d.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBCD" /out:"dump_vid.exe" /pdbtype:sept /libpath:"..\..\Static_Debug" /libpath:"..\..\..\..\ogg\win32\Static_Debug" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Debug" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Debug"\r
+# SUBTRACT LINK32 /nodefaultlib\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "dumpvid - Win32 Release"\r
+# Name "dumpvid - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\examples\dump_video.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\wincompat\getopt.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\wincompat\getopt_long.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# Begin Group "library"\r
+\r
+# PROP Default_Filter ""\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=.\ReadMe.txt\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/win32/experimental/encoderwin/ReadMe.txt b/win32/experimental/encoderwin/ReadMe.txt
new file mode 100644 (file)
index 0000000..12c4090
--- /dev/null
@@ -0,0 +1,13 @@
+05/30/03
+Updated to use the common encoder_sample.c source in theora/examples.
+
+05/23/03
+
+Very simple port of the sample encoder for Windows, for testing.
+Encoder options in the command line are not working, and the frame rate 
+of video needs to be set in code (like in the simple sample encoder.)
+
+This example will be updated to a true Win32 app sometime in the future,
+hope it is useful for basic testing now.
+
+mauricio@xiph.org
\ No newline at end of file
diff --git a/win32/experimental/encoderwin/encoderwin.dsp b/win32/experimental/encoderwin/encoderwin.dsp
new file mode 100644 (file)
index 0000000..6befa4e
--- /dev/null
@@ -0,0 +1,121 @@
+# Microsoft Developer Studio Project File - Name="encoderwin" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+\r
+CFG=encoderwin - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "encoderwin.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "encoderwin.mak" CFG="encoderwin - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "encoderwin - Win32 Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "encoderwin - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "encoderwin - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\include" /I "..\..\..\..\vorbis\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static.lib ogg_static.lib vorbis_static.lib vorbisenc_static.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBCMT" /out:"encoderwin.exe" /libpath:"..\..\Static_Release" /libpath:"..\..\..\..\ogg\win32\Static_Release" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Release" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Release"\r
+\r
+!ELSEIF  "$(CFG)" == "encoderwin - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\..\vorbis\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static_d.lib ogg_static_d.lib vorbis_static_d.lib vorbisenc_static_d.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBCD" /out:"encoderwin.exe" /pdbtype:sept /libpath:"..\..\Static_Debug" /libpath:"..\..\..\..\ogg\win32\Static_Debug" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Debug" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Debug"\r
+# SUBTRACT LINK32 /nodefaultlib\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "encoderwin - Win32 Release"\r
+# Name "encoderwin - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\..\..\examples\encoder_example.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\wincompat\getopt.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\wincompat\getopt_long.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# Begin Group "library"\r
+\r
+# PROP Default_Filter ""\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=.\ReadMe.txt\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/win32/experimental/transcoder/avi2vp3/avi2vp3.c b/win32/experimental/transcoder/avi2vp3/avi2vp3.c
new file mode 100644 (file)
index 0000000..08777e5
--- /dev/null
@@ -0,0 +1,82 @@
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _WIN32
+#include <windows.h>
+#else
+typedef long DWORD;
+#endif
+
+/*extremely crude app to dump vp3 frames from an avi file*/
+/*filenames are hardcoded*/
+
+#include "avilib.h"
+
+int main(int argc, const char **argv)
+{
+
+    FILE * f = fopen("outfile.vp3", "wb");
+    
+    char * buffer;
+    int olength;
+    int length;
+    avi_t *avifile;
+    int chunksize;    
+    int frame;
+    int frames;
+    int keyframegap = 0;
+    int maxkeyframegap = 0;
+
+    DWORD initialticks;
+    
+    int framew = 0;
+    int frameh = 0;
+    double framerate = 0.0f;
+    double fps_numerator, fps_denominator;
+
+    avifile = AVI_open_input_file("vp31.avi", 1);
+    frames = AVI_video_frames(avifile);
+    framew = AVI_video_width(avifile);
+    frameh = AVI_video_height(avifile);
+    framerate = AVI_frame_rate(avifile);
+    chunksize = AVI_max_video_chunk(avifile);
+    /* avilib only reports the max video chunk size if the file has an
+       idx table. We fall back to an arbitrary limit otherwise. Better
+       would be just to handle the chunks dynamically */
+    if (chunksize <= 0) chunksize = 131072;
+    buffer = malloc(chunksize);
+    printf("Frames(%d) Video(%dx%d) %3.2f fps\n",frames,framew, frameh,framerate);
+    printf("Video Compressor: %s", AVI_video_compressor(avifile));
+    fps_denominator = 1000000.0F;
+    fps_numerator = framerate * fps_denominator;
+    
+    sprintf(buffer,"AVI2VP31R W%d H%d F%.0f:%.0f Ip A0:0\n", framew, frameh, fps_numerator, fps_denominator);
+    fwrite(buffer, strlen(buffer), 1, f);
+    
+    for (frame = 0; frame < frames;) {
+       int keyframe;
+       olength = length;
+       length = AVI_frame_size(avifile, frame++);
+       if( !length ) {
+           length = olength;
+       }
+       AVI_read_frame(avifile, (char *) buffer, &keyframe);
+       fwrite("FRAME\n", 6, 1, f);
+       fwrite(&length, sizeof(int), 1, f);
+       fwrite(&keyframe, sizeof(int), 1, f);
+       printf("Frame size(%d) IsKeyframe(%d)\n", length, keyframe);
+       fwrite(buffer, 1, length, f);
+       if (!keyframe){
+         keyframegap++;
+       } else {
+         if (keyframegap>maxkeyframegap) maxkeyframegap=keyframegap;   
+         keyframegap = 0;
+       }
+       }
+
+       fclose(f);
+       printf("Max keyframegap (%d)\n", maxkeyframegap);
+       
+       free(buffer);
+
+    exit(0);
+}
diff --git a/win32/experimental/transcoder/avi2vp3/avilib.c b/win32/experimental/transcoder/avi2vp3/avilib.c
new file mode 100644 (file)
index 0000000..3df78ff
--- /dev/null
@@ -0,0 +1,1839 @@
+/*
+ *  avilib.c
+ *
+ *  Copyright (C) Thomas Ã–streich - June 2001
+ *  multiple audio track support Copyright (C) 2002 Thomas Ã–streich 
+ *
+ *  Original code:
+ *  Copyright (C) 1999 Rainer Johanni <Rainer@Johanni.de> 
+ *
+ *  This file is part of transcode, a linux video stream processing tool
+ *      
+ *  transcode is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *   
+ *  transcode is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *   
+ *  You should have received a copy of the GNU General Public License
+ *  along with GNU Make; see the file COPYING.  If not, write to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
+ *
+ */
+
+#include "avilib.h"
+//#include <time.h>
+
+#define INFO_LIST
+
+/* The following variable indicates the kind of error */
+
+long AVI_errno;
+
+#define MAX_INFO_STRLEN 64
+static char id_str[MAX_INFO_STRLEN];
+
+#define FRAME_RATE_SCALE 1000000
+
+#ifndef PACKAGE
+#define PACKAGE "my"
+#define VERSION "0.00"
+#endif
+
+#ifndef O_BINARY
+/* win32 wants a binary flag to open(); this sets it to null
+   on platforms that don't have it. */
+#define O_BINARY 0
+#endif
+
+/*******************************************************************
+ *                                                                 *
+ *    Utilities for writing an AVI File                            *
+ *                                                                 *
+ *******************************************************************/
+
+static size_t avi_read(int fd, char *buf, size_t len)
+{
+   size_t n = 0;
+   size_t r = 0;
+
+   while (r < len) {
+      n = read (fd, buf + r, len - r);
+
+      if (n <= 0)
+         return r;
+      r += n;
+   }
+
+   return r;
+}
+
+static size_t avi_write (int fd, char *buf, size_t len)
+{
+   size_t n = 0;
+   size_t r = 0;
+
+   while (r < len) {
+      n = write (fd, buf + r, len - r);
+      if (n < 0)
+         return n;
+      
+      r += n;
+   }
+   return r;
+}
+
+/* HEADERBYTES: The number of bytes to reserve for the header */
+
+#define HEADERBYTES 2048
+
+/* AVI_MAX_LEN: The maximum length of an AVI file, we stay a bit below
+    the 2GB limit (Remember: 2*10^9 is smaller than 2 GB) */
+
+#define AVI_MAX_LEN (UINT_MAX-(1<<20)*16-HEADERBYTES)
+
+#define PAD_EVEN(x) ( ((x)+1) & ~1 )
+
+
+/* Copy n into dst as a 4 byte, little endian number.
+   Should also work on big endian machines */
+
+static void long2str(unsigned char *dst, int n)
+{
+   dst[0] = (n    )&0xff;
+   dst[1] = (n>> 8)&0xff;
+   dst[2] = (n>>16)&0xff;
+   dst[3] = (n>>24)&0xff;
+}
+
+/* Convert a string of 4 or 2 bytes to a number,
+   also working on big endian machines */
+
+static unsigned long str2ulong(unsigned char *str)
+{
+   return ( str[0] | (str[1]<<8) | (str[2]<<16) | (str[3]<<24) );
+}
+static unsigned long str2ushort(unsigned char *str)
+{
+   return ( str[0] | (str[1]<<8) );
+}
+
+/* Calculate audio sample size from number of bits and number of channels.
+   This may have to be adjusted for eg. 12 bits and stereo */
+
+static int avi_sampsize(avi_t *AVI, int j)
+{
+   int s;
+   s = ((AVI->track[j].a_bits+7)/8)*AVI->track[j].a_chans;
+   //   if(s==0) s=1; /* avoid possible zero divisions */
+   if(s<4) s=4; /* avoid possible zero divisions */ 
+   return s;
+}
+
+/* Add a chunk (=tag and data) to the AVI file,
+   returns -1 on write error, 0 on success */
+
+static int avi_add_chunk(avi_t *AVI, unsigned char *tag, unsigned char *data, int length)
+{
+   unsigned char c[8];
+
+   /* Copy tag and length int c, so that we need only 1 write system call
+      for these two values */
+
+   memcpy(c,tag,4);
+   long2str(c+4,length);
+
+   /* Output tag, length and data, restore previous position
+      if the write fails */
+
+   length = PAD_EVEN(length);
+
+   if( avi_write(AVI->fdes,(char *)c,8) != 8 ||
+       avi_write(AVI->fdes,(char *)data,length) != length )
+   {
+      lseek(AVI->fdes,AVI->pos,SEEK_SET);
+      AVI_errno = AVI_ERR_WRITE;
+      return -1;
+   }
+
+   /* Update file position */
+
+   AVI->pos += 8 + length;
+
+   //fprintf(stderr, "pos=%lu %s\n", AVI->pos, tag);
+
+   return 0;
+}
+
+static int avi_add_index_entry(avi_t *AVI, unsigned char *tag, long flags, unsigned long pos, unsigned long len)
+{
+   void *ptr;
+
+   if(AVI->n_idx>=AVI->max_idx) {
+     ptr = realloc((void *)AVI->idx,(AVI->max_idx+4096)*16);
+     
+     if(ptr == 0) {
+       AVI_errno = AVI_ERR_NO_MEM;
+       return -1;
+     }
+     AVI->max_idx += 4096;
+     AVI->idx = (unsigned char((*)[16]) ) ptr;
+   }
+   
+   /* Add index entry */
+
+   //   fprintf(stderr, "INDEX %s %ld %lu %lu\n", tag, flags, pos, len);
+
+   memcpy(AVI->idx[AVI->n_idx],tag,4);
+   long2str(AVI->idx[AVI->n_idx]+ 4,flags);
+   long2str(AVI->idx[AVI->n_idx]+ 8, pos);
+   long2str(AVI->idx[AVI->n_idx]+12, len);
+   
+   /* Update counter */
+
+   AVI->n_idx++;
+
+   if(len>AVI->max_len) AVI->max_len=len;
+
+   return 0;
+}
+
+/*
+   AVI_open_output_file: Open an AVI File and write a bunch
+                         of zero bytes as space for the header.
+
+   returns a pointer to avi_t on success, a zero pointer on error
+*/
+
+avi_t* AVI_open_output_file(char * filename)
+{
+   avi_t *AVI;
+   int i;
+
+   int mask = 0;
+   
+   unsigned char AVI_header[HEADERBYTES];
+
+   /* Allocate the avi_t struct and zero it */
+
+   AVI = (avi_t *) malloc(sizeof(avi_t));
+   if(AVI==0)
+   {
+      AVI_errno = AVI_ERR_NO_MEM;
+      return 0;
+   }
+   memset((void *)AVI,0,sizeof(avi_t));
+
+   /* Since Linux needs a long time when deleting big files,
+      we do not truncate the file when we open it.
+      Instead it is truncated when the AVI file is closed */
+
+  /* mask = umask (0);
+   umask (mask);*/
+
+   AVI->fdes = open(filename, O_RDWR|O_CREAT|O_BINARY, 0644 &~ mask);
+   if (AVI->fdes < 0)
+   {
+      AVI_errno = AVI_ERR_OPEN;
+      free(AVI);
+      return 0;
+   }
+
+   /* Write out HEADERBYTES bytes, the header will go here
+      when we are finished with writing */
+
+   for (i=0;i<HEADERBYTES;i++) AVI_header[i] = 0;
+   i = avi_write(AVI->fdes,(char *)AVI_header,HEADERBYTES);
+   if (i != HEADERBYTES)
+   {
+      close(AVI->fdes);
+      AVI_errno = AVI_ERR_WRITE;
+      free(AVI);
+      return 0;
+   }
+
+   AVI->pos  = HEADERBYTES;
+   AVI->mode = AVI_MODE_WRITE; /* open for writing */
+
+   //init
+   AVI->anum = 0;
+   AVI->aptr = 0;
+
+   return AVI;
+}
+
+void AVI_set_video(avi_t *AVI, int width, int height, double fps, char *compressor)
+{
+   /* may only be called if file is open for writing */
+
+   if(AVI->mode==AVI_MODE_READ) return;
+
+   AVI->width  = width;
+   AVI->height = height;
+   AVI->fps    = fps;
+   
+   if(strncmp(compressor, "RGB", 3)==0) {
+     memset(AVI->compressor, 0, 4);
+   } else {
+     memcpy(AVI->compressor,compressor,4);
+   }     
+   
+   AVI->compressor[4] = 0;
+
+   avi_update_header(AVI);
+}
+
+void AVI_set_audio(avi_t *AVI, int channels, long rate, int bits, int format, long mp3rate)
+{
+   /* may only be called if file is open for writing */
+
+   if(AVI->mode==AVI_MODE_READ) return;
+
+   //inc audio tracks
+   AVI->aptr=AVI->anum;
+   ++AVI->anum;
+
+   if(AVI->anum > AVI_MAX_TRACKS) {
+     fprintf(stderr, "error - only %d audio tracks supported\n", AVI_MAX_TRACKS);
+     exit(1);
+   }
+
+   AVI->track[AVI->aptr].a_chans = channels;
+   AVI->track[AVI->aptr].a_rate  = rate;
+   AVI->track[AVI->aptr].a_bits  = bits;
+   AVI->track[AVI->aptr].a_fmt   = format;
+   AVI->track[AVI->aptr].mp3rate = mp3rate;
+
+   avi_update_header(AVI);
+}
+
+#define OUT4CC(s) \
+   if(nhb<=HEADERBYTES-4) memcpy(AVI_header+nhb,s,4); nhb += 4
+
+#define OUTLONG(n) \
+   if(nhb<=HEADERBYTES-4) long2str(AVI_header+nhb,n); nhb += 4
+
+#define OUTSHRT(n) \
+   if(nhb<=HEADERBYTES-2) { \
+      AVI_header[nhb  ] = (n   )&0xff; \
+      AVI_header[nhb+1] = (n>>8)&0xff; \
+   } \
+   nhb += 2
+
+
+//ThOe write preliminary AVI file header: 0 frames, max vid/aud size
+int avi_update_header(avi_t *AVI)
+{
+   int njunk, sampsize, hasIndex, ms_per_frame, frate, flag;
+   int movi_len, hdrl_start, strl_start, j;
+   unsigned char AVI_header[HEADERBYTES];
+   long nhb;
+
+   //assume max size
+   movi_len = AVI_MAX_LEN - HEADERBYTES + 4;
+
+   //assume index will be written
+   hasIndex=1;
+
+   if(AVI->fps < 0.001) {
+     frate=0;
+     ms_per_frame=0;
+   } else {
+     frate = (int) (FRAME_RATE_SCALE*AVI->fps + 0.5);
+     ms_per_frame=(int) (1000000/AVI->fps + 0.5);
+   }
+
+   /* Prepare the file header */
+
+   nhb = 0;
+
+   /* The RIFF header */
+
+   OUT4CC ("RIFF");
+   OUTLONG(movi_len);    // assume max size
+   OUT4CC ("AVI ");
+
+   /* Start the header list */
+
+   OUT4CC ("LIST");
+   OUTLONG(0);        /* Length of list in bytes, don't know yet */
+   hdrl_start = nhb;  /* Store start position */
+   OUT4CC ("hdrl");
+
+   /* The main AVI header */
+
+   /* The Flags in AVI File header */
+
+#define AVIF_HASINDEX           0x00000010      /* Index at end of file */
+#define AVIF_MUSTUSEINDEX       0x00000020
+#define AVIF_ISINTERLEAVED      0x00000100
+#define AVIF_TRUSTCKTYPE        0x00000800      /* Use CKType to find key frames */
+#define AVIF_WASCAPTUREFILE     0x00010000
+#define AVIF_COPYRIGHTED        0x00020000
+
+   OUT4CC ("avih");
+   OUTLONG(56);                 /* # of bytes to follow */
+   OUTLONG(ms_per_frame);       /* Microseconds per frame */
+   //ThOe ->0 
+   //   OUTLONG(10000000);           /* MaxBytesPerSec, I hope this will never be used */
+   OUTLONG(0);
+   OUTLONG(0);                  /* PaddingGranularity (whatever that might be) */
+                                /* Other sources call it 'reserved' */
+   flag = AVIF_ISINTERLEAVED;
+   if(hasIndex) flag |= AVIF_HASINDEX;
+   if(hasIndex && AVI->must_use_index) flag |= AVIF_MUSTUSEINDEX;
+   OUTLONG(flag);               /* Flags */
+   OUTLONG(0);                  // no frames yet
+   OUTLONG(0);                  /* InitialFrames */
+
+   OUTLONG(AVI->anum+1);
+
+   OUTLONG(0);                  /* SuggestedBufferSize */
+   OUTLONG(AVI->width);         /* Width */
+   OUTLONG(AVI->height);        /* Height */
+                                /* MS calls the following 'reserved': */
+   OUTLONG(0);                  /* TimeScale:  Unit used to measure time */
+   OUTLONG(0);                  /* DataRate:   Data rate of playback     */
+   OUTLONG(0);                  /* StartTime:  Starting time of AVI data */
+   OUTLONG(0);                  /* DataLength: Size of AVI data chunk    */
+
+
+   /* Start the video stream list ---------------------------------- */
+
+   OUT4CC ("LIST");
+   OUTLONG(0);        /* Length of list in bytes, don't know yet */
+   strl_start = nhb;  /* Store start position */
+   OUT4CC ("strl");
+
+   /* The video stream header */
+
+   OUT4CC ("strh");
+   OUTLONG(56);                 /* # of bytes to follow */
+   OUT4CC ("vids");             /* Type */
+   OUT4CC (AVI->compressor);    /* Handler */
+   OUTLONG(0);                  /* Flags */
+   OUTLONG(0);                  /* Reserved, MS says: wPriority, wLanguage */
+   OUTLONG(0);                  /* InitialFrames */
+   OUTLONG(FRAME_RATE_SCALE);              /* Scale */
+   OUTLONG(frate);              /* Rate: Rate/Scale == samples/second */
+   OUTLONG(0);                  /* Start */
+   OUTLONG(0);                  // no frames yet
+   OUTLONG(0);                  /* SuggestedBufferSize */
+   OUTLONG(-1);                 /* Quality */
+   OUTLONG(0);                  /* SampleSize */
+   OUTLONG(0);                  /* Frame */
+   OUTLONG(0);                  /* Frame */
+   //   OUTLONG(0);                  /* Frame */
+   //OUTLONG(0);                  /* Frame */
+
+   /* The video stream format */
+
+   OUT4CC ("strf");
+   OUTLONG(40);                 /* # of bytes to follow */
+   OUTLONG(40);                 /* Size */
+   OUTLONG(AVI->width);         /* Width */
+   OUTLONG(AVI->height);        /* Height */
+   OUTSHRT(1); OUTSHRT(24);     /* Planes, Count */
+   OUT4CC (AVI->compressor);    /* Compression */
+   // ThOe (*3)
+   OUTLONG(AVI->width*AVI->height*3);  /* SizeImage (in bytes?) */
+   OUTLONG(0);                  /* XPelsPerMeter */
+   OUTLONG(0);                  /* YPelsPerMeter */
+   OUTLONG(0);                  /* ClrUsed: Number of colors used */
+   OUTLONG(0);                  /* ClrImportant: Number of colors important */
+
+   /* Finish stream list, i.e. put number of bytes in the list to proper pos */
+
+   long2str(AVI_header+strl_start-4,nhb-strl_start);
+
+   
+   /* Start the audio stream list ---------------------------------- */
+   
+   for(j=0; j<AVI->anum; ++j) {
+       
+       sampsize = avi_sampsize(AVI, j);
+   
+       OUT4CC ("LIST");
+       OUTLONG(0);        /* Length of list in bytes, don't know yet */
+       strl_start = nhb;  /* Store start position */
+       OUT4CC ("strl");
+       
+       /* The audio stream header */
+       
+       OUT4CC ("strh");
+       OUTLONG(56);            /* # of bytes to follow */
+       OUT4CC ("auds");
+       
+       // -----------
+       // ThOe
+       OUTLONG(0);             /* Format (Optionally) */
+       // -----------
+       
+       OUTLONG(0);             /* Flags */
+       OUTLONG(0);             /* Reserved, MS says: wPriority, wLanguage */
+       OUTLONG(0);             /* InitialFrames */
+       
+       // ThOe /4
+       OUTLONG(sampsize/4);      /* Scale */
+       OUTLONG(1000*AVI->track[j].mp3rate/8);
+       OUTLONG(0);             /* Start */
+       OUTLONG(4*AVI->track[j].audio_bytes/sampsize);   /* Length */
+       OUTLONG(0);             /* SuggestedBufferSize */
+       OUTLONG(-1);            /* Quality */
+       
+       // ThOe /4
+       OUTLONG(sampsize/4);    /* SampleSize */
+       
+       OUTLONG(0);             /* Frame */
+       OUTLONG(0);             /* Frame */
+       //       OUTLONG(0);             /* Frame */
+       //OUTLONG(0);             /* Frame */
+       
+       /* The audio stream format */
+       
+       OUT4CC ("strf");
+       OUTLONG(16);                   /* # of bytes to follow */
+       OUTSHRT(AVI->track[j].a_fmt);           /* Format */
+       OUTSHRT(AVI->track[j].a_chans);         /* Number of channels */
+       OUTLONG(AVI->track[j].a_rate);          /* SamplesPerSec */
+       // ThOe
+       OUTLONG(1000*AVI->track[j].mp3rate/8);
+       //ThOe (/4)
+       
+       OUTSHRT(sampsize/4);           /* BlockAlign */
+       
+       
+       OUTSHRT(AVI->track[j].a_bits);          /* BitsPerSample */
+       
+       /* Finish stream list, i.e. put number of bytes in the list to proper pos */
+       
+       long2str(AVI_header+strl_start-4,nhb-strl_start);
+   }
+   
+   /* Finish header list */
+   
+   long2str(AVI_header+hdrl_start-4,nhb-hdrl_start);
+   
+   
+   /* Calculate the needed amount of junk bytes, output junk */
+   
+   njunk = HEADERBYTES - nhb - 8 - 12;
+   
+   /* Safety first: if njunk <= 0, somebody has played with
+      HEADERBYTES without knowing what (s)he did.
+      This is a fatal error */
+   
+   if(njunk<=0)
+     {
+       fprintf(stderr,"AVI_close_output_file: # of header bytes too small\n");
+       exit(1);
+     }
+   
+   OUT4CC ("JUNK");
+   OUTLONG(njunk);
+   memset(AVI_header+nhb,0,njunk);
+   
+   //11/14/01 added id string 
+
+   if(njunk > strlen(id_str)+8) {
+     sprintf(id_str, "%s-%s", PACKAGE, VERSION);
+     memcpy(AVI_header+nhb, id_str, strlen(id_str));
+   }
+   
+   nhb += njunk;
+
+   /* Start the movi list */
+
+   OUT4CC ("LIST");
+   OUTLONG(movi_len); /* Length of list in bytes */
+   OUT4CC ("movi");
+
+   /* Output the header, truncate the file to the number of bytes
+      actually written, report an error if someting goes wrong */
+
+   if ( lseek(AVI->fdes,0,SEEK_SET)<0 ||
+        avi_write(AVI->fdes,(char *)AVI_header,HEADERBYTES)!=HEADERBYTES ||
+       lseek(AVI->fdes,AVI->pos,SEEK_SET)<0)
+     {
+       AVI_errno = AVI_ERR_CLOSE;
+       return -1;
+     }
+
+   return 0;
+}
+
+/*
+  Write the header of an AVI file and close it.
+  returns 0 on success, -1 on write error.
+*/
+
+static int avi_close_output_file(avi_t *AVI)
+{
+
+   int ret, njunk, sampsize, hasIndex, ms_per_frame, frate, idxerror, flag;
+   unsigned long movi_len;
+   int hdrl_start, strl_start, j;
+   unsigned char AVI_header[HEADERBYTES];
+   long nhb;
+
+#ifdef INFO_LIST
+   long info_len;
+//   time_t calptr;
+#endif
+
+   /* Calculate length of movi list */
+
+   movi_len = AVI->pos - HEADERBYTES + 4;
+
+   /* Try to ouput the index entries. This may fail e.g. if no space
+      is left on device. We will report this as an error, but we still
+      try to write the header correctly (so that the file still may be
+      readable in the most cases */
+
+   idxerror = 0;
+   //   fprintf(stderr, "pos=%lu, index_len=%ld             \n", AVI->pos, AVI->n_idx*16);
+   ret = avi_add_chunk(AVI, (unsigned char *)"idx1", (void*)AVI->idx, AVI->n_idx*16);
+   hasIndex = (ret==0);
+   //fprintf(stderr, "pos=%lu, index_len=%d\n", AVI->pos, hasIndex);
+
+   if(ret) {
+     idxerror = 1;
+     AVI_errno = AVI_ERR_WRITE_INDEX;
+   }
+   
+   /* Calculate Microseconds per frame */
+
+   if(AVI->fps < 0.001) {
+     frate=0;
+     ms_per_frame=0;
+   } else {
+     frate = (int) (FRAME_RATE_SCALE*AVI->fps + 0.5);
+     ms_per_frame=(int) (1000000/AVI->fps + 0.5);
+   }
+
+   /* Prepare the file header */
+
+   nhb = 0;
+
+   /* The RIFF header */
+
+   OUT4CC ("RIFF");
+   OUTLONG(AVI->pos - 8);    /* # of bytes to follow */
+   OUT4CC ("AVI ");
+
+   /* Start the header list */
+
+   OUT4CC ("LIST");
+   OUTLONG(0);        /* Length of list in bytes, don't know yet */
+   hdrl_start = nhb;  /* Store start position */
+   OUT4CC ("hdrl");
+
+   /* The main AVI header */
+
+   /* The Flags in AVI File header */
+
+#define AVIF_HASINDEX           0x00000010      /* Index at end of file */
+#define AVIF_MUSTUSEINDEX       0x00000020
+#define AVIF_ISINTERLEAVED      0x00000100
+#define AVIF_TRUSTCKTYPE        0x00000800      /* Use CKType to find key frames */
+#define AVIF_WASCAPTUREFILE     0x00010000
+#define AVIF_COPYRIGHTED        0x00020000
+
+   OUT4CC ("avih");
+   OUTLONG(56);                 /* # of bytes to follow */
+   OUTLONG(ms_per_frame);       /* Microseconds per frame */
+   //ThOe ->0 
+   //   OUTLONG(10000000);           /* MaxBytesPerSec, I hope this will never be used */
+   OUTLONG(0);
+   OUTLONG(0);                  /* PaddingGranularity (whatever that might be) */
+                                /* Other sources call it 'reserved' */
+   flag = AVIF_ISINTERLEAVED;
+   if(hasIndex) flag |= AVIF_HASINDEX;
+   if(hasIndex && AVI->must_use_index) flag |= AVIF_MUSTUSEINDEX;
+   OUTLONG(flag);               /* Flags */
+   OUTLONG(AVI->video_frames);  /* TotalFrames */
+   OUTLONG(0);                  /* InitialFrames */
+
+   OUTLONG(AVI->anum+1);
+//   if (AVI->track[0].audio_bytes)
+//      { OUTLONG(2); }           /* Streams */
+//   else
+//      { OUTLONG(1); }           /* Streams */
+
+   OUTLONG(0);                  /* SuggestedBufferSize */
+   OUTLONG(AVI->width);         /* Width */
+   OUTLONG(AVI->height);        /* Height */
+                                /* MS calls the following 'reserved': */
+   OUTLONG(0);                  /* TimeScale:  Unit used to measure time */
+   OUTLONG(0);                  /* DataRate:   Data rate of playback     */
+   OUTLONG(0);                  /* StartTime:  Starting time of AVI data */
+   OUTLONG(0);                  /* DataLength: Size of AVI data chunk    */
+
+
+   /* Start the video stream list ---------------------------------- */
+
+   OUT4CC ("LIST");
+   OUTLONG(0);        /* Length of list in bytes, don't know yet */
+   strl_start = nhb;  /* Store start position */
+   OUT4CC ("strl");
+
+   /* The video stream header */
+
+   OUT4CC ("strh");
+   OUTLONG(56);                 /* # of bytes to follow */
+   OUT4CC ("vids");             /* Type */
+   OUT4CC (AVI->compressor);    /* Handler */
+   OUTLONG(0);                  /* Flags */
+   OUTLONG(0);                  /* Reserved, MS says: wPriority, wLanguage */
+   OUTLONG(0);                  /* InitialFrames */
+   OUTLONG(FRAME_RATE_SCALE);              /* Scale */
+   OUTLONG(frate);              /* Rate: Rate/Scale == samples/second */
+   OUTLONG(0);                  /* Start */
+   OUTLONG(AVI->video_frames);  /* Length */
+   OUTLONG(0);                  /* SuggestedBufferSize */
+   OUTLONG(-1);                 /* Quality */
+   OUTLONG(0);                  /* SampleSize */
+   OUTLONG(0);                  /* Frame */
+   OUTLONG(0);                  /* Frame */
+   //   OUTLONG(0);                  /* Frame */
+   //OUTLONG(0);                  /* Frame */
+
+   /* The video stream format */
+
+   OUT4CC ("strf");
+   OUTLONG(40);                 /* # of bytes to follow */
+   OUTLONG(40);                 /* Size */
+   OUTLONG(AVI->width);         /* Width */
+   OUTLONG(AVI->height);        /* Height */
+   OUTSHRT(1); OUTSHRT(24);     /* Planes, Count */
+   OUT4CC (AVI->compressor);    /* Compression */
+   // ThOe (*3)
+   OUTLONG(AVI->width*AVI->height*3);  /* SizeImage (in bytes?) */
+   OUTLONG(0);                  /* XPelsPerMeter */
+   OUTLONG(0);                  /* YPelsPerMeter */
+   OUTLONG(0);                  /* ClrUsed: Number of colors used */
+   OUTLONG(0);                  /* ClrImportant: Number of colors important */
+
+   /* Finish stream list, i.e. put number of bytes in the list to proper pos */
+
+   long2str(AVI_header+strl_start-4,nhb-strl_start);
+
+   /* Start the audio stream list ---------------------------------- */
+
+   for(j=0; j<AVI->anum; ++j) {
+     
+     //if (AVI->track[j].a_chans && AVI->track[j].audio_bytes)
+       {
+          
+        sampsize = avi_sampsize(AVI, j);
+          
+        OUT4CC ("LIST");
+        OUTLONG(0);        /* Length of list in bytes, don't know yet */
+        strl_start = nhb;  /* Store start position */
+        OUT4CC ("strl");
+          
+        /* The audio stream header */
+        
+        OUT4CC ("strh");
+        OUTLONG(56);            /* # of bytes to follow */
+        OUT4CC ("auds");
+        
+        // -----------
+        // ThOe
+        OUTLONG(0);             /* Format (Optionally) */
+          // -----------
+          
+        OUTLONG(0);             /* Flags */
+        OUTLONG(0);             /* Reserved, MS says: wPriority, wLanguage */
+        OUTLONG(0);             /* InitialFrames */
+          
+        // ThOe /4
+        OUTLONG(sampsize/4);      /* Scale */
+        OUTLONG(1000*AVI->track[j].mp3rate/8);
+        OUTLONG(0);             /* Start */
+        OUTLONG(4*AVI->track[j].audio_bytes/sampsize);   /* Length */
+        OUTLONG(0);             /* SuggestedBufferSize */
+        OUTLONG(-1);            /* Quality */
+          
+        // ThOe /4
+        OUTLONG(sampsize/4);    /* SampleSize */
+          
+        OUTLONG(0);             /* Frame */
+        OUTLONG(0);             /* Frame */
+        //      OUTLONG(0);             /* Frame */
+        //OUTLONG(0);             /* Frame */
+          
+        /* The audio stream format */
+        
+        OUT4CC ("strf");
+        OUTLONG(16);                   /* # of bytes to follow */
+        OUTSHRT(AVI->track[j].a_fmt);           /* Format */
+        OUTSHRT(AVI->track[j].a_chans);         /* Number of channels */
+        OUTLONG(AVI->track[j].a_rate);          /* SamplesPerSec */
+        // ThOe
+        OUTLONG(1000*AVI->track[j].mp3rate/8);
+        //ThOe (/4)
+        
+        OUTSHRT(sampsize/4);           /* BlockAlign */
+        
+        
+        OUTSHRT(AVI->track[j].a_bits);          /* BitsPerSample */
+        
+        /* Finish stream list, i.e. put number of bytes in the list to proper pos */
+       }
+       long2str(AVI_header+strl_start-4,nhb-strl_start);
+   }
+   
+   /* Finish header list */
+   
+   long2str(AVI_header+hdrl_start-4,nhb-hdrl_start);
+
+
+   // add INFO list --- (0.6.0pre4)
+
+#ifdef INFO_LIST
+   OUT4CC ("LIST");
+   
+   //FIXME
+   info_len = MAX_INFO_STRLEN + 12;
+   OUTLONG(info_len);
+   OUT4CC ("INFO");
+
+//   OUT4CC ("INAM");
+//   OUTLONG(MAX_INFO_STRLEN);
+
+//   sprintf(id_str, "\t");
+//   memset(AVI_header+nhb, 0, MAX_INFO_STRLEN);
+//   memcpy(AVI_header+nhb, id_str, strlen(id_str));
+//   nhb += MAX_INFO_STRLEN;
+
+   OUT4CC ("ISFT");
+   OUTLONG(MAX_INFO_STRLEN);
+
+   sprintf(id_str, "%s-%s", PACKAGE, VERSION);
+   memset(AVI_header+nhb, 0, MAX_INFO_STRLEN);
+   memcpy(AVI_header+nhb, id_str, strlen(id_str));
+   nhb += MAX_INFO_STRLEN;
+
+//   OUT4CC ("ICMT");
+//   OUTLONG(MAX_INFO_STRLEN);
+
+//   calptr=time(NULL); 
+//   sprintf(id_str, "\t%s %s", ctime(&calptr), "");
+//   memset(AVI_header+nhb, 0, MAX_INFO_STRLEN);
+//   memcpy(AVI_header+nhb, id_str, 25);
+//   nhb += MAX_INFO_STRLEN;
+#endif
+
+   // ----------------------------
+   
+   /* Calculate the needed amount of junk bytes, output junk */
+   
+   njunk = HEADERBYTES - nhb - 8 - 12;
+   
+   /* Safety first: if njunk <= 0, somebody has played with
+      HEADERBYTES without knowing what (s)he did.
+      This is a fatal error */
+   
+   if(njunk<=0)
+   {
+      fprintf(stderr,"AVI_close_output_file: # of header bytes too small\n");
+      exit(1);
+   }
+
+   OUT4CC ("JUNK");
+   OUTLONG(njunk);
+   memset(AVI_header+nhb,0,njunk);
+   
+   nhb += njunk;
+
+   /* Start the movi list */
+
+   OUT4CC ("LIST");
+   OUTLONG(movi_len); /* Length of list in bytes */
+   OUT4CC ("movi");
+
+   /* Output the header, truncate the file to the number of bytes
+      actually written, report an error if someting goes wrong */
+
+   if ( lseek(AVI->fdes,0,SEEK_SET)<0 ||
+        avi_write(AVI->fdes,(char *)AVI_header,HEADERBYTES)!=HEADERBYTES 
+        //|| ftruncate(AVI->fdes,AVI->pos)<0 
+        )
+   {
+      AVI_errno = AVI_ERR_CLOSE;
+      return -1;
+   }
+
+   if(idxerror) return -1;
+
+   return 0;
+}
+
+/*
+   AVI_write_data:
+   Add video or audio data to the file;
+
+   Return values:
+    0    No error;
+   -1    Error, AVI_errno is set appropriatly;
+
+*/
+
+static int avi_write_data(avi_t *AVI, char *data, unsigned long length, int audio, int keyframe)
+{
+   int n;
+
+   unsigned char astr[5];
+
+   /* Check for maximum file length */
+   
+   if ( (AVI->pos + 8 + length + 8 + (AVI->n_idx+1)*16) > AVI_MAX_LEN ) {
+     AVI_errno = AVI_ERR_SIZELIM;
+     return -1;
+   }
+   
+   /* Add index entry */
+
+   //set tag for current audio track
+   sprintf((char *)astr, "0%1dwb", AVI->aptr+1);
+
+   if(audio)
+     n = avi_add_index_entry(AVI,astr,0x00,AVI->pos,length);
+   else
+     n = avi_add_index_entry(AVI,(unsigned char *) "00db",((keyframe)?0x10:0x0),AVI->pos,length);
+   
+   if(n) return -1;
+   
+   /* Output tag and data */
+   
+   if(audio)
+     n = avi_add_chunk(AVI,(unsigned char *) astr, (unsigned char *)data,length);
+   else
+     n = avi_add_chunk(AVI,(unsigned char *)"00db",(unsigned char *)data,length);
+   
+   if (n) return -1;
+   
+   return 0;
+}
+
+int AVI_write_frame(avi_t *AVI, char *data, long bytes, int keyframe)
+{
+  unsigned long pos;
+  
+  if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+  
+  pos = AVI->pos;
+
+  if(avi_write_data(AVI,data,bytes,0,keyframe)) return -1;
+   
+  AVI->last_pos = pos;
+  AVI->last_len = bytes;
+  AVI->video_frames++;
+  return 0;
+}
+
+int AVI_dup_frame(avi_t *AVI)
+{
+   if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+
+   if(AVI->last_pos==0) return 0; /* No previous real frame */
+   if(avi_add_index_entry(AVI,(unsigned char *)"00db",0x10,AVI->last_pos,AVI->last_len)) return -1;
+   AVI->video_frames++;
+   AVI->must_use_index = 1;
+   return 0;
+}
+
+int AVI_write_audio(avi_t *AVI, char *data, long bytes)
+{
+   if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+
+   if( avi_write_data(AVI,data,bytes,1,0) ) return -1;
+   AVI->track[AVI->aptr].audio_bytes += bytes;
+   return 0;
+}
+
+
+int AVI_append_audio(avi_t *AVI, char *data, long bytes)
+{
+
+  long i, length, pos;
+  unsigned char c[4];
+
+  if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+  
+  // update last index entry:
+  
+  --AVI->n_idx;
+  length = str2ulong(AVI->idx[AVI->n_idx]+12);
+  pos    = str2ulong(AVI->idx[AVI->n_idx]+8);
+
+  //update;
+  long2str(AVI->idx[AVI->n_idx]+12,length+bytes);   
+
+  ++AVI->n_idx;
+
+  AVI->track[AVI->aptr].audio_bytes += bytes;
+
+  //update chunk header
+  lseek(AVI->fdes, pos+4, SEEK_SET);
+  long2str(c, length+bytes);     
+  avi_write(AVI->fdes,(char *) c, 4);
+
+  lseek(AVI->fdes, pos+8+length, SEEK_SET);
+
+  i=PAD_EVEN(length + bytes);
+
+  bytes = i - length;
+  avi_write(AVI->fdes, data, bytes);
+  AVI->pos = pos + 8 + i;
+
+  return 0;
+}
+
+
+long AVI_bytes_remain(avi_t *AVI)
+{
+   if(AVI->mode==AVI_MODE_READ) return 0;
+
+   return ( AVI_MAX_LEN - (AVI->pos + 8 + 16*AVI->n_idx));
+}
+
+long AVI_bytes_written(avi_t *AVI)
+{
+   if(AVI->mode==AVI_MODE_READ) return 0;
+
+   return (AVI->pos + 8 + 16*AVI->n_idx);
+}
+
+int AVI_set_audio_track(avi_t *AVI, int track)
+{
+  
+  if(track < 0 || track + 1 > AVI->anum) return(-1);
+
+  //this info is not written to file anyway
+  AVI->aptr=track;
+  return 0;
+}
+
+int AVI_get_audio_track(avi_t *AVI)
+{
+    return(AVI->aptr);
+}
+
+
+/*******************************************************************
+ *                                                                 *
+ *    Utilities for reading video and audio from an AVI File       *
+ *                                                                 *
+ *******************************************************************/
+
+int AVI_close(avi_t *AVI)
+{
+   int ret;
+
+   /* If the file was open for writing, the header and index still have
+      to be written */
+
+   if(AVI->mode == AVI_MODE_WRITE)
+      ret = avi_close_output_file(AVI);
+   else
+      ret = 0;
+
+   /* Even if there happened an error, we first clean up */
+
+   close(AVI->fdes);
+   if(AVI->idx) free(AVI->idx);
+   if(AVI->video_index) free(AVI->video_index);
+   //FIXME
+   //if(AVI->audio_index) free(AVI->audio_index);
+   free(AVI);
+
+   return ret;
+}
+
+
+#define ERR_EXIT(x) \
+{ \
+   AVI_close(AVI); \
+   AVI_errno = x; \
+   return 0; \
+}
+
+avi_t *AVI_open_input_file(char *filename, int getIndex)
+{
+  avi_t *AVI=NULL;
+  
+  /* Create avi_t structure */
+  
+  AVI = (avi_t *) malloc(sizeof(avi_t));
+  if(AVI==NULL)
+    {
+      AVI_errno = AVI_ERR_NO_MEM;
+      return 0;
+    }
+  memset((void *)AVI,0,sizeof(avi_t));
+  
+  AVI->mode = AVI_MODE_READ; /* open for reading */
+  
+  /* Open the file */
+  
+  AVI->fdes = open(filename,O_RDONLY|O_BINARY);
+  if(AVI->fdes < 0)
+    {
+      AVI_errno = AVI_ERR_OPEN;
+      free(AVI);
+      return 0;
+    }
+  
+  avi_parse_input_file(AVI, getIndex);
+
+  AVI->aptr=0; //reset  
+
+  return AVI;
+}
+
+avi_t *AVI_open_fd(int fd, int getIndex)
+{
+  avi_t *AVI=NULL;
+  
+  /* Create avi_t structure */
+  
+  AVI = (avi_t *) malloc(sizeof(avi_t));
+  if(AVI==NULL)
+    {
+      AVI_errno = AVI_ERR_NO_MEM;
+      return 0;
+    }
+  memset((void *)AVI,0,sizeof(avi_t));
+  
+  AVI->mode = AVI_MODE_READ; /* open for reading */
+  
+  // file alread open
+  AVI->fdes = fd;
+  
+  avi_parse_input_file(AVI, getIndex);
+
+  AVI->aptr=0; //reset
+  
+  return AVI;
+}
+
+int avi_parse_input_file(avi_t *AVI, int getIndex)
+{
+  long i, n, rate, scale, idx_type;
+  unsigned char *hdrl_data;
+  long header_offset=0, hdrl_len=0;
+  long nvi, nai[AVI_MAX_TRACKS], ioff;
+  long tot[AVI_MAX_TRACKS];
+  int j;
+  int lasttag = 0;
+  int vids_strh_seen = 0;
+  int vids_strf_seen = 0;
+  int auds_strh_seen = 0;
+  //  int auds_strf_seen = 0;
+  int num_stream = 0;
+  char data[256];
+  
+  /* Read first 12 bytes and check that this is an AVI file */
+
+   if( avi_read(AVI->fdes,data,12) != 12 ) ERR_EXIT(AVI_ERR_READ)
+
+   if( strncasecmp(data  ,"RIFF",4) !=0 ||
+       strncasecmp(data+8,"AVI ",4) !=0 ) ERR_EXIT(AVI_ERR_NO_AVI)
+
+   /* Go through the AVI file and extract the header list,
+      the start position of the 'movi' list and an optionally
+      present idx1 tag */
+
+   hdrl_data = 0;
+
+   while(1)
+   {
+      if( avi_read(AVI->fdes,data,8) != 8 ) break; /* We assume it's EOF */
+
+      n = str2ulong((unsigned char *) data+4);
+      n = PAD_EVEN(n);
+
+      if(strncasecmp(data,"LIST",4) == 0)
+      {
+         if( avi_read(AVI->fdes,data,4) != 4 ) ERR_EXIT(AVI_ERR_READ)
+         n -= 4;
+         if(strncasecmp(data,"hdrl",4) == 0)
+         {
+            hdrl_len = n;
+            hdrl_data = (unsigned char *) malloc(n);
+            if(hdrl_data==0) ERR_EXIT(AVI_ERR_NO_MEM);
+                                
+           // offset of header
+           
+           header_offset = lseek(AVI->fdes,0,SEEK_CUR);
+                                
+            if( avi_read(AVI->fdes,(char *)hdrl_data,n) != n ) ERR_EXIT(AVI_ERR_READ)
+         }
+         else if(strncasecmp(data,"movi",4) == 0)
+         {
+            AVI->movi_start = lseek(AVI->fdes,0,SEEK_CUR);
+            lseek(AVI->fdes,n,SEEK_CUR);
+         }
+         else
+            lseek(AVI->fdes,n,SEEK_CUR);
+      }
+      else if(strncasecmp(data,"idx1",4) == 0)
+      {
+         /* n must be a multiple of 16, but the reading does not
+            break if this is not the case */
+
+         AVI->n_idx = AVI->max_idx = n/16;
+         AVI->idx = (unsigned  char((*)[16]) ) malloc(n);
+         if(AVI->idx==0) ERR_EXIT(AVI_ERR_NO_MEM)
+         if(avi_read(AVI->fdes, (char *) AVI->idx, n) != n ) ERR_EXIT(AVI_ERR_READ)
+      }
+      else
+         lseek(AVI->fdes,n,SEEK_CUR);
+   }
+
+   if(!hdrl_data      ) ERR_EXIT(AVI_ERR_NO_HDRL)
+   if(!AVI->movi_start) ERR_EXIT(AVI_ERR_NO_MOVI)
+
+   /* Interpret the header list */
+
+   for(i=0;i<hdrl_len;)
+   {
+      /* List tags are completly ignored */
+
+      if(strncasecmp((char *) hdrl_data+i, "LIST",4)==0) { i+= 12; continue; }
+
+      n = str2ulong(hdrl_data+i+4);
+      n = PAD_EVEN(n);
+
+      /* Interpret the tag and its args */
+
+      if(strncasecmp((char *)hdrl_data+i,"strh",4)==0)
+      {
+         i += 8;
+         if(strncasecmp((char *)hdrl_data+i,"vids",4) == 0 && !vids_strh_seen)
+         {
+            memcpy(AVI->compressor,hdrl_data+i+4,4);
+            AVI->compressor[4] = 0;
+
+           // ThOe
+           AVI->v_codech_off = header_offset + i+4;
+
+            scale = str2ulong((unsigned char *)hdrl_data+i+20);
+            rate  = str2ulong(hdrl_data+i+24);
+            if(scale!=0) AVI->fps = (double)rate/(double)scale;
+            AVI->video_frames = str2ulong(hdrl_data+i+32);
+            AVI->video_strn = num_stream;
+           AVI->max_len = 0;
+            vids_strh_seen = 1;
+            lasttag = 1; /* vids */
+         }
+         else if (strncasecmp ((char *) hdrl_data+i,"auds",4) ==0 && ! auds_strh_seen)
+         {
+
+          //inc audio tracks
+          AVI->aptr=AVI->anum;
+          ++AVI->anum;
+          
+          if(AVI->anum > AVI_MAX_TRACKS) {
+            fprintf(stderr, "error - only %d audio tracks supported\n", AVI_MAX_TRACKS);
+            return(-1);
+          }
+          
+          AVI->track[AVI->aptr].audio_bytes = str2ulong(hdrl_data+i+32)*avi_sampsize(AVI, 0);
+          AVI->track[AVI->aptr].audio_strn = num_stream;
+          //      auds_strh_seen = 1;
+          lasttag = 2; /* auds */
+          
+          // ThOe
+          AVI->track[AVI->aptr].a_codech_off = header_offset + i;
+          
+         }
+         else
+            lasttag = 0;
+         num_stream++;
+      }
+      else if(strncasecmp((char *) hdrl_data+i,"strf",4)==0)
+      {
+         i += 8;
+         if(lasttag == 1)
+         {
+            AVI->width  = str2ulong(hdrl_data+i+4);
+            AVI->height = str2ulong(hdrl_data+i+8);
+            vids_strf_seen = 1;
+           //ThOe
+           AVI->v_codecf_off = header_offset + i+16;
+
+           memcpy(AVI->compressor2, hdrl_data+i+16, 4);
+            AVI->compressor2[4] = 0;
+
+         }
+         else if(lasttag == 2)
+         {
+            AVI->track[AVI->aptr].a_fmt   = str2ushort(hdrl_data+i  );
+
+           //ThOe
+           AVI->track[AVI->aptr].a_codecf_off = header_offset + i;
+           
+            AVI->track[AVI->aptr].a_chans = str2ushort(hdrl_data+i+2);
+            AVI->track[AVI->aptr].a_rate  = str2ulong (hdrl_data+i+4);
+           //ThOe: read mp3bitrate
+           AVI->track[AVI->aptr].mp3rate = 8*str2ulong(hdrl_data+i+8)/1000;
+           //:ThOe
+            AVI->track[AVI->aptr].a_bits  = str2ushort(hdrl_data+i+14);
+           //            auds_strf_seen = 1;
+         }
+         lasttag = 0;
+      }
+      else
+      {
+         i += 8;
+         lasttag = 0;
+      }
+
+      i += n;
+   }
+
+   free(hdrl_data);
+
+   if(!vids_strh_seen || !vids_strf_seen) ERR_EXIT(AVI_ERR_NO_VIDS)
+
+   AVI->video_tag[0] = AVI->video_strn/10 + '0';
+   AVI->video_tag[1] = AVI->video_strn%10 + '0';
+   AVI->video_tag[2] = 'd';
+   AVI->video_tag[3] = 'b';
+
+   /* Audio tag is set to "99wb" if no audio present */
+   if(!AVI->track[0].a_chans) AVI->track[0].audio_strn = 99;
+
+   for(j=0; j<AVI->anum; ++j) {
+     AVI->track[j].audio_tag[0] = (j+1)/10 + '0';
+     AVI->track[j].audio_tag[1] = (j+1)%10 + '0';
+     AVI->track[j].audio_tag[2] = 'w';
+     AVI->track[j].audio_tag[3] = 'b';
+   }
+
+   lseek(AVI->fdes,AVI->movi_start,SEEK_SET);
+
+   /* get index if wanted */
+
+   if(!getIndex) return(0);
+
+   /* if the file has an idx1, check if this is relative
+      to the start of the file or to the start of the movi list */
+
+   idx_type = 0;
+
+   if(AVI->idx)
+   {
+      long pos, len;
+
+      /* Search the first videoframe in the idx1 and look where
+         it is in the file */
+
+      for(i=0;i<AVI->n_idx;i++)
+         if( strncasecmp((char *) AVI->idx[i],(char *) AVI->video_tag,3)==0 ) break;
+      if(i>=AVI->n_idx) ERR_EXIT(AVI_ERR_NO_VIDS)
+
+      pos = str2ulong(AVI->idx[i]+ 8);
+      len = str2ulong(AVI->idx[i]+12);
+
+      lseek(AVI->fdes,pos,SEEK_SET);
+      if(avi_read(AVI->fdes,data,8)!=8) ERR_EXIT(AVI_ERR_READ)
+      if( strncasecmp((char *)data,(char *)AVI->idx[i],4)==0 && 
+      str2ulong((unsigned char *)data+4)==len )
+      {
+         idx_type = 1; /* Index from start of file */
+      }
+      else
+      {
+         lseek(AVI->fdes,pos+AVI->movi_start-4,SEEK_SET);
+         if(avi_read(AVI->fdes,data,8)!=8) ERR_EXIT(AVI_ERR_READ)
+         if( strncasecmp((char *)data,(char *)AVI->idx[i],4)==0 && str2ulong((unsigned char *)data+4)==len )
+         {
+            idx_type = 2; /* Index from start of movi list */
+         }
+      }
+      /* idx_type remains 0 if neither of the two tests above succeeds */
+   }
+
+   if(idx_type == 0)
+   {
+      /* we must search through the file to get the index */
+
+      lseek(AVI->fdes, AVI->movi_start, SEEK_SET);
+
+      AVI->n_idx = 0;
+
+      while(1)
+      {
+         if( avi_read(AVI->fdes,data,8) != 8 ) break;
+         n = str2ulong((unsigned char *)data+4);
+
+         /* The movi list may contain sub-lists, ignore them */
+
+         if(strncasecmp(data,"LIST",4)==0)
+         {
+            lseek(AVI->fdes,4,SEEK_CUR);
+            continue;
+         }
+
+         /* Check if we got a tag ##db, ##dc or ##wb */
+        
+         if( ( (data[2]=='d' || data[2]=='D') &&
+               (data[3]=='b' || data[3]=='B' || data[3]=='c' || data[3]=='C') )
+            || ( (data[2]=='w' || data[2]=='W') &&
+                 (data[3]=='b' || data[3]=='B') ) )
+          {
+          avi_add_index_entry(AVI,(unsigned char *) data,0,lseek(AVI->fdes,0,SEEK_CUR)-8,n);
+         }
+        
+         lseek(AVI->fdes,PAD_EVEN(n),SEEK_CUR);
+      }
+      idx_type = 1;
+   }
+
+   /* Now generate the video index and audio index arrays */
+
+   nvi = 0;
+   for(j=0; j<AVI->anum; ++j) nai[j] = 0;
+
+   for(i=0;i<AVI->n_idx;i++) {
+     
+     if(strncasecmp((char *)AVI->idx[i],(char *) AVI->video_tag,3) == 0) nvi++;
+     
+     for(j=0; j<AVI->anum; ++j) if(strncasecmp((char *)AVI->idx[i], AVI->track[j].audio_tag,4) == 0) nai[j]++;
+   }
+   
+   AVI->video_frames = nvi;
+   for(j=0; j<AVI->anum; ++j) AVI->track[j].audio_chunks = nai[j];
+
+//   fprintf(stderr, "chunks = %ld %d %s\n", AVI->track[0].audio_chunks, AVI->anum, AVI->track[0].audio_tag);
+
+   if(AVI->video_frames==0) ERR_EXIT(AVI_ERR_NO_VIDS);
+   AVI->video_index = (video_index_entry *) malloc(nvi*sizeof(video_index_entry));
+   if(AVI->video_index==0) ERR_EXIT(AVI_ERR_NO_MEM);
+   
+   for(j=0; j<AVI->anum; ++j) {
+       if(AVI->track[j].audio_chunks) {
+          AVI->track[j].audio_index = (audio_index_entry *) malloc(nai[j]*sizeof(audio_index_entry));
+          if(AVI->track[j].audio_index==0) ERR_EXIT(AVI_ERR_NO_MEM);
+       }
+   }   
+   
+   nvi = 0;
+   for(j=0; j<AVI->anum; ++j) nai[j] = tot[j] = 0;
+   
+   ioff = idx_type == 1 ? 8 : AVI->movi_start+4;
+   
+   for(i=0;i<AVI->n_idx;i++) {
+
+     //video
+     if(strncasecmp((char *)AVI->idx[i],(char *)AVI->video_tag,3) == 0) {
+       AVI->video_index[nvi].key = str2ulong(AVI->idx[i]+ 4);
+       AVI->video_index[nvi].pos = str2ulong(AVI->idx[i]+ 8)+ioff;
+       AVI->video_index[nvi].len = str2ulong(AVI->idx[i]+12);
+       nvi++;
+     }
+     
+     //audio
+     for(j=0; j<AVI->anum; ++j) {
+        
+       if(strncasecmp((char *)AVI->idx[i],AVI->track[j].audio_tag,4) == 0) {
+        AVI->track[j].audio_index[nai[j]].pos = str2ulong(AVI->idx[i]+ 8)+ioff;
+        AVI->track[j].audio_index[nai[j]].len = str2ulong(AVI->idx[i]+12);
+        AVI->track[j].audio_index[nai[j]].tot = tot[j];
+        tot[j] += AVI->track[j].audio_index[nai[j]].len;
+        nai[j]++;
+       }
+     }
+   }
+   
+   
+   for(j=0; j<AVI->anum; ++j) AVI->track[j].audio_bytes = tot[j];
+   
+   /* Reposition the file */
+   
+   lseek(AVI->fdes,AVI->movi_start,SEEK_SET);
+   AVI->video_pos = 0;
+
+   return(0);
+}
+
+long AVI_video_frames(avi_t *AVI)
+{
+   return AVI->video_frames;
+}
+int  AVI_video_width(avi_t *AVI)
+{
+   return AVI->width;
+}
+int  AVI_video_height(avi_t *AVI)
+{
+   return AVI->height;
+}
+double AVI_frame_rate(avi_t *AVI)
+{
+   return AVI->fps;
+}
+char* AVI_video_compressor(avi_t *AVI)
+{
+   return AVI->compressor2;
+}
+
+long AVI_max_video_chunk(avi_t *AVI)
+{
+   return AVI->max_len; 
+}
+
+int AVI_audio_tracks(avi_t *AVI)
+{
+    return(AVI->anum);
+}
+
+int AVI_audio_channels(avi_t *AVI)
+{
+   return AVI->track[AVI->aptr].a_chans;
+}
+
+long AVI_audio_mp3rate(avi_t *AVI)
+{
+   return AVI->track[AVI->aptr].mp3rate;
+}
+
+int AVI_audio_bits(avi_t *AVI)
+{
+   return AVI->track[AVI->aptr].a_bits;
+}
+
+int AVI_audio_format(avi_t *AVI)
+{
+   return AVI->track[AVI->aptr].a_fmt;
+}
+
+long AVI_audio_rate(avi_t *AVI)
+{
+   return AVI->track[AVI->aptr].a_rate;
+}
+
+long AVI_audio_bytes(avi_t *AVI)
+{
+   return AVI->track[AVI->aptr].audio_bytes;
+}
+
+long AVI_audio_chunks(avi_t *AVI)
+{
+   return AVI->track[AVI->aptr].audio_chunks;
+}
+
+long AVI_audio_codech_offset(avi_t *AVI)
+{
+   return AVI->track[AVI->aptr].a_codech_off;
+}
+
+long AVI_audio_codecf_offset(avi_t *AVI)
+{
+   return AVI->track[AVI->aptr].a_codecf_off;
+}
+
+long  AVI_video_codech_offset(avi_t *AVI)
+{
+    return AVI->v_codech_off;
+}
+
+long  AVI_video_codecf_offset(avi_t *AVI)
+{
+    return AVI->v_codecf_off;
+}
+
+long AVI_frame_size(avi_t *AVI, long frame)
+{
+   if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+   if(!AVI->video_index)         { AVI_errno = AVI_ERR_NO_IDX;   return -1; }
+
+   if(frame < 0 || frame >= AVI->video_frames) return 0;
+   return(AVI->video_index[frame].len);
+}
+
+long AVI_audio_size(avi_t *AVI, long frame)
+{
+  if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+  if(!AVI->track[AVI->aptr].audio_index)         { AVI_errno = AVI_ERR_NO_IDX;   return -1; }
+  
+  if(frame < 0 || frame >= AVI->track[AVI->aptr].audio_chunks) return 0;
+  return(AVI->track[AVI->aptr].audio_index[frame].len);
+}
+
+long AVI_get_video_position(avi_t *AVI, long frame)
+{
+   if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+   if(!AVI->video_index)         { AVI_errno = AVI_ERR_NO_IDX;   return -1; }
+
+   if(frame < 0 || frame >= AVI->video_frames) return 0;
+   return(AVI->video_index[frame].pos);
+}
+
+
+int AVI_seek_start(avi_t *AVI)
+{
+   if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+
+   lseek(AVI->fdes,AVI->movi_start,SEEK_SET);
+   AVI->video_pos = 0;
+   return 0;
+}
+
+int AVI_set_video_position(avi_t *AVI, long frame)
+{
+   if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+   if(!AVI->video_index)         { AVI_errno = AVI_ERR_NO_IDX;   return -1; }
+
+   if (frame < 0 ) frame = 0;
+   AVI->video_pos = frame;
+   return 0;
+}
+
+int AVI_set_audio_bitrate(avi_t *AVI, long bitrate)
+{
+   if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+
+   AVI->track[AVI->aptr].mp3rate = bitrate;
+   return 0;
+}
+      
+
+long AVI_read_frame(avi_t *AVI, char *vidbuf, int *keyframe)
+{
+   long n;
+
+   if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+   if(!AVI->video_index)         { AVI_errno = AVI_ERR_NO_IDX;   return -1; }
+
+   if(AVI->video_pos < 0 || AVI->video_pos >= AVI->video_frames) return -1;
+   n = AVI->video_index[AVI->video_pos].len;
+
+   *keyframe = (AVI->video_index[AVI->video_pos].key==0x10) ? 1:0;
+
+   lseek(AVI->fdes, AVI->video_index[AVI->video_pos].pos, SEEK_SET);
+
+   if (avi_read(AVI->fdes,vidbuf,n) != n)
+   {
+      AVI_errno = AVI_ERR_READ;
+      return -1;
+   }
+
+   AVI->video_pos++;
+
+   return n;
+}
+
+int AVI_set_audio_position(avi_t *AVI, long byte)
+{
+   long n0, n1, n;
+
+   if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+   if(!AVI->track[AVI->aptr].audio_index)         { AVI_errno = AVI_ERR_NO_IDX;   return -1; }
+
+   if(byte < 0) byte = 0;
+
+   /* Binary search in the audio chunks */
+
+   n0 = 0;
+   n1 = AVI->track[AVI->aptr].audio_chunks;
+
+   while(n0<n1-1)
+   {
+      n = (n0+n1)/2;
+      if(AVI->track[AVI->aptr].audio_index[n].tot>byte)
+         n1 = n;
+      else
+         n0 = n;
+   }
+
+   AVI->track[AVI->aptr].audio_posc = n0;
+   AVI->track[AVI->aptr].audio_posb = byte - AVI->track[AVI->aptr].audio_index[n0].tot;
+
+   return 0;
+}
+
+long AVI_read_audio(avi_t *AVI, char *audbuf, long bytes)
+{
+   long nr, pos, left, todo;
+
+   if(AVI->mode==AVI_MODE_WRITE) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }
+   if(!AVI->track[AVI->aptr].audio_index)         { AVI_errno = AVI_ERR_NO_IDX;   return -1; }
+
+   nr = 0; /* total number of bytes read */
+
+   while(bytes>0)
+   {
+      left = AVI->track[AVI->aptr].audio_index[AVI->track[AVI->aptr].audio_posc].len - AVI->track[AVI->aptr].audio_posb;
+      if(left==0)
+      {
+         if(AVI->track[AVI->aptr].audio_posc>=AVI->track[AVI->aptr].audio_chunks-1) return nr;
+         AVI->track[AVI->aptr].audio_posc++;
+         AVI->track[AVI->aptr].audio_posb = 0;
+         continue;
+      }
+      if(bytes<left)
+         todo = bytes;
+      else
+         todo = left;
+      pos = AVI->track[AVI->aptr].audio_index[AVI->track[AVI->aptr].audio_posc].pos + AVI->track[AVI->aptr].audio_posb;
+      lseek(AVI->fdes, pos, SEEK_SET);
+      if (avi_read(AVI->fdes,audbuf+nr,todo) != todo)
+      {
+         AVI_errno = AVI_ERR_READ;
+         return -1;
+      }
+      bytes -= todo;
+      nr    += todo;
+      AVI->track[AVI->aptr].audio_posb += todo;
+   }
+
+   return nr;
+}
+
+/* AVI_read_data: Special routine for reading the next audio or video chunk
+                  without having an index of the file. */
+
+int AVI_read_data(avi_t *AVI, char *vidbuf, long max_vidbuf,
+                              char *audbuf, long max_audbuf,
+                              long *len)
+{
+
+/*
+ * Return codes:
+ *
+ *    1 = video data read
+ *    2 = audio data read
+ *    0 = reached EOF
+ *   -1 = video buffer too small
+ *   -2 = audio buffer too small
+ */
+
+   int n;
+   char data[8];
+   if(AVI->mode==AVI_MODE_WRITE) return 0;
+
+   while(1)
+   {
+      /* Read tag and length */
+
+      if( avi_read(AVI->fdes,data,8) != 8 ) return 0;
+
+      /* if we got a list tag, ignore it */
+
+      if(strncasecmp(data,"LIST",4) == 0)
+      {
+         lseek(AVI->fdes,4,SEEK_CUR);
+         continue;
+      }
+
+      n = PAD_EVEN(str2ulong((unsigned char *)data+4));
+
+      if(strncasecmp(data,AVI->video_tag,3) == 0)
+      {
+         *len = n;
+         AVI->video_pos++;
+         if(n>max_vidbuf)
+         {
+            lseek(AVI->fdes,n,SEEK_CUR);
+            return -1;
+         }
+         if(avi_read(AVI->fdes,vidbuf,n) != n ) return 0;
+         return 1;
+      }
+      else if(strncasecmp(data,AVI->track[AVI->aptr].audio_tag,4) == 0)
+      {
+         *len = n;
+         if(n>max_audbuf)
+         {
+            lseek(AVI->fdes,n,SEEK_CUR);
+            return -2;
+         }
+         if(avi_read(AVI->fdes,audbuf,n) != n ) return 0;
+         return 2;
+         break;
+      }
+      else
+         if(lseek(AVI->fdes,n,SEEK_CUR)<0)  return 0;
+   }
+}
+
+/* AVI_print_error: Print most recent error (similar to perror) */
+
+char *(avi_errors[]) =
+{
+  /*  0 */ "avilib - No Error",
+  /*  1 */ "avilib - AVI file size limit reached",
+  /*  2 */ "avilib - Error opening AVI file",
+  /*  3 */ "avilib - Error reading from AVI file",
+  /*  4 */ "avilib - Error writing to AVI file",
+  /*  5 */ "avilib - Error writing index (file may still be useable)",
+  /*  6 */ "avilib - Error closing AVI file",
+  /*  7 */ "avilib - Operation (read/write) not permitted",
+  /*  8 */ "avilib - Out of memory (malloc failed)",
+  /*  9 */ "avilib - Not an AVI file",
+  /* 10 */ "avilib - AVI file has no header list (corrupted?)",
+  /* 11 */ "avilib - AVI file has no MOVI list (corrupted?)",
+  /* 12 */ "avilib - AVI file has no video data",
+  /* 13 */ "avilib - operation needs an index",
+  /* 14 */ "avilib - Unkown Error"
+};
+static int num_avi_errors = sizeof(avi_errors)/sizeof(char*);
+
+static char error_string[4096];
+
+void AVI_print_error(char *str)
+{
+   int aerrno;
+
+   aerrno = (AVI_errno>=0 && AVI_errno<num_avi_errors) ? AVI_errno : num_avi_errors-1;
+
+   fprintf(stderr,"%s: %s\n",str,avi_errors[aerrno]);
+
+   /* for the following errors, perror should report a more detailed reason: */
+
+   if(AVI_errno == AVI_ERR_OPEN ||
+      AVI_errno == AVI_ERR_READ ||
+      AVI_errno == AVI_ERR_WRITE ||
+      AVI_errno == AVI_ERR_WRITE_INDEX ||
+      AVI_errno == AVI_ERR_CLOSE )
+   {
+      perror("REASON");
+   }
+}
+
+char *AVI_strerror()
+{
+   int aerrno;
+
+   aerrno = (AVI_errno>=0 && AVI_errno<num_avi_errors) ? AVI_errno : num_avi_errors-1;
+
+   if(AVI_errno == AVI_ERR_OPEN ||
+      AVI_errno == AVI_ERR_READ ||
+      AVI_errno == AVI_ERR_WRITE ||
+      AVI_errno == AVI_ERR_WRITE_INDEX ||
+      AVI_errno == AVI_ERR_CLOSE )
+   {
+      sprintf(error_string,"%s - %s",avi_errors[aerrno],strerror(errno));
+      return error_string;
+   }
+   else
+   {
+      return avi_errors[aerrno];
+   }
+}
+
+uint64_t AVI_max_size()
+{
+  return((uint64_t) AVI_MAX_LEN);
+}
+
diff --git a/win32/experimental/transcoder/avi2vp3/avilib.h b/win32/experimental/transcoder/avi2vp3/avilib.h
new file mode 100644 (file)
index 0000000..389e37d
--- /dev/null
@@ -0,0 +1,309 @@
+/*
+ *  avilib.h
+ *
+ *  Copyright (C) Thomas Ã–streich - June 2001
+ *  multiple audio track support Copyright (C) 2002 Thomas Ã–streich
+ *
+ *  Original code:
+ *  Copyright (C) 1999 Rainer Johanni <Rainer@Johanni.de> 
+ *
+ *  This file is part of transcode, a linux video stream processing tool
+ *      
+ *  transcode is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *   
+ *  transcode is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *   
+ *  You should have received a copy of the GNU General Public License
+ *  along with GNU Make; see the file COPYING.  If not, write to
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
+ *
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#ifndef AVILIB_H
+#define AVILIB_H
+
+#define AVI_MAX_TRACKS 8
+
+typedef struct
+{
+  unsigned long key;
+  unsigned long pos;
+  unsigned long len;
+} video_index_entry;
+
+typedef struct
+{
+   unsigned long pos;
+   unsigned long len;
+   unsigned long tot;
+} audio_index_entry;
+
+typedef struct track_s
+{
+
+    long   a_fmt;             /* Audio format, see #defines below */
+    long   a_chans;           /* Audio channels, 0 for no audio */
+    long   a_rate;            /* Rate in Hz */
+    long   a_bits;            /* bits per audio sample */
+    long   mp3rate;           /* mp3 bitrate kbs*/
+
+    long   audio_strn;        /* Audio stream number */
+    long   audio_bytes;       /* Total number of bytes of audio data */
+    long   audio_chunks;      /* Chunks of audio data in the file */
+
+    char   audio_tag[4];      /* Tag of audio data */
+    long   audio_posc;        /* Audio position: chunk */
+    long   audio_posb;        /* Audio position: byte within chunk */
+    long  a_codech_off;       /* absolut offset of audio codec information */ 
+    long  a_codecf_off;       /* absolut offset of audio codec information */ 
+
+    audio_index_entry *audio_index;
+
+} track_t;
+
+typedef struct
+{
+  
+  long   fdes;              /* File descriptor of AVI file */
+  long   mode;              /* 0 for reading, 1 for writing */
+  
+  long   width;             /* Width  of a video frame */
+  long   height;            /* Height of a video frame */
+  double fps;               /* Frames per second */
+  char   compressor[8];     /* Type of compressor, 4 bytes + padding for 0 byte */
+  char   compressor2[8];     /* Type of compressor, 4 bytes + padding for 0 byte */
+  long   video_strn;        /* Video stream number */
+  long   video_frames;      /* Number of video frames */
+  char   video_tag[4];      /* Tag of video data */
+  long   video_pos;         /* Number of next frame to be read
+                              (if index present) */
+  
+  unsigned long max_len;    /* maximum video chunk present */
+  
+  track_t track[AVI_MAX_TRACKS];  // up to AVI_MAX_TRACKS audio tracks supported
+  
+  unsigned long pos;        /* position in file */
+  long   n_idx;             /* number of index entries actually filled */
+  long   max_idx;           /* number of index entries actually allocated */
+  
+  long  v_codech_off;       /* absolut offset of video codec (strh) info */ 
+  long  v_codecf_off;       /* absolut offset of video codec (strf) info */ 
+  
+  unsigned char (*idx)[16]; /* index entries (AVI idx1 tag) */
+  video_index_entry *video_index;
+  
+  unsigned long last_pos;          /* Position of last frame written */
+  unsigned long last_len;          /* Length of last frame written */
+  int must_use_index;              /* Flag if frames are duplicated */
+  unsigned long   movi_start;
+  
+  int anum;            // total number of audio tracks 
+  int aptr;            // current audio working track 
+  
+} avi_t;
+
+#define AVI_MODE_WRITE  0
+#define AVI_MODE_READ   1
+
+/* The error codes delivered by avi_open_input_file */
+
+#define AVI_ERR_SIZELIM      1     /* The write of the data would exceed
+                                      the maximum size of the AVI file.
+                                      This is more a warning than an error
+                                      since the file may be closed safely */
+
+#define AVI_ERR_OPEN         2     /* Error opening the AVI file - wrong path
+                                      name or file nor readable/writable */
+
+#define AVI_ERR_READ         3     /* Error reading from AVI File */
+
+#define AVI_ERR_WRITE        4     /* Error writing to AVI File,
+                                      disk full ??? */
+
+#define AVI_ERR_WRITE_INDEX  5     /* Could not write index to AVI file
+                                      during close, file may still be
+                                      usable */
+
+#define AVI_ERR_CLOSE        6     /* Could not write header to AVI file
+                                      or not truncate the file during close,
+                                      file is most probably corrupted */
+
+#define AVI_ERR_NOT_PERM     7     /* Operation not permitted:
+                                      trying to read from a file open
+                                      for writing or vice versa */
+
+#define AVI_ERR_NO_MEM       8     /* malloc failed */
+
+#define AVI_ERR_NO_AVI       9     /* Not an AVI file */
+
+#define AVI_ERR_NO_HDRL     10     /* AVI file has no has no header list,
+                                      corrupted ??? */
+
+#define AVI_ERR_NO_MOVI     11     /* AVI file has no has no MOVI list,
+                                      corrupted ??? */
+
+#define AVI_ERR_NO_VIDS     12     /* AVI file contains no video data */
+
+#define AVI_ERR_NO_IDX      13     /* The file has been opened with
+                                      getIndex==0, but an operation has been
+                                      performed that needs an index */
+
+/* Possible Audio formats */
+
+#ifndef WAVE_FORMAT_PCM
+#define WAVE_FORMAT_UNKNOWN             (0x0000)
+#define WAVE_FORMAT_PCM                 (0x0001)
+#define WAVE_FORMAT_ADPCM               (0x0002)
+#define WAVE_FORMAT_IBM_CVSD            (0x0005)
+#define WAVE_FORMAT_ALAW                (0x0006)
+#define WAVE_FORMAT_MULAW               (0x0007)
+#define WAVE_FORMAT_OKI_ADPCM           (0x0010)
+#define WAVE_FORMAT_DVI_ADPCM           (0x0011)
+#define WAVE_FORMAT_DIGISTD             (0x0015)
+#define WAVE_FORMAT_DIGIFIX             (0x0016)
+#define WAVE_FORMAT_YAMAHA_ADPCM        (0x0020)
+#define WAVE_FORMAT_DSP_TRUESPEECH      (0x0022)
+#define WAVE_FORMAT_GSM610              (0x0031)
+#define IBM_FORMAT_MULAW                (0x0101)
+#define IBM_FORMAT_ALAW                 (0x0102)
+#define IBM_FORMAT_ADPCM                (0x0103)
+#endif
+
+avi_t* AVI_open_output_file(char * filename);
+void AVI_set_video(avi_t *AVI, int width, int height, double fps, char *compressor);
+void AVI_set_audio(avi_t *AVI, int channels, long rate, int bits, int format, long mp3rate);
+int  AVI_write_frame(avi_t *AVI, char *data, long bytes, int keyframe);
+int  AVI_dup_frame(avi_t *AVI);
+int  AVI_write_audio(avi_t *AVI, char *data, long bytes);
+int  AVI_append_audio(avi_t *AVI, char *data, long bytes);
+long AVI_bytes_remain(avi_t *AVI);
+int  AVI_close(avi_t *AVI);
+long AVI_bytes_written(avi_t *AVI);
+
+avi_t *AVI_open_input_file(char *filename, int getIndex);
+avi_t *AVI_open_fd(int fd, int getIndex);
+int avi_parse_input_file(avi_t *AVI, int getIndex);
+long AVI_audio_mp3rate(avi_t *AVI);
+long AVI_video_frames(avi_t *AVI);
+int  AVI_video_width(avi_t *AVI);
+int  AVI_video_height(avi_t *AVI);
+double AVI_frame_rate(avi_t *AVI);
+char* AVI_video_compressor(avi_t *AVI);
+
+int  AVI_audio_channels(avi_t *AVI);
+int  AVI_audio_bits(avi_t *AVI);
+int  AVI_audio_format(avi_t *AVI);
+long AVI_audio_rate(avi_t *AVI);
+long AVI_audio_bytes(avi_t *AVI);
+long AVI_audio_chunks(avi_t *AVI);
+
+long AVI_max_video_chunk(avi_t *AVI);
+
+long AVI_frame_size(avi_t *AVI, long frame);
+long AVI_audio_size(avi_t *AVI, long frame);
+int  AVI_seek_start(avi_t *AVI);
+int  AVI_set_video_position(avi_t *AVI, long frame);
+long AVI_get_video_position(avi_t *AVI, long frame);
+long AVI_read_frame(avi_t *AVI, char *vidbuf, int *keyframe);
+
+int  AVI_set_audio_position(avi_t *AVI, long byte);
+int  AVI_set_audio_bitrate(avi_t *AVI, long bitrate);
+
+long AVI_read_audio(avi_t *AVI, char *audbuf, long bytes);
+
+long AVI_audio_codech_offset(avi_t *AVI);
+long AVI_audio_codecf_offset(avi_t *AVI);
+long AVI_video_codech_offset(avi_t *AVI);
+long AVI_video_codecf_offset(avi_t *AVI);
+
+int  AVI_read_data(avi_t *AVI, char *vidbuf, long max_vidbuf,
+                               char *audbuf, long max_audbuf,
+                               long *len);
+
+void AVI_print_error(char *str);
+char *AVI_strerror();
+char *AVI_syserror();
+
+int AVI_scan(char *name);
+int AVI_dump(char *name, int mode);
+
+char *AVI_codec2str(short cc);
+int AVI_file_check(char *import_file);
+
+void AVI_info(avi_t *avifile);
+uint64_t AVI_max_size();
+int avi_update_header(avi_t *AVI);
+
+int AVI_set_audio_track(avi_t *AVI, int track);
+int AVI_get_audio_track(avi_t *AVI);
+int AVI_audio_tracks(avi_t *AVI);
+
+
+struct riff_struct 
+{
+  unsigned char id[4];   /* RIFF */
+  unsigned long len;
+  unsigned char wave_id[4]; /* WAVE */
+};
+
+
+struct chunk_struct 
+{
+       unsigned char id[4];
+       unsigned long len;
+};
+
+struct common_struct 
+{
+       unsigned short wFormatTag;
+       unsigned short wChannels;
+       unsigned long dwSamplesPerSec;
+       unsigned long dwAvgBytesPerSec;
+       unsigned short wBlockAlign;
+       unsigned short wBitsPerSample;  /* Only for PCM */
+};
+
+struct wave_header 
+{
+       struct riff_struct   riff;
+       struct chunk_struct  format;
+       struct common_struct common;
+       struct chunk_struct  data;
+};
+
+
+
+struct AVIStreamHeader {
+  long  fccType;
+  long  fccHandler;
+  long  dwFlags;
+  long  dwPriority;
+  long  dwInitialFrames;
+  long  dwScale;
+  long  dwRate;
+  long  dwStart;
+  long  dwLength;
+  long  dwSuggestedBufferSize;
+  long  dwQuality;
+  long  dwSampleSize;
+};
+
+#endif
diff --git a/win32/experimental/transcoder/avi2vp3/outfile.vp3 b/win32/experimental/transcoder/avi2vp3/outfile.vp3
new file mode 100644 (file)
index 0000000..ed74aa9
Binary files /dev/null and b/win32/experimental/transcoder/avi2vp3/outfile.vp3 differ
diff --git a/win32/experimental/transcoder/avi2vp3/vp31.avi b/win32/experimental/transcoder/avi2vp3/vp31.avi
new file mode 100644 (file)
index 0000000..9dada7d
Binary files /dev/null and b/win32/experimental/transcoder/avi2vp3/vp31.avi differ
diff --git a/win32/experimental/transcoder/readme.txt b/win32/experimental/transcoder/readme.txt
new file mode 100644 (file)
index 0000000..b10a292
--- /dev/null
@@ -0,0 +1,17 @@
+Quick hack at a transcoder tool from VP3 to Theora
+
+I actually built the avi2vp3 tool with codeWarrior, but it should compile under
+VC as well. I have included a source avi file and the converted .vp3 output.
+Output is a file with some header info matching YUVMPEG, and for each frame: 
+
+FRAME header block matching YUV2MPEG
+long (Intel aligned) keyframeflag describing in frame is a keyframe
+long (Intel aligned) fsize storing frame size in bytes
+bytes[fsize] with binary frame data
+
+The transcode tool is a modification of the current encoder. PUt it into the
+win32/experimental subdirectory, and the paths should be correct. It produces
+an apparently valid theora stream, but outputs garbage data. The code is packing
+the binary frame data in a way that SHOULD work at least imo, but I am probably
+missing some initialization issue (or vp3 is not transcodable to theora).
+
diff --git a/win32/experimental/transcoder/transcoder.dsp b/win32/experimental/transcoder/transcoder.dsp
new file mode 100644 (file)
index 0000000..863908b
--- /dev/null
@@ -0,0 +1,121 @@
+# Microsoft Developer Studio Project File - Name="transcoder" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
+\r
+CFG=transcoder - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "transcoder.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "transcoder.mak" CFG="transcoder - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "transcoder - Win32 Release" (based on "Win32 (x86) Console Application")\r
+!MESSAGE "transcoder - Win32 Debug" (based on "Win32 (x86) Console Application")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "transcoder - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Release"\r
+# PROP Intermediate_Dir "Release"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c\r
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\include" /I "..\..\..\..\vorbis\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D GETOPT_API= /FD /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static.lib ogg_static.lib vorbis_static.lib vorbisenc_static.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBCMT" /out:"transcoder.exe" /libpath:"..\..\Static_Release" /libpath:"..\..\..\..\ogg\win32\Static_Release" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Release" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Release"\r
+\r
+!ELSEIF  "$(CFG)" == "transcoder - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Debug"\r
+# PROP Intermediate_Dir "Debug"\r
+# PROP Ignore_Export_Lib 0\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c\r
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\include" /I "..\..\..\..\vorbis\include" /I "..\..\..\..\ogg\include" /I "..\wincompat" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D GETOPT_API= /FD /GZ /c\r
+# SUBTRACT CPP /YX /Yc /Yu\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LINK32=link.exe\r
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept\r
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib theora_static_d.lib ogg_static_d.lib vorbis_static_d.lib vorbisenc_static_d.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBCD" /out:"transcoder.exe" /pdbtype:sept /libpath:"..\..\Static_Debug" /libpath:"..\..\..\..\ogg\win32\Static_Debug" /libpath:"..\..\..\..\vorbis\win32\Vorbis_Static_Debug" /libpath:"..\..\..\..\vorbis\win32\VorbisEnc_Static_Debug"\r
+# SUBTRACT LINK32 /nodefaultlib\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "transcoder - Win32 Release"\r
+# Name "transcoder - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\wincompat\getopt.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\wincompat\getopt_long.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\transcoder_example.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# End Group\r
+# Begin Group "Resource Files"\r
+\r
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
+# End Group\r
+# Begin Group "library"\r
+\r
+# PROP Default_Filter ""\r
+# End Group\r
+# Begin Source File\r
+\r
+SOURCE=.\ReadMe.txt\r
+# End Source File\r
+# End Target\r
+# End Project\r
diff --git a/win32/experimental/transcoder/transcoder_example.c b/win32/experimental/transcoder/transcoder_example.c
new file mode 100644 (file)
index 0000000..28c2b52
--- /dev/null
@@ -0,0 +1,926 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2004                *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+  function: example encoder application; makes an Ogg Theora/Vorbis
+            file from YUV4MPEG2 and WAV input
+  last mod: $Id: transcoder_example.c,v 1.4 2004/03/20 00:14:04 tterribe Exp $
+
+ ********************************************************************/
+
+#define _GNU_SOURCE
+#define _REENTRANT
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
+#define _FILE_OFFSET_BITS 64
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <getopt.h>
+#include <time.h>
+#include <math.h>
+#include "theora/theora.h"
+#include "vorbis/codec.h"
+#include "vorbis/vorbisenc.h"
+
+#ifdef _WIN32
+/*supply missing headers and functions to Win32. going to hell, I know*/
+#include <io.h>
+#include <fcntl.h>
+
+static double rint(double x)
+{
+  if (x < 0.0)
+    return (double)(int)(x - 0.5);
+  else
+    return (double)(int)(x + 0.5);
+}
+#endif
+
+/*Copied from vorbis/sharedbook.c*/
+static int _ilog(unsigned int v){
+  int ret=0;
+  while(v){
+    ret++;
+    v>>=1;
+  }
+  return(ret);
+}
+
+
+const char *optstring = "o:a:A:v:V:";
+struct option options [] = {
+  {"output",required_argument,NULL,'o'},
+  {"audio-rate-target",required_argument,NULL,'A'},
+  {"video-rate-target",required_argument,NULL,'V'},
+  {"audio-quality",required_argument,NULL,'a'},
+  {"video-quality",required_argument,NULL,'v'},
+  {NULL,0,NULL,0}
+};
+
+typedef struct TC_INSTANCE {
+  ogg_uint32_t     LastKeyFrame ;
+  ogg_int64_t      KeyFrameCount;
+  int              ThisIsFirstFrame;
+  int              ThisIsKeyFrame;
+  ogg_uint32_t     CurrentFrame;
+  ogg_int64_t      granulepos;
+  int              keyframe_granule_shift;
+  char *           in_bytes;
+  long             in_bytecount;
+  ogg_uint32_t     fps_denominator;
+  ogg_uint32_t     fps_numerator;
+  oggpack_buffer   opb_in;
+  oggpack_buffer   opb_out;
+} TC_INSTANCE;
+
+/* You'll go to Hell for using globals. */
+
+FILE *audio=NULL;
+FILE *video=NULL;
+
+int audio_ch=0;
+int audio_hz=0;
+
+float audio_q=.1;
+int audio_r=-1;
+
+int video_x=0;
+int video_y=0;
+int frame_x=0;
+int frame_y=0;
+int frame_x_offset=0;
+int frame_y_offset=0;
+int video_hzn=0;
+int video_hzd=0;
+int video_an=0;
+int video_ad=0;
+
+int video_r=-1;
+int video_q=16;
+
+  char *vp3frame[2];
+  int framebytecount[2];
+  int frameiskey[2];
+
+    ogg_page audiopage;
+    ogg_page videopage;
+
+static void usage(void){
+  fprintf(stderr,
+          "Usage: encoder_example [options] [audio_file] video_file\n\n"
+          "Options: \n\n"
+          "  -o --output <filename.ogv>  file name for encoded output;\n"
+          "                              If this option is not given, the\n"
+          "                              compressed data is sent to stdout.\n\n"
+          "  -A --audio-rate-target <n>  bitrate target for Vorbis audio;\n"
+          "                              use -a and not -A if at all possible,\n"
+          "                              as -a gives higher quality for a given\n"
+          "                              bitrate.\n\n"
+          "  -V --video-rate-target <n>  bitrate target for Theora video\n\n"
+          "  -a --audio-quality <n>      Vorbis quality selector from -1 to 10\n"
+          "                              (-1 yields smallest files but lowest\n"
+          "                              fidelity; 10 yields highest fidelity\n"
+          "                              but large files. '2' is a reasonable\n"
+          "                              default).\n\n"
+          "   -v --video-quality <n>     Theora quality selector fro 0 to 10\n"
+          "                              (0 yields smallest files but lowest\n"
+          "                              video quality. 10 yields highest\n"
+          "                              fidelity but large files).\n\n"
+          "encoder_example accepts only uncompressed RIFF WAV format audio and\n"
+          "YUV4MPEG2 uncompressed video.\n\n");
+  exit(1);
+}
+
+static void id_file(char *f){
+  FILE *test;
+  unsigned char buffer[80];
+  int ret;
+
+  /* open it, look for magic */
+
+  if(!strcmp(f,"-")){
+    /* stdin */
+    test=stdin;
+  }else{
+    test=fopen(f,"rb");
+    if(!test){
+      fprintf(stderr,"Unable to open file %s.\n",f);
+      exit(1);
+    }
+  }
+
+  ret=fread(buffer,1,4,test);
+  if(ret<4){
+    fprintf(stderr,"EOF determining file type of file %s.\n",f);
+    exit(1);
+  }
+
+  if(!memcmp(buffer,"RIFF",4)){
+    /* possible WAV file */
+
+    if(audio){
+      /* umm, we already have one */
+      fprintf(stderr,"Multiple RIFF WAVE files specified on command line.\n");
+      exit(1);
+    }
+
+    /* Parse the rest of the header */
+
+    ret=fread(buffer,1,4,test);
+    ret=fread(buffer,1,4,test);
+    if(ret<4)goto riff_err;
+    if(!memcmp(buffer,"WAVE",4)){
+
+      while(!feof(test)){
+        ret=fread(buffer,1,4,test);
+        if(ret<4)goto riff_err;
+        if(!memcmp("fmt",buffer,3)){
+
+          /* OK, this is our audio specs chunk.  Slurp it up. */
+
+          ret=fread(buffer,1,20,test);
+          if(ret<20)goto riff_err;
+
+          if(memcmp(buffer+4,"\001\000",2)){
+            fprintf(stderr,"The WAV file %s is in a compressed format; "
+                    "can't read it.\n",f);
+            exit(1);
+          }
+
+          audio=test;
+          audio_ch=buffer[6]+(buffer[7]<<8);
+          audio_hz=buffer[8]+(buffer[9]<<8)+
+            (buffer[10]<<16)+(buffer[11]<<24);
+
+          if(buffer[18]+(buffer[19]<<8)!=16){
+            fprintf(stderr,"Can only read 16 bit WAV files for now.\n");
+            exit(1);
+          }
+
+          /* Now, align things to the beginning of the data */
+          /* Look for 'dataxxxx' */
+          while(!feof(test)){
+            ret=fread(buffer,1,4,test);
+            if(ret<4)goto riff_err;
+            if(!memcmp("data",buffer,4)){
+              /* We're there.  Ignore the declared size for now. */
+              ret=fread(buffer,1,4,test);
+              if(ret<4)goto riff_err;
+
+              fprintf(stderr,"File %s is 16 bit %d channel %d Hz RIFF WAV audio.\n",
+                      f,audio_ch,audio_hz);
+
+              return;
+            }
+          }
+        }
+      }
+    }
+
+    fprintf(stderr,"Couldn't find WAVE data in RIFF file %s.\n",f);
+    exit(1);
+
+  }
+  if(!memcmp(buffer,"AVI2",4)){
+    /* possible AVI2VP31 format file */
+    /* read until newline, or 80 cols, whichever happens first */
+    int i;
+    for(i=0;i<79;i++){
+      ret=fread(buffer+i,1,1,test);
+      if(ret<1)goto yuv_err;
+      if(buffer[i]=='\n')break;
+    }
+    if(i==79){
+      fprintf(stderr,"Error parsing %s header; not a VP31 raw frames file?\n",f);
+    }
+    buffer[i]='\0';
+
+    if(!memcmp(buffer,"VP31",4)){
+      char interlace;
+
+      if(video){
+        /* umm, we already have one */
+        fprintf(stderr,"Multiple video files specified on command line.\n");
+        exit(1);
+      }
+
+      if(buffer[4]!='R'){
+        fprintf(stderr,"Incorrect file ; VP31 raw frames required.\n");
+      }
+
+      ret=sscanf(buffer,"VP31R W%d H%d F%d:%d I%c A%d:%d",
+                 &frame_x,&frame_y,&video_hzn,&video_hzd,&interlace,
+                 &video_an,&video_ad);
+      if(ret<7){
+        fprintf(stderr,"Error parsing AVI2VP31R header in file %s.\n",f);
+        exit(1);
+      }
+
+      if(interlace!='p'){
+        fprintf(stderr,"Input video is interlaced; Theora handles only progressive scan\n");
+        exit(1);
+      }
+
+      video=test;
+
+      fprintf(stderr,"File %s is %dx%d %.02f fps VP31 video.\n",
+              f,frame_x,frame_y,(double)video_hzn/video_hzd);
+
+      return;
+    }
+  }
+  fprintf(stderr,"Input file %s is neither a WAV nor VP31 file.\n",f);
+  exit(1);
+
+ riff_err:
+  fprintf(stderr,"EOF parsing RIFF file %s.\n",f);
+  exit(1);
+ yuv_err:
+  fprintf(stderr,"EOF parsing VP31 file %s.\n",f);
+  exit(1);
+
+}
+
+int spinner=0;
+char *spinascii="|/-\\";
+void spinnit(void){
+  spinner++;
+  if(spinner==4)spinner=0;
+  fprintf(stderr,"\r%c",spinascii[spinner]);
+}
+
+int fetch_and_process_audio(FILE *audio,ogg_page *audiopage,
+                            ogg_stream_state *vo,
+                            vorbis_dsp_state *vd,
+                            vorbis_block *vb,
+                            int audioflag){
+  ogg_packet op;
+  int i,j;
+
+  while(audio && !audioflag){
+    /* process any audio already buffered */
+    spinnit();
+    if(ogg_stream_pageout(vo,audiopage)>0) return 1;
+    if(ogg_stream_eos(vo))return 0;
+
+    {
+      /* read and process more audio */
+      signed char readbuffer[4096];
+      int toread=4096/2/audio_ch;
+      int bytesread=fread(readbuffer,1,toread*2*audio_ch,audio);
+      int sampread=bytesread/2/audio_ch;
+      float **vorbis_buffer;
+      int count=0;
+
+      if(bytesread<=0){
+        /* end of file.  this can be done implicitly, but it's
+           easier to see here in non-clever fashion.  Tell the
+           library we're at end of stream so that it can handle the
+           last frame and mark end of stream in the output properly */
+        vorbis_analysis_wrote(vd,0);
+      }else{
+        vorbis_buffer=vorbis_analysis_buffer(vd,sampread);
+        /* uninterleave samples */
+        for(i=0;i<sampread;i++){
+          for(j=0;j<audio_ch;j++){
+            vorbis_buffer[j][i]=((readbuffer[count+1]<<8)|
+                                 (0x00ff&(int)readbuffer[count]))/32768.f;
+            count+=2;
+          }
+        }
+        
+        vorbis_analysis_wrote(vd,sampread);
+        
+      }
+
+      while(vorbis_analysis_blockout(vd,vb)==1){
+        
+        /* analysis, assume we want to use bitrate management */
+        vorbis_analysis(vb,NULL);
+        vorbis_bitrate_addblock(vb);
+        
+        /* weld packets into the bitstream */
+        while(vorbis_bitrate_flushpacket(vd,&op))
+          ogg_stream_packetin(vo,&op);
+        
+      }
+    }
+  }
+
+  return audioflag;
+}
+
+int theora_transcode_packetout( TC_INSTANCE *ttc, int last_p, ogg_packet *op){
+
+  long bytes=ttc->in_bytecount;
+
+  if(!bytes)return(0);
+
+  op->packet=ttc->in_bytes;
+  op->bytes=bytes;
+  op->b_o_s=0;
+  op->e_o_s=last_p;
+
+  op->packetno=ttc->CurrentFrame;
+  op->granulepos=ttc->granulepos;
+
+  return 1;
+}
+
+void TranscodeKeyFrame(TC_INSTANCE *ttc){
+    /* Keep track of the total number of Key Frames Coded */
+    ttc->KeyFrameCount += 1;
+    ttc->LastKeyFrame = 1;
+}
+
+void TranscodeFrame(TC_INSTANCE *ttc){
+    ttc->LastKeyFrame++;
+}
+
+void TranscodeFirstFrame(TC_INSTANCE *ttc){
+  /* Keep track of the total number of Key Frames Coded. */
+  ttc->KeyFrameCount = 1;
+  ttc->LastKeyFrame = 1;
+}
+
+int theora_transcode_bufferin( TC_INSTANCE *ttc, int isKeyFrame, char * bytes, int bytecount){
+
+  /*transcode: record keyframe flag*/
+  ttc->ThisIsKeyFrame = isKeyFrame;
+
+  /* Special case for first frame */
+  if ( ttc->ThisIsFirstFrame ){
+    ttc->ThisIsFirstFrame = 0;
+    ttc->ThisIsKeyFrame = 0;
+  } else if ( ttc->ThisIsKeyFrame ) {
+    TranscodeKeyFrame(ttc);
+    ttc->ThisIsKeyFrame = 0;
+  } else  {
+    /* Compress the frame. */
+    TranscodeFrame( ttc );
+  }
+  /*need to pack info here*/
+  {
+
+    int            frame_type;
+    long           total_bits;
+    long           total_words;
+    int            frac_bits;
+
+    oggpackB_readinit(&ttc->opb_in,bytes,bytecount);
+    oggpackB_reset(&ttc->opb_out);
+
+    /*Mark as video frame.*/
+    oggpackB_write(&ttc->opb_out,0,1);
+    /*Copy frame type.*/
+    frame_type=oggpackB_read1(&ttc->opb_in);
+    oggpackB_write(&ttc->opb_out,frame_type,1);
+    /*Skip an unused bit in the VP32 header.*/
+    oggpackB_adv1(&ttc->opb_in);
+    /*Copy Q multiplier.*/
+    oggpackB_write(&ttc->opb_out,oggpackB_read(&ttc->opb_in,6),6);
+    /*VP3 has no per-block Q multipliers*/
+    oggpackB_write(&ttc->opb_out,0,1);
+    /*If the frame is a base/key/golden frame, copy a few extra bits.*/
+    if(frame_type==0){
+      /*These 13 bits are not included in a Theora frame header.
+        They were 0's and VP3 version info in VP32.*/
+      oggpackB_adv(&ttc->opb_in,13);
+      /*Copy the key frame type and the spare configuration bits.*/
+      oggpackB_write(&ttc->opb_out,oggpackB_read(&ttc->opb_in,3),3);
+    }
+
+    /*Copy the rest of the bits over.*/
+    total_bits=bytecount*8-oggpack_bits(&ttc->opb_in);
+    frac_bits=(int)(total_bits&31);
+    if(frac_bits){
+      oggpackB_write(&ttc->opb_out,oggpackB_read(&ttc->opb_in,frac_bits),
+       frac_bits);
+    }
+    total_words=total_bits>>5;
+    while(total_words-->0){
+      oggpackB_write(&ttc->opb_out,oggpackB_read(&ttc->opb_in,32),32);
+    }
+
+    ttc->in_bytecount = oggpackB_bytes(&ttc->opb_out);
+    ttc->in_bytes = oggpackB_get_buffer(&ttc->opb_out);
+  }
+
+  /* Update stats variables. */
+  ttc->CurrentFrame++;
+
+  ttc->granulepos=
+    ((ttc->CurrentFrame-ttc->LastKeyFrame-1)<<ttc->keyframe_granule_shift)+
+    ttc->LastKeyFrame-1;
+
+  return 0;
+}
+
+//static void _tp_writebuffer(oggpack_buffer *opb, const char *buf, const long len)
+
+int theora_transcoder_init(theora_info * ti, TC_INSTANCE * ttc){
+  memset(ttc, 0, sizeof(*ttc));
+  ttc->granulepos = -1;
+  ttc->keyframe_granule_shift=_ilog(ti->keyframe_frequency_force-1);
+  ttc->LastKeyFrame  = 0;
+  ttc->KeyFrameCount = 0;
+  ttc->ThisIsFirstFrame = 1;
+  ttc->ThisIsKeyFrame = 0;
+  ttc->CurrentFrame = 1; 
+  ttc->in_bytes = 0;
+  ttc->in_bytecount  = 0;
+  ttc->fps_denominator = ti->fps_denominator;
+  ttc->fps_numerator = ti->fps_numerator;
+  oggpackB_writeinit(&ttc->opb_out);
+  return 0;
+}
+
+int fetch_and_process_video(FILE *video,ogg_page *videopage,
+                            ogg_stream_state *to,
+                            TC_INSTANCE *ttc,
+                            int videoflag){
+  /* You'll go to Hell for using static variables */
+  static int          state=-1;
+  ogg_packet          op;
+  int i;
+  int keyframeflag, framelength;
+
+
+  if(state==-1){
+        /* initialize the double frame buffer */
+    state=0;
+  }
+
+  /* is there a video page flushed?  If not, work until there is. */
+  while(!videoflag){
+    spinnit();
+
+    if(ogg_stream_pageout(to,videopage)>0) return 1;
+    if(ogg_stream_eos(to)) return 0;
+
+    {
+      /* read and process more video */
+      /* video strategy reads one frame ahead so we know when we're
+         at end of stream and can mark last video frame as such
+         (vorbis audio has to flush one frame past last video frame
+         due to overlap and thus doesn't need this extra work */
+
+      /* have two frame buffers full (if possible) before
+         proceeding.  after first pass and until eos, one will
+         always be full when we get here */
+
+      for(i=state;i<2;i++){
+        char c,frame[6];
+        int ret=fread(frame,1,6,video);
+        
+       /* match and skip the frame header */
+        if(ret<6)break;
+        if(memcmp(frame,"FRAME",5)){
+          fprintf(stderr,"Loss of framing in VP31 input data\n");
+          exit(1);
+        }
+        if(frame[5]!='\n'){
+          int j;
+          for(j=0;j<79;j++)
+            if(fread(&c,1,1,video)&&c=='\n')break;
+          if(j==79){
+            fprintf(stderr,"Error parsing VP31 frame header\n");
+            exit(1);
+          }
+        }
+
+        /*read the length*/
+        ret=fread(&framelength, sizeof(int), 1, video);
+
+        /*read the keyframeflag*/
+        ret=fread(&keyframeflag, sizeof(int), 1, video);
+
+        vp3frame[i] = malloc(framelength);
+        framebytecount[i] = framelength;
+        frameiskey[i] = keyframeflag;
+
+        /* read the frame */
+        ret=fread((char *) vp3frame[i], sizeof(char), framelength, video);
+            if(ret!=framelength) break;
+        
+        state++;
+      }
+
+      if(state<1){
+        /* can't get here unless VP31 stream has no video */
+        fprintf(stderr,"Video input contains no frames.\n");
+        exit(1);
+      }
+
+      /* Theora is a one-frame-in,one-frame-out system; submit a frame
+         for compression and pull out the packet */
+
+      //theora_encode_YUVin(td,&yuv);
+      theora_transcode_bufferin( ttc, frameiskey[0], vp3frame[0], framebytecount[0]);
+
+      /* if there's only one frame, it's the last in the stream */
+      if(state<2)
+        theora_transcode_packetout(ttc,1,&op);
+      else
+        theora_transcode_packetout(ttc,0,&op);
+
+      ogg_stream_packetin(to,&op);
+
+      {
+        signed char *temp=vp3frame[0];
+        vp3frame[0]=vp3frame[1];
+        vp3frame[1] = temp;
+        free(temp);
+        
+        framebytecount[0]= framebytecount[1];
+        frameiskey[0] = frameiskey[1];
+        state--;
+      }
+    }
+  }
+  return videoflag;
+}
+
+/* returns, in seconds, absolute time of current packet in given
+   logical stream */
+double transcode_granule_time(TC_INSTANCE *ttc,ogg_int64_t granulepos){
+  if(granulepos>=0){
+    ogg_int64_t iframe=granulepos>>ttc->keyframe_granule_shift;
+    ogg_int64_t pframe=granulepos-(iframe<<ttc->keyframe_granule_shift);
+
+    return (iframe+pframe)*
+      ((double)ttc->fps_denominator/ttc->fps_numerator);
+
+  }
+  return(-1);
+}
+
+int main(int argc,char *argv[]){
+  int c,long_option_index,ret;
+
+  ogg_stream_state to; /* take physical pages, weld into a logical
+                           stream of packets */
+  ogg_stream_state vo; /* take physical pages, weld into a logical
+                           stream of packets */
+  ogg_page         og; /* one Ogg bitstream page.  Vorbis packets are inside */
+  ogg_packet       op; /* one raw packet of data for decode */
+
+  theora_state     td;
+  theora_info      ti;
+  theora_comment   tc;
+
+  vorbis_info      vi; /* struct that stores all the static vorbis bitstream
+                          settings */
+  vorbis_comment   vc; /* struct that stores all the user comments */
+
+  vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
+  vorbis_block     vb; /* local working space for packet->PCM decode */
+
+  int audioflag=0;
+  int videoflag=0;
+  int akbps=0;
+  int vkbps=0;
+
+  ogg_int64_t audio_bytesout=0;
+  ogg_int64_t video_bytesout=0;
+  double timebase;
+
+  FILE* outfile = stdout;
+
+  TC_INSTANCE ttc;
+
+#ifdef _WIN32 /* We need to set stdin/stdout to binary mode. Damn windows. */
+  /* if we were reading/writing a file, it would also need to in
+     binary mode, eg, fopen("file.wav","wb"); */
+  /* Beware the evil ifdef. We avoid these where we can, but this one we
+     cannot. Don't add any more, you'll probably go to hell if you do. */
+  _setmode( _fileno( stdin ), _O_BINARY );
+  _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+
+  while((c=getopt_long(argc,argv,optstring,options,&long_option_index))!=EOF){
+    switch(c){
+    case 'o':
+      outfile=fopen(optarg,"wb");
+      if(outfile==NULL){
+        fprintf(stderr,"Unable to open output file '%s'\n", optarg);
+        exit(1);
+      }
+      break;;
+
+    case 'a':
+      audio_q=atof(optarg)*.099;
+      if(audio_q<-.1 || audio_q>1){
+        fprintf(stderr,"Illegal audio quality (choose -1 through 10)\n");
+        exit(1);
+      }
+      audio_r=-1;
+      break;
+
+    case 'v':
+      video_q=rint(atof(optarg)*6.3);
+      if(video_q<0 || video_q>63){
+        fprintf(stderr,"Illegal video quality (choose 0 through 10)\n");
+        exit(1);
+      }
+      video_r=0;
+      break;
+
+    case 'A':
+      audio_r=atof(optarg)*1000;
+      if(audio_q<0){
+        fprintf(stderr,"Illegal audio quality (choose > 0 please)\n");
+        exit(1);
+      }
+      audio_q=-99;
+      break;
+
+    case 'V':
+      video_r=rint(atof(optarg)*1000);
+      if(video_r<45000 || video_r>2000000){
+        fprintf(stderr,"Illegal video bitrate (choose 45kbps through 2000kbps)\n");
+        exit(1);
+      }
+      video_q=0;
+     break;
+    default:
+      usage();
+    }
+  }
+
+  while(optind<argc){
+    /* assume that anything following the options must be a filename */
+    id_file(argv[optind]);
+    optind++;
+  }
+
+  /* yayness.  Set up Ogg output stream */
+  srand(time(NULL));
+  ogg_stream_init(&vo,rand());
+  ogg_stream_init(&to,rand()); /* oops, add one ot the above */
+
+  /* Set up Theora encoder */
+  if(!video){
+    fprintf(stderr,"No video files submitted for compression?\n");
+    exit(1);
+  }
+  /* Theora has a divisible-by-sixteen restriction for the encoded video size */
+  /* scale the frame size up to the nearest /16 and calculate offsets */
+  video_x=((frame_x + 15) >>4)<<4;
+  video_y=((frame_y + 15) >>4)<<4;
+  frame_x_offset=(video_x-frame_x)/2;
+  frame_y_offset=(video_y-frame_y)/2;
+
+  theora_info_init(&ti);
+  ti.width=video_x;
+  ti.height=video_y;
+  ti.frame_width=frame_x;
+  ti.frame_height=frame_y;
+  ti.offset_x=frame_x_offset;
+  ti.offset_y=frame_y_offset;
+  ti.fps_numerator=video_hzn;
+  ti.fps_denominator=video_hzd;
+  ti.aspect_numerator=video_an;
+  ti.aspect_denominator=video_ad;
+  ti.colorspace=OC_CS_UNSPECIFIED;
+  ti.target_bitrate=video_r;
+  ti.quality=video_q;
+
+  ti.dropframes_p=0;
+  ti.quick_p=1;
+  ti.keyframe_auto_p=1;
+  ti.keyframe_frequency=32768;
+  ti.keyframe_frequency_force=32768;
+  ti.keyframe_data_target_bitrate=video_r*1.5;
+  ti.keyframe_auto_threshold=80;
+  ti.keyframe_mindistance=8;
+  ti.noise_sensitivity=1;
+
+  theora_encode_init(&td,&ti);
+  theora_transcoder_init(&ti, &ttc);
+  theora_info_clear(&ti);
+
+  /* initialize Vorbis too, assuming we have audio to compress. */
+  if(audio){
+    vorbis_info_init(&vi);
+    if(audio_q>-99)
+      ret = vorbis_encode_init_vbr(&vi,audio_ch,audio_hz,audio_q);
+    else
+      ret = vorbis_encode_init(&vi,audio_ch,audio_hz,-1,audio_r,-1);
+    if(ret){
+      fprintf(stderr,"The Vorbis encoder could not set up a mode according to\n"
+              "the requested quality or bitrate.\n\n");
+      exit(1);
+    }
+
+    vorbis_comment_init(&vc);
+    vorbis_analysis_init(&vd,&vi);
+    vorbis_block_init(&vd,&vb);
+  }
+
+  /* write the bitstream header packets with proper page interleave */
+
+  /* first packet will get its own page automatically */
+  theora_encode_header(&td,&op);
+  ogg_stream_packetin(&to,&op);
+  if(ogg_stream_pageout(&to,&og)!=1){
+    fprintf(stderr,"Internal Ogg library error.\n");
+    exit(1);
+  }
+  fwrite(og.header,1,og.header_len,outfile);
+  fwrite(og.body,1,og.body_len,outfile);
+
+  /* create the remaining theora headers */
+  theora_comment_init(&tc);
+  theora_encode_comment(&tc,&op);
+  ogg_stream_packetin(&to,&op);
+  theora_encode_tables(&td,&op);
+  ogg_stream_packetin(&to,&op);
+
+  if(audio){
+    ogg_packet header;
+    ogg_packet header_comm;
+    ogg_packet header_code;
+
+    vorbis_analysis_headerout(&vd,&vc,&header,&header_comm,&header_code);
+    ogg_stream_packetin(&vo,&header); /* automatically placed in its own
+                                         page */
+    if(ogg_stream_pageout(&vo,&og)!=1){
+      fprintf(stderr,"Internal Ogg library error.\n");
+      exit(1);
+    }
+    fwrite(og.header,1,og.header_len,outfile);
+    fwrite(og.body,1,og.body_len,outfile);
+
+    /* remaining vorbis header packets */
+    ogg_stream_packetin(&vo,&header_comm);
+    ogg_stream_packetin(&vo,&header_code);
+  }
+
+  /* Flush the rest of our headers. This ensures
+     the actual data in each stream will start
+     on a new page, as per spec. */
+  while(1){
+    int result = ogg_stream_flush(&to,&og);
+      if(result<0){
+        /* can't get here */
+        fprintf(stderr,"Internal Ogg library error.\n");
+        exit(1);
+      }
+    if(result==0)break;
+    fwrite(og.header,1,og.header_len,outfile);
+    fwrite(og.body,1,og.body_len,outfile);
+  }
+  if(audio){
+    while(1){
+      int result=ogg_stream_flush(&vo,&og);
+      if(result<0){
+        /* can't get here */
+        fprintf(stderr,"Internal Ogg library error.\n");
+        exit(1);
+      }
+      if(result==0)break;
+      fwrite(og.header,1,og.header_len,outfile);
+      fwrite(og.body,1,og.body_len,outfile);
+    }
+  }
+
+  /* setup complete.  Raw processing loop */
+  fprintf(stderr,"Compressing....\n");
+  while(1){
+
+
+    /* is there an audio page flushed?  If not, fetch one if possible */
+    audioflag=fetch_and_process_audio(audio,&audiopage,&vo,&vd,&vb,audioflag);
+
+    /* is there a video page flushed?  If not, fetch one if possible */
+    videoflag=fetch_and_process_video(video,&videopage,&to,&ttc,videoflag);
+
+    /* no pages of either?  Must be end of stream. */
+    if(!audioflag && !videoflag)break;
+
+    /* which is earlier; the end of the audio page or the end of the
+       video page? Flush the earlier to stream */
+    {
+      int audio_or_video=-1;
+      double audiotime=
+        audioflag?vorbis_granule_time(&vd,ogg_page_granulepos(&audiopage)):-1;
+      double videotime=
+        videoflag?transcode_granule_time(&ttc,ogg_page_granulepos(&videopage)):-1;
+
+      if(!audioflag){
+        audio_or_video=1;
+      } else if(!videoflag) {
+        audio_or_video=0;
+      } else {
+        if(audiotime<videotime)
+          audio_or_video=0;
+        else
+          audio_or_video=1;
+      }
+
+      if(audio_or_video==1){
+        /* flush a video page */
+        video_bytesout+=fwrite(videopage.header,1,videopage.header_len,outfile);
+        video_bytesout+=fwrite(videopage.body,1,videopage.body_len,outfile);
+        videoflag=0;
+        timebase=videotime;
+        
+      }else{
+        /* flush an audio page */
+        audio_bytesout+=fwrite(audiopage.header,1,audiopage.header_len,outfile);
+        audio_bytesout+=fwrite(audiopage.body,1,audiopage.body_len,outfile);
+        audioflag=0;
+        timebase=audiotime;
+      }
+      {
+        int hundredths=timebase*100-(long)timebase*100;
+        int seconds=(long)timebase%60;
+        int minutes=((long)timebase/60)%60;
+        int hours=(long)timebase/3600;
+        
+        if(audio_or_video)
+          vkbps=rint(video_bytesout*8./timebase*.001);
+        else
+          akbps=rint(audio_bytesout*8./timebase*.001);
+        
+        fprintf(stderr,
+                "\n      %d:%02d:%02d.%02d audio: %dkbps video: %dkbps                 ",
+                hours,minutes,seconds,hundredths,akbps,vkbps);
+      }
+    }
+
+  }
+
+  /* clear out state */
+
+  if(audio){
+    ogg_stream_clear(&vo);
+    vorbis_block_clear(&vb);
+    vorbis_dsp_clear(&vd);
+    vorbis_comment_clear(&vc);
+    vorbis_info_clear(&vi);
+  }
+  if(video){
+    ogg_stream_clear(&to);
+    theora_clear(&td);
+  }
+
+  if(outfile && outfile!=stdout)fclose(outfile);
+
+  fprintf(stderr,"\r   \ndone.\n\n");
+
+  return(0);
+
+}
diff --git a/win32/experimental/wincompat/README.txt b/win32/experimental/wincompat/README.txt
new file mode 100644 (file)
index 0000000..feeda2f
--- /dev/null
@@ -0,0 +1 @@
+GetOpt routines ported from BSD-licensed sources, see comments.
\ No newline at end of file
diff --git a/win32/experimental/wincompat/getopt.c b/win32/experimental/wincompat/getopt.c
new file mode 100644 (file)
index 0000000..4cfe746
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 1987, 1993, 1994
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)getopt.c   8.3 (Berkeley) 4/27/95";
+#endif /* LIBC_SCCS and not lint
+#include <sys/cdefs.h>
+//__FBSDID("$FreeBSD: src/lib/libc/stdlib/getopt.c,v 1.6 2002/03/29 22:43:42 markm Exp $");
+
+#include "namespace.h"*/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+/*#include "un-namespace.h"*/
+
+/*#include "libc_private.h"*/
+
+int    opterr = 1,             /* if error message should be printed */
+       optind = 1,             /* index into parent argv vector */
+       optopt,                 /* character checked for validity */
+       optreset;               /* reset getopt */
+char   *optarg;                /* argument associated with option */
+
+#define        BADCH   (int)'?'
+#define        BADARG  (int)':'
+#define        EMSG    ""
+
+/*
+ * getopt --
+ *     Parse argc/argv argument vector.
+ */
+int
+getopt(nargc, nargv, ostr)
+       int nargc;
+       char * const *nargv;
+       const char *ostr;
+{
+       static char *place = EMSG;              /* option letter processing */
+       char *oli;                              /* option letter list index */
+
+       if (optreset || !*place) {              /* update scanning pointer */
+               optreset = 0;
+               if (optind >= nargc || *(place = nargv[optind]) != '-') {
+                       place = EMSG;
+                       return (-1);
+               }
+               if (place[1] && *++place == '-') {      /* found "--" */
+                       ++optind;
+                       place = EMSG;
+                       return (-1);
+               }
+       }                                       /* option letter okay? */
+       if ((optopt = (int)*place++) == (int)':' ||
+           !(oli = strchr(ostr, optopt))) {
+               /*
+                * if the user didn't specify '-' as an option,
+                * assume it means -1.
+                */
+               if (optopt == (int)'-')
+                       return (-1);
+               if (!*place)
+                       ++optind;
+               if (opterr && *ostr != ':' && optopt != BADCH)
+                       (void)fprintf(stderr, "%s: illegal option -- %c\n",
+                           "progname", optopt);
+               return (BADCH);
+       }
+       if (*++oli != ':') {                    /* don't need argument */
+               optarg = NULL;
+               if (!*place)
+                       ++optind;
+       }
+       else {                                  /* need an argument */
+               if (*place)                     /* no white space */
+                       optarg = place;
+               else if (nargc <= ++optind) {   /* no arg */
+                       place = EMSG;
+                       if (*ostr == ':')
+                               return (BADARG);
+                       if (opterr)
+                               (void)fprintf(stderr,
+                                   "%s: option requires an argument -- %c\n",
+                                   "progname", optopt);
+                       return (BADCH);
+               }
+               else                            /* white space */
+                       optarg = nargv[optind];
+               place = EMSG;
+               ++optind;
+       }
+       return (optopt);                        /* dump back option letter */
+}
diff --git a/win32/experimental/wincompat/getopt.h b/win32/experimental/wincompat/getopt.h
new file mode 100644 (file)
index 0000000..d95d6cf
--- /dev/null
@@ -0,0 +1,110 @@
+/*      $NetBSD: getopt.h,v 1.4 2000/07/07 10:43:54 ad Exp $    */
+/*      $FreeBSD: src/include/getopt.h,v 1.1 2002/09/29 04:14:30 eric Exp $ */
+
+/*-
+ * Copyright (c) 2000 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Dieter Baron and Thomas Klausner.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *        This product includes software developed by the NetBSD
+ *        Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _GETOPT_H_
+#define _GETOPT_H_
+
+#ifdef _WIN32
+/* from <sys/cdefs.h> */
+# ifdef  __cplusplus
+#  define __BEGIN_DECLS  extern "C" {
+#  define __END_DECLS    }
+# else
+#  define __BEGIN_DECLS
+#  define __END_DECLS
+# endif
+# define __P(args)      args
+#endif
+
+/*#ifndef _WIN32
+#include <sys/cdefs.h>
+#include <unistd.h>
+#endif*/
+
+#ifdef _WIN32
+# if !defined(GETOPT_API)
+#  define GETOPT_API __declspec(dllimport)
+# endif
+#endif
+
+/*
+ * Gnu like getopt_long() and BSD4.4 getsubopt()/optreset extensions
+ */
+#if !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE)
+#define no_argument        0
+#define required_argument  1
+#define optional_argument  2
+
+struct option {
+        /* name of long option */
+        const char *name;
+        /*
+         * one of no_argument, required_argument, and optional_argument:
+         * whether option takes an argument
+         */
+        int has_arg;
+        /* if not NULL, set *flag to val when option found */
+        int *flag;
+        /* if flag not NULL, value to set *flag to; else return value */
+        int val;
+};
+
+__BEGIN_DECLS
+GETOPT_API int getopt_long __P((int, char * const *, const char *,
+    const struct option *, int *));
+__END_DECLS
+#endif
+
+#ifdef _WIN32
+/* These are global getopt variables */
+__BEGIN_DECLS
+
+GETOPT_API extern int   opterr,   /* if error message should be printed */
+                        optind,   /* index into parent argv vector */
+                        optopt,   /* character checked for validity */
+                        optreset; /* reset getopt */
+GETOPT_API extern char* optarg;   /* argument associated with option */
+
+/* Original getopt */
+GETOPT_API int getopt __P((int, char * const *, const char *));
+
+__END_DECLS
+#endif
+#endif /* !_GETOPT_H_ */
diff --git a/win32/experimental/wincompat/getopt_long.c b/win32/experimental/wincompat/getopt_long.c
new file mode 100644 (file)
index 0000000..b5ae0fa
--- /dev/null
@@ -0,0 +1,547 @@
+/*     $NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $      */
+/*     $FreeBSD: src/lib/libc/stdlib/getopt_long.c,v 1.2 2002/10/16 22:18:42 alfred Exp $ */
+
+/*-
+ * Copyright (c) 2000 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Dieter Baron and Thomas Klausner.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *        This product includes software developed by the NetBSD
+ *        Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#include <getopt.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef _WIN32
+
+/* Windows needs warnx().  We change the definition though:
+ *  1. (another) global is defined, opterrmsg, which holds the error message
+ *  2. errors are always printed out on stderr w/o the program name
+ * Note that opterrmsg always gets set no matter what opterr is set to.  The
+ * error message will not be printed if opterr is 0 as usual.
+ */
+
+#include <stdio.h>
+#include <stdarg.h>
+
+GETOPT_API extern char opterrmsg[128];
+char opterrmsg[128]; /* last error message is stored here */
+
+static void warnx(int print_error, const char *fmt, ...)
+{
+       va_list ap;
+       va_start(ap, fmt);
+       if (fmt != NULL)
+               _vsnprintf(opterrmsg, 128, fmt, ap);
+       else
+               opterrmsg[0]='\0';
+       va_end(ap);
+       if (print_error) {
+               fprintf(stderr, opterrmsg);
+               fprintf(stderr, "\n");
+       }
+}
+
+#endif /*_WIN32*/
+
+/* not part of the original file */
+#ifndef _DIAGASSERT
+#define _DIAGASSERT(X)
+#endif
+
+#if HAVE_CONFIG_H && !HAVE_GETOPT_LONG && !HAVE_DECL_OPTIND
+#define REPLACE_GETOPT
+#endif
+
+#ifdef REPLACE_GETOPT
+#ifdef __weak_alias
+__weak_alias(getopt,_getopt)
+#endif
+int    opterr = 1;             /* if error message should be printed */
+int    optind = 1;             /* index into parent argv vector */
+int    optopt = '?';           /* character checked for validity */
+int    optreset;               /* reset getopt */
+char    *optarg;               /* argument associated with option */
+#elif HAVE_CONFIG_H && !HAVE_DECL_OPTRESET
+static int optreset;
+#endif
+
+#ifdef __weak_alias
+__weak_alias(getopt_long,_getopt_long)
+#endif
+
+#if !HAVE_GETOPT_LONG
+#define IGNORE_FIRST   (*options == '-' || *options == '+')
+#define PRINT_ERROR    ((opterr) && ((*options != ':') \
+                                     || (IGNORE_FIRST && options[1] != ':')))
+#define IS_POSIXLY_CORRECT (getenv("POSIXLY_CORRECT") != NULL)
+#define PERMUTE         (!IS_POSIXLY_CORRECT && !IGNORE_FIRST)
+/* XXX: GNU ignores PC if *options == '-' */
+#define IN_ORDER        (!IS_POSIXLY_CORRECT && *options == '-')
+
+/* return values */
+#define        BADCH   (int)'?'
+#define        BADARG          ((IGNORE_FIRST && options[1] == ':') \
+                        || (*options == ':') ? (int)':' : (int)'?')
+#define INORDER (int)1
+
+#define        EMSG    ""
+
+static int getopt_internal(int, char * const *, const char *);
+static int gcd(int, int);
+static void permute_args(int, int, int, char * const *);
+
+static char *place = EMSG; /* option letter processing */
+
+/* XXX: set optreset to 1 rather than these two */
+static int nonopt_start = -1; /* first non option argument (for permute) */
+static int nonopt_end = -1;   /* first option after non options (for permute) */
+
+/* Error messages */
+static const char recargchar[] = "option requires an argument -- %c";
+static const char recargstring[] = "option requires an argument -- %s";
+static const char ambig[] = "ambiguous option -- %.*s";
+static const char noarg[] = "option doesn't take an argument -- %.*s";
+static const char illoptchar[] = "unknown option -- %c";
+static const char illoptstring[] = "unknown option -- %s";
+
+
+/*
+ * Compute the greatest common divisor of a and b.
+ */
+static int
+gcd(a, b)
+       int a;
+       int b;
+{
+       int c;
+
+       c = a % b;
+       while (c != 0) {
+               a = b;
+               b = c;
+               c = a % b;
+       }
+          
+       return b;
+}
+
+/*
+ * Exchange the block from nonopt_start to nonopt_end with the block
+ * from nonopt_end to opt_end (keeping the same order of arguments
+ * in each block).
+ */
+static void
+permute_args(panonopt_start, panonopt_end, opt_end, nargv)
+       int panonopt_start;
+       int panonopt_end;
+       int opt_end;
+       char * const *nargv;
+{
+       int cstart, cyclelen, i, j, ncycle, nnonopts, nopts, pos;
+       char *swap;
+
+       _DIAGASSERT(nargv != NULL);
+
+       /*
+        * compute lengths of blocks and number and size of cycles
+        */
+       nnonopts = panonopt_end - panonopt_start;
+       nopts = opt_end - panonopt_end;
+       ncycle = gcd(nnonopts, nopts);
+       cyclelen = (opt_end - panonopt_start) / ncycle;
+
+       for (i = 0; i < ncycle; i++) {
+               cstart = panonopt_end+i;
+               pos = cstart;
+               for (j = 0; j < cyclelen; j++) {
+                       if (pos >= panonopt_end)
+                               pos -= nnonopts;
+                       else
+                               pos += nopts;
+                       swap = nargv[pos];
+                       /* LINTED const cast */
+                       ((char **) nargv)[pos] = nargv[cstart];
+                       /* LINTED const cast */
+                       ((char **)nargv)[cstart] = swap;
+               }
+       }
+}
+
+/*
+ * getopt_internal --
+ *     Parse argc/argv argument vector.  Called by user level routines.
+ *  Returns -2 if -- is found (can be long option or end of options marker).
+ */
+static int
+getopt_internal(nargc, nargv, options)
+       int nargc;
+       char * const *nargv;
+       const char *options;
+{
+       char *oli;                              /* option letter list index */
+       int optchar;
+
+       _DIAGASSERT(nargv != NULL);
+       _DIAGASSERT(options != NULL);
+
+       optarg = NULL;
+
+       /*
+        * XXX Some programs (like rsyncd) expect to be able to
+        * XXX re-initialize optind to 0 and have getopt_long(3)
+        * XXX properly function again.  Work around this braindamage.
+        */
+       if (optind == 0)
+               optind = 1;
+
+       if (optreset)
+               nonopt_start = nonopt_end = -1;
+start:
+       if (optreset || !*place) {              /* update scanning pointer */
+               optreset = 0;
+               if (optind >= nargc) {          /* end of argument vector */
+                       place = EMSG;
+                       if (nonopt_end != -1) {
+                               /* do permutation, if we have to */
+                               permute_args(nonopt_start, nonopt_end,
+                                   optind, nargv);
+                               optind -= nonopt_end - nonopt_start;
+                       }
+                       else if (nonopt_start != -1) {
+                               /*
+                                * If we skipped non-options, set optind
+                                * to the first of them.
+                                */
+                               optind = nonopt_start;
+                       }
+                       nonopt_start = nonopt_end = -1;
+                       return -1;
+               }
+               if ((*(place = nargv[optind]) != '-')
+                   || (place[1] == '\0')) {    /* found non-option */
+                       place = EMSG;
+                       if (IN_ORDER) {
+                               /*
+                                * GNU extension: 
+                                * return non-option as argument to option 1
+                                */
+                               optarg = nargv[optind++];
+                               return INORDER;
+                       }
+                       if (!PERMUTE) {
+                               /*
+                                * if no permutation wanted, stop parsing
+                                * at first non-option
+                                */
+                               return -1;
+                       }
+                       /* do permutation */
+                       if (nonopt_start == -1)
+                               nonopt_start = optind;
+                       else if (nonopt_end != -1) {
+                               permute_args(nonopt_start, nonopt_end,
+                                   optind, nargv);
+                               nonopt_start = optind -
+                                   (nonopt_end - nonopt_start);
+                               nonopt_end = -1;
+                       }
+                       optind++;
+                       /* process next argument */
+                       goto start;
+               }
+               if (nonopt_start != -1 && nonopt_end == -1)
+                       nonopt_end = optind;
+               if (place[1] && *++place == '-') {      /* found "--" */
+                       place++;
+                       return -2;
+               }
+       }
+       if ((optchar = (int)*place++) == (int)':' ||
+           (oli = strchr(options + (IGNORE_FIRST ? 1 : 0), optchar)) == NULL) {
+               /* option letter unknown or ':' */
+               if (!*place)
+                       ++optind;
+#ifndef _WIN32
+               if (PRINT_ERROR)
+                       warnx(illoptchar, optchar);
+#else
+                       warnx(PRINT_ERROR, illoptchar, optchar);
+#endif
+               optopt = optchar;
+               return BADCH;
+       }
+       if (optchar == 'W' && oli[1] == ';') {          /* -W long-option */
+               /* XXX: what if no long options provided (called by getopt)? */
+               if (*place) 
+                       return -2;
+
+               if (++optind >= nargc) {        /* no arg */
+                       place = EMSG;
+#ifndef _WIN32
+                       if (PRINT_ERROR)
+                               warnx(recargchar, optchar);
+#else
+                               warnx(PRINT_ERROR, recargchar, optchar);
+#endif
+                       optopt = optchar;
+                       return BADARG;
+               } else                          /* white space */
+                       place = nargv[optind];
+               /*
+                * Handle -W arg the same as --arg (which causes getopt to
+                * stop parsing).
+                */
+               return -2;
+       }
+       if (*++oli != ':') {                    /* doesn't take argument */
+               if (!*place)
+                       ++optind;
+       } else {                                /* takes (optional) argument */
+               optarg = NULL;
+               if (*place)                     /* no white space */
+                       optarg = place;
+               /* XXX: disable test for :: if PC? (GNU doesn't) */
+               else if (oli[1] != ':') {       /* arg not optional */
+                       if (++optind >= nargc) {        /* no arg */
+                               place = EMSG;
+#ifndef _WIN32
+                               if (PRINT_ERROR)
+                                       warnx(recargchar, optchar);
+#else
+                                       warnx(PRINT_ERROR, recargchar, optchar);
+#endif
+                               optopt = optchar;
+                               return BADARG;
+                       } else
+                               optarg = nargv[optind];
+               }
+               place = EMSG;
+               ++optind;
+       }
+       /* dump back option letter */
+       return optchar;
+}
+
+#ifdef REPLACE_GETOPT
+/*
+ * getopt --
+ *     Parse argc/argv argument vector.
+ *
+ * [eventually this will replace the real getopt]
+ */
+int
+getopt(nargc, nargv, options)
+       int nargc;
+       char * const *nargv;
+       const char *options;
+{
+       int retval;
+
+       _DIAGASSERT(nargv != NULL);
+       _DIAGASSERT(options != NULL);
+
+       if ((retval = getopt_internal(nargc, nargv, options)) == -2) {
+               ++optind;
+               /*
+                * We found an option (--), so if we skipped non-options,
+                * we have to permute.
+                */
+               if (nonopt_end != -1) {
+                       permute_args(nonopt_start, nonopt_end, optind,
+                                      nargv);
+                       optind -= nonopt_end - nonopt_start;
+               }
+               nonopt_start = nonopt_end = -1;
+               retval = -1;
+       }
+       return retval;
+}
+#endif
+
+/*
+ * getopt_long --
+ *     Parse argc/argv argument vector.
+ */
+int
+getopt_long(nargc, nargv, options, long_options, idx)
+       int nargc;
+       char * const *nargv;
+       const char *options;
+       const struct option *long_options;
+       int *idx;
+{
+       int retval;
+
+       _DIAGASSERT(nargv != NULL);
+       _DIAGASSERT(options != NULL);
+       _DIAGASSERT(long_options != NULL);
+       /* idx may be NULL */
+
+       if ((retval = getopt_internal(nargc, nargv, options)) == -2) {
+               char *current_argv, *has_equal;
+               size_t current_argv_len;
+               int i, match;
+
+               current_argv = place;
+               match = -1;
+
+               optind++;
+               place = EMSG;
+
+               if (*current_argv == '\0') {            /* found "--" */
+                       /*
+                        * We found an option (--), so if we skipped
+                        * non-options, we have to permute.
+                        */
+                       if (nonopt_end != -1) {
+                               permute_args(nonopt_start, nonopt_end,
+                                   optind, nargv);
+                               optind -= nonopt_end - nonopt_start;
+                       }
+                       nonopt_start = nonopt_end = -1;
+                       return -1;
+               }
+               if ((has_equal = strchr(current_argv, '=')) != NULL) {
+                       /* argument found (--option=arg) */
+                       current_argv_len = has_equal - current_argv;
+                       has_equal++;
+               } else
+                       current_argv_len = strlen(current_argv);
+           
+               for (i = 0; long_options[i].name; i++) {
+                       /* find matching long option */
+                       if (strncmp(current_argv, long_options[i].name,
+                           current_argv_len))
+                               continue;
+
+                       if (strlen(long_options[i].name) ==
+                           (unsigned)current_argv_len) {
+                               /* exact match */
+                               match = i;
+                               break;
+                       }
+                       if (match == -1)                /* partial match */
+                               match = i;
+                       else {
+                               /* ambiguous abbreviation */
+#ifndef _WIN32
+                               if (PRINT_ERROR)
+                                       warnx(ambig, (int)current_argv_len,
+                                            current_argv);
+#else
+                                       warnx(PRINT_ERROR, ambig, (int)current_argv_len,
+                                            current_argv);
+#endif
+                               optopt = 0;
+                               return BADCH;
+                       }
+               }
+               if (match != -1) {                      /* option found */
+                       if (long_options[match].has_arg == no_argument
+                           && has_equal) {
+#ifndef _WIN32
+                               if (PRINT_ERROR)
+                                       warnx(noarg, (int)current_argv_len,
+                                            current_argv);
+#else
+                                       warnx(PRINT_ERROR, noarg, (int)current_argv_len,
+                                            current_argv);
+#endif
+                               /*
+                                * XXX: GNU sets optopt to val regardless of
+                                * flag
+                                */
+                               if (long_options[match].flag == NULL)
+                                       optopt = long_options[match].val;
+                               else
+                                       optopt = 0;
+                               return BADARG;
+                       }
+                       if (long_options[match].has_arg == required_argument ||
+                           long_options[match].has_arg == optional_argument) {
+                               if (has_equal)
+                                       optarg = has_equal;
+                               else if (long_options[match].has_arg ==
+                                   required_argument) {
+                                       /*
+                                        * optional argument doesn't use
+                                        * next nargv
+                                        */
+                                       optarg = nargv[optind++];
+                               }
+                       }
+                       if ((long_options[match].has_arg == required_argument)
+                           && (optarg == NULL)) {
+                               /*
+                                * Missing argument; leading ':'
+                                * indicates no error should be generated
+                                */
+#ifndef _WIN32
+                               if (PRINT_ERROR)
+                                       warnx(recargstring, current_argv);
+#else
+                                       warnx(PRINT_ERROR, recargstring, current_argv);
+#endif
+                               /*
+                                * XXX: GNU sets optopt to val regardless
+                                * of flag
+                                */
+                               if (long_options[match].flag == NULL)
+                                       optopt = long_options[match].val;
+                               else
+                                       optopt = 0;
+                               --optind;
+                               return BADARG;
+                       }
+               } else {                        /* unknown option */
+#ifndef _WIN32
+                       if (PRINT_ERROR)
+                               warnx(illoptstring, current_argv);
+#else
+                               warnx(PRINT_ERROR, illoptstring, current_argv);
+#endif
+                       optopt = 0;
+                       return BADCH;
+               }
+               if (long_options[match].flag) {
+                       *long_options[match].flag = long_options[match].val;
+                       retval = 0;
+               } else 
+                       retval = long_options[match].val;
+               if (idx)
+                       *idx = match;
+       }
+       return retval;
+}
+#endif /* !GETOPT_LONG */
diff --git a/win32/experimental/wincompat/unistd.h b/win32/experimental/wincompat/unistd.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/win32/getopt.c b/win32/getopt.c
new file mode 100644 (file)
index 0000000..dad25b6
--- /dev/null
@@ -0,0 +1,1047 @@
+/* Getopt for GNU.
+   NOTE: getopt is now part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to drepper@gnu.org
+   before changing it!
+
+   Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
+       Free Software Foundation, Inc.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
+   Ditto for AIX 3.2 and <stdlib.h>.  */
+#ifndef _NO_PROTO
+# define _NO_PROTO
+#endif
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#if !defined __STDC__ || !__STDC__
+/* This is a separate conditional since some stdc systems
+   reject `defined (const)'.  */
+# ifndef const
+#  define const
+# endif
+#endif
+
+#include <stdio.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#define GETOPT_INTERFACE_VERSION 2
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+# include <gnu-versions.h>
+# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+#  define ELIDE_CODE
+# endif
+#endif
+
+#ifndef ELIDE_CODE
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef __GNU_LIBRARY__
+/* Don't include stdlib.h for non-GNU C libraries because some of them
+   contain conflicting prototypes for getopt.  */
+# include <stdlib.h>
+# include <unistd.h>
+#endif /* GNU C library.  */
+
+#ifdef VMS
+# include <unixlib.h>
+# if HAVE_STRING_H - 0
+#  include <string.h>
+# endif
+#endif
+
+#ifndef _
+/* This is for other GNU distributions with internationalized messages.
+   When compiling libc, the _ macro is predefined.  */
+# ifdef HAVE_LIBINTL_H
+#  include <libintl.h>
+#  define _(msgid)     gettext (msgid)
+# else
+#  define _(msgid)     (msgid)
+# endif
+#endif
+
+/* This version of `getopt' appears to the caller like standard Unix `getopt'
+   but it behaves differently for the user, since it allows the user
+   to intersperse the options with the other arguments.
+
+   As `getopt' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Setting the environment variable POSIXLY_CORRECT disables permutation.
+   Then the behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt_win.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* 1003.2 says this must be 1 before any call.  */
+int optind = 1;
+
+/* Formerly, initialization of getopt depended on optind==0, which
+   causes problems with re-calling getopt as programs generally don't
+   know that. */
+
+int __getopt_initialized;
+
+/* The next char to be scanned in the option-element
+   in which the last option character we returned was found.
+   This allows us to pick up the scan where we left off.
+
+   If this is zero, or a null string, it means resume the scan
+   by advancing to the next ARGV-element.  */
+
+static char *nextchar;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+int optopt = '?';
+
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+   If the caller did not specify anything,
+   the default is REQUIRE_ORDER if the environment variable
+   POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+   REQUIRE_ORDER means don't recognize them as options;
+   stop option processing when the first non-option is seen.
+   This is what Unix does.
+   This mode of operation is selected by either setting the environment
+   variable POSIXLY_CORRECT, or using `+' as the first character
+   of the list of option characters.
+
+   PERMUTE is the default.  We permute the contents of ARGV as we scan,
+   so that eventually all the non-options are at the end.  This allows options
+   to be given in any order, even with programs that were not written to
+   expect this.
+
+   RETURN_IN_ORDER is an option available to programs that were written
+   to expect options and other ARGV-elements in any order and that care about
+   the ordering of the two.  We describe each non-option ARGV-element
+   as if it were the argument of an option with character code 1.
+   Using `-' as the first character of the list of option characters
+   selects this mode of operation.
+
+   The special argument `--' forces an end of option-scanning regardless
+   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+   `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+
+static enum
+{
+  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+} ordering;
+
+/* Value of POSIXLY_CORRECT environment variable.  */
+static char *posixly_correct;
+\f
+#ifdef __GNU_LIBRARY__
+/* We want to avoid inclusion of string.h with non-GNU libraries
+   because there are many ways it can cause trouble.
+   On some systems, it contains special magic macros that don't work
+   in GCC.  */
+# include <string.h>
+# define my_index      strchr
+#else
+
+#include <string.h>
+
+/* Avoid depending on library functions or files
+   whose names are inconsistent.  */
+
+#ifndef getenv
+extern char *getenv ();
+#endif
+
+static char *
+my_index (str, chr)
+     const char *str;
+     int chr;
+{
+  while (*str)
+    {
+      if (*str == chr)
+       return (char *) str;
+      str++;
+    }
+  return 0;
+}
+
+/* If using GCC, we can safely declare strlen this way.
+   If not using GCC, it is ok not to declare it.  */
+#ifdef __GNUC__
+/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
+   That was relevant to code that was here before.  */
+# if (!defined __STDC__ || !__STDC__) && !defined strlen
+/* gcc with -traditional declares the built-in strlen to return int,
+   and has done so at least since version 2.4.5. -- rms.  */
+extern int strlen (const char *);
+# endif /* not __STDC__ */
+#endif /* __GNUC__ */
+
+#endif /* not __GNU_LIBRARY__ */
+\f
+/* Handle permutation of arguments.  */
+
+/* Describe the part of ARGV that contains non-options that have
+   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
+   `last_nonopt' is the index after the last of them.  */
+
+static int first_nonopt;
+static int last_nonopt;
+
+#ifdef _LIBC
+/* Bash 2.0 gives us an environment variable containing flags
+   indicating ARGV elements that should not be considered arguments.  */
+
+/* Defined in getopt_init.c  */
+extern char *__getopt_nonoption_flags;
+
+static int nonoption_flags_max_len;
+static int nonoption_flags_len;
+
+static int original_argc;
+static char *const *original_argv;
+
+/* Make sure the environment variable bash 2.0 puts in the environment
+   is valid for the getopt call we must make sure that the ARGV passed
+   to getopt is that one passed to the process.  */
+static void
+__attribute__ ((unused))
+store_args_and_env (int argc, char *const *argv)
+{
+  /* XXX This is no good solution.  We should rather copy the args so
+     that we can compare them later.  But we must not use malloc(3).  */
+  original_argc = argc;
+  original_argv = argv;
+}
+# ifdef text_set_element
+text_set_element (__libc_subinit, store_args_and_env);
+# endif /* text_set_element */
+
+# define SWAP_FLAGS(ch1, ch2) \
+  if (nonoption_flags_len > 0)                                               \
+    {                                                                        \
+      char __tmp = __getopt_nonoption_flags[ch1];                            \
+      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];         \
+      __getopt_nonoption_flags[ch2] = __tmp;                                 \
+    }
+#else  /* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif /* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.  */
+
+#if defined __STDC__ && __STDC__
+static void exchange (char **);
+#endif
+
+static void
+exchange (argv)
+     char **argv;
+{
+  int bottom = first_nonopt;
+  int middle = last_nonopt;
+  int top = optind;
+  char *tem;
+
+  /* Exchange the shorter segment with the far end of the longer segment.
+     That puts the shorter segment into the right place.
+     It leaves the longer segment in the right place overall,
+     but it consists of two parts that need to be swapped next.  */
+
+#ifdef _LIBC
+  /* First make sure the handling of the `__getopt_nonoption_flags'
+     string can work normally.  Our top argument must be in the range
+     of the string.  */
+  if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
+    {
+      /* We must extend the array.  The user plays games with us and
+        presents new arguments.  */
+      char *new_str = malloc (top + 1);
+      if (new_str == NULL)
+       nonoption_flags_len = nonoption_flags_max_len = 0;
+      else
+       {
+         memset (__mempcpy (new_str, __getopt_nonoption_flags,
+                            nonoption_flags_max_len),
+                 '\0', top + 1 - nonoption_flags_max_len);
+         nonoption_flags_max_len = top + 1;
+         __getopt_nonoption_flags = new_str;
+       }
+    }
+#endif
+
+  while (top > middle && middle > bottom)
+    {
+      if (top - middle > middle - bottom)
+       {
+         /* Bottom segment is the short one.  */
+         int len = middle - bottom;
+         register int i;
+
+         /* Swap it with the top part of the top segment.  */
+         for (i = 0; i < len; i++)
+           {
+             tem = argv[bottom + i];
+             argv[bottom + i] = argv[top - (middle - bottom) + i];
+             argv[top - (middle - bottom) + i] = tem;
+             SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+           }
+         /* Exclude the moved bottom segment from further swapping.  */
+         top -= len;
+       }
+      else
+       {
+         /* Top segment is the short one.  */
+         int len = top - middle;
+         register int i;
+
+         /* Swap it with the bottom part of the bottom segment.  */
+         for (i = 0; i < len; i++)
+           {
+             tem = argv[bottom + i];
+             argv[bottom + i] = argv[middle + i];
+             argv[middle + i] = tem;
+             SWAP_FLAGS (bottom + i, middle + i);
+           }
+         /* Exclude the moved top segment from further swapping.  */
+         bottom += len;
+       }
+    }
+
+  /* Update records for the slots the non-options now occupy.  */
+
+  first_nonopt += (optind - last_nonopt);
+  last_nonopt = optind;
+}
+
+/* Initialize the internal data when the first call is made.  */
+
+#if defined __STDC__ && __STDC__
+static const char *_getopt_initialize (int, char *const *, const char *);
+#endif
+static const char *
+_getopt_initialize (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  /* Start processing options with ARGV-element 1 (since ARGV-element 0
+     is the program name); the sequence of previously skipped
+     non-option ARGV-elements is empty.  */
+
+  first_nonopt = last_nonopt = optind;
+
+  nextchar = NULL;
+
+  posixly_correct = getenv ("POSIXLY_CORRECT");
+
+  /* Determine how to handle the ordering of options and nonoptions.  */
+
+  if (optstring[0] == '-')
+    {
+      ordering = RETURN_IN_ORDER;
+      ++optstring;
+    }
+  else if (optstring[0] == '+')
+    {
+      ordering = REQUIRE_ORDER;
+      ++optstring;
+    }
+  else if (posixly_correct != NULL)
+    ordering = REQUIRE_ORDER;
+  else
+    ordering = PERMUTE;
+
+#ifdef _LIBC
+  if (posixly_correct == NULL
+      && argc == original_argc && argv == original_argv)
+    {
+      if (nonoption_flags_max_len == 0)
+       {
+         if (__getopt_nonoption_flags == NULL
+             || __getopt_nonoption_flags[0] == '\0')
+           nonoption_flags_max_len = -1;
+         else
+           {
+             const char *orig_str = __getopt_nonoption_flags;
+             int len = nonoption_flags_max_len = strlen (orig_str);
+             if (nonoption_flags_max_len < argc)
+               nonoption_flags_max_len = argc;
+             __getopt_nonoption_flags =
+               (char *) malloc (nonoption_flags_max_len);
+             if (__getopt_nonoption_flags == NULL)
+               nonoption_flags_max_len = -1;
+             else
+               memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+                       '\0', nonoption_flags_max_len - len);
+           }
+       }
+      nonoption_flags_len = nonoption_flags_max_len;
+    }
+  else
+    nonoption_flags_len = 0;
+#endif
+
+  return optstring;
+}
+\f
+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns -1.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return '?' after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return '?'.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   The elements of ARGV aren't really const, because we permute them.
+   But we pretend they're const in the prototype to be compatible
+   with other systems.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.  */
+
+int
+_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+     const struct option *longopts;
+     int *longind;
+     int long_only;
+{
+  optarg = NULL;
+
+  if (optind == 0 || !__getopt_initialized)
+    {
+      if (optind == 0)
+       optind = 1;     /* Don't scan ARGV[0], the program name.  */
+      optstring = _getopt_initialize (argc, argv, optstring);
+      __getopt_initialized = 1;
+    }
+
+  /* Test whether ARGV[optind] points to a non-option argument.
+     Either it does not have option syntax, or there is an environment flag
+     from the shell indicating it is not an option.  The later information
+     is only used when the used in the GNU libc.  */
+#ifdef _LIBC
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0'              \
+                     || (optind < nonoption_flags_len                        \
+                         && __getopt_nonoption_flags[optind] == '1'))
+#else
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
+#endif
+
+  if (nextchar == NULL || *nextchar == '\0')
+    {
+      /* Advance to the next ARGV-element.  */
+
+      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+        moved back by the user (who may also have changed the arguments).  */
+      if (last_nonopt > optind)
+       last_nonopt = optind;
+      if (first_nonopt > optind)
+       first_nonopt = optind;
+
+      if (ordering == PERMUTE)
+       {
+         /* If we have just processed some options following some non-options,
+            exchange them so that the options come first.  */
+
+         if (first_nonopt != last_nonopt && last_nonopt != optind)
+           exchange ((char **) argv);
+         else if (last_nonopt != optind)
+           first_nonopt = optind;
+
+         /* Skip any additional non-options
+            and extend the range of non-options previously skipped.  */
+
+         while (optind < argc && NONOPTION_P)
+           optind++;
+         last_nonopt = optind;
+       }
+
+      /* The special ARGV-element `--' means premature end of options.
+        Skip it like a null option,
+        then exchange with previous non-options as if it were an option,
+        then skip everything else like a non-option.  */
+
+      if (optind != argc && !strcmp (argv[optind], "--"))
+       {
+         optind++;
+
+         if (first_nonopt != last_nonopt && last_nonopt != optind)
+           exchange ((char **) argv);
+         else if (first_nonopt == last_nonopt)
+           first_nonopt = optind;
+         last_nonopt = argc;
+
+         optind = argc;
+       }
+
+      /* If we have done all the ARGV-elements, stop the scan
+        and back over any non-options that we skipped and permuted.  */
+
+      if (optind == argc)
+       {
+         /* Set the next-arg-index to point at the non-options
+            that we previously skipped, so the caller will digest them.  */
+         if (first_nonopt != last_nonopt)
+           optind = first_nonopt;
+         return -1;
+       }
+
+      /* If we have come to a non-option and did not permute it,
+        either stop the scan or describe it to the caller and pass it by.  */
+
+      if (NONOPTION_P)
+       {
+         if (ordering == REQUIRE_ORDER)
+           return -1;
+         optarg = argv[optind++];
+         return 1;
+       }
+
+      /* We have found another option-ARGV-element.
+        Skip the initial punctuation.  */
+
+      nextchar = (argv[optind] + 1
+                 + (longopts != NULL && argv[optind][1] == '-'));
+    }
+
+  /* Decode the current option-ARGV-element.  */
+
+  /* Check whether the ARGV-element is a long option.
+
+     If long_only and the ARGV-element has the form "-f", where f is
+     a valid short option, don't consider it an abbreviated form of
+     a long option that starts with f.  Otherwise there would be no
+     way to give the -f short option.
+
+     On the other hand, if there's a long option "fubar" and
+     the ARGV-element is "-fu", do consider that an abbreviation of
+     the long option, just like "--fu", and not "-f" with arg "u".
+
+     This distinction seems to be the most useful approach.  */
+
+  if (longopts != NULL
+      && (argv[optind][1] == '-'
+         || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
+    {
+      char *nameend;
+      const struct option *p;
+      const struct option *pfound = NULL;
+      int exact = 0;
+      int ambig = 0;
+      int indfound = -1;
+      int option_index;
+
+      for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
+       /* Do nothing.  */ ;
+
+      /* Test all long options for either exact match
+        or abbreviated matches.  */
+      for (p = longopts, option_index = 0; p->name; p++, option_index++)
+       if (!strncmp (p->name, nextchar, nameend - nextchar))
+         {
+           if ((unsigned int) (nameend - nextchar)
+               == (unsigned int) strlen (p->name))
+             {
+               /* Exact match found.  */
+               pfound = p;
+               indfound = option_index;
+               exact = 1;
+               break;
+             }
+           else if (pfound == NULL)
+             {
+               /* First nonexact match found.  */
+               pfound = p;
+               indfound = option_index;
+             }
+           else
+             /* Second or later nonexact match found.  */
+             ambig = 1;
+         }
+
+      if (ambig && !exact)
+       {
+         if (opterr)
+           fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+                    argv[0], argv[optind]);
+         nextchar += strlen (nextchar);
+         optind++;
+         optopt = 0;
+         return '?';
+       }
+
+      if (pfound != NULL)
+       {
+         option_index = indfound;
+         optind++;
+         if (*nameend)
+           {
+             /* Don't test has_arg with >, because some C compilers don't
+                allow it to be used on enums.  */
+             if (pfound->has_arg)
+               optarg = nameend + 1;
+             else
+               {
+                 if (opterr)
+                   {
+                     if (argv[optind - 1][1] == '-')
+                       /* --option */
+                       fprintf (stderr,
+                                _("%s: option `--%s' doesn't allow an argument\n"),
+                                argv[0], pfound->name);
+                     else
+                       /* +option or -option */
+                       fprintf (stderr,
+                                _("%s: option `%c%s' doesn't allow an argument\n"),
+                                argv[0], argv[optind - 1][0], pfound->name);
+                   }
+
+                 nextchar += strlen (nextchar);
+
+                 optopt = pfound->val;
+                 return '?';
+               }
+           }
+         else if (pfound->has_arg == 1)
+           {
+             if (optind < argc)
+               optarg = argv[optind++];
+             else
+               {
+                 if (opterr)
+                   fprintf (stderr,
+                          _("%s: option `%s' requires an argument\n"),
+                          argv[0], argv[optind - 1]);
+                 nextchar += strlen (nextchar);
+                 optopt = pfound->val;
+                 return optstring[0] == ':' ? ':' : '?';
+               }
+           }
+         nextchar += strlen (nextchar);
+         if (longind != NULL)
+           *longind = option_index;
+         if (pfound->flag)
+           {
+             *(pfound->flag) = pfound->val;
+             return 0;
+           }
+         return pfound->val;
+       }
+
+      /* Can't find it as a long option.  If this is not getopt_long_only,
+        or the option starts with '--' or is not a valid short
+        option, then it's an error.
+        Otherwise interpret it as a short option.  */
+      if (!long_only || argv[optind][1] == '-'
+         || my_index (optstring, *nextchar) == NULL)
+       {
+         if (opterr)
+           {
+             if (argv[optind][1] == '-')
+               /* --option */
+               fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+                        argv[0], nextchar);
+             else
+               /* +option or -option */
+               fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+                        argv[0], argv[optind][0], nextchar);
+           }
+         nextchar = (char *) "";
+         optind++;
+         optopt = 0;
+         return '?';
+       }
+    }
+
+  /* Look at and handle the next short option-character.  */
+
+  {
+    char c = *nextchar++;
+    char *temp = my_index (optstring, c);
+
+    /* Increment `optind' when we start to process its last character.  */
+    if (*nextchar == '\0')
+      ++optind;
+
+    if (temp == NULL || c == ':')
+      {
+       if (opterr)
+         {
+           if (posixly_correct)
+             /* 1003.2 specifies the format of this message.  */
+             fprintf (stderr, _("%s: illegal option -- %c\n"),
+                      argv[0], c);
+           else
+             fprintf (stderr, _("%s: invalid option -- %c\n"),
+                      argv[0], c);
+         }
+       optopt = c;
+       return '?';
+      }
+    /* Convenience. Treat POSIX -W foo same as long option --foo */
+    if (temp[0] == 'W' && temp[1] == ';')
+      {
+       char *nameend;
+       const struct option *p;
+       const struct option *pfound = NULL;
+       int exact = 0;
+       int ambig = 0;
+       int indfound = 0;
+       int option_index;
+
+       /* This is an option that requires an argument.  */
+       if (*nextchar != '\0')
+         {
+           optarg = nextchar;
+           /* If we end this ARGV-element by taking the rest as an arg,
+              we must advance to the next element now.  */
+           optind++;
+         }
+       else if (optind == argc)
+         {
+           if (opterr)
+             {
+               /* 1003.2 specifies the format of this message.  */
+               fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+                        argv[0], c);
+             }
+           optopt = c;
+           if (optstring[0] == ':')
+             c = ':';
+           else
+             c = '?';
+           return c;
+         }
+       else
+         /* We already incremented `optind' once;
+            increment it again when taking next ARGV-elt as argument.  */
+         optarg = argv[optind++];
+
+       /* optarg is now the argument, see if it's in the
+          table of longopts.  */
+
+       for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
+         /* Do nothing.  */ ;
+
+       /* Test all long options for either exact match
+          or abbreviated matches.  */
+       for (p = longopts, option_index = 0; p->name; p++, option_index++)
+         if (!strncmp (p->name, nextchar, nameend - nextchar))
+           {
+             if ((unsigned int) (nameend - nextchar) == strlen (p->name))
+               {
+                 /* Exact match found.  */
+                 pfound = p;
+                 indfound = option_index;
+                 exact = 1;
+                 break;
+               }
+             else if (pfound == NULL)
+               {
+                 /* First nonexact match found.  */
+                 pfound = p;
+                 indfound = option_index;
+               }
+             else
+               /* Second or later nonexact match found.  */
+               ambig = 1;
+           }
+       if (ambig && !exact)
+         {
+           if (opterr)
+             fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+                      argv[0], argv[optind]);
+           nextchar += strlen (nextchar);
+           optind++;
+           return '?';
+         }
+       if (pfound != NULL)
+         {
+           option_index = indfound;
+           if (*nameend)
+             {
+               /* Don't test has_arg with >, because some C compilers don't
+                  allow it to be used on enums.  */
+               if (pfound->has_arg)
+                 optarg = nameend + 1;
+               else
+                 {
+                   if (opterr)
+                     fprintf (stderr, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                              argv[0], pfound->name);
+
+                   nextchar += strlen (nextchar);
+                   return '?';
+                 }
+             }
+           else if (pfound->has_arg == 1)
+             {
+               if (optind < argc)
+                 optarg = argv[optind++];
+               else
+                 {
+                   if (opterr)
+                     fprintf (stderr,
+                              _("%s: option `%s' requires an argument\n"),
+                              argv[0], argv[optind - 1]);
+                   nextchar += strlen (nextchar);
+                   return optstring[0] == ':' ? ':' : '?';
+                 }
+             }
+           nextchar += strlen (nextchar);
+           if (longind != NULL)
+             *longind = option_index;
+           if (pfound->flag)
+             {
+               *(pfound->flag) = pfound->val;
+               return 0;
+             }
+           return pfound->val;
+         }
+         nextchar = NULL;
+         return 'W';   /* Let the application handle it.   */
+      }
+    if (temp[1] == ':')
+      {
+       if (temp[2] == ':')
+         {
+           /* This is an option that accepts an argument optionally.  */
+           if (*nextchar != '\0')
+             {
+               optarg = nextchar;
+               optind++;
+             }
+           else
+             optarg = NULL;
+           nextchar = NULL;
+         }
+       else
+         {
+           /* This is an option that requires an argument.  */
+           if (*nextchar != '\0')
+             {
+               optarg = nextchar;
+               /* If we end this ARGV-element by taking the rest as an arg,
+                  we must advance to the next element now.  */
+               optind++;
+             }
+           else if (optind == argc)
+             {
+               if (opterr)
+                 {
+                   /* 1003.2 specifies the format of this message.  */
+                   fprintf (stderr,
+                          _("%s: option requires an argument -- %c\n"),
+                          argv[0], c);
+                 }
+               optopt = c;
+               if (optstring[0] == ':')
+                 c = ':';
+               else
+                 c = '?';
+             }
+           else
+             /* We already incremented `optind' once;
+                increment it again when taking next ARGV-elt as argument.  */
+             optarg = argv[optind++];
+           nextchar = NULL;
+         }
+      }
+    return c;
+  }
+}
+
+int
+getopt (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  return _getopt_internal (argc, argv, optstring,
+                          (const struct option *) 0,
+                          (int *) 0,
+                          0);
+}
+
+#endif /* Not ELIDE_CODE.  */
+\f
+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+
+      c = getopt (argc, argv, "abc:d:0123456789");
+      if (c == -1)
+       break;
+
+      switch (c)
+       {
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+         if (digit_optind != 0 && digit_optind != this_option_optind)
+           printf ("digits occur in two different argv-elements.\n");
+         digit_optind = this_option_optind;
+         printf ("option %c\n", c);
+         break;
+
+       case 'a':
+         printf ("option a\n");
+         break;
+
+       case 'b':
+         printf ("option b\n");
+         break;
+
+       case 'c':
+         printf ("option c with value `%s'\n", optarg);
+         break;
+
+       case '?':
+         break;
+
+       default:
+         printf ("?? getopt returned character code 0%o ??\n", c);
+       }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+       printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/win32/getopt1.c b/win32/getopt1.c
new file mode 100644 (file)
index 0000000..dee6325
--- /dev/null
@@ -0,0 +1,188 @@
+/* getopt_long and getopt_long_only entry points for GNU getopt.
+   Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
+     Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "getopt_win.h"
+
+#if !defined __STDC__ || !__STDC__
+/* This is a separate conditional since some stdc systems
+   reject `defined (const)'.  */
+#ifndef const
+#define const
+#endif
+#endif
+
+#include <stdio.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#define GETOPT_INTERFACE_VERSION 2
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+#include <gnu-versions.h>
+#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+#define ELIDE_CODE
+#endif
+#endif
+
+#ifndef ELIDE_CODE
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef __GNU_LIBRARY__
+#include <stdlib.h>
+#endif
+
+#ifndef        NULL
+#define NULL 0
+#endif
+
+int
+getopt_long (argc, argv, options, long_options, opt_index)
+     int argc;
+     char *const *argv;
+     const char *options;
+     const struct option *long_options;
+     int *opt_index;
+{
+  return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
+}
+
+/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+   If an option that starts with '-' (not '--') doesn't match a long option,
+   but does match a short option, it is parsed as a short option
+   instead.  */
+
+int
+getopt_long_only (argc, argv, options, long_options, opt_index)
+     int argc;
+     char *const *argv;
+     const char *options;
+     const struct option *long_options;
+     int *opt_index;
+{
+  return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
+}
+
+
+#endif /* Not ELIDE_CODE.  */
+\f
+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+      int option_index = 0;
+      static struct option long_options[] =
+      {
+       {"add", 1, 0, 0},
+       {"append", 0, 0, 0},
+       {"delete", 1, 0, 0},
+       {"verbose", 0, 0, 0},
+       {"create", 0, 0, 0},
+       {"file", 1, 0, 0},
+       {0, 0, 0, 0}
+      };
+
+      c = getopt_long (argc, argv, "abc:d:0123456789",
+                      long_options, &option_index);
+      if (c == -1)
+       break;
+
+      switch (c)
+       {
+       case 0:
+         printf ("option %s", long_options[option_index].name);
+         if (optarg)
+           printf (" with arg %s", optarg);
+         printf ("\n");
+         break;
+
+       case '0':
+       case '1':
+       case '2':
+       case '3':
+       case '4':
+       case '5':
+       case '6':
+       case '7':
+       case '8':
+       case '9':
+         if (digit_optind != 0 && digit_optind != this_option_optind)
+           printf ("digits occur in two different argv-elements.\n");
+         digit_optind = this_option_optind;
+         printf ("option %c\n", c);
+         break;
+
+       case 'a':
+         printf ("option a\n");
+         break;
+
+       case 'b':
+         printf ("option b\n");
+         break;
+
+       case 'c':
+         printf ("option c with value `%s'\n", optarg);
+         break;
+
+       case 'd':
+         printf ("option d with value `%s'\n", optarg);
+         break;
+
+       case '?':
+         break;
+
+       default:
+         printf ("?? getopt returned character code 0%o ??\n", c);
+       }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+       printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/win32/getopt_win.h b/win32/getopt_win.h
new file mode 100644 (file)
index 0000000..b0147e9
--- /dev/null
@@ -0,0 +1,169 @@
+/* Declarations for getopt.
+   Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _GETOPT_H
+
+#ifndef __need_getopt
+# define _GETOPT_H 1
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument         (or 0) if the option does not take an argument,
+   required_argument   (or 1) if the option requires an argument,
+   optional_argument   (or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+# if defined __STDC__ && __STDC__
+  const char *name;
+# else
+  char *name;
+# endif
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+# define no_argument           0
+# define required_argument     1
+# define optional_argument     2
+#endif /* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.
+
+   Return the option character from OPTS just read.  Return -1 when
+   there are no more options.  For unrecognized options, or options
+   missing arguments, `optopt' is set to the option letter, and '?' is
+   returned.
+
+   The OPTS string is a list of characters which are recognized option
+   letters, optionally followed by colons, specifying that that letter
+   takes an argument, to be placed in `optarg'.
+
+   If a letter in OPTS is followed by two colons, its argument is
+   optional.  This behavior is specific to the GNU `getopt'.
+
+   The argument `--' causes premature termination of argument
+   scanning, explicitly telling `getopt' that there are no more
+   options.
+
+   If OPTS begins with `--', then non-option arguments are treated as
+   arguments to the option '\0'.  This behavior is specific to the GNU
+   `getopt'.  */
+
+#if defined __STDC__ && __STDC__
+# ifdef __GNU_LIBRARY__
+/* Many other libraries have conflicting prototypes for getopt, with
+   differences in the consts, in stdlib.h.  To avoid compilation
+   errors, only prototype getopt for the GNU C library.  */
+extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
+# else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+# endif /* __GNU_LIBRARY__ */
+
+# ifndef __need_getopt
+extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
+                       const struct option *__longopts, int *__longind);
+extern int getopt_long_only (int __argc, char *const *__argv,
+                            const char *__shortopts,
+                            const struct option *__longopts, int *__longind);
+
+/* Internal only.  Users should not call this directly.  */
+extern int _getopt_internal (int __argc, char *const *__argv,
+                            const char *__shortopts,
+                            const struct option *__longopts, int *__longind,
+                            int __long_only);
+# endif
+#else /* not __STDC__ */
+extern int getopt ();
+# ifndef __need_getopt
+extern int getopt_long ();
+extern int getopt_long_only ();
+
+extern int _getopt_internal ();
+# endif
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations.  */
+#undef __need_getopt
+
+#endif /* getopt.h */
diff --git a/win32/theora_static.dsp b/win32/theora_static.dsp
new file mode 100644 (file)
index 0000000..f794e10
--- /dev/null
@@ -0,0 +1,336 @@
+# Microsoft Developer Studio Project File - Name="theora_static" - Package Owner=<4>\r
+# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
+# ** DO NOT EDIT **\r
+\r
+# TARGTYPE "Win32 (x86) Static Library" 0x0104\r
+\r
+CFG=theora_static - Win32 Debug\r
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
+!MESSAGE use the Export Makefile command and run\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "theora_static.mak".\r
+!MESSAGE \r
+!MESSAGE You can specify a configuration when running NMAKE\r
+!MESSAGE by defining the macro CFG on the command line. For example:\r
+!MESSAGE \r
+!MESSAGE NMAKE /f "theora_static.mak" CFG="theora_static - Win32 Debug"\r
+!MESSAGE \r
+!MESSAGE Possible choices for configuration are:\r
+!MESSAGE \r
+!MESSAGE "theora_static - Win32 Release" (based on "Win32 (x86) Static Library")\r
+!MESSAGE "theora_static - Win32 Debug" (based on "Win32 (x86) Static Library")\r
+!MESSAGE \r
+\r
+# Begin Project\r
+# PROP AllowPerConfigDependencies 0\r
+# PROP Scc_ProjName ""\r
+# PROP Scc_LocalPath ""\r
+CPP=cl.exe\r
+RSC=rc.exe\r
+\r
+!IF  "$(CFG)" == "theora_static - Win32 Release"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 0\r
+# PROP BASE Output_Dir "Release"\r
+# PROP BASE Intermediate_Dir "Release"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 0\r
+# PROP Output_Dir "Static_Release"\r
+# PROP Intermediate_Dir "Static_Release"\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c\r
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\ogg\include" /I "..\..\theora\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /c\r
+# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
+# ADD RSC /l 0x409 /d "NDEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo\r
+# ADD LIB32 /nologo\r
+\r
+!ELSEIF  "$(CFG)" == "theora_static - Win32 Debug"\r
+\r
+# PROP BASE Use_MFC 0\r
+# PROP BASE Use_Debug_Libraries 1\r
+# PROP BASE Output_Dir "Debug"\r
+# PROP BASE Intermediate_Dir "Debug"\r
+# PROP BASE Target_Dir ""\r
+# PROP Use_MFC 0\r
+# PROP Use_Debug_Libraries 1\r
+# PROP Output_Dir "Static_Debug"\r
+# PROP Intermediate_Dir "Static_Debug"\r
+# PROP Target_Dir ""\r
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c\r
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\ogg\include" /I "..\..\theora\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c\r
+# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
+# ADD RSC /l 0x409 /d "_DEBUG"\r
+BSC32=bscmake.exe\r
+# ADD BASE BSC32 /nologo\r
+# ADD BSC32 /nologo\r
+LIB32=link.exe -lib\r
+# ADD BASE LIB32 /nologo\r
+# ADD LIB32 /nologo /out:"Static_Debug\theora_static_d.lib"\r
+\r
+!ENDIF \r
+\r
+# Begin Target\r
+\r
+# Name "theora_static - Win32 Release"\r
+# Name "theora_static - Win32 Debug"\r
+# Begin Group "Source Files"\r
+\r
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\dct.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\dct_decode.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\dct_encode.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\dct_encode.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\encapiwrapper.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\encode.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\encoder_huffman.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\encoder_idct.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\encoder_toplevel.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\encoder_quant.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\frarray.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\frinit.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\mathops.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\mcenc.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\mode.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\reconstruct.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\x86_32_vs\dsp_mmx.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\x86_32_vs\fdct_mmx.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\x86_32_vs\recon_mmx.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\apiwrapper.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\bitpack.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\decapiwrapper.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\decinfo.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\decode.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\dequant.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\fragment.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\huffdec.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\idct.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\info.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\internal.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\quant.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\state.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\x86_vc\mmxfrag.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\x86_vc\mmxidct.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\x86_vc\mmxloopfilter.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\x86_vc\mmxstate.c\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\x86_vc\x86stat.c\r
+# End Source File\r
+# End Group\r
+# Begin Group "Header Files"\r
+\r
+# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\apiwrapper.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\block_inline.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\include\theora\codec.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\codec_internal.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\cpu.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\dct.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\decint.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\dequant.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\dsp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\encoder_huffman.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\encoder_lookup.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\enquant.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\huffdec.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\huffman.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\hufftables.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\idct.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\internal.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\ocintrin.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\pp.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\dec\quant.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\quant_lookup.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\include\theora\theora.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\include\theora\theoradec.h\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=..\lib\enc\toplevel_lookup.h\r
+# End Source File\r
+# End Group\r
+# End Target\r
+# End Project\r
diff --git a/win32/xmingw32/Makefile b/win32/xmingw32/Makefile
new file mode 100644 (file)
index 0000000..cf016d4
--- /dev/null
@@ -0,0 +1,393 @@
+# NOTE: This Makefile requires GNU make
+# Location to put the targets.
+TARGETBINDIR = .
+TARGETLIBDIR = .
+# DLL version information. Currently this must be updated manually.
+# Fields are: major, minor, build number, QFE version
+VERSION_FIELD = 1,0,0,0
+VERSION_STRING = \\\"1.0\\\"
+# Name of the targets
+# Hooray for Windows DLL hell.
+LIBTHEORAENC_TARGET = libtheoraenc.dll
+LIBTHEORAENCD_TARGET = libtheoraencd.dll
+LIBTHEORAENC70_TARGET = libtheoraenc70.dll
+LIBTHEORAENC70D_TARGET = libtheoraenc70d.dll
+LIBTHEORAENC71_TARGET = libtheoraenc71.dll
+LIBTHEORAENC71D_TARGET = libtheoraenc71d.dll
+LIBTHEORAENC80_TARGET = libtheoraenc80.dll
+LIBTHEORAENC80D_TARGET = libtheoraenc80d.dll
+
+LIBTHEORADEC_TARGET = libtheoradec.dll
+LIBTHEORADECD_TARGET = libtheoradecd.dll
+LIBTHEORADEC70_TARGET = libtheoradec70.dll
+LIBTHEORADEC70D_TARGET = libtheoradec70d.dll
+LIBTHEORADEC71_TARGET = libtheoradec71.dll
+LIBTHEORADEC71D_TARGET = libtheoradec71d.dll
+LIBTHEORADEC80_TARGET = libtheoradec80.dll
+LIBTHEORADEC80D_TARGET = libtheoradec80d.dll
+
+DUMP_VIDEO_TARGET = dump_video.exe
+PLAYER_EXAMPLE_TARGET = player_example.exe
+ENCODER_EXAMPLE_TARGET = encoder_example.exe
+
+# The compiler tools to use
+# The is no standard mingw prefix, so try to guess
+MINGW_PREFIX := $(or $(strip $(foreach exeprefix, \
+       i686-mingw32 i686-pc-mingw32 i586-mingw32msvc i386-mingw32 \
+       no-mingw32, \
+       $(if $(shell which $(exeprefix)-gcc 2>/dev/null), $(exeprefix) ))))
+CC = $(MINGW_PREFIX)-gcc
+RC = $(MINGW_PREFIX)-windres
+DLLTOOL = $(MINGW_PREFIX)-dlltool
+LD = $(MINGW_PREFIX)-ld
+SDLCONFIG = $(MINGW_PREFIX)-sdl-config
+# The command to use to generate dependency information
+MAKEDEPEND = ${CC} -MM
+#MAKEDEPEND = makedepend -f- -Y --
+
+# The location of include files.
+# Modify these to point to your Ogg and Vorbis include directories if they are
+#  not installed in a standard location.
+CINCLUDE = -D_REENTRANT
+# Extra compilation flags.
+# You may get speed increases by including flags such as -O2 or -O3 or
+#  -ffast-math, or additional flags, depending on your system and compiler.
+# The correct -march=<architecture> flag will also generate much better code
+#  on newer architectures.
+CFLAGS = -Wall -Wno-parentheses -DOC_X86_ASM
+RELEASE_CFLAGS = ${CFLAGS} -mtune=native -O3 -fomit-frame-pointer -fforce-addr \
+ -finline-functions
+# The -g flag will generally include debugging information.
+DEBUG_CFLAGS = ${CFLAGS} -g
+# Libraries to link with, and the location of library files.
+LIBS = -logg -lvorbis -lvorbisenc
+
+# ANYTHING BELOW THIS LINE PROBABLY DOES NOT NEED EDITING
+CINCLUDE := -I../../include ${CINCLUDE}
+LIBSRCDIR = ../../lib
+BINSRCDIR = ../../examples
+WORKDIR = objs
+
+# C source file lists
+
+LIBTHEORADEC_CSOURCES = \
+apiwrapper.c \
+bitpack.c \
+decapiwrapper.c \
+decinfo.c \
+decode.c \
+dequant.c \
+fragment.c \
+huffdec.c \
+idct.c \
+info.c \
+internal.c \
+quant.c \
+state.c \
+$(if $(findstring -DOC_X86_ASM,${CFLAGS}), \
+x86/mmxidct.c \
+x86/mmxfrag.c \
+x86/mmxstate.c \
+x86/x86state.c \
+)
+
+LIBTHEORAENC_CSOURCES = \
+apiwrapper.c \
+fragment.c \
+idct.c \
+internal.c \
+state.c \
+quant.c \
+analyze.c \
+fdct.c \
+encfrag.c \
+encapiwrapper.c \
+encinfo.c \
+encode.c \
+enquant.c \
+huffenc.c \
+mathops.c \
+mcenc.c \
+rate.c \
+tokenize.c \
+$(if $(findstring -DOC_X86_ASM,${CFLAGS}), \
+x86/mmxfrag.c \
+x86/mmxidct.c \
+x86/mmxstate.c \
+x86/x86state.c \
+x86/mmxencfrag.c \
+x86/mmxfdct.c \
+x86/x86enc.c \
+)
+
+
+DUMP_VIDEO_CSOURCES = dump_video.c
+ENCODER_EXAMPLE_CSOURCES = encoder_example.c
+PLAYER_EXAMPLE_CSOURCES = player_example.c
+
+# Create object file list.
+LIBTHEORADEC_OBJS:= ${LIBTHEORADEC_CSOURCES:%.c=${WORKDIR}/%.o}
+LIBTHEORADECD_OBJS:= ${LIBTHEORADEC_CSOURCES:%.c=${WORKDIR}/%.do}
+LIBTHEORAENC_OBJS:=  ${LIBTHEORAENC_CSOURCES:%.c=${WORKDIR}/%.o}
+LIBTHEORAENCD_OBJS:= ${LIBTHEORAENC_CSOURCES:%.c=${WORKDIR}/%.do}
+DUMP_VIDEO_OBJS:= ${DUMP_VIDEO_CSOURCES:%.c=${WORKDIR}/%.o}
+ENCODER_EXAMPLE_OBJS:= ${ENCODER_EXAMPLE_CSOURCES:%.c=${WORKDIR}/%.o}
+PLAYER_EXAMPLE_OBJS:= ${PLAYER_EXAMPLE_CSOURCES:%.c=${WORKDIR}/%.o}
+RC_OBJS:= ${LIBTHEORADEC_TARGET} ${LIBTHEORAENC_TARGET} \
+ ${LIBTHEORADECD_TARGET} ${LIBTHEORAENCD_TARGET} \
+ ${LIBTHEORADEC70_TARGET} ${LIBTHEORAENC70_TARGET} \
+ ${LIBTHEORADEC70D_TARGET} ${LIBTHEORAENC70D_TARGET} \
+ ${LIBTHEORADEC71_TARGET} ${LIBTHEORAENC71_TARGET} \
+ ${LIBTHEORADEC71D_TARGET} ${LIBTHEORAENC71D_TARGET} \
+ ${LIBTHEORADEC80_TARGET} ${LIBTHEORAENC80_TARGET} \
+ ${LIBTHEORADEC80D_TARGET} ${LIBTHEORAENC80D_TARGET}
+RC_OBJS:= ${RC_OBJS:%.dll=${WORKDIR}/%.rco}
+ALL_OBJS:= ${LIBTHEORADEC_OBJS} ${LIBTHEORAENC_OBJS} \
+ ${LIBTHEORADECD_OBJS} ${LIBTHEORAENCD_OBJS} ${RC_OBJS} \
+ ${DUMP_VIDEO_OBJS} ${ENCODER_EXAMPLE_OBJS} #${PLAYER_EXAMPLE_OBJS}
+# Create the dependency file list
+ALL_DEPS:= ${ALL_OBJS:%.o=%.d}
+ALL_DEPS:= ${ALL_DEPS:%.do=%.dd}
+ALL_DEPS:= ${ALL_DEPS:%.rco=%.d}
+# Prepend source path to file names.
+LIBTHEORADEC_CSOURCES:= ${LIBTHEORADEC_CSOURCES:%=${LIBSRCDIR}/%}
+LIBTHEORAENC_CSOURCES:= ${LIBTHEORAENC_CSOURCES:%=${LIBSRCDIR}/%}
+DUMP_VIDEO_CSOURCES:= ${DUMP_VIDEO_CSOURCES:%=${BINSRCDIR}/%}
+ENCODER_EXAMPLE_CSOURCES:= ${ENCODER_EXAMPLE_CSOURCES:%=${BINSRCDIR}/%}
+PLAYER_EXAMPLE_CSOURCES:= ${PLAYER_EXAMPLE_CSOURCES:%=${BINSRCDIR}/%}
+ALL_CSOURCES:= ${LIBTHEORADEC_CSOURCES} ${LIBTHEORAENC_CSOURCES} \
+ ${DUMP_VIDEO_CSOURCES} ${PLAYER_EXAMPLE_CSOURCES} \
+ ${ENCODER_EXAMPLE_CSOURCES}
+LIBTHEORAENC_RCO:= ${WORKDIR}/${LIBTHEORAENC_TARGET:%.dll=%.rco}
+LIBTHEORAENCD_RCO:= ${WORKDIR}/${LIBTHEORAENCD_TARGET:%.dll=%.rco}
+LIBTHEORAENC70_RCO:= ${WORKDIR}/${LIBTHEORAENC70_TARGET:%.dll=%.rco}
+LIBTHEORAENC70D_RCO:= ${WORKDIR}/${LIBTHEORAENC70D_TARGET:%.dll=%.rco}
+LIBTHEORAENC71_RCO:= ${WORKDIR}/${LIBTHEORAENC71_TARGET:%.dll=%.rco}
+LIBTHEORAENC71D_RCO:= ${WORKDIR}/${LIBTHEORAENC71D_TARGET:%.dll=%.rco}
+LIBTHEORAENC80_RCO:= ${WORKDIR}/${LIBTHEORAENC80_TARGET:%.dll=%.rco}
+LIBTHEORAENC80D_RCO:= ${WORKDIR}/${LIBTHEORAENC80D_TARGET:%.dll=%.rco}
+LIBTHEORADEC_RCO:= ${WORKDIR}/${LIBTHEORADEC_TARGET:%.dll=%.rco}
+LIBTHEORADECD_RCO:= ${WORKDIR}/${LIBTHEORADECD_TARGET:%.dll=%.rco}
+LIBTHEORADEC70_RCO:= ${WORKDIR}/${LIBTHEORADEC70_TARGET:%.dll=%.rco}
+LIBTHEORADEC70D_RCO:= ${WORKDIR}/${LIBTHEORADEC70D_TARGET:%.dll=%.rco}
+LIBTHEORADEC71_RCO:= ${WORKDIR}/${LIBTHEORADEC71_TARGET:%.dll=%.rco}
+LIBTHEORADEC71D_RCO:= ${WORKDIR}/${LIBTHEORADEC71D_TARGET:%.dll=%.rco}
+LIBTHEORADEC80_RCO:= ${WORKDIR}/${LIBTHEORADEC80_TARGET:%.dll=%.rco}
+LIBTHEORADEC80D_RCO:= ${WORKDIR}/${LIBTHEORADEC80D_TARGET:%.dll=%.rco}
+# Prepand target path to file names.
+LIBTHEORAENC_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC_TARGET}
+LIBTHEORAENCD_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENCD_TARGET}
+LIBTHEORAENC70_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC70_TARGET}
+LIBTHEORAENC70D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC70D_TARGET}
+LIBTHEORAENC71_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC71_TARGET}
+LIBTHEORAENC71D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC71D_TARGET}
+LIBTHEORAENC80_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC80_TARGET}
+LIBTHEORAENC80D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORAENC80D_TARGET}
+LIBTHEORADEC_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC_TARGET}
+LIBTHEORADECD_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADECD_TARGET}
+LIBTHEORADEC70_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC70_TARGET}
+LIBTHEORADEC70D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC70D_TARGET}
+LIBTHEORADEC71_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC71_TARGET}
+LIBTHEORADEC71D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC71D_TARGET}
+LIBTHEORADEC80_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC80_TARGET}
+LIBTHEORADEC80D_TARGET:= ${TARGETLIBDIR}/${LIBTHEORADEC80D_TARGET}
+DUMP_VIDEO_TARGET:= ${TARGETBINDIR}/${DUMP_VIDEO_TARGET}
+ENCODER_EXAMPLE_TARGET:= ${TARGETBINDIR}/${ENCODER_EXAMPLE_TARGET}
+PLAYER_EXAMPLE_TARGET:= ${TARGETBINDIR}/${PLAYER_EXAMPLE_TARGET}
+DLL_TARGETS:= ${LIBTHEORADEC_TARGET} ${LIBTHEORAENC_TARGET} \
+ ${LIBTHEORADECD_TARGET} ${LIBTHEORAENCD_TARGET} \
+ ${LIBTHEORADEC70_TARGET} ${LIBTHEORAENC70_TARGET} \
+ ${LIBTHEORADEC70D_TARGET} ${LIBTHEORAENC70D_TARGET} \
+ ${LIBTHEORADEC71_TARGET} ${LIBTHEORAENC71_TARGET} \
+ ${LIBTHEORADEC71D_TARGET} ${LIBTHEORAENC71D_TARGET} \
+ ${LIBTHEORADEC80_TARGET} ${LIBTHEORAENC80_TARGET} \
+ ${LIBTHEORADEC80D_TARGET} ${LIBTHEORAENC80D_TARGET}
+ALL_TARGETS:= ${DLL_TARGETS} ${DLL_TARGETS:%.dll=%.dll.a} \
+ ${DUMP_VIDEO_TARGET} ${ENCODER_EXAMPLE_TARGET} #${PLAYER_EXAMPLE_TARGET}
+IMPLIB_TARGETS:= ${DLL_TARGETS:%.dll=%.def} ${DLL_TARGETS:%.dll=%.lib} \
+ ${DLL_TARGETS:%.dll=%.exp}
+
+# Targets:
+# Everything (default)
+all: ${ALL_TARGETS}
+
+# These require Microsoft's lib.exe to build, and so are not made by default.
+implibs: ${IMPLIB_TARGETS}
+
+# libtheoradec
+${LIBTHEORADEC_TARGET}: ${LIBTHEORADEC_OBJS} ${LIBTHEORADEC_RCO} \
+ libtheoradec-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ ${LIBTHEORADEC_OBJS} -logg -lmsvcrt \
+         ${LIBTHEORADEC_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def
+${LIBTHEORADECD_TARGET}: ${LIBTHEORADECD_OBJS} ${LIBTHEORADECD_RCO} \
+ libtheoradec-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ ${LIBTHEORADECD_OBJS} -logg -lmsvcrtd \
+         ${LIBTHEORADECD_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def
+${LIBTHEORADEC70_TARGET}: ${LIBTHEORADEC_OBJS} ${LIBTHEORADEC70_RCO} \
+ libtheoradec-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ ${LIBTHEORADEC_OBJS} -logg -lmsvcr70 \
+         ${LIBTHEORADEC70_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def
+${LIBTHEORADEC70D_TARGET}: ${LIBTHEORADECD_OBJS} ${LIBTHEORADEC70D_RCO} \
+ libtheoradec-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ ${LIBTHEORADECD_OBJS} -logg -lmsvcr70d \
+         ${LIBTHEORADEC70D_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def
+${LIBTHEORADEC71_TARGET}: ${LIBTHEORADEC_OBJS} ${LIBTHEORADEC71_RCO} \
+ libtheoradec-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ ${LIBTHEORADEC_OBJS} -logg -lmsvcr71 \
+         ${LIBTHEORADEC71_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def
+${LIBTHEORADEC71D_TARGET}: ${LIBTHEORADECD_OBJS} ${LIBTHEORADEC71D_RCO} \
+ libtheoradec-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ ${LIBTHEORADECD_OBJS} -logg -lmsvcr71d \
+         ${LIBTHEORADEC71D_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def
+${LIBTHEORADEC80_TARGET}: ${LIBTHEORADEC_OBJS} ${LIBTHEORADEC80_RCO} \
+ libtheoradec-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ ${LIBTHEORADEC_OBJS} -logg -lmsvcr80 \
+         ${LIBTHEORADEC80_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def
+${LIBTHEORADEC80D_TARGET}: ${LIBTHEORADECD_OBJS} ${LIBTHEORADEC80D_RCO} \
+ libtheoradec-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ ${LIBTHEORADECD_OBJS} -logg -lmsvcr80d \
+         ${LIBTHEORADEC80D_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoradec-all.def
+
+# libtheoraenc
+${LIBTHEORAENC_TARGET}: ${LIBTHEORAENC_OBJS} ${LIBTHEORAENC_RCO} \
+ libtheoraenc-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ \
+         ${LIBTHEORAENC_OBJS} ${LIBTHEORADEC_TARGET} -logg -lmsvcrt \
+         ${LIBTHEORAENC_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def
+${LIBTHEORAENCD_TARGET}: ${LIBTHEORAENCD_OBJS} ${LIBTHEORAENCD_RCO} \
+ libtheoraenc-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ \
+         ${LIBTHEORAENCD_OBJS} ${LIBTHEORADECD_TARGET} -logg -lmsvcrtd \
+         ${LIBTHEORAENCD_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def
+${LIBTHEORAENC70_TARGET}: ${LIBTHEORAENC_OBJS} ${LIBTHEORAENC70_RCO} \
+ libtheoraenc-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ \
+         ${LIBTHEORAENC_OBJS} ${LIBTHEORADEC70_TARGET} -logg -lmsvcr70 \
+         ${LIBTHEORAENC70_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def
+${LIBTHEORAENC70D_TARGET}: ${LIBTHEORAENCD_OBJS} ${LIBTHEORAENC70D_RCO} \
+ libtheoraenc-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ \
+         ${LIBTHEORAENCD_OBJS} ${LIBTHEORADEC70D_TARGET} -logg -lmsvcr70d \
+         ${LIBTHEORAENC70D_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def
+${LIBTHEORAENC71_TARGET}: ${LIBTHEORAENC_OBJS} ${LIBTHEORAENC71_RCO} \
+ libtheoraenc-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ \
+         ${LIBTHEORAENC_OBJS} ${LIBTHEORADEC71_TARGET} -logg -lmsvcr71 \
+         ${LIBTHEORAENC71_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def
+${LIBTHEORAENC71D_TARGET}: ${LIBTHEORAENCD_OBJS} ${LIBTHEORAENC71D_RCO} \
+ libtheoraenc-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ \
+         ${LIBTHEORAENCD_OBJS} ${LIBTHEORADEC71D_TARGET} -logg -lmsvcr71d \
+         ${LIBTHEORAENC71D_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def
+${LIBTHEORAENC80_TARGET}: ${LIBTHEORAENC_OBJS} ${LIBTHEORAENC80_RCO} \
+ libtheoraenc-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ \
+         ${LIBTHEORAENC_OBJS} ${LIBTHEORADEC80_TARGET} -logg -lmsvcr80 \
+         ${LIBTHEORAENC80_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def
+${LIBTHEORAENC80D_TARGET}: ${LIBTHEORAENCD_OBJS} ${LIBTHEORAENC80D_RCO} \
+ libtheoraenc-all.def
+       mkdir -p ${TARGETLIBDIR}
+       ${CC} -shared -o $@ \
+         ${LIBTHEORAENCD_OBJS} ${LIBTHEORADEC80D_TARGET} -logg -lmsvcr80d \
+         ${LIBTHEORAENC80D_RCO} \
+         -Wl,--output-def,${@:.dll=.def},--out-implib,$@.a,libtheoraenc-all.def
+
+# dump_video
+${DUMP_VIDEO_TARGET}: ${DUMP_VIDEO_OBJS} ${LIBTHEORADEC_TARGET}
+       mkdir -p ${TARGETBINDIR}
+       ${CC} ${CFLAGS} -o $@ ${DUMP_VIDEO_OBJS} ${LIBS} \
+         ${LIBTHEORADEC_TARGET}.a
+
+# encoder_example
+${ENCODER_EXAMPLE_TARGET}: ${ENCODER_EXAMPLE_OBJS} ${LIBTHEORADEC_TARGET} \
+                            ${LIBTHEORAENC_TARGET}
+       mkdir -p ${TARGETBINDIR}
+       ${CC} ${CFLAGS} -o $@ ${ENCODER_EXAMPLE_OBJS} ${LIBS} \
+         ${LIBTHEORAENC_TARGET}.a ${LIBTHEORADEC_TARGET}.a
+
+# player_example
+${PLAYER_EXAMPLE_TARGET}: CINCLUDE += $(SDLCONFIG) --cflags
+${PLAYER_EXAMPLE_TARGET}: ${PLAYER_EXAMPLE_OBJS} ${LIBTHEORADEC_TARGET}
+       mkdir -p ${TARGETBINDIR}
+       ${CC} ${CFLAGS} -o $@ ${PLAYER_EXAMPLE_OBJS} ${LIBS} \
+         ${LIBTHEORADEC_TARGET}.a `${SDLCONFIG} --libs`
+
+# Remove all targets.
+clean:
+       -rm $(sort ${ALL_OBJS} ${ALL_DEPS} ${ALL_TARGETS} ${IMPLIB_TARGETS})
+       -rmdir ${WORKDIR}/x86
+       -rmdir ${WORKDIR}
+
+# Make everything depend on changes in the Makefile
+${ALL_OBJS} ${ALL_DEPS} ${ALL_TARGETS} : Makefile
+
+# Specify which targets are phony for GNU make
+.PHONY : all clean
+
+# Rules
+# Windows-specific rules
+%.dll.a : %.dll
+%.def : %.dll
+%.exp : %.lib
+%.lib : %.def
+       wine lib /machine:i386 /def:$<
+${WORKDIR}/%.d : %.rc
+       mkdir -p ${dir $@}
+       ${MAKEDEPEND} -x c-header ${CINCLUDE} $< -MT ${@:%.d=%.rco} > $@
+${WORKDIR}/%.rco : %.rc
+       mkdir -p ${dir $@}
+       ${RC} ${CINCLUDE} -DTH_VERSION_FIELD=${VERSION_FIELD} \
+         -DTH_VERSION_STRING=${VERSION_STRING} $< $@
+# Normal compilation
+${WORKDIR}/%.d : ${LIBSRCDIR}/%.c
+       mkdir -p ${dir $@}
+       ${MAKEDEPEND} ${CINCLUDE} ${RELEASE_CFLAGS} $< -MT ${@:%.d=%.o} > $@
+${WORKDIR}/%.d : ${BINSRCDIR}/%.c
+       mkdir -p ${dir $@}
+       ${MAKEDEPEND} ${CINCLUDE} ${RELEASE_CFLAGS} $< -MT ${@:%.d=%.o} > $@
+${WORKDIR}/%.o : ${LIBSRCDIR}/%.c
+       mkdir -p ${dir $@}
+       ${CC} ${CINCLUDE} ${RELEASE_CFLAGS} -c -o $@ $<
+${WORKDIR}/%.o : ${BINSRCDIR}/%.c
+       mkdir -p ${dir $@}
+       ${CC} ${CINCLUDE} ${RELEASE_CFLAGS} -c -o $@ $<
+# Debug versions
+${WORKDIR}/%.dd : ${LIBSRCDIR}/%.c
+       mkdir -p ${dir $@}
+       ${MAKEDEPEND} ${CINCLUDE} ${DEBUG_CFLAGS} $< -MT ${@:%.d=%.do} > $@
+${WORKDIR}/%.do : ${LIBSRCDIR}/%.c
+       mkdir -p ${dir $@}
+       ${CC} ${CINCLUDE} ${DEBUG_CFLAGS} -c -o $@ $<
+
+# Include header file dependencies
+-include ${ALL_DEPS}
diff --git a/win32/xmingw32/libtheoradec-all.def b/win32/xmingw32/libtheoradec-all.def
new file mode 100644 (file)
index 0000000..566eeb3
--- /dev/null
@@ -0,0 +1,58 @@
+EXPORTS\r
+; Old alpha API\r
+       theora_version_string @ 1\r
+       theora_version_number @ 2\r
+\r
+       theora_decode_header @ 3\r
+       theora_decode_init @ 4\r
+       theora_decode_packetin @ 5\r
+       theora_decode_YUVout @ 6\r
+\r
+       theora_control @ 7\r
+\r
+       theora_packet_isheader @ 8\r
+       theora_packet_iskeyframe @ 9\r
+\r
+       theora_granule_shift @ 10\r
+       theora_granule_frame @ 11\r
+       theora_granule_time @ 12\r
+\r
+       theora_info_init @ 13\r
+       theora_info_clear @ 14\r
+\r
+       theora_clear @ 15\r
+\r
+       theora_comment_init @ 16\r
+       theora_comment_add @ 17\r
+       theora_comment_add_tag @ 18\r
+       theora_comment_query @ 19\r
+       theora_comment_query_count @ 20\r
+       theora_comment_clear @ 21\r
+\r
+; New theora-exp API\r
+       th_version_string @ 22\r
+       th_version_number @ 23\r
+\r
+       th_decode_headerin @ 24\r
+       th_decode_alloc @ 25\r
+       th_setup_free @ 26\r
+       th_decode_ctl @ 27\r
+       th_decode_packetin @ 28\r
+       th_decode_ycbcr_out @ 29\r
+       th_decode_free @ 30\r
+\r
+       th_packet_isheader @ 31\r
+       th_packet_iskeyframe @ 32\r
+\r
+       th_granule_frame @ 33\r
+       th_granule_time @ 34\r
+\r
+       th_info_init @ 35\r
+       th_info_clear @ 36\r
+\r
+       th_comment_init @ 37\r
+       th_comment_add @ 38\r
+       th_comment_add_tag @ 39\r
+       th_comment_query @ 40\r
+       th_comment_query_count @ 41\r
+       th_comment_clear @ 42\r
diff --git a/win32/xmingw32/libtheoradec-all.rc b/win32/xmingw32/libtheoradec-all.rc
new file mode 100644 (file)
index 0000000..f6a5c60
--- /dev/null
@@ -0,0 +1,39 @@
+#include <windows.h>
+
+/*See "VERSIONINFO Resource" in MSDN,
+  http://msdn2.microsoft.com/en-us/library/Aa381058.aspx */
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION TH_VERSION_FIELD
+PRODUCTVERSION TH_VERSION_FIELD
+FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#if defined(_DEBUG)
+FILEFLAGS VS_FF_DEBUG
+#else
+FILEFLAGS 0
+#endif
+FILEOS VOS__WINDOWS32
+FILETYPE VFT_DLL
+FILESUBTYPE 0
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    /*0x040904B0 == US English, Unicode*/
+    BLOCK "0x040904B0"
+    BEGIN
+      VALUE "Comments","Xiph.Org " TH_DEC_INTERNAL_NAME ".dll"
+      VALUE "CompanyName","The Xiph.Org Foundation"
+      VALUE "FileDescription","Xiph.Org Theora Decoder Library"
+      VALUE "FileVersion",TH_VERSION_STRING
+      VALUE "InternalName",TH_DEC_INTERNAL_NAME
+      VALUE "LegalCopyright","Copyright (C) 2002-2007 Xiph.Org Foundation"
+      VALUE "OriginalFilename",TH_DEC_INTERNAL_NAME ".dll"
+      VALUE "ProductName","libtheora"
+      VALUE "ProductVersion",TH_VERSION_STRING
+    END
+  END
+  BLOCK "VarFileInfo"
+  BEGIN
+    /*0x0409, 1200 == US English, Unicode*/
+    VALUE "Translation",0x0409,1200
+  END
+END
diff --git a/win32/xmingw32/libtheoradec.rc b/win32/xmingw32/libtheoradec.rc
new file mode 100644 (file)
index 0000000..3ed5da2
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_DEC_INTERNAL_NAME "libtheoradec"
+#undef _DEBUG
+#include "libtheoradec-all.rc"
diff --git a/win32/xmingw32/libtheoradec70.rc b/win32/xmingw32/libtheoradec70.rc
new file mode 100644 (file)
index 0000000..ee82820
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_DEC_INTERNAL_NAME "libtheoradec70"
+#undef _DEBUG
+#include "libtheoradec-all.rc"
diff --git a/win32/xmingw32/libtheoradec70d.rc b/win32/xmingw32/libtheoradec70d.rc
new file mode 100644 (file)
index 0000000..783800d
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_DEC_INTERNAL_NAME "libtheoradec70d"
+#define _DEBUG (1)
+#include "libtheoradec-all.rc"
diff --git a/win32/xmingw32/libtheoradec71.rc b/win32/xmingw32/libtheoradec71.rc
new file mode 100644 (file)
index 0000000..0becd19
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_DEC_INTERNAL_NAME "libtheoradec71"
+#undef _DEBUG
+#include "libtheoradec-all.rc"
diff --git a/win32/xmingw32/libtheoradec71d.rc b/win32/xmingw32/libtheoradec71d.rc
new file mode 100644 (file)
index 0000000..e1a0398
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_DEC_INTERNAL_NAME "libtheoradec71d"
+#define _DEBUG (1)
+#include "libtheoradec-all.rc"
diff --git a/win32/xmingw32/libtheoradec80.rc b/win32/xmingw32/libtheoradec80.rc
new file mode 100644 (file)
index 0000000..932cce9
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_DEC_INTERNAL_NAME "libtheoradec80"
+#undef _DEBUG
+#include "libtheoradec-all.rc"
diff --git a/win32/xmingw32/libtheoradec80d.rc b/win32/xmingw32/libtheoradec80d.rc
new file mode 100644 (file)
index 0000000..1ff5512
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_DEC_INTERNAL_NAME "libtheoradec80d"
+#define _DEBUG (1)
+#include "libtheoradec-all.rc"
diff --git a/win32/xmingw32/libtheoradecd.rc b/win32/xmingw32/libtheoradecd.rc
new file mode 100644 (file)
index 0000000..5cfaf6e
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_DEC_INTERNAL_NAME "libtheoradecd"
+#define _DEBUG (1)
+#include "libtheoradec-all.rc"
diff --git a/win32/xmingw32/libtheoraenc-all.def b/win32/xmingw32/libtheoraenc-all.def
new file mode 100644 (file)
index 0000000..36d2dad
--- /dev/null
@@ -0,0 +1,17 @@
+EXPORTS\r
+; Old alpha API\r
+       theora_encode_init @ 1\r
+       theora_encode_YUVin @ 2\r
+       theora_encode_packetout @ 3\r
+       theora_encode_header @ 4\r
+       theora_encode_comment @ 5\r
+       theora_encode_tables @ 6\r
+; New theora-exp API\r
+       th_encode_alloc @ 7\r
+       th_encode_ctl @ 8\r
+       th_encode_flushheader @ 9\r
+       th_encode_ycbcr_in @ 10\r
+       th_encode_packetout @ 11\r
+       th_encode_free @ 12\r
+       TH_VP31_QUANT_INFO @ 13\r
+       TH_VP31_HUFF_CODES @ 14\r
diff --git a/win32/xmingw32/libtheoraenc-all.rc b/win32/xmingw32/libtheoraenc-all.rc
new file mode 100644 (file)
index 0000000..5c96b09
--- /dev/null
@@ -0,0 +1,39 @@
+#include <windows.h>
+
+/*See "VERSIONINFO Resource" in MSDN,
+  http://msdn2.microsoft.com/en-us/library/Aa381058.aspx */
+VS_VERSION_INFO VERSIONINFO
+FILEVERSION TH_VERSION_FIELD
+PRODUCTVERSION TH_VERSION_FIELD
+FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+#if defined(_DEBUG)
+FILEFLAGS VS_FF_DEBUG
+#else
+FILEFLAGS 0
+#endif
+FILEOS VOS__WINDOWS32
+FILETYPE VFT_DLL
+FILESUBTYPE 0
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    /*0x040904B0 == US English, Unicode*/
+    BLOCK "0x040904B0"
+    BEGIN
+      VALUE "Comments","Xiph.Org " TH_ENC_INTERNAL_NAME ".dll"
+      VALUE "CompanyName","The Xiph.Org Foundation"
+      VALUE "FileDescription","Xiph.Org Theora Encoder Library"
+      VALUE "FileVersion",TH_VERSION_STRING
+      VALUE "InternalName",TH_ENC_INTERNAL_NAME
+      VALUE "LegalCopyright","Copyright (C) 2002-2007 Xiph.Org Foundation"
+      VALUE "OriginalFilename",TH_ENC_INTERNAL_NAME ".dll"
+      VALUE "ProductName","libtheora"
+      VALUE "ProductVersion",TH_VERSION_STRING
+    END
+  END
+  BLOCK "VarFileInfo"
+  BEGIN
+    /*0x0409, 1200 == US English, Unicode*/
+    VALUE "Translation",0x0409,1200
+  END
+END
diff --git a/win32/xmingw32/libtheoraenc.rc b/win32/xmingw32/libtheoraenc.rc
new file mode 100644 (file)
index 0000000..26a356d
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_ENC_INTERNAL_NAME "libtheoraenc"
+#undef _DEBUG
+#include "libtheoraenc-all.rc"
diff --git a/win32/xmingw32/libtheoraenc70.rc b/win32/xmingw32/libtheoraenc70.rc
new file mode 100644 (file)
index 0000000..12cf7c1
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_ENC_INTERNAL_NAME "libtheoraenc70"
+#undef _DEBUG
+#include "libtheoraenc-all.rc"
diff --git a/win32/xmingw32/libtheoraenc70d.rc b/win32/xmingw32/libtheoraenc70d.rc
new file mode 100644 (file)
index 0000000..0fdb70b
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_ENC_INTERNAL_NAME "libtheoraenc70d"
+#define _DEBUG (1)
+#include "libtheoraenc-all.rc"
diff --git a/win32/xmingw32/libtheoraenc71.rc b/win32/xmingw32/libtheoraenc71.rc
new file mode 100644 (file)
index 0000000..8607516
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_ENC_INTERNAL_NAME "libtheoraenc71"
+#undef _DEBUG
+#include "libtheoraenc-all.rc"
diff --git a/win32/xmingw32/libtheoraenc71d.rc b/win32/xmingw32/libtheoraenc71d.rc
new file mode 100644 (file)
index 0000000..3ef2ef1
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_ENC_INTERNAL_NAME "libtheoraenc71d"
+#define _DEBUG (1)
+#include "libtheoraenc-all.rc"
diff --git a/win32/xmingw32/libtheoraenc80.rc b/win32/xmingw32/libtheoraenc80.rc
new file mode 100644 (file)
index 0000000..66ef776
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_ENC_INTERNAL_NAME "libtheoraenc80"
+#undef _DEBUG
+#include "libtheoraenc-all.rc"
diff --git a/win32/xmingw32/libtheoraenc80d.rc b/win32/xmingw32/libtheoraenc80d.rc
new file mode 100644 (file)
index 0000000..dcca72c
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_ENC_INTERNAL_NAME "libtheoraenc80d"
+#define _DEBUG (1)
+#include "libtheoraenc-all.rc"
diff --git a/win32/xmingw32/libtheoraencd.rc b/win32/xmingw32/libtheoraencd.rc
new file mode 100644 (file)
index 0000000..fe2a56b
--- /dev/null
@@ -0,0 +1,3 @@
+#define TH_ENC_INTERNAL_NAME "libtheoraencd"
+#define _DEBUG (1)
+#include "libtheoraenc-all.rc"