Updated libogg and libvorbis to hopefully fix code signing issues
|
@ -0,0 +1,7 @@
|
|||
Monty <monty@xiph.org>
|
||||
Greg Maxwell <greg@xiph.org>
|
||||
Ralph Giles <giles@xiph.org>
|
||||
Cristian Adam <cristian.adam@gmail.com>
|
||||
Tim Terriberry <tterribe@xiph.org>
|
||||
|
||||
and the rest of the Xiph.Org Foundation.
|
|
@ -0,0 +1,88 @@
|
|||
Version 1.3.2 (2014 May 27)
|
||||
|
||||
* Fix an bug in oggpack_writecopy().
|
||||
|
||||
Version 1.3.1 (2013 May 12)
|
||||
|
||||
* Guard against very large packets.
|
||||
* Respect the configure --docdir override.
|
||||
* Documentation fixes.
|
||||
* More Windows build fixes.
|
||||
|
||||
Version 1.3.0 (2011 August 4)
|
||||
|
||||
* Add ogg_stream_flush_fill() call
|
||||
This produces longer packets on flush, similar to
|
||||
what ogg_stream_pageout_fill() does for single pages.
|
||||
* Windows build fixes
|
||||
|
||||
Version 1.2.2 (2010 December 07)
|
||||
|
||||
* Build fix (types correction) for Mac OS X
|
||||
* Update win32 project files to Visual Studio 2008
|
||||
* ogg_stream_pageout_fill documentation fix
|
||||
|
||||
Version 1.2.1 (2010 November 01)
|
||||
|
||||
* Various build updates (see SVN)
|
||||
* Add ogg_stream_pageout_fill() to API to allow applications
|
||||
greater explicit flexibility in page sizing.
|
||||
* Documentation updates including multiplexing description,
|
||||
terminology and API (incl. ogg_packet_clear(),
|
||||
ogg_stream_pageout_fill())
|
||||
* Correct possible buffer overwrite in stream encoding on 32 bit
|
||||
when a single packet exceed 250MB.
|
||||
* Correct read-buffer overrun [without side effects] under
|
||||
similar circumstances.
|
||||
* Update unit testing to work properly with new page spill
|
||||
heuristic.
|
||||
|
||||
Version 1.2.0 (2010 March 25)
|
||||
|
||||
* Alter default flushing behavior to span less often and use larger page
|
||||
sizes when packet sizes are large.
|
||||
* Build fixes for additional compilers
|
||||
* Documentation updates
|
||||
|
||||
Version 1.1.4 (2009 June 24)
|
||||
|
||||
* New async error reporting mechanism. Calls made after a fatal error are
|
||||
now safely handled in the event an error code is ignored
|
||||
* Added allocation checks useful to some embedded applications
|
||||
* fix possible read past end of buffer when reading 0 bits
|
||||
* Updates to API documentation
|
||||
* Build fixes
|
||||
|
||||
Version 1.1.3 (2005 November 27)
|
||||
|
||||
* Correct a bug in the granulepos field of pages where no packet ends
|
||||
* New VS2003 and XCode builds, minor fixes to other builds
|
||||
* documentation fixes and cleanup
|
||||
|
||||
Version 1.1.2 (2004 September 23)
|
||||
|
||||
* fix a bug with multipage packet assembly after seek
|
||||
|
||||
Version 1.1.1 (2004 September 12)
|
||||
|
||||
* various bugfixes
|
||||
* important bugfix for 64-bit platforms
|
||||
* various portability fixes
|
||||
* autotools cleanup from Thomas Vander Stichele
|
||||
* Symbian OS build support from Colin Ward at CSIRO
|
||||
* new multiplexed Ogg stream documentation
|
||||
|
||||
Version 1.1 (2003 November 17)
|
||||
|
||||
* big-endian bitpacker routines for Theora
|
||||
* various portability fixes
|
||||
* improved API documenation
|
||||
* RFC 3533 documentation of the format by Silvia Pfeiffer at CSIRO
|
||||
* RFC 3534 documentation of the application/ogg mime-type by Linus Walleij
|
||||
|
||||
Version 1.0 (2002 July 19)
|
||||
|
||||
* First stable release
|
||||
* little-endian bitpacker routines for Vorbis
|
||||
* basic Ogg bitstream sync and coding support
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
|
||||
#AUTOMAKE_OPTIONS = foreign 1.6 dist-zip
|
||||
AUTOMAKE_OPTIONS = foreign 1.11 dist-zip dist-xz
|
||||
|
||||
SUBDIRS = src include doc
|
||||
|
||||
m4datadir = $(datadir)/aclocal
|
||||
m4data_DATA = ogg.m4
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = ogg.pc
|
||||
|
||||
EXTRA_DIST = README AUTHORS CHANGES COPYING \
|
||||
libogg.spec libogg.spec.in \
|
||||
ogg.m4 ogg.pc.in ogg-uninstalled.pc.in \
|
||||
macosx win32
|
||||
|
||||
dist-hook:
|
||||
for item in $(EXTRA_DIST); do \
|
||||
if test -d $$item; then \
|
||||
echo -n "cleaning dir $$item for distribution..."; \
|
||||
rm -rf `find $(distdir)/$$item -name .svn`; \
|
||||
echo "OK"; \
|
||||
fi; \
|
||||
done
|
||||
debug:
|
||||
$(MAKE) all CFLAGS="@DEBUG@"
|
||||
|
||||
profile:
|
||||
$(MAKE) all CFLAGS="@PROFILE@"
|
|
@ -0,0 +1,913 @@
|
|||
# Makefile.in generated by automake 1.13.4 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 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.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
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@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = .
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(top_srcdir)/configure $(am__configure_deps) \
|
||||
$(srcdir)/config.h.in $(srcdir)/libogg.spec.in \
|
||||
$(srcdir)/ogg.pc.in $(srcdir)/ogg-uninstalled.pc.in AUTHORS \
|
||||
COPYING README compile config.guess config.sub install-sh \
|
||||
missing ltmain.sh
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES = libogg.spec ogg.pc ogg-uninstalled.pc
|
||||
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 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 = 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)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"
|
||||
DATA = $(m4data_DATA) $(pkgconfig_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 \
|
||||
cscope distdir dist dist-all distcheck
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
|
||||
$(LISP)config.h.in
|
||||
# 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)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
CSCOPE = cscope
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
if test -d "$(distdir)"; then \
|
||||
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -rf "$(distdir)" \
|
||||
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||
else :; fi
|
||||
am__post_remove_distdir = $(am__remove_distdir)
|
||||
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"
|
||||
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz $(distdir).zip
|
||||
GZIP_ENV = --best
|
||||
DIST_TARGETS = dist-xz dist-gzip dist-zip
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
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@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
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@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||
LIB_AGE = @LIB_AGE@
|
||||
LIB_CURRENT = @LIB_CURRENT@
|
||||
LIB_REVISION = @LIB_REVISION@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPT = @OPT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
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@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SIZE16 = @SIZE16@
|
||||
SIZE32 = @SIZE32@
|
||||
SIZE64 = @SIZE64@
|
||||
STRIP = @STRIP@
|
||||
USIZE16 = @USIZE16@
|
||||
USIZE32 = @USIZE32@
|
||||
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__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
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@
|
||||
|
||||
#AUTOMAKE_OPTIONS = foreign 1.6 dist-zip
|
||||
AUTOMAKE_OPTIONS = foreign 1.11 dist-zip dist-xz
|
||||
SUBDIRS = src include doc
|
||||
m4datadir = $(datadir)/aclocal
|
||||
m4data_DATA = ogg.m4
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = ogg.pc
|
||||
EXTRA_DIST = README AUTHORS CHANGES COPYING \
|
||||
libogg.spec libogg.spec.in \
|
||||
ogg.m4 ogg.pc.in ogg-uninstalled.pc.in \
|
||||
macosx win32
|
||||
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh: Makefile
|
||||
@:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
|
||||
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
config.h: stamp-h1
|
||||
@if test ! -f $@; then rm -f stamp-h1; else :; fi
|
||||
@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
libogg.spec: $(top_builddir)/config.status $(srcdir)/libogg.spec.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
ogg.pc: $(top_builddir)/config.status $(srcdir)/ogg.pc.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
ogg-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/ogg-uninstalled.pc.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool config.lt
|
||||
install-m4dataDATA: $(m4data_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(m4datadir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(m4datadir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4datadir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(m4datadir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-m4dataDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(m4datadir)'; $(am__uninstall_files_from_dir)
|
||||
install-pkgconfigDATA: $(pkgconfig_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
|
||||
if test -n "$$list"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
|
||||
fi; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
echo "$$d$$p"; \
|
||||
done | $(am__base_list) | \
|
||||
while read files; do \
|
||||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
|
||||
$(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
|
||||
done
|
||||
|
||||
uninstall-pkgconfigDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
|
||||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
dir='$(DESTDIR)$(pkgconfigdir)'; $(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.
|
||||
$(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//`; \
|
||||
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; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(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"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: 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; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
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) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
cscope: cscope.files
|
||||
test ! -s cscope.files \
|
||||
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
||||
clean-cscope:
|
||||
-rm -f cscope.files
|
||||
cscope.files: clean-cscope cscopelist
|
||||
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
|
||||
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||
@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; \
|
||||
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 -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(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="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-hook
|
||||
-test -n "$(am__skip_mode_fix)" \
|
||||
|| find "$(distdir)" -type d ! -perm -755 \
|
||||
-exec chmod u+rwx,go+rx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r "$(distdir)"
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-lzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||
$(am__post_remove_distdir)
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__post_remove_distdir)
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist dist-all:
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lz*) \
|
||||
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||
*.tar.xz*) \
|
||||
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir)
|
||||
chmod u+w $(distdir)
|
||||
mkdir $(distdir)/_build $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||
&& cd "$$am__cwd" \
|
||||
|| exit 1
|
||||
$(am__post_remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@test -n '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: trying to run $@ with an empty' \
|
||||
'$$(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||
exit 1; \
|
||||
}; \
|
||||
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile $(DATA) config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
for dir in "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
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"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-m4dataDATA install-pkgconfigDATA
|
||||
|
||||
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
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-m4dataDATA uninstall-pkgconfigDATA
|
||||
|
||||
.MAKE: $(am__recursive_targets) all install-am install-strip
|
||||
|
||||
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||
am--refresh check check-am clean clean-cscope clean-generic \
|
||||
clean-libtool cscope cscopelist-am ctags ctags-am dist \
|
||||
dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
|
||||
dist-tarZ dist-xz dist-zip distcheck distclean \
|
||||
distclean-generic distclean-hdr distclean-libtool \
|
||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-m4dataDATA install-man \
|
||||
install-pdf install-pdf-am install-pkgconfigDATA 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-m4dataDATA uninstall-pkgconfigDATA
|
||||
|
||||
|
||||
dist-hook:
|
||||
for item in $(EXTRA_DIST); do \
|
||||
if test -d $$item; then \
|
||||
echo -n "cleaning dir $$item for distribution..."; \
|
||||
rm -rf `find $(distdir)/$$item -name .svn`; \
|
||||
echo "OK"; \
|
||||
fi; \
|
||||
done
|
||||
debug:
|
||||
$(MAKE) all CFLAGS="@DEBUG@"
|
||||
|
||||
profile:
|
||||
$(MAKE) all CFLAGS="@PROFILE@"
|
||||
|
||||
# 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.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,97 @@
|
|||
********************************************************************
|
||||
* *
|
||||
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
|
||||
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
|
||||
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
|
||||
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
|
||||
* *
|
||||
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2011 *
|
||||
* by the Xiph.Org Foundation http://www.xiph.org/ *
|
||||
* *
|
||||
********************************************************************
|
||||
|
||||
= WHAT'S HERE =
|
||||
|
||||
This source distribution includes libogg and nothing else. Other modules
|
||||
(eg, the modules libvorbis, vorbis-tools for the Vorbis music codec,
|
||||
libtheora for the Theora video codec) contain the codec libraries for
|
||||
use with Ogg bitstreams.
|
||||
|
||||
Directory:
|
||||
|
||||
./src The source for libogg, a BSD-license inplementation of
|
||||
the public domain Ogg bitstream format
|
||||
|
||||
./include Library API headers
|
||||
|
||||
./doc Ogg specification and libogg API documents
|
||||
|
||||
./win32 Win32 projects and build automation
|
||||
|
||||
./macosx Mac OS X project and build files
|
||||
|
||||
= WHAT IS OGG? =
|
||||
|
||||
Ogg project codecs use the Ogg bitstream format to arrange the raw,
|
||||
compressed bitstream into a more robust, useful form. For example,
|
||||
the Ogg bitstream makes seeking, time stamping and error recovery
|
||||
possible, as well as mixing several sepearate, concurrent media
|
||||
streams into a single physical bitstream.
|
||||
|
||||
= CONTACT =
|
||||
|
||||
The Ogg homepage is located at 'https://www.xiph.org/ogg/'.
|
||||
Up to date technical documents, contact information, source code and
|
||||
pre-built utilities may be found there.
|
||||
|
||||
BUILDING FROM TARBALL DISTRIBUTIONS:
|
||||
|
||||
./configure
|
||||
make
|
||||
|
||||
and optionally (as root):
|
||||
make install
|
||||
|
||||
This will install the Ogg libraries (static and shared) into
|
||||
/usr/local/lib, includes into /usr/local/include and API
|
||||
documentation into /usr/local/share/doc.
|
||||
|
||||
BUILDING FROM REPOSITORY SOURCE:
|
||||
|
||||
A standard svn build should consist of nothing more than:
|
||||
|
||||
./autogen.sh
|
||||
make
|
||||
|
||||
and as root if desired :
|
||||
|
||||
make install
|
||||
|
||||
BUILDING ON WIN32:
|
||||
|
||||
Use the project file in the win32 directory. It should compile out of the box.
|
||||
|
||||
CROSS COMPILING FROM LINUX TO WIN32:
|
||||
|
||||
It is also possible to cross compile from Linux to windows using the MinGW
|
||||
cross tools and even to run the test suite under Wine, the Linux/*nix
|
||||
windows emulator.
|
||||
|
||||
On Debian and Ubuntu systems, these cross compiler tools can be installed
|
||||
by doing:
|
||||
|
||||
sudo apt-get mingw32 mingw32-binutils mingw32-runtime wine
|
||||
|
||||
Once these tools are installed its possible to compile and test by
|
||||
executing the following commands, or something similar depending on
|
||||
your system:
|
||||
|
||||
./configure --host=i586-mingw32msvc --target=i586-mingw32msvc \
|
||||
--build=i586-linux
|
||||
make
|
||||
make check
|
||||
|
||||
(Build instructions for Ogg codecs such as vorbis are similar and may
|
||||
be found in those source modules' README files)
|
||||
|
||||
$Id: README 18096 2011-09-22 23:32:51Z giles $
|
|
@ -0,0 +1,347 @@
|
|||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2012-10-14.11; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# We need space, tab and new line, in precisely that order. Quoting is
|
||||
# there to prevent tools from complaining about whitespace usage.
|
||||
IFS=" "" $nl"
|
||||
|
||||
file_conv=
|
||||
|
||||
# func_file_conv build_file lazy
|
||||
# Convert a $build file to $host form and store it in $file
|
||||
# Currently only supports Windows hosts. If the determined conversion
|
||||
# type is listed in (the comma separated) LAZY, no conversion will
|
||||
# take place.
|
||||
func_file_conv ()
|
||||
{
|
||||
file=$1
|
||||
case $file in
|
||||
/ | /[!/]*) # absolute file, and not a UNC file
|
||||
if test -z "$file_conv"; then
|
||||
# lazily determine how to convert abs files
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
file_conv=mingw
|
||||
;;
|
||||
CYGWIN*)
|
||||
file_conv=cygwin
|
||||
;;
|
||||
*)
|
||||
file_conv=wine
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case $file_conv/,$2, in
|
||||
*,$file_conv,*)
|
||||
;;
|
||||
mingw/*)
|
||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||
;;
|
||||
cygwin/*)
|
||||
file=`cygpath -m "$file" || echo "$file"`
|
||||
;;
|
||||
wine/*)
|
||||
file=`winepath -w "$file" || echo "$file"`
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_cl_dashL linkdir
|
||||
# Make cl look for libraries in LINKDIR
|
||||
func_cl_dashL ()
|
||||
{
|
||||
func_file_conv "$1"
|
||||
if test -z "$lib_path"; then
|
||||
lib_path=$file
|
||||
else
|
||||
lib_path="$lib_path;$file"
|
||||
fi
|
||||
linker_opts="$linker_opts -LIBPATH:$file"
|
||||
}
|
||||
|
||||
# func_cl_dashl library
|
||||
# Do a library search-path lookup for cl
|
||||
func_cl_dashl ()
|
||||
{
|
||||
lib=$1
|
||||
found=no
|
||||
save_IFS=$IFS
|
||||
IFS=';'
|
||||
for dir in $lib_path $LIB
|
||||
do
|
||||
IFS=$save_IFS
|
||||
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.dll.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/$lib.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/lib$lib.a"; then
|
||||
found=yes
|
||||
lib=$dir/lib$lib.a
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS=$save_IFS
|
||||
|
||||
if test "$found" != yes; then
|
||||
lib=$lib.lib
|
||||
fi
|
||||
}
|
||||
|
||||
# func_cl_wrapper cl arg...
|
||||
# Adjust compile command to suit cl
|
||||
func_cl_wrapper ()
|
||||
{
|
||||
# Assume a capable shell
|
||||
lib_path=
|
||||
shared=:
|
||||
linker_opts=
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.[oO][bB][jJ])
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fo"$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fe"$file"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-I)
|
||||
eat=1
|
||||
func_file_conv "$2" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-I*)
|
||||
func_file_conv "${1#-I}" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-l)
|
||||
eat=1
|
||||
func_cl_dashl "$2"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-l*)
|
||||
func_cl_dashl "${1#-l}"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-L)
|
||||
eat=1
|
||||
func_cl_dashL "$2"
|
||||
;;
|
||||
-L*)
|
||||
func_cl_dashL "${1#-L}"
|
||||
;;
|
||||
-static)
|
||||
shared=false
|
||||
;;
|
||||
-Wl,*)
|
||||
arg=${1#-Wl,}
|
||||
save_ifs="$IFS"; IFS=','
|
||||
for flag in $arg; do
|
||||
IFS="$save_ifs"
|
||||
linker_opts="$linker_opts $flag"
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
;;
|
||||
-Xlinker)
|
||||
eat=1
|
||||
linker_opts="$linker_opts $2"
|
||||
;;
|
||||
-*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||
func_file_conv "$1"
|
||||
set x "$@" -Tp"$file"
|
||||
shift
|
||||
;;
|
||||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||
func_file_conv "$1" mingw
|
||||
set x "$@" "$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
if test -n "$linker_opts"; then
|
||||
linker_opts="-link$linker_opts"
|
||||
fi
|
||||
exec "$@" $linker_opts
|
||||
exit 1
|
||||
}
|
||||
|
||||
eat=
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand '-c -o'.
|
||||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file 'INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
|
||||
func_cl_wrapper "$@" # Doesn't return...
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
# So we strip '-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
ofile=$2
|
||||
;;
|
||||
*)
|
||||
set x "$@" -o "$2"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*.c)
|
||||
cfile=$1
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no '-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# '.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
# FIXME: race condition here if user kills between mkdir and trap.
|
||||
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
|
||||
# Run the compile.
|
||||
"$@"
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
exit $ret
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
|
@ -30,6 +30,13 @@
|
|||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
#undef NO_MINUS_C_MINUS_O
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
|
@ -45,21 +52,45 @@
|
|||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* The size of a `int', as computed by sizeof. */
|
||||
/* The size of `int', as computed by sizeof. */
|
||||
#undef SIZEOF_INT
|
||||
|
||||
/* The size of a `long', as computed by sizeof. */
|
||||
/* The size of `int16_t', as computed by sizeof. */
|
||||
#undef SIZEOF_INT16_T
|
||||
|
||||
/* The size of `int32_t', as computed by sizeof. */
|
||||
#undef SIZEOF_INT32_T
|
||||
|
||||
/* The size of `int64_t', as computed by sizeof. */
|
||||
#undef SIZEOF_INT64_T
|
||||
|
||||
/* The size of `long', as computed by sizeof. */
|
||||
#undef SIZEOF_LONG
|
||||
|
||||
/* The size of a `long long', as computed by sizeof. */
|
||||
/* The size of `long long', as computed by sizeof. */
|
||||
#undef SIZEOF_LONG_LONG
|
||||
|
||||
/* The size of a `short', as computed by sizeof. */
|
||||
/* The size of `short', as computed by sizeof. */
|
||||
#undef SIZEOF_SHORT
|
||||
|
||||
/* The size of `uint16_t', as computed by sizeof. */
|
||||
#undef SIZEOF_UINT16_T
|
||||
|
||||
/* The size of `uint32_t', as computed by sizeof. */
|
||||
#undef SIZEOF_UINT32_T
|
||||
|
||||
/* The size of `u_int16_t', as computed by sizeof. */
|
||||
#undef SIZEOF_U_INT16_T
|
||||
|
||||
/* The size of `u_int32_t', as computed by sizeof. */
|
||||
#undef SIZEOF_U_INT32_T
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
|
@ -0,0 +1,185 @@
|
|||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT([libogg],[1.3.2],[ogg-dev@xiph.org])
|
||||
|
||||
AC_CONFIG_SRCDIR(src/framing.c)
|
||||
|
||||
AM_INIT_AUTOMAKE
|
||||
AM_MAINTAINER_MODE([enable])
|
||||
|
||||
dnl Library versioning
|
||||
|
||||
LIB_CURRENT=8
|
||||
LIB_REVISION=2
|
||||
LIB_AGE=8
|
||||
AC_SUBST(LIB_CURRENT)
|
||||
AC_SUBST(LIB_REVISION)
|
||||
AC_SUBST(LIB_AGE)
|
||||
|
||||
AC_PROG_CC
|
||||
AM_PROG_LIBTOOL
|
||||
AM_PROG_CC_C_O
|
||||
|
||||
dnl Set some options based on environment
|
||||
|
||||
cflags_save="$CFLAGS"
|
||||
if test -z "$GCC"; then
|
||||
case $host in
|
||||
*-*-irix*)
|
||||
DEBUG="-g -signed"
|
||||
CFLAGS="-O2 -w -signed"
|
||||
PROFILE="-p -g3 -O2 -signed"
|
||||
;;
|
||||
sparc-sun-solaris*)
|
||||
DEBUG="-v -g"
|
||||
CFLAGS="-xO4 -fast -w -fsimple -native -xcg92"
|
||||
PROFILE="-v -xpg -g -xO4 -fast -native -fsimple -xcg92 -Dsuncc"
|
||||
;;
|
||||
*)
|
||||
DEBUG="-g"
|
||||
CFLAGS="-O"
|
||||
PROFILE="-g -p"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
case $host in
|
||||
*-*-linux*)
|
||||
DEBUG="-g -Wall -fsigned-char"
|
||||
CFLAGS="-O20 -Wall -ffast-math -fsigned-char"
|
||||
PROFILE="-Wall -W -pg -g -O20 -ffast-math -fsigned-char"
|
||||
;;
|
||||
sparc-sun-*)
|
||||
DEBUG="-g -Wall -fsigned-char"
|
||||
CFLAGS="-O20 -ffast-math -fsigned-char"
|
||||
PROFILE="-pg -g -O20 -fsigned-char"
|
||||
;;
|
||||
*-*-darwin*)
|
||||
DEBUG="-fno-common -g -Wall -fsigned-char"
|
||||
CFLAGS="-fno-common -O4 -Wall -fsigned-char -ffast-math"
|
||||
PROFILE="-fno-common -O4 -Wall -pg -g -fsigned-char -ffast-math"
|
||||
;;
|
||||
*)
|
||||
DEBUG="-g -Wall -fsigned-char"
|
||||
CFLAGS="-O20 -fsigned-char"
|
||||
PROFILE="-O20 -g -pg -fsigned-char"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
CFLAGS="$CFLAGS $cflags_save"
|
||||
DEBUG="$DEBUG $cflags_save"
|
||||
PROFILE="$PROFILE $cflags_save"
|
||||
|
||||
dnl Checks for programs.
|
||||
|
||||
dnl Checks for libraries.
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
INCLUDE_INTTYPES_H=0
|
||||
INCLUDE_STDINT_H=0
|
||||
INCLUDE_SYS_TYPES_H=0
|
||||
AC_CHECK_HEADER(inttypes.h,INCLUDE_INTTYPES_H=1)
|
||||
AC_CHECK_HEADER(stdint.h,INCLUDE_STDINT_H=1)
|
||||
AC_CHECK_HEADER(sys/types.h,INCLUDE_SYS_TYPES_H=1)
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
|
||||
dnl Check for types
|
||||
|
||||
AC_CHECK_SIZEOF(int16_t)
|
||||
AC_CHECK_SIZEOF(uint16_t)
|
||||
AC_CHECK_SIZEOF(u_int16_t)
|
||||
AC_CHECK_SIZEOF(int32_t)
|
||||
AC_CHECK_SIZEOF(uint32_t)
|
||||
AC_CHECK_SIZEOF(u_int32_t)
|
||||
AC_CHECK_SIZEOF(int64_t)
|
||||
AC_CHECK_SIZEOF(short)
|
||||
AC_CHECK_SIZEOF(int)
|
||||
AC_CHECK_SIZEOF(long)
|
||||
AC_CHECK_SIZEOF(long long)
|
||||
|
||||
case 2 in
|
||||
$ac_cv_sizeof_int16_t) SIZE16="int16_t";;
|
||||
$ac_cv_sizeof_short) SIZE16="short";;
|
||||
$ac_cv_sizeof_int) SIZE16="int";;
|
||||
esac
|
||||
|
||||
case 2 in
|
||||
$ac_cv_sizeof_uint16_t) USIZE16="uint16_t";;
|
||||
$ac_cv_sizeof_short) USIZE16="unsigned short";;
|
||||
$ac_cv_sizeof_int) USIZE16="unsigned int";;
|
||||
$ac_cv_sizeof_u_int16_t) USIZE16="u_int16_t";;
|
||||
esac
|
||||
|
||||
case 4 in
|
||||
$ac_cv_sizeof_int32_t) SIZE32="int32_t";;
|
||||
$ac_cv_sizeof_short) SIZE32="short";;
|
||||
$ac_cv_sizeof_int) SIZE32="int";;
|
||||
$ac_cv_sizeof_long) SIZE32="long";;
|
||||
esac
|
||||
|
||||
case 4 in
|
||||
$ac_cv_sizeof_uint32_t) USIZE32="uint32_t";;
|
||||
$ac_cv_sizeof_short) USIZE32="unsigned short";;
|
||||
$ac_cv_sizeof_int) USIZE32="unsigned int";;
|
||||
$ac_cv_sizeof_long) USIZE32="unsigned long";;
|
||||
$ac_cv_sizeof_u_int32_t) USIZE32="u_int32_t";;
|
||||
esac
|
||||
|
||||
case 8 in
|
||||
$ac_cv_sizeof_int64_t) SIZE64="int64_t";;
|
||||
$ac_cv_sizeof_int) SIZE64="int";;
|
||||
$ac_cv_sizeof_long) SIZE64="long";;
|
||||
$ac_cv_sizeof_long_long) SIZE64="long long";;
|
||||
esac
|
||||
|
||||
if test -z "$SIZE16"; then
|
||||
AC_MSG_ERROR(No 16 bit type found on this platform!)
|
||||
fi
|
||||
if test -z "$USIZE16"; then
|
||||
AC_MSG_ERROR(No unsigned 16 bit type found on this platform!)
|
||||
fi
|
||||
if test -z "$SIZE32"; then
|
||||
AC_MSG_ERROR(No 32 bit type found on this platform!)
|
||||
fi
|
||||
if test -z "$USIZE32"; then
|
||||
AC_MSG_ERROR(No unsigned 32 bit type found on this platform!)
|
||||
fi
|
||||
if test -z "$SIZE64"; then
|
||||
AC_MSG_WARN(No 64 bit type found on this platform!)
|
||||
fi
|
||||
|
||||
dnl Checks for library functions.
|
||||
AC_FUNC_MEMCMP
|
||||
|
||||
dnl Make substitutions
|
||||
|
||||
AC_SUBST(LIBTOOL_DEPS)
|
||||
AC_SUBST(INCLUDE_INTTYPES_H)
|
||||
AC_SUBST(INCLUDE_STDINT_H)
|
||||
AC_SUBST(INCLUDE_SYS_TYPES_H)
|
||||
AC_SUBST(SIZE16)
|
||||
AC_SUBST(USIZE16)
|
||||
AC_SUBST(SIZE32)
|
||||
AC_SUBST(USIZE32)
|
||||
AC_SUBST(SIZE64)
|
||||
AC_SUBST(OPT)
|
||||
AC_SUBST(LIBS)
|
||||
AC_SUBST(DEBUG)
|
||||
AC_SUBST(CFLAGS)
|
||||
AC_SUBST(PROFILE)
|
||||
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
src/Makefile
|
||||
doc/Makefile doc/libogg/Makefile
|
||||
include/Makefile include/ogg/Makefile include/ogg/config_types.h
|
||||
libogg.spec
|
||||
ogg.pc
|
||||
ogg-uninstalled.pc
|
||||
])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
|
||||
AC_OUTPUT
|
|
@ -0,0 +1,791 @@
|
|||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2013-05-30.07; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by 'PROGRAMS ARGS'.
|
||||
object Object file output by 'PROGRAMS ARGS'.
|
||||
DEPDIR directory where to store dependencies.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputting dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
# Get the directory component of the given path, and save it in the
|
||||
# global variables '$dir'. Note that this directory component will
|
||||
# be either empty or ending with a '/' character. This is deliberate.
|
||||
set_dir_from ()
|
||||
{
|
||||
case $1 in
|
||||
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
|
||||
*) dir=;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Get the suffix-stripped basename of the given path, and save it the
|
||||
# global variable '$base'.
|
||||
set_base_from ()
|
||||
{
|
||||
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
|
||||
}
|
||||
|
||||
# If no dependency file was actually created by the compiler invocation,
|
||||
# we still have to create a dummy depfile, to avoid errors with the
|
||||
# Makefile "include basename.Plo" scheme.
|
||||
make_dummy_depfile ()
|
||||
{
|
||||
echo "#dummy" > "$depfile"
|
||||
}
|
||||
|
||||
# Factor out some common post-processing of the generated depfile.
|
||||
# Requires the auxiliary global variable '$tmpdepfile' to be set.
|
||||
aix_post_process_depfile ()
|
||||
{
|
||||
# If the compiler actually managed to produce a dependency file,
|
||||
# post-process it.
|
||||
if test -f "$tmpdepfile"; then
|
||||
# Each line is of the form 'foo.o: dependency.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# $object: dependency.h
|
||||
# and one to simply output
|
||||
# dependency.h:
|
||||
# which is needed to avoid the deleted-header problem.
|
||||
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
|
||||
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
|
||||
} > "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
}
|
||||
|
||||
# A tabulation character.
|
||||
tab=' '
|
||||
# A newline character.
|
||||
nl='
|
||||
'
|
||||
# Character ranges might be problematic outside the C locale.
|
||||
# These definitions help.
|
||||
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
lower=abcdefghijklmnopqrstuvwxyz
|
||||
digits=0123456789
|
||||
alpha=${upper}${lower}
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||
depfile=${depfile-`echo "$object" |
|
||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Avoid interferences from the environment.
|
||||
gccflag= dashmflag=
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
cygpath_u="cygpath -u -f -"
|
||||
if test "$depmode" = msvcmsys; then
|
||||
# This is just like msvisualcpp but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvisualcpp
|
||||
fi
|
||||
|
||||
if test "$depmode" = msvc7msys; then
|
||||
# This is just like msvc7 but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvc7
|
||||
fi
|
||||
|
||||
if test "$depmode" = xlc; then
|
||||
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
|
||||
gccflag=-qmakedep=gcc,-MF
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||
## the command line argument order; so add the flags where they
|
||||
## appear in depend2.am. Note that the slowdown incurred here
|
||||
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||
*) set fnord "$@" "$arg" ;;
|
||||
esac
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
done
|
||||
"$@"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
|
||||
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
|
||||
## (see the conditional assignment to $gccflag above).
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say). Also, it might not be
|
||||
## supported by the other compilers which use the 'gcc' depmode.
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
# The second -e expression handles DOS-style file names with drive
|
||||
# letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the "deleted header file" problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
## Some versions of gcc put a space before the ':'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well. hp depmode also adds that space, but also prefixes the VPATH
|
||||
## to the object. Take care to not repeat it in the output.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like '#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
|
||||
| tr "$nl" ' ' >> "$depfile"
|
||||
echo >> "$depfile"
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> "$depfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
xlc)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts '$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$base.u
|
||||
tmpdepfile3=$dir.libs/$base.u
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$dir$base.u
|
||||
tmpdepfile3=$dir$base.u
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
aix_post_process_depfile
|
||||
;;
|
||||
|
||||
tcc)
|
||||
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
|
||||
# FIXME: That version still under development at the moment of writing.
|
||||
# Make that this statement remains true also for stable, released
|
||||
# versions.
|
||||
# It will wrap lines (doesn't matter whether long or short) with a
|
||||
# trailing '\', as in:
|
||||
#
|
||||
# foo.o : \
|
||||
# foo.c \
|
||||
# foo.h \
|
||||
#
|
||||
# It will put a trailing '\' even on the last line, and will use leading
|
||||
# spaces rather than leading tabs (at least since its commit 0394caf7
|
||||
# "Emit spaces for -MD").
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
|
||||
# We have to change lines of the first kind to '$object: \'.
|
||||
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
|
||||
# And for each line of the second kind, we have to emit a 'dep.h:'
|
||||
# dummy dependency, to avoid the deleted-header problem.
|
||||
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
## The order of this option in the case statement is important, since the
|
||||
## shell code in configure will try each of these formats in the order
|
||||
## listed in this file. A plain '-MD' option would be understood by many
|
||||
## compilers, so we must ensure this comes after the gcc and icc options.
|
||||
pgcc)
|
||||
# Portland's C compiler understands '-MD'.
|
||||
# Will always output deps to 'file.d' where file is the root name of the
|
||||
# source file under compilation, even if file resides in a subdirectory.
|
||||
# The object file name does not affect the name of the '.d' file.
|
||||
# pgcc 10.2 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using '\' :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
set_dir_from "$object"
|
||||
# Use the source, not the object, to determine the base name, since
|
||||
# that's sadly what pgcc will do too.
|
||||
set_base_from "$source"
|
||||
tmpdepfile=$base.d
|
||||
|
||||
# For projects that build the same source file twice into different object
|
||||
# files, the pgcc approach of using the *source* file root name can cause
|
||||
# problems in parallel builds. Use a locking strategy to avoid stomping on
|
||||
# the same $tmpdepfile.
|
||||
lockdir=$base.d-lock
|
||||
trap "
|
||||
echo '$0: caught signal, cleaning up...' >&2
|
||||
rmdir '$lockdir'
|
||||
exit 1
|
||||
" 1 2 13 15
|
||||
numtries=100
|
||||
i=$numtries
|
||||
while test $i -gt 0; do
|
||||
# mkdir is a portable test-and-set.
|
||||
if mkdir "$lockdir" 2>/dev/null; then
|
||||
# This process acquired the lock.
|
||||
"$@" -MD
|
||||
stat=$?
|
||||
# Release the lock.
|
||||
rmdir "$lockdir"
|
||||
break
|
||||
else
|
||||
# If the lock is being held by a different process, wait
|
||||
# until the winning process is done or we timeout.
|
||||
while test -d "$lockdir" && test $i -gt 0; do
|
||||
sleep 1
|
||||
i=`expr $i - 1`
|
||||
done
|
||||
fi
|
||||
i=`expr $i - 1`
|
||||
done
|
||||
trap - 1 2 13 15
|
||||
if test $i -le 0; then
|
||||
echo "$0: failed to acquire lock after $numtries attempts" >&2
|
||||
echo "$0: check lockdir '$lockdir'" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp2)
|
||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||
# compilers, which have integrated preprocessors. The correct option
|
||||
# to use with these is +Maked; it writes dependencies to a file named
|
||||
# 'foo.d', which lands next to the object file, wherever that
|
||||
# happens to be.
|
||||
# Much of this is similar to the tru64 case; see comments there.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir.libs/$base.d
|
||||
"$@" -Wc,+Maked
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
"$@" +Maked
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||
# Add 'dependent.h:' lines.
|
||||
sed -ne '2,${
|
||||
s/^ *//
|
||||
s/ \\*$//
|
||||
s/$/:/
|
||||
p
|
||||
}' "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in 'foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# Libtool generates 2 separate objects for the 2 libraries. These
|
||||
# two compilations output dependencies in $dir.libs/$base.o.d and
|
||||
# in $dir$base.o.d. We have to check for both files, because
|
||||
# one of the two compilations can be disabled. We should prefer
|
||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||
# the former would cause a distcleancheck panic.
|
||||
tmpdepfile1=$dir$base.o.d # libtool 1.5
|
||||
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
|
||||
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
tmpdepfile3=$dir$base.d
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
# Same post-processing that is required for AIX mode.
|
||||
aix_post_process_depfile
|
||||
;;
|
||||
|
||||
msvc7)
|
||||
if test "$libtool" = yes; then
|
||||
showIncludes=-Wc,-showIncludes
|
||||
else
|
||||
showIncludes=-showIncludes
|
||||
fi
|
||||
"$@" $showIncludes > "$tmpdepfile"
|
||||
stat=$?
|
||||
grep -v '^Note: including file: ' "$tmpdepfile"
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
# The first sed program below extracts the file names and escapes
|
||||
# backslashes for cygpath. The second sed program outputs the file
|
||||
# name when reading, but also accumulates all include files in the
|
||||
# hold buffer in order to output them again at the end. This only
|
||||
# works with sed implementations that can handle large buffers.
|
||||
sed < "$tmpdepfile" -n '
|
||||
/^Note: including file: *\(.*\)/ {
|
||||
s//\1/
|
||||
s/\\/\\\\/g
|
||||
p
|
||||
}' | $cygpath_u | sort -u | sed -n '
|
||||
s/ /\\ /g
|
||||
s/\(.*\)/'"$tab"'\1 \\/p
|
||||
s/.\(.*\) \\/\1:/
|
||||
H
|
||||
$ {
|
||||
s/.*/'"$tab"'/
|
||||
G
|
||||
p
|
||||
}' >> "$depfile"
|
||||
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvc7msys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove '-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for ':'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this sed invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no eat=no
|
||||
for arg
|
||||
do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
if test $eat = yes; then
|
||||
eat=no
|
||||
continue
|
||||
fi
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-arch)
|
||||
eat=yes ;;
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
# makedepend may prepend the VPATH from the source file name to the object.
|
||||
# No need to regex-escape $object, excess matching of '.' is harmless.
|
||||
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process the last invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed '1,2d' "$tmpdepfile" \
|
||||
| tr ' ' "$nl" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove '-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E \
|
||||
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
| sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E 2>/dev/null |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
|
||||
echo "$tab" >> "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvcmsys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
|
@ -0,0 +1,9 @@
|
|||
## Process this with automake to create Makefile.in
|
||||
|
||||
SUBDIRS = libogg
|
||||
|
||||
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
|
||||
|
|
@ -0,0 +1,676 @@
|
|||
# Makefile.in generated by automake 1.13.4 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 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.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
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@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = doc
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(dist_html_DATA)
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
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 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 = 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
|
||||
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)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
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@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
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@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
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@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||
LIB_AGE = @LIB_AGE@
|
||||
LIB_CURRENT = @LIB_CURRENT@
|
||||
LIB_REVISION = @LIB_REVISION@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPT = @OPT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
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@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SIZE16 = @SIZE16@
|
||||
SIZE32 = @SIZE32@
|
||||
SIZE64 = @SIZE64@
|
||||
STRIP = @STRIP@
|
||||
USIZE16 = @USIZE16@
|
||||
USIZE32 = @USIZE32@
|
||||
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__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
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
|
||||
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
|
||||
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( 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'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/Makefile
|
||||
.PRECIOUS: 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);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(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
|
||||
install-dist_htmlDATA: $(dist_html_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@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; \
|
||||
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-dist_htmlDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@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.
|
||||
$(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//`; \
|
||||
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; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
($(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"
|
||||
|
||||
ID: $(am__tagged_files)
|
||||
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
tags: tags-recursive
|
||||
TAGS: 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; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
$(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
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) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(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)'; \
|
||||
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; \
|
||||
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 -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
$(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="$$new_top_distdir" \
|
||||
distdir="$$new_distdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
am__skip_mode_fix=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile $(DATA)
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
for dir in "$(DESTDIR)$(htmldir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
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"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
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
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-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
|
||||
|
||||
|
||||
# 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.
|
||||
.NOEXPORT:
|
After Width: | Height: | Size: 2.5 KiB |
|
@ -0,0 +1,429 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
|
||||
<title>Ogg Documentation</title>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0 18px 0 18px;
|
||||
padding-bottom: 30px;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
color: #333333;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #3366cc;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
#xiphlogo {
|
||||
margin: 30px 0 16px 0;
|
||||
}
|
||||
|
||||
#content p {
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
h1, h1 a, h2, h2 a, h3, h3 a {
|
||||
font-weight: bold;
|
||||
color: #ff9900;
|
||||
margin: 1.3em 0 8px 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
li {
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
#copyright {
|
||||
margin-top: 30px;
|
||||
line-height: 1.5em;
|
||||
text-align: center;
|
||||
font-size: .8em;
|
||||
color: #888888;
|
||||
clear: both;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="xiphlogo">
|
||||
<a href="http://www.xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"/></a>
|
||||
</div>
|
||||
|
||||
<h1>Ogg logical bitstream framing</h1>
|
||||
|
||||
<h2>Ogg bitstreams</h2>
|
||||
|
||||
<p>The Ogg transport bitstream is designed to provide framing, error
|
||||
protection and seeking structure for higher-level codec streams that
|
||||
consist of raw, unencapsulated data packets, such as the Vorbis audio
|
||||
codec or Theora video codec.</p>
|
||||
|
||||
<h2>Application example: Vorbis</h2>
|
||||
|
||||
<p>Vorbis encodes short-time blocks of PCM data into raw packets of
|
||||
bit-packed data. These raw packets may be used directly by transport
|
||||
mechanisms that provide their own framing and packet-separation
|
||||
mechanisms (such as UDP datagrams). For stream based storage (such as
|
||||
files) and transport (such as TCP streams or pipes), Vorbis uses 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.</p>
|
||||
|
||||
<h2>Design constraints for Ogg bitstreams</h2>
|
||||
|
||||
<ol>
|
||||
<li>True streaming; we must not need to seek to build a 100%
|
||||
complete bitstream.</li>
|
||||
<li>Use no more than approximately 1-2% of bitstream bandwidth for
|
||||
packet boundary marking, high-level framing, sync and seeking.</li>
|
||||
<li>Specification of absolute position within the original sample
|
||||
stream.</li>
|
||||
<li>Simple mechanism to ease limited editing, such as a simplified
|
||||
concatenation mechanism.</li>
|
||||
<li>Detection of corruption, recapture after error and direct, random
|
||||
access to data at arbitrary positions in the bitstream.</li>
|
||||
</ol>
|
||||
|
||||
<h2>Logical and Physical Bitstreams</h2>
|
||||
|
||||
<p>A <em>logical</em> Ogg bitstream is a contiguous stream of
|
||||
sequential pages belonging only to the logical bitstream. A
|
||||
<em>physical</em> Ogg bitstream is constructed from one or more
|
||||
than one logical Ogg bitstream (the simplest physical bitstream
|
||||
is simply a single logical bitstream). We describe below the exact
|
||||
formatting of an Ogg logical bitstream. Combining logical
|
||||
bitstreams into more complex physical bitstreams is described in the
|
||||
<a href="oggstream.html">Ogg bitstream overview</a>. The exact
|
||||
mapping of raw Vorbis packets into a valid Ogg Vorbis physical
|
||||
bitstream is described in the Vorbis I Specification.</p>
|
||||
|
||||
<h2>Bitstream structure</h2>
|
||||
|
||||
<p>An Ogg stream is structured by dividing incoming packets into
|
||||
segments of up to 255 bytes and then wrapping a group of contiguous
|
||||
packet segments into a variable length page preceded by a page
|
||||
header. Both the header size and page size are variable; the page
|
||||
header contains sizing information and checksum data to determine
|
||||
header/page size and data integrity.</p>
|
||||
|
||||
<p>The bitstream is captured (or recaptured) by looking for the beginning
|
||||
of a page, specifically the capture pattern. Once the capture pattern
|
||||
is found, the decoder verifies page sync and integrity by computing
|
||||
and comparing the checksum. At that point, the decoder can extract the
|
||||
packets themselves.</p>
|
||||
|
||||
<h3>Packet segmentation</h3>
|
||||
|
||||
<p>Packets are logically divided into multiple segments before encoding
|
||||
into a page. Note that the segmentation and fragmentation process is a
|
||||
logical one; it's used to compute page header values and the original
|
||||
page data need not be disturbed, even when a packet spans page
|
||||
boundaries.</p>
|
||||
|
||||
<p>The raw packet is logically divided into [n] 255 byte segments and a
|
||||
last fractional segment of < 255 bytes. A packet size may well
|
||||
consist only of the trailing fractional segment, and a fractional
|
||||
segment may be zero length. These values, called "lacing values" are
|
||||
then saved and placed into the header segment table.</p>
|
||||
|
||||
<p>An example should make the basic concept clear:</p>
|
||||
|
||||
<pre>
|
||||
<tt>
|
||||
raw packet:
|
||||
___________________________________________
|
||||
|______________packet data__________________| 753 bytes
|
||||
|
||||
lacing values for page header segment table: 255,255,243
|
||||
</tt>
|
||||
</pre>
|
||||
|
||||
<p>We simply add the lacing values for the total size; the last lacing
|
||||
value for a packet is always the value that is less than 255. Note
|
||||
that this encoding both avoids imposing a maximum packet size as well
|
||||
as imposing minimum overhead on small packets (as opposed to, eg,
|
||||
simply using two bytes at the head of every packet and having a max
|
||||
packet size of 32k. Small packets (<255, the typical case) are
|
||||
penalized with twice the segmentation overhead). Using the lacing
|
||||
values as suggested, small packets see the minimum possible
|
||||
byte-aligned overhead (1 byte) and large packets, over 512 bytes or
|
||||
so, see a fairly constant ~.5% overhead on encoding space.</p>
|
||||
|
||||
<p>Note that a lacing value of 255 implies that a second lacing value
|
||||
follows in the packet, and a value of < 255 marks the end of the
|
||||
packet after that many additional bytes. A packet of 255 bytes (or a
|
||||
multiple of 255 bytes) is terminated by a lacing value of 0:</p>
|
||||
|
||||
<pre><tt>
|
||||
raw packet:
|
||||
_______________________________
|
||||
|________packet data____________| 255 bytes
|
||||
|
||||
lacing values: 255, 0
|
||||
</tt></pre>
|
||||
|
||||
<p>Note also that a 'nil' (zero length) packet is not an error; it
|
||||
consists of nothing more than a lacing value of zero in the header.</p>
|
||||
|
||||
<h3>Packets spanning pages</h3>
|
||||
|
||||
<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.</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
|
||||
the lacing values of the segments it wishes to belong to the current
|
||||
page into the current segment table, then finishes the page. The next
|
||||
page is begun with the first value in the segment table belonging to
|
||||
the next packet segment, thus continuing the packet (data in the
|
||||
packet body must also correspond properly to the lacing values in the
|
||||
spanned pages. The segment data in the first packet corresponding to
|
||||
the lacing values of the first page belong in that page; packet
|
||||
segments listed in the segment table of the following page must begin
|
||||
the page body of the subsequent page).</p>
|
||||
|
||||
<p>The last mechanic to spanning a page boundary is to set the header
|
||||
flag in the new page to indicate that the first lacing value in the
|
||||
segment table continues rather than begins a packet; a header flag of
|
||||
0x01 is set to indicate a continued packet. Although mandatory, it
|
||||
is not actually algorithmically necessary; one could inspect the
|
||||
preceding segment table to determine if the packet is new or
|
||||
continued. Adding the information to the packet_header flag allows a
|
||||
simpler design (with no overhead) that needs only inspect the current
|
||||
page header after frame capture. This also allows faster error
|
||||
recovery in the event that the packet originates in a corrupt
|
||||
preceding page, implying that the previous page's segment table
|
||||
cannot be trusted.</p>
|
||||
|
||||
<p>Note that a packet can span an arbitrary number of pages; the above
|
||||
spanning process is repeated for each spanned page boundary. Also a
|
||||
'zero termination' on a packet size that is an even multiple of 255
|
||||
must appear even if the lacing value appears in the next page as a
|
||||
zero-length continuation of the current packet. The header flag
|
||||
should be set to 0x01 to indicate that the packet spanned, even though
|
||||
the span is a nil case as far as data is concerned.</p>
|
||||
|
||||
<p>The encoding looks odd, but is properly optimized for speed and the
|
||||
expected case of the majority of packets being between 50 and 200
|
||||
bytes (note that it is designed such that packets of wildly different
|
||||
sizes can be handled within the model; placing packet size
|
||||
restrictions on the encoder would have only slightly simplified design
|
||||
in page generation and increased overall encoder complexity).</p>
|
||||
|
||||
<p>The main point behind tracking individual packets (and packet
|
||||
segments) is to allow more flexible encoding tricks that requiring
|
||||
explicit knowledge of packet size. An example is simple bandwidth
|
||||
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
|
||||
of the packet data (ie, making the packet segmentation process a
|
||||
logical one); the header can be generated directly from incoming
|
||||
packet data. The encoder buffers packet data until it finishes a
|
||||
complete page at which point it writes the header followed by the
|
||||
buffered packet segments.</p>
|
||||
|
||||
<h4>capture_pattern</h4>
|
||||
|
||||
<p>A header begins with a capture pattern that simplifies identifying
|
||||
pages; once the decoder has found the capture pattern it can do a more
|
||||
intensive job of verifying that it has in fact found a page boundary
|
||||
(as opposed to an inadvertent coincidence in the byte stream).</p>
|
||||
|
||||
<pre><tt>
|
||||
byte value
|
||||
|
||||
0 0x4f 'O'
|
||||
1 0x67 'g'
|
||||
2 0x67 'g'
|
||||
3 0x53 'S'
|
||||
</tt></pre>
|
||||
|
||||
<h4>stream_structure_version</h4>
|
||||
|
||||
<p>The capture pattern is followed by the stream structure revision:</p>
|
||||
|
||||
<pre><tt>
|
||||
byte value
|
||||
|
||||
4 0x00
|
||||
</tt></pre>
|
||||
|
||||
<h4>header_type_flag</h4>
|
||||
|
||||
<p>The header type flag identifies this page's context in the bitstream:</p>
|
||||
|
||||
<pre><tt>
|
||||
byte value
|
||||
|
||||
5 bitflags: 0x01: unset = fresh packet
|
||||
set = continued packet
|
||||
0x02: unset = not first page of logical bitstream
|
||||
set = first page of logical bitstream (bos)
|
||||
0x04: unset = not last page of logical bitstream
|
||||
set = last page of logical bitstream (eos)
|
||||
</tt></pre>
|
||||
|
||||
<h4>absolute granule position</h4>
|
||||
|
||||
<p>(This is packed in the same way the rest of Ogg data is packed; LSb
|
||||
of LSB first. Note that the 'position' data specifies a 'sample'
|
||||
number (eg, in a CD quality sample is four octets, 16 bits for left
|
||||
and 16 bits for right; in video it would likely be the frame number.
|
||||
It is up to the specific codec in use to define the semantic meaning
|
||||
of the granule position value). The position specified is the total
|
||||
samples encoded after including all packets finished on this page
|
||||
(packets begun on this page but continuing on to the next page do not
|
||||
count). The rationale here is that the position specified in the
|
||||
frame header of the last page tells how long the data coded by the
|
||||
bitstream is. A truncated stream will still return the proper number
|
||||
of samples that can be decoded fully.</p>
|
||||
|
||||
<p>A special value of '-1' (in two's complement) indicates that no packets
|
||||
finish on this page.</p>
|
||||
|
||||
<pre><tt>
|
||||
byte value
|
||||
|
||||
6 0xXX LSB
|
||||
7 0xXX
|
||||
8 0xXX
|
||||
9 0xXX
|
||||
10 0xXX
|
||||
11 0xXX
|
||||
12 0xXX
|
||||
13 0xXX MSB
|
||||
</tt></pre>
|
||||
|
||||
<h4>stream serial number</h4>
|
||||
|
||||
<p>Ogg allows for separate logical bitstreams to be mixed at page
|
||||
granularity in a physical bitstream. The most common case would be
|
||||
sequential arrangement, but it is possible to interleave pages for
|
||||
two separate bitstreams to be decoded concurrently. The serial
|
||||
number is the means by which pages physical pages are associated with
|
||||
a particular logical stream. Each logical stream must have a unique
|
||||
serial number within a physical stream:</p>
|
||||
|
||||
<pre><tt>
|
||||
byte value
|
||||
|
||||
14 0xXX LSB
|
||||
15 0xXX
|
||||
16 0xXX
|
||||
17 0xXX MSB
|
||||
</tt></pre>
|
||||
|
||||
<h4>page sequence no</h4>
|
||||
|
||||
<p>Page counter; lets us know if a page is lost (useful where packets
|
||||
span page boundaries).</p>
|
||||
|
||||
<pre><tt>
|
||||
byte value
|
||||
|
||||
18 0xXX LSB
|
||||
19 0xXX
|
||||
20 0xXX
|
||||
21 0xXX MSB
|
||||
</tt></pre>
|
||||
|
||||
<h4>page checksum</h4>
|
||||
|
||||
<p>32 bit CRC value (direct algorithm, initial val and final XOR = 0,
|
||||
generator polynomial=0x04c11db7). The value is computed over the
|
||||
entire header (with the CRC field in the header set to zero) and then
|
||||
continued over the page. The CRC field is then filled with the
|
||||
computed value.</p>
|
||||
|
||||
<p>(A thorough discussion of CRC algorithms can be found in <a
|
||||
href="http://www.ross.net/crc/download/crc_v3.txt">"A
|
||||
Painless Guide to CRC Error Detection Algorithms"</a> by Ross
|
||||
Williams <a href="mailto:ross@ross.net">ross@ross.net</a>.)</p>
|
||||
|
||||
<pre><tt>
|
||||
byte value
|
||||
|
||||
22 0xXX LSB
|
||||
23 0xXX
|
||||
24 0xXX
|
||||
25 0xXX MSB
|
||||
</tt></pre>
|
||||
|
||||
<h4>page_segments</h4>
|
||||
|
||||
<p>The number of segment entries to appear in the segment table. The
|
||||
maximum number of 255 segments (255 bytes each) sets the maximum
|
||||
possible physical page size at 65307 bytes or just under 64kB (thus
|
||||
we know that a header corrupted so as destroy sizing/alignment
|
||||
information will not cause a runaway bitstream. We'll read in the
|
||||
page according to the corrupted size information that's guaranteed to
|
||||
be a reasonable size regardless, notice the checksum mismatch, drop
|
||||
sync and then look for recapture).</p>
|
||||
|
||||
<pre><tt>
|
||||
byte value
|
||||
|
||||
26 0x00-0xff (0-255)
|
||||
</tt></pre>
|
||||
|
||||
<h4>segment_table (containing packet lacing values)</h4>
|
||||
|
||||
<p>The lacing values for each packet segment physically appearing in
|
||||
this page are listed in contiguous order.</p>
|
||||
|
||||
<pre><tt>
|
||||
byte value
|
||||
|
||||
27 0x00-0xff (0-255)
|
||||
[...]
|
||||
n 0x00-0xff (0-255, n=page_segments+26)
|
||||
</tt></pre>
|
||||
|
||||
<p>Total page size is calculated directly from the known header size and
|
||||
lacing values in the segment table. Packet data segments follow
|
||||
immediately after the header.</p>
|
||||
|
||||
<p>Page headers typically impose a flat .25-.5% space overhead assuming
|
||||
nominal ~8k page sizes. The segmentation table needed for exact
|
||||
packet recovery in the streaming layer adds approximately .5-1%
|
||||
nominal assuming expected encoder behavior in the 44.1kHz, 128kbps
|
||||
stereo encodings.</p>
|
||||
|
||||
<div id="copyright">
|
||||
The Xiph Fish Logo is a
|
||||
trademark (™) of Xiph.Org.<br/>
|
||||
|
||||
These pages © 1994 - 2005 Xiph.Org. All rights reserved.
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -78,26 +78,27 @@ 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 logical and physical bitstream overview</a></li>
|
||||
<li><a href="framing.html">Ogg logical bitstream framing</a></li>
|
||||
<li><a href="oggstream.html">Ogg bitstream overview</a></li>
|
||||
<li><a href="framing.html">Ogg bitstream framing</a></li>
|
||||
<li><a href="ogg-multiplex.html">Ogg multi-stream multiplexing</a></li>
|
||||
<li><a href="skeleton.html">The Ogg Skeleton Metadata Bitstream</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>RFC documentation</h2>
|
||||
|
||||
<ul>
|
||||
<li><a href="rfc3533.txt">rfc3533: The Ogg Encapsulation Format Version 0</a></li>
|
||||
<li><a href="rfc3534.txt">rfc3534: The application/ogg Media Type</a></li>
|
||||
<li><a href="rfc5334.txt">rfc5334: Ogg Media Types</a></li>
|
||||
</ul>
|
||||
|
||||
<div id="copyright">
|
||||
The Xiph Fish Logo is a
|
||||
trademark (™) of Xiph.Org.<br/>
|
||||
|
||||
These pages © 1994 - 2005 Xiph.Org. All rights reserved.
|
||||
These pages © 1994 - 2010 Xiph.Org. All rights reserved.
|
||||
</div>
|
||||
|
||||
</body>
|
|
@ -0,0 +1,39 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
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_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_pageout_fill.html ogg_stream_reset.html\
|
||||
ogg_stream_reset_serialno.html ogg_stream_state.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_writecheck.html oggpack_writeclear.html\
|
||||
oggpack_writecopy.html oggpack_writeinit.html oggpack_writetrunc.html\
|
||||
overview.html reference.html style.css
|
||||
|
||||
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;
|
||||
|
|
@ -0,0 +1,526 @@
|
|||
# Makefile.in generated by automake 1.13.4 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2013 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.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
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@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = doc/libogg
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(dist_apidoc_DATA)
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
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 = 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)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
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@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
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@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||
LIB_AGE = @LIB_AGE@
|
||||
LIB_CURRENT = @LIB_CURRENT@
|
||||
LIB_REVISION = @LIB_REVISION@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OPT = @OPT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
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@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SIZE16 = @SIZE16@
|
||||
SIZE32 = @SIZE32@
|
||||
SIZE64 = @SIZE64@
|
||||
STRIP = @STRIP@
|
||||
USIZE16 = @USIZE16@
|
||||
USIZE32 = @USIZE32@
|
||||
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__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
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@
|
||||
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_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_pageout_fill.html ogg_stream_reset.html\
|
||||
ogg_stream_reset_serialno.html ogg_stream_state.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_writecheck.html oggpack_writeclear.html\
|
||||
oggpack_writecopy.html oggpack_writeinit.html oggpack_writetrunc.html\
|
||||
overview.html reference.html style.css
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( 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'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/libogg/Makefile
|
||||
.PRECIOUS: 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);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(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
|
||||
install-dist_apidocDATA: $(dist_apidoc_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@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; \
|
||||
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-dist_apidocDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@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: $(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; \
|
||||
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 -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(DATA)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(apidocdir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
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"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
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
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-dist_apidocDATA
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
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
|
||||
|
||||
|
||||
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.
|
||||
.NOEXPORT:
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -29,6 +29,10 @@ All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
|
|||
<td>Initializes a buffer for writing using this bitpacking library.</td>
|
||||
</tr>
|
||||
<tr valign=top>
|
||||
<td><a href="oggpack_writecheck.html">oggpack_writecheck</a></td>
|
||||
<td>Asynchronously checks error status of bitpacker write buffer.</td>
|
||||
</tr>
|
||||
<tr valign=top>
|
||||
<td><a href="oggpack_reset.html">oggpack_reset</a></td>
|
||||
<td>Clears and resets the buffer to the initial position.</td>
|
||||
</tr>
|
||||
|
@ -86,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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -34,7 +34,7 @@ All the <b>libogg</b> specific data structures are declared in "ogg/ogg.h".
|
|||
</tr>
|
||||
<tr valign=top>
|
||||
<td><a href="ogg_packet.html">ogg_packet</a></td>
|
||||
<td>This structure encapsulates the data and metadata for a single raw Ogg Vorbis packet.</td>
|
||||
<td>This structure encapsulates the data and metadata for a single Ogg packet.</td>
|
||||
</tr>
|
||||
<tr valign=top>
|
||||
<td><a href="ogg_sync_state.html">ogg_sync_state</a></td>
|
||||
|
@ -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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -53,6 +53,10 @@ All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
|
|||
<td>Frees the synchronization struct.</td>
|
||||
</tr>
|
||||
<tr valign=top>
|
||||
<td><a href="ogg_sync_check.html">ogg_sync_check</a></td>
|
||||
<td>Check for asynchronous errors.</td>
|
||||
</tr>
|
||||
<tr valign=top>
|
||||
<td><a href="ogg_sync_buffer.html">ogg_sync_buffer</a></td>
|
||||
<td>Exposes a buffer from the synchronization layer in order to read data.</td>
|
||||
</tr>
|
||||
|
@ -87,11 +91,11 @@ advancing decoding.</td>
|
|||
<hr noshade>
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -38,24 +38,36 @@ All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
|
|||
<td>Submits a raw packet to the streaming layer, so that it can be formed into a page.</td>
|
||||
</tr>
|
||||
<tr valign=top>
|
||||
<td><a href="ogg_stream_iovecin.html">ogg_stream_iovecin</a></td>
|
||||
<td>iovec version of ogg_stream_packetin() above.</td>
|
||||
</tr>
|
||||
<tr valign=top>
|
||||
<td><a href="ogg_stream_pageout.html">ogg_stream_pageout</a></td>
|
||||
<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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -43,6 +43,10 @@ All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
|
|||
<td>Frees the entire Ogg stream.</td>
|
||||
</tr>
|
||||
<tr valign=top>
|
||||
<td><a href="ogg_stream_check.html">ogg_stream_check</a></td>
|
||||
<td>Check for asyncronous errors.</td>
|
||||
</tr>
|
||||
<tr valign=top>
|
||||
<td><a href="ogg_stream_eos.html">ogg_stream_eos</a></td>
|
||||
<td>Indicates whether we are at the end of the stream.</td>
|
||||
</tr>
|
||||
|
@ -79,7 +83,7 @@ All the <b>libogg</b> specific functions are declared in "ogg/ogg.h".
|
|||
<td>Returns the sequential page number for this page.</td>
|
||||
</tr>
|
||||
<tr valign=top>
|
||||
<td><a href="ogg_packet_clear.html">ogg_packet_clear</a><td>
|
||||
<td><a href="ogg_packet_clear.html">ogg_packet_clear</a></td>
|
||||
<td>Clears the ogg_packet structure.</td>
|
||||
</tr>
|
||||
<tr valign=top>
|
||||
|
@ -92,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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.2 - 20140527</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 © 2000-2014 Xiph.Org</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.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
|
||||
</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 - 20011015</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -62,11 +62,11 @@ typedef struct {
|
|||
<hr noshade>
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2001 xiph.org foundation</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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 - 20011015</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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 - 20011218</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2001 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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 - 20011218</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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 - 200011015</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2001 xiph.org foundation</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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 version - 20011015</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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 - 20011218</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -48,11 +48,11 @@ None.
|
|||
<hr noshade>
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2001 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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 - 20011218</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -26,7 +26,7 @@
|
|||
<tr bgcolor=#cccccc>
|
||||
<td>
|
||||
<pre><b>
|
||||
int ogg_page_granulepos(ogg_page *og);
|
||||
ogg_in64_t ogg_page_granulepos(ogg_page *og);
|
||||
|
||||
</b></pre>
|
||||
</td>
|
||||
|
@ -51,11 +51,11 @@ int ogg_page_granulepos(ogg_page *og);
|
|||
<hr noshade>
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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 - 20011218</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -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 © 2001 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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 - 20011218</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
|||
<tr bgcolor=#cccccc>
|
||||
<td>
|
||||
<pre><b>
|
||||
int ogg_page_pageno(ogg_page *og);
|
||||
long ogg_page_pageno(ogg_page *og);
|
||||
|
||||
</b></pre>
|
||||
</td>
|
||||
|
@ -49,11 +49,11 @@ int ogg_page_pageno(ogg_page *og);
|
|||
<hr noshade>
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.2 - 20140527</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 © 2000-2014 Xiph.Org</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.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
|||
|
||||
<p><i>declared in "ogg/ogg.h";</i></p>
|
||||
|
||||
<p>This function clears the memory used by the <a href="ogg_sync_state.html">ogg_stream_state</a> struct, but does not free it.
|
||||
<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.
|
||||
<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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -17,8 +17,17 @@
|
|||
|
||||
<p><i>declared in "ogg/ogg.h";</i></p>
|
||||
|
||||
<p>This function frees the memory used by the <a href="ogg_stream_state.html">ogg_stream_state</a> struct.
|
||||
<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>This function frees the internal memory used by
|
||||
the <a href="ogg_stream_state.html">ogg_stream_state</a> struct as
|
||||
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
|
||||
<a href="ogg_stream_clear.html">ogg_stream_clear</a> instead.</p>
|
||||
|
||||
<br><br>
|
||||
<table border=0 color=black cellspacing=0 cellpadding=7>
|
||||
<tr bgcolor=#cccccc>
|
||||
|
@ -48,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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -38,7 +38,7 @@ int ogg_stream_eos(ogg_stream_state *os);
|
|||
|
||||
<h3>Return Values</h3>
|
||||
<blockquote>
|
||||
<li>1 if we are at the end of the stream.</li>
|
||||
<li>1 if we are at the end of the stream or an internal error occurred.</li>
|
||||
<li>
|
||||
0 if we have not yet reached the end of the stream.</li>
|
||||
</blockquote>
|
||||
|
@ -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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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>
|
||||
|
@ -43,7 +43,7 @@ int ogg_stream_flush(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <
|
|||
|
||||
<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.</li>
|
||||
<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>
|
||||
|
@ -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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.2 - 20140527</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 © 2000-2014 Xiph.Org</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.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -44,7 +44,7 @@ int ogg_stream_init(<a href="ogg_stream_state.html">ogg_stream_state</a> *os,int
|
|||
<li>
|
||||
0 if successful</li>
|
||||
<li>
|
||||
-1 if unsuccessful. If this fails, the ogg_stream_state was not properly declared before calling this function.</li>
|
||||
-1 if unsuccessful.</li>
|
||||
</blockquote>
|
||||
<p>
|
||||
|
||||
|
@ -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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.2 - 20140527</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, analagous 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, analagous 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 © 2000-2014 Xiph.Org</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.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -17,8 +17,15 @@
|
|||
|
||||
<p><i>declared in "ogg/ogg.h";</i></p>
|
||||
|
||||
<p>This function takes a packet and submits it to the bitstream. After this is called, we can continue submitting packets, or we can write out pages.
|
||||
<p>In a typical decoding situation, this should be used after filling a packet with data
|
||||
<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
|
||||
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>op</i> after this call has returned.
|
||||
|
||||
<br><br>
|
||||
<table border=0 color=black cellspacing=0 cellpadding=7>
|
||||
|
@ -43,7 +50,7 @@ int ogg_stream_packetin(ogg_stream_state *os,ogg_packet *op);
|
|||
<h3>Return Values</h3>
|
||||
<blockquote>
|
||||
<li>
|
||||
0 is always returned.</li>
|
||||
0 returned on success. -1 returned in the event of internal error.</li>
|
||||
</blockquote>
|
||||
<p>
|
||||
|
||||
|
@ -51,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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.1.3 - 20040927</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -17,8 +17,21 @@
|
|||
|
||||
<p><i>declared in "ogg/ogg.h";</i></p>
|
||||
|
||||
<p>This function assembles a raw data packet for output to the codec decoding engine. The data is already in the stream and broken into packet 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 indicates successful return of a packet.</p>
|
||||
<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
|
||||
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
|
||||
indicates successful return of a packet.</p>
|
||||
|
||||
<p>The <i>op</i> is filled in with pointers to memory managed by
|
||||
the stream state and is only valid until the next call. The client
|
||||
must copy the packet data if a longer lifetime is required.</p>
|
||||
|
||||
<br><br>
|
||||
<table border=0 color=black cellspacing=0 cellpadding=7>
|
||||
|
@ -39,15 +52,16 @@ href="ogg_stream_state.html">ogg_stream_state</a> struct. Before this function
|
|||
<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
|
||||
function is called.</dd>
|
||||
function is called. The pointers are only valid until the next call
|
||||
on this stream state.</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<h3>Return Values</h3>
|
||||
<blockquote>
|
||||
<ul>
|
||||
<li>-1 if we are out of sync and there is a gap in the data. Usually this will not be a fatal error. <i>op</i> contains a the first packet decodable after the hole.</li>
|
||||
<li>0 if there is insufficient data available to complete a packet. <i>op</i> has not been updated.
|
||||
<li>-1 if we are out of sync and there is a gap in the data. This is usually a recoverable error and subsequent calls to ogg_stream_packetout are likely to succeed. <i>op</i> has not been updated.</li>
|
||||
<li>0 if there is insufficient data available to complete a packet, or on unrecoverable internal error occurred. <i>op</i> has not been updated.
|
||||
<li>1 if a packet was assembled normally. <i>op</i> contains the next packet from the stream.</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
|
@ -58,11 +72,11 @@ function is called.</dd>
|
|||
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2004 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2010 xiph.org</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.1.3 - 20040927</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -9,11 +9,11 @@
|
|||
<table border=0 width=100%>
|
||||
<tr>
|
||||
<td><p class=tiny>libogg documentation</p></td>
|
||||
<td align=right><p class=tiny>libogg version 1.26 - 20010527</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h1>ogg_stream_packetout</h1>
|
||||
<h1>ogg_stream_packetpeek</h1>
|
||||
|
||||
<p><i>declared in "ogg/ogg.h";</i></p>
|
||||
|
||||
|
@ -58,8 +58,8 @@ packet?" check.</dd>
|
|||
<h3>Return Values</h3>
|
||||
<blockquote>
|
||||
<ul>
|
||||
<li>-1 if there's no packet available due to lost sync or a hole
|
||||
in the data.</li>
|
||||
<li>-1 if there's no packet available due to lost sync or a hole in the data.</li>
|
||||
<li>0 if there is insufficient data available to complete a packet, or on unrecoverable internal error occurred.</li>
|
||||
<li>1 if a packet is available.</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
|
@ -71,11 +71,11 @@ in the data.</li>
|
|||
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2001 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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 version 1.26 - 20010527</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -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, or that the page version was incorrect.</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 accurred.</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>libogg - function - ogg_stream_pageout</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.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h1>ogg_stream_pageout</h1>
|
||||
|
||||
<p><i>declared in "ogg/ogg.h";</i></p>
|
||||
|
||||
<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
|
||||
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
|
||||
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
|
||||
bitrate stream.</p>
|
||||
|
||||
<br><br>
|
||||
<table border=0 color=black cellspacing=0 cellpadding=7>
|
||||
<tr bgcolor=#cccccc>
|
||||
<td>
|
||||
<pre><b>
|
||||
int ogg_stream_pageout(<a href="ogg_stream_state.html">ogg_stream_state</a> *os, <a href="ogg_page.html">ogg_page</a> *og);
|
||||
</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>
|
||||
</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 © 2000-2010 xiph.org</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.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</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.2 - 20140527</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 © 2000-2010 xiph.org</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.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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>
|
||||
|
@ -39,7 +39,7 @@ int ogg_stream_reset(ogg_stream_state *os);
|
|||
<h3>Return Values</h3>
|
||||
<blockquote>
|
||||
<li>
|
||||
0 is always returned.</li>
|
||||
0 indicates success. nonzero is returned on internal error.</li>
|
||||
</blockquote>
|
||||
<p>
|
||||
|
||||
|
@ -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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -45,7 +45,7 @@ int ogg_stream_reset_serialno(ogg_stream_state *os, int serialno);
|
|||
<h3>Return Values</h3>
|
||||
<blockquote>
|
||||
<li>
|
||||
0 is always returned.</li>
|
||||
0 indicates success. nonzero is returned on internal error.</li>
|
||||
</blockquote>
|
||||
<p>
|
||||
|
||||
|
@ -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 © 2002 Xiph.org Foundation</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 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.0 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -108,11 +108,11 @@ typedef struct {
|
|||
<hr noshade>
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -45,7 +45,7 @@ char *ogg_sync_buffer(ogg_sync_state *oy, long size);
|
|||
<h3>Return Values</h3>
|
||||
<blockquote>
|
||||
<li>
|
||||
Returns a pointer to the newly allocated buffer.</li>
|
||||
Returns a pointer to the newly allocated buffer or NULL on error</li>
|
||||
</blockquote>
|
||||
<p>
|
||||
|
||||
|
@ -53,11 +53,11 @@ Returns a pointer to the newly allocated buffer.</li>
|
|||
<hr noshade>
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.2 - 20140527</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 © 2000-2014 Xiph.Org</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.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -17,7 +17,13 @@
|
|||
|
||||
<p><i>declared in "ogg/ogg.h";</i></p>
|
||||
|
||||
<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>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
|
||||
own code, use <a href="ogg_sync_clear.html">ogg_sync_clear</a> instead
|
||||
to release just the internal memory.</p>
|
||||
|
||||
<br><br>
|
||||
<table border=0 color=black cellspacing=0 cellpadding=7>
|
||||
|
@ -48,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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -44,11 +44,9 @@ int ogg_sync_pageout(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy, <a hr
|
|||
|
||||
<h3>Return Values</h3>
|
||||
<blockquote>
|
||||
<li>-1 if we were not properly synced and had to skip some bytes.</li>
|
||||
<li>
|
||||
0 if we need more data to verify a page.</li>
|
||||
<li>
|
||||
1 if we have a page.</li>
|
||||
<li>-1 returned if stream has not yet captured sync (bytes were skipped).</li>
|
||||
<li>0 returned if more data needed or an internal error occurred.</li>
|
||||
<li>1 indicated a page was synced and returned.</li>
|
||||
</blockquote>
|
||||
<p>
|
||||
|
||||
|
@ -65,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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -44,7 +44,7 @@ int ogg_sync_pageseek(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy, <a h
|
|||
<blockquote>
|
||||
<li>-n means that we skipped n bytes within the bitstream.</li>
|
||||
<li>
|
||||
0 means that the page isn't ready and we need more data. No bytes have been skipped.</li>
|
||||
0 means that the page isn't ready and we need more data, or than an internal error occurred. No bytes have been skipped.</li>
|
||||
<li>
|
||||
n means that the page was synced at the current location, with a page length of n bytes.
|
||||
</blockquote>
|
||||
|
@ -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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
<html>
|
||||
|
||||
<head>
|
||||
<title>libogg - datatype - ogg_sync_state</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.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h1>ogg_sync_state</h1>
|
||||
|
||||
<p><i>declared in "ogg/ogg.h"</i></p>
|
||||
|
||||
<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>
|
||||
|
||||
<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
|
||||
<tr bgcolor=#cccccc>
|
||||
<td>
|
||||
<pre><b>
|
||||
typedef struct {
|
||||
unsigned char *data;
|
||||
int storage;
|
||||
int fill;
|
||||
int returned;
|
||||
|
||||
int unsynced;
|
||||
int headerbytes;
|
||||
int bodybytes;
|
||||
} ogg_sync_state;
|
||||
</b></pre>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3>Relevant Struct Members</h3>
|
||||
<dl>
|
||||
<dt><i>data</i></dt>
|
||||
<dd>Pointer to buffered stream data.</dd>
|
||||
<dt><i>storage</i></dt>
|
||||
<dd>Current allocated size of the stream buffer held in <tt>*data</tt>.</dd>
|
||||
<dt><i>fill</i></dt>
|
||||
<dd>The number of valid bytes currently held in <tt>*data</tt>; functions as the buffer head pointer.</dd>
|
||||
<dt><i>returned</i></dt>
|
||||
<dd>The number of bytes at the head of <tt>*data</tt> that have already been returned as pages; functions as the buffer tail pointer.</dd>
|
||||
<dt><i>unsynced</i></dt>
|
||||
<dd>Synchronization state flag; nonzero if sync has not yet been attained or has been lost.</dd>
|
||||
<dt><i>headerbytes</i></dt>
|
||||
<dd>If synced, the number of bytes used by the synced page's header.</dd>
|
||||
<dt><i>bodybytes</i></dt>
|
||||
<dd>If synced, the number of bytes used by the synced page's body.</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<br><br>
|
||||
<hr noshade>
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
|
||||
</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -49,7 +49,7 @@ int ogg_sync_wrote(<a href="ogg_sync_state.html">ogg_sync_state</a> *oy, long by
|
|||
|
||||
<h3>Return Values</h3>
|
||||
<blockquote>
|
||||
<li>-1 if the number of bytes written overflows the internal storage of the <a href="ogg_sync_state.html">ogg_sync_state</a> struct.
|
||||
<li>-1 if the number of bytes written overflows the internal storage of the <a href="ogg_sync_state.html">ogg_sync_state</a> struct or an internal error occurred.
|
||||
<li>
|
||||
0 in all other cases.</li>
|
||||
</blockquote>
|
||||
|
@ -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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2002 Xiph.org Foundation</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 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.0 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -17,8 +17,13 @@
|
|||
|
||||
<p><i>declared in "ogg/ogg.h";</i></p>
|
||||
|
||||
<p>This function returns the total number of bytes currently in the <a href="oggpack_buffer.html">oggpack_buffer</a>'s internal buffer.
|
||||
<p>The return value is the number of <b>complete</b> bytes in the buffer. There may be extra (<8) bits.
|
||||
<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.
|
||||
<br><br>
|
||||
<table border=0 color=black cellspacing=0 cellpadding=7>
|
||||
<tr bgcolor=#cccccc>
|
||||
|
@ -48,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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2010 xiph.org</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.0 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2002 Xiph.org Foundation</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 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.0 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.2 - 20140527</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 © 2000-2014 Xiph.Org</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.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2002 Xiph.org Foundation</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 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.0 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -9,11 +9,11 @@
|
|||
<table border=0 width=100%>
|
||||
<tr>
|
||||
<td><p class=tiny>libogg documentation</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.0 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h1>oggpack_write</h1>
|
||||
<h1>oggpack_writetrunc</h1>
|
||||
|
||||
<p><i>declared in "ogg/ogg.h";</i></p>
|
||||
|
||||
|
@ -51,11 +51,11 @@ No values are returned.</li>
|
|||
<hr noshade>
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2002 Xiph.org Foundation</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 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.0 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</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 © 2000 xiph.org</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@xiph.org">team@xiph.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 Xiph.Org</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.0 - 20000615</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -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 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -25,10 +25,11 @@
|
|||
<br>
|
||||
<b>Bitpacking</b><br>
|
||||
<a href="oggpack_writeinit.html">oggpack_writeinit()</a><br>
|
||||
<a href="oggpack_writecheck.html">oggpack_writecheck()</a><br>
|
||||
<a href="oggpack_reset.html">oggpack_reset()</a><br>
|
||||
<a href="oggpack_writeclear.html">oggpack_writetrunc()</a><br>
|
||||
<a href="oggpack_writeclear.html">oggpack_writealign()</a><br>
|
||||
<a href="oggpack_writeclear.html">oggpack_writecopy()</a><br>
|
||||
<a href="oggpack_writetrunc.html">oggpack_writetrunc()</a><br>
|
||||
<a href="oggpack_writealign.html">oggpack_writealign()</a><br>
|
||||
<a href="oggpack_writecopy.html">oggpack_writecopy()</a><br>
|
||||
<a href="oggpack_writeclear.html">oggpack_writeclear()</a><br>
|
||||
<a href="oggpack_readinit.html">oggpack_readinit()</a><br>
|
||||
<a href="oggpack_write.html">oggpack_write()</a><br>
|
||||
|
@ -44,6 +45,7 @@
|
|||
<br>
|
||||
<b>Decoding-Related</b><br>
|
||||
<a href="ogg_sync_init.html">ogg_sync_init()</a><br>
|
||||
<a href="ogg_sync_check.html">ogg_sync_check()</a><br>
|
||||
<a href="ogg_sync_clear.html">ogg_sync_clear()</a><br>
|
||||
<a href="ogg_sync_destroy.html">ogg_sync_destroy()</a><br>
|
||||
<a href="ogg_sync_reset.html">ogg_sync_reset()</a><br>
|
||||
|
@ -58,10 +60,13 @@
|
|||
<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>
|
||||
<a href="ogg_stream_check.html">ogg_stream_check()</a><br>
|
||||
<a href="ogg_stream_clear.html">ogg_stream_clear()</a><br>
|
||||
<a href="ogg_stream_reset.html">ogg_stream_reset()</a><br>
|
||||
<a href="ogg_stream_reset_serialno.html">ogg_stream_reset_serialno()</a><br>
|
||||
|
@ -80,11 +85,11 @@
|
|||
<hr noshade>
|
||||
<table border=0 width=100%>
|
||||
<tr valign=top>
|
||||
<td><p class=tiny>copyright © 2002 Xiph.org Foundation</p></td>
|
||||
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/index.html">Ogg Vorbis</a><br><a href="mailto:team@vorbis.org">team@vorbis.org</a></p></td>
|
||||
<td><p class=tiny>copyright © 2000-2014 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 - 20020719</p></td>
|
||||
<td align=right><p class=tiny>libogg release 1.3.2 - 20140527</p></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
After Width: | Height: | Size: 53 KiB |
|
@ -104,9 +104,9 @@ time stamp (the Granule Position) that represents an absolute time
|
|||
landmark within the stream. After the pages representing stream
|
||||
headers (all logical stream headers occur at the beginning of a
|
||||
physical bitstream section before any logical stream data), logical
|
||||
stream data pages are arranged in strict, monotonically increasing
|
||||
order of chronological absolute time as specified by the granule
|
||||
position.</p>
|
||||
stream data pages are arranged in a physical bitstream in strict
|
||||
non-decreasing order by chronological absolute time as
|
||||
specified by the granule position.</p>
|
||||
|
||||
<p>The only exception to arranging pages in strictly ascending time order
|
||||
by granule position is those pages that do not set the granule
|
||||
|
@ -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>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>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><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 noticable 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
|
|
@ -0,0 +1,594 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
|
||||
<title>Ogg Documentation</title>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0 18px 0 18px;
|
||||
padding-bottom: 30px;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
color: #333333;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #3366cc;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
#xiphlogo {
|
||||
margin: 30px 0 16px 0;
|
||||
}
|
||||
|
||||
#content p {
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
h1, h1 a, h2, h2 a, h3, h3 a {
|
||||
font-weight: bold;
|
||||
color: #ff9900;
|
||||
margin: 1.3em 0 8px 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
li {
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
#copyright {
|
||||
margin-top: 30px;
|
||||
line-height: 1.5em;
|
||||
text-align: center;
|
||||
font-size: .8em;
|
||||
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>
|
||||
</div>
|
||||
|
||||
<h1>Ogg bitstream overview</h1>
|
||||
|
||||
<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>
|
||||
give distilled technical descriptions and references of the container
|
||||
mechanisms. This document is intended to aid understanding.
|
||||
|
||||
<h2>Container format design points</h2>
|
||||
|
||||
<p>Ogg is intended to be a simplest-possible container, concerned only
|
||||
with framing, ordering, and interleave. It can be used as a stream delivery
|
||||
mechanism, for media file storage, or as a building block toward
|
||||
implementing a more complex, non-linear container (for example, see
|
||||
the <a href="skeleton.html">Skeleton</a> or <a
|
||||
href="http://en.wikipedia.org/wiki/Annodex">Annodex/CMML</a>).
|
||||
|
||||
<p>The Ogg container is not intended to be a monolithic
|
||||
'kitchen-sink'. It exists only to frame and deliver in-order stream
|
||||
data and as such is vastly simpler than most other containers.
|
||||
Elementary and multiplexed streams are both constructed entirely from a
|
||||
single building block (an Ogg page) comprised of eight fields
|
||||
totalling twenty-eight bytes (the page header) a list of packet lengths
|
||||
(up to 255 bytes) and payload data (up to 65025 bytes). The structure
|
||||
of every page is the same. There are no optional fields or alternate
|
||||
encodings.
|
||||
|
||||
<p>Stream and media metadata is contained in Ogg and not built into
|
||||
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 metadata design
|
||||
flux.
|
||||
|
||||
<h3>Streaming</h3>
|
||||
|
||||
<p>The Ogg container is primarily a streaming format,
|
||||
encapsulating chronological, time-linear mixed media into a single
|
||||
delivery stream or file. The design is such that an application can
|
||||
always encode and/or decode all features of a bitstream in one pass
|
||||
with no seeking and minimal buffering. Seeking to provide optimized
|
||||
encoding (such as two-pass encoding) or interactive decoding (such as
|
||||
scrubbing or instant replay) is not disallowed or discouraged, however
|
||||
no container feature requires nonlinear access of the bitstream.
|
||||
|
||||
<h3>Variable Bit Rate, Variable Payload Size</h3>
|
||||
|
||||
<p>Ogg is designed to contain any size data payload with bounded,
|
||||
predictable efficiency. Ogg packets have no maximum size and a
|
||||
zero-byte minimum size. There is no restriction on size changes from
|
||||
packet to packet. Variable size packets do not require the use of any
|
||||
optional or additional container features. There is no optimal
|
||||
suggested packet size, though special consideration was paid to make
|
||||
sure 50-200 byte packets were no less efficient than larger packet
|
||||
sizes. The original design criteria was a 2% overhead at 50 byte
|
||||
packets, dropping to a maximum working overhead of 1% with larger
|
||||
packets, and a typical working overhead of .5-.7% for most practical
|
||||
uses.
|
||||
|
||||
<h3>Simple pagination</h3>
|
||||
|
||||
<p>Ogg is a byte-aligned container with no context-dependent, optional
|
||||
or variable-length fields. Ogg requires no repacking of codec data.
|
||||
The page structure is written out in-line as packet data is submitted
|
||||
to the streaming abstraction. In addition, it is possible to
|
||||
implement both Ogg mux and demux as MT-hot zero-copy abstractions (as
|
||||
is done in the Tremor sourcebase).
|
||||
|
||||
<h3>Capture</h3>
|
||||
|
||||
<p>Ogg is designed for efficient and immediate stream capture with
|
||||
high confidence. Although packets have no size limit in Ogg, pages
|
||||
are a maximum of just under 64kB meaning that any Ogg stream can be
|
||||
captured with confidence after seeing 128kB of data or less [worst
|
||||
case; typical figure is 6kB] from any random starting point in the
|
||||
stream.
|
||||
|
||||
<h3>Seeking</h3>
|
||||
|
||||
<p>Ogg implements simple coarse- and fine-grained seeking by design.
|
||||
|
||||
<p>Coarse seeking may be performed by simply 'moving the tone arm' to a
|
||||
new position and 'dropping the needle'. Rapid capture with
|
||||
accompanying timecode from any location in an Ogg file is guaranteed
|
||||
by the stream design. From the acquisition of the first timecode,
|
||||
all data needed to play back from that time code forward is ahead of
|
||||
the stream cursor.
|
||||
|
||||
<p>Ogg implements full sample-granularity seeking using an
|
||||
interpolated bisection search built on the capture and timecode
|
||||
mechanisms used by coarse seeking. As above, once a search finds
|
||||
the desired timecode, all data needed to play back from that time code
|
||||
forward is ahead of the stream cursor.
|
||||
|
||||
<p>Both coarse and fine seeking use the page structure and sequencing
|
||||
inherent to the Ogg format. All Ogg streams are fully seekable from
|
||||
creation; seekability is unaffected by truncation or missing data, and
|
||||
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 two primary reasons why Ogg transport forgoes an index:
|
||||
|
||||
<ol>
|
||||
|
||||
<li>An index is only marginally useful in Ogg for the complexity
|
||||
added; it adds no new functionality and seldom improves performance
|
||||
noticeably. Empirical testing shows that indexless interpolation
|
||||
search does not require many more seeks in practice than using an
|
||||
index would.
|
||||
|
||||
<li>'Optional' indexes encourage lazy implementations that can seek
|
||||
only when indexes are present, or that implement indexless seeking
|
||||
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.
|
||||
|
||||
</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>
|
||||
|
||||
<p>Ogg multiplexes streams by interleaving pages from multiple elementary streams into a
|
||||
multiplexed stream in time order. The multiplexed pages are not
|
||||
altered. Muxing an Ogg AV stream out of separate audio,
|
||||
video and data streams is akin to shuffling several decks of cards
|
||||
together into a single deck; the cards themselves remain unchanged.
|
||||
Demultiplexing is similarly simple (as the cards are marked).
|
||||
|
||||
<p>The goal of this design is to make the mux/demux operation as
|
||||
trivial as possible to allow live streaming systems to build and
|
||||
rebuild streams on the fly with minimal CPU usage and no additional
|
||||
storage or latency requirements.
|
||||
|
||||
<h3>Continuous and Discontinuous Media</h3>
|
||||
|
||||
<p>Ogg streams belong to one of two categories, "Continuous" streams and
|
||||
"Discontinuous" streams.
|
||||
|
||||
<p>A stream that provides a gapless, time-continuous media type with a
|
||||
fine-grained timebase is considered to be 'Continuous'. A continuous
|
||||
stream should never be starved of data. Examples of continuous data
|
||||
types include broadcast audio and video.
|
||||
|
||||
<p>A stream that delivers data in a potentially irregular pattern or
|
||||
with widely spaced timing gaps is considered to be 'Discontinuous'. A
|
||||
discontinuous stream may be best thought of as data representing
|
||||
scattered events; although they happen in order, they are typically
|
||||
unconnected data often located far apart. One example of a
|
||||
discontinuous stream types would be captioning such as <a
|
||||
href="http://wiki.xiph.org/OggKate">Ogg Kate</a>. Although it's
|
||||
possible to design captions as a continuous stream type, it's most
|
||||
natural to think of captions as widely spaced pieces of text with
|
||||
little happening between.
|
||||
|
||||
<p>The fundamental reason for distinction between continuous and
|
||||
discontinuous streams concerns buffering.
|
||||
|
||||
<h3>Buffering</h3>
|
||||
|
||||
<p>A continuous stream is, by definition, gapless. Ogg buffering is based
|
||||
on the simple premise of never allowing an active continuous stream
|
||||
to starve for data during decode; buffering works ahead until all
|
||||
continuous streams in a physical stream have data ready and no further.
|
||||
|
||||
<p>Discontinuous stream data is not assumed to be predictable. The
|
||||
buffering design takes discontinuous data 'as it comes' rather than
|
||||
working ahead to look for future discontinuous data for a potentially
|
||||
unbounded period. Thus, the buffering process makes no attempt to fill
|
||||
discontinuous stream buffers; their pages simply 'fall out' of the
|
||||
stream when continuous streams are handled properly.
|
||||
|
||||
<p>Buffering requirements in this design need not be explicitly
|
||||
declared or managed in the encoded stream. The decoder simply reads as
|
||||
much data as is necessary to keep all continuous stream types gapless
|
||||
and no more, with discontinuous data processed as it arrives in the
|
||||
continuous data. Buffering is implicitly optimal for the given
|
||||
stream. Because all pages of all data types are stamped with absolute
|
||||
timing information within the stream, inter-stream synchronization
|
||||
timing is always maintained without the need for explicitly declared
|
||||
buffer-ahead hinting.
|
||||
|
||||
<h3>Codec metadata</h3>
|
||||
|
||||
<p>Ogg does not replicate codec-specific metadata into the mux layer
|
||||
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 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 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.
|
||||
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
|
||||
codecs as possible. When an Ogg mux layer requires codec-specific
|
||||
information, it queries the codec (or a codec stub). This trades a
|
||||
more complex implementation for a simpler, more flexible
|
||||
specification.
|
||||
|
||||
<h3>Stream structure metadata</h3>
|
||||
|
||||
<p>The Ogg container itself does not define a metadata system for
|
||||
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 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
|
||||
structure metadata at all.
|
||||
|
||||
<h3>Frame accurate absolute position</h3>
|
||||
|
||||
<p>Every Ogg page is stamped with a 64 bit 'granule position' that
|
||||
serves as an absolute timestamp for mux and seeking. A few nifty
|
||||
little tricks are usually also embedded in the granpos state, but
|
||||
we'll leave those aside for the moment (strictly speaking, they're
|
||||
part of each codec's mapping, not Ogg).
|
||||
|
||||
<p>As previously mentioned above, granule positions are mapped into
|
||||
absolute timestamps by the codec, rather than being a hard timestamp.
|
||||
This allows maximally efficient use of the available 64 bits to
|
||||
address every sample/frame position without approximation while
|
||||
supporting new and previously unknown timebase encodings without
|
||||
needing to extend or update the mux layer. When a codec needs a novel
|
||||
timebase, it simply brings the code for that mapping along with it.
|
||||
This is not a theoretical curiosity; new, wholly novel timebases were
|
||||
deployed with the adoption of both Theora and Dirac. "Rolling INTRA"
|
||||
(keyframeless video) also benefits from novel use of the granule
|
||||
position.
|
||||
|
||||
<h2>Ogg stream arrangement</h2>
|
||||
|
||||
<h3>Packets, pages, and bitstreams</h3>
|
||||
|
||||
<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 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 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
|
||||
and elementary bitstreams in detail.
|
||||
|
||||
<h3>Multiplexed bitstreams</h3>
|
||||
|
||||
<p>Multiple logical/elementary bitstreams can be combined into a single
|
||||
<em>multiplexed bitstream</em> by interleaving whole pages from each
|
||||
contributing elementary stream in time order. The result is a single
|
||||
physical stream that multiplexes and frames multiple logical streams.
|
||||
Each logical stream is identified by the unique stream serial number
|
||||
stamped in its pages. A physical stream may include a 'meta-header'
|
||||
(such as the <a href="skeleton.html">Ogg Skeleton</a>) comprising its
|
||||
own Ogg page at the beginning of the physical stream. A decoder
|
||||
recovers the original logical/elementary bitstreams out of the
|
||||
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.
|
||||
|
||||
<h3>Chaining</h3>
|
||||
|
||||
<p>Multiple Ogg physical bitstreams may be concatenated into a single new
|
||||
stream; this is <em>chaining</em>. The bitstreams do not overlap; the
|
||||
final page of a given logical bitstream is immediately followed by the
|
||||
initial page of the next.</p>
|
||||
|
||||
<p>Each logical bitstream in a chain must have a unique serial number
|
||||
within the scope of the full physical bitstream, not only within a
|
||||
particular <em>link</em> or <em>segment</em> of the chain.</p>
|
||||
|
||||
<h3>Continuous and discontinuous streams</h3>
|
||||
|
||||
<p>Within Ogg, each stream must be declared (by the codec) to be
|
||||
continuous- or discontinuous-time. Most codecs treat all streams they
|
||||
use as either inherently continuous- or discontinuous-time, although
|
||||
this is not a requirement. A codec may, as part of its mapping, choose
|
||||
according to data in the initial header.
|
||||
|
||||
<p>Continuous-time pages are stamped by end-time, discontinuous pages
|
||||
are stamped by begin-time. Pages in a multiplexed stream are
|
||||
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' at the proper time when
|
||||
buffering the continuous streams. See 'Examples' for an illustration
|
||||
of the buffering mechanism.
|
||||
|
||||
<h2>Multiplexing Requirements</h2>
|
||||
|
||||
<p>Multiplexing requirements within Ogg are straightforward. When
|
||||
constructing a single-link (unchained) physical bitstream consisting
|
||||
of multiple elementary streams:
|
||||
|
||||
<ol>
|
||||
|
||||
<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><p> All auxiliary headers for all streams must follow. Order
|
||||
is unspecified. The final auxiliary header of each stream must flush
|
||||
its page.
|
||||
|
||||
<li><p>Data pages for each stream follow, interleaved in time order.
|
||||
|
||||
<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><p>Each grouped bitstream must have a unique serial number within the
|
||||
scope of the physical bitstream.</p>
|
||||
|
||||
<h3>chaining and multiplexing</h3>
|
||||
|
||||
<p>Multiplexed and/or unmultiplexed bitstreams may be chained
|
||||
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 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
|
||||
preceeding packet.
|
||||
|
||||
<li><p>Packets and pages must be arranged in ascending
|
||||
granule-position and time order.
|
||||
|
||||
</ol>
|
||||
|
||||
<h2>Examples</h2>
|
||||
|
||||
<em>[More to come shortly; this section is currently being revised and expanded]</em>
|
||||
|
||||
<p>Below, we present an example of a multiplexed and chained bitstream:</p>
|
||||
|
||||
<p><img src="stream.png" alt="stream"/></p>
|
||||
|
||||
<p>In this example, we see pages from five total logical bitstreams
|
||||
multiplexed into a physical bitstream. Note the following
|
||||
characteristics:</p>
|
||||
|
||||
<ol>
|
||||
<li>Multiplexed bitstreams in a given link begin together; all of the
|
||||
initial pages must appear before any data pages. When concurrently
|
||||
multiplexed groups are chained, the new group does not begin until all
|
||||
the bitstreams in the previous group have terminated.</li>
|
||||
|
||||
<li>The ordering of pages of concurrently multiplexed bitstreams is
|
||||
goverened by timestamp (not shown here); there is no regular
|
||||
interleaving order. Pages within a logical bitstream appear in
|
||||
sequence order.</li>
|
||||
</ol>
|
||||
|
||||
<div id="copyright">
|
||||
The Xiph Fish Logo is a
|
||||
trademark (™) of Xiph.Org.<br/>
|
||||
|
||||
These pages © 1994 - 2010 Xiph.Org. All rights reserved.
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 42 KiB |
|
@ -0,0 +1,787 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Network Working Group I. Goncalves
|
||||
Request for Comments: 5334 S. Pfeiffer
|
||||
Obsoletes: 3534 C. Montgomery
|
||||
Category: Standards Track Xiph
|
||||
September 2008
|
||||
|
||||
|
||||
Ogg Media Types
|
||||
|
||||
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.
|
||||
|
||||
Abstract
|
||||
|
||||
This document describes the registration of media types for the Ogg
|
||||
container format and conformance requirements for implementations of
|
||||
these types. This document obsoletes RFC 3534.
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 2
|
||||
2. Changes Since RFC 3534 . . . . . . . . . . . . . . . . . . 2
|
||||
3. Conformance and Document Conventions . . . . . . . . . . . 3
|
||||
4. Deployed Media Types and Compatibility . . . . . . . . . . 3
|
||||
5. Relation between the Media Types . . . . . . . . . . . . . 5
|
||||
6. Encoding Considerations . . . . . . . . . . . . . . . . . . 5
|
||||
7. Security Considerations . . . . . . . . . . . . . . . . . . 6
|
||||
8. Interoperability Considerations . . . . . . . . . . . . . . 7
|
||||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . 7
|
||||
10. Ogg Media Types . . . . . . . . . . . . . . . . . . . . . . 7
|
||||
10.1. application/ogg . . . . . . . . . . . . . . . . . . . . . . 7
|
||||
10.2. video/ogg . . . . . . . . . . . . . . . . . . . . . . . . . 8
|
||||
10.3. audio/ogg . . . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . 10
|
||||
12. Copying Conditions . . . . . . . . . . . . . . . . . . . . 10
|
||||
13. References . . . . . . . . . . . . . . . . . . . . . . . . 11
|
||||
13.1. Normative References . . . . . . . . . . . . . . . . . . . 11
|
||||
13.2. Informative References . . . . . . . . . . . . . . . . . . 11
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 1]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
1. Introduction
|
||||
|
||||
This document describes media types for Ogg, a data encapsulation
|
||||
format defined by the Xiph.Org Foundation for public use. Refer to
|
||||
"Introduction" in [RFC3533] and "Overview" in [Ogg] for background
|
||||
information on this container format.
|
||||
|
||||
Binary data contained in Ogg, such as Vorbis and Theora, has
|
||||
historically been interchanged using the application/ogg media type
|
||||
as defined by [RFC3534]. This document obsoletes [RFC3534] and
|
||||
defines three media types for different types of content in Ogg to
|
||||
reflect this usage in the IANA media type registry, to foster
|
||||
interoperability by defining underspecified aspects, and to provide
|
||||
general security considerations.
|
||||
|
||||
The Ogg container format is known to contain [Theora] or [Dirac]
|
||||
video, [Speex] (narrow-band and wide-band) speech, [Vorbis] or [FLAC]
|
||||
audio, and [CMML] timed text/metadata. As Ogg encapsulates binary
|
||||
data, it is possible to include any other type of video, audio,
|
||||
image, text, or, generally speaking, any time-continuously sampled
|
||||
data.
|
||||
|
||||
While raw packets from these data sources may be used directly by
|
||||
transport mechanisms that provide their own framing and packet-
|
||||
separation mechanisms (such as UDP datagrams or RTP), Ogg is a
|
||||
solution for stream based storage (such as files) and transport (such
|
||||
as TCP streams or pipes). The media types defined in this document
|
||||
are needed to correctly identify such content when it is served over
|
||||
HTTP, included in multi-part documents, or used in other places where
|
||||
media types [RFC2045] are used.
|
||||
|
||||
2. Changes Since RFC 3534
|
||||
|
||||
o The type "application/ogg" is redefined.
|
||||
|
||||
o The types "video/ogg" and "audio/ogg" are defined.
|
||||
|
||||
o New file extensions are defined.
|
||||
|
||||
o New Macintosh file type codes are defined.
|
||||
|
||||
o The codecs parameter is defined for optional use.
|
||||
|
||||
o The Ogg Skeleton extension becomes a recommended addition for
|
||||
content served under the new types.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 2]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
3. Conformance and Document Conventions
|
||||
|
||||
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 BCP 14, [RFC2119] and
|
||||
indicate requirement levels for compliant implementations.
|
||||
Requirements apply to all implementations unless otherwise stated.
|
||||
|
||||
An implementation is a software module that supports one of the media
|
||||
types defined in this document. Software modules may support
|
||||
multiple media types, but conformance is considered individually for
|
||||
each type.
|
||||
|
||||
Implementations that fail to satisfy one or more "MUST" requirements
|
||||
are considered non-compliant. Implementations that satisfy all
|
||||
"MUST" requirements, but fail to satisfy one or more "SHOULD"
|
||||
requirements, are said to be "conditionally compliant". All other
|
||||
implementations are "unconditionally compliant".
|
||||
|
||||
4. Deployed Media Types and Compatibility
|
||||
|
||||
The application/ogg media type has been used in an ad hoc fashion to
|
||||
label and exchange multimedia content in Ogg containers.
|
||||
|
||||
Use of the "application" top-level type for this kind of content is
|
||||
known to be problematic, in particular since it obfuscates video and
|
||||
audio content. This document thus defines the media types,
|
||||
|
||||
o video/ogg
|
||||
|
||||
o audio/ogg
|
||||
|
||||
which are intended for common use and SHOULD be used when dealing
|
||||
with video or audio content, respectively. This document also
|
||||
obsoletes the [RFC3534] definition of application/ogg and marks it
|
||||
for complex data (e.g., multitrack visual, audio, textual, and other
|
||||
time-continuously sampled data), which is not clearly video or audio
|
||||
data and thus not suited for either the video/ogg or audio/ogg types.
|
||||
Refer to the following section for more details.
|
||||
|
||||
An Ogg bitstream generally consists of one or more logical bitstreams
|
||||
that each consist of a series of header and data pages packetising
|
||||
time-continuous binary data [RFC3533]. The content types of the
|
||||
logical bitstreams may be identified without decoding the header
|
||||
pages of the logical bitstreams through use of a [Skeleton]
|
||||
bitstream. Using Ogg Skeleton is REQUIRED for content served under
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 3]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
the application/ogg type and RECOMMENDED for video/ogg and audio/ogg,
|
||||
as Skeleton contains identifiers to describe the different
|
||||
encapsulated data.
|
||||
|
||||
Furthermore, it is RECOMMENDED that implementations that identify a
|
||||
logical bitstream that they cannot decode SHOULD ignore it, while
|
||||
continuing to decode the ones they can. Such precaution ensures
|
||||
backward and forward compatibility with existing and future data.
|
||||
|
||||
These media types can optionally use the "codecs" parameter described
|
||||
in [RFC4281]. Codecs encapsulated in Ogg require a text identifier
|
||||
at the beginning of the first header page, hence a machine-readable
|
||||
method to identify the encapsulated codecs would be through this
|
||||
header. The following table illustrates how those header values map
|
||||
into strings that are used in the "codecs" parameter when dealing
|
||||
with Ogg media types.
|
||||
|
||||
Codec Identifier | Codecs Parameter
|
||||
-----------------------------------------------------------
|
||||
char[5]: 'BBCD\0' | dirac
|
||||
char[5]: '\177FLAC' | flac
|
||||
char[7]: '\x80theora' | theora
|
||||
char[7]: '\x01vorbis' | vorbis
|
||||
char[8]: 'CELT ' | celt
|
||||
char[8]: 'CMML\0\0\0\0' | cmml
|
||||
char[8]: '\213JNG\r\n\032\n' | jng
|
||||
char[8]: '\x80kate\0\0\0' | kate
|
||||
char[8]: 'OggMIDI\0' | midi
|
||||
char[8]: '\212MNG\r\n\032\n' | mng
|
||||
char[8]: 'PCM ' | pcm
|
||||
char[8]: '\211PNG\r\n\032\n' | png
|
||||
char[8]: 'Speex ' | speex
|
||||
char[8]: 'YUV4MPEG' | yuv4mpeg
|
||||
|
||||
An up-to-date version of this table is kept at Xiph.org (see
|
||||
[Codecs]).
|
||||
|
||||
Possible examples include:
|
||||
|
||||
o application/ogg; codecs="theora, cmml, ecmascript"
|
||||
|
||||
o video/ogg; codecs="theora, vorbis"
|
||||
|
||||
o audio/ogg; codecs=speex
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 4]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
5. Relation between the Media Types
|
||||
|
||||
As stated in the previous section, this document describes three
|
||||
media types that are targeted at different data encapsulated in Ogg.
|
||||
Since Ogg is capable of encapsulating any kind of data, the multiple
|
||||
usage scenarios have revealed interoperability issues between
|
||||
implementations when dealing with content served solely under the
|
||||
application/ogg type.
|
||||
|
||||
While this document does redefine the earlier definition of
|
||||
application/ogg, this media type will continue to embrace the widest
|
||||
net possible of content with the video/ogg and audio/ogg types being
|
||||
smaller subsets of it. However, the video/ogg and audio/ogg types
|
||||
take precedence in a subset of the usages, specifically when serving
|
||||
multimedia content that is not complex enough to warrant the use of
|
||||
application/ogg. Following this line of thought, the audio/ogg type
|
||||
is an even smaller subset within video/ogg, as it is not intended to
|
||||
refer to visual content.
|
||||
|
||||
As such, the application/ogg type is the recommended choice to serve
|
||||
content aimed at scientific and other applications that require
|
||||
various multiplexed signals or streams of continuous data, with or
|
||||
without scriptable control of content. For bitstreams containing
|
||||
visual, timed text, and any other type of material that requires a
|
||||
visual interface, but that is not complex enough to warrant serving
|
||||
under application/ogg, the video/ogg type is recommended. In
|
||||
situations where the Ogg bitstream predominantly contains audio data
|
||||
(lyrics, metadata, or cover art notwithstanding), it is recommended
|
||||
to use the audio/ogg type.
|
||||
|
||||
6. Encoding Considerations
|
||||
|
||||
Binary: The content consists of an unrestricted sequence of octets.
|
||||
|
||||
Note:
|
||||
|
||||
o Ogg encapsulated content is binary data and should be transmitted
|
||||
in a suitable encoding without CR/LF conversion, 7-bit stripping,
|
||||
etc.; base64 [RFC4648] is generally preferred for binary-to-text
|
||||
encoding.
|
||||
|
||||
o Media types described in this document are used for stream based
|
||||
storage (such as files) and transport (such as TCP streams or
|
||||
pipes); separate types are used to identify codecs such as in
|
||||
real-time applications for the RTP payload formats of Theora
|
||||
[ThRTP] video, Vorbis [RFC5215], or Speex [SpRTP] audio, as well
|
||||
as for identification of encapsulated data within Ogg through
|
||||
Skeleton.
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 5]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
7. Security Considerations
|
||||
|
||||
Refer to [RFC3552] for a discussion of terminology used in this
|
||||
section.
|
||||
|
||||
The Ogg encapsulation format is a container and only a carrier of
|
||||
content (such as audio, video, and displayable text data) with a very
|
||||
rigid definition. This format in itself is not more vulnerable than
|
||||
any other content framing mechanism.
|
||||
|
||||
Ogg does not provide for any generic encryption or signing of itself
|
||||
or its contained bitstreams. However, it encapsulates any kind of
|
||||
binary content and is thus able to contain encrypted and signed
|
||||
content data. It is also possible to add an external security
|
||||
mechanism that encrypts or signs an Ogg bitstream and thus provides
|
||||
content confidentiality and authenticity.
|
||||
|
||||
As Ogg encapsulates binary data, it is possible to include executable
|
||||
content in an Ogg bitstream. Implementations SHOULD NOT execute such
|
||||
content without prior validation of its origin by the end-user.
|
||||
|
||||
Issues may arise on applications that use Ogg for streaming or file
|
||||
transfer in a networking scenario. In such cases, implementations
|
||||
decoding Ogg and its encapsulated bitstreams have to ensure correct
|
||||
handling of manipulated bitstreams, of buffer overflows, and similar
|
||||
issues.
|
||||
|
||||
It is also possible to author malicious Ogg bitstreams, which attempt
|
||||
to call for an excessively large picture size, high sampling-rate
|
||||
audio, etc. Implementations SHOULD protect themselves against this
|
||||
kind of attack.
|
||||
|
||||
Ogg has an extensible structure, so that it is theoretically possible
|
||||
that metadata fields or media formats might be defined in the future
|
||||
which might be used to induce particular actions on the part of the
|
||||
recipient, thus presenting additional security risks. However, this
|
||||
type of capability is currently not supported in the referenced
|
||||
specification.
|
||||
|
||||
Implementations may fail to implement a specific security model or
|
||||
other means to prevent possibly dangerous operations. Such failure
|
||||
might possibly be exploited to gain unauthorized access to a system
|
||||
or sensitive information; such failure constitutes an unknown factor
|
||||
and is thus considered out of the scope of this document.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 6]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
8. Interoperability Considerations
|
||||
|
||||
The Ogg container format is device-, platform-, and vendor-neutral
|
||||
and has proved to be widely implementable across different computing
|
||||
platforms through a wide range of encoders and decoders. A broadly
|
||||
portable reference implementation [libogg] is available under the
|
||||
revised (3-clause) BSD license, which is a Free Software license.
|
||||
|
||||
The Xiph.Org Foundation has defined the specification,
|
||||
interoperability, and conformance and conducts regular
|
||||
interoperability testing.
|
||||
|
||||
The use of the Ogg Skeleton extension has been confirmed to not cause
|
||||
interoperability issues with existing implementations. Third parties
|
||||
are, however, welcome to conduct their own testing.
|
||||
|
||||
9. IANA Considerations
|
||||
|
||||
In accordance with the procedures set forth in [RFC4288], this
|
||||
document registers two new media types and redefines the existing
|
||||
application/ogg as defined in the following section.
|
||||
|
||||
10. Ogg Media Types
|
||||
|
||||
10.1. application/ogg
|
||||
|
||||
Type name: application
|
||||
|
||||
Subtype name: ogg
|
||||
|
||||
Required parameters: none
|
||||
|
||||
Optional parameters: codecs, whose syntax is defined in RFC 4281.
|
||||
See section 4 of RFC 5334 for a list of allowed values.
|
||||
|
||||
Encoding considerations: See section 6 of RFC 5334.
|
||||
|
||||
Security considerations: See section 7 of RFC 5334.
|
||||
|
||||
Interoperability considerations: None, as noted in section 8 of RFC
|
||||
5334.
|
||||
|
||||
Published specification: RFC 3533
|
||||
|
||||
Applications which use this media type: Scientific and otherwise that
|
||||
require various multiplexed signals or streams of data, with or
|
||||
without scriptable control of content.
|
||||
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 7]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
Additional information:
|
||||
|
||||
Magic number(s): The first four bytes, 0x4f 0x67 0x67 0x53,
|
||||
correspond to the string "OggS".
|
||||
|
||||
File extension(s): .ogx
|
||||
|
||||
RFC 3534 defined the file extension .ogg for application/ogg,
|
||||
which RFC 5334 obsoletes in favor of .ogx due to concerns where,
|
||||
historically, some implementations expect .ogg files to be solely
|
||||
Vorbis-encoded audio.
|
||||
|
||||
Macintosh File Type Code(s): OggX
|
||||
|
||||
Person & Email address to contact for further information: See
|
||||
"Authors' Addresses" section.
|
||||
|
||||
Intended usage: COMMON
|
||||
|
||||
Restrictions on usage: The type application/ogg SHOULD only be used
|
||||
in situations where it is not appropriate to serve data under the
|
||||
video/ogg or audio/ogg types. Data served under the application/ogg
|
||||
type SHOULD use the .ogx file extension and MUST contain an Ogg
|
||||
Skeleton logical bitstream to identify all other contained logical
|
||||
bitstreams.
|
||||
|
||||
Author: See "Authors' Addresses" section.
|
||||
|
||||
Change controller: The Xiph.Org Foundation.
|
||||
|
||||
10.2. video/ogg
|
||||
|
||||
Type name: video
|
||||
|
||||
Subtype name: ogg
|
||||
|
||||
Required parameters: none
|
||||
|
||||
Optional parameters: codecs, whose syntax is defined in RFC 4281.
|
||||
See section 4 of RFC 5334 for a list of allowed values.
|
||||
|
||||
Encoding considerations: See section 6 of RFC 5334.
|
||||
|
||||
Security considerations: See section 7 of RFC 5334.
|
||||
|
||||
Interoperability considerations: None, as noted in section 8 of RFC
|
||||
5334.
|
||||
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 8]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
Published specification: RFC 3533
|
||||
|
||||
Applications which use this media type: Multimedia applications,
|
||||
including embedded, streaming, and conferencing tools.
|
||||
|
||||
Additional information:
|
||||
|
||||
Magic number(s): The first four bytes, 0x4f 0x67 0x67 0x53,
|
||||
correspond to the string "OggS".
|
||||
|
||||
File extension(s): .ogv
|
||||
|
||||
Macintosh File Type Code(s): OggV
|
||||
|
||||
Person & Email address to contact for further information: See
|
||||
"Authors' Addresses" section.
|
||||
|
||||
Intended usage: COMMON
|
||||
|
||||
Restrictions on usage: The type "video/ogg" SHOULD be used for Ogg
|
||||
bitstreams containing visual, audio, timed text, or any other type of
|
||||
material that requires a visual interface. It is intended for
|
||||
content not complex enough to warrant serving under "application/
|
||||
ogg"; for example, a combination of Theora video, Vorbis audio,
|
||||
Skeleton metadata, and CMML captioning. Data served under the type
|
||||
"video/ogg" SHOULD contain an Ogg Skeleton logical bitstream.
|
||||
Implementations interacting with the type "video/ogg" SHOULD support
|
||||
multiplexed bitstreams.
|
||||
|
||||
Author: See "Authors' Addresses" section.
|
||||
|
||||
Change controller: The Xiph.Org Foundation.
|
||||
|
||||
10.3. audio/ogg
|
||||
|
||||
Type name: audio
|
||||
|
||||
Subtype name: ogg
|
||||
|
||||
Required parameters: none
|
||||
|
||||
Optional parameters: codecs, whose syntax is defined in RFC 4281.
|
||||
See section 4 of RFC 5334 for a list of allowed values.
|
||||
|
||||
Encoding considerations: See section 6 of RFC 5334.
|
||||
|
||||
Security considerations: See section 7 of RFC 5334.
|
||||
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 9]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
Interoperability considerations: None, as noted in section 8 of RFC
|
||||
5334.
|
||||
|
||||
Published specification: RFC 3533
|
||||
|
||||
Applications which use this media type: Multimedia applications,
|
||||
including embedded, streaming, and conferencing tools.
|
||||
|
||||
Additional information:
|
||||
|
||||
Magic number(s): The first four bytes, 0x4f 0x67 0x67 0x53,
|
||||
correspond to the string "OggS".
|
||||
|
||||
File extension(s): .oga, .ogg, .spx
|
||||
|
||||
Macintosh File Type Code(s): OggA
|
||||
|
||||
Person & Email address to contact for further information: See
|
||||
"Authors' Addresses" section.
|
||||
|
||||
Intended usage: COMMON
|
||||
|
||||
Restrictions on usage: The type "audio/ogg" SHOULD be used when the
|
||||
Ogg bitstream predominantly contains audio data. Content served
|
||||
under the "audio/ogg" type SHOULD have an Ogg Skeleton logical
|
||||
bitstream when using the default .oga file extension. The .ogg and
|
||||
.spx file extensions indicate a specialization that requires no
|
||||
Skeleton due to backward compatibility concerns with existing
|
||||
implementations. In particular, .ogg is used for Ogg files that
|
||||
contain only a Vorbis bitstream, while .spx is used for Ogg files
|
||||
that contain only a Speex bitstream.
|
||||
|
||||
Author: See "Authors' Addresses" section.
|
||||
|
||||
Change controller: The Xiph.Org Foundation.
|
||||
|
||||
11. Acknowledgements
|
||||
|
||||
The authors gratefully acknowledge the contributions of Magnus
|
||||
Westerlund, Alfred Hoenes, and Peter Saint-Andre.
|
||||
|
||||
12. Copying Conditions
|
||||
|
||||
The authors agree to grant third parties the irrevocable right to
|
||||
copy, use and distribute the work, with or without modification, in
|
||||
any medium, without royalty, provided that, unless separate
|
||||
permission is granted, redistributed modified works do not contain
|
||||
misleading author, version, name of work, or endorsement information.
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 10]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
13. References
|
||||
|
||||
13.1. Normative References
|
||||
|
||||
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
|
||||
Extensions (MIME) Part One: Format of Internet Message
|
||||
Bodies", RFC 2045, November 1996.
|
||||
|
||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||
|
||||
[RFC3533] Pfeiffer, S., "The Ogg Encapsulation Format Version 0",
|
||||
RFC 3533, May 2003.
|
||||
|
||||
[RFC4281] Gellens, R., Singer, D., and P. Frojdh, "The Codecs
|
||||
Parameter for "Bucket" Media Types", RFC 4281,
|
||||
November 2005.
|
||||
|
||||
[RFC4288] Freed, N. and J. Klensin, "Media Type Specifications and
|
||||
Registration Procedures", BCP 13, RFC 4288,
|
||||
December 2005.
|
||||
|
||||
13.2. Informative References
|
||||
|
||||
[CMML] Pfeiffer, S., Parker, C., and A. Pang, "The Continuous
|
||||
Media Markup Language (CMML)", Work in Progress,
|
||||
March 2006.
|
||||
|
||||
[Codecs] Pfeiffer, S. and I. Goncalves, "Specification of MIME
|
||||
types and respective codecs parameter", July 2008,
|
||||
<http://wiki.xiph.org/index.php/MIMETypesCodecs>.
|
||||
|
||||
[Dirac] Dirac Group, "Dirac Specification",
|
||||
<http://diracvideo.org/specifications/>.
|
||||
|
||||
[FLAC] Coalson, J., "The FLAC Format",
|
||||
<http://flac.sourceforge.net/format.html>.
|
||||
|
||||
[libogg] Xiph.Org Foundation, "The libogg API", June 2000,
|
||||
<http://xiph.org/ogg/doc/libogg>.
|
||||
|
||||
[Ogg] Xiph.Org Foundation, "Ogg bitstream documentation: Ogg
|
||||
logical and physical bitstream overview, Ogg logical
|
||||
bitstream framing, Ogg multi-stream multiplexing",
|
||||
<http://xiph.org/ogg/doc>.
|
||||
|
||||
[RFC3534] Walleij, L., "The application/ogg Media Type", RFC 3534,
|
||||
May 2003.
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 11]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
[RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC
|
||||
Text on Security Considerations", BCP 72, RFC 3552,
|
||||
July 2003.
|
||||
|
||||
[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
|
||||
Encodings", RFC 4648, October 2006.
|
||||
|
||||
[RFC5215] Barbato, L., "RTP Payload Format for Vorbis Encoded
|
||||
Audio", RFC 5215, August 2008.
|
||||
|
||||
[Skeleton] Pfeiffer, S. and C. Parker, "The Ogg Skeleton Metadata
|
||||
Bitstream", November 2007,
|
||||
<http://xiph.org/ogg/doc/skeleton.html>.
|
||||
|
||||
[Speex] Valin, J., "The Speex Codec Manual", February 2002,
|
||||
<http://speex.org/docs/manual/speex-manual>.
|
||||
|
||||
[SpRTP] Herlein, G., Valin, J., Heggestad, A., and A. Moizard,
|
||||
"RTP Payload Format for the Speex Codec", Work
|
||||
in Progress, February 2008.
|
||||
|
||||
[Theora] Xiph.Org Foundation, "Theora Specification",
|
||||
October 2007, <http://theora.org/doc/Theora.pdf>.
|
||||
|
||||
[ThRTP] Barbato, L., "RTP Payload Format for Theora Encoded
|
||||
Video", Work in Progress, June 2006.
|
||||
|
||||
[Vorbis] Xiph.Org Foundation, "Vorbis I Specification", July 2004,
|
||||
<http://xiph.org/vorbis/doc/Vorbis_I_spec.html>.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 12]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
Authors' Addresses
|
||||
|
||||
Ivo Emanuel Goncalves
|
||||
Xiph.Org Foundation
|
||||
21 College Hill Road
|
||||
Somerville, MA 02144
|
||||
US
|
||||
|
||||
EMail: justivo@gmail.com
|
||||
URI: xmpp:justivo@gmail.com
|
||||
|
||||
|
||||
Silvia Pfeiffer
|
||||
Xiph.Org Foundation
|
||||
|
||||
EMail: silvia@annodex.net
|
||||
URI: http://annodex.net/
|
||||
|
||||
|
||||
Christopher Montgomery
|
||||
Xiph.Org Foundation
|
||||
|
||||
EMail: monty@xiph.org
|
||||
URI: http://xiph.org
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 13]
|
||||
|
||||
RFC 5334 Ogg Media Types September 2008
|
||||
|
||||
|
||||
Full Copyright Statement
|
||||
|
||||
Copyright (C) The IETF Trust (2008).
|
||||
|
||||
This document is subject to the rights, licenses and restrictions
|
||||
contained in BCP 78, and except as set forth therein, the authors
|
||||
retain all their rights.
|
||||
|
||||
This document and the information contained herein are provided on an
|
||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
|
||||
THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
|
||||
|
||||
Intellectual Property
|
||||
|
||||
The IETF takes no position regarding the validity or scope of any
|
||||
Intellectual Property Rights 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; nor does it represent that it has
|
||||
made any independent effort to identify any such rights. Information
|
||||
on the procedures with respect to rights in RFC documents can be
|
||||
found in BCP 78 and BCP 79.
|
||||
|
||||
Copies of IPR disclosures made to the IETF Secretariat 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 implementers or users of this
|
||||
specification can be obtained from the IETF on-line IPR repository at
|
||||
http://www.ietf.org/ipr.
|
||||
|
||||
The IETF invites any interested party to bring to its attention any
|
||||
copyrights, patents or patent applications, or other proprietary
|
||||
rights that may cover technology that may be required to implement
|
||||
this standard. Please address the information to the IETF at
|
||||
ietf-ipr@ietf.org.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Goncalves, et al. Standards Track [Page 14]
|
||||
|
|
@ -0,0 +1,222 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html dir="ltr" lang="en">
|
||||
<head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>The Ogg Skeleton Metadata Bitstream</title>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 0 18px 0 18px;
|
||||
padding-bottom: 30px;
|
||||
font-family: Verdana, "DejaVu Sans", sans-serif;
|
||||
color: #333333;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #3366cc;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
#xiphlogo {
|
||||
margin: 30px 0 16px 0;
|
||||
}
|
||||
|
||||
#content p {
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
h1, h1 a, h2, h2 a, h3, h3 a {
|
||||
font-weight: bold;
|
||||
color: #ff9900;
|
||||
margin: 1.3em 0 8px 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
li {
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
#copyright {
|
||||
margin-top: 30px;
|
||||
line-height: 1.5em;
|
||||
text-align: center;
|
||||
font-size: .8em;
|
||||
color: #888888;
|
||||
clear: both;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="xiphlogo">
|
||||
<a href="http://xiph.org/"><img src="fish_xiph_org.png" alt="Fish Logo and Xiph.org"></a>
|
||||
</div>
|
||||
|
||||
<h1>The Ogg Skeleton Metadata Bitstream</h1>
|
||||
|
||||
<h2>Overview</h2>
|
||||
|
||||
<p><strong>Ogg Skeleton</strong> provides structuring information for multitrack <a href="//xiph.org/ogg">Ogg</a> files. It is compatible with Ogg <a rel="external" href="//theora.org">Theora</a> and provides extra clues for synchronization and content negotiation such as language selection.</p>
|
||||
|
||||
<p>Ogg is a generic container format for time-continuous data streams, enabling interleaving of several tracks of frame-wise encoded content in a time-multiplexed manner. As an example, an Ogg physical bitstream could encapsulate several tracks of video encoded in Theora and multiple tracks of audio encoded in Speex or Vorbis or FLAC at the same time. A player that decodes such a bitstream could then, for example, play one video channel as the main video playback, alpha-blend another one on top of it (e.g. a caption track), play a main Vorbis audio together with several FLAC audio tracks simultaneously (e.g. as sound effects), and provide a choice of Speex channels (e.g. providing commentary in different languages). Such a file is generally possible to create with Ogg, it is however not possible to generically parse such a file, seek on it, understand what codecs are contained in such a file, and dynamically handle and play back such content.</p>
|
||||
|
||||
<p>Ogg does not know anything about the content it carries and leaves it to the media mapping of each codec to declare and describe itself. There is no meta information available at the Ogg level about the content tracks encapsulated within an Ogg physical bitstream. This is particularly a problem if you don't have all the decoder libraries available and just want to parse an Ogg file to find out what type of data it encapsulates (such as the "file" command under *nix to determine what file it is through magic numbers), or want to seek to a temporal offset without having to decode the data (such as on a Web server that just serves out Ogg files and parts thereof).</p>
|
||||
|
||||
<p>Ogg Skeleton is being designed to overcome these problems. Ogg Skeleton is a logical bitstream within an Ogg stream that contains information about the other encapsulated logical bitstreams. For each logical bitstream it provides information such as its media type, and explains the way the granulepos field in Ogg pages is mapped to time.</p>
|
||||
|
||||
<p>Ogg Skeleton is also designed to allow the creation of substreams from Ogg physical bitstreams that retain the original timing information. For example, when cutting out the segment between the 7th and the 59th second of an Ogg file, it would be nice to continue to start this cut out file with a playback time of 7 seconds and not of 0. This is of particular interest if you're streaming this file from a Web server after a query for a temporal subpart such as in http://example.com/video.ogv?t=7-59</p>
|
||||
|
||||
<h2>Specification</h2>
|
||||
|
||||
<h3>How to describe the logical bitstreams within an Ogg container?</h3>
|
||||
|
||||
<p>The following information about a logical bitstream is of interest to contain as meta information in the Skeleton:</p>
|
||||
<ul>
|
||||
<li>the serial number: it identifies a content track</li>
|
||||
<li>the mime type: it identifies the content type</li>
|
||||
<li>other generic name-value fields that can provide meta information such as the language of a track or the video height and width</li>
|
||||
<li>the number of header packets: this informs a parser about the number of actual header packets in an Ogg logical bitstream</li>
|
||||
<li>the granule rate: the granule rate represents the data rate in Hz at which content is sampled for the particular logical bitstream, allowing to map a granule position to time by calculating "granulepos / granulerate"</li>
|
||||
<li>the preroll: the number of past content packets to take into account when decoding the current Ogg page, which is necessary for seeking (vorbis has generally 2, speex 3)</li>
|
||||
<li>the granuleshift: the number of lower bits from the granulepos field that are used to provide position information for sub-seekable units (like the keyframe shift in theora)</li>
|
||||
<li>a basetime: it provides a mapping for granule position 0 (for all logical bitstreams) to a playback time; an example use: most content in professional analog video creation actually starts at a time of 1 hour and thus adding this additional field allows them retain this mapping on digitizing their content</li>
|
||||
<li>a UTC time: it provides a mapping for granule position 0 (for all logical bitstreams) to a real-world clock time allowing to remember e.g. the recording or broadcast time of some content</li>
|
||||
</ul>
|
||||
|
||||
<h3>How to allow the creation of substreams from an Ogg physical bitstream?</h3>
|
||||
|
||||
<p>When cutting out a subpart of an Ogg physical bitstream, the aim is to keep all the content pages intact (including the framing and granule positions) and just change some information in the Skeleton that allows reconstruction of the accurate time mapping. When remultiplexing such a bitstream, it is necessary to take into account all the different contained logical bitstreams. A given cut-in time maps to several different byte positions in the Ogg physical bitstream because each logical bitstream has its relevant information for that time at a different location. In addition, the resolution of each logical bitstream may not be high enough to accommodate for the given cut-in time and thus there may be some surplus information necessary to be remuxed into the new bitstream.</p>
|
||||
|
||||
<p>The following information is necessary to be added to the Skeleton to allow a correct presentation of a subpart of an Ogg bitstream:</p>
|
||||
<ul>
|
||||
<li>the presentation time: this is the actual cut-in time and all logical bitstreams are meant to start presenting from this time onwards, not from the time their data starts, which may be some time before that (because this time may have mapped right into the middle of a packet, or because the logical bitstream has a preroll or a keyframe shift)</li>
|
||||
<li>the basegranule: this represents the granule number with which this logical bitstream starts in the remuxed stream and provides for each logical bitstream the accurate start time of its data stream; this information is necessary to allow correct decoding and timing of the first data packets contained in a logcial bitstream of a remuxed Ogg stream</li>
|
||||
</ul>
|
||||
|
||||
<h3>Ogg Skeleton version 3.0 Format Specification</h3>
|
||||
|
||||
<p>Adding the above information into an Ogg bitstream without breaking existing Ogg functionality and code requires the use of a logical bitstream for Ogg Skeleton. This logical bitstream may be ignored on decoding such that existing players can still continue to play back Ogg files that have a Skeleton bitstream. Skeleton enriches the Ogg bitstream to provide meta information about structure and content of the Ogg bitstream.</p>
|
||||
|
||||
<p>The Skeleton logical bitstream starts with an ident header that contains information about all of the logical bitstreams and is mapped into the Skeleton bos page. The first 8 bytes provide the magic identifier "fishead\0".
|
||||
After the fishead follows a set of secondary header packets, each of which contains information about one logical bitstream. These secondary header packets are identified by an 8 byte code of "fisbone\0". The Skeleton logical bitstream has no actual content packets. Its eos page is included into the stream before any data pages of the other logical bitstreams appear and contains a packet of length 0.</p>
|
||||
|
||||
<p>The fishead ident header looks as follows:</p>
|
||||
<pre>
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Identifier 'fishead\0' | 0-3
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 4-7
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Version major | Version minor | 8-11
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Presentationtime numerator | 12-15
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 16-19
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Presentationtime denominator | 20-23
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 24-27
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Basetime numerator | 28-31
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 32-35
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Basetime denominator | 36-39
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 40-43
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| UTC | 44-47
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 48-51
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 52-55
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 56-59
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 60-63
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
</pre>
|
||||
<p>The version fields provide version information for the Skeleton track, currently being 3.0 (the number having evolved within the Annodex project).</p>
|
||||
|
||||
<p>Presentation time and basetime are specified as a rational number, the denominator providing the temporal resolution at which the time is given (e.g. to specify time in milliseconds, provide a denominator of 1000).</p>
|
||||
|
||||
<p>The fisbone secondary header packet looks as follows:</p>
|
||||
<pre>
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Identifier 'fisbone\0' | 0-3
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 4-7
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Offset to message header fields | 8-11
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Serial number | 12-15
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Number of header packets | 16-19
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Granulerate numerator | 20-23
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 24-27
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Granulerate denominator | 28-31
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 32-35
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Basegranule | 36-39
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| | 40-43
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Preroll | 44-47
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Granuleshift | Padding/future use | 48-51
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Message header fields ... | 52-
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
</pre>
|
||||
<p>The mime type is provided as a message header field specified in the same way that HTTP header fields are given (e.g. "Content-Type: audio/vorbis"). Further meta information (such as language and screen size) are also included as message header fields. The offset to the message header fields at the beginning of a fisbone packet is included for forward compatibility - to allow further fields to be included into the packet without disrupting the message header field parsing.</p>
|
||||
|
||||
<p>The granule rate is again given as a rational number in the same way that presentation time and basetime were provided above.</p>
|
||||
|
||||
<p>A further restriction on how to encapsulate Skeleton into Ogg is proposed to allow for easier parsing:</p>
|
||||
<ul>
|
||||
<li>there can only be one Skeleton logical bitstream in a Ogg bitstream</li>
|
||||
<li>the Skeleton bos page is the very first bos page in the Ogg stream such that it can be identified straight away and decoders don't get confused about it being e.g. Ogg Vorbis without this meta information</li>
|
||||
<li>the bos pages of all the other logical bistreams come next (a requirement of Ogg)</li>
|
||||
<li>the secondary header pages of all logical bitstreams come next, including Skeleton's secondary header packets</li>
|
||||
<li>the Skeleton eos page end the control section of the Ogg stream before any content pages of any of the other logical bitstreams appear</li>
|
||||
</ul>
|
||||
|
||||
<div id="copyright">
|
||||
The Xiph Fish Logo is a
|
||||
trademark (™) of the Xiph.Org Foundation.<br>
|
||||
|
||||
These pages © 1994 - 2008 Xiph.Org Foundation. Some rights reserved.
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |