138 |
|
|
139 |
/* Quantize the block */ |
/* Quantize the block */ |
140 |
start_timer(); |
start_timer(); |
141 |
quant[mpeg](&data[0 * 64], &qcoeff[0 * 64], pMB->quant, scaler_lum); |
quant[mpeg](&data[0 * 64], &qcoeff[0 * 64], pMB->quant, scaler_lum, pParam->mpeg_quant_matrices); |
142 |
quant[mpeg](&data[1 * 64], &qcoeff[1 * 64], pMB->quant, scaler_lum); |
quant[mpeg](&data[1 * 64], &qcoeff[1 * 64], pMB->quant, scaler_lum, pParam->mpeg_quant_matrices); |
143 |
quant[mpeg](&data[2 * 64], &qcoeff[2 * 64], pMB->quant, scaler_lum); |
quant[mpeg](&data[2 * 64], &qcoeff[2 * 64], pMB->quant, scaler_lum, pParam->mpeg_quant_matrices); |
144 |
quant[mpeg](&data[3 * 64], &qcoeff[3 * 64], pMB->quant, scaler_lum); |
quant[mpeg](&data[3 * 64], &qcoeff[3 * 64], pMB->quant, scaler_lum, pParam->mpeg_quant_matrices); |
145 |
quant[mpeg](&data[4 * 64], &qcoeff[4 * 64], pMB->quant, scaler_chr); |
quant[mpeg](&data[4 * 64], &qcoeff[4 * 64], pMB->quant, scaler_chr, pParam->mpeg_quant_matrices); |
146 |
quant[mpeg](&data[5 * 64], &qcoeff[5 * 64], pMB->quant, scaler_chr); |
quant[mpeg](&data[5 * 64], &qcoeff[5 * 64], pMB->quant, scaler_chr, pParam->mpeg_quant_matrices); |
147 |
stop_quant_timer(); |
stop_quant_timer(); |
148 |
} |
} |
149 |
|
|
168 |
scaler_chr = get_dc_scaler(iQuant, 0); |
scaler_chr = get_dc_scaler(iQuant, 0); |
169 |
|
|
170 |
start_timer(); |
start_timer(); |
171 |
dequant[mpeg](&qcoeff[0 * 64], &data[0 * 64], iQuant, scaler_lum); |
dequant[mpeg](&qcoeff[0 * 64], &data[0 * 64], iQuant, scaler_lum, pParam->mpeg_quant_matrices); |
172 |
dequant[mpeg](&qcoeff[1 * 64], &data[1 * 64], iQuant, scaler_lum); |
dequant[mpeg](&qcoeff[1 * 64], &data[1 * 64], iQuant, scaler_lum, pParam->mpeg_quant_matrices); |
173 |
dequant[mpeg](&qcoeff[2 * 64], &data[2 * 64], iQuant, scaler_lum); |
dequant[mpeg](&qcoeff[2 * 64], &data[2 * 64], iQuant, scaler_lum, pParam->mpeg_quant_matrices); |
174 |
dequant[mpeg](&qcoeff[3 * 64], &data[3 * 64], iQuant, scaler_lum); |
dequant[mpeg](&qcoeff[3 * 64], &data[3 * 64], iQuant, scaler_lum, pParam->mpeg_quant_matrices); |
175 |
dequant[mpeg](&qcoeff[4 * 64], &data[4 * 64], iQuant, scaler_chr); |
dequant[mpeg](&qcoeff[4 * 64], &data[4 * 64], iQuant, scaler_chr, pParam->mpeg_quant_matrices); |
176 |
dequant[mpeg](&qcoeff[5 * 64], &data[5 * 64], iQuant, scaler_chr); |
dequant[mpeg](&qcoeff[5 * 64], &data[5 * 64], iQuant, scaler_chr, pParam->mpeg_quant_matrices); |
177 |
stop_iquant_timer(); |
stop_iquant_timer(); |
178 |
} |
} |
179 |
|
|
214 |
/* Quantize the block */ |
/* Quantize the block */ |
215 |
start_timer(); |
start_timer(); |
216 |
|
|
217 |
sum = quant[mpeg](&qcoeff[i*64], &data[i*64], pMB->quant); |
sum = quant[mpeg](&qcoeff[i*64], &data[i*64], pMB->quant, pParam->mpeg_quant_matrices); |
218 |
|
|
219 |
if(sum && (frame->vop_flags & XVID_VOP_TRELLISQUANT)) { |
if(sum && (frame->vop_flags & XVID_VOP_TRELLISQUANT)) { |
220 |
|
const uint16_t *matrix; |
221 |
const static uint16_t h263matrix[] = |
const static uint16_t h263matrix[] = |
222 |
{ |
{ |
223 |
16, 16, 16, 16, 16, 16, 16, 16, |
16, 16, 16, 16, 16, 16, 16, 16, |
229 |
16, 16, 16, 16, 16, 16, 16, 16, |
16, 16, 16, 16, 16, 16, 16, 16, |
230 |
16, 16, 16, 16, 16, 16, 16, 16 |
16, 16, 16, 16, 16, 16, 16, 16 |
231 |
}; |
}; |
232 |
|
|
233 |
|
matrix = (mpeg)?get_inter_matrix(pParam->mpeg_quant_matrices):h263matrix; |
234 |
sum = dct_quantize_trellis_c(&qcoeff[i*64], &data[i*64], |
sum = dct_quantize_trellis_c(&qcoeff[i*64], &data[i*64], |
235 |
pMB->quant, &scan_tables[0][0], |
pMB->quant, &scan_tables[0][0], |
236 |
(mpeg)?(uint16_t*)get_inter_matrix():h263matrix, |
matrix, |
237 |
63); |
63); |
238 |
} |
} |
239 |
stop_quant_timer(); |
stop_quant_timer(); |
284 |
mpeg = !!(pParam->vol_flags & XVID_VOL_MPEGQUANT); |
mpeg = !!(pParam->vol_flags & XVID_VOL_MPEGQUANT); |
285 |
|
|
286 |
start_timer(); |
start_timer(); |
287 |
if(cbp & (1 << (5 - 0))) dequant[mpeg](&data[0 * 64], &qcoeff[0 * 64], iQuant); |
if(cbp & (1 << (5 - 0))) dequant[mpeg](&data[0 * 64], &qcoeff[0 * 64], iQuant, pParam->mpeg_quant_matrices); |
288 |
if(cbp & (1 << (5 - 1))) dequant[mpeg](&data[1 * 64], &qcoeff[1 * 64], iQuant); |
if(cbp & (1 << (5 - 1))) dequant[mpeg](&data[1 * 64], &qcoeff[1 * 64], iQuant, pParam->mpeg_quant_matrices); |
289 |
if(cbp & (1 << (5 - 2))) dequant[mpeg](&data[2 * 64], &qcoeff[2 * 64], iQuant); |
if(cbp & (1 << (5 - 2))) dequant[mpeg](&data[2 * 64], &qcoeff[2 * 64], iQuant, pParam->mpeg_quant_matrices); |
290 |
if(cbp & (1 << (5 - 3))) dequant[mpeg](&data[3 * 64], &qcoeff[3 * 64], iQuant); |
if(cbp & (1 << (5 - 3))) dequant[mpeg](&data[3 * 64], &qcoeff[3 * 64], iQuant, pParam->mpeg_quant_matrices); |
291 |
if(cbp & (1 << (5 - 4))) dequant[mpeg](&data[4 * 64], &qcoeff[4 * 64], iQuant); |
if(cbp & (1 << (5 - 4))) dequant[mpeg](&data[4 * 64], &qcoeff[4 * 64], iQuant, pParam->mpeg_quant_matrices); |
292 |
if(cbp & (1 << (5 - 5))) dequant[mpeg](&data[5 * 64], &qcoeff[5 * 64], iQuant); |
if(cbp & (1 << (5 - 5))) dequant[mpeg](&data[5 * 64], &qcoeff[5 * 64], iQuant, pParam->mpeg_quant_matrices); |
293 |
stop_iquant_timer(); |
stop_iquant_timer(); |
294 |
} |
} |
295 |
|
|