ref: cf5d3a8cf28d18145424f555b0060e4e9465b1da
parent: 51c786241b1977c7d67e88d24bbae35c4775bf79
author: Timothy B. Terriberry <[email protected]>
date: Wed Feb 2 06:42:33 EST 2011
Fix short length detection. aa6fec66 added a check to reject modes with shorts longer than 3.33 ms (less than 300 per second). However, it only rejected modes which could not be split at all. This expands the check to also reject modes which, even after splitting the maximum amount, still do not have shorts less than 3.33 ms.
--- a/libcelt/modes.c
+++ b/libcelt/modes.c
@@ -323,12 +323,13 @@
} else if ((celt_int32)frame_size*300 >= Fs && (frame_size%4)==0)
{
LM = 1;
- } else if ((celt_int32)frame_size*300 <= Fs)
+ } else
{
LM = 0;
}
+
/* Shorts longer than 3.3ms are not supported. */
- else
+ if ((celt_int32)(frame_size>>LM)*300 > Fs)
{
if (error)
*error = CELT_INVALID_MODE;