Opus 1.5.2 fixes several build issues that were discovered since
the 1.5 release. It also fixes a misalignment issue in the AVX2 code
that could cause crashes under Windows.
Opus 1.5 is the first release to make extended use of ML in the encoder and
decoder. You can read all the details in this release demo page.
In summary, major changes since 1.4 include:
Significant improvement to packet loss robustness using Deep Redundancy (DRED)
Improved packet loss concealment through Deep PLC
Low-bitrate speech quality enhancement down to 6 kb/s wideband
Improved x86 (AVX2) and Arm (Neon) optimizations
Support for 4th and 5th order ambisonics
In addition to the improvements above, this release includes many minor bug fixes.
Opus 1.5.1 fixes the meson build that was broken in 1.5.
Opus 1.5
is the first release to make extended use of ML in the encoder and
decoder. You can read all the details in this release demo page.
In summary, major changes since 1.4 include:
Significant improvement to packet loss robustness using Deep Redundancy (DRED)
Improved packet loss concealment through Deep PLC
Low-bitrate speech quality enhancement down to 6 kb/s wideband
Improved x86 (AVX2) and Arm (Neon) optimizations
Support for 4th and 5th order ambisonics
In addition to the improvements above, this release includes many minor bug fixes.
The opusfile library provides seeking, decode, and playback
of Opus streams in the Ogg container (.opus files) including
over http(s) on posix and windows systems.
opusfile depends on libopus and libogg.
The included opusurl library for http(s) access depends on
opusfile and openssl.
Fix an issue where the seek algorithm could be confused
by stream data changing between reads.
Clean up compiler and scan-build warnings.
Avoid use of the deprecated ftime() function
which has Y2038 problems.
Remove undefined behaviour memcpy(NULL) in op_read_native().
Visual Studio project files updated for libogg 1.3.4 library name change.
Various build systems updates.
Various integration and testing environment improvements.
This release is backward-compatible with the previous
release. We recommend all users upgrade.
Note that because of the removal of certificate store hooks
in openssl 1.1.1 and later, there are unfortunately no
supported versions of that library which can be used with
the code in opusurl to validate https responses against
the system certificate store on Windows. Using the system
default access to the certificate store on other platforms
works fine.
No Windows build is available for this release.
Developers should integrate the source code directly into their applications.
Programming documentation is available in tree and
online.
The library is functional, but there are likely issues
we didn’t find in our own testing. Please give feedback
in #opus on irc.libera.chat, opus@xiph.org, or at
gitlab.
This Opus 1.3.1
minor release fixes an issue with the analysis on files
with digital silence (all zeros), especially on x87 builds (mostly affects
32-bit builds). It also includes two new features:
A new OPUS_GET_IN_DTX query to know if the encoder is in DTX mode (last frame was either a comfort noise frame or not encoded at all)
A new (and still experimental) CMake-based build system that is eventually meant to replace the VS2015 build system (the autotools one will stay).
This Opus 1.3
major release again brings quality improvements, new features, and bug fixes.
You can read all the details in this release demo page.
Changes since 1.2.x include:
Improvements to the VAD and speech/music classification using an RNN
Support for ambisonics coding using channel mapping families 2 and 3
Improvements to stereo speech coding at low bitrate
Using wideband encoding down to 9 kb/s
Making it possible to use SILK down to bitrates around 5 kb/s
The opusfile library provides seeking, decode, and playback
of Opus streams in the Ogg container (.opus files) including
over http(s) on posix and windows systems.
opusfile depends on libopus and libogg.
The included opusurl library for http(s) access depends on
opusfile and openssl.
Changes since the v0.10 release:
Fix two potential integer overflows. (These were not security-critical unless the compiler took the opportunity provided by the undefined behavior to format your hard drive.)
Allow JPEGs in METADATA_BLOCK_PICTURE tags to include EXIF data.
A few warning fixes for gcc 8.
Make opus_tags_copy return OP_EFAULT on failure instead of returning success.
Various integration and testing environment improvements.
This release is backward-compatible with the previous
release. We recommend all users upgrade.
The library is functional, but there are likely issues
we didn’t find in our own testing. Please give feedback
in #opus on irc.libera.chat or at opus@xiph.org.
Programming documentation is available in tree and
online.
In this release the Opus decoder opusdec has been converted to use the
opusfile library, and the Opus encoder opusenc has been converted to use
the libopusenc library. These libraries make it easy to robustly read
and write Ogg Opus audio files, and enable some new features. Both
libraries are available on the
Downloads page.
opusdec enhancements include:
Read directly from http or https sources
New option --force-stereo will force stereo output
Improved support for chained input files with differing sample rate or
channel count
A summary is displayed for METADATA_BLOCK_PICTURE tags rather than
displaying the base64-encoded data
opusenc enhancements include:
Delayed decision support allows the encoder to look ahead up to two
seconds in order to improve encoding decisions
The options --music and --speech can be used to tune low bitrate audio
for music or speech, overriding automatic detection
The option --no-phase-inv disables the use of phase inversion for
intensity stereo, which can be useful for streams that are likely to
be downmixed to mono after decoding
New --tracknumber shortcut for setting tracknumber metadata
Additionally:
The opusinfo utility can display the demixing matrix from Ogg Opus
files using ambisonics channel mapping family 3
The experimental opusrtp tool supports new options to specify RTP
payload type, Ogg Opus output file, original sample rate, and number
of channels, and supports improved transmit timing, arbitrary
network devices, and IPv6
The Visual Studio 2015 project builds opusenc support for FLAC input
The old Visual Studio 2010 project has been removed
This release adds support for Ambisonics mapping families 2 and 3. It also
fixes a few bugs in libopusenc 0.1.1, including an occasional failure in
ope_encoder_drain().
This Opus 1.3-beta beta release
of the upcoming Opus 1.3 includes:
Enabling by default the spec fixes in RFC 8251
Improvements to the VAD and speech/music classification using an RNN
Improvements to stereo speech coding at low bitrate
Added support for ambisonics projection using mapping 3 (disabled by default)
Fixes to the CELT PLC
Additionally, as a way to test the upcoming update to opus-tools, we’re providing Windows binaries
built with 1.3-beta. These binaries are based on libopusenc, which means opusenc is finally able
to make use of the Opus delayed-decision feature to make better speech/music transitions.
The opusfile library provides seeking, decode, and playback
of Opus streams in the Ogg container (.opus files) including
over http(s) on posix and windows systems.
opusfile depends on libopus and libogg.
The included opusurl library for http(s) access depends on
opusfile and openssl.
Changes since the v0.8 release:
Fix an invalid free with tag handling.
Improve handling of corrupt streams.
Improve performance on streams with many chain segments.
Improve TLS host validation.
Align op_raw_total to work better with op_raw_seek.
Documentation and build improvements.
This release is backward-compatible with the previous
release. We recommend all users upgrade.
The library is functional, but there are likely issues
we didn’t find in our own testing. Please give feedback
in #opus on irc.libera.chat or at opus@xiph.org.
Programming documentation is available in tree and
online.
This Opus 1.2.1 minor release fixes a relatively rare
issue where the 1.2 encoder would wrongly assume a signal to be bandlimited to 12 kHz and not encode frequencies
between 12 and 20 kHz. This only happens on a few clips, but it is good to update to avoid a potential
loss of quality.
There are no other changes compared to 1.2. Please report any problems.
This Opus 1.2 major release
brings many quality improvements, new features, and bug fixes. You can read all the details
in this release demo page. Changes since 1.1.x include:
Speech quality improvements especially in the 12-20 kbit/s range
Improved VBR encoding for hybrid mode
More aggressive use of wider speech bandwidth, including fullband speech starting at 14 kbit/s
Music quality improvements in the 32-48 kb/s range
Generic and SSE CELT optimizations
Support for directly encoding packets up to 120 ms
DTX support for CELT mode
SILK CBR improvements
Support for all of the fixes in draft-ietf-codec-opus-update-06 (the mono downmix and the folding fixes need --enable-update-draft)
Many bug fixes, including integer wrap-arounds discovered through fuzzing (no security implications)
There are no known regressions compared to the latest stable release (1.1.5). Please report any problems.
Opus 1.2-rc1 is
the first release candidate of the upcoming Opus 1.2 release. If no
issues are found with it, it will soon become 1.2-final, so we encourage
everyone to give it a try. Changes compared to 1.2-beta include:
Improves quality on files with powerful tones that cause MDCT leakage
Improves bit allocation on mode transitions (CELT to/from SILK/hybrid)
More ARM Neon optimizations
Fixes to the speech/music detection at the very beginning of files
Fixes to the unit tests (fixes illegal instructions and --disable-static)
This Opus 1.2-beta beta release
of the upcoming Opus 1.2 fixes a bug in surround encoding causing very bad quality
on signals beyond a certain amplitude. Thanks to Franziska Trojahn and others from HfT Leipzig
for finding this issue through their listening test (the quality of the two bad files in the paper should now be similar to the others). Also included in this release are some more ARM Neon optimizations and some low-bitrate quality tuning.
This Opus 1.1.4
release fixes a single bug. A specially-crafted Opus packet could cause
an integer wrap-around in the SILK LSF stabilization code. This would cause
an out-of-bounds read 256 bytes before a constant table. In most circumstances,
the consequences are harmless and the result is simply noise in the audio.
This was reported as CVE-2017-0381.
Contrary to that report, our own analysis shows that no
remote code execution is possible. However, we are making this release
as a precaution.
This Opus 1.2-alpha alpha release
of the upcoming Opus 1.2 brings many quality improvements, new features, and bug fixes, including:
Speech quality improvements especially in the 12-20 kbit/s range
Improved VBR encoding for hybrid mode
More aggressive use of wider speech bandwidth, including fullband speech starting at 14 kbit/s
Music quality improvements in the 32-48 kb/s range
Generic and SSE CELT optimizations
Support for directly encoding packets up to 120 ms
DTX support for CELT mode
SILK CBR improvements
Support for all of the fixes in draft-ietf-codec-opus-update-04 (the mono downmix and the folding fixes need --enable-update-draft)
Many bug fixes, including integer overflows discovered through fuzzing (no security implications)
Please test it and and report any problems. There are no known regressions compared to the
latest stable release (1.1.3), but given the large number of changes, it’s possible some bugs have
slipped through.
Fixes encoder or decoder state reset, which would previously disable some run-time selected architecture-specific optimizations; and
Fixes hybrid mode discontinuous transmission (DTX) operation, where the comfort noise above 8 kHz was incorrectly estimated and could
oscillate in time.
None of these bugs were regressions over previous releases.
The opusfile library provides seeking, decode, and playback of Opus streams in the Ogg
container (.opus files) including over http(s) on posix and windows systems.
Changes since the v0.5 release:
Fix bugs with comment handling
Fix build for BSD
Fix bugs handling invalid and non-opus streams
Some of these bugs kept basic functionality of the APIs from working at all, so we
recommend all users upgrade.
The opusfile library provides seeking, decode, and playback of Opus streams in the Ogg container (.opus files) including over http(s) on posix and windows systems.
Changes since the v0.4 release:
Report HTTP (ICY) headers to client
New tag comparison and copy functions
New application decoding callback API for advanced clients
New dither disable function for advanced clients
constify API
Avoid clipping downmixing from a fixed-point decoder
Compared to 1.1-beta, this new release further improves surround encoding quality.
It also includes better tuning of surround and stereo for lower bitrates.
The complexity has been reduced on all CPUs, but especially ARM, which now has
Neon assembly for the encoder. At last, there are a few bugfixes.
This release has numerious build fixes, including updated Visual Studio project files to match
similar changes in the opus package. Support encoding from FLAC files. Metadata tag support,
including album art. Use the new surround encoder API in opus 1.0.3. The opusenc --uncoupled
switch no longer works.
The opusfile library provides seeking, decode, and playback of Opus streams in the Ogg container (.opus files) including over http on posix and windows systems.
This release includes Microsoft Visual Studio project files, supports HTTPS urls on Windows, and includes new API calls for gain control and picture metadata as well as numerous bug fixes.
Opus 1.0.3 includes a backport of the new 1.1 surround API. Aside from that, it includes fixes
for a few minor glitches during mode switching, some minor fixed-point fixes, and fixes a
regression in the FEC code introduced in 1.0.2.
This is an alpha release for the upcoming 1.1 version. Compared to 1.0.2, it includes
quality improvements, optimizations, bug fixes, as well as an experimental speech/music
detector for mode decisions. All the fixes and improvements from 1.0.2 are also in this
release. Quality improvements include unconstrained VBR, a bitrate boost for tonal frames,
and improvements to tf estimation, transient detection and dynamic allocation.
This release includes many build fixes, especially for Windows, as well as some minor correctness
improvements. The opusenc --uncoupled switch is no longer advertised because this debugging option
was being mistaken for a quality enhancement.
An experiemental opusrtp tool is new in this release. It is not installed by default because it’s of
limited usefulness, mostly for debugging other RTP implementations. It can send an Opus file over RTP
or record a packet stream to an Opus file, on POSIX systems.
Opus 1.0.2 fixes an out-of-bounds read that could be triggered by a malicious Opus packet causing an
integer wrap-around in the padding code. Considering that the packet would have to be at least 16 MB
in size and that no out-of-bounds write is possible, the severity is very low. Other changes include
fixes and improvements to the PLC and hybrid mode quality improvements. As usual, this release is
fully compliant with the Opus specification.
This release includes minor updates (mostly related to the the build system) that did
not make it to the final RFC. It is fully compliant with the Opus specification.
This is a third release candidate for the upcoming 1.0.1 release. This release includes
documentation fixes, portability improvements, and build file fixes, including a generic
Makefile.unix.
This is a second release candidate for the upcoming 1.0.1 release. This release includes
documentation fixes, and it should now be possible to build on Windows.
This is a release candidate for the upcoming 1.0.1 release. The release includes
minor updates (mostly related to the build system) that did not make it to the
upcoming RFC.
This is a release candidate for the final 1.0 release. Other than the RFC number in
the comments, this code is expected to be the same as the final RFC and 1.0 release.
This release fixes several resampling bugs and greatly increases resampler performance.
It also provides working Unicode filename and tag support for Windows (Unicode worked for Mac and *nix previously).
This release adds proper multichannel WAV output from opusdec, disables the
non-working --stereo and --mono mixdown switches, and uses linear predictive
coding to generate padding on the final frame to reduce the risk of clicking with gapless playback.
This version matches version -14 of the draft and fixes minor issues brought up
before the upcoming IETF last call. There is no change to the bit-stream.
This version matches version -12 of the draft and fixes minor issues brought up before
the upcoming IETF last call. There is no change to the bit-stream.
This version matches version -11 of the draft. The bit-stream has not changed,
except for some corner cases that are unlikely to happen in the real world.
This version matches version -10 of the draft and fixes several glitches caused
by mode switching and other corner cases. This required breaking the bit-stream
for the SILK-only stereo and hybrid stereo modes. Fortunately, these modes are
not often used, so few users should be affected. This release also implements a
CBR mode for SILK mode.
This release includes a much better test suite and has been extensively tested
in multiple configurations. See the Jenkins build system and the resulting
floating-point coverage and fixed-point coverage. Now that the
analysis and documentation of the code has been completed, further changes to the
bit-stream until the final freeze are unlikely.
This is a cleanup release for version -07 of the draft. The bit-stream is
tentatively frozen. It will not change unless a major issue is found or if
for some reason the Working Group decides something needs to be change.
Opus libopus 0.9.2 adds support for glitchless switching between the voice and audio mode.
Also, the encoder now defaults to a new “automatic” mode and bandwidth selection and
attempts to select the optimal mode and bandwidth considering the bitrate and voice content.
Several bugs were also fixed and the codec and test tools should be more robust in general.
Opus libopus 0.9.1 fixes a few minor bugs that were found in version libopus 0.9.0.
Unfortunately, this has required slight changes to the bit-stream, which is thus not
compatible with libopus 0.9.0. This release adds support for forward error correction
(FEC), which improves performance under packet loss.