# HG changeset patch # User aurel # Date 1186874600 0 # Node ID 9c37f7a3ff48336840f52343bc5667253976ee58 # Parent bc4791868c5279c570ff2e556bddc596563c55ec one more simplification diff -r bc4791868c52 -r 9c37f7a3ff48 adpcm.c --- a/adpcm.c Sat Aug 11 23:17:03 2007 +0000 +++ b/adpcm.c Sat Aug 11 23:23:20 2007 +0000 @@ -692,7 +692,6 @@ static inline short adpcm_ct_expand_nibble(ADPCMChannelStatus *c, char nibble) { - int predictor; int sign, delta, diff; int new_step; @@ -702,12 +701,9 @@ * the reference ADPCM implementation since modern CPUs can do the mults * quickly enough */ diff = ((2 * delta + 1) * c->step) >> 3; - predictor = c->predictor; /* predictor update is not so trivial: predictor is multiplied on 254/256 before updating */ - if(sign) - predictor = ((predictor * 254) >> 8) - diff; - else - predictor = ((predictor * 254) >> 8) + diff; + c->predictor = ((c->predictor * 254) >> 8) + (sign ? -diff : diff); + c->predictor = av_clip_int16(c->predictor); /* calculate new step and clamp it to range 511..32767 */ new_step = (ct_adpcm_table[nibble & 7] * c->step) >> 8; c->step = new_step; @@ -716,7 +712,6 @@ if(c->step > 32767) c->step = 32767; - c->predictor = av_clip_int16(predictor); return (short)c->predictor; }