- C 97.6%
- M4 1%
- CMake 0.5%
- Perl 0.3%
- Makefile 0.2%
- Other 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The page seeking code includes a special case for when we cannot find a page with a granuleposition smaller than the target, in which case it starts reading from the beginning of the stream. However, it did so by assuming that the page that was found after the target was right at the beginning. This is not actually required: if the initial bisection starts somewhere after the beginning, and finds valid pages, but only pages with a granuleposition that comes after the target, it will only ever walk the bisection point back to 'begin+1', explicitly _excluding_ reading the page at the beginning. The first page is still the best candidate: its granuleposition might even come before the target as desired (we haven't checked). But this means that the page struct will _not_ be filled with the contents of the first page when the loop exits. In fact, if _get_next_page() most recently returned an error (say, because the read loop tried to find a page starting at begin+1 instead of at begin), the contents of the page struct might not be valid at all, due to a realloc() of the backing store. Either way, we may need to explicitly read the first page. Because the got_page flag is only used for this special case, we convert it to store the offset of the page that was read. Only in the case where that offset is the start of the link can we guarantee the contents of the page struct are valid. That also means we cannot validate the serialno in the page struct after the search. Instead, we move the line that sets got_page to after where the serialno is validated in the read loop, so there is no need to validate it after the search. Fixes #2361 |
||
| cmake | ||
| contrib/oss-fuzz | ||
| debian | ||
| doc | ||
| examples | ||
| include | ||
| lib | ||
| m4 | ||
| macosx | ||
| symbian | ||
| test | ||
| vq | ||
| win32 | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .travis.yml | ||
| .ycm_extra_conf.py | ||
| appveyor.yml | ||
| AUTHORS | ||
| autogen.sh | ||
| Brewfile | ||
| CHANGES | ||
| CMakeLists.txt | ||
| configure.ac | ||
| COPYING | ||
| libvorbis.spec.in | ||
| Makefile.am | ||
| README.md | ||
| releases.sha2 | ||
| vorbis-uninstalled.pc.in | ||
| vorbis.m4 | ||
| vorbis.pc.in | ||
| vorbisenc-uninstalled.pc.in | ||
| vorbisenc.pc.in | ||
| vorbisfile-uninstalled.pc.in | ||
| vorbisfile.pc.in | ||
Vorbis
Vorbis is a general purpose audio and music encoding format contemporary to MPEG-4's AAC and TwinVQ, the next generation beyond MPEG audio layer 3. Unlike the MPEG sponsored formats (and other proprietary formats such as RealAudio G2 and Windows' flavor of the month), the Vorbis CODEC specification belongs to the public domain. All the technical details are published and documented, and any software entity may make full use of the format without license fee, royalty or patent concerns.
This package contains:
-
libvorbis, a BSD-style license software implementation of the Vorbis specification by the Xiph.Org Foundation (https://xiph.org/)
-
libvorbisfile, a BSD-style license convenience library built on Vorbis designed to simplify common uses
-
libvorbisenc, a BSD-style license library that provides a simple, programmatic encoding setup interface
-
example code making use of libogg, libvorbis, libvorbisfile and libvorbisenc
What's here
This source distribution includes libvorbis and an example encoder/player to demonstrate use of libvorbis as well as documentation on the Ogg Vorbis audio coding format.
You'll need libogg (distributed separately) to compile this library. A more comprehensive set of utilities is available in the vorbis-tools package.
Directory:
-
libThe source for the libraries, a BSD-license implementation of the public domain Ogg Vorbis audio encoding format. -
includeLibrary API headers -
debianRules/spec files for building Debian .deb packages -
docVorbis documentation -
examplesExample code illustrating programmatic use of libvorbis, libvorbisfile and libvorbisenc -
macosxProject files for MacOS X. -
win32Win32 projects files and build automation -
vqInternal utilities for training/building new LSP/residue and auxiliary codebooks.
Contact
The Ogg homepage is located at 'https://xiph.org/ogg/'. Vorbis's homepage is located at 'https://xiph.org/vorbis/'. Up to date technical documents, contact information, source code and pre-built utilities may be found there.
Building
Building from master
Development source is under git revision control at https://gitlab.xiph.org/xiph/vorbis.git. You will also need the newest versions of autoconf, automake, libtool and pkg-config in order to compile Vorbis from development source. A configure script is provided for you in the source tarball distributions.
./autogen.sh
./configure
make
and as root if desired:
make install
This will install the Vorbis libraries (static and shared) into /usr/local/lib, includes into /usr/local/include and API manpages (once we write some) into /usr/local/man.
Documentation building requires xsltproc and pdfxmltex.
Building from tarball distributions
./configure
make
and optionally (as root):
make install
Building RPM packages
after normal configuring:
make dist
rpm -ta libvorbis-<version>.tar.gz
Building with CMake
Ogg supports building using CMake. CMake is a meta build system that generates native projects for each platform.
To generate projects just run cmake replacing YOUR-PROJECT-GENERATOR with a proper generator from a list here:
cmake -G YOUR-PROJECT-GENERATOR .
Note that by default cmake generates projects that will build static libraries.
To generate projects that will build dynamic library use BUILD_SHARED_LIBS option like this:
cmake -G YOUR-PROJECT-GENERATOR -DBUILD_SHARED_LIBS=1 .
After projects are generated use them as usual
Building on Windows
Use proper generator for your Visual Studio version like:
cmake -G "Visual Studio 12 2013" .
Building on Mac OS X
Use Xcode generator. To build framework run:
cmake -G Xcode -DBUILD_FRAMEWORK=1 .
Building on Linux
Use Makefile generator which is default one.
cmake .
make
License
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 COPYRIGHT (C) 1994-2020 by the Xiph.Org Foundation https://xiph.org/