From XiphWiki
Revision as of 08:13, 24 May 2012 by Jmspeex (talk | contribs)

Jump to: navigation, search

Is the SILK part of Opus compatible with the SILK implementation shipped in Skype?

No. The SILK codec, as submitted by Skype to the IETF was heavily modified as part of its integration within Opus. The modifications are significant enough that it is not possible to just write a "translator" and even sharing code between Opus and the "old SILK" would be highly non-trivial.

What is Opus Custom?

Opus Custom is an optional part of the Opus standard that allows for sampling rates other than 8, 12, 16, 24, 48 kHz and frame sizes other than multiples of 2.5 ms. Opus Custom requires additional out-of-band signalling that Opus does not normally require. Also, because it is an optional part of the specification, using Opus Custom may lead to compatibility problems. For these reasons, its use is discouraged outside of very specific applications, e.g.:

  • ultra low delay applications where synchronization with the soundcard buffer is important.
  • low-power embedded applications where compatibility with others is not important.

For almost all other types of applications, Opus Custom should not be used.

How do I use 44.1 kHz or some other sampling rate not supported by Opus?

In the vast majority of cases, the best way to support other sampling rates is to perform sample rate conversion to 48 kHz. Only in some very specific circumstances should Opus custom be used.

What are the licensing requirements?

The Opus source code is released under the BSD license, which is a very permissive Open Source license. Commercial use and distribution (including in proprietary software) is permitted, provided that some conditions specified in the license are met.

Opus is also covered by some patents, for which free usage rights are granted, under conditions that the authors believe are compatible with most (all?) open source licenses, including the GPL (v2 and v3).

How does the quality of Opus compare to <insert other codec>?

Which implementation should I get?