adpcmenc:Optimize adpcm_ima_qt_compress_sample()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
35d3d44a84
commit
af3c8f8230
@ -274,24 +274,27 @@ static inline unsigned char adpcm_ima_compress_sample(ADPCMChannelStatus *c, sho
|
|||||||
static inline unsigned char adpcm_ima_qt_compress_sample(ADPCMChannelStatus *c, short sample)
|
static inline unsigned char adpcm_ima_qt_compress_sample(ADPCMChannelStatus *c, short sample)
|
||||||
{
|
{
|
||||||
int delta = sample - c->prev_sample;
|
int delta = sample - c->prev_sample;
|
||||||
int mask, step = step_table[c->step_index];
|
int diff, step = step_table[c->step_index];
|
||||||
int diff = step >> 3;
|
int nibble = 8*(delta < 0);
|
||||||
int nibble = 0;
|
|
||||||
|
|
||||||
if (delta < 0) {
|
delta= abs(delta);
|
||||||
nibble = 8;
|
diff = delta + (step >> 3);
|
||||||
delta = -delta;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (mask = 4; mask;) {
|
if (delta >= step) {
|
||||||
if (delta >= step) {
|
nibble |= 4;
|
||||||
nibble |= mask;
|
delta -= step;
|
||||||
delta -= step;
|
|
||||||
diff += step;
|
|
||||||
}
|
|
||||||
step >>= 1;
|
|
||||||
mask >>= 1;
|
|
||||||
}
|
}
|
||||||
|
step >>= 1;
|
||||||
|
if (delta >= step) {
|
||||||
|
nibble |= 2;
|
||||||
|
delta -= step;
|
||||||
|
}
|
||||||
|
step >>= 1;
|
||||||
|
if (delta >= step) {
|
||||||
|
nibble |= 1;
|
||||||
|
delta -= step;
|
||||||
|
}
|
||||||
|
diff -= delta;
|
||||||
|
|
||||||
if (nibble & 8)
|
if (nibble & 8)
|
||||||
c->prev_sample -= diff;
|
c->prev_sample -= diff;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user