mirror of
https://github.com/xiph/opus.git
synced 2025-06-02 08:37:43 +00:00
log2_frac optimization from Simon Hosie back in Aug 2011.
This commit is contained in:
parent
b0c120b214
commit
66d429ab53
1 changed files with 3 additions and 2 deletions
|
@ -48,8 +48,9 @@ int log2_frac(opus_uint32 val, int frac)
|
|||
l=EC_ILOG(val);
|
||||
if(val&(val-1)){
|
||||
/*This is (val>>l-16), but guaranteed to round up, even if adding a bias
|
||||
before the shift would cause overflow (e.g., for 0xFFFFxxxx).*/
|
||||
if(l>16)val=(val>>(l-16))+(((val&((1<<(l-16))-1))+(1<<(l-16))-1)>>(l-16));
|
||||
before the shift would cause overflow (e.g., for 0xFFFFxxxx).
|
||||
Doesn't work for val=0, but that case fails the test above.*/
|
||||
if(l>16)val=((val-1)>>(l-16))+1;
|
||||
else val<<=16-l;
|
||||
l=(l-1)<<frac;
|
||||
/*Note that we always need one iteration, since the rounding up above means
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue