Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • xiph/theora
  • tmatth/theora
  • zfigura/theora
  • manx/theora
  • fabio/theora
5 results
Show changes
Commits on Source (23)
name: Autotools build
on:
push:
pull_request:
schedule:
- cron: '0 0 1 * *'
jobs:
build:
strategy:
matrix:
os:
[
ubuntu-latest,
macos-latest,
]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Install macOS dependencies
if: startsWith(matrix.os,'macos')
run: brew install automake pkg-config libtool libogg
- name: Install Linux dependencies
if: startsWith(matrix.os,'ubuntu')
run: sudo apt install automake pkgconf libtool libogg-dev libvorbis-dev libsdl1.2-dev libpng-dev libtiff-dev doxygen fig2dev texlive texlive-latex-extra
- name: configure
run: |
./autogen.sh
./configure
- name: build
run: make
- name: test
run: make check
- name: distcheck
if: startsWith(matrix.os,'ubuntu')
run: make distcheck
......@@ -4,7 +4,7 @@ default:
# Image from https://hub.docker.com/_/gcc/ based on Debian
image: gcc:14
.autoconf:
.autotools:
stage: build
before_script:
- apt-get update &&
......@@ -21,19 +21,21 @@ default:
INSTALL_COMPILER: gcc g++
autotools-gcc:
extends: .autoconf
extends: .autotools
script:
- ./autogen.sh
- ./configure ${CONFIG_FLAGS} || cat config.log
- make
- make distcheck
- sha256sum libtheora-*.*
artifacts:
paths:
- libtheora-*.tar.gz
- libtheora-*.tar.*
- libtheora-*.zip
expire_in: 2 week
autotools-gcc-builddir:
extends: .autoconf
extends: .autotools
script:
- ./autogen.sh
- mkdir build
......@@ -42,7 +44,7 @@ autotools-gcc-builddir:
- (cd build && make check)
autotools-clang:
extends: .autoconf
extends: .autotools
script:
- ./autogen.sh
- ./configure ${CONFIG_FLAGS} || cat config.log
......@@ -54,34 +56,34 @@ autotools-clang:
CC: clang
autotools-disable-asm:
extends: .autoconf
extends: .autotools
variables:
CONFIG_FLAGS: --disable-asm
autotools-disable-encoding:
extends: .autoconf
extends: .autotools
variables:
CONFIG_FLAGS: --disable-encode
autotools-enable-telemetry:
extends: .autoconf
extends: .autotools
variables:
CONFIG_FLAGS: --enable-telemetry
autotools-enable-valgrind-testing:
extends: .autoconf
extends: .autotools
variables:
INSTALL_EXTRA: libtool valgrind
CONFIG_FLAGS: --enable-valgrind-testing
autotools-enable-gcc-sanitizers:
extends: .autoconf
extends: .autotools
variables:
INSTALL_EXTRA: libtool
CONFIG_FLAGS: --enable-gcc-sanitizers
autotools-mingw:
extends: .autoconf
extends: .autotools
script:
- mkdir build-mingw
- git clone https://gitlab.xiph.org/xiph/ogg.git build-mingw/ogg-mingw
......
......@@ -29,6 +29,7 @@ Sebastian Pippin
Simon Hosie
Brad Smith
Petter Reinholdtsen
Tristan Matthews
- Bug fixes, enhancements, build systems.
Mauricio Piacentini
......
libteora 1.2.0beta1 (2025 March 15)
- Bumped minor SONAME versions as <codec.h> methods changed constness
of arguments.
- Updated libogg dependency to version 1.3.4 for ogg_uint64_t.
- Updated doxygen setup.
- Updated autotools setup and support scripts (#1467 #1800 #1987 #2318
#2320).
- Added support for RISC OS.
- Fixed mingw build (#2141).
- Improved ARM support.
- Converted SCons setup to work with Python 3.
- Introduced new configure options --enable-mem-constraint and
--enable-gcc-sanitizers.
- Fixed all known compiler warnings and errors from gcc and clang.
- Improved examples for stability and correctness.
- Variuos speed, bug fixes and code quality improvements.
- Fixed build problem with Visual Studio (#2317).
- Avoids undefined bit shift of signed numbers (#2321, #2322).
- Avoids example encoder crash on bogus audio input (#2305).
- Fixed musl linking issue with asm enabled (#2287).
- Fixed some broken clamping in rate control (#2229).
- Added NULL check _tc and _setup even for data packets (#2279).
- Fixed mismatched oc_mb_fill_cmapping11 signature (#2068).
- Updated the documentation for theora_encode_comment() (#726).
- Adjusted build to Only link libcompat with dump_video (#1587).
- Corrected an operator precedence error in the visualization
code (#1751).
- Fixed two spelling errors in the comments (#1804).
- Avoid negative bit shift operation in huffdec.c (CVE-2024-56431).
- Improved library documentation and specification text.
- Adjusted library dependencies so libtheoraenc do not depend on
libtheoradec.
- Handle fallout from CVE-2017-14633 in libvorbis, check return value
in encoder_example and transcoder_example.
libteora 1.2.0alpha1 (2010 September 23)
- New 'ptalarbvorm' encoder with better rate/distortion optimization
- New th_encode_ctl option for copying configuration from an existing
setup header, useful for splicing streams.
- Returns TH_DUPFRAME in more cases.
- Add ARM optimizations
- Add TI C64x+ DSP optimizations
- Other performance improvements
- Rename speedlevel 2 to 3 and provide a new speedlevel 2
- Various minor bug fixes
libtheora 1.2.0 (2025 March 29)
* Bumped minor SONAME versions as oc_comment_unpack() implementation
changed.
* Added example wrapper script encoder_example_ffmpeg (#1601 #2336).
* Improve comment handling on platforms where malloc(0) return NULL
(#2304).
* Added pragma in example code to quiet clang op precedenca warnings.
* Adjusted encoder_example help text.
* Adjusted README, CHANGES, pkg-config and spec files to better reflect
current release (#2331 #2328).
* Corrected english typos in source and build system.
* Switched http links to https in doc and comments where relevant.
Did not touch RFC drafts.
libtheora 1.2.0beta1 (2025 March 15)
* Bumped minor SONAME versions as <codec.h> methods changed constness
of arguments.
* Updated libogg dependency to version 1.3.4 for ogg_uint64_t.
* Updated doxygen setup.
* Updated autotools setup and support scripts (#1467 #1800 #1987 #2318
#2320).
* Added support for RISC OS.
* Fixed mingw build (#2141).
* Improved ARM support.
* Converted SCons setup to work with Python 3.
* Introduced new configure options --enable-mem-constraint and
--enable-gcc-sanitizers.
* Fixed all known compiler warnings and errors from gcc and clang.
* Improved examples for stability and correctness.
* Various speed, bug fixes and code quality improvements.
- Fixed build problem with Visual Studio (#2317).
- Avoids undefined bit shift of signed numbers (#2321, #2322).
- Avoids example encoder crash on bogus audio input (#2305).
- Fixed musl linking issue with asm enabled (#2287).
- Fixed some broken clamping in rate control (#2229).
- Added NULL check _tc and _setup even for data packets (#2279).
- Fixed mismatched oc_mb_fill_cmapping11 signature (#2068).
- Updated the documentation for theora_encode_comment() (#726).
- Adjusted build to only link libcompat with dump_video (#1587).
- Corrected an operator precedence error in the visualization
code (#1751).
- Fixed two spelling errors in the comments (#1804).
- Avoid negative bit shift operation in huffdec.c (CVE-2024-56431).
* Improved library documentation and specification text.
* Adjusted library dependencies so libtheoraenc do not depend on
libtheoradec.
* Handle fallout from CVE-2017-14633 in libvorbis, check return value
in encoder_example and transcoder_example.
libtheora 1.2.0alpha1 (2010 September 23)
* New 'ptalarbvorm' encoder with better rate/distortion optimization
* New th_encode_ctl option for copying configuration from an existing
setup header, useful for splicing streams.
* Returns TH_DUPFRAME in more cases.
* Add ARM optimizations
* Add TI C64x+ DSP optimizations
* Other performance improvements
* Rename speedlevel 2 to 3 and provide a new speedlevel 2
* Various minor bug fixes
libtheora 1.1.2 (unreleased snapshot)
- Fix Huffman table decoding with OC_HUFF_SLUSH is set to 0
- Fix a frame size bug in player_example
- Add support for passing a buffer the size of the picture
* Fix Huffman table decoding with OC_HUFF_SLUSH is set to 0
* Fix a frame size bug in player_example
* Add support for passing a buffer the size of the picture
region, rather than a full padded frame to th_encode_ycbcr_in()
as was possible with the legacy pre-1.0 API.
- 4:4:4 support in player_example using software yuv->rgb
- Better rgb->yuv conversion in png2theora
- Clean up warnings and local variables
- Build and documentation fixes
* 4:4:4 support in player_example using software yuv->rgb
* Better rgb->yuv conversion in png2theora
* Clean up warnings and local variables
* Build and documentation fixes
libtheora 1.1.1 (2009 October 1)
- Fix problems with MSVC inline assembly
- Add the missing encoder_disabled.c to the distribution
- build updates: autogen.sh should work better after switching systems
* Fix problems with MSVC inline assembly
* Add the missing encoder_disabled.c to the distribution
* build updates: autogen.sh should work better after switching systems
and the MSVC project now defaults to the dynamic runtime library
- Namespace some variables to avoid conflicts on wince.
* Namespace some variables to avoid conflicts on wince.
libtheora 1.1.0 (2009 September 24)
- Fix various small issues with the example and telemetry code
- Fix handing a zero-byte packet as the first frame
- Documentation cleanup
- Two minor build fixes
* Fix various small issues with the example and telemetry code
* Fix handing a zero-byte packet as the first frame
* Documentation cleanup
* Two minor build fixes
libtheora 1.1beta3 (2009 August 22)
- Rate control fixes to smooth quality
- MSVC build now exports all of the 1.0 api
- Assorted small bug fixes
* Rate control fixes to smooth quality
* MSVC build now exports all of the 1.0 api
* Assorted small bug fixes
libtheora 1.1beta2 (2009 August 12)
- Fix a rate control problem with difficult input
- Build fixes for OpenBSD and Apple Xcode
- Examples now all use the 1.0 api
- TH_ENCCTL_SET_SPLEVEL works again
- Various bug fixes and source tree rearrangement
* Fix a rate control problem with difficult input
* Build fixes for OpenBSD and Apple Xcode
* Examples now all use the 1.0 api
* TH_ENCCTL_SET_SPLEVEL works again
* Various bug fixes and source tree rearrangement
libtheora 1.1beta1 (2009 August 5)
- Support for two-pass encoding
- Performance optimization of both encoder and decoder
- Encoder supports dynamic adjustment of quality and
* Support for two-pass encoding
* Performance optimization of both encoder and decoder
* Encoder supports dynamic adjustment of quality and
bitrate targets
- Encoder is generally more configurable, and all
* Encoder is generally more configurable, and all
rate control modes perform better
- Encoder now accepts 4:2:2 and 4:4:4 chroma sampling
- Decoder telemetry output shows quantization choice
* Encoder now accepts 4:2:2 and 4:4:4 chroma sampling
* Decoder telemetry output shows quantization choice
and a breakdown of bitrate usage in the frame
- MSVC assembly optimizations up to date and functional
* MSVC assembly optimizations up to date and functional
libtheora 1.1alpha2 (2009 May 26)
- Reduce lambda for small quantizers.
- New encoder fDCT does better on smooth gradients
- Use SATD for mode decisions (1-2% bitrate reduction)
- Assembly rewrite for new features and general speed up
- Share code between the encoder and decoder for performance
- Fix 4:2:2 decoding and telemetry
- MSVC project files updated, but assembly is disabled.
- New configure option --disable-spec to work around toolchain
* Reduce lambda for small quantizers.
* New encoder fDCT does better on smooth gradients
* Use SATD for mode decisions (1-2% bitrate reduction)
* Assembly rewrite for new features and general speed up
* Share code between the encoder and decoder for performance
* Fix 4:2:2 decoding and telemetry
* MSVC project files updated, but assembly is disabled.
* New configure option --disable-spec to work around toolchain
detection failures.
- Limit symbol exports on MacOS X.
- Port remaining unit tests from the 1.0 release.
* Limit symbol exports on MacOS X.
* Port remaining unit tests from the 1.0 release.
libtheora 1.1alpha1 (2009 March 27)
- Encoder rewrite with much improved vbr quality/bitrate and
* Encoder rewrite with much improved vbr quality/bitrate and
better tracking of the target rate in cbr mode.
- MSVC project files do not work in this release.
* MSVC project files do not work in this release.
libtheora 1.0 (2008 November 3)
- Merge x86 assembly for forward DCT from Thusnelda branch.
- Update 32 bit MMX with loop filter fix.
- Check for an uninitialized state before dereferencing in propagating
* Merge x86 assembly for forward DCT from Thusnelda branch.
* Update 32 bit MMX with loop filter fix.
* Check for an uninitialized state before dereferencing in propagating
decode calls.
- Remove all TH_DEBUG statements.
- Rename the bitpacker source files copied from libogg to avoid
* Remove all TH_DEBUG statements.
* Rename the bitpacker source files copied from libogg to avoid
confusing simple build systems using both libraries.
- Declare bitfield entries to be explicitly signed for Solaris cc.
- Set quantization parameters to default values when an empty buffer is
* Declare bitfield entries to be explicitly signed for Solaris cc.
* Set quantization parameters to default values when an empty buffer is
passed with TH_ENCCTL_SET_QUANT_PARAMS.
- Split encoder and decoder tests depending on configure settings.
- Return lstylex.sty to the distribution.
- Disable inline assembly on gcc versions prior to 3.1.
- Remove extern references for OC_*_QUANT_MIN.
- Make various data tables static const so they can be read-only.
- Remove ENCCTL codes from the old encoder API.
- Implement TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE ctl.
- Fix segfault when exactly one of the width or height is not a multiple
* Split encoder and decoder tests depending on configure settings.
* Return lstylex.sty to the distribution.
* Disable inline assembly on gcc versions prior to 3.1.
* Remove extern references for OC_*_QUANT_MIN.
* Make various data tables static const so they can be read-only.
* Remove ENCCTL codes from the old encoder API.
* Implement TH_ENCCTL_SET_KEYFRAME_FREQUENCY_FORCE ctl.
* Fix segfault when exactly one of the width or height is not a multiple
of 16, but the other is.
- Compute the correct vertical offset for chroma.
- cpuid assembly fix for MSVC.
- Add VS2008 project files.
- Build updates for 64-bit platforms, Mingw32, VS and XCode.
- Do not clobber the cropping rectangle.
- Declare ourselves 1.0final to pkg-config to sort after beta releases.
- Fix the scons build to include asm in libtheoradec/enc.
* Compute the correct vertical offset for chroma.
* cpuid assembly fix for MSVC.
* Add VS2008 project files.
* Build updates for 64-bit platforms, Mingw32, VS and XCode.
* Do not clobber the cropping rectangle.
* Declare ourselves 1.0final to pkg-config to sort after beta releases.
* Fix the scons build to include asm in libtheoradec/enc.
libtheora 1.0beta3 (2008 April 16)
- Build new libtheoradec and libtheoraenc libraries
* Build new libtheoradec and libtheoraenc libraries
supporting the new API from theora-exp. This API should
not be considered stable yet.
- Change granule_frame() to return an index as documented.
* Change granule_frame() to return an index as documented.
This is a change of behaviour from 1.0beta1.
- Document that granule_time() returns the end of the
* Document that granule_time() returns the end of the
presentation interval.
- Use a custom copy of the libogg bitpacker in the decoder
* Use a custom copy of the libogg bitpacker in the decoder
to avoid function call overhead.
- MMX code improved and ported to MSVC.
- Fix a problem with the MMX code on SELinux.
- Fix a problem with decoder quantizer initialization.
- Fix a page queue problem with png2theora.
- Improved robustness.
- Updated VS2005 project files.
- Dropped build support for Microsoft VS2003.
- Dropped build support for the unreleased libogg2.
- Added the specification to the autotools build.
- Specification corrections.
* MMX code improved and ported to MSVC.
* Fix a problem with the MMX code on SELinux.
* Fix a problem with decoder quantizer initialization.
* Fix a page queue problem with png2theora.
* Improved robustness.
* Updated VS2005 project files.
* Dropped build support for Microsoft VS2003.
* Dropped build support for the unreleased libogg2.
* Added the specification to the autotools build.
* Specification corrections.
libtheora 1.0beta2 (2007 October 12)
- Fix a crash bug on char-is-unsigned architectures (PowerPC)
- Fix a buffer sizing issue that caused rare encoder crashes
- Fix a buffer alignment issue
- Build fixes for MingW32, MSVC
- Improved format documentation.
* Fix a crash bug on char-is-unsigned architectures (PowerPC)
* Fix a buffer sizing issue that caused rare encoder crashes
* Fix a buffer alignment issue
* Build fixes for MingW32, MSVC
* Improved format documentation.
libtheora 1.0beta1 (2007 September 22)
- Granulepos scheme modified to match other codecs. This bumps
* Granulepos scheme modified to match other codecs. This bumps
the bitstream revision to 3.2.1. Bitstreams marked 3.2.0 are
handled correctly by this decoder. Older decoders will show
a one frame sync error in the less noticeable direction.
libtheora 1.0alpha8 (2007 September 18)
- Switch to new spec compliant decoder from theora-exp branch.
* Switch to new spec compliant decoder from theora-exp branch.
Written by Dr. Timothy Terriberry.
- Add support to the encoder for using quantization settings
* Add support to the encoder for using quantization settings
provided by the application.
- more assembly optimizations
* more assembly optimizations
libtheora 1.0alpha7 (2006 June 20)
- Enable mmx assembly by default
- Avoid some relocations that caused problems on SELinux
- Other build fixes
- time testing mode (-f) for the dump_video example
* Enable mmx assembly by default
* Avoid some relocations that caused problems on SELinux
* Other build fixes
* time testing mode (-f) for the dump_video example
libtheora 1.0alpha6 (2006 May 30)
......@@ -218,7 +232,7 @@ libtheora 1.0alpha5 (2005 August 20)
* Fixed bitrate management bugs that caused popping and encode
errors
* Fixed a crash problem with the theora_state internals not
being intialized properly.
being initialized properly.
* new utility function:
- theora_granule_shift()
* dump_video example now makes YUV4MPEG files by default, so
......@@ -255,7 +269,7 @@ libtheora 1.0alpha3 (2004 March 20)
- move the granulepos shift field to maintain byte alignment longer.
- reserve 5 additional bits for subsampling and interlace flags.
* Bitstream setup header FORMAT CHANGES:
- support for a range of interpolated quant matricies.
- support for a range of interpolated quant matrices.
- include the in-loop block filter coeff.
* Bitsteam data packet FORMAT CHANGES:
- Reserve a bit for per-block Q index selection.
......
......@@ -10,13 +10,13 @@ while allowing it a longer useful lifetime.
The 1.0 release decoder supported all the new features, but the
encoder is nearly identical to the VP3 code.
The 1.1 release featured a completely rewritten encoder, offering
better performance and compression, and making more complete use
of the format's feature set.
The 1.1 release, codenamed Thusnelda, featured a completely rewritten
encoder, offering better performance and compression, and making more
complete use of the format's feature set.
The 1.2 release features significant additional improvements in
compression and performance. Files produced by newer encoders can
be decoded by earlier releases.
The 1.2 release, codenamed Ptalarbvorm, features significant
additional improvements in compression and performance. Files produced
by newer encoders can be decoded by earlier releases.
### Where is Theora?
......@@ -35,7 +35,7 @@ Requirements summary:
For libtheora:
* libogg 1.1 or newer.
* libogg 1.3.4 or newer.
For example encoder:
......@@ -60,7 +60,7 @@ The provided build system is the GNU automake/autoconf system, and
the main library, libtheora, should already build smoothly on any
system. Failure of libtheora to build on a GNU-enabled system is
considered a bug; please report problems to theora-dev@xiph.org,
https://lists.xiph.org/mailman/listinfo/theora-dev or preferrably to
https://lists.xiph.org/mailman/listinfo/theora-dev or preferably to
https://gitlab.xiph.org/xiph/theora.
Windows build support is included in the win32 directory.
......@@ -116,7 +116,7 @@ Jan Gerber's ffmpeg2theora is an excellent encoding front end.
encoder_internal.h:664: parse error before `ogg_uint16_t`
This means you have version of libogg prior to 1.1. A *complete* new Ogg
This means you have version of libogg prior to 1.3.4. A *complete* new Ogg
install, libs and headers is needed.
Also be sure that there aren't multiple copies of Ogg installed in
......@@ -127,7 +127,7 @@ for libs and headers.
undefined reference to `oggpackB_stream`
See above; you need libogg 1.1 or later.
See above; you need libogg 1.3.4 or later.
### Link error, such as:
......
# see http://www.scons.org if you do not have this tool
# see https://www.scons.org if you do not have this tool
from os.path import join
import SCons
# TODO: should use lamda and map to work on python 1.5
# TODO: should use lambda and map to work on python 1.5
def path(prefix, list): return [join(prefix, x) for x in list]
encoder_sources = """
......
......@@ -4,7 +4,7 @@ dnl ------------------------------------------------
dnl Initialization and Versioning
dnl ------------------------------------------------
AC_INIT([libtheora],[1.2.0beta1],[theora-dev@xiph.org])
AC_INIT([libtheora],[1.2.0],[theora-dev@xiph.org])
AC_CANONICAL_HOST
......@@ -36,21 +36,21 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
# #
################################################################################
TH_LIB_CURRENT=5
TH_LIB_REVISION=0
TH_LIB_REVISION=1
TH_LIB_AGE=4
AC_SUBST(TH_LIB_CURRENT)
AC_SUBST(TH_LIB_REVISION)
AC_SUBST(TH_LIB_AGE)
THDEC_LIB_CURRENT=3
THDEC_LIB_REVISION=5
THDEC_LIB_REVISION=1
THDEC_LIB_AGE=1
AC_SUBST(THDEC_LIB_CURRENT)
AC_SUBST(THDEC_LIB_REVISION)
AC_SUBST(THDEC_LIB_AGE)
THENC_LIB_CURRENT=4
THENC_LIB_REVISION=0
THENC_LIB_REVISION=1
THENC_LIB_AGE=2
AC_SUBST(THENC_LIB_CURRENT)
AC_SUBST(THENC_LIB_REVISION)
......@@ -177,8 +177,20 @@ dnl --------------------------------------------------
dnl Set some host options
cc_compiler=unknown
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#if ! __clang__
#error
#endif
]])],
cc_compiler=clang,
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#if ! __GNUC__
#error
#endif
]])],
cc_compiler=gcc, [])])
cflags_save="$CFLAGS"
if test -z "$GCC"; then
if test $cc_compiler != "gcc" ; then
case $host in
*)
DEBUG="-g -DDEBUG"
......@@ -200,7 +212,7 @@ AC_ARG_ENABLE(gcc-sanitizers,
AS_HELP_STRING([--enable-gcc-sanitizers], [Enable GCC sanitizers]),
[ ac_enable_gcc_sanitizers=$enableval ], [ ac_enable_gcc_sanitizers=no] )
if test "$GCC" && test "x${ac_enable_gcc_sanitizers}" = xyes; then
if test $cc_compiler = "gcc" && test "x${ac_enable_gcc_sanitizers}" = xyes; then
CFLAGS="${CFLAGS} -fsanitize=address -fsanitize=undefined -g"
LDFLAGS="${CFLAGS} -fsanitize=address"
......@@ -402,16 +414,19 @@ dnl first check through pkg-config since it's more flexible
dnl check for pkg-config itself so we don't try the m4 macro without pkg-config
AC_CHECK_PROG(HAVE_PKG_CONFIG, pkg-config, yes)
THEORA_LIBOGG_REQ_VERSION=1.3.4
AC_SUBST(THEORA_LIBOGG_REQ_VERSION)
if test "x$HAVE_PKG_CONFIG" = "xyes"
then
PKG_CHECK_MODULES(OGG, ogg >= 1.3.4, HAVE_OGG=yes, HAVE_OGG=no)
PKG_CHECK_MODULES(OGG, ogg >= $THEORA_LIBOGG_REQ_VERSION, HAVE_OGG=yes, HAVE_OGG=no)
fi
if test "x$HAVE_OGG" = "xno"
then
dnl fall back to the old school test
XIPH_PATH_OGG(, AC_MSG_ERROR([
libogg is required to build this package!
please see http://www.xiph.org/ for how to
please see https://www.xiph.org/ for how to
obtain a copy.
]))
cflags_save=$CFLAGS
......@@ -419,7 +434,7 @@ then
CFLAGS="$CFLAGS $OGG_CFLAGS"
LIBS="$LIBS $OGG_LIBS"
AC_CHECK_FUNC(oggpackB_read, , [
AC_MSG_ERROR([newer libogg version (1.3.4 or later) required])
AC_MSG_ERROR([newer libogg version ($THEORA_LIBOGG_REQ_VERSION or later) required])
])
CFLAGS=$cflags_save
LIBS=$libs_save
......
......@@ -1139,7 +1139,7 @@ VERBATIM_HEADERS = YES
# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
# clang parser (see:
# http://clang.llvm.org/) for more accurate parsing at the cost of reduced
# https://clang.llvm.org/) for more accurate parsing at the cost of reduced
# performance. This can be particularly helpful with template rich C++ code for
# which doxygen's built-in parser lacks the necessary type information.
# Note: The availability of this option depends on whether or not doxygen was
......@@ -1167,7 +1167,7 @@ CLANG_OPTIONS =
# If clang assisted parsing is enabled you can provide the clang parser with the
# path to the directory containing a file called compile_commands.json. This
# file is the compilation database (see:
# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the
# https://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the
# options used when the source files were built. This is equivalent to
# specifying the -p option to a clang tool, such as clang-check. These options
# will then be passed to the parser. Any options specified with CLANG_OPTIONS
......@@ -1415,8 +1415,8 @@ DOCSET_PUBLISHER_NAME = Xiph.Org
# a.o. the download links, offline the HTML help workshop was already many years
# in maintenance mode). You can download the HTML help workshop from the web
# archives at Installation executable (see:
# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo
# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe).
# https://web.archive.org/web/20160201063255/http://download.microsoft.com/
# download/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe).
#
# The HTML Help Workshop contains a compiler that can convert all HTML output
# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
......@@ -1690,9 +1690,9 @@ MATHJAX_VERSION = MathJax_2
# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. For more details about the output format see MathJax
# version 2 (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3
# https://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3
# (see:
# http://docs.mathjax.org/en/latest/web/components/output.html).
# https://docs.mathjax.org/en/latest/web/components/output.html).
# Possible values are: HTML-CSS (which is slower, but has the best
# compatibility. This is the name for Mathjax version 2, for MathJax version 3
# this will be translated into chtml), NativeMML (i.e. MathML. Only supported
......@@ -1724,7 +1724,7 @@ MATHJAX_RELPATH =
# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions):
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
# For example for MathJax version 3 (see
# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html):
# https://docs.mathjax.org/en/latest/input/tex/extensions/index.html):
# MATHJAX_EXTENSIONS = ams
# This tag requires that the tag USE_MATHJAX is set to YES.
......@@ -1733,7 +1733,7 @@ MATHJAX_EXTENSIONS =
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
# of code that will be used on startup of the MathJax code. See the MathJax site
# (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an
# https://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an
# example see the documentation.
# This tag requires that the tag USE_MATHJAX is set to YES.
......@@ -2357,7 +2357,7 @@ HIDE_UNDOC_RELATIONS = YES
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz (see:
# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
# Bell Labs. The other options in this section have no effect if this option is
# set to NO
# The default value is: YES.
......@@ -2545,7 +2545,7 @@ DIR_GRAPH_MAX_DEPTH = 1
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. For an explanation of the image formats see the section
# output formats in the documentation of the dot tool (Graphviz (see:
# http://www.graphviz.org/)).
# https://www.graphviz.org/)).
# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
# to make the SVG files visible in IE 9+ (other browsers do not have this
# requirement).
......
......@@ -25,7 +25,7 @@ dist_docdir = $(distdir)/libtheora
dist-hook:
if test -d libtheora; then \
mkdir $(dist_docdir); \
echo -n "copying built documenation..."; \
echo -n "copying built documentation..."; \
for dir in libtheora/*; do \
b=`basename $$dir`; \
if test $$b != ".svn"; then \
......
......@@ -562,7 +562,7 @@ For Ogg Theora, the Rec 709 input function is used.
<DT>[<A NAME="Poy97">Poy97</A>]</DT>
<DD>
Poynton, Charles, <I>Frequently-Asked Questions about Gamma</I>.
<A HREF="http://www.poynton.com/GammaFAQ.html">http://www.poynton.com/GammaFAQ/html</A>,
<A HREF="https://www.poynton.com/GammaFAQ.html">http://www.poynton.com/GammaFAQ/html</A>,
Feb. 1997.
</DD>
<DT>[<A NAME="Rec470">Rec470</A>]</DT>
......
......@@ -4,7 +4,7 @@
10646",
month=oct,
year=1996,
note="\url{http://www.ietf.org/rfc/rfc2044.txt}"
note="\url{https://www.ietf.org/rfc/rfc2044.txt}"
}
@ARTICLE{CSF77,
......@@ -29,7 +29,7 @@
@MISC{Poyn97,
author="Charles Poynton",
title="Frequently-Asked Questions about Gamma",
howpublished="\url{http://www.poynton.com/GammaFAQ.html}",
howpublished="\url{https://www.poynton.com/GammaFAQ.html}",
month=feb,
year=1997
}
......@@ -83,7 +83,7 @@
title="{Vorbis~I} specification",
organization="{Xiph.Org Foundation}",
year=2002,
note="\url{http://www.xiph.org/ogg/vorbis/doc/}"
note="\url{https://www.xiph.org/ogg/vorbis/doc/}"
}
@MANUAL{rfc2119,
......@@ -92,7 +92,7 @@
Levels",
month=mar,
year=1997,
note="\url{http://www.ietf.org/rfc/rfc2119.txt}"
note="\url{https://www.ietf.org/rfc/rfc2119.txt}"
}
@MANUAL{rfc3533,
......@@ -100,7 +100,7 @@
title="{RFC} 3533: The {Ogg} Encapsulation Format Version 0",
month=may,
year=2003,
note="\url{http://www.ietf.org/rfc/rfc3533.txt}"
note="\url{https://www.ietf.org/rfc/rfc3533.txt}"
}
@MANUAL{rfc3534,
......@@ -108,7 +108,7 @@
title="{RFC} 3534: The {application/ogg} Media Type",
month=may,
year=2003,
note="\url{http://www.ietf.org/rfc/rfc3534.txt}"
note="\url{https://www.ietf.org/rfc/rfc3534.txt}"
}
@MANUAL{rfc3550,
......@@ -116,5 +116,5 @@
title="RTP: A Transport Protocol for Real-Time Applications",
month=jul,
year=2003,
note="\url{http://www.ietf.org/rfc/rfc3550.txt}"
note="\url{https://www.ietf.org/rfc/rfc3550.txt}"
}
......@@ -292,7 +292,7 @@ Such features may not increment the bitstream version number, and can only be
Theora is a general purpose, lossy video codec.
It is based on the VP3 video codec produced by On2 Technologies
(\url{http://www.on2.com/}).
(\url{https://www.on2.com/}).
On2 donated the VP3.1 source code to the Xiph.Org Foundation and released it
under a BSD-like license.
On2 also made an irrevocable, royalty-free license grant for any patent claims
......@@ -7845,8 +7845,8 @@ It provides syncronization, multiplexing, framing, error detection and
This document assumes familiarity with the details of the Ogg standard.
The Xiph.Org documentation provides an overview of the Ogg transport stream
format at \url{http://www.xiph.org/ogg/doc/oggstream.html} and a detailed
description at \url{http://www.xiph.org/ogg/doc/framing.html}.
format at \url{https://www.xiph.org/ogg/doc/oggstream.html} and a detailed
description at \url{https://www.xiph.org/ogg/doc/framing.html}.
The format is also defined in RFC~3533 \cite{rfc3533}.
While Theora packets can be embedded in a wide variety of media
containers and streaming mechanisms, the Xiph.Org Foundation
......@@ -8160,10 +8160,10 @@ This is the same order in which they will be decoded from the setup header.
\cleardoublepage
\chapter{Colophon}
Ogg is a \href{http://www.xiph.org}{Xiph.Org Foundation} effort to protect
Ogg is a \href{https://www.xiph.org}{Xiph.Org Foundation} effort to protect
essential tenets of Internet multimedia from corporate hostage-taking; Open
Source is the net's greatest tool to keep everyone honest.
See \href{http://www.xiph.org/about.html}{About the Xiph.Org Foundation} for
See \href{https://www.xiph.org/about.html}{About the Xiph.Org Foundation} for
details.
Ogg Theora is the first Ogg video codec.
......@@ -8184,7 +8184,7 @@ This does not restrict third parties from distributing independent
These pages are Copyright \textcopyright{} 2004-2007 Xiph.Org Foundation.
All rights reserved.
Ogg, Theora, Vorbis, Xiph.Org Foundation and their logos are trademarks
(\texttrademark) of the \href{http://www.xiph.org}{Xiph.Org Foundation}.
(\texttrademark) of the \href{https://www.xiph.org}{Xiph.Org Foundation}.
This document is set in \LaTeX.
......
......@@ -6,7 +6,7 @@
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2007 *
* by the Xiph.Org Foundation http://www.xiph.org/ *
* by the Xiph.Org Foundation https://www.xiph.org/ *
* *
********************************************************************
function: dump the VP3.1 huffman tables in a form suitable for
......
......@@ -6,7 +6,7 @@ v0.5: December 8, 2004
[December 8, 2004: Note that this document is not complete and likely
will never be completed. However, it helped form the basis of Theora I
specification available at
http://www.theora.org/doc/Theora_I_spec.pdf ]
https://www.theora.org/doc/Theora_I_spec.pdf ]
Contents
......@@ -36,7 +36,7 @@ Contents
Introduction
------------
A company named On2 (http://www.on2.com) created a video codec named
A company named On2 (https://www.on2.com/) created a video codec named
VP3. Eventually, they decided to open source it. Like any body of code
that was produced on a deadline, the source code was not particularly
clean or well-documented. This makes it difficult to understand the
......@@ -1272,10 +1272,10 @@ Official VP3 site:
http://www.vp3.com/
Theora, based on VP3:
http://www.theora.org/
https://www.theora.org/
On2, creators of the VP3 format:
http://www.on2.com/
https://www.on2.com/
ChangeLog
......
......@@ -5,6 +5,7 @@ noinst_PROGRAMS = dump_video dump_psnr libtheora_info \
# possible contents of BUILDABLE_EXAMPLES:
EXTRA_PROGRAMS = player_example encoder_example png2theora tiff2theora
EXTRA_DIST = encoder_example_ffmpeg
AM_CPPFLAGS = -I$(top_srcdir)/include
AM_CFLAGS = $(OGG_CFLAGS)
......
......@@ -6,7 +6,8 @@
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009 *
* by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
* by the Xiph.Org Foundation and contributors *
* https://www.xiph.org/ *
* *
********************************************************************
......@@ -87,9 +88,9 @@ struct y4m_input{
size_t dst_buf_sz;
/*The amount to read directly into the converted frame buffer.*/
size_t dst_buf_read_sz;
/*The size of the auxilliary buffer.*/
/*The size of the auxiliary buffer.*/
size_t aux_buf_sz;
/*The amount to read into the auxilliary buffer.*/
/*The amount to read into the auxiliary buffer.*/
size_t aux_buf_read_sz;
y4m_convert_func convert;
unsigned char *dst_buf;
......
......@@ -6,7 +6,7 @@
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009,2025 *
* by the Xiph.Org Foundation http://www.xiph.org/ *
* by the Xiph.Org Foundation https://www.xiph.org/ *
* *
********************************************************************
......@@ -163,7 +163,7 @@ static void stripe_decoded(th_ycbcr_buffer _dst,th_ycbcr_buffer _src,
int y;
yshift=pli!=0&&!(ti.pixel_fmt&2);
y_end=_fragy_end<<3-yshift;
/*An implemention intending to display this data would need to check the
/*An implementation intending to display this data would need to check the
crop rectangle before proceeding.*/
for(y=_fragy0<<3-yshift;y<y_end;y++){
memcpy(_dst[pli].data+y*_dst[pli].stride,
......
......@@ -6,7 +6,8 @@
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009,2025 *
* by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
* by the Xiph.Org Foundation and contributors *
* https://www.xiph.org/ *
* *
********************************************************************
......@@ -132,9 +133,9 @@ char chroma_type[16];
size_t y4m_dst_buf_sz;
/*The amount to read directly into the converted frame buffer.*/
size_t y4m_dst_buf_read_sz;
/*The size of the auxilliary buffer.*/
/*The size of the auxiliary buffer.*/
size_t y4m_aux_buf_sz;
/*The amount to read into the auxilliary buffer.*/
/*The amount to read into the auxiliary buffer.*/
size_t y4m_aux_buf_read_sz;
/*The function used to perform chroma conversion.*/
......@@ -172,8 +173,8 @@ static void usage(void){
" a minimum allowed quality.\n\n"
" --two-pass Compress input using two-pass rate control\n"
" This option requires that the input to the\n"
" to the encoder is seekable and performs\n"
" both passes automatically.\n\n"
" encoder is seekable and performs both\n"
" passes automatically.\n\n"
" --first-pass <filename> Perform first-pass of a two-pass rate\n"
" controlled encoding, saving pass data to\n"
" <filename> for a later second pass\n\n"
......@@ -188,22 +189,22 @@ static void usage(void){
" fidelity; 10 yields highest fidelity\n"
" but large files. '2' is a reasonable\n"
" default).\n\n"
" -v --video-quality <n> Theora quality selector from 0 to 10\n"
" -v --video-quality <n> Theora quality selector from 0 to 10\n"
" (0 yields smallest files but lowest\n"
" video quality. 10 yields highest\n"
" fidelity but large files).\n\n"
" -s --aspect-numerator <n> Aspect ratio numerator, default is 0\n"
" -s --aspect-numerator <n> Aspect ratio numerator, default is 0\n"
" or extracted from YUV input file\n"
" -S --aspect-denominator <n> Aspect ratio denominator, default is 0\n"
" -S --aspect-denominator <n> Aspect ratio denominator, default is 0\n"
" or extracted from YUV input file\n"
" -f --framerate-numerator <n> Frame rate numerator, can be extracted\n"
" -f --framerate-numerator <n> Frame rate numerator, can be extracted\n"
" from YUV input file. ex: 30000000\n"
" -F --framerate-denominator <n> Frame rate denominator, can be extracted\n"
" -F --framerate-denominator <n> Frame rate denominator, can be extracted\n"
" from YUV input file. ex: 1000000\n"
" The frame rate nominator divided by this\n"
" determinates the frame rate in units per tick\n"
" -k --keyframe-freq <n> Keyframe frequency\n"
" -z --speed <n> Sets the encoder speed level. Higher speed\n"
" -k --keyframe-freq <n> Keyframe frequency\n"
" -z --speed <n> Sets the encoder speed level. Higher speed\n"
" levels favor quicker encoding over better\n"
" quality per bit. Depending on the encoding\n"
" mode, and the internal algorithms used,\n"
......@@ -214,7 +215,7 @@ static void usage(void){
" specific and may change depending on the\n"
" current encoding mode (rate constrained,\n"
" two-pass, etc.).\n"
" -d --buf-delay <n> Buffer delay (in frames). Longer delays\n"
" -d --buf-delay <n> Buffer delay (in frames). Longer delays\n"
" allow smoother rate adaptation and provide\n"
" better overall quality, but require more\n"
" client side buffering and add latency. The\n"
......@@ -222,11 +223,11 @@ static void usage(void){
" one-pass encoding (or somewhat larger if\n"
" --soft-target is used) and infinite for\n"
" two-pass encoding.\n"
" -b --begin-time <h:m:s.d> Begin encoding at offset into input\n"
" -e --end-time <h:m:s.d> End encoding at offset into input\n\n"
" -q --quiet Don't print progress information.\n\n"
" -b --begin-time <h:m:s.d> Begin encoding at offset into input\n"
" -e --end-time <h:m:s.d> End encoding at offset into input\n\n"
" -q --quiet Don't print progress information.\n\n"
#if defined(OC_COLLECT_METRICS)
" -m --metrics-filename File in which to accumulate mode decision\n"
" -m --metrics-filename File in which to accumulate mode decision\n"
" metrics. Statistics from the current\n"
" encode will be merged with those already\n"
" in the file if it exists.\n\n"
......@@ -1653,7 +1654,7 @@ int main(int argc,char *argv[]){
We make this call just to set the encoder into 2-pass mode, because
by default enabling two-pass sets the buffer delay to the whole file
(because there's no way to explicitly request that behavior).
If we waited until we were actually encoding, it would overwite our
If we waited until we were actually encoding, it would overwrite our
settings.*/
if(th_encode_ctl(td,TH_ENCCTL_2PASS_IN,NULL,0)<0){
fprintf(stderr,"Could not set up the second pass of two-pass mode.\n");
......
#!/bin/sh
####################################################################
# #
# THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. #
# USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS #
# GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE #
# IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. #
# #
# THE Theora SOURCE CODE IS COPYRIGHT (C) 2009,2025 #
# by the Xiph.Org Foundation and contributors #
# https://www.xiph.org/ #
# #
####################################################################
ffmpeg=ffmpeg
if ! command -v $ffmpeg 2>&1 >/dev/null ; then
echo error: $ffmpeg executable not found!
exit 1
fi
ffprobe=ffprobe
if ! command -v $ffprobe 2>&1 >/dev/null ; then
echo error: $ffprobe executable not found!
exit 1
fi
# TODO: get script dir, and call encoder_example from the same dir, to
# support both system installed as well as local dir version
# check encoder_example as well as Debian named theora_encoder_example
if command -v encoder_example 2>&1 >/dev/null ; then
encoder_example=encoder_example
elif command -v theora_encoder_example 2>&1 >/dev/null ; then
encoder_example=theora_encoder_example
else
echo error: encoder_example or theora_encoder_example executable \
not found!
exit 1
fi
if [ -z "$2" ] ; then
echo usage:
echo $0 inputfile outputfile [$encoder_example encoder options]
echo
echo for $encoder_example encoder options run:
echo $encoder_example -h
exit
fi
inputfile=$1
outputfile=$2
shift 2
INPUT_AUDIO=0
# check if there is audio in the input file, then encoder_example
# needs a different syntax
$ffprobe -i $inputfile -show_streams -select_streams a -loglevel error | \
grep -q audio && INPUT_AUDIO=1
video=$(mktemp -u)
mkfifo -m 600 $video
# TODO: merge the two separate ffmpeg commands to a single process
$ffmpeg -i $inputfile -y -hide_banner -loglevel error -an \
-f yuv4mpegpipe $video &
if [ "$INPUT_AUDIO" = 1 ] ; then
audio=$(mktemp -u)
mkfifo -m 600 $audio
$ffmpeg -i $inputfile -y -hide_banner -loglevel error -vn -f wav \
-bitexact $audio &
$encoder_example $@ $audio $video -o $outputfile
rm -f $audio
else
$encoder_example $@ $video -o $outputfile
fi
rm -f $video
......@@ -6,7 +6,8 @@
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2010 *
* by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
* by the Xiph.Org Foundation and contributors *
* https://www.xiph.org/ *
* *
********************************************************************
......