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.
This commit is contained in:
Timothy B. Terriberry 2011-02-02 11:42:33 -08:00 committed by Jean-Marc Valin
parent 51c786241b
commit cf5d3a8cf2

View file

@ -323,12 +323,13 @@ CELTMode *celt_mode_create(celt_int32 Fs, int frame_size, int *error)
} 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;