43 int16_t *
block,
int n,
int qscale)
48 qadd = (qscale - 1) | 1;
63 nCoeffs =
s->intra_scantable.raster_end[
s->block_last_index[n]];
67 nCoeffs =
s->inter_scantable.raster_end[
s->block_last_index[n]];
71 register const vector
signed short vczero = (
const vector
signed short)vec_splat_s16(0);
74 register vector
signed short blockv, qmulv, qaddv, nqaddv, temp1;
75 register vector
bool short blockv_null, blockv_neg;
76 register short backup_0 =
block[0];
78 qmulv = vec_splat((
vec_s16)vec_lde(0, &qmul8), 0);
79 qaddv = vec_splat((
vec_s16)vec_lde(0, &qadd8), 0);
80 nqaddv = vec_sub(vczero, qaddv);
84 for (
register int j = 0; j <= nCoeffs ; j += 8) {
85 blockv = vec_ld(j << 1,
block);
86 blockv_neg = vec_cmplt(blockv, vczero);
87 blockv_null = vec_cmpeq(blockv, vczero);
89 temp1 = vec_sel(qaddv, nqaddv, blockv_neg);
91 temp1 = vec_mladd(blockv, qmulv, temp1);
93 blockv = vec_sel(temp1, blockv, blockv_null);
94 vec_st(blockv, j << 1,
block);
112 s->dct_unquantize_h263_intra = dct_unquantize_h263_altivec;
113 s->dct_unquantize_h263_inter = dct_unquantize_h263_altivec;