1
0
mirror of https://github.com/mstorsjo/fdk-aac.git synced 2025-06-05 22:39:13 +02:00

Merge remote-tracking branch 'aosp/master'

This commit is contained in:
Martin Storsjo
2018-11-06 09:03:05 +02:00

View File

@ -127,9 +127,11 @@ amm-info@iis.fraunhofer.de
The function reads the escape sequence from the bitstream, The function reads the escape sequence from the bitstream,
if the absolute value of the quantized coefficient has the if the absolute value of the quantized coefficient has the
value 16. value 16.
A limitation is implemented to maximal 31 bits to prevent endless loops. A limitation is implemented to maximal 21 bits according to
If it strikes, MAX_QUANTIZED_VALUE + 1 is returned, independent of the sign of ISO/IEC 14496-3:2009(E) 4.6.3.3.
parameter q. This limits the escape prefix to a maximum of eight 1's.
If more than eight 1's are read, MAX_QUANTIZED_VALUE + 1 is
returned, independent of the sign of parameter q.
\return quantized coefficient \return quantized coefficient
*/ */
@ -139,12 +141,11 @@ LONG CBlock_GetEscape(HANDLE_FDK_BITSTREAM bs, /*!< pointer to bitstream */
if (fAbs(q) != 16) return (q); if (fAbs(q) != 16) return (q);
LONG i, off; LONG i, off;
for (i = 4; i < 32; i++) { for (i = 4; i < 13; i++) {
if (FDKreadBit(bs) == 0) break; if (FDKreadBit(bs) == 0) break;
} }
/* (1 << i) will shift into the sign bit if i >= 31 */ if (i == 13) return (MAX_QUANTIZED_VALUE + 1);
if (i >= 31) return (MAX_QUANTIZED_VALUE + 1);
off = FDKreadBits(bs, i); off = FDKreadBits(bs, i);
i = off + (1 << i); i = off + (1 << i);