ref: 4667b6992a738683e4b7d6667b9850ca0ee5fd7b
parent: 386883179a68467ec35dd1c481100ad5915081f0
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Thu Oct 20 17:56:24 EDT 2016
updating update draft
--- a/doc/draft-ietf-codec-opus-update.xml
+++ b/doc/draft-ietf-codec-opus-update.xml
@@ -10,7 +10,7 @@
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
-<rfc category="std" docName="draft-ietf-codec-opus-update-03"
+<rfc category="std" docName="draft-ietf-codec-opus-update-04"
ipr="trust200902">
<front>
<title abbrev="Opus Update">Updates to the Opus Audio Codec</title>
@@ -47,7 +47,7 @@
- <date day="1" month="September" year="2016" />
+ <date day="21" month="October" year="2016" />
<abstract>
<t>This document addresses minor issues that were found in the specification
@@ -274,6 +274,26 @@
]]></artwork>
</figure>
+ </section>
+
+ <section title="Cap on Band Energy">
+ <t>On extreme bit-streams, it is possible for log-domain band energy levels
+ to exceed the maximum single-precision floating point value once converted
+ to a linear scale. This would later cause the decoded values to be NaN,
+ possibly causing problems in the software using the PCM values. This can be
+ avoided with the following patch to line 552 of celt/quant_bands.c:
+ </t>
+<figure>
+<artwork><![CDATA[
+ {
+ opus_val16 lg = ADD16(oldEBands[i+c*m->nbEBands],
+ SHL16((opus_val16)eMeans[i],6));
++ lg = MIN32(QCONST32(32.f, 16), lg);
+ eBands[i+c*m->nbEBands] = PSHR32(celt_exp2(lg),4);
+ }
+ for (;i<m->nbEBands;i++)
+]]></artwork>
+</figure>
</section>
<section title="Hybrid Folding" anchor="folding">