45 qadd = (qscale - 1) | 1;
64 register const vector
signed short vczero = (
const vector
signed short)vec_splat_s16(0);
67 register vector
signed short blockv, qmulv, qaddv, nqaddv, temp1;
68 register vector
bool short blockv_null, blockv_neg;
69 register short backup_0 = block[0];
72 qmulv = vec_splat((
vec_s16)vec_lde(0, &qmul8), 0);
73 qaddv = vec_splat((
vec_s16)vec_lde(0, &qadd8), 0);
74 nqaddv = vec_sub(vczero, qaddv);
78 for(; (j + 7) <= nCoeffs ; j+=8) {
79 blockv = vec_ld(j << 1, block);
80 blockv_neg = vec_cmplt(blockv, vczero);
81 blockv_null = vec_cmpeq(blockv, vczero);
83 temp1 = vec_sel(qaddv, nqaddv, blockv_neg);
85 temp1 = vec_mladd(blockv, qmulv, temp1);
87 blockv = vec_sel(temp1, blockv, blockv_null);
88 vec_st(blockv, j << 1, block);
95 for(; j <= nCoeffs ; j++) {
99 level = level * qmul - qadd;
101 level = level * qmul + qadd;
#define AV_CPU_FLAG_ALTIVEC
standard
static void dct_unquantize_h263_altivec(MpegEncContext *s, int16_t *block, int n, int qscale)
int dct_algo
DCT algorithm, see FF_DCT_* below.
void(* dct_unquantize_h263_inter)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
#define DECLARE_ALIGNED(n, t, v)
int h263_aic
Advanded INTRA Coding (AIC)
Macro definitions for various function/variable attributes.
av_cold void ff_MPV_common_init_altivec(MpegEncContext *s)
int block_last_index[12]
last non zero coefficient in block
FIXME Range Coding of cr are level
ScanTable intra_scantable
synthesis window for stochastic i
void(* dct_unquantize_h263_intra)(struct MpegEncContext *s, int16_t *block, int n, int qscale)
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
Contains misc utility macros and inline functions.
struct AVCodecContext * avctx
int16_t(* block)[64]
points to one of the following blocks