dsputil: Split off IDCT bits into their own context
This commit is contained in:
@@ -110,11 +110,11 @@ static inline void restore_ac_coeffs(MpegEncContext *s, int16_t block[6][64],
|
||||
if (dir[n]) {
|
||||
/* top prediction */
|
||||
for (i = 1; i < 8; i++)
|
||||
block[n][s->dsp.idct_permutation[i]] = ac_val[i + 8];
|
||||
block[n][s->idsp.idct_permutation[i]] = ac_val[i + 8];
|
||||
} else {
|
||||
/* left prediction */
|
||||
for (i = 1; i < 8; i++)
|
||||
block[n][s->dsp.idct_permutation[i << 3]] = ac_val[i];
|
||||
block[n][s->idsp.idct_permutation[i << 3]] = ac_val[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -152,17 +152,17 @@ static inline int decide_ac_pred(MpegEncContext *s, int16_t block[6][64],
|
||||
if (s->mb_y == 0 || s->qscale == qscale_table[xy] || n == 2 || n == 3) {
|
||||
/* same qscale */
|
||||
for (i = 1; i < 8; i++) {
|
||||
const int level = block[n][s->dsp.idct_permutation[i]];
|
||||
block[n][s->dsp.idct_permutation[i]] = level - ac_val[i + 8];
|
||||
ac_val1[i] = block[n][s->dsp.idct_permutation[i << 3]];
|
||||
const int level = block[n][s->idsp.idct_permutation[i]];
|
||||
block[n][s->idsp.idct_permutation[i]] = level - ac_val[i + 8];
|
||||
ac_val1[i] = block[n][s->idsp.idct_permutation[i << 3]];
|
||||
ac_val1[i + 8] = level;
|
||||
}
|
||||
} else {
|
||||
/* different qscale, we must rescale */
|
||||
for (i = 1; i < 8; i++) {
|
||||
const int level = block[n][s->dsp.idct_permutation[i]];
|
||||
block[n][s->dsp.idct_permutation[i]] = level - ROUNDED_DIV(ac_val[i + 8] * qscale_table[xy], s->qscale);
|
||||
ac_val1[i] = block[n][s->dsp.idct_permutation[i << 3]];
|
||||
const int level = block[n][s->idsp.idct_permutation[i]];
|
||||
block[n][s->idsp.idct_permutation[i]] = level - ROUNDED_DIV(ac_val[i + 8] * qscale_table[xy], s->qscale);
|
||||
ac_val1[i] = block[n][s->idsp.idct_permutation[i << 3]];
|
||||
ac_val1[i + 8] = level;
|
||||
}
|
||||
}
|
||||
@@ -174,18 +174,18 @@ static inline int decide_ac_pred(MpegEncContext *s, int16_t block[6][64],
|
||||
if (s->mb_x == 0 || s->qscale == qscale_table[xy] || n == 1 || n == 3) {
|
||||
/* same qscale */
|
||||
for (i = 1; i < 8; i++) {
|
||||
const int level = block[n][s->dsp.idct_permutation[i << 3]];
|
||||
block[n][s->dsp.idct_permutation[i << 3]] = level - ac_val[i];
|
||||
const int level = block[n][s->idsp.idct_permutation[i << 3]];
|
||||
block[n][s->idsp.idct_permutation[i << 3]] = level - ac_val[i];
|
||||
ac_val1[i] = level;
|
||||
ac_val1[i + 8] = block[n][s->dsp.idct_permutation[i]];
|
||||
ac_val1[i + 8] = block[n][s->idsp.idct_permutation[i]];
|
||||
}
|
||||
} else {
|
||||
/* different qscale, we must rescale */
|
||||
for (i = 1; i < 8; i++) {
|
||||
const int level = block[n][s->dsp.idct_permutation[i << 3]];
|
||||
block[n][s->dsp.idct_permutation[i << 3]] = level - ROUNDED_DIV(ac_val[i] * qscale_table[xy], s->qscale);
|
||||
const int level = block[n][s->idsp.idct_permutation[i << 3]];
|
||||
block[n][s->idsp.idct_permutation[i << 3]] = level - ROUNDED_DIV(ac_val[i] * qscale_table[xy], s->qscale);
|
||||
ac_val1[i] = level;
|
||||
ac_val1[i + 8] = block[n][s->dsp.idct_permutation[i]];
|
||||
ac_val1[i + 8] = block[n][s->idsp.idct_permutation[i]];
|
||||
}
|
||||
}
|
||||
st[n] = s->intra_v_scantable.permutated;
|
||||
|
||||
Reference in New Issue
Block a user