diff options
-rw-r--r-- | doc/draft-ietf-codec-opus-update.xml | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/doc/draft-ietf-codec-opus-update.xml b/doc/draft-ietf-codec-opus-update.xml index 767f4f98..f4c2e817 100644 --- 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 @@ -276,6 +276,26 @@ silk_ADD_SAT16( NLSF_Q15[i-1], NDeltaMin_Q15[i] ) ); </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"> <t>When encoding in hybrid mode at low bitrate, we sometimes only have enough bits to code a single CELT band (8 - 9.6 kHz). When that happens, |