Updates to the Opus Audio Codec
RFC 8251

Document Type RFC - Proposed Standard (October 2017; No errata)
Updates RFC 6716
Last updated 2017-10-20
Replaces draft-valin-codec-opus-update
Stream IETF
Formats plain text pdf html bibtex
Reviews
Stream WG state Submitted to IESG for Publication (wg milestone: Feb 2017 - Error and bugfix upd... )
Document shepherd Tim Terriberry
Shepherd write-up Show (last changed 2017-07-21)
IESG IESG state RFC 8251 (Proposed Standard)
Consensus Boilerplate Yes
Telechat date
Responsible AD Ben Campbell
Send notices to Tim Terriberry <tterriberry@mozilla.com>
IANA IANA review state Version Changed - Review Needed
IANA action state No IC
Internet Engineering Task Force (IETF)                         JM. Valin
Request for Comments: 8251                           Mozilla Corporation
Updates: 6716                                                     K. Vos
Category: Standards Track                                        vocTone
ISSN: 2070-1721                                             October 2017

                    Updates to the Opus Audio Codec

Abstract

   This document addresses minor issues that were found in the
   specification of the Opus audio codec in RFC 6716.  It updates the
   normative decoder implementation included in Appendix A of RFC 6716.
   The changes fix real and potential security-related issues, as well
   as minor quality-related issues.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   https://www.rfc-editor.org/info/rfc8251.

Copyright Notice

   Copyright (c) 2017 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Valin & Vos                  Standards Track                    [Page 1]
RFC 8251                       Opus Update                  October 2017

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Stereo State Reset in SILK  . . . . . . . . . . . . . . . . .   3
   4.  Parsing of the Opus Packet Padding  . . . . . . . . . . . . .   4
   5.  Resampler Buffer  . . . . . . . . . . . . . . . . . . . . . .   4
   6.  Integer Wrap-Around in Inverse Gain Computation . . . . . . .   6
   7.  Integer Wrap-Around in LSF Decoding . . . . . . . . . . . . .   7
   8.  Cap on Band Energy  . . . . . . . . . . . . . . . . . . . . .   7
   9.  Hybrid Folding  . . . . . . . . . . . . . . . . . . . . . . .   8
   10. Downmix to Mono . . . . . . . . . . . . . . . . . . . . . . .   9
   11. New Test Vectors  . . . . . . . . . . . . . . . . . . . . . .   9
   12. Security Considerations . . . . . . . . . . . . . . . . . . .  11
   13. IANA Considerations . . . . . . . . . . . . . . . . . . . . .  11
   14. Normative References  . . . . . . . . . . . . . . . . . . . .  11
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  11
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  12

1.  Introduction

   This document addresses minor issues that were discovered in the
   reference implementation of the Opus codec.  Unlike most IETF
   specifications, RFC 6716 [RFC6716] defines Opus in terms of a
   normative reference decoder implementation rather than from the
   associated text description.  Appendix A of that RFC includes the
   reference decoder implementation, which is why only issues affecting
   the decoder are listed here.  An up-to-date implementation of the
   Opus encoder can be found at <https://opus-codec.org/>.

   Some of the changes in this document update normative behavior in a
   way that requires new test vectors.  Only the C implementation is
   affected, not the English text of the specification.  This
   specification remains fully compatible with RFC 6716 [RFC6716].

   Note: Due to RFC formatting conventions, lines exceeding the column
   width in the patch are split using a backslash character.  The
   backslashes at the end of a line and the white space at the beginning
   of the following line are not part of the patch.  Referenced line
   numbers are approximations.  A properly formatted patch including all
   changes is available at <https://www.ietf.org/proceedings/98/slides/
   materials-98-codec-opus-update-00.patch> and has a SHA-1 hash of
   029e3aa88fc342c91e67a21e7bfbc9458661cd5f.

Valin & Vos                  Standards Track                    [Page 2]
Show full document text