Mercurial > libavcodec.hg
comparison g726.c @ 7069:92bcfa9ba977 libavcodec
Factorize I >> (c->tbls->bits - 1) out.
author | michael |
---|---|
date | Thu, 19 Jun 2008 10:29:36 +0000 |
parents | 4630168a70d5 |
children | 3e197f8ee6c6 |
comparison
equal
deleted
inserted
replaced
7068:6497251e2fde | 7069:92bcfa9ba977 |
---|---|
186 | 186 |
187 static int16_t g726_decode(G726Context* c, int16_t I) | 187 static int16_t g726_decode(G726Context* c, int16_t I) |
188 { | 188 { |
189 int dq, re_signal, pk0, fa1, i, tr, ylint, ylfrac, thr2, al, dq0; | 189 int dq, re_signal, pk0, fa1, i, tr, ylint, ylfrac, thr2, al, dq0; |
190 Float11 f; | 190 Float11 f; |
191 int I_sig= I >> (c->tbls->bits - 1); | |
191 | 192 |
192 dq = inverse_quant(c, I); | 193 dq = inverse_quant(c, I); |
193 | 194 |
194 /* Transition detect */ | 195 /* Transition detect */ |
195 ylint = (c->yl >> 15); | 196 ylint = (c->yl >> 15); |
196 ylfrac = (c->yl >> 10) & 0x1f; | 197 ylfrac = (c->yl >> 10) & 0x1f; |
197 thr2 = (ylint > 9) ? 0x1f << 10 : (0x20 + ylfrac) << ylint; | 198 thr2 = (ylint > 9) ? 0x1f << 10 : (0x20 + ylfrac) << ylint; |
198 tr= (c->td == 1 && dq > ((3*thr2)>>2)); | 199 tr= (c->td == 1 && dq > ((3*thr2)>>2)); |
199 | 200 |
200 if (I >> (c->tbls->bits - 1)) /* get the sign */ | 201 if (I_sig) /* get the sign */ |
201 dq = -dq; | 202 dq = -dq; |
202 re_signal = c->se + dq; | 203 re_signal = c->se + dq; |
203 | 204 |
204 /* Update second order predictor coefficient A2 and A1 */ | 205 /* Update second order predictor coefficient A2 and A1 */ |
205 pk0 = (c->sez + dq) ? sgn(c->sez + dq) : 0; | 206 pk0 = (c->sez + dq) ? sgn(c->sez + dq) : 0; |
228 c->sr[1] = c->sr[0]; | 229 c->sr[1] = c->sr[0]; |
229 i2f(re_signal, &c->sr[0]); | 230 i2f(re_signal, &c->sr[0]); |
230 for (i=5; i>0; i--) | 231 for (i=5; i>0; i--) |
231 c->dq[i] = c->dq[i-1]; | 232 c->dq[i] = c->dq[i-1]; |
232 i2f(dq, &c->dq[0]); | 233 i2f(dq, &c->dq[0]); |
233 c->dq[0].sign = I >> (c->tbls->bits - 1); /* Isn't it crazy ?!?! */ | 234 c->dq[0].sign = I_sig; /* Isn't it crazy ?!?! */ |
234 | 235 |
235 c->td = c->a[1] < -11776; | 236 c->td = c->a[1] < -11776; |
236 | 237 |
237 /* Update Ap */ | 238 /* Update Ap */ |
238 c->dms += ((c->tbls->F[I]<<9) - c->dms) >> 5; | 239 c->dms += ((c->tbls->F[I]<<9) - c->dms) >> 5; |