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 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 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 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 and the MSVC project now defaults to the dynamic runtime library * 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 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 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 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 bitrate targets * 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 and a breakdown of bitrate usage in the frame * 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 detection failures. * 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 better tracking of the target rate in cbr mode. * 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 decode calls. * 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 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 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. libtheora 1.0beta3 (2008 April 16) * 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. This is a change of behaviour from 1.0beta1. * Document that granule_time() returns the end of the presentation interval. * 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. 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. libtheora 1.0beta1 (2007 September 22) * 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. Written by Dr. Timothy Terriberry. * Add support to the encoder for using quantization settings provided by the application. * 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 libtheora 1.0alpha6 (2006 May 30) * Merge theora-mmx simd acceleration (x86_32 and x86_64) * Major RTP payload specification update * Minor format specification updates * Fix some spurious calls to free() instead of _ogg_free() * Fix invalid array indexing in PixelLineSearch() * Improve robustness against invalid input * General warning cleanup * The offset_y member now means what every application thought it meant (offset from the top). This will mean some old files (those with a non-centered image created with a buggy encoder) will display differently. 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 initialized properly. * new utility function: - theora_granule_shift() * dump_video example now makes YUV4MPEG files by default, so the results can be fed back to encoder_example and similar tools. The old behavior is restored through the '-r' switch. * ./configure now prints a summary * simple unit test of the comment api under 'make check' * misc code cleanup, warning and leak fixes libtheora 1.0alpha4 (2004 December 15) * first draft of the Theora I Format Specification * API documentation generated from theora.h with Doxygen * fix a double-update bug in the motion analysis * apply the loop filter before filling motion vector border in the reference frame * new utility functions: - theora_packet_isheader(), - theora_packet_iskeyframe() - theora_granule_frame() * optional support for building without floating point * optional support for building without encode support * various build and packaging fixes * pkg-config support * SymbianOS build support libtheora 1.0alpha3 (2004 March 20) UPDATE: on 2004 July 1 the Theora I bitstream format was frozen. Files produced by the libtheora 1.0alpha3 reference encoder will always be decodable by the Theora I spec. * Bitstream info header FORMAT CHANGES: - 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 matrices. - include the in-loop block filter coeff. * Bitsteam data packet FORMAT CHANGES: - Reserve a bit for per-block Q index selection. - Flip the coded image orientation for compatibility with VP3. This allows lossless transcoding of VP3 content, but files encoded with earlier theora releases would play upside down. * example VP3 lossless transcoder * optional support for libogg2 * timing improvements in the example player * packaging and build system updates and fixes libtheora 1.0alpha2 (2003 June 9) * bitstream FORMAT CHANGES: - store the quant tables in a third setup header for future encoder flexibility - store the huffman tables in the third setup header - add a field for marking the colorspace to the info header - add crop parameters for non-multiple-of-16 frame sizes - add a second vorbiscomment-style metadata header * API changes to handle multiple headers with a single theora_decode_header() call, like libvorbis * code cleanup and minor fixes * new dump_video code example/utility * experimental win32 code examples libtheora 1.0alpha1 (2002 September 25) * First release of the theora reference implementation * Port of the newly opened VP3 code to the Ogg container * Rewrite of the code for portability and to use the libogg bitpacker