https://wiki.hydrogenaud.io/api.php?action=feedcontributions&user=47.18.96.45&feedformat=atom
Hydrogenaudio Knowledgebase - User contributions [en]
2024-03-29T15:15:24Z
User contributions
MediaWiki 1.22.7
https://wiki.hydrogenaud.io/index.php?title=AoTuV
AoTuV
2019-04-11T07:32:41Z
<p>47.18.96.45: </p>
<hr />
<div>{{DISPLAYTITLE:aoTuV}}<br />
'''aoTuV''' is an abbreviation for '''Aoyumi's Tuned Vorbis'''; it is third-party development/tuning of the [[Vorbis]] encoder. <br />
<br />
aoTuV versions improves significantly on Vorbis quality: Most people agree '''aoTuV beta 4 (and newer)''' achieves [[transparency]] at -q 5.<br />
<br />
Released in December 2005, '''aoTuV beta 4.51''' improved further on low bit-rate and after peer review was rebranded '''aoTuV Release 1''' with some reports that -q 1 (approximately 80 kbps) is good enough for streaming.<br />
<br />
In June 2007, the '''aoTuV beta 5''' versions including 5.7 underwent peer review and superseded Release 1 as the HA recommended Vorbis encoders, improving the low bit-rate quality in relation to [[Noise normalization]] without sacrificing compression ratio.<br />
<br />
'''aoTuV Beta 6''' versions released in 2011 made further improvements on pre-echo and post-echo handling, stereo mode decisions and noise normalization at low bitrates but have not been extensively peer-reviewed by the HydrogenAudio community.<br />
<br />
See [[Recommended Ogg Vorbis]] page for more details.<br />
<br />
== External links ==<br />
* [https://ao-yumi.github.io/aotuv_web/index.html aoTuV's home page].<br />
* [[Lancer]]: [[BlackSword]]'s accelerated version of aoTuV binaries, courtesy of the Ogg Vorbis Acceleration Project<br />
* [http://www.hydrogenaudio.org/forums/index.php?showtopic=44681&hl= How to prounounce "aoTuV"]<br />
* How to compile aoTuV under Linux: [[Compiling aoTuV]]<br />
<br />
[[Category:Software]]<br />
[[Category:Encoder/Decoder]]</div>
47.18.96.45
https://wiki.hydrogenaud.io/index.php?title=Opus
Opus
2018-12-19T04:02:38Z
<p>47.18.96.45: </p>
<hr />
<div>{{Software Infobox<br />
| name = Opus<br />
| logo = [[Image:opus-logo.png|250px|Official Opus logo]]<br />
| screenshot =<br />
| caption = Opus Interactive Audio Codec<br />
| maintainer = [http://xiph.org/ Xiph.Org Foundation]<br />
| stable_release = 1.3<br />
| preview_release = 1.3-rc2<br />
| operating_system = Windows, Mac OS/X, Linux/BSD<br />
| use = Encoder/Decoder<br />
| license = 3-clause BSD license<br />
| website = [http://www.opus-codec.org/ opus-codec.org]<br />
}}<br />
<br />
'''Opus''' is a [[lossy]] audio compression format developed by the Internet Engineering Task Force (IETF) designed to be suitable for interactive real-time applications over the Internet,{{ref|homepage|a}} including music as well as speech, yet it is also very competitive for use as a storage and playback format, being a [http://people.xiph.org/~greg/opus/ha2011/ class leader at around 64 kbps] and [http://listening-test.coresv.net/results.htm also at 96 kbps]. As an open format standardised through [http://tools.ietf.org/html/rfc6716 Request for Comments (RFC) 6716],{{ref|RFC|c}} a high quality reference implementation is provided under the 3-clause BSD license{{ref|homepage|a}} which compiles and runs on the vast majority of general purpose and embedded (fixed point) processors. Many Software patents which cover Opus are licensed under royalty-free terms.{{ref|FAQ|b}} Opus is also a Mandatory To Implement (MTI) codec for the upcoming WebRTC (Web Real Time Communication) specification of the World Wide Web Consortium (W3C).<br />
<br />
Opus incorporates technology from two codecs, the speech-oriented SILK codec developed by Skype and the multi-purpose low-latency CELT codec developed by Xiph.org with significant changes to each to ensure they can work together.{{ref|RFC|c}} Opus can seamlessly transition among high and low bitrates, using a linear prediction codec (the SILK layer) at lower bitrates and a lapped transform codec (the CELT layer) at higher bitrates, as well as a hybrid of the two for a short overlap in which SILK encodes the 0-8kHz spectrum and the CELT layer encodes only the frequencies above 8kHz.{{ref|RFC|c}} Opus has very low algorithmic delay (typ 22.5 ms) compared to popular music formats such as [[MP3]], [[Vorbis |Ogg Vorbis]], [[AAC | LC-AAC and HE-AAC]] (all over 100 ms), yet performs very competitively with them in terms of quality per bitrate, making it comparably viable as a storage & playback format. Also unlike Vorbis, Opus does not require the definition of large codebooks for each individual file, making it also preferable for short clips of audio, such as those often used by game developers, a field where patent-free Vorbis is commonly used.{{ref|RFC|c}}<br />
<br />
Considerably more details of the history and potential applications for Opus are included in the ''Wikipedia'' page for '''[http://en.wikipedia.org/wiki/Opus_%28audio_format%29 Opus (audio format)]'''<br />
<br />
==Characteristics==<br />
Opus supports bitrates from 6kbps to 510kbps for typical stereo audio sources (and a maximum of around 255 kbps per channel for multichannel audio), with the 'sweet spot' for music and general audio around 30kbps (mono) and 40-100 kbps (stereo). It is intrinsically [[VBR | variable bitrate]], though constrained VBR and [[CBR | constant bitrate]] modes are possible where required. In the case of the reference release, libopus, the target bitrate is calibrated against the internal constant quality targets so that over a typical music collection, something very close to the target bitrate will be achieved. This bitrate-calibrated approach differs from most VBR encoders (e.g. LAME, helix mp3, qaac, Nero aacenc, Ogg Vorbis, Musepack) where a setting on some 'constant quality' scale (which differs between encoders) is used and the bitrate will fall where it may. Improved future versions can be expected to offer improved quality at the same setting. Independent implementations may adopt a different approach.<br />
<br />
Opus is able to seamlessly adapt its mode of operation without glitches or sound interruption (an illustrative demonstration of [http://opus-codec.org/examples/#gauge bitrate scalability] is on the Opus Examples page), which can be particularly useful for mixed-content audio or varying network conditions, making the unified Opus codec superior to a suite of different codecs that might otherwise cover the same range of bitrate and quality settings and would require out-of-band signalling to instigate codec switching. The switching includes the choice of mono, stereo and other channel mappings, the use of the speech-oriented SILK layer, the general-purpose CELT layer or the hybrid of both, and the use of different audio bandwidths (4kHz, 6kHz, 8kHz, 12kHz, 20kHz) as well as the quality adjustments within the same operating mode that are available in most VBR-capable codecs.<br />
<br />
Of importance mainly to interactive uses, but potentially useful in time-delayed audio streaming also, Opus includes packet loss concealment (PLC) in all modes and, in the speech-oriented modes where the SILK layer is active it also supports Forward Error Correction (FEC) where the expected rate of packet loss can be indicated to the encoder by the user or by application software and critical frames (e.g. consonant sounds) can be retransmitted at low bitrate to preserve intelligibility.<br />
<br />
For music and general audio, the CELT layer of Opus builds on knowledge gained during xiph.org's Vorbis development and ensures as a primary goal that the total energy in each spectral band is preserved while requiring only a modest bitrate overhead to achieve this, thereby eliminating a lot of bitrate-starvation artifacts such as 'birdies' that are common in low-bitrate MP3, especially during transients, applause and cymbal sounds. This technique likewise increases coding efficiency at bitrates targetting transparent music reproduction. Short blocks (2.5 ms) are also possible for efficient transient handling. Short blocks can also be used exclusively, if very low algorithmic delay (5.0ms) is required to enable very low-latency interative audio (e.g. live networked music performances such as remote jam sessions), though greater bitrate is then required to maintain the same quality (illustrated in [http://people.xiph.org/~xiphmont/demo/celt/demo.html#demo Monty's CELT demo page] under Constant PEAQ value, varying latency). CELT uses a number of additional techniques and provides additional advanced tools to enable encoder tuning.<br />
<br />
Opus natively supports [[gapless playback]] (though [[Gapless_playback#Poorly_designed_playback_systems | poor player design]] might itself induce interruptions during playback). Playback gain is also required, making some form of [[ReplayGain]] or [[ReplayGain_2.0_specification | similar]] volume control possible in any compliant player.<br />
<br />
==Bitrate performance==<br />
For mono speech, Opus ranges from intelligible narrowband speech reproduction starting at 6 kbps to medium-band, wideband and superwideband speech, reaching full-band speech by around 14 kbps in encoder version 1.2 (was 21 kbps in v1.1, 29 kbps in v1.0). Above about 32 kbps, the SILK layer is no longer used at all, as CELT alone gives superior quality.<br />
<br />
For music, the SILK modes are quite tolerable and better than CELT at very low bitrates. The hybrid mode is adopted as bitrate increases, extending bandwidth first to 12kHz (comparable with compact cassette) then to the full 20kHz and CELT then takes over. Assuming the source is stereo, the transition from mono to stereo typically happens between the transition from 12kHz to 20kHz. Encoder version 1.2 includes great improvements to music encoding in the 32-64 kbps range, allowing full-band stereo at 32 kbps and providing acceptable quality at 48 kbps where artifacts are audible but rarely annoying. Version 1.3 is expected to further improve quality in this range.<br />
<br />
Multi-format stereo music listening tests have demonstrated the superiority of Opus at 64 kbps and 96 kbps compared to the best AAC-LC, HE-AAC and Ogg Vorbis encoders, and at 96 kbps also to 128 kbps MP3 encoded using LAME -V 5.<br />
<br />
==Indicative bitrate and quality==<br />
The tables below give illustrative, indicative quality guidance based on typical modes used internally by Opus and a range of listening tests.<br />
<br />
In encoder version 1.1 automatic detection of speech/music and bandwidth detection were introduced to improve mode decisions and VBR is less constrained, all with the aim of maximizing the quality/bitrate tradeoff, and these improvements are further enhanced in version 1.2 and 1.3. These tables are likely to require updates as the encoder is improved, especially in low-bitrate regions.<br />
<br />
===Speech encoding quality===<br />
This table assumes a '''monophonic''' source sampled at CD quality or above (typ 48 kHz sampling rate) but mentions stereo compatibility for 40kbps+. The default 20ms frame size (22.5ms latency) is assumed. Note that the selection of ''VOIP'' mode will deliberately modify the sound with a High Pass Filter and emphasis of formants and harmonics to improve intelligibility of speech especially in noisy environments much as telephones do. ''Auto'' mode will not modify the sound prior to encoding so is usually better for high quality speech recordings or mixed speech and music.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Bitrate Target<br />
!Bandwidth<br />
!Typical Mode Used<br />
!Speech Quality<br />
!Use Cases / Competitive Codecs<br />
|-<br />
!Less than 5 kbps<br />
| -<br />
| -<br />
| Bitrates lower than 6 kbps not supported by Opus<br />
| Try [http://codec2.org/ codec2] for 0.7-3.2 kbps mono speech<br />
|-<br />
!6 kbps<br />
|6 kHz medium-band<br />
|SILK<br />
|Fair, intelligible<br />
|AMR-NB may be a little better, but higher latency & proprietary, [[Speex]] also competitive<br />
|-<br />
!8 kbps<br />
|6 kHz medium-band<br />
|SILK<br />
|Close to telephone quality<br />
|AMR-NB & AMR-WB similar quality, but higher latency & proprietary. [[Speex]] competitive.<br />
|-<br />
!12 kbps<br />
|12 kHz super-wideband<br />
|hybrid<br />
|Medium bandwidth, better than telephone quality<br />
|Similar quality to AMR-WB<br />
|-<br />
!16 kbps<br />
|20 kHz<br />
|hybrid/CELT<br />
|Wideband speech quality<br />
|Similar to/better than AMR-WB<br />
|-<br />
!24 kbps<br />
|20 kHz<br />
|hybrid/CELT<br />
|Near transparent speech<br />
|Better than AMR-WB. Podcasts/audiobooks/talk-radio.<br />
|-<br />
!32 kbps<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent speech plus moderately good stereo music<br />
|Much better than AMR-WB. Podcasts/audiobooks/talk-radio.<br />
|-<br />
!40 kbps<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent mono or stereo speech, fairly good stereo music<br />
|Stereo podcasts/audiobooks/talk radio with some music<br />
|-<br />
!48 kbps or more<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent mono or stereo speech, reasonable music<br />
|Flexible general purpose modes to suit mixed music and speech<br />
|-<br />
|}<br />
<br />
===Music encoding quality===<br />
This table assumes a '''stereophonic''' source sampled at CD quality or above (typ 48 kHz sampling rate). Opus will automatically use mono at very low bitrates, though a certain amount of stereo encoding can still be used - content dependent even when mono is specified as the typical stereo mode in the table below.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Bitrate target<br />
!Stereo mode<br />
!Bandwidth<br />
!typ SILK/CELT use<br />
!Music quality notes<br />
!Use cases/notes/competitive codecs<br />
|-<br />
!6 kbps<br />
|mono<br />
|6 kHz<br />
|SILK<br />
|Poor, muffled sound but intelligible lyrics.<br />
| -<br />
|-<br />
!8 kbps<br />
|mono<br />
|6 kHz<br />
|SILK<br />
|Poor, muffled but OK for bitrate<br />
| -<br />
|-<br />
!14 to 16 kbps<br />
|mono<br />
|20 kHz<br />
|hybrid/CELT<br />
|Fairly poor but OK for bitrate<br />
|Perhaps acceptable for incidental music<br />
|-<br />
!22 to 24 kbps<br />
|mono<br />
|20 kHz<br />
|hybrid/CELT<br />
|Fair but OK for bitrate<br />
|OK for incidental music<br />
|-<br />
!32 to 40 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Moderately good stereo, some artifacts, rarely nasty<br />
|Stereo podcasts, audiobooks, very low bitrate music<br />
|-<br />
!48 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, nice sound, may have problems with cymbals<br />
|Stereo podcasts, audiobooks, low bitrate music<br />
|-<br />
!64 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, nice sound, detectable differences to original (mostly 'not annoying')<br />
|Music storage & streaming. Beat HE-AAC, Vorbis, MP3 in [http://people.xiph.org/~greg/opus/ha2011/ listening test]<br />
|-<br />
!96 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, good quality approaching transparency<br />
|Music storage & high quality streaming. Beat LC-AAC, Vorbis, MP3 in [http://listening-test.coresv.net/results.htm listening test]<br />
|-<br />
!112 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Fairly close to transparency (needs more testing)<br />
|Music storage & high quality streaming. Very low-latency stereo networked music performance/jam sessions at OK quality (see below table)<br />
|-<br />
!128 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Very close to transparency (needs more testing). Most modern codecs competitive (AAC-LC, Vorbis, MP3)<br />
|Music storage & streaming. Future download music sales.<br />
|-<br />
!160 to 192 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Transparent with very low chance of artifacts (a few killer samples still detectable). Most old & new lossy codecs competitive.<br />
|Music storage & streaming, dedicated limited-bandwidth audio links (e.g. wireless, [http://en.wikipedia.org/wiki/Bluetooth_profile#Advanced_Audio_Distribution_Profile_.28A2DP.29 A2DP-bluetooth] type links). <br />
|-<br />
!510 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Maximum possible stereo bitrate target (actual rate often less than 510 for default frame size). Most old and new lossy codecs competitive, plus near-lossless [[lossyWAV]] and [[WavPack | WavPack lossy]]<br />
|Music storage, dedicated limited-bitrate audio links (e.g. wireless, minimum latency high quality audio. LossyWAV and WavPack lossy are very competitive for storage, and WavPack lossy --blocksize=256 may be competitive with minimum latency mode also.<br />
|-<br />
!>510 kbps<br />
| -<br />
| -<br />
| -<br />
|Above Opus bitrate range allowed for stereo sources<br />
|Settle for 510kbps or use [[lossless]], [[lossyWAV]], [[WavPack | WavPack lossy]] or lossy transform/subband codecs like [[Vorbis]], [[Musepack]] at very high settings.<br />
|-<br />
|}<br />
<br />
===Lower latency versus quality/bitrate trade-off===<br />
====Packet overhead in interactive applications====<br />
For interactive use on the Internet or other packet-based networks, total bandwidth used will be subject to packet overhead. The more packet headers that are transmitted every second, the greater will be the overhead that is required. For this reason, Opus, while defaulting to 20.0ms frames, supports 60.0ms frames to reduce overhead when transporting low-bitrate SILK frames at the expense of greater latency, which may still be acceptable for speech, and also supports 10.0ms SILK frames to reduce latency somewhat at the expense of packet overhead.<br />
<br />
In the CELT layer, which tends to operate at higher bitrates than SILK, 20.0ms frames are the default, but frames of 10.0ms, 5.0ms and 2.5ms are also possible, which directly increases the frame overhead by transmitting more packets per second to achieve lower latency. In addition, as we'll see below it also reduces the quality/bitrate tradeoff of the CELT layer itself.<br />
<br />
None of the bitrates mentioned in this article account for the packet overhead.<br />
<br />
====CELT layer latency versus quality/bitrate trade-off====<br />
Unlike the SILK layer, which works on fixed 10.0ms blocks, 1, 2 or 6 of which can be combined into an Opus frame, the CELT layer is able to modify the encoding block lengths available to enable its use with shorter frames.<br />
<br />
When the CELT layer uses 10.0ms, 5.0ms and 2.5ms frames instead of the default 20.0ms, it must use smaller transform block sizes to achieve this, thereby reducing frequency resolution in the MDCT compared to the default transform window, thus reducing encoding efficiency for tonal signals. To obtain the same frequency precision for a sound divided into shorter transform windows, improved amplitude precision is necessary, resulting in increased bitrate to obtain the same perceptual quality (or conversely lower quality at the same bitrate).<br />
<br />
These reduced-latency modes remain efficient for transient signals, which use short blocks anyway.<br />
<br />
In all modes, the algorithmic delay consists of the frame size plus an additional 2.5ms delay. The CELT layer requires 2.5ms for MDCT window overlap.<br />
<br />
Xiph.org used matched PEAQ scores (approximate perceptual quality assessment made in software) for the CELT0.10 codec that was used as the basis of the CELT layer in the Opus reference release, which indicate the following [http://people.xiph.org/~xiphmont/demo/celt/demo.html#demo approximate equivalent settings] for stereo music.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Frame size<br />
!Algorithmic delay<br />
!Bitrate to match 64kbps@22.5ms delay<br />
!fractional bitrate increase<br />
|-<br />
!20.0 ms<br />
|22.5 ms<br />
|64.0 kbps<br />
|0.0 %<br />
|-<br />
!10.0 ms<br />
|12.5 ms<br />
|70.4 kbps<br />
|10.0 %<br />
|-<br />
!5.0 ms<br />
|7.5 ms<br />
|84.8 kbps<br />
|32.5 %<br />
|-<br />
!2.5 ms<br />
|5.0 ms<br />
|112.0 kbps<br />
|75.0 %<br />
|-<br />
|}<br />
<br />
N.B. This table is useful for interactive streaming only. For music storage & delayed playback or non-interactive streaming, latency reduction is not important and the default 20.0ms frame size is preferable.<br />
<br />
== Hardware & Software Support ==<br />
<br />
Much of this section is based heavily on the Jan 12th 2013 version of the '''Support''' section of the [http://en.wikipedia.org/wiki/Opus_%28audio_format%29 Wikipedia article], which is more likely to be kept updated and to provide links to further information about the supporting platforms.<br />
<br />
The format and algorithms are openly documented and the reference implementation is published as free software. The reference implementation (Opus Audio Tools, opus-tools), consisting of separate encoders and decoders, is published under the terms of a BSD-like license. It is written in C programming language and can be compiled for hardware architectures with or without floating point unit. The accompanying diagnostic tool opusinfo reports detailed technical information about Opus files, including information on the standard compliance of the bitstream format. It is based on ogginfo from the vorbis-tools and therefore, unlike the encoder and decoder, available under the terms of version 2 of the GPL.<br />
<br />
=== Commandline binaries & libopus versions ===<br />
The commandline tools of the reference version are available pre-compiled for the most popular operating systems at [http://opus-codec.org/downloads opus-codec.org] and [https://ftp.mozilla.org/pub/mozilla.org/opus/ Mozilla's ftp server], plus in the foobar2000 free encoders pack and some alternative compiles through the hydrogenaud.io opus forum. The libopus commandline tools include encoder ''opusenc'', decoder ''opusdec'', and with a different license, the ''opusinfo'' opus stream & metadata analyzer.<br />
<br />
The '''latest stable release''' is recommended for general use and as of mid 2014 is considered competitive with or superior to the best alternative speech or general music encoders at most supported bitrates.<br />
<br />
==== libopus v1.0 ====<br />
Released 11 Sep 2012 when RFC6716 was standardized but mostly fully developed by late 2011.<br />
<br />
'''Stable''', '''well-tuned''' ''opusenc'' reference encoder as included in RFC documentation.<br />
<br />
CELT layer closely related to CELT 0.10 implements Constrained VBR mode by default (bitrate boost used mainly for transients), plus true CBR.<br />
<br />
==== libopus v1.1 ==== <br />
<br />
The alpha source code released 21 Dec 2012 for testing & user feedback and following a beta release and testing, the stable 1.1 version was released on 5 December 2013, considered well tested enough for general release.<br />
<br />
CELT layer [http://jmspeex.livejournal.com/11737.html quality improvements] introduced to provide '''unconstrained VBR''' include a rate boost not just for transients but now for highly tonal signals too and rate reduction when stereo image is narrow. There's also a rewrite of its '''transient detection''' code and '''time-frequency analysis''' code, and rewritten '''dynamic allocation''' code (HF/LF tilt and Band Boost) to allow more aggressive changes from the typical static allocation when warranted.<br />
<br />
There are many minor improvements to '''speech quality''' in both SILK and CELT layers.<br />
<br />
*'''DC-rejection''' below 3 Hz also aids quality if inaudible DC offset is present with no effect on deep bass notes.<br />
<br />
*'''Automatic speech/music detection''' is introduced to optimize encoding mode choices, especially near the bitrate target range (presumably around 24~40kbps) where the encoder may perform best with SILK, hybrid or CELT depending on content type. Below that range SILK performs best for both music & speech, and above it CELT performs best for speech & music. The detection, without look-ahead is not perfect but usually is undecided in audio where either mode will work well.<br />
<br />
*'''Automatic bandwidth detection''' is also introduced to save wasted bits allocated to absent frequencies.<br />
<br />
*'''Surround sound improvements''' were introduced since the beta release with considerable advances in coding efficiency, bitrate allocation and quality.<br />
<br />
==== libopus v1.1.3 ==== <br />
Released July 15th, 2016. This version contains:<br />
<br />
*Neon optimizations improving performance on ARMv7 and ARMv8 by up to 15%<br />
<br />
*Fixes some issues with 16-bit platforms (e.g. TI C55x)<br />
<br />
*Fixes to comfort noise generation (CNG)<br />
<br />
*Documenting that PLC packets can also be 2 bytes<br />
<br />
*Includes experimental ambisonics work (--enable-ambisonics)<br />
<br />
==== libopus v1.2.1 ==== <br />
Released June 26th, 2017. This version contains:<br />
<br />
*Speech quality improvements especially in the 12-20 kbit/s range<br />
<br />
*Improved VBR encoding for hybrid mode<br />
<br />
*More aggressive use of wider speech bandwidth, including fullband speech starting at 14 kbit/s<br />
<br />
*Music quality improvements in the 32-48 kb/s range<br />
<br />
*Generic and SSE CELT optimizations<br />
<br />
*Support for directly encoding packets up to 120 ms<br />
<br />
*DTX support for CELT mode<br />
<br />
*SILK CBR improvements<br />
<br />
*Support for all of the fixes in draft-ietf-codec-opus-update-06 (the mono downmix and the folding fixes need --enable-update-draft)<br />
<br />
*Many bug fixes, including integer wrap-arounds discovered through fuzzing (no security implications)<br />
<br />
==== libopus v1.3 ====<br />
Released on October 18th, 2018. This version contains:<br />
<br />
* Improvements to voice activity detection (VAD) and speech/music classification using a recurrent neural network (RNN)<br />
<br />
* Support for ambisonics coding using channel mapping families 2 and 3<br />
<br />
* Improvements to stereo speech coding at low bitrate<br />
<br />
* Using wideband encoding down to 9 kb/s<br />
<br />
* Making it possible to use SILK down to bitrates around 5 kb/s<br />
<br />
* Minor quality improvement on tones<br />
<br />
* Enabling the spec fixes in <nowiki>RFC 8251</nowiki> by default<br />
<br />
* Security/hardening improvements<br />
<br />
* Fixes to the CELT PLC<br />
<br />
* Bandwidth detection fixes<br />
<br />
=== Ports ===<br />
<br />
==== Concentus ====<br />
<br />
The libopus reference library (fixed-point variant) has successfully been ported to both '''C#''' and '''Java''', as part of a project called '''Concentus'''. The aim of the project is specifically to target cross-platform applications where native C interop is relatively difficult. The code is available on [https://github.com/lostromb/concentus Github] and distributed via standard package managers.<br />
<br />
==== Emscripten ports ====<br />
<br />
At least one implementation of opus in Javascript has been made using the automated tool [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Emscripten emscripten]. See [https://blog.rillke.com/opusenc.js/ here], [https://github.com/kazuki/opus.js-sample here] and [https://github.com/audiocogs/opus.js here].<br />
<br />
=== VoIP software ===<br />
* The open source virtual PBX Freeswitch supports Opus transcoding.<br />
* The voice-chat software Mumble supports Opus as its main codec.<br />
* SIP softphones Phoner and PhonerLite support Opus<br />
* The SIP and IAX2 client SFLphone is being fitted with Opus support.<br />
* Integration of Opus into the Skype client is finished, although no version with Opus support has yet been published.<br />
* TrueConf video conferencing solutions support Opus.<br />
* Opus support is planned for Jitsi 2.0, together with VP8 video<br />
* Empathy may use any format supported in GStreamer, including Opus.<br />
* Line2 has replaced their current codec with Opus. Their iOS app will be the first to be released with the Opus. The Android app will follow later.<br />
* CSipSimple supports Opus, Codec2, G.726 and G.722.1 with an additional plug-in.<br />
* The voice-chat software TeamSpeak 3 supports Opus for voice and music in pre-release server 3.0.7-pre2 and beta client version 3.0.10<br />
<br />
=== Web frameworks and browsers ===<br />
* Opus support is mandatory for WebRTC implementations.<br />
* Mozilla supports Opus beginning with version 15 of Firefox and Thunderbird, plus Seamonkey, which is uses shared codebase.<br />
* Depending on the backend in use, Opera supports inline playback of embedded Opus files. Official support for Opus and WebRTC are on the development roadmap.<br />
* Chromium and Google Chrome have audio support as of version 33.<br />
* Apple's Safari browser now supports Opus as of iOS 11 and macOS 10.13 High Sierra.<br />
* Maxthon Cloud Browser<br />
<br />
=== Streaming audio ===<br />
* Icecast. (examples: [http://dir.xiph.org/by_format/Opus Stream directory by format Opus], [http://smj.delfa.net/opus_64.m3u 64k]/[http://smj.delfa.net/opus_256.m3u 256k] [http://smj.delfa.net/ Smooth Jazz Opus Stream], [http://www.absoluteradio.co.uk/listen/labs.html Absolute Radio Opus Trial] 7 stations at 24,64,96 kbps, [http://icecast.ofdoom.com:8000/burst-opus.ogg Icecast Of Doom 96k]<br />
* Krad Radio<br />
* Liquidsoap<br />
<br />
=== Operating systems and desktop multimedia frameworks ===<br />
* In Debian GNU/Linux the Opus development tools and supporting libraries can be installed from the preconfigured repositories in the next stable version ("wheezy") that is expected to be released in early 2013.<br />
* For Microsoft Windows, there are DirectShow filters supporting Opus, including DC-Bass Source Mod and the LAV Filters.<br />
* In GStreamer the integration of Opus support is complete.<br />
* FFmpeg supports decoding and encoding Opus via the external library libopus.<br />
* Android 5.0 and above supports Opus natively if encapsulated in the Ogg container, but .opus filename extension is not recognized by Android, so the use of double filename extension .opus.ogg is recommended as a workaround to allow apps to recognize files as playable audio.<br />
<br />
=== Hardware support ===<br />
* Support in [[Rockbox]] is available. This means hardware support for a series of portable media players (including some products from the iPod series by Apple and Sansa, iriver and Archos devices) and with "Rockbox as an Application" (RaaA) also on Android devices.<br />
<br />
=== Player software ===<br />
<br />
* Windows/Mac/Linux (Cross-Platform)<br />
*# [[VLC]] (media player supports Opus as of version 2.0.4 <br />
*#[[Amarok]] 2.8 has transcoding support for Opus codec if ffmpeg is compiled with support for the libopus library & support for playback of Opus encoded files if Amarok is compiled against TagLib (newer than V1.8)<br />
*# Clementine has Opus support<br />
*# Audacious player<br />
*# [[MPD]] as of version 0.18 if compiled against libopus (supports both encoding for http streams and decoding) <br />
<br />
<br />
* Windows Exclusive<br />
*# AIMP supports Opus natively as of version 3.20 build 1125 beta 1<br />
*# [[foobar2000]] supports Opus natively as of v1.1.14 beta 1<br />
*# Mpxplay supports Opus (using a decoder DLL) as of v1.60 alpha 2<br />
*# [[Winamp]] supports Opus using a [http://forums.winamp.com/showthread.php?p=2925154#post2925154 3rd party plug-in]<br />
*# MPC-HC<br />
<br />
<br />
* iOS/Android (Cross-Platform)<br />
*#Capriccio [https://itunes.apple.com/us/app/capriccio-free-ultimate-music/id434829018?mt=8 iOS]/[https://play.google.com/store/apps/details?id=me.ideariboso.capriccio Android]<br />
*#foobar2000 [https://itunes.apple.com/us/app/foobar2000/id1072807669?mt=8 iOS]/[https://play.google.com/store/apps/details?id=com.foobar2000.foobar2000&hl=en Android]<br />
<br />
<br />
* Android Exclusive<br />
*# [http://gonemadmusicplayer.blogspot.com/ GoneMAD Music Player]<br />
*# [http://neutronmp.com/ Neutron Music Player]<br />
*# [http://www.videolan.org/vlc/download-android.html VLC Media Player for Android]<br />
*# [https://play.google.com/store/apps/details?id=ru.recoilme.freeamp FreeMP]<br />
*# [https://play.google.com/store/apps/details?id=net.mderezynski.youki3 Youki]<br />
*# [https://play.google.com/store/apps/details?id=com.aimp.player AIMP for Android]<br />
*# [https://play.google.com/store/apps/details?id=com.acmeandroid.listen Listen Audiobook Player]<br />
*# [https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad MX Player]<br />
*# [https://play.google.com/store/apps/details?id=org.tomahawk.tomahawk_android Tomahawk Player Beta]<br />
*# [https://play.google.com/store/apps/details?id=com.maxmpz.audioplayer&hl=en Poweramp Music Player]<br />
<br />
=== Other software ===<br />
* CDBurnerXP<br />
* MediaCoder<br />
* Report-IT<br />
* [[MP3tag|MP3tag]]<br />
* [http://www.xdlab.ru/en/ TagScanner]<br />
* [http://www.xmedia-recode.de/ XMedia Recode]<br />
<br />
== References & Notes ==<br />
<br />
*{{note|homepage|a}}[http://opus-codec.org/ opus-codec.org homepage]<br />
*{{note|FAQ|b}}[http://wiki.xiph.org/OpusFAQ Opus FAQ]<br />
*{{note|RFC|c}}[http://tools.ietf.org/html/rfc6716 IETF RFC 6716]<br />
<br />
[[Category:Codecs]]<br />
[[Category:Lossy]]<br />
[[Category:Encoder/Decoder]]</div>
47.18.96.45
https://wiki.hydrogenaud.io/index.php?title=Fraunhofer_FDK_AAC
Fraunhofer FDK AAC
2018-12-03T10:31:56Z
<p>47.18.96.45: Updating versions.</p>
<hr />
<div>[[category:Encoder/Decoder]]<br />
{{aac-encoders}}<br />
The '''Fraunhofer FDK AAC''' is a high-quality open-source [[AAC]] [[codec|encoder]] library developed by [[Fraunhofer|Fraunhofer IIS]]. It was officially released for Android, but has been ported to other platforms.<br />
<br />
The licensed Fraunhofer AAC codec included in Winamp (often called [[Fraunhofer#Fraunhofer IIS Codecs|FhG AAC]]) is not the same as the FDK AAC codec. While they use the same approach, they are developed by different teams, and target different platforms. The FDK library is built around fixed-point math and originally targeted low-delay communication on mobile devices.<br />
<br />
FDK AAC is considered a favorable alternative to the [[Nero AAC]] codec, which is no longer developed.<br />
<br />
== Software Versions ==<br />
<br />
{|class="wikitable"<br />
! Package/Component !! Version !! Developer/Maintainer !! License !! Description<br />
|-<br />
| FDK Encoder<br />
| 4.0.0 <!-- AACENCODER_LIB_VL[0,1,2] in aacenc_lib.cpp --> [https://android.googlesource.com/platform/external/aac/+/master/libAACenc/src/aacenc_lib.cpp] <br />
|rowspan=4| [[Fraunhofer|Fraunhofer IIS]]<br />
|rowspan=4| [[#FDK License|FDK License]]<br />
|rowspan=4| The FDK AAC library included in Android.<br />
|-<br />
| FDK SBR/PS Encoder<br />(for HE & HEv2)<br />
| 4.0.0 <!-- SBRENCODER_LIB_VL[0,1,2] in sbr_encoder.cpp --> [https://android.googlesource.com/platform/external/aac/+/master/libSBRenc/src/sbr_encoder.cpp]<br />
|-<br />
| FDK Decoder<br />
| 3.0.0 [https://android.googlesource.com/platform/external/aac/+/master/libAACdec/src/aacdecoder_lib.cpp]<br />
|-<br />
| FDK SBR/PS Decoder<br />
| 2.2.6 [https://android.googlesource.com/platform/external/aac/+/lollipop-release/libSBRdec/src/sbrdecoder.cpp]<br />
|-<br />
| [[#(lib)fdk-aac|fdk-aac]]<br />
| 2.0.0 (2018-11-22)<br /> ([https://github.com/mstorsjo/fdk-aac/releases watch]) based on FDK AAC (4.0.0/3.0.0) <br /> shared library version 2.0.0 <!-- in configure.ac --><br />
| Martin Storsjö/Opencore AMR project<br />
|rowspan=2|[[#FDK License|FDK License]] with additions under [http://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 license] <br />
| The FDK AAC encoder and decoder as a portable library separate from Android.<br />
|-<br />
| fdk-aac (debian)<br />
| 0.1.6-1 [https://tracker.debian.org/pkg/fdk-aac] <br /> libfdk-aac0 (shared library version 1.1.0)<br />
| <br />
| The Debian source package for fdk-aac. Includes libfdk-aac* and the [[#aac-enc|aac-enc]] encoding front end.<br />
|-<br />
| [[#fdkaac|fdkaac]]<br />
| 1.0.0 (using libfdk-aac 0.1.6)<br />
| nu774<br />
| zlib<br />
| An advanced front-end to the FDK AAC encoder using libfdk-aac.<br />
|-<br />
| [[#FFmpeg|FFmpeg]]/[[#Libav/avconv|Libav]] support<br />
| Libav: [https://git.libav.org/?p=libav.git;a=blob;f=libavcodec/libfdk-aacenc.c encode], [https://git.libav.org/?p=libav.git;a=blob;f=libavcodec/libfdk-aacdec.c decode] <br /> FFmpeg: [https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/libfdk-aacenc.c encode], [https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/libfdk-aacdec.c decode]<br />
| Martin Storsjö<br />
| [http://www.isc.org/downloads/software-support-policy/isc-license/ ISC license]<br />
| A wrapper for libfdk-aac that adds support to FFmpeg and Libav/avconv. It is included in both projects, and is the recommended AAC encoder for FFmpeg.<br />
|}<br />
<br />
== FDK License ==<br />
The license included by Fraunhofer in the FDK source code specifically allows distribution in source or binary forms, but does not license patented technologies described by the source code. It goes on to say that it can only be distributed as authorized by patent licenses [https://android.googlesource.com/platform/external/aac/+/master/NOTICE], which significantly impacts the earlier statement allowing distribution. For this reason, and a limitation on charging for software that includes the library, the license is considered non-free, by Debian. [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=694257]<br />
<br />
=== Free Software? ===<br />
{| class=wikitable<br />
|-<br />
! Party !! Classification !! Note<br />
|-<br />
| Debian || {{no|Non-free}} || [https://tracker.debian.org/pkg/fdk-aac][https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=694257]<br />
|-<br />
| Fedora/Red Hat || {{yes|Free}} || [https://fedoraproject.org/wiki/Licensing/FDK-AAC]<br />
|-<br />
| FSF || {{maybe|Free (According to Fedora)}} || [https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing]<br />
|}<br />
<br />
== Afterburner ==<br />
''Afterburner'' is "a type of analysis by synthesis algorithm which increases the audio quality but also the required processing power." Fraunhofer recommends to always activate this feature.<br />
<br />
== Audio Object Types ==<br />
The library supports the following MPEG-2/4 AOTs:<br />
{| class="wikitable"<br />
! Object Type ID !! Audio Object Type !! Description<br />
|-<br />
|2 || AAC-LC || "AAC Profile" MPEG-2 Low-complexity (LC) combined with MPEG-4 Perceptual Noise Substitution (PNS)<br />
|-<br />
|5 || HE-AAC || AAC LC + SBR (Spectral Band Replication)<br />
|-<br />
|29 || HE-AAC v2 || AAC LC + SBR + PS (Parametric Stereo)<br />
|-<br />
|23 || AAC-LD || "Low Delay Profile" used for real-time communication<br />
|-<br />
|39 || AAC-ELD || Enhanced Low Delay<br />
|-<br />
|129|| MPEG-2 AAC LC || <br />
|-<br />
|132|| MPEG-2 HE-AAC (SBR) ||<br />
|-<br />
|156|| MPEG-2 HE-AAC v2 (SBR+PS) ||<br />
|}<br />
<br />
== Bitrate Modes ==<br />
<br />
{|class="wikitable"<br />
! AACENC_BITRATEMODE !! Mode !! Stream Bitrate<br />
|-<br />
| 0 || [[Constant Bitrate]] (CBR) || As specified by AACENC_BITRATE<br />
|-<br />
| 1-5 || [[Variable Bitrate]] (VBR) || Calculated based on channel layout (See table below)<br />
|-<br />
|colspan=3|<!--- Don't really know how the modes below work, yet. --><br />
|-<br />
| 6 ||colspan=2| Fixed frame mode.<br />
|-<br />
| 7 ||colspan=2| Superframe mode.<br />
|-<br />
| 8 ||colspan=2| LD/ELD full bitreservoir for packet based transmission<br />
|}<br />
<br />
The bitrate limit for each variable bitrate mode. [https://android.googlesource.com/platform/external/aac/+/master/libAACenc/src/aacenc.cpp] HE and HEv2 will often end up with actual bitrates far below these limits.<br />
{|class="wikitable"<br />
!rowspan=2|AACENC_BITRATEMODE <br />(VBR Modes) !!rowspan=2|Mode !!colspan=2|Bitrate per channel (LC) !!rowspan=2|AOTs<br />
|-<br />
! Mono !! Stereo <sup>a</sup><br />
|-<br />
| 1 || VBR || 32 kbps || 20 kbps || LC, HE, HEv2<br />
|-<br />
| 2 || VBR || 40 kbps || 32 kbps || LC, HE, HEv2<br />
|-<br />
| 3 || VBR || 56 kbps || 48 kbps || LC, HE, HEv2<br />
|-<br />
| 4 || VBR || 72 kbps || 64 kbps || LC<br />
|-<br />
| 5 || VBR || 112 kbps || 96 kbps || LC<br />
|}<br />
<br />
<sup>a</sup> Note that a "stereo" channel is any that is [[Joint stereo|bonded with another channel]], as noted with a plus sign in the [[#Channel Layouts|channel layouts]] table.<br />
<br />
====Example Bitrate Calculations====<br />
<br />
{|class=wikitable<br />
! Profile !! VBR Mode !! Channel layout !! Expected stream bitrate<br />
|-<br />
| LC || 3 || L+R || 2 "stereo" channels at 48kbps = 96kbps<br />
|-<br />
| LC || 3 || C, L+R || 1 "mono" center channel at 56 kbps and 2 "stereo" channels at 48kbps = 152kbps<br />
|-<br />
| LC || 4 || C, L+R, LS+RS, LFE || 1 "mono" center channel and 1 mono LFE channel each at 72kbps, and 4 "stereo" channels (2 sets of 2) each at 64kbps = 400kbps<br />
|}<br />
<br />
==Bandwidth==<br />
[[Image:FDK filter.png|400px|thumb|A spectrogram showing the effect of the FDK AAC low-pass filter.]]<br />
The default bandwidth (or low-pass filter cutoff) for each [[#Bitrate Modes|bitrate mode]] will be the minimum of the appropriate value in the tables below or half the [[#Sample Rates|sample rate]]. This can be overridden, but the maximum value is 20000 Hz. [https://android.googlesource.com/platform/external/aac/+/master/libAACenc/src/bandwidth.cpp] <br />
<br />
The fdk-aac parameter is AACENC_BANDWIDTH. More information can be found in the official documentation, section 3.1 ''Bandwidth''.<br />
<br />
=== HE-AAC/SBR ===<br />
<br />
The HE-AAC and HE-AACv2 profiles encode audio using AAC-LC at one half the sample rate, relying on [[Spectral Band Replication]] (SBR) to attempt reconstruction of the missing higher frequencies. The end result is an apparent full bandwidth transmission (as if no low-pass filter was applied), even though the actual AAC-LC encoded audio is only storing frequencies up to 1/4 the original sample rate. <br />
<!--I haven't been able to confirm that the low-pass filter would still be applied in the case that 1/4 the sample rate was still higher. For example if an input stream sampled at 96kHz encoded using HE-AAC in VBR mode 2 would still have the 13kHz filter applied to the base AAC-LC data. It does appear that way, by looking at the code. --><br />
<br />
=== VBR Modes ===<br />
{|class="wikitable"<br />
! AACENC_BITRATEMODE !! Mono !! Two or More Channels<br />
|-<br />
| 1 ||colspan=2| 13050 Hz<br />
|-<br />
| 2 ||colspan=2| 13050 Hz<br />
|-<br />
| 3 ||colspan=2| 14260 Hz<br />
|-<br />
| 4 ||colspan=2| 15500 Hz<br />
|-<br />
| 5 ||colspan=2| Full range, no filter<br />
|}<br />
<br />
=== CBR Mode ===<br />
{|class="wikitable"<br />
! AOT/Sample Rates !! Bitrate<br />per channel !! Mono !! Two or More Channels<br />
|-<br />
|rowspan=8| LC / Any<br />
| Below 12kbps || 3700 Hz || 5000 Hz<br />
|-<br />
| 12-20 kbps || 5000 Hz || 6400 Hz<br />
|-<br />
| 20-28 kbps || 6900 Hz || 9640 Hz<br />
|- <br />
| 28-40 kbps || 9600 Hz || 13050 Hz<br />
|-<br />
| 40-56 kbps || 12060 Hz || 14260 Hz<br />
|-<br />
| 56-72 kbps || 13950 Hz || 15500 Hz<br />
|-<br />
| 72-96 kpbs || 14200 Hz || 16120 Hz<br />
|-<br />
| 96kbps and above ||colspan=2| 17000 Hz<br />
|-<br />
|colspan=4|...<br />
|-<br />
|rowspan=2| LD / 44100 Hz<br />
| 56kbps || 11000 Hz || 12900 Hz<br />
|-<br />
| 64kbps || 14400 Hz || 15500 Hz<br />
|-<br />
|colspan=4|...<br />
|}<br />
<br />
== Sample Format ==<br />
<br />
The FDK library is based on fixed-point math and only supports 16-bit integer PCM input.<br />
<br />
== Sample Rates ==<br />
<br />
FDK library officially supports sample rates for input of 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, and 96000 Hz. <br />
<br />
See [[#GetInvInt table limit|Issues/GetInvInt table limit]] if experiencing crashes with high sample rates and VBR.<br />
<br />
Also see [[#Recommended Sampling Rate and Bitrate Combinations|Recommended Sampling Rate and Bitrate Combinations]].<br />
<br />
== Channel Layouts ==<br />
<br />
{| class="wikitable"<br />
! Channels !! Layout !! Mode !! Description<br />
|-<br />
| 1 || C || MODE_1 || Mono<br />
|-<br />
| 2 || L+R || MODE_2 || Stereo<br />
|-<br />
| 3 || C, L+R || MODE_1_2 ||<br />
|-<br />
| 4 || C, L+R, Rear || MODE_1_2_1 || fdkaac calls it "C L R Cs"<br />
|-<br />
| 5 || C, L+R, LS+RS || MODE_1_2_2 || <br />
|-<br />
| 5.1 || C, L+R, LS+RS, LFE || MODE_1_2_2_1 ||<br />
|-<br />
| 7.1 || C, LC+RC, L+R, LS+RS, LFE || MODE_1_2_2_2_1 <br /> MODE_7_1_FRONT_CENTER ||<br />
|-<br />
| 7.1 (Rear) || C, L+R, LS+RS, Lrear+Rrear, LFE || MODE_7_1_REAR_SURROUND ||<br />
|}<br />
<br />
The plus sign (+) denotes "stereo" channels.<br />
<br />
== Issues ==<br />
=== GetInvInt table limit ===<br />
As of FDK version 3.4.12, not all combinations of audio object types, bitrate modes, channel layouts, and sample rates can be used together, due to a limited table of pre-computed values used by the encoder. <br />
<br />
For example, using 96kHz stereo input with the AAC-LC audio object type and bitrate mode 5 (VBR 96-112kbps/channel) will result in catastrophic failure: [https://github.com/mstorsjo/fdk-aac/issues/17] <br />
./libFDK/include/fixpoint_math.h:459: FIXP_DBL GetInvInt(int): Assertion `(intValue > 0) && (intValue < 50)' failed.<br />
Aborted (core dumped)<br />
<br />
A recent (August 2014) patch to libfdk-aac fixes most of the previously unsupported combinations [https://github.com/mstorsjo/fdk-aac/commit/9a3234055adb1e18f80571925779503c8dec5251], and is expected to be included in the next official version of the FDK AAC library.<br />
<br />
See [[#Libav/avconv|Libav/avconv]] for a workaround.<br />
<br />
== Recommended Sampling Rate and Bitrate Combinations ==<br />
<br />
This table is from the documentation included in the FDK library source code. (PDF section 2.12 or source code: [https://android.googlesource.com/platform/external/aac/+/master/libAACenc/include/aacenc_lib.h])<br />
<br />
The following table provides an overview of recommended encoder configuration parameters which [Fraunhofer] determined by virtue of numerous listening tests.<br />
<br />
{|class="wikitable"<br />
! [[#Audio Object Types|Audio Object Type]] !! Bit Rate Range<br />[bit/s] !! Supported [[#Sampling Rates|Sampling Rates]]<br />[kHz] !! Recommended Sampling Rate<br />[kHz] !! Number of<br />[[#Channel Layouts|Channels]]<br />
|-<br />
|rowspan="4"| [29] HE-AAC v2<br />(AAC LC + SBR + PS)<br />
| 8000 - 11999 || 22.05, 24.00 || 24.00 || 2<br />
|-<br />
| 12000 - 17999 || 32.00 || 32.00 || 2<br />
|-<br />
| 18000 - 39999 || 32.00, 44.10, 48.00 || 44.10 || 2<br />
|-<br />
| 40000 - 56000 || 32.00, 44.10, 48.00 || 48.00 || 2<br />
|-<br />
|rowspan="7"| [5] HE-AAC<br />(AAC LC + SBR)<br />
| 8000 - 11999 || 22.05, 24.00 || 24.00 || 1<br />
|-<br />
| 12000 - 17999 || 32.00 || 32.00 || 1<br />
|-<br />
| 18000 - 39999 || 32.00, 44.10, 48.00 || 44.10 || 1<br />
|-<br />
| 40000 - 56000 || 32.00, 44.10, 48.00 || 48.00 || 1<br />
|-<br />
| 16000 - 27999 || 32.00, 44.10, 48.00 || 32.00 || 2<br />
|-<br />
| 28000 - 63999 || 32.00, 44.10, 48.00 || 44.10 || 2<br />
|-<br />
| 64000 - 128000 || 32.00, 44.10, 48.00 || 48.00 || 2<br />
|-<br />
|rowspan="4"| [5] HE-AAC<br />(AAC LC + SBR)<br />
| 64000 - 69999 || 32.00, 44.10, 48.00 || 32.00 || 5, 5.1<br />
|-<br />
| 70000 - 159999 || 32.00, 44.10, 48.00 || 44.10 || 5, 5.1<br />
|-<br />
| 160000 - 245999 || 32.00, 44.10, 48.00 || 48.00 || 5<br />
|-<br />
| 160000 - 265999 || 32.00, 44.10, 48.00 || 48.00 || 5.1<br />
|-<br />
|rowspan="6"| [2] AAC LC<br />
| 8000 - 15999 || 11.025, 12.00, 16.00 || 12.00 || 1<br />
|-<br />
| 16000 - 23999 || 16.00 || 16.00 || 1<br />
|-<br />
| 24000 - 31999 || 16.00, 22.05, 24.00 || 24.00 || 1<br />
|-<br />
| 32000 - 55999 || 32.00 || 32.00 || 1<br />
|-<br />
| 56000 - 160000 || 32.00, 44.10, 48.00 || 44.10 || 1<br />
|-<br />
| 160001 - 288000 || 48.00 || 48.00 || 1<br />
|-<br />
|rowspan="7"| [2] AAC LC<br />
| 16000 - 23999 || 11.025, 12.00, 16.00 || 12.00 || 2<br />
|-<br />
| 24000 - 31999 || 16.00 || 16.00 || 2<br />
|-<br />
| 32000 - 39999 || 16.00, 22.05, 24.00 || 22.05 || 2<br />
|-<br />
| 40000 - 95999 || 32.00 || 32.00 || 2<br />
|-<br />
| 96000 - 111999 || 32.00, 44.10, 48.00 || 32.00 || 2<br />
|-<br />
| 112000 - 320001 || 32.00, 44.10, 48.00 || 44.10 || 2<br />
|-<br />
| 320002 - 576000 || 48.00 || 48.00 || 2<br />
|-<br />
|rowspan="3"| [2] AAC LC<br />
| 160000 - 239999 || 32.00 || 32.00 || 5, 5.1 <br />
|-<br />
| 240000 - 279999 || 32.00, 44.10, 48.00 || 32.00 || 5, 5.1<br />
|-<br />
| 280000 - 800000 || 32.00, 44.10, 48.00 || 44.10 || 5, 5.1<br />
|}<br />
<br />
== (lib)fdk-aac ==<br />
<br />
Martin Storsjö (as the opencore-amr project) maintains a source code distribution of the Fraunhofer library as fdk-aac. It is distributed in a binary form in Debian (and Debian derivatives like Ubuntu) as the package fdk-aac, which includes the libfdk-aac* and [[#aac-enc|aac-enc]] binaries.<br />
<br />
See [[#Software Versions|Software Versions]] for latest release information.<br />
<br />
=== Links ===<br />
* [https://github.com/mstorsjo/fdk-aac Source] at Github<br />
* [https://tracker.debian.org/pkg/fdk-aac fdk-aac] at Debian package tracker. Package includes libfdk-aac* and the aac-enc binary.<br />
<br />
== aac-enc ==<br />
<br />
fdk-aac includes a very, very basic command-line interface encoding utility, called aac-enc, that can encode to AAC from WAV.<br />
<br />
=== Usage ===<br />
aac-enc [-r bitrate] [-t aot] [-a afterburner] [-s sbr] [-v vbr] in.wav out.aac<br />
<br />
;-r <bitrate>:Bitrate in bits per seconds (for CBR). Default is 64000.<br />
;-t <aot>:The [[#Audio Object Types|Audio Object Type]]. Default is 2 (AAC-LC).<br />
;-a <0,1>:Enable [[#Afterburner|''Afterburner'']]. 0=Disabled, 1=Enabled (recommended). Default is 1.<br />
;-s <-1,0,1>:Spectral Band Replication (ELD AOT only). -1=Use ELD SBR auto configurator (default,recommended), 0=Disabled, 1=Enabled. Default is -1.<br />
;-v <0-5>:[[#Bitrate Modes|Bitrate mode]]. Only 0-5 used. 0=CBR @ value given in -r. Default is 0.<br />
<br />
== fdkaac ==<br />
<br />
fdkaac is a command-line interface encoding and metadata utility. It is maintained by nu774 and is licensed under the zlib license. It employs libfdk-aac for encoding.<br />
<br />
See [[#Software Versions|Software Versions]] for latest release information.<br />
<br />
=== Examples ===<br />
<br />
# Convert a FLAC file to m4a using fdkaac configured for AAC-LC at about 50kbps/channel (100kbps for stereo).<br />
flac -s -d -c song.flac | fdkaac --ignorelength --profile 2 --bitrate-mode 3 -o song.m4a -<br />
<br />
=== Usage ===<br />
<br />
fdkaac [options] input_file<br />
<br />
;-p, --profile <n> :The [[#Audio Object Types|Audio Object Type]].<br />
;-b, --bitrate <n> :Bitrate in bits per seconds (for CBR)<br />
;-m, --bitrate-mode <n> :[[#Bitrate Modes|Bitrate mode]]. Only 0-5 used. 0=CBR.<br />
;-w, --bandwidth <n> :Frequency [[#Bandwidth|bandwidth]] in Hz (AAC LC only)<br />
;-a, --afterburner <n>:Enable [[#Afterburner|''Afterburner'']]. 0=Disabled, 1=Enabled (recommended). Default is 1.<br />
;-L, --lowdelay-sbr <-1,0,1>:Configure SBR activity on AAC ELD<br />
:{| class=wikitable<br />
| -1 || Use ELD SBR auto configurator<br />
|-<br />
| 0 || Disable SBR on ELD (default)<br />
|-<br />
| 1 || Enable SBR on ELD<br />
|}<br />
; -s, --sbr-ratio <0,1,2> :Controls activation of downsampled SBR<br />
:{| class=wikitable<br />
| 0 || Use lib default (default)<br />
|-<br />
| 1 || Downsampled SBR (default for ELD+SBR)<br />
|-<br />
| 2 || Dual-rate SBR (default for HE-AAC)<br />
|}<br />
;-f, --transport-format <n> :Transport format<br />
:{| class=wikitable<br />
| 0 || RAW (default, muxed into M4A)<br />
|-<br />
| 1 || ADIF<br />
|-<br />
| 2 || ADTS<br />
|-<br />
| 6 || LATM MCP=1<br />
|-<br />
| 7 || LATM MCP=0<br />
|-<br />
|10 || LOAS/LATM (LATM within LOAS)<br />
|}<br />
;-C, --adts-crc-check : Add CRC protection on ADTS header<br />
;-h, --header-period <n> : StreamMuxConfig/PCE repetition period in transport layer<br />
;-o <filename> : Output filename<br />
;-G, --gapless-mode <n> : Encoder delay signaling for gapless playback<br />
:{| class=wikitable<br />
| 0 || iTunSMPB (default)<br />
|-<br />
| 1 || ISO standard (edts + sgpd)<br />
|-<br />
| 2 || Both<br />
|}<br />
;--include-sbr-delay : Count SBR decoder delay in encoder delay. This is not iTunes compatible, but is default behavior of FDK library.<br />
;-I, --ignorelength : Ignore length of WAV header<br />
;-S, --silent : Don't print progress messages<br />
;--moov-before-mdat : Place moov box before mdat box on m4a output<br />
<br />
Options for raw (headerless) input:<br />
;-R, --raw: Treat input as raw (by default WAV is assumed)<br />
;--raw-channels <n> : Number of channels (default: 2)<br />
;--raw-rate <n> : Sample rate (default: 44100)<br />
;--raw-format <spec> : Sample format, default is "S16L". Spec is as follows:<br />
:{|<br />
| 1st char || S(igned), U(nsigned), or F(loat)<br />
|-<br />
| 2nd part || bits per channel<br />
|-<br />
| Last char || L(ittle) or B(ig)<br />
|}<br />
:Last char can be omitted, in which case L is assumed. Spec is case insensitive, therefore "u16b" is same as "U16B".<br />
:Up to 32-bit integer or 64-bit floating point format is supported as input. The FDK library, however, is [[#Sample Format|implemented based on fixed point math and onlysupports 16-bit integer PCM]]. Therefore, be wary of clipping. You might want to dither/noise shape beforehand when your input has higher resolution.<br />
<br />
Tagging options:<br />
;--tag <fcc>:<value>: Set iTunes predefined tag with four char code. See [https://code.google.com/p/mp4v2/wiki/iTunesMetadata iTunes Metadata].<br />
;--tag-from-file <fcc><nowiki>:</nowiki><filename> : Same as above, but value is read from file.<br />
;--long-tag <name><nowiki>:</nowiki><value> : Set arbitrary tag as iTunes custom metadata.<br />
;--tag-from-json <filename[?dot_notation]><br />
: Read tags from JSON. By default, tags are assumed to be direct children of the root object(dictionary). Optionally, position of the dictionary that contains tags can be specified with dotted notation.<br />
{|class="wikitable sortable"<br />
! Option/Usage !! MP4 Block Modified !!lass="unsortable"| Comment<br />
|-<br />
| --title <string> || ©nam <br />
|-<br />
| --artist <string> || ©ART<br />
|-<br />
| --album <string> || ©alb <br />
|-<br />
| --genre <string> || ©gen || Appears to always store the string the "user-defined" '''©gen''' even if there is an ID3 genre id that could be used with the '''gnre''' block.<br />
|-<br />
| --date <string> || ©day || YYYY[-MM[-DD]] format<br />
|-<br />
| --composer <string> || ©wrt<br />
|-<br />
| --grouping <string> || ©grp<br />
|-<br />
| --comment <string> || ©cmt<br />
|-<br />
| --album-artist <string> || aART<br />
|-<br />
| --track <number[/total]> || trkn || Block stores both track and totaltracks in one binary value <br />
|-<br />
| --disk <number[/total]> || disk || Block stores both disc and totaldiscs in one binary value <br />
|-<br />
| --tempo <n> || tmpo || Beats per minute, stored as a 16-bit integer <br />
|}<br />
<br />
=== Links ===<br />
*[https://github.com/nu774/fdkaac Source code]<br />
*[https://launchpad.net/~mc3man/+archive/ubuntu/fdkaac-encoder Ubuntu PPA]<br />
<br />
== FFmpeg ==<br />
libfdk-aac can be used with FFmpeg, but requires a custom build of FFmpeg. FFmpeg provides significant [https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_aac documentation for using libfdk_aac] in the FFmpeg wiki.<br />
<br />
=== Usage/Examples ===<br />
<br />
CBR mode:<br />
ffmpeg -i <input> -c:a libfdk_aac -b:a 128k <output><br />
<br />
VBR mode:<br />
ffmpeg -i <input> -c:a libfdk_aac -vbr 3 <output><br />
;-afterburner:Enable [[#Afterburner|''Afterburner'']]. 0=Disabled, 1=Enabled (recommended). Default is 1.<br />
;-profile<nowiki>:</nowiki>a:The [[#Audio Object Types|Audio Object Type]]. Value is one of LC, HE-AAC, HE-AACv2, LD, or ELD. Default is LC.<br />
;-b<nowiki>:</nowiki>a:CBR bitrate<br />
;-vbr:Values 1-5. See [[#Bitrate Modes|Bitrate mode]].<br />
;--cutoff:The low-pass filter cut-off in Hz. See [[#Bandwidth|Bandwidth]] for default values. FFmpeg maximum value is 20000.<br />
<br />
=== Links ===<br />
<br />
* [https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/libfdk-aacenc.c libfdk-aacenc.c] in FFmpeg source tree<br />
* [https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/libfdk-aacdec.c libfdk-aacdec.c] in FFmpeg source tree<br />
<br />
== Libav/avconv ==<br />
libfdk-aac can be used with Libav's avconv, but requires a custom build of avconv with "--enable-libfdk-aac" passed to configure. See [https://wiki.libav.org/Encoding/aac Libav AAC encoding].<br />
<br />
=== Usage ===<br />
<br />
CBR mode:<br />
avconv -i <input> -c:a libfdk_aac -b:a <bitrate> -afterburner 1 <output><br />
<br />
VBR mode:<br />
avconv -i <input> -c:a libfdk_aac -flags +qscale -global_quality [1-5] -afterburner 1 <output><br />
<br />
;-afterburner:See ''[[#Afterburner|afterburner]]''.<br />
;-global_quality:Values 1-5. See [[#Bitrate Modes|Bitrate mode]].<br />
<br />
=== FLAC to M4A example with quirks ===<br />
<br />
Using a FLAC example with 24-bit/96kHz 5.1 channel audio, and embedded album art to demonstrate workarounds for some quirks/bugs. The [http://www.diatonis.com/downloads/diatonis_dark-edges_02_rock_flac_6-chan_9624.zip sample used] is from the [http://www.diatonis.com/surround_sound_music.html Diatonis Free Surround Sound Music] page. The track used is titled "Rock".<br />
<br />
avconv -i diatonis-rock.flac -vn -sample_fmt s16 -ar 48000 -c:a libfdk_aac -flags +qscale -global_quality 5 diatonis-rock.m4a<br />
<br />
;-global_quality 5:Use [[#Bitrate Modes|VBR Mode 5]].<br />
;-vn:Means drop all video. The FLAC source has embedded album art that can't be handled by avconv in this case. Libav apparently doesn't know how to embed cover art in M4A. It tries to use it as an MP4 video stream. Using -c:v mjpeg, as can be done with MP3, doesn't work either. See [[Nero AAC#NeroAacTag|NeroAacTag]] for a tool that can easily add M4A album art.<br />
;-sample_fmt s16 -ar 48000:The FLAC source's 96kHz sample rate combined with VBR mode 5 triggers the [[#GetInvInt_table_limit|GetInvInt table limit]] bug in libfdk_aac 0.1.3 and earlier. These options resample the audio before sending it to the FDK encoder, to avoid the crash.<br />
<br />
=== Links ===<br />
* [https://git.libav.org/?p=libav.git;a=blob;f=libavcodec/libfdk-aacenc.c libfdk-aacenc.c] in Libav source tree<br />
* [https://git.libav.org/?p=libav.git;a=blob;f=libavcodec/libfdk-aacdec.c libfdk-aacdec.c] in Libav source tree<br />
<br />
== Links ==<br />
* [http://www.iis.fraunhofer.de/en/ff/amm/impl/fdkaaccodec.html Official web page]<br />
* [https://en.wikipedia.org/wiki/Fraunhofer_FDK_AAC Fraunhofer FDK AAC] at Wikipedia<br />
* [http://www.hydrogenaud.io/forums/index.php?showtopic=95989 Release information HydrogenAudio forums]<br />
* [https://android.googlesource.com/platform/external/aac/+/master/ FDK in Android source code]<br />
* [https://github.com/mstorsjo/fdk-aac fdk-aac source] (github)<br />
* [http://sourceforge.net/p/opencore-amr/fdk-aac/ci/master/tree/ fdk-aac source code] (sourceforge)</div>
47.18.96.45
https://wiki.hydrogenaud.io/index.php?title=Opus
Opus
2018-12-03T10:19:13Z
<p>47.18.96.45: /* Indicative bitrate and quality */</p>
<hr />
<div>{{Software Infobox<br />
| name = Opus<br />
| logo = [[Image:opus-logo.png|250px|Official Opus logo]]<br />
| screenshot =<br />
| caption = Opus Interactive Audio Codec<br />
| maintainer = [http://xiph.org/ Xiph.Org Foundation]<br />
| stable_release = 1.3<br />
| preview_release = 1.3-rc2<br />
| operating_system = Windows, Mac OS/X, Linux/BSD<br />
| use = Encoder/Decoder<br />
| license = 3-clause BSD license<br />
| website = [http://www.opus-codec.org/ opus-codec.org]<br />
}}<br />
<br />
'''Opus''' is a [[lossy]] audio compression format developed by the Internet Engineering Task Force (IETF) designed to be suitable for interactive real-time applications over the Internet,{{ref|homepage|a}} including music as well as speech, yet it is also very competitive for use as a storage and playback format, being a [http://people.xiph.org/~greg/opus/ha2011/ class leader at around 64 kbps] and [http://listening-test.coresv.net/results.htm also at 96 kbps]. As an open format standardised through [http://tools.ietf.org/html/rfc6716 Request for Comments (RFC) 6716],{{ref|RFC|c}} a high quality reference implementation is provided under the 3-clause BSD license{{ref|homepage|a}} which compiles and runs on the vast majority of general purpose and embedded (fixed point) processors. Many Software patents which cover Opus are licensed under royalty-free terms.{{ref|FAQ|b}} Opus is also a Mandatory To Implement (MTI) codec for the upcoming WebRTC (Web Real Time Communication) specification of the World Wide Web Consortium (W3C).<br />
<br />
Opus incorporates technology from two codecs, the speech-oriented SILK codec developed by Skype and the multi-purpose low-latency CELT codec developed by Xiph.org with significant changes to each to ensure they can work together.{{ref|RFC|c}} Opus can seamlessly transition among high and low bitrates, using a linear prediction codec (the SILK layer) at lower bitrates and a lapped transform codec (the CELT layer) at higher bitrates, as well as a hybrid of the two for a short overlap in which SILK encodes the 0-8kHz spectrum and the CELT layer encodes only the frequencies above 8kHz.{{ref|RFC|c}} Opus has very low algorithmic delay (typ 22.5 ms) compared to popular music formats such as [[MP3]], [[Vorbis |Ogg Vorbis]], [[AAC | LC-AAC and HE-AAC]] (all over 100 ms), yet performs very competitively with them in terms of quality per bitrate, making it comparably viable as a storage & playback format. Also unlike Vorbis, Opus does not require the definition of large codebooks for each individual file, making it also preferable for short clips of audio, such as those often used by game developers, a field where patent-free Vorbis is commonly used.{{ref|RFC|c}}<br />
<br />
Considerably more details of the history and potential applications for Opus are included in the ''Wikipedia'' page for '''[http://en.wikipedia.org/wiki/Opus_%28audio_format%29 Opus (audio format)]'''<br />
<br />
==Characteristics==<br />
Opus supports bitrates from 6kbps to 510kbps for typical stereo audio sources (and a maximum of around 255 kbps per channel for multichannel audio), with the 'sweet spot' for music and general audio around 30kbps (mono) and 40-100 kbps (stereo). It is intrinsically [[VBR | variable bitrate]], though constrained VBR and [[CBR | constant bitrate]] modes are possible where required. In the case of the reference release, libopus, the target bitrate is calibrated against the internal constant quality targets so that over a typical music collection, something very close to the target bitrate will be achieved. This bitrate-calibrated approach differs from most VBR encoders (e.g. LAME, helix mp3, qaac, Nero aacenc, Ogg Vorbis, Musepack) where a setting on some 'constant quality' scale (which differs between encoders) is used and the bitrate will fall where it may. Improved future versions can be expected to offer improved quality at the same setting. Independent implementations may adopt a different approach.<br />
<br />
Opus is able to seamlessly adapt its mode of operation without glitches or sound interruption (an illustrative demonstration of [http://opus-codec.org/examples/#gauge bitrate scalability] is on the Opus Examples page), which can be particularly useful for mixed-content audio or varying network conditions, making the unified Opus codec superior to a suite of different codecs that might otherwise cover the same range of bitrate and quality settings and would require out-of-band signalling to instigate codec switching. The switching includes the choice of mono, stereo and other channel mappings, the use of the speech-oriented SILK layer, the general-purpose CELT layer or the hybrid of both, and the use of different audio bandwidths (4kHz, 6kHz, 8kHz, 12kHz, 20kHz) as well as the quality adjustments within the same operating mode that are available in most VBR-capable codecs.<br />
<br />
Of importance mainly to interactive uses, but potentially useful in time-delayed audio streaming also, Opus includes packet loss concealment (PLC) in all modes and, in the speech-oriented modes where the SILK layer is active it also supports Forward Error Correction (FEC) where the expected rate of packet loss can be indicated to the encoder by the user or by application software and critical frames (e.g. consonant sounds) can be retransmitted at low bitrate to preserve intelligibility.<br />
<br />
For music and general audio, the CELT layer of Opus builds on knowledge gained during xiph.org's Vorbis development and ensures as a primary goal that the total energy in each spectral band is preserved while requiring only a modest bitrate overhead to achieve this, thereby eliminating a lot of bitrate-starvation artifacts such as 'birdies' that are common in low-bitrate MP3, especially during transients, applause and cymbal sounds. This technique likewise increases coding efficiency at bitrates targetting transparent music reproduction. Short blocks (2.5 ms) are also possible for efficient transient handling. Short blocks can also be used exclusively, if very low algorithmic delay (5.0ms) is required to enable very low-latency interative audio (e.g. live networked music performances such as remote jam sessions), though greater bitrate is then required to maintain the same quality (illustrated in [http://people.xiph.org/~xiphmont/demo/celt/demo.html#demo Monty's CELT demo page] under Constant PEAQ value, varying latency). CELT uses a number of additional techniques and provides additional advanced tools to enable encoder tuning.<br />
<br />
Opus natively supports [[gapless playback]] (though [[Gapless_playback#Poorly_designed_playback_systems | poor player design]] might itself induce interruptions during playback). Playback gain is also required, making some form of [[ReplayGain]] or [[ReplayGain_2.0_specification | similar]] volume control possible in any compliant player.<br />
<br />
==Bitrate performance==<br />
For mono speech, Opus ranges from intelligible narrowband speech reproduction starting at 6 kbps to medium-band, wideband and superwideband speech, reaching full-band speech by around 14 kbps in encoder version 1.2 (was 21 kbps in v1.1, 29 kbps in v1.0). Above about 32 kbps, the SILK layer is no longer used at all, as CELT alone gives superior quality.<br />
<br />
For music, the SILK modes are quite tolerable and better than CELT at very low bitrates. The hybrid mode is adopted as bitrate increases, extending bandwidth first to 12kHz (comparable with compact cassette) then to the full 20kHz and CELT then takes over. Assuming the source is stereo, the transition from mono to stereo typically happens between the transition from 12kHz to 20kHz. Encoder version 1.2 includes great improvements to music encoding in the 32-64 kbps range, allowing full-band stereo at 32 kbps and providing acceptable quality at 48 kbps where artifacts are audible but rarely annoying. Version 1.3 is expected to further improve quality in this range.<br />
<br />
Multi-format stereo music listening tests have demonstrated the superiority of Opus at 64 kbps and 96 kbps compared to the best AAC-LC, HE-AAC and Ogg Vorbis encoders, and at 96 kbps also to 128 kbps MP3 encoded using LAME -V 5.<br />
<br />
==Indicative bitrate and quality==<br />
The tables below give illustrative, indicative quality guidance based on typical modes used internally by Opus and a range of listening tests.<br />
<br />
In encoder version 1.1 automatic detection of speech/music and bandwidth detection were introduced to improve mode decisions and VBR is less constrained, all with the aim of maximizing the quality/bitrate tradeoff, and these improvements are further enhanced in version 1.2 and 1.3. These tables are likely to require updates as the encoder is improved, especially in low-bitrate regions.<br />
<br />
===Speech encoding quality===<br />
This table assumes a '''monophonic''' source sampled at CD quality or above (typ 48 kHz sampling rate) but mentions stereo compatibility for 40kbps+. The default 20ms frame size (22.5ms latency) is assumed. Note that the selection of ''VOIP'' mode will deliberately modify the sound with a High Pass Filter and emphasis of formants and harmonics to improve intelligibility of speech especially in noisy environments much as telephones do. ''Auto'' mode will not modify the sound prior to encoding so is usually better for high quality speech recordings or mixed speech and music.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Bitrate Target<br />
!Bandwidth<br />
!Typical Mode Used<br />
!Speech Quality<br />
!Use Cases / Competitive Codecs<br />
|-<br />
!Less than 5 kbps<br />
| -<br />
| -<br />
| Bitrates lower than 6 kbps not supported by Opus<br />
| Try [http://codec2.org/ codec2] for 0.7-3.2 kbps mono speech<br />
|-<br />
!6 kbps<br />
|6 kHz medium-band<br />
|SILK<br />
|Fair, intelligible<br />
|AMR-NB may be a little better, but higher latency & proprietary, [[Speex]] also competitive<br />
|-<br />
!8 kbps<br />
|6 kHz medium-band<br />
|SILK<br />
|Close to telephone quality<br />
|AMR-NB & AMR-WB similar quality, but higher latency & proprietary. [[Speex]] competitive.<br />
|-<br />
!12 kbps<br />
|12 kHz super-wideband<br />
|hybrid<br />
|Medium bandwidth, better than telephone quality<br />
|Similar quality to AMR-WB<br />
|-<br />
!16 kbps<br />
|20 kHz<br />
|hybrid/CELT<br />
|Wideband speech quality<br />
|Similar to/better than AMR-WB<br />
|-<br />
!24 kbps<br />
|20 kHz<br />
|hybrid/CELT<br />
|Near transparent speech<br />
|Better than AMR-WB. Podcasts/audiobooks/talk-radio.<br />
|-<br />
!32 kbps<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent speech plus moderately good stereo music<br />
|Much better than AMR-WB. Podcasts/audiobooks/talk-radio.<br />
|-<br />
!40 kbps<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent mono or stereo speech, fairly good stereo music<br />
|Stereo podcasts/audiobooks/talk radio with some music<br />
|-<br />
!48 kbps or more<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent mono or stereo speech, reasonable music<br />
|Flexible general purpose modes to suit mixed music and speech<br />
|-<br />
|}<br />
<br />
===Music encoding quality===<br />
This table assumes a '''stereophonic''' source sampled at CD quality or above (typ 48 kHz sampling rate). Opus will automatically use mono at very low bitrates, though a certain amount of stereo encoding can still be used - content dependent even when mono is specified as the typical stereo mode in the table below.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Bitrate target<br />
!Stereo mode<br />
!Bandwidth<br />
!typ SILK/CELT use<br />
!Music quality notes<br />
!Use cases/notes/competitive codecs<br />
|-<br />
!6 kbps<br />
|mono<br />
|6 kHz<br />
|SILK<br />
|Poor, muffled sound but intelligible lyrics.<br />
| -<br />
|-<br />
!8 kbps<br />
|mono<br />
|6 kHz<br />
|SILK<br />
|Poor, muffled but OK for bitrate<br />
| -<br />
|-<br />
!14 to 16 kbps<br />
|mono<br />
|20 kHz<br />
|hybrid/CELT<br />
|Fairly poor but OK for bitrate<br />
|Perhaps acceptable for incidental music<br />
|-<br />
!22 to 24 kbps<br />
|mono<br />
|20 kHz<br />
|hybrid/CELT<br />
|Fair but OK for bitrate<br />
|OK for incidental music<br />
|-<br />
!32 to 40 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Moderately good stereo, some artifacts, rarely nasty<br />
|Stereo podcasts, audiobooks, very low bitrate music<br />
|-<br />
!48 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, nice sound, may have problems with cymbals<br />
|Stereo podcasts, audiobooks, low bitrate music<br />
|-<br />
!64 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, nice sound, detectable differences to original (mostly 'not annoying')<br />
|Music storage & streaming. Beat HE-AAC, Vorbis, MP3 in [http://people.xiph.org/~greg/opus/ha2011/ listening test]<br />
|-<br />
!96 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, good quality approaching transparency<br />
|Music storage & high quality streaming. Beat LC-AAC, Vorbis, MP3 in [http://listening-test.coresv.net/results.htm listening test]<br />
|-<br />
!112 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Fairly close to transparency (needs more testing)<br />
|Music storage & high quality streaming. Very low-latency stereo networked music performance/jam sessions at OK quality (see below table)<br />
|-<br />
!128 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Very close to transparency (needs more testing). Most modern codecs competitive (AAC-LC, Vorbis, MP3)<br />
|Music storage & streaming. Future download music sales.<br />
|-<br />
!160 to 192 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Transparent with very low chance of artifacts (a few killer samples still detectable). Most old & new lossy codecs competitive.<br />
|Music storage & streaming, dedicated limited-bandwidth audio links (e.g. wireless, [http://en.wikipedia.org/wiki/Bluetooth_profile#Advanced_Audio_Distribution_Profile_.28A2DP.29 A2DP-bluetooth] type links). <br />
|-<br />
!510 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Maximum possible stereo bitrate target (actual rate often less than 510 for default frame size). Most old and new lossy codecs competitive, plus near-lossless [[lossyWAV]] and [[WavPack | WavPack lossy]]<br />
|Music storage, dedicated limited-bitrate audio links (e.g. wireless, minimum latency high quality audio. LossyWAV and WavPack lossy are very competitive for storage, and WavPack lossy --blocksize=256 may be competitive with minimum latency mode also.<br />
|-<br />
!>510 kbps<br />
| -<br />
| -<br />
| -<br />
|Above Opus bitrate range allowed for stereo sources<br />
|Settle for 510kbps or use [[lossless]], [[lossyWAV]], [[WavPack | WavPack lossy]] or lossy transform/subband codecs like [[Vorbis]], [[Musepack]] at very high settings.<br />
|-<br />
|}<br />
<br />
===Lower latency versus quality/bitrate trade-off===<br />
====Packet overhead in interactive applications====<br />
For interactive use on the Internet or other packet-based networks, total bandwidth used will be subject to packet overhead. The more packet headers that are transmitted every second, the greater will be the overhead that is required. For this reason, Opus, while defaulting to 20.0ms frames, supports 60.0ms frames to reduce overhead when transporting low-bitrate SILK frames at the expense of greater latency, which may still be acceptable for speech, and also supports 10.0ms SILK frames to reduce latency somewhat at the expense of packet overhead.<br />
<br />
In the CELT layer, which tends to operate at higher bitrates than SILK, 20.0ms frames are the default, but frames of 10.0ms, 5.0ms and 2.5ms are also possible, which directly increases the frame overhead by transmitting more packets per second to achieve lower latency. In addition, as we'll see below it also reduces the quality/bitrate tradeoff of the CELT layer itself.<br />
<br />
None of the bitrates mentioned in this article account for the packet overhead.<br />
<br />
====CELT layer latency versus quality/bitrate trade-off====<br />
Unlike the SILK layer, which works on fixed 10.0ms blocks, 1, 2 or 6 of which can be combined into an Opus frame, the CELT layer is able to modify the encoding block lengths available to enable its use with shorter frames.<br />
<br />
When the CELT layer uses 10.0ms, 5.0ms and 2.5ms frames instead of the default 20.0ms, it must use smaller transform block sizes to achieve this, thereby reducing frequency resolution in the MDCT compared to the default transform window, thus reducing encoding efficiency for tonal signals. To obtain the same frequency precision for a sound divided into shorter transform windows, improved amplitude precision is necessary, resulting in increased bitrate to obtain the same perceptual quality (or conversely lower quality at the same bitrate).<br />
<br />
These reduced-latency modes remain efficient for transient signals, which use short blocks anyway.<br />
<br />
In all modes, the algorithmic delay consists of the frame size plus an additional 2.5ms delay. The CELT layer requires 2.5ms for MDCT window overlap.<br />
<br />
Xiph.org used matched PEAQ scores (approximate perceptual quality assessment made in software) for the CELT0.10 codec that was used as the basis of the CELT layer in the Opus reference release, which indicate the following [http://people.xiph.org/~xiphmont/demo/celt/demo.html#demo approximate equivalent settings] for stereo music.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Frame size<br />
!Algorithmic delay<br />
!Bitrate to match 64kbps@22.5ms delay<br />
!fractional bitrate increase<br />
|-<br />
!20.0 ms<br />
|22.5 ms<br />
|64.0 kbps<br />
|0.0 %<br />
|-<br />
!10.0 ms<br />
|12.5 ms<br />
|70.4 kbps<br />
|10.0 %<br />
|-<br />
!5.0 ms<br />
|7.5 ms<br />
|84.8 kbps<br />
|32.5 %<br />
|-<br />
!2.5 ms<br />
|5.0 ms<br />
|112.0 kbps<br />
|75.0 %<br />
|-<br />
|}<br />
<br />
N.B. This table is useful for interactive streaming only. For music storage & delayed playback or non-interactive streaming, latency reduction is not important and the default 20.0ms frame size is preferable.<br />
<br />
== Hardware & Software Support ==<br />
<br />
Much of this section is based heavily on the Jan 12th 2013 version of the '''Support''' section of the [http://en.wikipedia.org/wiki/Opus_%28audio_format%29 Wikipedia article], which is more likely to be kept updated and to provide links to further information about the supporting platforms.<br />
<br />
The format and algorithms are openly documented and the reference implementation is published as free software. The reference implementation (Opus Audio Tools, opus-tools), consisting of separate encoders and decoders, is published under the terms of a BSD-like license. It is written in C programming language and can be compiled for hardware architectures with or without floating point unit. The accompanying diagnostic tool opusinfo reports detailed technical information about Opus files, including information on the standard compliance of the bitstream format. It is based on ogginfo from the vorbis-tools and therefore, unlike the encoder and decoder, available under the terms of version 2 of the GPL.<br />
<br />
=== Commandline binaries & libopus versions ===<br />
The commandline tools of the reference version are available pre-compiled for the most popular operating systems at [http://opus-codec.org/downloads opus-codec.org] and [https://ftp.mozilla.org/pub/mozilla.org/opus/ Mozilla's ftp server], plus in the foobar2000 free encoders pack and some alternative compiles through the hydrogenaud.io opus forum. The libopus commandline tools include encoder ''opusenc'', decoder ''opusdec'', and with a different license, the ''opusinfo'' opus stream & metadata analyzer.<br />
<br />
The '''latest stable release''' is recommended for general use and as of mid 2014 is considered competitive with or superior to the best alternative speech or general music encoders at most supported bitrates.<br />
<br />
==== libopus v1.0 ====<br />
Released 11 Sep 2012 when RFC6716 was standardized but mostly fully developed by late 2011.<br />
<br />
'''Stable''', '''well-tuned''' ''opusenc'' reference encoder as included in RFC documentation.<br />
<br />
CELT layer closely related to CELT 0.10 implements Constrained VBR mode by default (bitrate boost used mainly for transients), plus true CBR.<br />
<br />
==== libopus v1.1 ==== <br />
<br />
The alpha source code released 21 Dec 2012 for testing & user feedback and following a beta release and testing, the stable 1.1 version was released on 5 December 2013, considered well tested enough for general release.<br />
<br />
CELT layer [http://jmspeex.livejournal.com/11737.html quality improvements] introduced to provide '''unconstrained VBR''' include a rate boost not just for transients but now for highly tonal signals too and rate reduction when stereo image is narrow. There's also a rewrite of its '''transient detection''' code and '''time-frequency analysis''' code, and rewritten '''dynamic allocation''' code (HF/LF tilt and Band Boost) to allow more aggressive changes from the typical static allocation when warranted.<br />
<br />
There are many minor improvements to '''speech quality''' in both SILK and CELT layers.<br />
<br />
'''DC-rejection''' below 3 Hz also aids quality if inaudible DC offset is present with no effect on deep bass notes.<br />
<br />
'''Automatic speech/music detection''' is introduced to optimize encoding mode choices, especially near the bitrate target range (presumably around 24~40kbps) where the encoder may perform best with SILK, hybrid or CELT depending on content type. Below that range SILK performs best for both music & speech, and above it CELT performs best for speech & music. The detection, without look-ahead is not perfect but usually is undecided in audio where either mode will work well.<br />
<br />
'''Automatic bandwidth detection''' is also introduced to save wasted bits allocated to absent frequencies.<br />
<br />
'''Surround sound improvements''' were introduced since the beta release with considerable advances in coding efficiency, bitrate allocation and quality.<br />
<br />
==== libopus v1.1.3 ==== <br />
Released July 15th, 2016. This version contains:<br />
<br />
*Neon optimizations improving performance on ARMv7 and ARMv8 by up to 15%<br />
<br />
*Fixes some issues with 16-bit platforms (e.g. TI C55x)<br />
<br />
*Fixes to comfort noise generation (CNG)<br />
<br />
*Documenting that PLC packets can also be 2 bytes<br />
<br />
*Includes experimental ambisonics work (--enable-ambisonics)<br />
<br />
==== libopus v1.2.1 ==== <br />
Released June 26th, 2017. This version contains:<br />
<br />
*Speech quality improvements especially in the 12-20 kbit/s range<br />
<br />
*Improved VBR encoding for hybrid mode<br />
<br />
*More aggressive use of wider speech bandwidth, including fullband speech starting at 14 kbit/s<br />
<br />
*Music quality improvements in the 32-48 kb/s range<br />
<br />
*Generic and SSE CELT optimizations<br />
<br />
*Support for directly encoding packets up to 120 ms<br />
<br />
*DTX support for CELT mode<br />
<br />
*SILK CBR improvements<br />
<br />
*Support for all of the fixes in draft-ietf-codec-opus-update-06 (the mono downmix and the folding fixes need --enable-update-draft)<br />
<br />
*Many bug fixes, including integer wrap-arounds discovered through fuzzing (no security implications)<br />
<br />
==== libopus 1.3 ====<br />
Released on October 18th, 2018. This version contains:<br />
<br />
* Improvements to voice activity detection (VAD) and speech/music classification using a recurrent neural network (RNN)<br />
* Support for ambisonics coding using channel mapping families 2 and 3<br />
* Improvements to stereo speech coding at low bitrate<br />
* Using wideband encoding down to 9 kb/s<br />
* Making it possible to use SILK down to bitrates around 5 kb/s<br />
* Minor quality improvement on tones<br />
* Enabling the spec fixes in <nowiki>RFC 8251</nowiki> by default<br />
* Security/hardening improvements<br />
* Fixes to the CELT PLC<br />
* Bandwidth detection fixes<br />
<br />
=== Ports ===<br />
<br />
==== Concentus ====<br />
<br />
The libopus reference library (fixed-point variant) has successfully been ported to both '''C#''' and '''Java''', as part of a project called '''Concentus'''. The aim of the project is specifically to target cross-platform applications where native C interop is relatively difficult. The code is available on [https://github.com/lostromb/concentus Github] and distributed via standard package managers.<br />
<br />
==== Emscripten ports ====<br />
<br />
At least one implementation of opus in Javascript has been made using the automated tool [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Emscripten emscripten]. See [https://blog.rillke.com/opusenc.js/ here], [https://github.com/kazuki/opus.js-sample here] and [https://github.com/audiocogs/opus.js here].<br />
<br />
=== VoIP software ===<br />
* The open source virtual PBX Freeswitch supports Opus transcoding.<br />
* The voice-chat software Mumble supports Opus as its main codec.<br />
* SIP softphones Phoner and PhonerLite support Opus<br />
* The SIP and IAX2 client SFLphone is being fitted with Opus support.<br />
* Integration of Opus into the Skype client is finished, although no version with Opus support has yet been published.<br />
* TrueConf video conferencing solutions support Opus.<br />
* Opus support is planned for Jitsi 2.0, together with VP8 video<br />
* Empathy may use any format supported in GStreamer, including Opus.<br />
* Line2 has replaced their current codec with Opus. Their iOS app will be the first to be released with the Opus. The Android app will follow later.<br />
* CSipSimple supports Opus, Codec2, G.726 and G.722.1 with an additional plug-in.<br />
* The voice-chat software TeamSpeak 3 supports Opus for voice and music in pre-release server 3.0.7-pre2 and beta client version 3.0.10<br />
<br />
=== Web frameworks and browsers ===<br />
* Opus support is mandatory for WebRTC implementations.<br />
* Mozilla supports Opus beginning with version 15 of Firefox and Thunderbird, plus Seamonkey, which is uses shared codebase.<br />
* Depending on the backend in use, Opera supports inline playback of embedded Opus files. Official support for Opus and WebRTC are on the development roadmap.<br />
* Chromium and Google Chrome have audio support as of version 33.<br />
* Apple's Safari browser now supports Opus as of iOS 11 and macOS 10.13 High Sierra.<br />
* Maxthon Cloud Browser<br />
<br />
=== Streaming audio ===<br />
* Icecast. (examples: [http://dir.xiph.org/by_format/Opus Stream directory by format Opus], [http://smj.delfa.net/opus_64.m3u 64k]/[http://smj.delfa.net/opus_256.m3u 256k] [http://smj.delfa.net/ Smooth Jazz Opus Stream], [http://www.absoluteradio.co.uk/listen/labs.html Absolute Radio Opus Trial] 7 stations at 24,64,96 kbps, [http://icecast.ofdoom.com:8000/burst-opus.ogg Icecast Of Doom 96k]<br />
* Krad Radio<br />
* Liquidsoap<br />
<br />
=== Operating systems and desktop multimedia frameworks ===<br />
* In Debian GNU/Linux the Opus development tools and supporting libraries can be installed from the preconfigured repositories in the next stable version ("wheezy") that is expected to be released in early 2013.<br />
* For Microsoft Windows, there are DirectShow filters supporting Opus, including DC-Bass Source Mod and the LAV Filters.<br />
* In GStreamer the integration of Opus support is complete.<br />
* FFmpeg supports decoding and encoding Opus via the external library libopus.<br />
* Android 5.0 and above supports Opus natively if encapsulated in the Ogg container, but .opus filename extension is not recognized by Android, so the use of double filename extension .opus.ogg is recommended as a workaround to allow apps to recognize files as playable audio.<br />
<br />
=== Hardware support ===<br />
* Support in [[Rockbox]] is available. This means hardware support for a series of portable media players (including some products from the iPod series by Apple and Sansa, iriver and Archos devices) and with "Rockbox as an Application" (RaaA) also on Android devices.<br />
<br />
=== Player software ===<br />
<br />
* Windows/Mac/Linux (Cross-Platform)<br />
*# [[VLC]] (media player supports Opus as of version 2.0.4 <br />
*#[[Amarok]] 2.8 has transcoding support for Opus codec if ffmpeg is compiled with support for the libopus library & support for playback of Opus encoded files if Amarok is compiled against TagLib (newer than V1.8)<br />
*# Clementine has Opus support<br />
*# Audacious player<br />
*# [[MPD]] as of version 0.18 if compiled against libopus (supports both encoding for http streams and decoding) <br />
<br />
<br />
* Windows Exclusive<br />
*# AIMP supports Opus natively as of version 3.20 build 1125 beta 1<br />
*# [[foobar2000]] supports Opus natively as of v1.1.14 beta 1<br />
*# Mpxplay supports Opus (using a decoder DLL) as of v1.60 alpha 2<br />
*# [[Winamp]] supports Opus using a [http://forums.winamp.com/showthread.php?p=2925154#post2925154 3rd party plug-in]<br />
*# MPC-HC<br />
<br />
<br />
* iOS/Android (Cross-Platform)<br />
*#Capriccio [https://itunes.apple.com/us/app/capriccio-free-ultimate-music/id434829018?mt=8 iOS]/[https://play.google.com/store/apps/details?id=me.ideariboso.capriccio Android]<br />
*#foobar2000 [https://itunes.apple.com/us/app/foobar2000/id1072807669?mt=8 iOS]/[https://play.google.com/store/apps/details?id=com.foobar2000.foobar2000&hl=en Android]<br />
<br />
<br />
* Android Exclusive<br />
*# [http://gonemadmusicplayer.blogspot.com/ GoneMAD Music Player]<br />
*# [http://neutronmp.com/ Neutron Music Player]<br />
*# [http://www.videolan.org/vlc/download-android.html VLC Media Player for Android]<br />
*# [https://play.google.com/store/apps/details?id=ru.recoilme.freeamp FreeMP]<br />
*# [https://play.google.com/store/apps/details?id=net.mderezynski.youki3 Youki]<br />
*# [https://play.google.com/store/apps/details?id=com.aimp.player AIMP for Android]<br />
*# [https://play.google.com/store/apps/details?id=com.acmeandroid.listen Listen Audiobook Player]<br />
*# [https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad MX Player]<br />
*# [https://play.google.com/store/apps/details?id=org.tomahawk.tomahawk_android Tomahawk Player Beta]<br />
*# [https://play.google.com/store/apps/details?id=com.maxmpz.audioplayer&hl=en Poweramp Music Player]<br />
<br />
=== Other software ===<br />
* CDBurnerXP<br />
* MediaCoder<br />
* Report-IT<br />
* [[MP3tag|MP3tag]]<br />
* [http://www.xdlab.ru/en/ TagScanner]<br />
* [http://www.xmedia-recode.de/ XMedia Recode]<br />
<br />
== References & Notes ==<br />
<br />
*{{note|homepage|a}}[http://opus-codec.org/ opus-codec.org homepage]<br />
*{{note|FAQ|b}}[http://wiki.xiph.org/OpusFAQ Opus FAQ]<br />
*{{note|RFC|c}}[http://tools.ietf.org/html/rfc6716 IETF RFC 6716]<br />
<br />
[[Category:Codecs]]<br />
[[Category:Lossy]]<br />
[[Category:Encoder/Decoder]]</div>
47.18.96.45
https://wiki.hydrogenaud.io/index.php?title=Opus
Opus
2018-12-03T10:17:41Z
<p>47.18.96.45: /* Hardware & Software Support */</p>
<hr />
<div>{{Software Infobox<br />
| name = Opus<br />
| logo = [[Image:opus-logo.png|250px|Official Opus logo]]<br />
| screenshot =<br />
| caption = Opus Interactive Audio Codec<br />
| maintainer = [http://xiph.org/ Xiph.Org Foundation]<br />
| stable_release = 1.3<br />
| preview_release = 1.3-rc2<br />
| operating_system = Windows, Mac OS/X, Linux/BSD<br />
| use = Encoder/Decoder<br />
| license = 3-clause BSD license<br />
| website = [http://www.opus-codec.org/ opus-codec.org]<br />
}}<br />
<br />
'''Opus''' is a [[lossy]] audio compression format developed by the Internet Engineering Task Force (IETF) designed to be suitable for interactive real-time applications over the Internet,{{ref|homepage|a}} including music as well as speech, yet it is also very competitive for use as a storage and playback format, being a [http://people.xiph.org/~greg/opus/ha2011/ class leader at around 64 kbps] and [http://listening-test.coresv.net/results.htm also at 96 kbps]. As an open format standardised through [http://tools.ietf.org/html/rfc6716 Request for Comments (RFC) 6716],{{ref|RFC|c}} a high quality reference implementation is provided under the 3-clause BSD license{{ref|homepage|a}} which compiles and runs on the vast majority of general purpose and embedded (fixed point) processors. Many Software patents which cover Opus are licensed under royalty-free terms.{{ref|FAQ|b}} Opus is also a Mandatory To Implement (MTI) codec for the upcoming WebRTC (Web Real Time Communication) specification of the World Wide Web Consortium (W3C).<br />
<br />
Opus incorporates technology from two codecs, the speech-oriented SILK codec developed by Skype and the multi-purpose low-latency CELT codec developed by Xiph.org with significant changes to each to ensure they can work together.{{ref|RFC|c}} Opus can seamlessly transition among high and low bitrates, using a linear prediction codec (the SILK layer) at lower bitrates and a lapped transform codec (the CELT layer) at higher bitrates, as well as a hybrid of the two for a short overlap in which SILK encodes the 0-8kHz spectrum and the CELT layer encodes only the frequencies above 8kHz.{{ref|RFC|c}} Opus has very low algorithmic delay (typ 22.5 ms) compared to popular music formats such as [[MP3]], [[Vorbis |Ogg Vorbis]], [[AAC | LC-AAC and HE-AAC]] (all over 100 ms), yet performs very competitively with them in terms of quality per bitrate, making it comparably viable as a storage & playback format. Also unlike Vorbis, Opus does not require the definition of large codebooks for each individual file, making it also preferable for short clips of audio, such as those often used by game developers, a field where patent-free Vorbis is commonly used.{{ref|RFC|c}}<br />
<br />
Considerably more details of the history and potential applications for Opus are included in the ''Wikipedia'' page for '''[http://en.wikipedia.org/wiki/Opus_%28audio_format%29 Opus (audio format)]'''<br />
<br />
==Characteristics==<br />
Opus supports bitrates from 6kbps to 510kbps for typical stereo audio sources (and a maximum of around 255 kbps per channel for multichannel audio), with the 'sweet spot' for music and general audio around 30kbps (mono) and 40-100 kbps (stereo). It is intrinsically [[VBR | variable bitrate]], though constrained VBR and [[CBR | constant bitrate]] modes are possible where required. In the case of the reference release, libopus, the target bitrate is calibrated against the internal constant quality targets so that over a typical music collection, something very close to the target bitrate will be achieved. This bitrate-calibrated approach differs from most VBR encoders (e.g. LAME, helix mp3, qaac, Nero aacenc, Ogg Vorbis, Musepack) where a setting on some 'constant quality' scale (which differs between encoders) is used and the bitrate will fall where it may. Improved future versions can be expected to offer improved quality at the same setting. Independent implementations may adopt a different approach.<br />
<br />
Opus is able to seamlessly adapt its mode of operation without glitches or sound interruption (an illustrative demonstration of [http://opus-codec.org/examples/#gauge bitrate scalability] is on the Opus Examples page), which can be particularly useful for mixed-content audio or varying network conditions, making the unified Opus codec superior to a suite of different codecs that might otherwise cover the same range of bitrate and quality settings and would require out-of-band signalling to instigate codec switching. The switching includes the choice of mono, stereo and other channel mappings, the use of the speech-oriented SILK layer, the general-purpose CELT layer or the hybrid of both, and the use of different audio bandwidths (4kHz, 6kHz, 8kHz, 12kHz, 20kHz) as well as the quality adjustments within the same operating mode that are available in most VBR-capable codecs.<br />
<br />
Of importance mainly to interactive uses, but potentially useful in time-delayed audio streaming also, Opus includes packet loss concealment (PLC) in all modes and, in the speech-oriented modes where the SILK layer is active it also supports Forward Error Correction (FEC) where the expected rate of packet loss can be indicated to the encoder by the user or by application software and critical frames (e.g. consonant sounds) can be retransmitted at low bitrate to preserve intelligibility.<br />
<br />
For music and general audio, the CELT layer of Opus builds on knowledge gained during xiph.org's Vorbis development and ensures as a primary goal that the total energy in each spectral band is preserved while requiring only a modest bitrate overhead to achieve this, thereby eliminating a lot of bitrate-starvation artifacts such as 'birdies' that are common in low-bitrate MP3, especially during transients, applause and cymbal sounds. This technique likewise increases coding efficiency at bitrates targetting transparent music reproduction. Short blocks (2.5 ms) are also possible for efficient transient handling. Short blocks can also be used exclusively, if very low algorithmic delay (5.0ms) is required to enable very low-latency interative audio (e.g. live networked music performances such as remote jam sessions), though greater bitrate is then required to maintain the same quality (illustrated in [http://people.xiph.org/~xiphmont/demo/celt/demo.html#demo Monty's CELT demo page] under Constant PEAQ value, varying latency). CELT uses a number of additional techniques and provides additional advanced tools to enable encoder tuning.<br />
<br />
Opus natively supports [[gapless playback]] (though [[Gapless_playback#Poorly_designed_playback_systems | poor player design]] might itself induce interruptions during playback). Playback gain is also required, making some form of [[ReplayGain]] or [[ReplayGain_2.0_specification | similar]] volume control possible in any compliant player.<br />
<br />
==Bitrate performance==<br />
For mono speech, Opus ranges from intelligible narrowband speech reproduction starting at 6 kbps to medium-band, wideband and superwideband speech, reaching full-band speech by around 14 kbps in encoder version 1.2 (was 21 kbps in v1.1, 29 kbps in v1.0). Above about 32 kbps, the SILK layer is no longer used at all, as CELT alone gives superior quality.<br />
<br />
For music, the SILK modes are quite tolerable and better than CELT at very low bitrates. The hybrid mode is adopted as bitrate increases, extending bandwidth first to 12kHz (comparable with compact cassette) then to the full 20kHz and CELT then takes over. Assuming the source is stereo, the transition from mono to stereo typically happens between the transition from 12kHz to 20kHz. Encoder version 1.2 includes great improvements to music encoding in the 32-64 kbps range, allowing full-band stereo at 32 kbps and providing acceptable quality at 48 kbps where artifacts are audible but rarely annoying. Version 1.3 is expected to further improve quality in this range.<br />
<br />
Multi-format stereo music listening tests have demonstrated the superiority of Opus at 64 kbps and 96 kbps compared to the best AAC-LC, HE-AAC and Ogg Vorbis encoders, and at 96 kbps also to 128 kbps MP3 encoded using LAME -V 5.<br />
<br />
==Indicative bitrate and quality==<br />
The tables below give illustrative, indicative quality guidance based on typical modes used internally by Opus and a range of listening tests.<br />
<br />
In encoder version 1.1 automatic detection of speech/music and bandwidth detection were introduced to improve mode decisions and VBR is less constrained, all with the aim of maximizing the quality/bitrate tradeoff, and these improvements are further enhanced in version 1.2 and the forthcoming 1.3. These tables are likely to require updates as the encoder is improved, especially in low-bitrate regions.<br />
<br />
===Speech encoding quality===<br />
This table assumes a '''monophonic''' source sampled at CD quality or above (typ 48 kHz sampling rate) but mentions stereo compatibility for 40kbps+. The default 20ms frame size (22.5ms latency) is assumed. Note that the selection of ''VOIP'' mode will deliberately modify the sound with a High Pass Filter and emphasis of formants and harmonics to improve intelligibility of speech especially in noisy environments much as telephones do. ''Auto'' mode will not modify the sound prior to encoding so is usually better for high quality speech recordings or mixed speech and music.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Bitrate Target<br />
!Bandwidth<br />
!Typical Mode Used<br />
!Speech Quality<br />
!Use Cases / Competitive Codecs<br />
|-<br />
!Less than 5 kbps<br />
| -<br />
| -<br />
| Bitrates lower than 6 kbps not supported by Opus<br />
| Try [http://codec2.org/ codec2] for 0.7-3.2 kbps mono speech<br />
|-<br />
!6 kbps<br />
|6 kHz medium-band<br />
|SILK<br />
|Fair, intelligible<br />
|AMR-NB may be a little better, but higher latency & proprietary, [[Speex]] also competitive<br />
|-<br />
!8 kbps<br />
|6 kHz medium-band<br />
|SILK<br />
|Close to telephone quality<br />
|AMR-NB & AMR-WB similar quality, but higher latency & proprietary. [[Speex]] competitive.<br />
|-<br />
!12 kbps<br />
|12 kHz super-wideband<br />
|hybrid<br />
|Medium bandwidth, better than telephone quality<br />
|Similar quality to AMR-WB<br />
|-<br />
!16 kbps<br />
|20 kHz<br />
|hybrid/CELT<br />
|Wideband speech quality<br />
|Similar to/better than AMR-WB<br />
|-<br />
!24 kbps<br />
|20 kHz<br />
|hybrid/CELT<br />
|Near transparent speech<br />
|Better than AMR-WB. Podcasts/audiobooks/talk-radio.<br />
|-<br />
!32 kbps<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent speech plus moderately good stereo music<br />
|Much better than AMR-WB. Podcasts/audiobooks/talk-radio.<br />
|-<br />
!40 kbps<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent mono or stereo speech, fairly good stereo music<br />
|Stereo podcasts/audiobooks/talk radio with some music<br />
|-<br />
!48 kbps or more<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent mono or stereo speech, reasonable music<br />
|Flexible general purpose modes to suit mixed music and speech<br />
|-<br />
|}<br />
<br />
===Music encoding quality===<br />
This table assumes a '''stereophonic''' source sampled at CD quality or above (typ 48 kHz sampling rate). Opus will automatically use mono at very low bitrates, though a certain amount of stereo encoding can still be used - content dependent even when mono is specified as the typical stereo mode in the table below.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Bitrate target<br />
!Stereo mode<br />
!Bandwidth<br />
!typ SILK/CELT use<br />
!Music quality notes<br />
!Use cases/notes/competitive codecs<br />
|-<br />
!6 kbps<br />
|mono<br />
|6 kHz<br />
|SILK<br />
|Poor, muffled sound but intelligible lyrics.<br />
| -<br />
|-<br />
!8 kbps<br />
|mono<br />
|6 kHz<br />
|SILK<br />
|Poor, muffled but OK for bitrate<br />
| -<br />
|-<br />
!14 to 16 kbps<br />
|mono<br />
|20 kHz<br />
|hybrid/CELT<br />
|Fairly poor but OK for bitrate<br />
|Perhaps acceptable for incidental music<br />
|-<br />
!22 to 24 kbps<br />
|mono<br />
|20 kHz<br />
|hybrid/CELT<br />
|Fair but OK for bitrate<br />
|OK for incidental music<br />
|-<br />
!32 to 40 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Moderately good stereo, some artifacts, rarely nasty<br />
|Stereo podcasts, audiobooks, very low bitrate music<br />
|-<br />
!48 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, nice sound, may have problems with cymbals<br />
|Stereo podcasts, audiobooks, low bitrate music<br />
|-<br />
!64 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, nice sound, detectable differences to original (mostly 'not annoying')<br />
|Music storage & streaming. Beat HE-AAC, Vorbis, MP3 in [http://people.xiph.org/~greg/opus/ha2011/ listening test]<br />
|-<br />
!96 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, good quality approaching transparency<br />
|Music storage & high quality streaming. Beat LC-AAC, Vorbis, MP3 in [http://listening-test.coresv.net/results.htm listening test]<br />
|-<br />
!112 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Fairly close to transparency (needs more testing)<br />
|Music storage & high quality streaming. Very low-latency stereo networked music performance/jam sessions at OK quality (see below table)<br />
|-<br />
!128 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Very close to transparency (needs more testing). Most modern codecs competitive (AAC-LC, Vorbis, MP3)<br />
|Music storage & streaming. Future download music sales.<br />
|-<br />
!160 to 192 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Transparent with very low chance of artifacts (a few killer samples still detectable). Most old & new lossy codecs competitive.<br />
|Music storage & streaming, dedicated limited-bandwidth audio links (e.g. wireless, [http://en.wikipedia.org/wiki/Bluetooth_profile#Advanced_Audio_Distribution_Profile_.28A2DP.29 A2DP-bluetooth] type links). <br />
|-<br />
!510 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Maximum possible stereo bitrate target (actual rate often less than 510 for default frame size). Most old and new lossy codecs competitive, plus near-lossless [[lossyWAV]] and [[WavPack | WavPack lossy]]<br />
|Music storage, dedicated limited-bitrate audio links (e.g. wireless, minimum latency high quality audio. LossyWAV and WavPack lossy are very competitive for storage, and WavPack lossy --blocksize=256 may be competitive with minimum latency mode also.<br />
|-<br />
!>510 kbps<br />
| -<br />
| -<br />
| -<br />
|Above Opus bitrate range allowed for stereo sources<br />
|Settle for 510kbps or use [[lossless]], [[lossyWAV]], [[WavPack | WavPack lossy]] or lossy transform/subband codecs like [[Vorbis]], [[Musepack]] at very high settings.<br />
|-<br />
|}<br />
<br />
===Lower latency versus quality/bitrate trade-off===<br />
====Packet overhead in interactive applications====<br />
For interactive use on the Internet or other packet-based networks, total bandwidth used will be subject to packet overhead. The more packet headers that are transmitted every second, the greater will be the overhead that is required. For this reason, Opus, while defaulting to 20.0ms frames, supports 60.0ms frames to reduce overhead when transporting low-bitrate SILK frames at the expense of greater latency, which may still be acceptable for speech, and also supports 10.0ms SILK frames to reduce latency somewhat at the expense of packet overhead.<br />
<br />
In the CELT layer, which tends to operate at higher bitrates than SILK, 20.0ms frames are the default, but frames of 10.0ms, 5.0ms and 2.5ms are also possible, which directly increases the frame overhead by transmitting more packets per second to achieve lower latency. In addition, as we'll see below it also reduces the quality/bitrate tradeoff of the CELT layer itself.<br />
<br />
None of the bitrates mentioned in this article account for the packet overhead.<br />
<br />
====CELT layer latency versus quality/bitrate trade-off====<br />
Unlike the SILK layer, which works on fixed 10.0ms blocks, 1, 2 or 6 of which can be combined into an Opus frame, the CELT layer is able to modify the encoding block lengths available to enable its use with shorter frames.<br />
<br />
When the CELT layer uses 10.0ms, 5.0ms and 2.5ms frames instead of the default 20.0ms, it must use smaller transform block sizes to achieve this, thereby reducing frequency resolution in the MDCT compared to the default transform window, thus reducing encoding efficiency for tonal signals. To obtain the same frequency precision for a sound divided into shorter transform windows, improved amplitude precision is necessary, resulting in increased bitrate to obtain the same perceptual quality (or conversely lower quality at the same bitrate).<br />
<br />
These reduced-latency modes remain efficient for transient signals, which use short blocks anyway.<br />
<br />
In all modes, the algorithmic delay consists of the frame size plus an additional 2.5ms delay. The CELT layer requires 2.5ms for MDCT window overlap.<br />
<br />
Xiph.org used matched PEAQ scores (approximate perceptual quality assessment made in software) for the CELT0.10 codec that was used as the basis of the CELT layer in the Opus reference release, which indicate the following [http://people.xiph.org/~xiphmont/demo/celt/demo.html#demo approximate equivalent settings] for stereo music.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Frame size<br />
!Algorithmic delay<br />
!Bitrate to match 64kbps@22.5ms delay<br />
!fractional bitrate increase<br />
|-<br />
!20.0 ms<br />
|22.5 ms<br />
|64.0 kbps<br />
|0.0 %<br />
|-<br />
!10.0 ms<br />
|12.5 ms<br />
|70.4 kbps<br />
|10.0 %<br />
|-<br />
!5.0 ms<br />
|7.5 ms<br />
|84.8 kbps<br />
|32.5 %<br />
|-<br />
!2.5 ms<br />
|5.0 ms<br />
|112.0 kbps<br />
|75.0 %<br />
|-<br />
|}<br />
<br />
N.B. This table is useful for interactive streaming only. For music storage & delayed playback or non-interactive streaming, latency reduction is not important and the default 20.0ms frame size is preferable.<br />
<br />
== Hardware & Software Support ==<br />
<br />
Much of this section is based heavily on the Jan 12th 2013 version of the '''Support''' section of the [http://en.wikipedia.org/wiki/Opus_%28audio_format%29 Wikipedia article], which is more likely to be kept updated and to provide links to further information about the supporting platforms.<br />
<br />
The format and algorithms are openly documented and the reference implementation is published as free software. The reference implementation (Opus Audio Tools, opus-tools), consisting of separate encoders and decoders, is published under the terms of a BSD-like license. It is written in C programming language and can be compiled for hardware architectures with or without floating point unit. The accompanying diagnostic tool opusinfo reports detailed technical information about Opus files, including information on the standard compliance of the bitstream format. It is based on ogginfo from the vorbis-tools and therefore, unlike the encoder and decoder, available under the terms of version 2 of the GPL.<br />
<br />
=== Commandline binaries & libopus versions ===<br />
The commandline tools of the reference version are available pre-compiled for the most popular operating systems at [http://opus-codec.org/downloads opus-codec.org] and [https://ftp.mozilla.org/pub/mozilla.org/opus/ Mozilla's ftp server], plus in the foobar2000 free encoders pack and some alternative compiles through the hydrogenaud.io opus forum. The libopus commandline tools include encoder ''opusenc'', decoder ''opusdec'', and with a different license, the ''opusinfo'' opus stream & metadata analyzer.<br />
<br />
The '''latest stable release''' is recommended for general use and as of mid 2014 is considered competitive with or superior to the best alternative speech or general music encoders at most supported bitrates.<br />
<br />
==== libopus v1.0 ====<br />
Released 11 Sep 2012 when RFC6716 was standardized but mostly fully developed by late 2011.<br />
<br />
'''Stable''', '''well-tuned''' ''opusenc'' reference encoder as included in RFC documentation.<br />
<br />
CELT layer closely related to CELT 0.10 implements Constrained VBR mode by default (bitrate boost used mainly for transients), plus true CBR.<br />
<br />
==== libopus v1.1 ==== <br />
<br />
The alpha source code released 21 Dec 2012 for testing & user feedback and following a beta release and testing, the stable 1.1 version was released on 5 December 2013, considered well tested enough for general release.<br />
<br />
CELT layer [http://jmspeex.livejournal.com/11737.html quality improvements] introduced to provide '''unconstrained VBR''' include a rate boost not just for transients but now for highly tonal signals too and rate reduction when stereo image is narrow. There's also a rewrite of its '''transient detection''' code and '''time-frequency analysis''' code, and rewritten '''dynamic allocation''' code (HF/LF tilt and Band Boost) to allow more aggressive changes from the typical static allocation when warranted.<br />
<br />
There are many minor improvements to '''speech quality''' in both SILK and CELT layers.<br />
<br />
'''DC-rejection''' below 3 Hz also aids quality if inaudible DC offset is present with no effect on deep bass notes.<br />
<br />
'''Automatic speech/music detection''' is introduced to optimize encoding mode choices, especially near the bitrate target range (presumably around 24~40kbps) where the encoder may perform best with SILK, hybrid or CELT depending on content type. Below that range SILK performs best for both music & speech, and above it CELT performs best for speech & music. The detection, without look-ahead is not perfect but usually is undecided in audio where either mode will work well.<br />
<br />
'''Automatic bandwidth detection''' is also introduced to save wasted bits allocated to absent frequencies.<br />
<br />
'''Surround sound improvements''' were introduced since the beta release with considerable advances in coding efficiency, bitrate allocation and quality.<br />
<br />
==== libopus v1.1.3 ==== <br />
Released July 15th, 2016. This version contains:<br />
<br />
*Neon optimizations improving performance on ARMv7 and ARMv8 by up to 15%<br />
<br />
*Fixes some issues with 16-bit platforms (e.g. TI C55x)<br />
<br />
*Fixes to comfort noise generation (CNG)<br />
<br />
*Documenting that PLC packets can also be 2 bytes<br />
<br />
*Includes experimental ambisonics work (--enable-ambisonics)<br />
<br />
==== libopus v1.2.1 ==== <br />
Released June 26th, 2017. This version contains:<br />
<br />
*Speech quality improvements especially in the 12-20 kbit/s range<br />
<br />
*Improved VBR encoding for hybrid mode<br />
<br />
*More aggressive use of wider speech bandwidth, including fullband speech starting at 14 kbit/s<br />
<br />
*Music quality improvements in the 32-48 kb/s range<br />
<br />
*Generic and SSE CELT optimizations<br />
<br />
*Support for directly encoding packets up to 120 ms<br />
<br />
*DTX support for CELT mode<br />
<br />
*SILK CBR improvements<br />
<br />
*Support for all of the fixes in draft-ietf-codec-opus-update-06 (the mono downmix and the folding fixes need --enable-update-draft)<br />
<br />
*Many bug fixes, including integer wrap-arounds discovered through fuzzing (no security implications)<br />
<br />
==== libopus 1.3 ====<br />
Released on October 18th, 2018. This version contains:<br />
<br />
* Improvements to voice activity detection (VAD) and speech/music classification using a recurrent neural network (RNN)<br />
* Support for ambisonics coding using channel mapping families 2 and 3<br />
* Improvements to stereo speech coding at low bitrate<br />
* Using wideband encoding down to 9 kb/s<br />
* Making it possible to use SILK down to bitrates around 5 kb/s<br />
* Minor quality improvement on tones<br />
* Enabling the spec fixes in <nowiki>RFC 8251</nowiki> by default<br />
* Security/hardening improvements<br />
* Fixes to the CELT PLC<br />
* Bandwidth detection fixes<br />
<br />
=== Ports ===<br />
<br />
==== Concentus ====<br />
<br />
The libopus reference library (fixed-point variant) has successfully been ported to both '''C#''' and '''Java''', as part of a project called '''Concentus'''. The aim of the project is specifically to target cross-platform applications where native C interop is relatively difficult. The code is available on [https://github.com/lostromb/concentus Github] and distributed via standard package managers.<br />
<br />
==== Emscripten ports ====<br />
<br />
At least one implementation of opus in Javascript has been made using the automated tool [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Emscripten emscripten]. See [https://blog.rillke.com/opusenc.js/ here], [https://github.com/kazuki/opus.js-sample here] and [https://github.com/audiocogs/opus.js here].<br />
<br />
=== VoIP software ===<br />
* The open source virtual PBX Freeswitch supports Opus transcoding.<br />
* The voice-chat software Mumble supports Opus as its main codec.<br />
* SIP softphones Phoner and PhonerLite support Opus<br />
* The SIP and IAX2 client SFLphone is being fitted with Opus support.<br />
* Integration of Opus into the Skype client is finished, although no version with Opus support has yet been published.<br />
* TrueConf video conferencing solutions support Opus.<br />
* Opus support is planned for Jitsi 2.0, together with VP8 video<br />
* Empathy may use any format supported in GStreamer, including Opus.<br />
* Line2 has replaced their current codec with Opus. Their iOS app will be the first to be released with the Opus. The Android app will follow later.<br />
* CSipSimple supports Opus, Codec2, G.726 and G.722.1 with an additional plug-in.<br />
* The voice-chat software TeamSpeak 3 supports Opus for voice and music in pre-release server 3.0.7-pre2 and beta client version 3.0.10<br />
<br />
=== Web frameworks and browsers ===<br />
* Opus support is mandatory for WebRTC implementations.<br />
* Mozilla supports Opus beginning with version 15 of Firefox and Thunderbird, plus Seamonkey, which is uses shared codebase.<br />
* Depending on the backend in use, Opera supports inline playback of embedded Opus files. Official support for Opus and WebRTC are on the development roadmap.<br />
* Chromium and Google Chrome have audio support as of version 33.<br />
* Apple's Safari browser now supports Opus as of iOS 11 and macOS 10.13 High Sierra.<br />
* Maxthon Cloud Browser<br />
<br />
=== Streaming audio ===<br />
* Icecast. (examples: [http://dir.xiph.org/by_format/Opus Stream directory by format Opus], [http://smj.delfa.net/opus_64.m3u 64k]/[http://smj.delfa.net/opus_256.m3u 256k] [http://smj.delfa.net/ Smooth Jazz Opus Stream], [http://www.absoluteradio.co.uk/listen/labs.html Absolute Radio Opus Trial] 7 stations at 24,64,96 kbps, [http://icecast.ofdoom.com:8000/burst-opus.ogg Icecast Of Doom 96k]<br />
* Krad Radio<br />
* Liquidsoap<br />
<br />
=== Operating systems and desktop multimedia frameworks ===<br />
* In Debian GNU/Linux the Opus development tools and supporting libraries can be installed from the preconfigured repositories in the next stable version ("wheezy") that is expected to be released in early 2013.<br />
* For Microsoft Windows, there are DirectShow filters supporting Opus, including DC-Bass Source Mod and the LAV Filters.<br />
* In GStreamer the integration of Opus support is complete.<br />
* FFmpeg supports decoding and encoding Opus via the external library libopus.<br />
* Android 5.0 and above supports Opus natively if encapsulated in the Ogg container, but .opus filename extension is not recognized by Android, so the use of double filename extension .opus.ogg is recommended as a workaround to allow apps to recognize files as playable audio.<br />
<br />
=== Hardware support ===<br />
* Support in [[Rockbox]] is available. This means hardware support for a series of portable media players (including some products from the iPod series by Apple and Sansa, iriver and Archos devices) and with "Rockbox as an Application" (RaaA) also on Android devices.<br />
<br />
=== Player software ===<br />
<br />
* Windows/Mac/Linux (Cross-Platform)<br />
*# [[VLC]] (media player supports Opus as of version 2.0.4 <br />
*#[[Amarok]] 2.8 has transcoding support for Opus codec if ffmpeg is compiled with support for the libopus library & support for playback of Opus encoded files if Amarok is compiled against TagLib (newer than V1.8)<br />
*# Clementine has Opus support<br />
*# Audacious player<br />
*# [[MPD]] as of version 0.18 if compiled against libopus (supports both encoding for http streams and decoding) <br />
<br />
<br />
* Windows Exclusive<br />
*# AIMP supports Opus natively as of version 3.20 build 1125 beta 1<br />
*# [[foobar2000]] supports Opus natively as of v1.1.14 beta 1<br />
*# Mpxplay supports Opus (using a decoder DLL) as of v1.60 alpha 2<br />
*# [[Winamp]] supports Opus using a [http://forums.winamp.com/showthread.php?p=2925154#post2925154 3rd party plug-in]<br />
*# MPC-HC<br />
<br />
<br />
* iOS/Android (Cross-Platform)<br />
*#Capriccio [https://itunes.apple.com/us/app/capriccio-free-ultimate-music/id434829018?mt=8 iOS]/[https://play.google.com/store/apps/details?id=me.ideariboso.capriccio Android]<br />
*#foobar2000 [https://itunes.apple.com/us/app/foobar2000/id1072807669?mt=8 iOS]/[https://play.google.com/store/apps/details?id=com.foobar2000.foobar2000&hl=en Android]<br />
<br />
<br />
* Android Exclusive<br />
*# [http://gonemadmusicplayer.blogspot.com/ GoneMAD Music Player]<br />
*# [http://neutronmp.com/ Neutron Music Player]<br />
*# [http://www.videolan.org/vlc/download-android.html VLC Media Player for Android]<br />
*# [https://play.google.com/store/apps/details?id=ru.recoilme.freeamp FreeMP]<br />
*# [https://play.google.com/store/apps/details?id=net.mderezynski.youki3 Youki]<br />
*# [https://play.google.com/store/apps/details?id=com.aimp.player AIMP for Android]<br />
*# [https://play.google.com/store/apps/details?id=com.acmeandroid.listen Listen Audiobook Player]<br />
*# [https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad MX Player]<br />
*# [https://play.google.com/store/apps/details?id=org.tomahawk.tomahawk_android Tomahawk Player Beta]<br />
*# [https://play.google.com/store/apps/details?id=com.maxmpz.audioplayer&hl=en Poweramp Music Player]<br />
<br />
=== Other software ===<br />
* CDBurnerXP<br />
* MediaCoder<br />
* Report-IT<br />
* [[MP3tag|MP3tag]]<br />
* [http://www.xdlab.ru/en/ TagScanner]<br />
* [http://www.xmedia-recode.de/ XMedia Recode]<br />
<br />
== References & Notes ==<br />
<br />
*{{note|homepage|a}}[http://opus-codec.org/ opus-codec.org homepage]<br />
*{{note|FAQ|b}}[http://wiki.xiph.org/OpusFAQ Opus FAQ]<br />
*{{note|RFC|c}}[http://tools.ietf.org/html/rfc6716 IETF RFC 6716]<br />
<br />
[[Category:Codecs]]<br />
[[Category:Lossy]]<br />
[[Category:Encoder/Decoder]]</div>
47.18.96.45
https://wiki.hydrogenaud.io/index.php?title=Opus
Opus
2018-12-01T02:31:39Z
<p>47.18.96.45: </p>
<hr />
<div>{{Software Infobox<br />
| name = Opus<br />
| logo = [[Image:opus-logo.png|250px|Official Opus logo]]<br />
| screenshot =<br />
| caption = Opus Interactive Audio Codec<br />
| maintainer = [http://xiph.org/ Xiph.Org Foundation]<br />
| stable_release = 1.3<br />
| preview_release = 1.3-rc2<br />
| operating_system = Windows, Mac OS/X, Linux/BSD<br />
| use = Encoder/Decoder<br />
| license = 3-clause BSD license<br />
| website = [http://www.opus-codec.org/ opus-codec.org]<br />
}}<br />
<br />
'''Opus''' is a [[lossy]] audio compression format developed by the Internet Engineering Task Force (IETF) designed to be suitable for interactive real-time applications over the Internet,{{ref|homepage|a}} including music as well as speech, yet it is also very competitive for use as a storage and playback format, being a [http://people.xiph.org/~greg/opus/ha2011/ class leader at around 64 kbps] and [http://listening-test.coresv.net/results.htm also at 96 kbps]. As an open format standardised through [http://tools.ietf.org/html/rfc6716 Request for Comments (RFC) 6716],{{ref|RFC|c}} a high quality reference implementation is provided under the 3-clause BSD license{{ref|homepage|a}} which compiles and runs on the vast majority of general purpose and embedded (fixed point) processors. Many Software patents which cover Opus are licensed under royalty-free terms.{{ref|FAQ|b}} Opus is also a Mandatory To Implement (MTI) codec for the upcoming WebRTC (Web Real Time Communication) specification of the World Wide Web Consortium (W3C).<br />
<br />
Opus incorporates technology from two codecs, the speech-oriented SILK codec developed by Skype and the multi-purpose low-latency CELT codec developed by Xiph.org with significant changes to each to ensure they can work together.{{ref|RFC|c}} Opus can seamlessly transition among high and low bitrates, using a linear prediction codec (the SILK layer) at lower bitrates and a lapped transform codec (the CELT layer) at higher bitrates, as well as a hybrid of the two for a short overlap in which SILK encodes the 0-8kHz spectrum and the CELT layer encodes only the frequencies above 8kHz.{{ref|RFC|c}} Opus has very low algorithmic delay (typ 22.5 ms) compared to popular music formats such as [[MP3]], [[Vorbis |Ogg Vorbis]], [[AAC | LC-AAC and HE-AAC]] (all over 100 ms), yet performs very competitively with them in terms of quality per bitrate, making it comparably viable as a storage & playback format. Also unlike Vorbis, Opus does not require the definition of large codebooks for each individual file, making it also preferable for short clips of audio, such as those often used by game developers, a field where patent-free Vorbis is commonly used.{{ref|RFC|c}}<br />
<br />
Considerably more details of the history and potential applications for Opus are included in the ''Wikipedia'' page for '''[http://en.wikipedia.org/wiki/Opus_%28audio_format%29 Opus (audio format)]'''<br />
<br />
==Characteristics==<br />
Opus supports bitrates from 6kbps to 510kbps for typical stereo audio sources (and a maximum of around 255 kbps per channel for multichannel audio), with the 'sweet spot' for music and general audio around 30kbps (mono) and 40-100 kbps (stereo). It is intrinsically [[VBR | variable bitrate]], though constrained VBR and [[CBR | constant bitrate]] modes are possible where required. In the case of the reference release, libopus, the target bitrate is calibrated against the internal constant quality targets so that over a typical music collection, something very close to the target bitrate will be achieved. This bitrate-calibrated approach differs from most VBR encoders (e.g. LAME, helix mp3, qaac, Nero aacenc, Ogg Vorbis, Musepack) where a setting on some 'constant quality' scale (which differs between encoders) is used and the bitrate will fall where it may. Improved future versions can be expected to offer improved quality at the same setting. Independent implementations may adopt a different approach.<br />
<br />
Opus is able to seamlessly adapt its mode of operation without glitches or sound interruption (an illustrative demonstration of [http://opus-codec.org/examples/#gauge bitrate scalability] is on the Opus Examples page), which can be particularly useful for mixed-content audio or varying network conditions, making the unified Opus codec superior to a suite of different codecs that might otherwise cover the same range of bitrate and quality settings and would require out-of-band signalling to instigate codec switching. The switching includes the choice of mono, stereo and other channel mappings, the use of the speech-oriented SILK layer, the general-purpose CELT layer or the hybrid of both, and the use of different audio bandwidths (4kHz, 6kHz, 8kHz, 12kHz, 20kHz) as well as the quality adjustments within the same operating mode that are available in most VBR-capable codecs.<br />
<br />
Of importance mainly to interactive uses, but potentially useful in time-delayed audio streaming also, Opus includes packet loss concealment (PLC) in all modes and, in the speech-oriented modes where the SILK layer is active it also supports Forward Error Correction (FEC) where the expected rate of packet loss can be indicated to the encoder by the user or by application software and critical frames (e.g. consonant sounds) can be retransmitted at low bitrate to preserve intelligibility.<br />
<br />
For music and general audio, the CELT layer of Opus builds on knowledge gained during xiph.org's Vorbis development and ensures as a primary goal that the total energy in each spectral band is preserved while requiring only a modest bitrate overhead to achieve this, thereby eliminating a lot of bitrate-starvation artifacts such as 'birdies' that are common in low-bitrate MP3, especially during transients, applause and cymbal sounds. This technique likewise increases coding efficiency at bitrates targetting transparent music reproduction. Short blocks (2.5 ms) are also possible for efficient transient handling. Short blocks can also be used exclusively, if very low algorithmic delay (5.0ms) is required to enable very low-latency interative audio (e.g. live networked music performances such as remote jam sessions), though greater bitrate is then required to maintain the same quality (illustrated in [http://people.xiph.org/~xiphmont/demo/celt/demo.html#demo Monty's CELT demo page] under Constant PEAQ value, varying latency). CELT uses a number of additional techniques and provides additional advanced tools to enable encoder tuning.<br />
<br />
Opus natively supports [[gapless playback]] (though [[Gapless_playback#Poorly_designed_playback_systems | poor player design]] might itself induce interruptions during playback). Playback gain is also required, making some form of [[ReplayGain]] or [[ReplayGain_2.0_specification | similar]] volume control possible in any compliant player.<br />
<br />
==Bitrate performance==<br />
For mono speech, Opus ranges from intelligible narrowband speech reproduction starting at 6 kbps to medium-band, wideband and superwideband speech, reaching full-band speech by around 14 kbps in encoder version 1.2 (was 21 kbps in v1.1, 29 kbps in v1.0). Above about 32 kbps, the SILK layer is no longer used at all, as CELT alone gives superior quality.<br />
<br />
For music, the SILK modes are quite tolerable and better than CELT at very low bitrates. The hybrid mode is adopted as bitrate increases, extending bandwidth first to 12kHz (comparable with compact cassette) then to the full 20kHz and CELT then takes over. Assuming the source is stereo, the transition from mono to stereo typically happens between the transition from 12kHz to 20kHz. Encoder version 1.2 includes great improvements to music encoding in the 32-64 kbps range, allowing full-band stereo at 32 kbps and providing acceptable quality at 48 kbps where artifacts are audible but rarely annoying. Version 1.3 is expected to further improve quality in this range.<br />
<br />
Multi-format stereo music listening tests have demonstrated the superiority of Opus at 64 kbps and 96 kbps compared to the best AAC-LC, HE-AAC and Ogg Vorbis encoders, and at 96 kbps also to 128 kbps MP3 encoded using LAME -V 5.<br />
<br />
==Indicative bitrate and quality==<br />
The tables below give illustrative, indicative quality guidance based on typical modes used internally by Opus and a range of listening tests.<br />
<br />
In encoder version 1.1 automatic detection of speech/music and bandwidth detection were introduced to improve mode decisions and VBR is less constrained, all with the aim of maximizing the quality/bitrate tradeoff, and these improvements are further enhanced in version 1.2 and the forthcoming 1.3. These tables are likely to require updates as the encoder is improved, especially in low-bitrate regions.<br />
<br />
===Speech encoding quality===<br />
This table assumes a '''monophonic''' source sampled at CD quality or above (typ 48 kHz sampling rate) but mentions stereo compatibility for 40kbps+. The default 20ms frame size (22.5ms latency) is assumed. Note that the selection of ''VOIP'' mode will deliberately modify the sound with a High Pass Filter and emphasis of formants and harmonics to improve intelligibility of speech especially in noisy environments much as telephones do. ''Auto'' mode will not modify the sound prior to encoding so is usually better for high quality speech recordings or mixed speech and music.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Bitrate Target<br />
!Bandwidth<br />
!Typical Mode Used<br />
!Speech Quality<br />
!Use Cases / Competitive Codecs<br />
|-<br />
!Less than 5 kbps<br />
| -<br />
| -<br />
| Bitrates lower than 6 kbps not supported by Opus<br />
| Try [http://codec2.org/ codec2] for 0.7-3.2 kbps mono speech<br />
|-<br />
!6 kbps<br />
|6 kHz medium-band<br />
|SILK<br />
|Fair, intelligible<br />
|AMR-NB may be a little better, but higher latency & proprietary, [[Speex]] also competitive<br />
|-<br />
!8 kbps<br />
|6 kHz medium-band<br />
|SILK<br />
|Close to telephone quality<br />
|AMR-NB & AMR-WB similar quality, but higher latency & proprietary. [[Speex]] competitive.<br />
|-<br />
!12 kbps<br />
|12 kHz super-wideband<br />
|hybrid<br />
|Medium bandwidth, better than telephone quality<br />
|Similar quality to AMR-WB<br />
|-<br />
!16 kbps<br />
|20 kHz<br />
|hybrid/CELT<br />
|Wideband speech quality<br />
|Similar to/better than AMR-WB<br />
|-<br />
!24 kbps<br />
|20 kHz<br />
|hybrid/CELT<br />
|Near transparent speech<br />
|Better than AMR-WB. Podcasts/audiobooks/talk-radio.<br />
|-<br />
!32 kbps<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent speech plus moderately good stereo music<br />
|Much better than AMR-WB. Podcasts/audiobooks/talk-radio.<br />
|-<br />
!40 kbps<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent mono or stereo speech, fairly good stereo music<br />
|Stereo podcasts/audiobooks/talk radio with some music<br />
|-<br />
!48 kbps or more<br />
|20 kHz<br />
|CELT<br />
|Essentially transparent mono or stereo speech, reasonable music<br />
|Flexible general purpose modes to suit mixed music and speech<br />
|-<br />
|}<br />
<br />
===Music encoding quality===<br />
This table assumes a '''stereophonic''' source sampled at CD quality or above (typ 48 kHz sampling rate). Opus will automatically use mono at very low bitrates, though a certain amount of stereo encoding can still be used - content dependent even when mono is specified as the typical stereo mode in the table below.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Bitrate target<br />
!Stereo mode<br />
!Bandwidth<br />
!typ SILK/CELT use<br />
!Music quality notes<br />
!Use cases/notes/competitive codecs<br />
|-<br />
!6 kbps<br />
|mono<br />
|6 kHz<br />
|SILK<br />
|Poor, muffled sound but intelligible lyrics.<br />
| -<br />
|-<br />
!8 kbps<br />
|mono<br />
|6 kHz<br />
|SILK<br />
|Poor, muffled but OK for bitrate<br />
| -<br />
|-<br />
!14 to 16 kbps<br />
|mono<br />
|20 kHz<br />
|hybrid/CELT<br />
|Fairly poor but OK for bitrate<br />
|Perhaps acceptable for incidental music<br />
|-<br />
!22 to 24 kbps<br />
|mono<br />
|20 kHz<br />
|hybrid/CELT<br />
|Fair but OK for bitrate<br />
|OK for incidental music<br />
|-<br />
!32 to 40 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Moderately good stereo, some artifacts, rarely nasty<br />
|Stereo podcasts, audiobooks, very low bitrate music<br />
|-<br />
!48 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, nice sound, may have problems with cymbals<br />
|Stereo podcasts, audiobooks, low bitrate music<br />
|-<br />
!64 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, nice sound, detectable differences to original (mostly 'not annoying')<br />
|Music storage & streaming. Beat HE-AAC, Vorbis, MP3 in [http://people.xiph.org/~greg/opus/ha2011/ listening test]<br />
|-<br />
!96 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Full bandwidth stereo music, good quality approaching transparency<br />
|Music storage & high quality streaming. Beat LC-AAC, Vorbis, MP3 in [http://listening-test.coresv.net/results.htm listening test]<br />
|-<br />
!112 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Fairly close to transparency (needs more testing)<br />
|Music storage & high quality streaming. Very low-latency stereo networked music performance/jam sessions at OK quality (see below table)<br />
|-<br />
!128 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Very close to transparency (needs more testing). Most modern codecs competitive (AAC-LC, Vorbis, MP3)<br />
|Music storage & streaming. Future download music sales.<br />
|-<br />
!160 to 192 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Transparent with very low chance of artifacts (a few killer samples still detectable). Most old & new lossy codecs competitive.<br />
|Music storage & streaming, dedicated limited-bandwidth audio links (e.g. wireless, [http://en.wikipedia.org/wiki/Bluetooth_profile#Advanced_Audio_Distribution_Profile_.28A2DP.29 A2DP-bluetooth] type links). <br />
|-<br />
!510 kbps<br />
|stereo<br />
|20 kHz<br />
|CELT<br />
|Maximum possible stereo bitrate target (actual rate often less than 510 for default frame size). Most old and new lossy codecs competitive, plus near-lossless [[lossyWAV]] and [[WavPack | WavPack lossy]]<br />
|Music storage, dedicated limited-bitrate audio links (e.g. wireless, minimum latency high quality audio. LossyWAV and WavPack lossy are very competitive for storage, and WavPack lossy --blocksize=256 may be competitive with minimum latency mode also.<br />
|-<br />
!>510 kbps<br />
| -<br />
| -<br />
| -<br />
|Above Opus bitrate range allowed for stereo sources<br />
|Settle for 510kbps or use [[lossless]], [[lossyWAV]], [[WavPack | WavPack lossy]] or lossy transform/subband codecs like [[Vorbis]], [[Musepack]] at very high settings.<br />
|-<br />
|}<br />
<br />
===Lower latency versus quality/bitrate trade-off===<br />
====Packet overhead in interactive applications====<br />
For interactive use on the Internet or other packet-based networks, total bandwidth used will be subject to packet overhead. The more packet headers that are transmitted every second, the greater will be the overhead that is required. For this reason, Opus, while defaulting to 20.0ms frames, supports 60.0ms frames to reduce overhead when transporting low-bitrate SILK frames at the expense of greater latency, which may still be acceptable for speech, and also supports 10.0ms SILK frames to reduce latency somewhat at the expense of packet overhead.<br />
<br />
In the CELT layer, which tends to operate at higher bitrates than SILK, 20.0ms frames are the default, but frames of 10.0ms, 5.0ms and 2.5ms are also possible, which directly increases the frame overhead by transmitting more packets per second to achieve lower latency. In addition, as we'll see below it also reduces the quality/bitrate tradeoff of the CELT layer itself.<br />
<br />
None of the bitrates mentioned in this article account for the packet overhead.<br />
<br />
====CELT layer latency versus quality/bitrate trade-off====<br />
Unlike the SILK layer, which works on fixed 10.0ms blocks, 1, 2 or 6 of which can be combined into an Opus frame, the CELT layer is able to modify the encoding block lengths available to enable its use with shorter frames.<br />
<br />
When the CELT layer uses 10.0ms, 5.0ms and 2.5ms frames instead of the default 20.0ms, it must use smaller transform block sizes to achieve this, thereby reducing frequency resolution in the MDCT compared to the default transform window, thus reducing encoding efficiency for tonal signals. To obtain the same frequency precision for a sound divided into shorter transform windows, improved amplitude precision is necessary, resulting in increased bitrate to obtain the same perceptual quality (or conversely lower quality at the same bitrate).<br />
<br />
These reduced-latency modes remain efficient for transient signals, which use short blocks anyway.<br />
<br />
In all modes, the algorithmic delay consists of the frame size plus an additional 2.5ms delay. The CELT layer requires 2.5ms for MDCT window overlap.<br />
<br />
Xiph.org used matched PEAQ scores (approximate perceptual quality assessment made in software) for the CELT0.10 codec that was used as the basis of the CELT layer in the Opus reference release, which indicate the following [http://people.xiph.org/~xiphmont/demo/celt/demo.html#demo approximate equivalent settings] for stereo music.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
!Frame size<br />
!Algorithmic delay<br />
!Bitrate to match 64kbps@22.5ms delay<br />
!fractional bitrate increase<br />
|-<br />
!20.0 ms<br />
|22.5 ms<br />
|64.0 kbps<br />
|0.0 %<br />
|-<br />
!10.0 ms<br />
|12.5 ms<br />
|70.4 kbps<br />
|10.0 %<br />
|-<br />
!5.0 ms<br />
|7.5 ms<br />
|84.8 kbps<br />
|32.5 %<br />
|-<br />
!2.5 ms<br />
|5.0 ms<br />
|112.0 kbps<br />
|75.0 %<br />
|-<br />
|}<br />
<br />
N.B. This table is useful for interactive streaming only. For music storage & delayed playback or non-interactive streaming, latency reduction is not important and the default 20.0ms frame size is preferable.<br />
<br />
== Hardware & Software Support ==<br />
<br />
Much of this section is based heavily on the Jan 12th 2013 version of the '''Support''' section of the [http://en.wikipedia.org/wiki/Opus_%28audio_format%29 Wikipedia article], which is more likely to be kept updated and to provide links to further information about the supporting platforms.<br />
<br />
The format and algorithms are openly documented and the reference implementation is published as free software. The reference implementation (Opus Audio Tools, opus-tools), consisting of separate encoders and decoders, is published under the terms of a BSD-like license. It is written in C programming language and can be compiled for hardware architectures with or without floating point unit. The accompanying diagnostic tool opusinfo reports detailed technical information about Opus files, including information on the standard compliance of the bitstream format. It is based on ogginfo from the vorbis-tools and therefore, unlike the encoder and decoder, available under the terms of version 2 of the GPL.<br />
<br />
=== Commandline binaries & libopus versions ===<br />
The commandline tools of the reference version are available pre-compiled for the most popular operating systems at [http://opus-codec.org/downloads opus-codec.org] and [https://ftp.mozilla.org/pub/mozilla.org/opus/ Mozilla's ftp server], plus in the foobar2000 free encoders pack and some alternative compiles through the hydrogenaud.io opus forum. The libopus commandline tools include encoder ''opusenc'', decoder ''opusdec'', and with a different license, the ''opusinfo'' opus stream & metadata analyzer.<br />
<br />
The '''latest stable release''' is recommended for general use and as of mid 2014 is considered competitive with or superior to the best alternative speech or general music encoders at most supported bitrates.<br />
<br />
==== libopus v1.0 ====<br />
Released 11 Sep 2012 when RFC6716 was standardized but mostly fully developed by late 2011.<br />
<br />
'''Stable''', '''well-tuned''' ''opusenc'' reference encoder as included in RFC documentation.<br />
<br />
CELT layer closely related to CELT 0.10 implements Constrained VBR mode by default (bitrate boost used mainly for transients), plus true CBR.<br />
<br />
==== libopus v1.1 ==== <br />
<br />
The alpha source code released 21 Dec 2012 for testing & user feedback and following a beta release and testing, the stable 1.1 version was released on 5 December 2013, considered well tested enough for general release.<br />
<br />
CELT layer [http://jmspeex.livejournal.com/11737.html quality improvements] introduced to provide '''unconstrained VBR''' include a rate boost not just for transients but now for highly tonal signals too and rate reduction when stereo image is narrow. There's also a rewrite of its '''transient detection''' code and '''time-frequency analysis''' code, and rewritten '''dynamic allocation''' code (HF/LF tilt and Band Boost) to allow more aggressive changes from the typical static allocation when warranted.<br />
<br />
There are many minor improvements to '''speech quality''' in both SILK and CELT layers.<br />
<br />
'''DC-rejection''' below 3 Hz also aids quality if inaudible DC offset is present with no effect on deep bass notes.<br />
<br />
'''Automatic speech/music detection''' is introduced to optimize encoding mode choices, especially near the bitrate target range (presumably around 24~40kbps) where the encoder may perform best with SILK, hybrid or CELT depending on content type. Below that range SILK performs best for both music & speech, and above it CELT performs best for speech & music. The detection, without look-ahead is not perfect but usually is undecided in audio where either mode will work well.<br />
<br />
'''Automatic bandwidth detection''' is also introduced to save wasted bits allocated to absent frequencies.<br />
<br />
'''Surround sound improvements''' were introduced since the beta release with considerable advances in coding efficiency, bitrate allocation and quality.<br />
<br />
==== libopus v1.1.3 ==== <br />
Released July 15th, 2016. This version contains:<br />
<br />
-Neon optimizations improving performance on ARMv7 and ARMv8 by up to 15%<br />
<br />
-Fixes some issues with 16-bit platforms (e.g. TI C55x)<br />
<br />
-Fixes to comfort noise generation (CNG)<br />
<br />
-Documenting that PLC packets can also be 2 bytes<br />
<br />
-Includes experimental ambisonics work (--enable-ambisonics)<br />
<br />
==== libopus v1.2.1 ==== <br />
Released June 26th, 2017. This version contains:<br />
<br />
-Speech quality improvements especially in the 12-20 kbit/s range<br />
<br />
-Improved VBR encoding for hybrid mode<br />
<br />
-More aggressive use of wider speech bandwidth, including fullband speech starting at 14 kbit/s<br />
<br />
-Music quality improvements in the 32-48 kb/s range<br />
<br />
-Generic and SSE CELT optimizations<br />
<br />
-Support for directly encoding packets up to 120 ms<br />
<br />
-DTX support for CELT mode<br />
<br />
-SILK CBR improvements<br />
<br />
-Support for all of the fixes in draft-ietf-codec-opus-update-06 (the mono downmix and the folding fixes need --enable-update-draft)<br />
<br />
-Many bug fixes, including integer wrap-arounds discovered through fuzzing (no security implications)<br />
<br />
=== Ports ===<br />
<br />
==== Concentus ====<br />
<br />
The libopus reference library (fixed-point variant) has successfully been ported to both '''C#''' and '''Java''', as part of a project called '''Concentus'''. The aim of the project is specifically to target cross-platform applications where native C interop is relatively difficult. The code is available on [https://github.com/lostromb/concentus Github] and distributed via standard package managers.<br />
<br />
==== Emscripten ports ====<br />
<br />
At least one implementation of opus in Javascript has been made using the automated tool [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Emscripten emscripten]. See [https://blog.rillke.com/opusenc.js/ here], [https://github.com/kazuki/opus.js-sample here] and [https://github.com/audiocogs/opus.js here].<br />
<br />
=== VoIP software ===<br />
* The open source virtual PBX Freeswitch supports Opus transcoding.<br />
* The voice-chat software Mumble supports Opus as its main codec.<br />
* SIP softphones Phoner and PhonerLite support Opus<br />
* The SIP and IAX2 client SFLphone is being fitted with Opus support.<br />
* Integration of Opus into the Skype client is finished, although no version with Opus support has yet been published.<br />
* TrueConf video conferencing solutions support Opus.<br />
* Opus support is planned for Jitsi 2.0, together with VP8 video<br />
* Empathy may use any format supported in GStreamer, including Opus.<br />
* Line2 has replaced their current codec with Opus. Their iOS app will be the first to be released with the Opus. The Android app will follow later.<br />
* CSipSimple supports Opus, Codec2, G.726 and G.722.1 with an additional plug-in.<br />
* The voice-chat software TeamSpeak 3 supports Opus for voice and music in pre-release server 3.0.7-pre2 and beta client version 3.0.10<br />
<br />
=== Web frameworks and browsers ===<br />
* Opus support is mandatory for WebRTC implementations.<br />
* Mozilla supports Opus beginning with version 15 of Firefox and Thunderbird, plus Seamonkey, which is uses shared codebase.<br />
* Depending on the backend in use, Opera supports inline playback of embedded Opus files. Official support for Opus and WebRTC are on the development roadmap.<br />
* Chromium and Google Chrome have audio support as of version 33.<br />
* Apple's Safari browser now supports Opus as of iOS 11 and macOS 10.13 High Sierra.<br />
* Maxthon Cloud Browser<br />
<br />
=== Streaming audio ===<br />
* Icecast. (examples: [http://dir.xiph.org/by_format/Opus Stream directory by format Opus], [http://smj.delfa.net/opus_64.m3u 64k]/[http://smj.delfa.net/opus_256.m3u 256k] [http://smj.delfa.net/ Smooth Jazz Opus Stream], [http://www.absoluteradio.co.uk/listen/labs.html Absolute Radio Opus Trial] 7 stations at 24,64,96 kbps, [http://icecast.ofdoom.com:8000/burst-opus.ogg Icecast Of Doom 96k]<br />
* Krad Radio<br />
* Liquidsoap<br />
<br />
=== Operating systems and desktop multimedia frameworks ===<br />
* In Debian GNU/Linux the Opus development tools and supporting libraries can be installed from the preconfigured repositories in the next stable version ("wheezy") that is expected to be released in early 2013.<br />
* For Microsoft Windows, there are DirectShow filters supporting Opus, including DC-Bass Source Mod and the LAV Filters.<br />
* In GStreamer the integration of Opus support is complete.<br />
* FFmpeg supports decoding and encoding Opus via the external library libopus.<br />
* Android 5.0 and above supports Opus natively if encapsulated in the Ogg container, but .opus filename extension is not recognized by Android, so the use of double filename extension .opus.ogg is recommended as a workaround to allow apps to recognize files as playable audio.<br />
<br />
=== Hardware support ===<br />
* Support in [[Rockbox]] is available. This means hardware support for a series of portable media players (including some products from the iPod series by Apple and Sansa, iriver and Archos devices) and with "Rockbox as an Application" (RaaA) also on Android devices.<br />
<br />
=== Player software ===<br />
<br />
* Windows/Mac/Linux (Cross-Platform)<br />
*# [[VLC]] (media player supports Opus as of version 2.0.4 <br />
*#[[Amarok]] 2.8 has transcoding support for Opus codec if ffmpeg is compiled with support for the libopus library & support for playback of Opus encoded files if Amarok is compiled against TagLib (newer than V1.8)<br />
*# Clementine has Opus support<br />
*# Audacious player<br />
*# [[MPD]] as of version 0.18 if compiled against libopus (supports both encoding for http streams and decoding) <br />
<br />
<br />
* Windows Exclusive<br />
*# AIMP supports Opus natively as of version 3.20 build 1125 beta 1<br />
*# [[foobar2000]] supports Opus natively as of v1.1.14 beta 1<br />
*# Mpxplay supports Opus (using a decoder DLL) as of v1.60 alpha 2<br />
*# [[Winamp]] supports Opus using a [http://forums.winamp.com/showthread.php?p=2925154#post2925154 3rd party plug-in]<br />
*# MPC-HC<br />
<br />
<br />
* iOS/Android (Cross-Platform)<br />
*#Capriccio [https://itunes.apple.com/us/app/capriccio-free-ultimate-music/id434829018?mt=8 iOS]/[https://play.google.com/store/apps/details?id=me.ideariboso.capriccio Android]<br />
*#foobar2000 [https://itunes.apple.com/us/app/foobar2000/id1072807669?mt=8 iOS]/[https://play.google.com/store/apps/details?id=com.foobar2000.foobar2000&hl=en Android]<br />
<br />
<br />
* Android Exclusive<br />
*# [http://gonemadmusicplayer.blogspot.com/ GoneMAD Music Player]<br />
*# [http://neutronmp.com/ Neutron Music Player]<br />
*# [http://www.videolan.org/vlc/download-android.html VLC Media Player for Android]<br />
*# [https://play.google.com/store/apps/details?id=ru.recoilme.freeamp FreeMP]<br />
*# [https://play.google.com/store/apps/details?id=net.mderezynski.youki3 Youki]<br />
*# [https://play.google.com/store/apps/details?id=com.aimp.player AIMP for Android]<br />
*# [https://play.google.com/store/apps/details?id=com.acmeandroid.listen Listen Audiobook Player]<br />
*# [https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad MX Player]<br />
*# [https://play.google.com/store/apps/details?id=org.tomahawk.tomahawk_android Tomahawk Player Beta]<br />
*# [https://play.google.com/store/apps/details?id=com.maxmpz.audioplayer&hl=en Poweramp Music Player]<br />
<br />
=== Other software ===<br />
* CDBurnerXP<br />
* MediaCoder<br />
* Report-IT<br />
* [[MP3tag|MP3tag]]<br />
* [http://www.xdlab.ru/en/ TagScanner]<br />
* [http://www.xmedia-recode.de/ XMedia Recode]<br />
<br />
== References & Notes ==<br />
<br />
*{{note|homepage|a}}[http://opus-codec.org/ opus-codec.org homepage]<br />
*{{note|FAQ|b}}[http://wiki.xiph.org/OpusFAQ Opus FAQ]<br />
*{{note|RFC|c}}[http://tools.ietf.org/html/rfc6716 IETF RFC 6716]<br />
<br />
[[Category:Codecs]]<br />
[[Category:Lossy]]<br />
[[Category:Encoder/Decoder]]</div>
47.18.96.45