aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorSadaf Ebrahimi <sadafebrahimi@google.com>2023-08-14 19:39:53 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-08-14 19:39:53 +0000
commit63185728747fec68f5b39471fd198bec9ce595ef (patch)
treecb108291b7d40503c1a00dda5d10405ee77a33d5 /doc
parent6261a754e02c0b2ac8dec586c399435b25c92ba3 (diff)
parentfd32b1ec3ecad36b054cd8d6139b56d7f4c704cf (diff)
downloadlibogg-63185728747fec68f5b39471fd198bec9ce595ef.tar.gz
Merge changes from topic "libogg_upgrade" into main am: c0fe8bca28 am: 175c78ee06 am: fd32b1ec3e
Original change: https://android-review.googlesource.com/c/platform/external/libogg/+/2704404 Change-Id: I9e9b80a77cccbf2e8aaaae64b0e9dd7794d45473 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile.am8
-rw-r--r--doc/Makefile.in583
-rw-r--r--doc/fish_xiph_org.pngbin0 -> 2536 bytes
-rw-r--r--doc/framing.html6
-rw-r--r--doc/index.html2
-rw-r--r--doc/libogg/Makefile.am32
-rw-r--r--doc/libogg/Makefile.in364
-rw-r--r--doc/libogg/bitpacking.html6
-rw-r--r--doc/libogg/datastructures.html6
-rw-r--r--doc/libogg/decoding.html6
-rw-r--r--doc/libogg/encoding.html14
-rw-r--r--doc/libogg/general.html8
-rw-r--r--doc/libogg/index.html6
-rw-r--r--doc/libogg/ogg_iovec_t.html62
-rw-r--r--doc/libogg/ogg_packet.html8
-rw-r--r--doc/libogg/ogg_packet_clear.html16
-rw-r--r--doc/libogg/ogg_page.html11
-rw-r--r--doc/libogg/ogg_page_bos.html6
-rw-r--r--doc/libogg/ogg_page_checksum_set.html6
-rw-r--r--doc/libogg/ogg_page_continued.html6
-rw-r--r--doc/libogg/ogg_page_eos.html6
-rw-r--r--doc/libogg/ogg_page_granulepos.html8
-rw-r--r--doc/libogg/ogg_page_packets.html8
-rw-r--r--doc/libogg/ogg_page_pageno.html6
-rw-r--r--doc/libogg/ogg_page_serialno.html6
-rw-r--r--doc/libogg/ogg_page_version.html6
-rw-r--r--doc/libogg/ogg_stream_check.html71
-rw-r--r--doc/libogg/ogg_stream_clear.html8
-rw-r--r--doc/libogg/ogg_stream_destroy.html10
-rw-r--r--doc/libogg/ogg_stream_eos.html6
-rw-r--r--doc/libogg/ogg_stream_flush.html10
-rw-r--r--doc/libogg/ogg_stream_flush_fill.html74
-rw-r--r--doc/libogg/ogg_stream_init.html8
-rw-r--r--doc/libogg/ogg_stream_iovecin.html80
-rw-r--r--doc/libogg/ogg_stream_packetin.html12
-rw-r--r--doc/libogg/ogg_stream_packetout.html22
-rw-r--r--doc/libogg/ogg_stream_packetpeek.html16
-rw-r--r--doc/libogg/ogg_stream_pagein.html12
-rw-r--r--doc/libogg/ogg_stream_pageout.html32
-rw-r--r--doc/libogg/ogg_stream_pageout_fill.html89
-rw-r--r--doc/libogg/ogg_stream_reset.html10
-rw-r--r--doc/libogg/ogg_stream_reset_serialno.html10
-rw-r--r--doc/libogg/ogg_stream_state.html25
-rw-r--r--doc/libogg/ogg_sync_buffer.html6
-rw-r--r--doc/libogg/ogg_sync_check.html71
-rw-r--r--doc/libogg/ogg_sync_clear.html6
-rw-r--r--doc/libogg/ogg_sync_destroy.html12
-rw-r--r--doc/libogg/ogg_sync_init.html6
-rw-r--r--doc/libogg/ogg_sync_pageout.html6
-rw-r--r--doc/libogg/ogg_sync_pageseek.html8
-rw-r--r--doc/libogg/ogg_sync_reset.html6
-rw-r--r--doc/libogg/ogg_sync_state.html8
-rw-r--r--doc/libogg/ogg_sync_wrote.html14
-rw-r--r--doc/libogg/oggpack_adv.html6
-rw-r--r--doc/libogg/oggpack_adv1.html6
-rw-r--r--doc/libogg/oggpack_bits.html6
-rw-r--r--doc/libogg/oggpack_buffer.html6
-rw-r--r--doc/libogg/oggpack_bytes.html14
-rw-r--r--doc/libogg/oggpack_get_buffer.html6
-rw-r--r--doc/libogg/oggpack_look.html6
-rw-r--r--doc/libogg/oggpack_look1.html6
-rw-r--r--doc/libogg/oggpack_read.html6
-rw-r--r--doc/libogg/oggpack_read1.html6
-rw-r--r--doc/libogg/oggpack_readinit.html6
-rw-r--r--doc/libogg/oggpack_reset.html6
-rw-r--r--doc/libogg/oggpack_write.html6
-rw-r--r--doc/libogg/oggpack_writealign.html6
-rw-r--r--doc/libogg/oggpack_writecheck.html81
-rw-r--r--doc/libogg/oggpack_writeclear.html6
-rw-r--r--doc/libogg/oggpack_writecopy.html6
-rw-r--r--doc/libogg/oggpack_writeinit.html6
-rw-r--r--doc/libogg/oggpack_writetrunc.html6
-rw-r--r--doc/libogg/overview.html6
-rw-r--r--doc/libogg/reference.html8
-rw-r--r--doc/multiplex1.pngbin0 -> 54409 bytes
-rw-r--r--doc/multiplex1.svg632
-rw-r--r--doc/ogg-multiplex.html21
-rw-r--r--doc/oggstream.html241
-rw-r--r--doc/packets.pngbin0 -> 19776 bytes
-rw-r--r--doc/packets.svg876
-rw-r--r--doc/pages.pngbin0 -> 43547 bytes
-rw-r--r--doc/pages.svg1219
-rw-r--r--doc/release.txt29
-rw-r--r--doc/rfc3534.txt339
84 files changed, 4744 insertions, 658 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 9c2c316..3dd47b9 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -2,10 +2,8 @@
SUBDIRS = libogg
-docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
-
-doc_DATA = framing.html index.html oggstream.html ogg-multiplex.html \
- stream.png vorbisword2.png white-ogg.png white-xifish.png \
+dist_html_DATA = framing.html index.html oggstream.html ogg-multiplex.html \
+ fish_xiph_org.png multiplex1.png packets.png pages.png stream.png \
+ vorbisword2.png white-ogg.png white-xifish.png \
rfc3533.txt rfc5334.txt skeleton.html
-EXTRA_DIST = $(doc_DATA)
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 8e54466..60bef0b 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -14,15 +14,67 @@
@SET_MAKE@
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
@@ -37,39 +89,131 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = doc
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(dist_html_DATA) \
+ $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
SOURCES =
DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
- html-recursive info-recursive install-data-recursive \
- install-exec-recursive install-info-recursive \
- install-recursive installcheck-recursive installdirs-recursive \
- pdf-recursive ps-recursive uninstall-info-recursive \
- uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(docdir)"
-docDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(doc_DATA)
-ETAGS = etags
-CTAGS = ctags
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(htmldir)"
+DATA = $(dist_html_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir distdir-am
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
@@ -78,21 +222,29 @@ AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
-CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CYGPATH_W = @CYGPATH_W@
DEBUG = @DEBUG@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
GREP = @GREP@
+INCLUDE_INTTYPES_H = @INCLUDE_INTTYPES_H@
+INCLUDE_STDINT_H = @INCLUDE_STDINT_H@
+INCLUDE_SYS_TYPES_H = @INCLUDE_SYS_TYPES_H@
+INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -109,10 +261,11 @@ LIB_REVISION = @LIB_REVISION@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
@@ -125,6 +278,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PROFILE = @PROFILE@
@@ -138,11 +292,15 @@ SIZE64 = @SIZE64@
STRIP = @STRIP@
USIZE16 = @USIZE16@
USIZE32 = @USIZE32@
+USIZE64 = @USIZE64@
VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -154,9 +312,10 @@ build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
+builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
-docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)
+docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
@@ -172,7 +331,6 @@ libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -180,16 +338,21 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
SUBDIRS = libogg
-doc_DATA = framing.html index.html oggstream.html ogg-multiplex.html \
- stream.png vorbisword2.png white-ogg.png white-xifish.png \
+dist_html_DATA = framing.html index.html oggstream.html ogg-multiplex.html \
+ fish_xiph_org.png multiplex1.png packets.png pages.png stream.png \
+ vorbisword2.png white-ogg.png white-xifish.png \
rfc3533.txt rfc5334.txt skeleton.html
-EXTRA_DIST = $(doc_DATA)
all: all-recursive
.SUFFIXES:
@@ -197,22 +360,21 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu doc/Makefile
-.PRECIOUS: Makefile
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -222,51 +384,55 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-install-docDATA: $(doc_DATA)
+install-dist_htmlDATA: $(dist_html_DATA)
@$(NORMAL_INSTALL)
- test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
- @list='$(doc_DATA)'; for p in $$list; do \
+ @list='$(dist_html_DATA)'; test -n "$(htmldir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
- $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
done
-uninstall-docDATA:
+uninstall-dist_htmlDATA:
@$(NORMAL_UNINSTALL)
- @list='$(doc_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
- rm -f "$(DESTDIR)$(docdir)/$$f"; \
- done
+ @list='$(dist_html_DATA)'; test -n "$(htmldir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(htmldir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-# (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
- @failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
@@ -274,66 +440,20 @@ $(RECURSIVE_TARGETS):
else \
local_target="$$target"; \
fi; \
- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
- @failcom='exit 1'; \
- for f in x $$MAKEFLAGS; do \
- case $$f in \
- *=* | --[!k]*);; \
- *k*) failcom='fail=yes';; \
- esac; \
- done; \
- dot_seen=no; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- rev=''; for subdir in $$list; do \
- if test "$$subdir" = "."; then :; else \
- rev="$$subdir $$rev"; \
- fi; \
- done; \
- rev="$$rev ."; \
- target=`echo $@ | sed s/-recursive//`; \
- for subdir in $$rev; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done && test -z "$$fail"
-tags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
- done
-ctags-recursive:
- list='$(SUBDIRS)'; for subdir in $$list; do \
- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
- done
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
@@ -345,81 +465,106 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
- tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
+ $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d "$(distdir)/$$subdir" \
- || $(mkdir_p) "$(distdir)/$$subdir" \
- || exit 1; \
- distdir=`$(am__cd) $(distdir) && pwd`; \
- top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
- (cd $$subdir && \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$top_distdir" \
- distdir="$$distdir/$$subdir" \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
@@ -429,8 +574,8 @@ check: check-recursive
all-am: Makefile $(DATA)
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(docdir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ for dir in "$(DESTDIR)$(htmldir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
@@ -442,16 +587,22 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -462,8 +613,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
- distclean-tags
+distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive
@@ -471,18 +621,38 @@ dvi-am:
html: html-recursive
+html-am:
+
info: info-recursive
info-am:
-install-data-am: install-docDATA
+install-data-am: install-dist_htmlDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
install-exec-am:
+install-html: install-html-recursive
+
+install-html-am:
+
install-info: install-info-recursive
+install-info-am:
+
install-man:
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
installcheck-am:
maintainer-clean: maintainer-clean-recursive
@@ -501,23 +671,26 @@ ps: ps-recursive
ps-am:
-uninstall-am: uninstall-docDATA uninstall-info-am
-
-uninstall-info: uninstall-info-recursive
-
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
- clean clean-generic clean-libtool clean-recursive ctags \
- ctags-recursive distclean distclean-generic distclean-libtool \
- distclean-recursive distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-docDATA install-exec install-exec-am \
- install-info install-info-am install-man install-strip \
- installcheck installcheck-am installdirs installdirs-am \
- maintainer-clean maintainer-clean-generic \
- maintainer-clean-recursive mostlyclean mostlyclean-generic \
- mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
- tags tags-recursive uninstall uninstall-am uninstall-docDATA \
- uninstall-info-am
+uninstall-am: uninstall-dist_htmlDATA
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+ check-am clean clean-generic clean-libtool cscopelist-am ctags \
+ ctags-am distclean distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-dist_htmlDATA install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-dist_htmlDATA
+
+.PRECIOUS: Makefile
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/doc/fish_xiph_org.png b/doc/fish_xiph_org.png
new file mode 100644
index 0000000..b398c06
--- /dev/null
+++ b/doc/fish_xiph_org.png
Binary files differ
diff --git a/doc/framing.html b/doc/framing.html
index 96347c0..b5ac6ac 100644
--- a/doc/framing.html
+++ b/doc/framing.html
@@ -192,10 +192,7 @@ consists of nothing more than a lacing value of zero in the header.</p>
<p>Packets are not restricted to beginning and ending within a page,
although individual segments are, by definition, required to do so.
Packets are not restricted to a maximum size, although excessively
-large packets in the data stream are discouraged; the Ogg
-bitstream specification strongly recommends nominal page size of
-approximately 4-8kB (large packets are foreseen as being useful for
-initialization data at the beginning of a logical bitstream).</p>
+large packets in the data stream are discouraged.</p>
<p>After segmenting a packet, the encoder may decide not to place all the
resulting segments into the current page; to do so, the encoder places
@@ -244,6 +241,7 @@ limiting, implemented by simply truncating packets in the nominal case
if the packet is arranged so that the least sensitive portion of the
data comes last.</p>
+<a name="page_header"></a>
<h3>Page header</h3>
<p>The headering mechanism is designed to avoid copying and re-assembly
diff --git a/doc/index.html b/doc/index.html
index 900ef73..6e02f79 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -78,7 +78,7 @@ li {
<li><a href="libogg/index.html">Programming with ogg</a></li>
</ul>
-<h2>Ogg bitsream documentation</h2>
+<h2>Ogg bitstream documentation</h2>
<ul>
<li><a href="oggstream.html">Ogg bitstream overview</a></li>
diff --git a/doc/libogg/Makefile.am b/doc/libogg/Makefile.am
index c83f4e7..4007907 100644
--- a/doc/libogg/Makefile.am
+++ b/doc/libogg/Makefile.am
@@ -1,27 +1,39 @@
## Process this file with automake to produce Makefile.in
-docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/ogg
+apidocdir = $(htmldir)/libogg
-doc_DATA = bitpacking.html datastructures.html decoding.html encoding.html\
- general.html index.html ogg_packet.html ogg_packet_clear.html\
+dist_apidoc_DATA = bitpacking.html datastructures.html decoding.html encoding.html\
+ general.html index.html ogg_iovec_t.html ogg_packet.html ogg_packet_clear.html\
ogg_page.html ogg_page_bos.html ogg_page_checksum_set.html\
ogg_page_continued.html ogg_page_eos.html ogg_page_granulepos.html\
ogg_page_packets.html ogg_page_pageno.html ogg_page_serialno.html\
- ogg_page_version.html ogg_stream_clear.html ogg_stream_destroy.html\
- ogg_stream_eos.html ogg_stream_flush.html ogg_stream_init.html\
- ogg_stream_packetin.html ogg_stream_packetout.html\
+ ogg_page_version.html ogg_stream_check.html ogg_stream_clear.html ogg_stream_destroy.html\
+ ogg_stream_eos.html ogg_stream_flush.html ogg_stream_flush_fill.html ogg_stream_init.html\
+ ogg_stream_iovecin.html ogg_stream_packetin.html ogg_stream_packetout.html\
ogg_stream_packetpeek.html ogg_stream_pagein.html\
- ogg_stream_pageout.html ogg_stream_reset.html\
+ ogg_stream_pageout.html ogg_stream_pageout_fill.html ogg_stream_reset.html\
ogg_stream_reset_serialno.html ogg_stream_state.html\
- ogg_sync_buffer.html ogg_sync_clear.html ogg_sync_destroy.html\
+ ogg_sync_buffer.html ogg_sync_check.html ogg_sync_clear.html ogg_sync_destroy.html\
ogg_sync_init.html ogg_sync_pageout.html ogg_sync_pageseek.html\
ogg_sync_reset.html ogg_sync_state.html ogg_sync_wrote.html\
oggpack_adv.html oggpack_adv1.html oggpack_bits.html\
oggpack_buffer.html oggpack_bytes.html oggpack_get_buffer.html\
oggpack_look.html oggpack_look1.html oggpack_read.html\
oggpack_read1.html oggpack_readinit.html oggpack_reset.html\
- oggpack_write.html oggpack_writealign.html oggpack_writeclear.html\
+ oggpack_write.html oggpack_writealign.html oggpack_writecheck.html oggpack_writeclear.html\
oggpack_writecopy.html oggpack_writeinit.html oggpack_writetrunc.html\
overview.html reference.html style.css
-EXTRA_DIST = $(doc_DATA)
+update-doc-version:
+ @YEAR=$$(date +%Y); DAY=$$(date +%Y%m%d); \
+ for f in $(srcdir)/*.html; do \
+ sed -e "s/2000-[0-9]\{4\} Xiph.Org/2000-$$YEAR Xiph.Org/g" \
+ -e "s/libogg release [0-9. -]\+/libogg release $(VERSION) - $$DAY/g"\
+ < $$f > $$f.tmp; \
+ if diff -q $$f $$f.tmp > /dev/null; then \
+ rm $$f.tmp; \
+ else \
+ mv $$f.tmp $$f; \
+ fi; \
+ done;
+
diff --git a/doc/libogg/Makefile.in b/doc/libogg/Makefile.in
index 01d8084..5d5c73c 100644
--- a/doc/libogg/Makefile.in
+++ b/doc/libogg/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
+
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -14,15 +14,67 @@
@SET_MAKE@
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
@@ -37,30 +89,73 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = doc/libogg
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(dist_apidoc_DATA) \
+ $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
SOURCES =
DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(docdir)"
-docDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(doc_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(apidocdir)"
+DATA = $(dist_apidoc_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
@@ -69,21 +164,29 @@ AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
-CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CYGPATH_W = @CYGPATH_W@
DEBUG = @DEBUG@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
+FILECMD = @FILECMD@
GREP = @GREP@
+INCLUDE_INTTYPES_H = @INCLUDE_INTTYPES_H@
+INCLUDE_STDINT_H = @INCLUDE_STDINT_H@
+INCLUDE_SYS_TYPES_H = @INCLUDE_SYS_TYPES_H@
+INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -100,10 +203,11 @@ LIB_REVISION = @LIB_REVISION@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
@@ -116,6 +220,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PROFILE = @PROFILE@
@@ -129,11 +234,15 @@ SIZE64 = @SIZE64@
STRIP = @STRIP@
USIZE16 = @USIZE16@
USIZE32 = @USIZE32@
+USIZE64 = @USIZE64@
VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -145,9 +254,10 @@ build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
+builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
-docdir = $(datadir)/doc/$(PACKAGE)-$(VERSION)/ogg
+docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
@@ -163,7 +273,6 @@ libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -171,33 +280,38 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
-doc_DATA = bitpacking.html datastructures.html decoding.html encoding.html\
- general.html index.html ogg_packet.html ogg_packet_clear.html\
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+apidocdir = $(htmldir)/libogg
+dist_apidoc_DATA = bitpacking.html datastructures.html decoding.html encoding.html\
+ general.html index.html ogg_iovec_t.html ogg_packet.html ogg_packet_clear.html\
ogg_page.html ogg_page_bos.html ogg_page_checksum_set.html\
ogg_page_continued.html ogg_page_eos.html ogg_page_granulepos.html\
ogg_page_packets.html ogg_page_pageno.html ogg_page_serialno.html\
- ogg_page_version.html ogg_stream_clear.html ogg_stream_destroy.html\
- ogg_stream_eos.html ogg_stream_flush.html ogg_stream_init.html\
- ogg_stream_packetin.html ogg_stream_packetout.html\
+ ogg_page_version.html ogg_stream_check.html ogg_stream_clear.html ogg_stream_destroy.html\
+ ogg_stream_eos.html ogg_stream_flush.html ogg_stream_flush_fill.html ogg_stream_init.html\
+ ogg_stream_iovecin.html ogg_stream_packetin.html ogg_stream_packetout.html\
ogg_stream_packetpeek.html ogg_stream_pagein.html\
- ogg_stream_pageout.html ogg_stream_reset.html\
+ ogg_stream_pageout.html ogg_stream_pageout_fill.html ogg_stream_reset.html\
ogg_stream_reset_serialno.html ogg_stream_state.html\
- ogg_sync_buffer.html ogg_sync_clear.html ogg_sync_destroy.html\
+ ogg_sync_buffer.html ogg_sync_check.html ogg_sync_clear.html ogg_sync_destroy.html\
ogg_sync_init.html ogg_sync_pageout.html ogg_sync_pageseek.html\
ogg_sync_reset.html ogg_sync_state.html ogg_sync_wrote.html\
oggpack_adv.html oggpack_adv1.html oggpack_bits.html\
oggpack_buffer.html oggpack_bytes.html oggpack_get_buffer.html\
oggpack_look.html oggpack_look1.html oggpack_read.html\
oggpack_read1.html oggpack_readinit.html oggpack_reset.html\
- oggpack_write.html oggpack_writealign.html oggpack_writeclear.html\
+ oggpack_write.html oggpack_writealign.html oggpack_writecheck.html oggpack_writeclear.html\
oggpack_writecopy.html oggpack_writeinit.html oggpack_writetrunc.html\
overview.html reference.html style.css
-EXTRA_DIST = $(doc_DATA)
all: all-am
.SUFFIXES:
@@ -205,22 +319,21 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/libogg/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu doc/libogg/Makefile
-.PRECIOUS: Makefile
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/libogg/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/libogg/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -230,64 +343,70 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-install-docDATA: $(doc_DATA)
+install-dist_apidocDATA: $(dist_apidoc_DATA)
@$(NORMAL_INSTALL)
- test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
- @list='$(doc_DATA)'; for p in $$list; do \
+ @list='$(dist_apidoc_DATA)'; test -n "$(apidocdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(apidocdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(apidocdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
- $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(apidocdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(apidocdir)" || exit $$?; \
done
-uninstall-docDATA:
+uninstall-dist_apidocDATA:
@$(NORMAL_UNINSTALL)
- @list='$(doc_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
- rm -f "$(DESTDIR)$(docdir)/$$f"; \
- done
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
+ @list='$(dist_apidoc_DATA)'; test -n "$(apidocdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(apidocdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@@ -295,8 +414,8 @@ check-am: all-am
check: check-am
all-am: Makefile $(DATA)
installdirs:
- for dir in "$(DESTDIR)$(docdir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ for dir in "$(DESTDIR)$(apidocdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
@@ -308,16 +427,22 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -328,7 +453,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
+distclean-am: clean-am distclean-generic
dvi: dvi-am
@@ -336,18 +461,38 @@ dvi-am:
html: html-am
+html-am:
+
info: info-am
info-am:
-install-data-am: install-docDATA
+install-data-am: install-dist_apidocDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
install-exec-am:
+install-html: install-html-am
+
+install-html-am:
+
install-info: install-info-am
+install-info-am:
+
install-man:
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
installcheck-am:
maintainer-clean: maintainer-clean-am
@@ -366,17 +511,38 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-docDATA uninstall-info-am
+uninstall-am: uninstall-dist_apidocDATA
+
+.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-docDATA install-exec \
- install-exec-am install-info install-info-am install-man \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- uninstall uninstall-am uninstall-docDATA uninstall-info-am
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-dist_apidocDATA install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-dist_apidocDATA
+
+.PRECIOUS: Makefile
+
+
+update-doc-version:
+ @YEAR=$$(date +%Y); DAY=$$(date +%Y%m%d); \
+ for f in $(srcdir)/*.html; do \
+ sed -e "s/2000-[0-9]\{4\} Xiph.Org/2000-$$YEAR Xiph.Org/g" \
+ -e "s/libogg release [0-9. -]\+/libogg release $(VERSION) - $$DAY/g"\
+ < $$f > $$f.tmp; \
+ if diff -q $$f $$f.tmp > /dev/null; then \
+ rm $$f.tmp; \
+ else \
+ mv $$f.tmp $$f; \
+ fi; \
+ done;
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/doc/libogg/bitpacking.html b/doc/libogg/bitpacking.html
index 20469e5..c615500 100644
--- a/doc/libogg/bitpacking.html
+++ b/doc/libogg/bitpacking.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -90,11 +90,11 @@ All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/datastructures.html b/doc/libogg/datastructures.html
index b339a0a..208ccfc 100644
--- a/doc/libogg/datastructures.html
+++ b/doc/libogg/datastructures.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -46,11 +46,11 @@ All the <b>libogg</b> specific data structures are declared in "ogg/ogg.h".
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/decoding.html b/doc/libogg/decoding.html
index 322d4a9..43cdf6f 100644
--- a/doc/libogg/decoding.html
+++ b/doc/libogg/decoding.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -91,11 +91,11 @@ advancing decoding.</td>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/encoding.html b/doc/libogg/encoding.html
index 61a650f..0bc5a4f 100644
--- a/doc/libogg/encoding.html
+++ b/doc/libogg/encoding.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -46,20 +46,28 @@ All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
<td>Outputs a completed page if the stream contains enough packets to form a full page.<td>
</tr>
<tr valign=top>
+<td><a href="ogg_stream_pageout_fill.html">ogg_stream_pageout_fill</a></td>
+ <td>Similar to ogg_stream_pageout(), but specifies a page spill threshold in bytes.
+</tr>
+<tr valign=top>
<td><a href="ogg_stream_flush.html">ogg_stream_flush</a></td>
<td>Forces any remaining packets in the stream to be returned as a page of any size.<td>
</tr>
+<tr valign=top>
+<td><a href="ogg_stream_flush_fill.html">ogg_stream_flush_fill</a></td>
+ <td>Similar to ogg_stream_flush(), but specifies a page spill threshold in bytes.<td>
+</tr>
</table>
<br><br>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/general.html b/doc/libogg/general.html
index 59de3f3..286d29c 100644
--- a/doc/libogg/general.html
+++ b/doc/libogg/general.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -44,7 +44,7 @@ All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
</tr>
<tr valign=top>
<td><a href="ogg_stream_check.html">ogg_stream_check</a></td>
- <td>Check for asyncronous errors.</td>
+ <td>Check for asynchronous errors.</td>
</tr>
<tr valign=top>
<td><a href="ogg_stream_eos.html">ogg_stream_eos</a></td>
@@ -96,11 +96,11 @@ All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/index.html b/doc/libogg/index.html
index d51e068..ff8fd59 100644
--- a/doc/libogg/index.html
+++ b/doc/libogg/index.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -26,11 +26,11 @@ Libogg contains necessary functionality to create, decode, and work with Ogg bit
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_iovec_t.html b/doc/libogg/ogg_iovec_t.html
new file mode 100644
index 0000000..8087440
--- /dev/null
+++ b/doc/libogg/ogg_iovec_t.html
@@ -0,0 +1,62 @@
+<html>
+
+<head>
+<title>libogg - datatype - ogg_iovec_t</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+<h1>ogg_iovec_t</h1>
+
+<p><i>declared in "ogg/ogg.h"</i></p>
+
+<p>
+The ogg_iovec_t struct encapsulates a length-encoded buffer. An array
+of ogg_iovec_t is used to pass a list of buffers to functions that
+accept data in ogg_iovec_t* form.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+typedef struct {
+ void *iov_base;
+ size_t iov_len;
+} ogg_iovec_t;
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>iov_base</i></dt>
+<dd>Pointer to the buffer data.</dd>
+<dt><i>iov_len</i></dt>
+<dd>Length of buffer data in bytes.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/doc/libogg/ogg_packet.html b/doc/libogg/ogg_packet.html
index ddd57df..9cb4bab 100644
--- a/doc/libogg/ogg_packet.html
+++ b/doc/libogg/ogg_packet.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -33,7 +33,7 @@ typedef struct {
long e_o_s;
ogg_int64_t granulepos;
- ogg_int64_t packetno;
+ ogg_int64_t packetno;
} ogg_packet;
</b></pre>
@@ -62,11 +62,11 @@ typedef struct {
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_packet_clear.html b/doc/libogg/ogg_packet_clear.html
index fa3ef17..ba3a455 100644
--- a/doc/libogg/ogg_packet_clear.html
+++ b/doc/libogg/ogg_packet_clear.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -17,14 +17,16 @@
<p><i>declared in "ogg/ogg.h";</i></p>
-<p>This function clears the memory used by the <a href="ogg_packet.html">ogg_packet</a> struct, and frees the internal allocated memory, but does not free
-the structure itself.
+<p>This function clears the memory used by the <a href="ogg_packet.html">ogg_packet</a> struct,
+but does not free the structure itself.
+It unconditionally frees the <i>packet</i> data buffer,
+then it zeros all structure members.
<br><br>
<table border=0 color=black cellspacing=0 cellpadding=7>
<tr bgcolor=#cccccc>
<td>
<pre><b>
-int ogg_packet_clear(ogg_packet *op);
+void ogg_packet_clear(ogg_packet *op);
</b></pre>
</td>
</tr>
@@ -32,7 +34,7 @@ int ogg_packet_clear(ogg_packet *op);
<h3>Parameters</h3>
<dl>
-<dt><i>os</i></dt>
+<dt><i>op</i></dt>
<dd>Pointer to the ogg_packet struct to be cleared.</dd>
</dl>
@@ -48,11 +50,11 @@ None.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_page.html b/doc/libogg/ogg_page.html
index e7867c6..0151a21 100644
--- a/doc/libogg/ogg_page.html
+++ b/doc/libogg/ogg_page.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -24,8 +24,9 @@ Ogg pages are the fundamental unit of framing and interleave in an ogg bitstream
They are made up of packet segments of 255 bytes each. There can be as many as
255 packet segments per page, for a maximum page size of a little under 64 kB.
This is not a practical limitation as the segments can be joined across
-page boundaries allowing packets of arbitrary size. In practice pages are
-usually around 4 kB.
+page boundaries allowing packets of arbitrary size. In practice many
+applications will not completely fill all pages because they flush the
+accumulated packets periodically order to bound latency more tightly.
<p>
<p>For a complete description of ogg pages and headers, please refer to the <a href="../framing.html">framing document</a>.
@@ -61,11 +62,11 @@ typedef struct {
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_page_bos.html b/doc/libogg/ogg_page_bos.html
index 1fd0280..684b45f 100644
--- a/doc/libogg/ogg_page_bos.html
+++ b/doc/libogg/ogg_page_bos.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -51,11 +51,11 @@ greater than 0 if this page is the beginning of a bitstream.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_page_checksum_set.html b/doc/libogg/ogg_page_checksum_set.html
index daa188e..788a38c 100644
--- a/doc/libogg/ogg_page_checksum_set.html
+++ b/doc/libogg/ogg_page_checksum_set.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -48,11 +48,11 @@ None.
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_page_continued.html b/doc/libogg/ogg_page_continued.html
index ea860b1..6d482d1 100644
--- a/doc/libogg/ogg_page_continued.html
+++ b/doc/libogg/ogg_page_continued.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -50,11 +50,11 @@ int ogg_page_continued(ogg_page *og);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_page_eos.html b/doc/libogg/ogg_page_eos.html
index e3c4c6c..c1722d1 100644
--- a/doc/libogg/ogg_page_eos.html
+++ b/doc/libogg/ogg_page_eos.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -51,11 +51,11 @@ greater than zero if this page contains the end of a bitstream.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_page_granulepos.html b/doc/libogg/ogg_page_granulepos.html
index 936ff56..60c2c91 100644
--- a/doc/libogg/ogg_page_granulepos.html
+++ b/doc/libogg/ogg_page_granulepos.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -26,7 +26,7 @@
<tr bgcolor=#cccccc>
<td>
<pre><b>
-ogg_in64_t ogg_page_granulepos(ogg_page *og);
+ogg_int64_t ogg_page_granulepos(ogg_page *og);
</b></pre>
</td>
@@ -51,11 +51,11 @@ ogg_in64_t ogg_page_granulepos(ogg_page *og);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_page_packets.html b/doc/libogg/ogg_page_packets.html
index 05203e1..38cfd05 100644
--- a/doc/libogg/ogg_page_packets.html
+++ b/doc/libogg/ogg_page_packets.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -18,7 +18,7 @@
<p><i>declared in "ogg/ogg.h";</i></p>
<p>Returns the number of packets that are completed on this page. If the
-leading packet is begun on a previous page, but ends on this page, it's
+leading packet is begun on a previous page, but ends on this page, it's
counted.
<p>
<br><br>
@@ -61,11 +61,11 @@ ogg_page_continued(page) will return non-zero.<br>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_page_pageno.html b/doc/libogg/ogg_page_pageno.html
index f8983d7..9761a5e 100644
--- a/doc/libogg/ogg_page_pageno.html
+++ b/doc/libogg/ogg_page_pageno.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -49,11 +49,11 @@ long ogg_page_pageno(ogg_page *og);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_page_serialno.html b/doc/libogg/ogg_page_serialno.html
index b2a63ca..7d288af 100644
--- a/doc/libogg/ogg_page_serialno.html
+++ b/doc/libogg/ogg_page_serialno.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -49,11 +49,11 @@ int ogg_page_serialno(ogg_page *og);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_page_version.html b/doc/libogg/ogg_page_version.html
index 429e89a..747a696 100644
--- a/doc/libogg/ogg_page_version.html
+++ b/doc/libogg/ogg_page_version.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -49,11 +49,11 @@ int ogg_page_version(ogg_page *og);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_check.html b/doc/libogg/ogg_stream_check.html
new file mode 100644
index 0000000..a84055e
--- /dev/null
+++ b/doc/libogg/ogg_stream_check.html
@@ -0,0 +1,71 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_check</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_check</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to check the error or readiness condition of an <a href="ogg_stream_state.html">ogg_stream_state</a> structure.
+<p>It is safe practice to ignore unrecoverable errors (such as an internal error caused by a malloc() failure) returned by ogg stream synchronization calls. Should an
+internal error occur, the <a href="ogg_stream_state.html">ogg_stream_state</a> structure will be cleared (equivalent to a
+call to
+<a href="ogg_stream_clear.html">ogg_stream_clear</a>) and subsequent calls
+using this <a href="ogg_stream_state.html">ogg_stream_state</a> will be
+noops. Error detection is then handled via a single call to
+ogg_stream_check at the end of the operational block. </p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int ogg_stream_check(<a href="ogg_stream_state.html">ogg_stream_state</a> *os);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is returned if the <a href="ogg_stream_state.html">ogg_stream_state</a> structure is initialized and ready.</li>
+<li>
+nonzero is returned if the structure was never initialized, or if an unrecoverable internal error occurred in a previous call using the passed in <a href="ogg_stream_state.html">ogg_stream_state</a> struct.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/libogg/ogg_stream_clear.html b/doc/libogg/ogg_stream_clear.html
index a3cf6b6..d5c5a9b 100644
--- a/doc/libogg/ogg_stream_clear.html
+++ b/doc/libogg/ogg_stream_clear.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -17,7 +17,7 @@
<p><i>declared in "ogg/ogg.h";</i></p>
-<p>This function clears and frees the internal memory used by the <a href="ogg_sync_state.html">ogg_stream_state</a> struct, but does not free the structure itself. It is safe to call ogg_stream_clear on the same structure more than once.
+<p>This function clears and frees the internal memory used by the <a href="ogg_stream_state.html">ogg_stream_state</a> struct, but does not free the structure itself. It is safe to call ogg_stream_clear on the same structure more than once.
<br><br>
<table border=0 color=black cellspacing=0 cellpadding=7>
<tr bgcolor=#cccccc>
@@ -47,11 +47,11 @@ int ogg_stream_clear(ogg_stream_state *os);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_destroy.html b/doc/libogg/ogg_stream_destroy.html
index 1b4349b..e507f83 100644
--- a/doc/libogg/ogg_stream_destroy.html
+++ b/doc/libogg/ogg_stream_destroy.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -24,8 +24,8 @@ well as the structure itself.
<p>This should be called when you are done working with an ogg stream.
It can also be called to make sure that the struct does not exist.</p>
-<p>It calls free() on its argument, so if the ogg_stream_state
-is not malloc()'d or will otherwise be freed by your own code, use
+<p>It calls free() on its argument, so if the ogg_stream_state
+is not malloc()'d or will otherwise be freed by your own code, use
<a href="ogg_stream_clear.html">ogg_stream_clear</a> instead.</p>
<br><br>
@@ -57,11 +57,11 @@ int ogg_stream_destroy(ogg_stream_state *os);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_eos.html b/doc/libogg/ogg_stream_eos.html
index e8cbe70..7a08dc3 100644
--- a/doc/libogg/ogg_stream_eos.html
+++ b/doc/libogg/ogg_stream_eos.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -48,11 +48,11 @@ int ogg_stream_eos(ogg_stream_state *os);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_flush.html b/doc/libogg/ogg_stream_flush.html
index a339d14..9ce8404 100644
--- a/doc/libogg/ogg_stream_flush.html
+++ b/doc/libogg/ogg_stream_flush.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -18,8 +18,8 @@
<p><i>declared in "ogg/ogg.h";</i></p>
<p>This function checks for remaining packets inside the stream and forces remaining packets into a page, regardless of the size of the page.
-<p>This should only be used when you want to flush an undersized page from the middle of the stream. Otherwise, <a href="ogg_stream_pageout.html">ogg_stream_pageout</a> should always be used.
-<p>This function can be used to verify that all packets have been flushed. If the return value is 0, all packets have been placed into a page.
+<p>This should only be used when you want to flush an undersized page from the middle of the stream. Otherwise, <a href="ogg_stream_pageout.html">ogg_stream_pageout</a> or <a href="ogg_stream_pageout_fill.html">ogg_stream_pageout_fill</a> should always be used.
+<p>This function can also be used to verify that all packets have been flushed. If the return value is 0, all packets have been placed into a page. Like <a href="ogg_stream_pageout.html">ogg_stream_pageout</a>, it should generally be called in a loop until available packet data has been flushes, since even a single packet may span multiple pages.
<br><br>
<table border=0 color=black cellspacing=0 cellpadding=7>
@@ -53,11 +53,11 @@ Nonzero means that remaining packets have successfully been flushed into the pag
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_flush_fill.html b/doc/libogg/ogg_stream_flush_fill.html
new file mode 100644
index 0000000..68988e8
--- /dev/null
+++ b/doc/libogg/ogg_stream_flush_fill.html
@@ -0,0 +1,74 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_flush_fill</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_flush_fill</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function flushes available packets into pages, similar to
+<a href="ogg_stream_flush.html">ogg_stream_flush()</a>, but
+allows applications to explicitly request a specific page spill
+size.</p>
+
+<p>This function checks for remaining packets inside the stream and forces remaining packets into pages of approximately the requested size.
+This should be used when you want to flush all remaining data from a stream. <a href="ogg_stream_flush.html">ogg_stream_flush</a> may be used instead if a particular page size isn't important.
+<p>This function can be used to verify that all packets have been flushed. If the return value is 0, all packets have been placed into a page. Generally speaking, it should be called in a loop until all packets are flushed, since even a single packet may span multiple pages.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int ogg_stream_flush_fill(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og, int fillbytes);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to a page of data. The remaining packets in the stream will be placed into this page, if any remain.
+<dt><i>fillbytes</i></dt>
+<dd>Packet data watermark in bytes.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 means that all packet data has already been flushed into pages, and there are no packets to put into the page. 0 is also returned in the case of an <a href="ogg_stream_state.html">ogg_stream_state</a> that has been cleared explicitly or implicitly due to an internal error.</li>
+<li>
+Nonzero means that remaining packets have successfully been flushed into the page.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/libogg/ogg_stream_init.html b/doc/libogg/ogg_stream_init.html
index 7342773..cdd3ecb 100644
--- a/doc/libogg/ogg_stream_init.html
+++ b/doc/libogg/ogg_stream_init.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -17,7 +17,7 @@
<p><i>declared in "ogg/ogg.h";</i></p>
-<p>This function is used to initialize an <a href="ogg_sync_state.html">ogg_stream_state</a> struct and allocates appropriate memory in preparation for encoding or decoding.
+<p>This function is used to initialize an <a href="ogg_stream_state.html">ogg_stream_state</a> struct and allocates appropriate memory in preparation for encoding or decoding.
<p>It also assigns the stream a given serial number.
<br><br>
<table border=0 color=black cellspacing=0 cellpadding=7>
@@ -52,11 +52,11 @@ int ogg_stream_init(<a href="ogg_stream_state.html">ogg_stream_state</a> *os,int
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_iovecin.html b/doc/libogg/ogg_stream_iovecin.html
new file mode 100644
index 0000000..92499a1
--- /dev/null
+++ b/doc/libogg/ogg_stream_iovecin.html
@@ -0,0 +1,80 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_iovecin</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_iovecin</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function submits packet data (in the form of
+an array of <a href="ogg_iovec_t.html">ogg_iovec_t</a>, rather than using
+an <a href="ogg_packet.html">ogg_packet</a> structure) to the
+bitstream for page encapsulation. After this is called, more packets
+can be submitted, or pages can be written out.</p>
+
+<p>In a typical encoding situation, this should be used after filling a
+packet with data.
+The data in the packet is copied into the internal storage managed by
+the <a href="ogg_stream_state.html">ogg_stream_state</a>, so the caller
+is free to alter the contents of <i>os</i> after this call has returned.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, int count, long e_o_s, ogg_int64_t granulepos);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct.</dd>
+<dt><i>iov</i></dt>
+<dd>Length-encoded buffers held in an array of <a href="ogg_iovec_t.html">ogg_iovec_t</a>.
+<dt><i>count</i></dt>
+<dd>Length of the iov array.
+<dt><i>e_o_s</i></dt>
+<dd>End of stream flag, analogous to the e_o_s field in an <a href="ogg_packet.html">ogg_packet</a>.
+<dt><i>granulepos</i></dt>
+<dd>Granule position value, analogous to the granpos field in an <a href="ogg_packet.html">ogg_packet</a>.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 returned on success. -1 returned in the event of internal error.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/libogg/ogg_stream_packetin.html b/doc/libogg/ogg_stream_packetin.html
index b683c95..b36f115 100644
--- a/doc/libogg/ogg_stream_packetin.html
+++ b/doc/libogg/ogg_stream_packetin.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -17,13 +17,13 @@
<p><i>declared in "ogg/ogg.h";</i></p>
-<p>This function submits a packet to the bitstream for page
+<p>This function submits a packet to the bitstream for page
encapsulation. After this is called, more packets can be submitted,
or pages can be written out.</p>
-<p>In a typical encoding situation, this should be used after filling a
+<p>In a typical encoding situation, this should be used after filling a
packet with data.
-The data in the packet is copied into the internal storage managed by
+The data in the packet is copied into the internal storage managed by
the <a href="ogg_stream_state.html">ogg_stream_state</a>, so the caller
is free to alter the contents of <i>op</i> after this call has returned.
@@ -58,11 +58,11 @@ int ogg_stream_packetin(ogg_stream_state *os,ogg_packet *op);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_packetout.html b/doc/libogg/ogg_stream_packetout.html
index fc7ffad..6e12dc9 100644
--- a/doc/libogg/ogg_stream_packetout.html
+++ b/doc/libogg/ogg_stream_packetout.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -17,16 +17,16 @@
<p><i>declared in "ogg/ogg.h";</i></p>
-<p>This function assembles a data packet for output to the codec
+<p>This function assembles a data packet for output to the codec
decoding engine. The data has already been submitted to the
<a href="ogg_stream_state.html">ogg_stream_state</a> and broken
-into segments. Each successive call returns the next complete packet
+into segments. Each successive call returns the next complete packet
built from those segments.</p>
-<p>In a typical decoding situation, this should be used after calling
-<a href="ogg_stream_pagein.html">ogg_stream_pagein()</a> to submit a
-page of data to the bitstream. If the function returns 0, more data is
-needed and another page should be submitted. A non-zero return value
+<p>In a typical decoding situation, this should be used after calling
+<a href="ogg_stream_pagein.html">ogg_stream_pagein()</a> to submit a
+page of data to the bitstream. If the function returns 0, more data is
+needed and another page should be submitted. A non-zero return value
indicates successful return of a packet.</p>
<p>The <i>op</i> is filled in with pointers to memory managed by
@@ -50,8 +50,8 @@ int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
<dd>Pointer to a previously declared <a
href="ogg_stream_state.html">ogg_stream_state</a> struct. Before this function is called, an <a href="ogg_page.html">ogg_page</a> should be submitted to the stream using <a href="ogg_stream_pagein.html">ogg_stream_pagein()</a>.</dd>
<dt><i>op</i></dt>
-<dd>Pointer to the packet to be filled in with pointers to the new data.
-This will typically be submitted to a codec for decode after this
+<dd>Pointer to the packet to be filled in with pointers to the new data.
+This will typically be submitted to a codec for decode after this
function is called. The pointers are only valid until the next call
on this stream state.</dd>
</dl>
@@ -72,11 +72,11 @@ on this stream state.</dd>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 xiph.org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_packetpeek.html b/doc/libogg/ogg_stream_packetpeek.html
index d2d8562..2f90e32 100644
--- a/doc/libogg/ogg_stream_packetpeek.html
+++ b/doc/libogg/ogg_stream_packetpeek.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -23,9 +23,9 @@ it without advancing decoding.</p>
<p>In a typical situation, this would be called
speculatively after <a
href="ogg_stream_pagein.html">ogg_stream_pagein()</a> to check
-the packet contents before handing it off to a codec for
+the packet contents before handing it off to a codec for
decompression. To advance page decoding and remove
-the packet from the sync structure, call
+the packet from the sync structure, call
<a href="ogg_stream_packetout.html">ogg_stream_packetout()</a>.</p>
<br><br>
@@ -43,14 +43,14 @@ int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
<h3>Parameters</h3>
<dl>
<dt><i>os</i></dt>
-<dd>Pointer to a previously declared
+<dd>Pointer to a previously declared
<a href="ogg_stream_state.html">ogg_stream_state</a> struct. Before this
function is called, an <a href="ogg_page.html">ogg_page</a> should be
-submitted to the stream using
+submitted to the stream using
<a href="ogg_stream_pagein.html">ogg_stream_pagein()</a>.</dd>
<dt><i>op</i></dt>
<dd>Pointer to the next packet available in the bitstream, if
-any. A NULL value may be passed in the case of a simple "is there a
+any. A NULL value may be passed in the case of a simple "is there a
packet?" check.</dd>
</dl>
@@ -71,11 +71,11 @@ packet?" check.</dd>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_pagein.html b/doc/libogg/ogg_stream_pagein.html
index 316ba30..db52b91 100644
--- a/doc/libogg/ogg_stream_pagein.html
+++ b/doc/libogg/ogg_stream_pagein.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -17,7 +17,7 @@
<p><i>declared in "ogg/ogg.h";</i></p>
-<p>This function adds a complete page to the bitstream.
+<p>This function adds a complete page to the bitstream.
<p>In a typical decoding situation, this function would be called after using <a href="ogg_sync_pageout.html">ogg_sync_pageout</a> to create a valid <a href="ogg_page.html">ogg_page</a> struct.
<p>Internally, this function breaks the page into packet segments in preparation for outputting a valid packet to the codec decoding layer.
@@ -35,7 +35,7 @@ int ogg_stream_pagein(<a href="ogg_stream_state.html">ogg_stream_state</a> *os,
<h3>Parameters</h3>
<dl>
<dt><i>os</i></dt>
-<dd>Pointer to a previously declared <a href="ogg_stream.html">ogg_stream</a> struct, which represents the current logical bitstream.</dd>
+<dd>Pointer to a previously declared <a href="ogg_stream_state.html">ogg_stream_state</a> struct, which represents the current logical bitstream.</dd>
<dt><i>og</i></dt>
<dd>Pointer to a page of data. The data inside this page is being submitted to the streaming layer in order to be allocated into packets.
</dl>
@@ -43,7 +43,7 @@ int ogg_stream_pagein(<a href="ogg_stream_state.html">ogg_stream_state</a> *os,
<h3>Return Values</h3>
<blockquote>
-<li>-1 indicates failure. This means that the serial number of the page did not match the serial number of the bitstream, the page version was incorrect, or an internal error accurred.</li>
+<li>-1 indicates failure. This means that the serial number of the page did not match the serial number of the bitstream, the page version was incorrect, or an internal error occurred.</li>
<li>
0 means that the page was successfully submitted to the bitstream.</li>
</blockquote>
@@ -53,11 +53,11 @@ int ogg_stream_pagein(<a href="ogg_stream_state.html">ogg_stream_state</a> *os,
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_pageout.html b/doc/libogg/ogg_stream_pageout.html
index c07a975..9915368 100644
--- a/doc/libogg/ogg_stream_pageout.html
+++ b/doc/libogg/ogg_stream_pageout.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -19,20 +19,20 @@
<p>This function forms packets into pages.</p>
-<p>In a typical encoding situation, this would be called after using <a
-href="ogg_stream_packetin.html">ogg_stream_packetin()</a> to submit
-data packets to the bitstream. Internally, this function assembles
-the accumulated packet bodies into an Ogg page suitable for writing
+<p>In a typical encoding situation, this would be called after using <a
+href="ogg_stream_packetin.html">ogg_stream_packetin()</a> to submit
+data packets to the bitstream. Internally, this function assembles
+the accumulated packet bodies into an Ogg page suitable for writing
to a stream. The function is typically called in a loop until there
are no more pages ready for output.</p>
-<p>This function will only return a page when a "reasonable" amount of
-packet data is available. Normally this is appropriate since it
+<p>This function will only return a page when a "reasonable" amount of
+packet data is available. Normally this is appropriate since it
limits the overhead of the Ogg page headers in the bitstream, and so
-calling ogg_stream_pageout() after ogg_stream_packetin() should be the
-common case. Call <a href="ogg_stream_flush.html">ogg_stream_flush()</a>
-if immediate page generation is desired. This may be occasionally
-necessary, for example, to limit the temporal latency of a variable
+calling ogg_stream_pageout() after ogg_stream_packetin() should be the
+common case. Call <a href="ogg_stream_flush.html">ogg_stream_flush()</a>
+if immediate page generation is desired. This may be occasionally
+necessary, for example, to limit the temporal latency of a variable
bitrate stream.</p>
<br><br>
@@ -52,15 +52,15 @@ int ogg_stream_pageout(<a href="ogg_stream_state.html">ogg_stream_state</a> *os,
<dd>Pointer to a previously declared <a href="ogg_stream.html">ogg_stream</a> struct, which represents the current logical bitstream.</dd>
<dt><i>og</i></dt>
<dd>Pointer to an <a href="ogg_page.html">ogg_page</a> structure to fill
-in. Data pointed to is owned by libogg. The structure is valid until the
-next call to ogg_stream_pageout(), ogg_stream_packetin(), or
+in. Data pointed to is owned by libogg. The structure is valid until the
+next call to ogg_stream_pageout(), ogg_stream_packetin(), or
ogg_stream_flush().</dd>
</dl>
<h3>Return Values</h3>
<blockquote>
-<li>Zero means that insufficient data has accumulated to fill a page, or an internal error occurred. In
+<li>Zero means that insufficient data has accumulated to fill a page, or an internal error occurred. In
this case <i>og</i> is not modified.</li>
<li>Non-zero means that a page has been completed and returned.</li>
</blockquote>
@@ -70,11 +70,11 @@ this case <i>og</i> is not modified.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 xiph.org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_pageout_fill.html b/doc/libogg/ogg_stream_pageout_fill.html
new file mode 100644
index 0000000..22edfa8
--- /dev/null
+++ b/doc/libogg/ogg_stream_pageout_fill.html
@@ -0,0 +1,89 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_stream_pageout_fill</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+<h1>ogg_stream_pageout_fill</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function forms packets into pages, similar
+to <a href="ogg_stream_pageout.html">ogg_stream_pageout()</a>, but
+allows applications to explicitly request a specific page spill
+size.</p>
+
+<p>In a typical encoding situation, this would be called after using <a
+href="ogg_stream_packetin.html">ogg_stream_packetin()</a> to submit
+data packets to the bitstream. Internally, this function assembles
+the accumulated packet bodies into an Ogg page suitable for writing
+to a stream. The function is typically called in a loop until there
+are no more pages ready for output.</p>
+
+<p>This function will return a page when at least four packets have
+been accumulated and accumulated packet data meets or exceeds the
+specified number of bytes, <b>and/or</b> when the accumulated packet
+data meets/exceeds the maximum page size regardless of accumulated
+packet count.
+Call <a href="ogg_stream_flush.html">ogg_stream_flush()</a> or
+<a href="ogg_stream_flush_fill.html">ogg_stream_flush_fill()</a> if
+immediate page generation is desired regardless of accumulated data.</p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int ogg_stream_pageout_fill(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og, int fillbytes);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>os</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_stream.html">ogg_stream</a> struct, which represents the current logical bitstream.</dd>
+<dt><i>og</i></dt>
+<dd>Pointer to an <a href="ogg_page.html">ogg_page</a> structure to fill
+in. Data pointed to is owned by libogg. The structure is valid until the
+next call to ogg_stream_pageout(), ogg_stream_packetin(), or
+ogg_stream_flush().</dd>
+<dt><i>fillbytes</i></dt>
+<dd>Packet data watermark in bytes.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>Zero means that insufficient data has accumulated to fill a page, or an internal error occurred. In
+this case <i>og</i> is not modified.</li>
+<li>Non-zero means that a page has been completed and returned.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/libogg/ogg_stream_reset.html b/doc/libogg/ogg_stream_reset.html
index 88d4e19..068541a 100644
--- a/doc/libogg/ogg_stream_reset.html
+++ b/doc/libogg/ogg_stream_reset.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -17,7 +17,7 @@
<p><i>declared in "ogg/ogg.h";</i></p>
-<p>This function sets values in the <a href="ogg_sync_state.html">ogg_stream_state</a> struct back to initial values.
+<p>This function sets values in the <a href="ogg_stream_state.html">ogg_stream_state</a> struct back to initial values.
<br><br>
<table border=0 color=black cellspacing=0 cellpadding=7>
<tr bgcolor=#cccccc>
@@ -32,7 +32,7 @@ int ogg_stream_reset(ogg_stream_state *os);
<h3>Parameters</h3>
<dl>
<dt><i>os</i></dt>
-<dd>Pointer to the ogg_stream_state struct to be cleared.</dd>
+<dd>Pointer to the ogg_stream_state struct to be reset.</dd>
</dl>
@@ -47,11 +47,11 @@ int ogg_stream_reset(ogg_stream_state *os);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_reset_serialno.html b/doc/libogg/ogg_stream_reset_serialno.html
index 6f2688c..a80c590 100644
--- a/doc/libogg/ogg_stream_reset_serialno.html
+++ b/doc/libogg/ogg_stream_reset_serialno.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -17,7 +17,7 @@
<p><i>declared in "ogg/ogg.h";</i></p>
-<p>This function reinitializes the values in the
+<p>This function reinitializes the values in the
<a href="ogg_stream_state.html">ogg_stream_state</a>,
just like <a href="ogg_stream_reset.html">ogg_stream_reset()</a>.
Additionally, it sets the stream serial number to the given value.</p>
@@ -36,7 +36,7 @@ int ogg_stream_reset_serialno(ogg_stream_state *os, int serialno);
<h3>Parameters</h3>
<dl>
<dt><i>os</i></dt>
-<dd>Pointer to the ogg_stream_state struct to be cleared.</dd>
+<dd>Pointer to the ogg_stream_state struct to be reset.</dd>
<dt><i>serialno</i></dt>
<dd>New stream serial number to use</dd>
</dl>
@@ -53,11 +53,11 @@ int ogg_stream_reset_serialno(ogg_stream_state *os, int serialno);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org Foundation</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_stream_state.html b/doc/libogg/ogg_stream_state.html
index e903f03..f6fa437 100644
--- a/doc/libogg/ogg_stream_state.html
+++ b/doc/libogg/ogg_stream_state.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -18,7 +18,8 @@
<p><i>declared in "ogg/ogg.h"</i></p>
<p>
-The ogg_stream_state struct tracks the current encode/decode state of the current logical bitstream.
+The ogg_stream_state struct tracks the current encode/decode state
+of the current logical bitstream.
<p>
<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
@@ -32,10 +33,10 @@ typedef struct {
long body_returned; /* elements of fill returned */
- int *lacing_vals; /* The values that will go to the segment table */
- ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
- this way, but it is simple coupled to the
- lacing fifo */
+ int *lacing_vals; /* The values that will go to the segment table */
+ ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
+ this way, but it is simple coupled to the
+ lacing fifo */
long lacing_storage;
long lacing_fill;
long lacing_packet;
@@ -48,12 +49,12 @@ typedef struct {
logical bitstream */
int b_o_s; /* set after we've written the initial page
of a logical bitstream */
- long serialno;
- int pageno;
- ogg_int64_t packetno; /* sequence number for decode; the framing
+ long serialno;
+ long pageno;
+ ogg_int64_t packetno; /* sequence number for decode; the framing
knows where there's a hole in the data,
but we need coupling so that the codec
- (which is in a seperate abstraction
+ (which is in a separate abstraction
layer) also knows about the gap */
ogg_int64_t granulepos;
@@ -108,11 +109,11 @@ typedef struct {
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_sync_buffer.html b/doc/libogg/ogg_sync_buffer.html
index ed8b286..45d9aff 100644
--- a/doc/libogg/ogg_sync_buffer.html
+++ b/doc/libogg/ogg_sync_buffer.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -53,11 +53,11 @@ Returns a pointer to the newly allocated buffer or NULL on error</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_sync_check.html b/doc/libogg/ogg_sync_check.html
new file mode 100644
index 0000000..f96187a
--- /dev/null
+++ b/doc/libogg/ogg_sync_check.html
@@ -0,0 +1,71 @@
+<html>
+
+<head>
+<title>libogg - function - ogg_sync_check</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+<h1>ogg_sync_check</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function is used to check the error or readiness condition of an <a href="ogg_sync_state.html">ogg_sync_state</a> structure.
+<p>It is safe practice to ignore unrecoverable errors (such as an internal error caused by a malloc() failure) returned by ogg stream synchronization calls. Should an
+internal error occur, the <a href="ogg_sync_state.html">ogg_sync_state</a> structure will be cleared (equivalent to a
+call to
+<a href="ogg_sync_clear.html">ogg_sync_clear</a>) and subsequent calls
+using this <a href="ogg_sync_state.html">ogg_sync_state</a> will be
+noops. Error detection is then handled via a single call to
+ogg_sync_check at the end of the operational block. </p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int ogg_sync_check(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>oy</i></dt>
+<dd>Pointer to a previously declared <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 is returned if the <a href="ogg_sync_state.html">ogg_sync_state</a> structure is initialized and ready.</li>
+<li>
+nonzero is returned if the structure was never initialized, or if an unrecoverable internal error occurred in a previous call using the passed in <a href="ogg_sync_state.html">ogg_sync_state</a> struct.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/libogg/ogg_sync_clear.html b/doc/libogg/ogg_sync_clear.html
index 02ae40c..f8df0af 100644
--- a/doc/libogg/ogg_sync_clear.html
+++ b/doc/libogg/ogg_sync_clear.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -48,11 +48,11 @@ int ogg_sync_clear(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_sync_destroy.html b/doc/libogg/ogg_sync_destroy.html
index c73cd22..efebf3d 100644
--- a/doc/libogg/ogg_sync_destroy.html
+++ b/doc/libogg/ogg_sync_destroy.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -19,9 +19,9 @@
<p>This function is used to destroy an <a href="ogg_sync_state.html">ogg_sync_state</a> struct and free all memory used.</p>
-<p>Note this calls free() on its argument so you should only use this
-function if you've allocated the ogg_sync_state on the heap. If it is
-allocated on the stack, or it will otherwise be freed by your
+<p>Note this calls free() on its argument so you should only use this
+function if you've allocated the ogg_sync_state on the heap. If it is
+allocated on the stack, or it will otherwise be freed by your
own code, use <a href="ogg_sync_clear.html">ogg_sync_clear</a> instead
to release just the internal memory.</p>
@@ -54,11 +54,11 @@ int ogg_sync_destroy(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_sync_init.html b/doc/libogg/ogg_sync_init.html
index 15e2b78..50c0971 100644
--- a/doc/libogg/ogg_sync_init.html
+++ b/doc/libogg/ogg_sync_init.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -49,11 +49,11 @@ int ogg_sync_init(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_sync_pageout.html b/doc/libogg/ogg_sync_pageout.html
index 982168d..4430692 100644
--- a/doc/libogg/ogg_sync_pageout.html
+++ b/doc/libogg/ogg_sync_pageout.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -63,11 +63,11 @@ if (ogg_sync_pageout(&oy, &og) != 1) {
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_sync_pageseek.html b/doc/libogg/ogg_sync_pageseek.html
index f4109ef..d76a784 100644
--- a/doc/libogg/ogg_sync_pageseek.html
+++ b/doc/libogg/ogg_sync_pageseek.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -17,7 +17,7 @@
<p><i>declared in "ogg/ogg.h";</i></p>
-<p>This function synchronizes the ogg_sync_state struct to the next ogg_page.
+<p>This function synchronizes the ogg_sync_state struct to the next ogg_page.
<p>This is useful when seeking within a bitstream. ogg_sync_pageseek will synchronize to the next page in the bitstream and return information about how many bytes we advanced or skipped in order to do so.
<br><br>
@@ -54,11 +54,11 @@ n means that the page was synced at the current location, with a page length of
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_sync_reset.html b/doc/libogg/ogg_sync_reset.html
index b32fed4..32df6da 100644
--- a/doc/libogg/ogg_sync_reset.html
+++ b/doc/libogg/ogg_sync_reset.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -49,11 +49,11 @@ int ogg_sync_reset(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_sync_state.html b/doc/libogg/ogg_sync_state.html
index 2384a5e..78d6f20 100644
--- a/doc/libogg/ogg_sync_state.html
+++ b/doc/libogg/ogg_sync_state.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -19,7 +19,7 @@
<p>
The ogg_sync_state struct tracks the synchronization of the current page.
-<p>It is used during decoding to track the status of data as it is read in, synchronized, verified, and parsed into pages belonging to the various logical bistreams in the current physical bitstream link.
+<p>It is used during decoding to track the status of data as it is read in, synchronized, verified, and parsed into pages belonging to the various logical bistreams in the current physical bitstream link.
<p>
<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
@@ -64,11 +64,11 @@ typedef struct {
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/ogg_sync_wrote.html b/doc/libogg/ogg_sync_wrote.html
index 27e572e..638913b 100644
--- a/doc/libogg/ogg_sync_wrote.html
+++ b/doc/libogg/ogg_sync_wrote.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -17,13 +17,13 @@
<p><i>declared in "ogg/ogg.h";</i></p>
-<p>This function is used to tell the <a href="ogg_sync_state.html">ogg_sync_state</a> struct how many bytes we wrote into the buffer.
+<p>This function is used to tell the <a href="ogg_sync_state.html">ogg_sync_state</a> struct how many bytes we wrote into the buffer.
<p>
-The general proceedure is to request a pointer into an internal
-<a href="ogg_sync_state.html">ogg_sync_state</a> buffer by calling
+The general procedure is to request a pointer into an internal
+<a href="ogg_sync_state.html">ogg_sync_state</a> buffer by calling
<a href="ogg_sync_buffer.html">ogg_sync_buffer()</a>. The buffer
-is then filled up to the requested size with new input, and
+is then filled up to the requested size with new input, and
ogg_sync_wrote() is called to advance the fill pointer by however
much data was actually available.</p>
@@ -59,11 +59,11 @@ int ogg_sync_wrote(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy, long by
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_adv.html b/doc/libogg/oggpack_adv.html
index 64723a4..d447156 100644
--- a/doc/libogg/oggpack_adv.html
+++ b/doc/libogg/oggpack_adv.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -50,11 +50,11 @@ No values are returned.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org Foundation</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_adv1.html b/doc/libogg/oggpack_adv1.html
index 8e21e48..a76ba58 100644
--- a/doc/libogg/oggpack_adv1.html
+++ b/doc/libogg/oggpack_adv1.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -48,11 +48,11 @@ void oggpack_adv1(oggpack_buffer *b);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_bits.html b/doc/libogg/oggpack_bits.html
index 5375fca..eccd9ae 100644
--- a/doc/libogg/oggpack_bits.html
+++ b/doc/libogg/oggpack_bits.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -48,11 +48,11 @@ long oggpack_bits(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_buffer.html b/doc/libogg/oggpack_buffer.html
index 4a8b3dc..5562c92 100644
--- a/doc/libogg/oggpack_buffer.html
+++ b/doc/libogg/oggpack_buffer.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -53,11 +53,11 @@ typedef struct {
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_bytes.html b/doc/libogg/oggpack_bytes.html
index b8ac08c..4503e36 100644
--- a/doc/libogg/oggpack_bytes.html
+++ b/doc/libogg/oggpack_bytes.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -17,10 +17,10 @@
<p><i>declared in "ogg/ogg.h";</i></p>
-<p>This function returns the total number of bytes behind the current
-access point in the <a href="oggpack_buffer.html">oggpack_buffer</a>.
-For write-initialized buffers, this is the number of complete bytes
-written so far. For read-initialized buffers, it is the number of
+<p>This function returns the total number of bytes behind the current
+access point in the <a href="oggpack_buffer.html">oggpack_buffer</a>.
+For write-initialized buffers, this is the number of complete bytes
+written so far. For read-initialized buffers, it is the number of
complete bytes that have been read so far.
<p>The return value is the number of <b>complete</b> bytes in the buffer.
There may be extra (<8) bits.
@@ -53,11 +53,11 @@ long oggpack_bytes(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 xiph.org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_get_buffer.html b/doc/libogg/oggpack_get_buffer.html
index 2e8da55..538bc96 100644
--- a/doc/libogg/oggpack_get_buffer.html
+++ b/doc/libogg/oggpack_get_buffer.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -48,11 +48,11 @@ No values are returned.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_look.html b/doc/libogg/oggpack_look.html
index 9c85f71..c5c2da8 100644
--- a/doc/libogg/oggpack_look.html
+++ b/doc/libogg/oggpack_look.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -52,11 +52,11 @@ long oggpack_look(<a href="oggpack_buffer.html">oggpack_buffer</a> *b,int bits)
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_look1.html b/doc/libogg/oggpack_look1.html
index b48b231..c0c771d 100644
--- a/doc/libogg/oggpack_look1.html
+++ b/doc/libogg/oggpack_look1.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -49,11 +49,11 @@ long oggpack_look1(oggpack_buffer *b);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_read.html b/doc/libogg/oggpack_read.html
index c079732..670cc9d 100644
--- a/doc/libogg/oggpack_read.html
+++ b/doc/libogg/oggpack_read.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -51,11 +51,11 @@ long oggpack_read(oggpack_buffer *b,int bits);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_read1.html b/doc/libogg/oggpack_read1.html
index 92e61a4..a0e73db 100644
--- a/doc/libogg/oggpack_read1.html
+++ b/doc/libogg/oggpack_read1.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -49,11 +49,11 @@ long oggpack_read1(oggpack_buffer *b);
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_readinit.html b/doc/libogg/oggpack_readinit.html
index 0b57f26..cba730d 100644
--- a/doc/libogg/oggpack_readinit.html
+++ b/doc/libogg/oggpack_readinit.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -50,11 +50,11 @@ No values are returned.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_reset.html b/doc/libogg/oggpack_reset.html
index dbe69d6..9dae86c 100644
--- a/doc/libogg/oggpack_reset.html
+++ b/doc/libogg/oggpack_reset.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -48,11 +48,11 @@ No values are returned.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_write.html b/doc/libogg/oggpack_write.html
index cf6817e..25d058b 100644
--- a/doc/libogg/oggpack_write.html
+++ b/doc/libogg/oggpack_write.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -54,11 +54,11 @@ No values are returned.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_writealign.html b/doc/libogg/oggpack_writealign.html
index bea994c..01f4b0b 100644
--- a/doc/libogg/oggpack_writealign.html
+++ b/doc/libogg/oggpack_writealign.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -51,11 +51,11 @@ No values are returned.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org Foundation</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_writecheck.html b/doc/libogg/oggpack_writecheck.html
new file mode 100644
index 0000000..dd0a7d9
--- /dev/null
+++ b/doc/libogg/oggpack_writecheck.html
@@ -0,0 +1,81 @@
+<html>
+
+<head>
+<title>libogg - function - oggpack_writecheck</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+<h1>oggpack_writecheck</h1>
+
+<p><i>declared in "ogg/ogg.h";</i></p>
+
+<p>This function checks the readiness status of
+an <a href="oggpack_buffer.html">oggpack_buffer</a> previously
+initialized for writing using the
+Ogg <a href="bitpacking.html">bitpacking</a> functions. A write
+buffer that encounters an error (such as a failed malloc) will clear
+its internal state and release any in-use memory, flagging itself as
+'not ready'. Subsequent attempts to write using the buffer will
+silently fail. This error state may be detected at any later time by
+using oggpack_writecheck(). It is safe but not necessary to
+call <a href="oggpack_writeclear.html">oggpack_writeclear()</a> on a buffer that
+has flagged an error and released its resources.
+
+<p><em>Important note to developers: Although libogg checks the
+results of memory allocations, these checks are only useful on a
+narrow range of embedded platforms. Allocation checks perform no
+useful service on a general purpose desktop OS where pages are
+routinely overallocated and all allocations succeed whether memory is
+available or not. The only way to detect an out of memory condition
+on the vast majority of OSes is to watch for and capture segmentation
+faults. This function is useful only to embedded developers.</em>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+ <td>
+<pre><b>
+int oggpack_writecheck(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
+</b></pre>
+ </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>b</i></dt>
+<dd>An <a href="oggpack_buffer.html">oggpack_buffer</a> previously initialized for writing.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li><i>zero</i>: buffer is ready for writing</li>
+<li><i>nonzero</i>: buffer is not ready or encountered an error</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
+</tr><tr>
+<td><p class=tiny>libogg documentation</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
+</tr>
+</table>
+
+
+</body>
+
+</html>
diff --git a/doc/libogg/oggpack_writeclear.html b/doc/libogg/oggpack_writeclear.html
index edd2e21..37c4714 100644
--- a/doc/libogg/oggpack_writeclear.html
+++ b/doc/libogg/oggpack_writeclear.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -48,11 +48,11 @@ No values are returned.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_writecopy.html b/doc/libogg/oggpack_writecopy.html
index 28c2820..ec8d613 100644
--- a/doc/libogg/oggpack_writecopy.html
+++ b/doc/libogg/oggpack_writecopy.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -55,11 +55,11 @@ No values are returned.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org Foundation</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_writeinit.html b/doc/libogg/oggpack_writeinit.html
index 99a9ed3..d66655d 100644
--- a/doc/libogg/oggpack_writeinit.html
+++ b/doc/libogg/oggpack_writeinit.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -48,11 +48,11 @@ No values are returned.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/oggpack_writetrunc.html b/doc/libogg/oggpack_writetrunc.html
index 21524ed..3488640 100644
--- a/doc/libogg/oggpack_writetrunc.html
+++ b/doc/libogg/oggpack_writetrunc.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -51,11 +51,11 @@ No values are returned.</li>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org Foundation</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/overview.html b/doc/libogg/overview.html
index 432300e..3a731b4 100644
--- a/doc/libogg/overview.html
+++ b/doc/libogg/overview.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -31,11 +31,11 @@ The libogg API consists of the following functional categories:
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/libogg/reference.html b/doc/libogg/reference.html
index 89364a7..3eac3f8 100644
--- a/doc/libogg/reference.html
+++ b/doc/libogg/reference.html
@@ -9,7 +9,7 @@
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
@@ -60,7 +60,9 @@
<b>Encoding-Related</b><br>
<a href="ogg_stream_packetin.html">ogg_stream_packetin()</a><br>
<a href="ogg_stream_pageout.html">ogg_stream_pageout()</a><br>
+<a href="ogg_stream_pageout_fill.html">ogg_stream_pageout_fill()</a><br>
<a href="ogg_stream_flush.html">ogg_stream_flush()</a><br>
+<a href="ogg_stream_flush_fill.html">ogg_stream_flush_fill()</a><br>
<br>
<b>General</b><br>
<a href="ogg_stream_init.html">ogg_stream_init()</a><br>
@@ -83,11 +85,11 @@
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
-<td><p class=tiny>copyright &copy; 2000-2010 Xiph.Org Foundation</p></td>
+<td><p class=tiny>copyright &copy; 2000-2021 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
-<td align=right><p class=tiny>libogg release 1.2.0 - 20100325</p></td>
+<td align=right><p class=tiny>libogg release 1.3.5 - 20210603</p></td>
</tr>
</table>
diff --git a/doc/multiplex1.png b/doc/multiplex1.png
new file mode 100644
index 0000000..e48d1dd
--- /dev/null
+++ b/doc/multiplex1.png
Binary files differ
diff --git a/doc/multiplex1.svg b/doc/multiplex1.svg
new file mode 100644
index 0000000..46e6d52
--- /dev/null
+++ b/doc/multiplex1.svg
@@ -0,0 +1,632 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="multiplex1.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/xiphmont/MotherfishSVN/ogg/doc/multiplex1.png"
+ inkscape:export-xdpi="78.239998"
+ inkscape:export-ydpi="78.239998">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98994949"
+ inkscape:cx="414.22127"
+ inkscape:cy="675.05057"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1436"
+ inkscape:window-height="986"
+ inkscape:window-x="1776"
+ inkscape:window-y="26"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2383" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <text
+ xml:space="preserve"
+ style="font-size:12;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="147.14285"
+ y="265.93362"
+ id="text3566"><tspan
+ sodipodi:role="line"
+ id="tspan3568"
+ x="147.14285"
+ y="265.93362" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="144.28571"
+ y="265.21933"
+ id="text3570"><tspan
+ sodipodi:role="line"
+ id="tspan3572"
+ x="144.28571"
+ y="265.21933" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="135.71429"
+ y="264.50504"
+ id="text3574"><tspan
+ sodipodi:role="line"
+ id="tspan3576"
+ x="135.71429"
+ y="264.50504" /></text>
+ <rect
+ style="fill:#bbddbb;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3155"
+ width="90"
+ height="80"
+ x="80"
+ y="127.36218"
+ ry="0" />
+ <rect
+ ry="0"
+ y="127.36218"
+ x="580"
+ height="80"
+ width="90"
+ id="rect3188"
+ style="fill:#bbddbb;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#bbddbb;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3196"
+ width="90"
+ height="80"
+ x="480"
+ y="127.36218"
+ ry="0" />
+ <rect
+ ry="0"
+ y="127.36218"
+ x="380"
+ height="80"
+ width="90"
+ id="rect3204"
+ style="fill:#bbddbb;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#bbddbb;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3212"
+ width="90"
+ height="80"
+ x="280"
+ y="127.36218"
+ ry="0" />
+ <rect
+ ry="0"
+ y="127.36218"
+ x="180"
+ height="80"
+ width="90"
+ id="rect3220"
+ style="fill:#bbddbb;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#5fd35f;fill-opacity:1;stroke:none;stroke-width:2.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3258"
+ width="620"
+ height="40"
+ x="65"
+ y="157.36218"
+ ry="4.3460864e-06" />
+ <path
+ style="fill:#5fd35f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 70,157.36218 L 70,147.36218 L 30,177.36218 L 70,207.36218 L 70,157.36218 z"
+ id="path3266"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="font-size:24px;fill:#5fd35f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 680,157.36218 L 680,147.36218 L 720,177.36218 L 680,207.36218 L 680,157.36218 z"
+ id="path3268" />
+ <rect
+ style="fill:#bbddbb;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3260"
+ width="620"
+ height="20"
+ x="65"
+ y="102.36218"
+ ry="0"
+ inkscape:export-xdpi="78.239998"
+ inkscape:export-ydpi="78.239998" />
+ <path
+ style="fill:#bbddbb;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 70,102.36218 L 70,92.362183 L 40,112.36218 L 70,132.36218 L 70,102.36218 z"
+ id="path3262" />
+ <path
+ style="fill:#bbddbb;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 680,102.36218 L 680,92.362183 L 710,112.36218 L 680,132.36218 L 680,102.36218 z"
+ id="path3264" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+ x="280"
+ y="122.36218"
+ id="text3270"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3562"
+ x="280"
+ y="122.36218">elementary physical bitstream A</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="445"
+ y="192.36218"
+ id="text3274"><tspan
+ sodipodi:role="line"
+ id="tspan3276"
+ x="445"
+ y="192.36218">logical bitstream A</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="87.979683"
+ y="146.8571"
+ id="text3161"><tspan
+ sodipodi:role="line"
+ id="tspan3163"
+ x="87.979683"
+ y="146.8571">OggS</tspan></text>
+ <text
+ id="text3190"
+ y="146.8571"
+ x="587.97968"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="146.8571"
+ x="587.97968"
+ id="tspan3192"
+ sodipodi:role="line">OggS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="487.97971"
+ y="146.8571"
+ id="text3198"><tspan
+ sodipodi:role="line"
+ id="tspan3200"
+ x="487.97971"
+ y="146.8571">OggS</tspan></text>
+ <text
+ id="text3206"
+ y="146.8571"
+ x="387.97971"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="146.8571"
+ x="387.97971"
+ id="tspan3208"
+ sodipodi:role="line">OggS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="287.97971"
+ y="146.8571"
+ id="text3214"><tspan
+ sodipodi:role="line"
+ id="tspan3216"
+ x="287.97971"
+ y="146.8571">OggS</tspan></text>
+ <text
+ id="text3222"
+ y="146.8571"
+ x="187.97968"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="146.8571"
+ x="187.97968"
+ id="tspan3224"
+ sodipodi:role="line">OggS</tspan></text>
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path3372"
+ d="M 70,292.36218 L 70,282.36218 L 30,312.36218 L 70,342.36218 L 70,292.36218 z"
+ style="fill:#5fa3d3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ ry="9.3506489"
+ y="262.36218"
+ x="80"
+ height="80"
+ width="90"
+ id="rect3318"
+ style="fill:#b5cfdf;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#b5cfdf;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3326"
+ width="90"
+ height="80"
+ x="580"
+ y="262.36218"
+ ry="9.3506489" />
+ <rect
+ ry="9.3506489"
+ y="262.36218"
+ x="480"
+ height="80"
+ width="90"
+ id="rect3334"
+ style="fill:#b5cfdf;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#b5cfdf;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3342"
+ width="90"
+ height="80"
+ x="380"
+ y="262.36218"
+ ry="9.3506489" />
+ <rect
+ ry="9.3506489"
+ y="262.36218"
+ x="280"
+ height="80"
+ width="90"
+ id="rect3350"
+ style="fill:#b5cfdf;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#b5cfdf;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3358"
+ width="90"
+ height="80"
+ x="180"
+ y="262.36218"
+ ry="9.3506489" />
+ <rect
+ ry="0.25253814"
+ y="292.36218"
+ x="65"
+ height="40"
+ width="620"
+ id="rect3364"
+ style="fill:#5fa3d3;fill-opacity:1;stroke:none;stroke-width:2.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3374"
+ d="M 680,292.36218 L 680,282.36218 L 720,312.36218 L 680,342.36218 L 680,292.36218 z"
+ style="font-size:24px;fill:#5fa3d3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ ry="0"
+ y="237.36218"
+ x="65"
+ height="20"
+ width="620"
+ id="rect3366"
+ style="fill:#b5cfdf;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path3368"
+ d="M 70,237.36218 L 70,227.36218 L 40,247.36218 L 70,267.36218 L 70,237.36218 z"
+ style="fill:#b5cfdf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ id="path3370"
+ d="M 680,237.36218 L 680,227.36218 L 710,247.36218 L 680,267.36218 L 680,237.36218 z"
+ style="fill:#b5cfdf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ id="text3376"
+ y="257.36218"
+ x="280"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+ xml:space="preserve"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3564"
+ x="280"
+ y="257.36218">elementary physical bitstream B</tspan></text>
+ <text
+ id="text3380"
+ y="327.36218"
+ x="445"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+ xml:space="preserve"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3524"
+ x="445"
+ y="327.36218">logical bitstream B</tspan></text>
+ <text
+ id="text3320"
+ y="282.32013"
+ x="87.943802"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="282.32013"
+ x="87.943802"
+ id="tspan3322"
+ sodipodi:role="line">OggS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="587.94385"
+ y="282.32013"
+ id="text3328"><tspan
+ sodipodi:role="line"
+ id="tspan3330"
+ x="587.94385"
+ y="282.32013">OggS</tspan></text>
+ <text
+ id="text3336"
+ y="282.32013"
+ x="487.94382"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="282.32013"
+ x="487.94382"
+ id="tspan3338"
+ sodipodi:role="line">OggS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="387.94382"
+ y="282.32013"
+ id="text3344"><tspan
+ sodipodi:role="line"
+ id="tspan3346"
+ x="387.94382"
+ y="282.32013">OggS</tspan></text>
+ <text
+ id="text3352"
+ y="282.32013"
+ x="287.94382"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="282.32013"
+ x="287.94382"
+ id="tspan3354"
+ sodipodi:role="line">OggS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="187.9438"
+ y="282.32013"
+ id="text3360"><tspan
+ sodipodi:role="line"
+ id="tspan3362"
+ x="187.9438"
+ y="282.32013">OggS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="444.9722"
+ y="496.02066"
+ id="text3638"><tspan
+ sodipodi:role="line"
+ id="tspan3640"></tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+ d="M 365,352.36218 L 365,402.36218 L 335,392.36218 L 375,432.36218 L 415,392.36218 L 385,402.36218 L 385,352.36218 L 365,352.36218 z"
+ id="path3299" />
+ <rect
+ style="fill:#bbddbb;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3388"
+ width="90"
+ height="80"
+ x="80.166489"
+ y="467.36224"
+ ry="0" />
+ <rect
+ ry="9.3506489"
+ y="467.36224"
+ x="580.1665"
+ height="80"
+ width="90"
+ id="rect3396"
+ style="fill:#b5cfdf;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#bbddbb;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3404"
+ width="89.833496"
+ height="80"
+ x="480.1665"
+ y="467.36224"
+ ry="0"
+ inkscape:export-xdpi="78.239998"
+ inkscape:export-ydpi="78.239998" />
+ <rect
+ ry="9.3506489"
+ y="467.36224"
+ x="380.1665"
+ height="80"
+ width="90"
+ id="rect3412"
+ style="fill:#b5cfdf;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#bbddbb;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3420"
+ width="90"
+ height="80"
+ x="280.1665"
+ y="467.36224"
+ ry="0" />
+ <rect
+ ry="9.3506489"
+ y="467.36224"
+ x="180.16649"
+ height="80"
+ width="90"
+ id="rect3428"
+ style="fill:#b5cfdf;fill-opacity:1;stroke:none;stroke-width:2.70000004999999987;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:#5fd35f;fill-opacity:1;stroke:none;stroke-width:2.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3434"
+ width="615.1665"
+ height="40.000061"
+ x="65"
+ y="497.36218"
+ ry="4.3460864e-06" />
+ <path
+ style="fill:#5fd35f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 70.16649,497.36224 L 70.16649,487.36224 L 30.16649,517.36224 L 70.16649,547.36224 L 70.16649,497.36224 z"
+ id="path3442"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="font-size:24px;fill:#5fd35f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 680.16649,497.36224 L 680.16649,487.36224 L 720.16649,517.36224 L 680.16649,547.36224 L 680.16649,497.36224 z"
+ id="path3444" />
+ <rect
+ style="fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:2.70000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect3436"
+ width="620"
+ height="20"
+ x="65"
+ y="442.36218"
+ ry="0" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 70.16649,442.36224 L 70.16649,432.36224 L 40.16649,452.36224 L 70.16649,472.36224 L 70.16649,442.36224 z"
+ id="path3438" />
+ <path
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 680.16649,442.36224 L 680.16649,432.36224 L 710.16649,452.36224 L 680.16649,472.36224 L 680.16649,442.36224 z"
+ id="path3440" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+ x="300.1665"
+ y="462.36224"
+ id="text3446"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3526"
+ x="300.1665"
+ y="462.36224">multiplexed physical bitstream</tspan></text>
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 175.16649,492.36224 L 175.16649,547.36224"
+ id="path3662" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 275.16649,542.36224 L 275.16649,492.36224"
+ id="path3668" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 375.16649,492.36224 L 375.16649,542.36224"
+ id="path3670" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 475.16649,492.36224 L 475.16649,542.36224"
+ id="path3672" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 575.16649,492.36224 L 575.16649,542.36224"
+ id="path3674" />
+ <path
+ style="fill:#5fa3d3;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 176.84389,517.32564 L 176.84389,497.37512 L 225.20495,497.37512 L 273.566,497.37512 L 273.566,517.32564 L 273.566,537.27615 L 225.20495,537.27615 L 176.84389,537.27615 L 176.84389,517.32564 z"
+ id="path3676" />
+ <path
+ style="fill:#5fa3d3;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 376.79115,517.32564 L 376.79115,497.37512 L 425.1522,497.37512 L 473.51325,497.37512 L 473.51325,517.32564 L 473.51325,537.27615 L 425.1522,537.27615 L 376.79115,537.27615 L 376.79115,517.32564 z"
+ id="path3678" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 575.16649,492.36224 L 575.16649,542.36224"
+ id="path3680" />
+ <path
+ style="fill:#5fa3d3;fill-opacity:1;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 680.18684,542.21496 L 680.18684,537.27615 L 628.5428,537.27615 L 576.89875,537.27615 L 576.89875,517.32564 L 576.89875,497.37512 L 628.5428,497.37512 L 680.18684,497.37512 L 680.18684,492.45006 L 680.18684,487.525 L 700,502.36218 C 710.89722,510.52263 719.81813,517.27102 719.82422,517.3586 C 719.83225,517.47395 684.31753,544.18376 680.64581,546.82378 C 680.20662,547.13956 680.18684,546.94102 680.18684,542.21496 z"
+ id="path3682" />
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="88.110291"
+ y="487.82529"
+ id="text3390"><tspan
+ sodipodi:role="line"
+ id="tspan3392"
+ x="88.110291"
+ y="487.82529">OggS</tspan></text>
+ <text
+ id="text3398"
+ y="487.82529"
+ x="588.11029"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="487.82529"
+ x="588.11029"
+ id="tspan3400"
+ sodipodi:role="line">OggS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="488.11032"
+ y="487.82529"
+ id="text3406"><tspan
+ sodipodi:role="line"
+ id="tspan3408"
+ x="488.11032"
+ y="487.82529">OggS</tspan></text>
+ <text
+ id="text3414"
+ y="487.82529"
+ x="388.11032"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="487.82529"
+ x="388.11032"
+ id="tspan3416"
+ sodipodi:role="line">OggS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="288.11032"
+ y="487.82529"
+ id="text3422"><tspan
+ sodipodi:role="line"
+ id="tspan3424"
+ x="288.11032"
+ y="487.82529">OggS</tspan></text>
+ <text
+ id="text4306"
+ y="487.86862"
+ x="183.07068"
+ style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="487.86862"
+ x="183.07068"
+ id="tspan4308"
+ sodipodi:role="line">OggS</tspan></text>
+ </g>
+</svg>
diff --git a/doc/ogg-multiplex.html b/doc/ogg-multiplex.html
index 41c1481..0674400 100644
--- a/doc/ogg-multiplex.html
+++ b/doc/ogg-multiplex.html
@@ -117,16 +117,17 @@ Streams'.</p>
<h3>Seeking</h3>
-<p>Ogg is designed to use a bisection search to implement exact
-positional seeking rather than building an index; an index requires
-two-pass encoding and as such is not acceptable given the requirement
-for full-featured linear encoding.</p>
-
-<p><i>Even making an index optional then requires an
-application to support multiple methods (bisection search for a
-one-pass stream, indexing for a two-pass stream), which adds no
-additional functionality as bisection search delivers the same
-functionality for both stream types.</i></p>
+<p>Ogg is designed to use an interpolated bisection search to
+implement exact positional seeking. Interpolated bisection search is
+a spec-mandated mechanism.</p>
+
+<p><i>An index may improve objective performance, but it seldom
+improves subjective performance outside of a few high-latency use
+cases and adds no additional functionality as bisection search
+delivers the same functionality for both one- and two-pass stream
+types. For these reasons, use of indexes is discouraged, except in
+cases where an index provides demonstrable and noticeable performance
+improvement.</i></p>
<p>Seek operations are by absolute time; a direct bisection search must
find the exact time position requested. Information in the Ogg
diff --git a/doc/oggstream.html b/doc/oggstream.html
index 485747d..9769d5a 100644
--- a/doc/oggstream.html
+++ b/doc/oggstream.html
@@ -60,11 +60,44 @@ li {
color: #888888;
clear: both;
}
+
+.caption {
+ color: #000000;
+ background-color: #aabbff;
+ margin: 1em;
+ margin-left: 2em;
+ margin-right: 2em;
+ padding: 1em;
+ padding-bottom: 0em;
+ overflow: hidden;
+}
+
+.caption p {
+ clear: none;
+}
+
+.caption img {
+ display: block;
+ margin: 0px;
+ margin-left: auto;
+ margin-right: auto;
+ margin-bottom: 1.5em;
+ background-color: #ffffff;
+ padding: 10px;
+}
+
+#thepage {
+ margin-left: auto;
+ margin-right: auto;
+ width: 840px;
+}
+
</style>
</head>
<body>
+<div id="thepage">
<div id="xiphlogo">
<a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
@@ -72,7 +105,7 @@ li {
<h1>Ogg bitstream overview</h1>
-This document serves as starting point for understanding the design
+<p>This document serves as starting point for understanding the design
and implementation of the Ogg container format. If you're new to Ogg
or merely want a high-level technical overview, start reading here.
Other documents linked from the <a href="index.html">index page</a>
@@ -103,7 +136,8 @@ the Ogg container itself. Metadata is thus compartmentalized and
layered rather than part of a monolithic design, an especially good
idea as no two groups seem able to agree on what a complete or
complete-enough metadata set should be. In this way, the container and
-container implementation are isolated from unnecessary design flux.
+container implementation are isolated from unnecessary metadata design
+flux.
<h3>Streaming</h3>
@@ -172,14 +206,9 @@ is tolerant of gross corruption. Seek operations are neither 'fuzzy' nor
heuristic.
<p>Seeking without use of an index is a major point of the Ogg
-design. There are several reasons why Ogg forgoes an index:
+design. There two primary reasons why Ogg transport forgoes an index:
-<ul>
-
-<li>It must be possible to create an Ogg stream in a single pass, and
-an index requires either two passes to create, or the index must be
-tacked onto the end of a live stream after the stream is finished.
-Both methods run afoul of other design constraints.
+<ol>
<li>An index is only marginally useful in Ogg for the complexity
added; it adds no new functionality and seldom improves performance
@@ -193,7 +222,18 @@ only by building an internal index after reading the entire file
beginning to end. This has been the fate of other containers that
specify optional indexing.
-</ul>
+</ol>
+
+<p>In addition, it must be possible to create an Ogg stream in a
+single pass. Although an optional index can simply be tacked on the
+end of the created stream, some software groups object to
+end-positioned indexes and claim to be unwilling to support indexes
+not located at the stream beginning.
+
+<p><i>All this said, it's become clear that an optional index is a
+demanded feature. For this reason, the <a
+href="http://wiki.xiph.org/Ogg_Index">OggSkeleton now defines a
+proposed index.</a></i>
<h3>Simple multiplexing</h3>
@@ -263,21 +303,21 @@ buffer-ahead hinting.
in an attempt to make the mux and codec layer implementations 'fully
separable'. Things like specific timebase, keyframing strategy, frame
duration, etc, do not appear in the Ogg container. The mux layer is,
-instead, expected to query a codec through a standardized interface,
+instead, expected to query a codec through a centralized interface,
left to the implementation, for this data when it is needed.
<p>Though modern design wisdom usually prefers to predict all possible
needs of current and future codecs then embed these dependencies and
the required metadata into the container itself, this strategy
increases container specification complexity, fragility, and rigidity.
-The mux and codec implementations become more independent, but the
-specifications become less independent. A codec can't do what a
-container hasn't already provided for. New codecs are harder to
-support, and you can do fewer useful things with the ones you've
+The mux and codec code becomes more independent, but the
+specifications become logically less independent. A codec can't do
+what a container hasn't already provided for. Novel codecs are harder
+to support, and you can do fewer useful things with the ones you've
already got (eg, try to make a good splitter without using any codecs.
-You're stuck splitting at keyframes only, or building yet another new
-mechanism into the container layer to mark what frames to skip
-displaying).
+Such a splitter is limited to splitting at keyframes only, or building
+yet another new mechanism into the container layer to mark what frames
+to skip displaying).
<p>Ogg's design goes the opposite direction, where the specification
is to be as simple, easy to understand, and 'proofed' against novel
@@ -293,8 +333,8 @@ declaring the structure and interrelations between multiple media
types in a muxed stream. That is, the Ogg container itself does not
specify data like 'which steam is the subtitle stream?' or 'which
video stream is the primary angle?'. This metadata still exists, but
-is stored in the Ogg container rather than being built into the Ogg
-container. Xiph specifies the 'Skeleton' metadata format for Ogg
+is stored by the Ogg container rather than being built into the Ogg
+container itself. Xiph specifies the 'Skeleton' metadata format for Ogg
streams, but this decoupling of container and stream structure
metadata means it is possible to use Ogg with any metadata
specification without altering the container itself, or without stream
@@ -324,22 +364,52 @@ position.
<h3>Packets, pages, and bitstreams</h3>
-<p>Ogg codecs use <em>packets</em>. Packets are octet payloads of
-raw, compressed data, containing the data needed for a single
+<p>Ogg codecs place raw compressed data into <em>packets</em>.
+Packets are octet payloads containing the data needed for a single
decompressed unit, eg, one video frame. Packets have no maximum size
-and may be zero length. They do not have any high-level structure or
-boundary information; strung together, the unframed packets form a
-<em>logical bitstream</em> of apparently random bytes with no internal
-landmarks.
+and may be zero length. They do not generally have any framing
+information; strung together, the unframed packets form a <em>logical
+bitstream</em> of codec data with no internal landmarks.
+
+<div class="caption">
+ <img src="packets.png">
+
+ <p> Packets of raw codec data are not typically internally framed.
+ When they are strung together into a stream without any container to
+ provide framing, they lose their individual boundaries. Seek and
+ capture are not possible within an unframed stream, and for many
+ codecs with variable length payloads and/or early-packet termination
+ (such as Vorbis), it may become impossible to recover the original
+ frame boundaries even if the stream is scanned linearly from
+ beginning to end.
+
+</div>
<p>Logical bitstream packets are grouped and framed into Ogg pages
along with a unique stream <em>serial number</em> to produce a
<em>physical bitstream</em>. An <em>elementary stream</em> is a
-physical bitstream containing only the pages framing a single logical
-bitstream. Each page is a self contained entity, although a packet may
-be split and encoded across one or more pages. The page decode
-mechanism is designed to recognize, verify and handle single pages at
-a time from the overall bitstream.
+physical bitstream containing only a single logical bitstream. Each
+page is a self contained entity, although a packet may be split and
+encoded across one or more pages. The page decode mechanism is
+designed to recognize, verify and handle single pages at a time from
+the overall bitstream.
+
+<div class="caption">
+ <img src="pages.png">
+
+ <p> The primary purpose of a container is to provide framing for raw
+ packets, marking the packet boundaries so the exact packets can be
+ retrieved for decode later. The container also provides secondary
+ functions such as capture, timestamping, sequencing, stream
+ identification and so on. Not all of these functions are represented in the diagram.
+
+ <p>In the Ogg container, pages do not necessarily contain
+ integer numbers of packets. Packets may span across page boundaries
+ or even multiple pages. This is necessary as pages have a maximum
+ possible size in order to provide capture guarantees, but packet
+ size is unbounded.
+</div>
+
<p><a href="framing.html">Ogg Bitstream Framing</a> specifies
the page format of an Ogg bitstream, the packet coding process
@@ -360,6 +430,14 @@ physical bitstream by taking the pages in order from the physical
bitstream and redirecting them into the appropriate logical decoding
entity.
+<div class="caption">
+ <img src="multiplex1.png">
+
+<p>Multiple media types are mutliplexed into a single Ogg stream by
+interleaving the pages from each elementary physical stream.
+
+</div>
+
<p><a href="ogg-multiplex.html">Ogg Bitstream Multiplexing</a> specifies
proper multiplexing of an Ogg bitstream in detail.
@@ -388,38 +466,9 @@ interleaved in order of the time stamp regardless of stream type.
Both continuous and discontinuous logical streams are used to seek
within a physical stream, however only continuous streams are used to
determine buffering depth; because discontinuous streams are stamped
-by start time, they will always 'fall out' in time when buffering
-tracks only the continuous streams. See 'Examples' for an
-illustration of the buffering mechanism.
-
-<h2>Mapping Requirements</h2>
-
-<p>Each codec is allowed some freedom in deciding how its logical
-bitstream is encapsulated into an Ogg bitstream (even if it is a
-trivial mapping, eg, 'plop the packets in and go'). This is the
-codec's <em>mapping</em>. Ogg imposes a few mapping requirements
-on any codec.
-
-<p>The <a href="framing.html">framing specification</a> defines
-'beginning of stream' and 'end of stream' page markers via a header
-flag (it is possible for a stream to consist of a single page). A
-correct stream always consists of an integer number of pages, an easy
-requirement given the variable size nature of pages.</p>
-
-<p>The first page of an elementary Ogg bitstream consists of a single,
-small 'initial header' packet that must include sufficient information
-to identify the exact CODEC type. From this initial header, the codec
-must also be able to determine its timebase and whether or not it is a
-continuous- or discontinuous-time stream. The initial header must fit
-on a single page. If a codec makes use of auxiliary headers (for
-example, Vorbis uses two auxiliary headers), these headers must follow
-the initial header immediately. The last header finishes its page;
-data begins on a fresh page.
-
-<p>As an example, Ogg Vorbis places the name and revision of the
-Vorbis CODEC, the audio rate and the audio quality into this initial
-header. Comments and detailed codec setup appears in the larger
-auxiliary headers.</p>
+by start time, they will always 'fall out' at the proper time when
+buffering the continuous streams. See 'Examples' for an illustration
+of the buffering mechanism.
<h2>Multiplexing Requirements</h2>
@@ -429,24 +478,24 @@ of multiple elementary streams:
<ol>
-<li> The initial header for each stream appears in sequence, each
+<li><p> The initial header for each stream appears in sequence, each
header on a single page. All initial headers must appear with no
intervening data (no auxiliary header pages or packets, no data pages
or packets). Order of the initial headers is unspecified. The
'beginning of stream' flag is set on each initial header.
-<li> All auxiliary headers for all streams must follow. Order
+<li><p> All auxiliary headers for all streams must follow. Order
is unspecified. The final auxiliary header of each stream must flush
its page.
-<li>Data pages for each stream follow, interleaved in time order.
+<li><p>Data pages for each stream follow, interleaved in time order.
-<li>The final page of each stream sets the 'end of stream' flag.
+<li><p>The final page of each stream sets the 'end of stream' flag.
Unlike initial pages, terminal pages for the logical bitstreams need
not occur contiguously; indeed it may not be possible for them to do so.
</oL>
-<p>Each grouped bitstream must have a unique serial number within the
+<p><p>Each grouped bitstream must have a unique serial number within the
scope of the physical bitstream.</p>
<h3>chaining and multiplexing</h3>
@@ -455,8 +504,59 @@ scope of the physical bitstream.</p>
consecutively. Such a physical bitstream obeys all the rules of both
chained and multiplexed streams. Each link, when unchained, must
stand on its own as a valid physical bitstream. Chained streams do
-not mix; a new segment may not begin until all streams in the
-preceding segment have terminated. </p>
+not mix or interleave; a new segment may not begin until all streams
+in the preceding segment have terminated. </p>
+
+<h2>Codec Mapping Requirements</h2>
+
+<p>Each codec is allowed some freedom in deciding how its logical
+bitstream is encapsulated into an Ogg bitstream (even if it is a
+trivial mapping, eg, 'plop the packets in and go'). This is the
+codec's <em>mapping</em>. Ogg imposes a few mapping requirements
+on any codec.
+
+<ol>
+
+<li><p>The <a href="framing.html">framing specification</a> defines
+'beginning of stream' and 'end of stream' page markers via a header
+flag (it is possible for a stream to consist of a single page). A
+correct stream always consists of an integer number of pages, an easy
+requirement given the variable size nature of pages.</p>
+
+<li><p>The first page of an elementary Ogg bitstream consists of a single,
+small 'initial header' packet that must include sufficient information
+to identify the exact CODEC type. From this initial header, the codec
+must also be able to determine its timebase and whether or not it is a
+continuous- or discontinuous-time stream. The initial header must fit
+on a single page. If a codec makes use of auxiliary headers (for
+example, Vorbis uses two auxiliary headers), these headers must follow
+the initial header immediately. The last header finishes its page;
+data begins on a fresh page.
+
+<p><p>As an example, Ogg Vorbis places the name and revision of the
+Vorbis CODEC, the audio rate and the audio quality into this initial
+header. Vorbis comments and detailed codec setup appears in the larger
+auxiliary headers.</p>
+
+<li><p>Granule positions must be translatable to an exact absolute
+time value. As described above, the mux layer is permitted to query a
+codec or codec stub plugin to perform this mapping. It is not
+necessary for an absolute time to be mappable into a single unique
+granule position value.
+
+<li><p>Codecs are not required to use a fixed duration-per-packet (for
+example, Vorbis does not). the mux layer is permitted to query a
+codec or codec stub plugin for the time duration of a packet.
+
+<li><p>Although an absolute time need not be translatable to a unique
+granule position, a codec must be able to determine the unique granule
+position of the current packet using the granule position of a
+preceding packet.
+
+<li><p>Packets and pages must be arranged in ascending
+granule-position and time order.
+
+</ol>
<h2>Examples</h2>
@@ -489,5 +589,6 @@ sequence order.</li>
These pages &copy; 1994 - 2010 Xiph.Org. All rights reserved.
</div>
+</div>
</body>
</html>
diff --git a/doc/packets.png b/doc/packets.png
new file mode 100644
index 0000000..917b6c1
--- /dev/null
+++ b/doc/packets.png
Binary files differ
diff --git a/doc/packets.svg b/doc/packets.svg
new file mode 100644
index 0000000..6b426c7
--- /dev/null
+++ b/doc/packets.svg
@@ -0,0 +1,876 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="packets.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/xiphmont/MotherfishSVN/ogg/doc/packets.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98994949"
+ inkscape:cx="396.07243"
+ inkscape:cy="782.406"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1367"
+ inkscape:window-height="979"
+ inkscape:window-x="1955"
+ inkscape:window-y="25">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2383" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="under"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:#5fd35f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3483"
+ width="695"
+ height="90"
+ x="20"
+ y="222.36218" />
+ </g>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="display:inline">
+ <g
+ id="g3301">
+ <rect
+ y="32.362183"
+ x="20"
+ height="90"
+ width="30"
+ id="rect2385"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="55"
+ height="90"
+ width="30"
+ id="rect2387"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="90"
+ height="90"
+ width="40"
+ id="rect2389"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="135"
+ height="90"
+ width="20"
+ id="rect2391"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="160"
+ height="90"
+ width="40"
+ id="rect2393"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="205"
+ height="90"
+ width="30"
+ id="rect2395"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="240"
+ height="90"
+ width="25"
+ id="rect2397"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="270"
+ height="90"
+ width="40"
+ id="rect2399"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="315"
+ height="90"
+ width="35"
+ id="rect2401"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="355"
+ height="90"
+ width="25"
+ id="rect2403"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="385"
+ height="90"
+ width="30"
+ id="rect2407"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="420"
+ height="90"
+ width="30"
+ id="rect2409"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="455"
+ height="90"
+ width="35"
+ id="rect2411"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="495"
+ height="90"
+ width="35"
+ id="rect2413"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="535"
+ height="90"
+ width="30"
+ id="rect2415"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="570"
+ height="90"
+ width="25"
+ id="rect2417"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="600"
+ height="90"
+ width="40"
+ id="rect2419"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="645"
+ height="90"
+ width="30"
+ id="rect2421"
+ style="fill:#5fd35f" />
+ <rect
+ y="32.362183"
+ x="680"
+ height="90"
+ width="35"
+ id="rect2423"
+ style="fill:#5fd35f" />
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text2445"
+ y="40"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="40"
+ x="-107.36218"
+ id="tspan2447"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="75"
+ id="text2449"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan2451"
+ x="-107.36218"
+ y="75">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text2453"
+ y="115"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="115"
+ x="-107.36218"
+ id="tspan2455"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="150"
+ id="text2457"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan2459"
+ x="-107.36218"
+ y="150">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text2461"
+ y="185"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="185"
+ x="-107.36218"
+ id="tspan2463"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="225"
+ id="text2465"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan2467"
+ x="-107.36218"
+ y="225">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text2469"
+ y="258.03046"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="258.03046"
+ x="-107.36218"
+ id="tspan2471"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="295"
+ id="text2473"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan2475"
+ x="-107.36218"
+ y="295">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text2477"
+ y="338.48477"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="338.48477"
+ x="-107.36218"
+ id="tspan2479"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="373.48477"
+ id="text2481"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan2483"
+ x="-107.36218"
+ y="373.48477">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text2485"
+ y="405"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="405"
+ x="-107.36218"
+ id="tspan2487"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="440"
+ id="text2489"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan2491"
+ x="-107.36218"
+ y="440">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text2493"
+ y="478.03046"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="478.03046"
+ x="-107.36218"
+ id="tspan2495"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="518.03046"
+ id="text2497"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan2499"
+ x="-107.36218"
+ y="518.03046">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text2501"
+ y="555"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="555"
+ x="-107.36218"
+ id="tspan2503"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="588.48474"
+ id="text2505"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan2507"
+ x="-107.36218"
+ y="588.48474">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text2509"
+ y="625"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="625"
+ x="-107.36218"
+ id="tspan2511"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="665"
+ id="text2513"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan2515"
+ x="-107.36218"
+ y="665">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text2517"
+ y="702.47461"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="702.47461"
+ x="-107.36218"
+ id="tspan2519"
+ sodipodi:role="line">packet</tspan></text>
+ </g>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 360,132.36218 L 360,182.36218 L 330,172.36218 L 370,212.36218 L 410,172.36218 L 380,182.36218 L 380,132.36218 L 360,132.36218 z"
+ id="path3299" />
+ <g
+ id="g3360"
+ transform="translate(0,190)">
+ <rect
+ style="fill:#5fd35f;stroke:none"
+ id="rect3362"
+ width="30"
+ height="90"
+ x="20"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3364"
+ width="30"
+ height="90"
+ x="55"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3366"
+ width="40"
+ height="90"
+ x="90"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3368"
+ width="20"
+ height="90"
+ x="135"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3370"
+ width="40"
+ height="90"
+ x="160"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3372"
+ width="30"
+ height="90"
+ x="205"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3374"
+ width="25"
+ height="90"
+ x="240"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3376"
+ width="40"
+ height="90"
+ x="270"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3378"
+ width="35"
+ height="90"
+ x="315"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3380"
+ width="25"
+ height="90"
+ x="355"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3382"
+ width="30"
+ height="90"
+ x="385"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3384"
+ width="30"
+ height="90"
+ x="420"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3386"
+ width="35"
+ height="90"
+ x="455"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3388"
+ width="35"
+ height="90"
+ x="495"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3390"
+ width="30"
+ height="90"
+ x="535"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3392"
+ width="25"
+ height="90"
+ x="570"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3394"
+ width="40"
+ height="90"
+ x="600"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3396"
+ width="30"
+ height="90"
+ x="645"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3398"
+ width="35"
+ height="90"
+ x="680"
+ y="32.362183" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="40"
+ id="text3400"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3402"
+ x="-107.36218"
+ y="40">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3404"
+ y="75"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="75"
+ x="-107.36218"
+ id="tspan3406"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="115"
+ id="text3408"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3410"
+ x="-107.36218"
+ y="115">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3412"
+ y="150"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="150"
+ x="-107.36218"
+ id="tspan3414"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="185"
+ id="text3416"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3418"
+ x="-107.36218"
+ y="185">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3420"
+ y="225"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="225"
+ x="-107.36218"
+ id="tspan3422"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="258.03046"
+ id="text3424"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3426"
+ x="-107.36218"
+ y="258.03046">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3428"
+ y="295"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="295"
+ x="-107.36218"
+ id="tspan3430"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="338.48477"
+ id="text3432"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3434"
+ x="-107.36218"
+ y="338.48477">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3436"
+ y="373.48477"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="373.48477"
+ x="-107.36218"
+ id="tspan3438"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="405"
+ id="text3440"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3442"
+ x="-107.36218"
+ y="405">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3444"
+ y="440"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="440"
+ x="-107.36218"
+ id="tspan3446"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="478.03046"
+ id="text3448"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3450"
+ x="-107.36218"
+ y="478.03046">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3452"
+ y="518.03046"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="518.03046"
+ x="-107.36218"
+ id="tspan3454"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="555"
+ id="text3456"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3458"
+ x="-107.36218"
+ y="555">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3460"
+ y="588.48474"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="588.48474"
+ x="-107.36218"
+ id="tspan3462"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="625"
+ id="text3464"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3466"
+ x="-107.36218"
+ y="625">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3468"
+ y="665"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="665"
+ x="-107.36218"
+ id="tspan3470"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="702.47461"
+ id="text3472"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3474"
+ x="-107.36218"
+ y="702.47461">packet</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="540"
+ y="152.36218"
+ id="text13982"><tspan
+ sodipodi:role="line"
+ id="tspan13984"
+ x="540"
+ y="152.36218">packet stream</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="390"
+ y="342.36218"
+ id="text13986"><tspan
+ sodipodi:role="line"
+ id="tspan13988"
+ x="390"
+ y="342.36218">unframed logical bitstream</tspan></text>
+ </g>
+</svg>
diff --git a/doc/pages.png b/doc/pages.png
new file mode 100644
index 0000000..b4b431e
--- /dev/null
+++ b/doc/pages.png
Binary files differ
diff --git a/doc/pages.svg b/doc/pages.svg
new file mode 100644
index 0000000..436849c
--- /dev/null
+++ b/doc/pages.svg
@@ -0,0 +1,1219 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="pages.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/xiphmont/MotherfishSVN/ogg/doc/pages.png"
+ inkscape:export-xdpi="69"
+ inkscape:export-ydpi="69">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Lend"
+ style="overflow:visible;">
+ <path
+ id="path4073"
+ style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow1Lend"
+ style="overflow:visible;">
+ <path
+ id="path4055"
+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+ transform="scale(0.8) rotate(180) translate(12.5,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Mend"
+ style="overflow:visible;">
+ <path
+ id="path4079"
+ style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(0.6) rotate(180) translate(0,0)" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="3.959798"
+ inkscape:cx="696.8735"
+ inkscape:cy="856.51679"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="2018"
+ inkscape:window-height="979"
+ inkscape:window-x="1682"
+ inkscape:window-y="27">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2383" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="underunder"
+ style="display:inline">
+ <path
+ style="opacity:1;fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 710,32.362183 L 710,22.362183 L 740,42.362183 L 710,62.362183 L 710,52.362183 L 20,52.362183 L 20,62.362183 L -10,42.362183 L 20,22.362183 C 20,25.695516 20,29.028849 20,32.362183"
+ id="path16024"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 20,22.362183 L 20,32.362183 L 710,32.362183"
+ id="path16028" />
+ <path
+ id="path16032"
+ d="M 30,402.36218 L 30,412.36218 L 720,412.36218"
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="page"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.42414129;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3508"
+ width="209.9294"
+ height="310.07443"
+ x="30.035299"
+ y="62.39748" />
+ <rect
+ style="opacity:1;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.42415214;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3512"
+ width="219.9294"
+ height="310.0744"
+ x="250.03531"
+ y="62.397488" />
+ <rect
+ style="font-size:10px;opacity:1;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.42415214;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3514"
+ width="219.9294"
+ height="310.0744"
+ x="480.03531"
+ y="62.397488" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="40"
+ y="92.362183"
+ id="text3516"><tspan
+ sodipodi:role="line"
+ id="tspan3518"
+ x="40"
+ y="92.362183">OggS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="260"
+ y="92.362183"
+ id="text3520"><tspan
+ sodipodi:role="line"
+ id="tspan3522"
+ x="260"
+ y="92.362183">OggS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+ x="490"
+ y="92.362183"
+ id="text3524"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan16046"
+ x="490"
+ y="92.362183">OggS</tspan></text>
+ <g
+ id="g7967">
+ <path
+ d="M 230,89.862183 A 15,17.5 0 1 1 200,89.862183 A 15,17.5 0 1 1 230,89.862183 z"
+ sodipodi:ry="17.5"
+ sodipodi:rx="15"
+ sodipodi:cy="89.862183"
+ sodipodi:cx="215"
+ id="path3532"
+ style="fill:none;stroke:none;stroke-width:1.35354328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.1428314,0,0,1.1442126,-39.376676,-32.673847)"
+ d="M 240,104.86218 A 17.5,17.5 0 1 1 205,104.86218 A 17.5,17.5 0 1 1 240,104.86218 z"
+ sodipodi:ry="17.5"
+ sodipodi:rx="17.5"
+ sodipodi:cy="104.86218"
+ sodipodi:cx="222.5"
+ id="path3536"
+ style="fill:none;stroke:#000000;stroke-width:1.35354328;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ id="path4829"
+ d="M 215,87.362183 L 235,87.362183"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-opacity:1" />
+ <path
+ id="path7438"
+ d="M 215,87.362183 L 215,72.362183"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-opacity:1" />
+ </g>
+ <path
+ d="M 230,89.862183 A 15,17.5 0 1 1 200,89.862183 A 15,17.5 0 1 1 230,89.862183 z"
+ sodipodi:ry="17.5"
+ sodipodi:rx="15"
+ sodipodi:cy="89.862183"
+ sodipodi:cx="215"
+ id="path7975"
+ style="fill:none;stroke:none;stroke-width:1.35354328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc"
+ transform="translate(230.09714,5.1399003e-2)" />
+ <path
+ transform="matrix(1.1428314,0,0,1.1442126,190.72046,-32.622448)"
+ d="M 240,104.86218 A 17.5,17.5 0 1 1 205,104.86218 A 17.5,17.5 0 1 1 240,104.86218 z"
+ sodipodi:ry="17.5"
+ sodipodi:rx="17.5"
+ sodipodi:cy="104.86218"
+ sodipodi:cx="222.5"
+ id="path7977"
+ style="fill:none;stroke:#000000;stroke-width:1.35354328;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ id="path7979"
+ d="M 445.09714,87.413582 L 460,97.362183"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-opacity:1"
+ sodipodi:nodetypes="cc" />
+ <path
+ id="path7981"
+ d="M 445.09714,87.413582 L 445.09714,72.413582"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-opacity:1" />
+ <path
+ sodipodi:type="arc"
+ style="fill:none;stroke:none;stroke-width:1.35354328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path7985"
+ sodipodi:cx="215"
+ sodipodi:cy="89.862183"
+ sodipodi:rx="15"
+ sodipodi:ry="17.5"
+ d="M 230,89.862183 A 15,17.5 0 1 1 200,89.862183 A 15,17.5 0 1 1 230,89.862183 z"
+ transform="translate(460.09714,5.1399003e-2)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:none;stroke:#000000;stroke-width:1.35354328;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path7987"
+ sodipodi:cx="222.5"
+ sodipodi:cy="104.86218"
+ sodipodi:rx="17.5"
+ sodipodi:ry="17.5"
+ d="M 240,104.86218 A 17.5,17.5 0 1 1 205,104.86218 A 17.5,17.5 0 1 1 240,104.86218 z"
+ transform="matrix(1.1428314,0,0,1.1442126,420.72046,-32.622448)" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-opacity:1"
+ d="M 675.09714,87.413582 L 682.97969,104.38249"
+ id="path7989"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-opacity:1"
+ d="M 675.09714,87.413582 L 675.09714,72.413582"
+ id="path7991" />
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="154.55334"
+ y="92.212189"
+ id="text8001"><tspan
+ sodipodi:role="line"
+ id="tspan8003"
+ x="154.55334"
+ y="92.212189">23</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="375.77676"
+ y="92.717262"
+ id="text8005"><tspan
+ sodipodi:role="line"
+ id="tspan8007"
+ x="375.77676"
+ y="92.717262">24</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="610"
+ y="92.362183"
+ id="text8009"><tspan
+ sodipodi:role="line"
+ id="tspan8011"
+ x="610"
+ y="92.362183">25</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:144px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-48.992397"
+ y="284.64624"
+ id="text8013"><tspan
+ sodipodi:role="line"
+ id="tspan8015"
+ x="-48.992397"
+ y="284.64624" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:72px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-50"
+ y="272.36218"
+ id="text8021"><tspan
+ sodipodi:role="line"
+ id="tspan8023"
+ x="-50"
+ y="272.36218">...</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:72px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="720"
+ y="272.36218"
+ id="text8025"><tspan
+ sodipodi:role="line"
+ id="tspan8027"
+ x="720"
+ y="272.36218">...</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="480"
+ y="52.362183"
+ id="text14422"><tspan
+ sodipodi:role="line"
+ id="tspan14424"
+ x="480"
+ y="52.362183">physical bitstream</tspan></text>
+ <path
+ sodipodi:nodetypes="ccccccccc"
+ id="path16030"
+ d="M 710,322.36218 L 710,312.36218 L 740,332.36218 L 710,352.36218 L 710,342.36218 L 20,342.36218 L 20,352.36218 L -10,332.36218 L 20,312.36218 C 20,315.69552 20,319.02885 20,322.36218"
+ style="opacity:1;fill:#5fd35f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="under"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:#5fd35f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3483"
+ width="695"
+ height="90"
+ x="20"
+ y="222.36218" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 235,312.36218 L 235,222.36218"
+ id="path13403" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 200,312.36218 L 200,222.36218"
+ id="path13405" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 160,312.36218 L 160,222.36218"
+ id="path13407" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 130,222.36218 L 130,312.36218"
+ id="path13411" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 90,312.36218 L 90,222.36218"
+ id="path13413" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 50,312.36218 L 50,222.36218"
+ id="path13415" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 200,127.36218 L 50,127.36218 C 50,149.02885 50,170.69552 50,192.36218 C 50,200.69552 50,214.02885 50,222.36218"
+ id="path9694"
+ sodipodi:nodetypes="ccsc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 200,137.36218 L 90,137.36218 C 90,159.02885 90,180.69552 90,202.36218 C 90,207.36218 90,217.36218 90,222.36218"
+ id="path10223"
+ sodipodi:nodetypes="ccsc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 200,147.36218 L 130,147.36218 C 130,169.02885 130,190.69552 130,212.36218 C 130,214.02885 130,220.69552 130,222.36218"
+ id="path10752"
+ sodipodi:nodetypes="ccsc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 200,157.36218 L 160,157.36218 L 160,222.36218"
+ id="path11283"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 200,167.36218 L 175,167.36218"
+ id="path11812"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 175,167.36218 L 175,207.36218 C 175,207.36218 185,207.36218 185,207.36218 C 190,207.36218 195,207.36218 200,207.36218 C 200,210.69538 200,219.02898 200,222.36218"
+ id="path11814"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 230,187.36218 L 240,187.36218"
+ id="path12345" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 200,177.36218 L 185,177.36218 C 185,185.69551 185,194.02885 185,202.36218 C 185,202.36218 217.21399,202.36218 220,202.36218 C 225,202.36218 230,202.36218 235,202.36218 C 235,207.36218 235,217.36218 235,222.36218"
+ id="path12874"
+ sodipodi:nodetypes="cccscc" />
+ <g
+ id="g2739"
+ transform="translate(0.341629,-3.4065247e-2)">
+ <rect
+ y="122.39625"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect8035"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="132.46574"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect8037"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="142.53523"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect8039"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="152.60472"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect8041"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="162.67421"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect8043"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="172.7437"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect8045"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="182.81319"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect8047"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13433"
+ width="29.765936"
+ height="10.06949"
+ x="199.89244"
+ y="142.53523" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13437"
+ width="29.765936"
+ height="10.06949"
+ x="199.89244"
+ y="162.67421" />
+ <g
+ id="g2675">
+ <rect
+ y="122.39625"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect13429"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="132.46574"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect13431"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="152.60472"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect13435"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="172.7437"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect13439"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="182.81319"
+ x="199.89244"
+ height="10.06949"
+ width="29.765936"
+ id="rect13441"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+ <path
+ id="path13443"
+ d="M 230,187.36218 L 240,187.36218"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ sodipodi:nodetypes="ccsc"
+ id="path13492"
+ d="M 430.10756,126.84169 L 270,127.36219 C 270,149.02886 270,170.69553 270,192.36219 C 270,200.69553 270,214.02886 270,222.36219"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ sodipodi:nodetypes="ccsc"
+ id="path13494"
+ d="M 430.10756,136.84169 L 310,137.36219 C 310,159.02886 310,180.69553 310,202.36219 C 310,207.36219 310,217.36219 310,222.36219"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ sodipodi:nodetypes="ccsc"
+ id="path13496"
+ d="M 430.10756,146.84169 L 355,147.36219 C 355,169.02886 355,190.69553 355,212.36219 C 355,214.02886 355,220.69553 355,222.36219"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path13498"
+ d="M 430.10756,156.84169 L 380,157.36219 L 380,222.36219"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path13500"
+ d="M 430.10756,166.84169 L 405.10756,166.84169"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path13502"
+ d="M 405.10756,166.84169 L 405,207.36219 C 405,207.36219 405,207.36219 405,207.36219 C 410,207.36219 415,207.36219 420,207.36219 C 420,212.36219 420,219.02899 420,222.36219"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ id="path13520"
+ d="M 460.10756,186.84169 L 470.10756,186.84169"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ sodipodi:nodetypes="cccscc"
+ id="path13522"
+ d="M 430.10756,176.84169 L 415.10756,176.84169 C 415.10756,185.17502 415,194.02886 415,202.36219 C 415,202.36219 432.21399,202.36219 435,202.36219 C 440,202.36219 445,202.36219 450,202.36219 C 450,207.36219 450,217.36219 450,222.36219"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <g
+ id="g2723"
+ transform="translate(0.2340698,0.4864197)">
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13506"
+ width="29.765936"
+ height="10.06949"
+ x="430"
+ y="121.87576" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13508"
+ width="29.765936"
+ height="10.06949"
+ x="430"
+ y="131.94525" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13510"
+ width="29.765936"
+ height="10.06949"
+ x="430"
+ y="142.01474" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13512"
+ width="29.765936"
+ height="10.06949"
+ x="430"
+ y="152.08423" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13514"
+ width="29.765936"
+ height="10.06949"
+ x="430"
+ y="162.15372" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13516"
+ width="29.765936"
+ height="10.06949"
+ x="430"
+ y="172.22321" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13518"
+ width="29.765936"
+ height="10.06949"
+ x="430"
+ y="182.29269" />
+ <rect
+ y="121.87576"
+ x="430"
+ height="10.06949"
+ width="29.765936"
+ id="rect13526"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="131.94525"
+ x="430"
+ height="10.06949"
+ width="29.765936"
+ id="rect13528"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="142.01474"
+ x="430"
+ height="10.06949"
+ width="29.765936"
+ id="rect13530"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="152.08423"
+ x="430"
+ height="10.06949"
+ width="29.765936"
+ id="rect13532"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="162.15372"
+ x="430"
+ height="10.06949"
+ width="29.765936"
+ id="rect13534"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="172.22321"
+ x="430"
+ height="10.06949"
+ width="29.765936"
+ id="rect13536"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="182.29269"
+ x="430"
+ height="10.06949"
+ width="29.765936"
+ id="rect13538"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 460.10756,186.84169 L 470.10756,186.84169"
+ id="path13540" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 660,127.36218 L 495,127.36218 C 495,149.02885 495,170.69552 495,192.36218 C 495,200.69552 495,214.02885 495,222.36218"
+ id="path13544"
+ sodipodi:nodetypes="ccsc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 660,137.36218 L 530,137.36218 C 530,159.02885 530,180.69552 530,202.36218 C 530,207.36218 530,217.36218 530,222.36218"
+ id="path13546"
+ sodipodi:nodetypes="ccsc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 660,147.36218 L 570,147.36218 C 570,169.02885 570,190.69552 570,212.36218 C 570,214.02885 570,220.69552 570,222.36218"
+ id="path13548"
+ sodipodi:nodetypes="ccsc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 660,157.36218 L 595,157.36218 L 595,222.36218"
+ id="path13550"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 660,167.36218 L 635,167.36218"
+ id="path13552"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 635,167.36218 L 635,207.36218 C 635,207.36218 640,207.36218 640,207.36218 C 645,207.36218 640,207.36218 645,207.36218 C 645,210.69538 645,219.02898 645,222.36218"
+ id="path13554"
+ sodipodi:nodetypes="ccccc" />
+ <g
+ id="g2797"
+ transform="translate(0.3416138,-3.4065247e-2)">
+ <rect
+ y="122.39625"
+ x="659.89246"
+ height="10.06949"
+ width="29.765936"
+ id="rect13558"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="132.46574"
+ x="659.89246"
+ height="10.06949"
+ width="29.765936"
+ id="rect13560"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="142.53523"
+ x="659.89246"
+ height="10.06949"
+ width="29.765936"
+ id="rect13562"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="152.60472"
+ x="659.89246"
+ height="10.06949"
+ width="29.765936"
+ id="rect13564"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="162.67421"
+ x="659.89246"
+ height="10.06949"
+ width="29.765936"
+ id="rect13566"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="172.7437"
+ x="659.89246"
+ height="10.06949"
+ width="29.765936"
+ id="rect13568"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="182.81319"
+ x="659.89246"
+ height="10.06949"
+ width="29.765936"
+ id="rect13570"
+ style="fill:none;stroke:#000000;stroke-width:1.16799998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 690,187.36218 L 700,187.36218"
+ id="path13572" />
+ <path
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 660,177.36218 L 645,177.36218 C 645,185.69551 645,194.02885 645,202.36218 C 645,202.36218 662.21399,202.36218 665,202.36218 C 670,202.36218 670,202.36218 675,202.36218 C 675,207.36218 675,217.36218 675,222.36218"
+ id="path13574"
+ sodipodi:nodetypes="cccscc" />
+ <path
+ id="path13592"
+ d="M 690,187.36218 L 700,187.36218"
+ style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 270,312.36218 L 270,222.36218"
+ id="path13598" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 310,312.36218 L 310,222.36218"
+ id="path13600" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 355,312.36218 L 355,222.36218"
+ id="path13602" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 380,312.36218 L 380,222.36218"
+ id="path13604" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 420,312.36218 L 420,222.36218"
+ id="path13606" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 450,312.36218 L 450,222.36218"
+ id="path13608" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 495,312.36218 L 495,222.36218"
+ id="path13610" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 530,312.36218 L 530,222.36218"
+ id="path13612" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 570,312.36218 L 570,222.36218"
+ id="path13614" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 595,312.36218 L 595,222.36218"
+ id="path13616" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 645,312.36218 L 645,222.36218"
+ id="path13618" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 675,222.36218 L 675,312.36218"
+ id="path13620" />
+ <text
+ xml:space="preserve"
+ style="font-size:24px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="420"
+ y="342.36218"
+ id="text14418"><tspan
+ sodipodi:role="line"
+ id="tspan14420"
+ x="420"
+ y="342.36218">framed logical bitstream</tspan></text>
+ </g>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="display:inline">
+ <g
+ id="g3360"
+ transform="translate(0,190)">
+ <rect
+ style="fill:#5fd35f;stroke:none"
+ id="rect3362"
+ width="30"
+ height="90"
+ x="20"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3364"
+ width="30"
+ height="90"
+ x="55"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3366"
+ width="40"
+ height="90"
+ x="90"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3368"
+ width="20"
+ height="90"
+ x="135"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3370"
+ width="40"
+ height="90"
+ x="160"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3372"
+ width="30"
+ height="90"
+ x="205"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3374"
+ width="25"
+ height="90"
+ x="240"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3376"
+ width="40"
+ height="90"
+ x="270"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3378"
+ width="35"
+ height="90"
+ x="315"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3380"
+ width="25"
+ height="90"
+ x="355"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3382"
+ width="30"
+ height="90"
+ x="385"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3384"
+ width="30"
+ height="90"
+ x="420"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3386"
+ width="35"
+ height="90"
+ x="455"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3388"
+ width="35"
+ height="90"
+ x="495"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3390"
+ width="30"
+ height="90"
+ x="535"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3392"
+ width="25"
+ height="90"
+ x="570"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3394"
+ width="40"
+ height="90"
+ x="600"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3396"
+ width="30"
+ height="90"
+ x="645"
+ y="32.362183" />
+ <rect
+ style="fill:#5fd35f"
+ id="rect3398"
+ width="35"
+ height="90"
+ x="680"
+ y="32.362183" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="40"
+ id="text3400"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3402"
+ x="-107.36218"
+ y="40">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3404"
+ y="75"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="75"
+ x="-107.36218"
+ id="tspan3406"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="115"
+ id="text3408"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3410"
+ x="-107.36218"
+ y="115">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3412"
+ y="150"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="150"
+ x="-107.36218"
+ id="tspan3414"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="185"
+ id="text3416"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3418"
+ x="-107.36218"
+ y="185">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3420"
+ y="225"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="225"
+ x="-107.36218"
+ id="tspan3422"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="258.03046"
+ id="text3424"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3426"
+ x="-107.36218"
+ y="258.03046">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3428"
+ y="295"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="295"
+ x="-107.36218"
+ id="tspan3430"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="338.48477"
+ id="text3432"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3434"
+ x="-107.36218"
+ y="338.48477">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3436"
+ y="373.48477"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="373.48477"
+ x="-107.36218"
+ id="tspan3438"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="405"
+ id="text3440"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3442"
+ x="-107.36218"
+ y="405">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3444"
+ y="440"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="440"
+ x="-107.36218"
+ id="tspan3446"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="478.03046"
+ id="text3448"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3450"
+ x="-107.36218"
+ y="478.03046">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3452"
+ y="518.03046"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="518.03046"
+ x="-107.36218"
+ id="tspan3454"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="555"
+ id="text3456"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3458"
+ x="-107.36218"
+ y="555">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3460"
+ y="588.48474"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="588.48474"
+ x="-107.36218"
+ id="tspan3462"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="625"
+ id="text3464"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3466"
+ x="-107.36218"
+ y="625">packet</tspan></text>
+ <text
+ inkscape:transform-center-y="21.605011"
+ inkscape:transform-center-x="-6.0662994"
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text3468"
+ y="665"
+ x="-107.36218"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="665"
+ x="-107.36218"
+ id="tspan3470"
+ sodipodi:role="line">packet</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+ x="-107.36218"
+ y="702.47461"
+ id="text3472"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-6.0662994"
+ inkscape:transform-center-y="21.605011"><tspan
+ sodipodi:role="line"
+ id="tspan3474"
+ x="-107.36218"
+ y="702.47461">packet</tspan></text>
+ </g>
+ </g>
+</svg>
diff --git a/doc/release.txt b/doc/release.txt
new file mode 100644
index 0000000..f72985f
--- /dev/null
+++ b/doc/release.txt
@@ -0,0 +1,29 @@
+= Release checklist =
+
+Source release:
+
+- Update CHANGES with notable specifics.
+- Update version and LIB_* API soname suffix in configure.ac.
+ - If the source code changed, incremement REVISION.
+ - If interfaces changed, increment CURRENT and zero REVISION.
+ - If interfaces were added, increment AGE.
+ - If interfaces were removed, set AGE to zero.
+- Update the version and release date in doc/libogg/*.html.
+ - `make -C doc/libogg update-doc-version`
+- Check for uncommitted changes to master.
+- Tag the release commit with 'git tag -s vN.M'.
+ - Include release notes in the tag annotation.
+- Verify 'make distcheck' produces a tarball with the desired name.
+- Push tag to public repo.
+- Upload source package 'libogg-${version}.tar.gz' et al.
+ to the website and verify file permissions.
+- Update checksum files on website.
+- Update links on <https://www.opus-codec.org/downloads/>.
+- Add a copy of the documentation to <https://xiph.org/ogg/docs/>
+ and update the links.
+
+Releases are committed to https://svn.xiph.org/releases/ogg/
+which propagates to downloads.xiph.org.
+
+Release packages should also be manually attached to the corresponding
+tag on the github mirror https://github.com/xiph/ogg/releases
diff --git a/doc/rfc3534.txt b/doc/rfc3534.txt
new file mode 100644
index 0000000..840f1ec
--- /dev/null
+++ b/doc/rfc3534.txt
@@ -0,0 +1,339 @@
+
+
+
+
+
+
+Network Working Group L. Walleij
+Request for Comments: 3534 The Ogg Vorbis Community
+Category: Standards Track May 2003
+
+
+ The application/ogg Media Type
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+Abstract
+
+ The Ogg Bitstream Format aims at becoming a general, freely-available
+ standard for transporting multimedia content across computing
+ platforms and networks. The intention of this document is to define
+ the MIME media type application/ogg to refer to this kind of content
+ when transported across the Internet. It is the intention of the Ogg
+ Bitstream Format developers that it be usable without intellectual
+ property concerns.
+
+Conventions used in this Document
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+ document are to be interpreted as described in RFC 2119 [2].
+
+1. The Ogg Bitstream Format
+
+ The Ogg Bitstream format has been developed as a part of a larger
+ project aimed at creating a set of components for the coding and
+ decoding of multimedia content (codecs) which are to be freely
+ available and freely re-implementable both in software and in
+ hardware for the computing community at large, including the Internet
+ community.
+
+ Raw packets from these codecs may be used directly by transport
+ mechanisms that provide their own framing and packet-separation
+ mechanisms (such as UDP datagrams).
+
+
+
+
+Walleij Standards Track [Page 1]
+
+RFC 3534 The application/ogg Media Type May 2003
+
+
+ One such framing and content-separation mechanism is the real-time
+ transport protocol (RTP). RTP allows the streaming of synchronous
+ lossy data for broadcasting and similar purposes. If this function
+ is desired then a separate RTP wrapping mechanism should be used. A
+ wrapping mechanism is currently under development.
+
+ For stream based storage (such as files) and transport (such as TCP
+ streams or pipes), Ogg codecs use the Ogg Bitstream Format to provide
+ framing/sync, sync recapture after error, landmarks during seeking,
+ and enough information to properly separate data back into packets at
+ the original packet boundaries without relying on decoding to find
+ packet boundaries. The application/ogg MIME type refers to this kind
+ of bitstreams, when no further knowledge of the bitstream content
+ exists.
+
+ The bitstream format in itself is documented in [1].
+
+2. Registration Information
+
+ To: ietf-types@iana.org
+
+ Subject: Registration of MIME media type application/ogg
+
+ MIME media type name: application
+
+ MIME subtype name: ogg
+
+ Required parameters: none
+
+ Optional parameters: none
+
+ Encoding Considerations:
+
+ The Ogg bitstream format is binary data, and must be encoded for
+ non-binary transport; the Base64 encoding is suitable for Email.
+ Binary encoding could also be used.
+
+ Security Considerations:
+
+ As the Ogg bitstream file is a container format and only a carrier of
+ content (such as Vorbis audio) with a very rigid definition (see
+ [1]), this format in itself is not more vulnerable than any other
+ content framing mechanism. The main security consideration for the
+ receiving application is to ensure that manipulated packages can not
+ cause buffer overflows and the like. It is possible to encapsulate
+ even executable content in the bitstream, so for such uses additional
+ security considerations must be taken.
+
+
+
+
+Walleij Standards Track [Page 2]
+
+RFC 3534 The application/ogg Media Type May 2003
+
+
+ Ogg bitstream files are not signed or encrypted using any applicable
+ encryption schemes. External security mechanisms must be added if
+ content confidentiality and authenticity is to be achieved.
+
+ Interoperability considerations:
+
+ The Ogg bitstream format has proved to be widely implementable across
+ different computing platforms. A broadly portable reference
+ implementation is available under a BSD license.
+
+ The Ogg bitstream format is not patented and can be implemented by
+ third parties without patent considerations.
+
+ Published specification:
+
+ See [1].
+
+ Applications which use this media type:
+
+ Any application that implements the specification will be able to
+ encode or decode Ogg bitstream files. Specifically, the format is
+ supposed to be used by subcodecs that implement, for example, Vorbis
+ audio.
+
+ Additional information:
+
+ Magic number(s):
+
+ In Ogg bitstream files, the first four bytes are 0x4f 0x67 0x67 0x53
+ corresponding to the string "OggS".
+
+ File extension: .ogg
+
+ Macintosh File Type Code(s): OggS
+
+ Object Identifier(s) or OID(s): none
+
+ Person & email address to contact for further information:
+
+ Questions about this proposal should be directed to Linus Walleij
+ <triad@df.lth.se>. Technical questions about the Ogg bitstream
+ standard may be asked on the mailing lists for the developer
+ community. <http://www.xiph.org/archives/>
+
+ Intended usage: COMMON
+
+
+
+
+
+
+Walleij Standards Track [Page 3]
+
+RFC 3534 The application/ogg Media Type May 2003
+
+
+ Author/Change controller:
+
+ This document was written by Linus Walleij <triad@df.lth.se>.
+ Changes to this document will either be handled by him, a
+ representative of the Xiph.org, or the associated development
+ communities.
+
+ The Ogg bitstream format is controlled by the Xiph.org and the
+ respective development communities.
+
+3. Security Considerations
+
+ Security considerations are discussed in the security considerations
+ clause of the MIME registration in section 2.
+
+4. Normative References
+
+ [1] Pfeiffer, S., "The Ogg encapsulation format version 0", RFC
+ 3533, May 2003.
+
+ [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
+ Levels", BCP 14, RFC 2119, March 1997.
+
+5. Intellectual Property Statement
+
+ The IETF takes no position regarding the validity or scope of any
+ intellectual property or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; neither does it represent that it
+ has made any effort to identify any such rights. Information on the
+ IETF's procedures with respect to rights in standards-track and
+ standards-related documentation can be found in BCP-11. Copies of
+ claims of rights made available for publication and any assurances of
+ licenses to be made available, or the result of an attempt made to
+ obtain a general license or permission for the use of such
+ proprietary rights by implementors or users of this specification can
+ be obtained from the IETF Secretariat.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights which may cover technology that may be required to practice
+ this standard. Please address the information to the IETF Executive
+ Director.
+
+
+
+
+
+
+
+Walleij Standards Track [Page 4]
+
+RFC 3534 The application/ogg Media Type May 2003
+
+
+6. Author's Address
+
+ Linus Walleij
+ The Ogg Vorbis Community
+ Master Olofs Vag 24
+ Lund 224 66
+ SE
+
+ Phone: +46 703 193678
+ EMail: triad@df.lth.se
+ URI: http://www.xiph.org/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Walleij Standards Track [Page 5]
+
+RFC 3534 The application/ogg Media Type May 2003
+
+
+7. Full Copyright Statement
+
+ Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Walleij Standards Track [Page 6]
+