[cvs] / xvidcore / src / decoder.c Repository:
ViewVC logotype

Diff of /xvidcore/src/decoder.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.58, Mon May 31 21:36:23 2004 UTC revision 1.61, Sat Jul 10 17:49:31 2004 UTC
# Line 303  Line 303 
303    
304                  start_timer();                  start_timer();
305                  predict_acdc(dec->mbs, x_pos, y_pos, dec->mb_width, i, &block[i * 64],                  predict_acdc(dec->mbs, x_pos, y_pos, dec->mb_width, i, &block[i * 64],
306                                           iQuant, iDcScaler, predictors, bound, dec->bs_version);                                           iQuant, iDcScaler, predictors, bound);
307                  if (!acpred_flag) {                  if (!acpred_flag) {
308                          pMB->acpred_directions[i] = 0;                          pMB->acpred_directions[i] = 0;
309                  }                  }
# Line 339  Line 339 
339                  stop_coding_timer();                  stop_coding_timer();
340    
341                  start_timer();                  start_timer();
342                  add_acdc(pMB, i, &block[i * 64], iDcScaler, predictors);                  add_acdc(pMB, i, &block[i * 64], iDcScaler, predictors, dec->bs_version);
343                  stop_prediction_timer();                  stop_prediction_timer();
344    
345                  start_timer();                  start_timer();
# Line 393  Line 393 
393                                  const int reduced_resolution,                                  const int reduced_resolution,
394                                  const MACROBLOCK * pMB)                                  const MACROBLOCK * pMB)
395  {  {
         DECLARE_ALIGNED_MATRIX(block, 1, 64, int16_t, CACHE_LINE);  
396          DECLARE_ALIGNED_MATRIX(data, 6, 64, int16_t, CACHE_LINE);          DECLARE_ALIGNED_MATRIX(data, 6, 64, int16_t, CACHE_LINE);
397    
398          int stride = dec->edged_width;          int stride = dec->edged_width;
# Line 402  Line 401 
401          int i;          int i;
402          const uint32_t iQuant = pMB->quant;          const uint32_t iQuant = pMB->quant;
403          const int direction = dec->alternate_vertical_scan ? 2 : 0;          const int direction = dec->alternate_vertical_scan ? 2 : 0;
404          const quant_interFuncPtr dequant = dec->quant_type == 0 ? dequant_h263_inter : dequant_mpeg_inter;          typedef void (*get_inter_block_function_t)(
405                            Bitstream * bs,
406                            int16_t * block,
407                            int direction,
408                            const int quant,
409                            const uint16_t *matrix);
410    
411            const get_inter_block_function_t get_inter_block = (dec->quant_type == 0)
412                    ? get_inter_block_h263
413                    : get_inter_block_mpeg;
414    
415            memset(&data[0], 0, 6*64*sizeof(int16_t));      /* clear */
416    
417          for (i = 0; i < 6; i++) {          for (i = 0; i < 6; i++) {
418    
419                  if (cbp & (1 << (5 - i))) {     /* coded */                  if (cbp & (1 << (5 - i))) {     /* coded */
420    
                         memset(block, 0, 64 * sizeof(int16_t)); /* clear */  
421    
422                            /* Decode coeffs and dequantize on the fly */
423                          start_timer();                          start_timer();
424                          get_inter_block(bs, block, direction);                          get_inter_block(bs, &data[i*64], direction, iQuant, get_inter_matrix(dec->mpeg_quant_matrices));
425                          stop_coding_timer();                          stop_coding_timer();
426    
427                          start_timer();                          start_timer();
                         dequant(&data[i * 64], block, iQuant, dec->mpeg_quant_matrices);  
                         stop_iquant_timer();  
   
                         start_timer();  
428                          idct(&data[i * 64]);                          idct(&data[i * 64]);
429                          stop_idct_timer();                          stop_idct_timer();
430                  }                  }
# Line 1573  Line 1579 
1579    
1580                  if (dec->low_delay) {                  if (dec->low_delay) {
1581                          DPRINTF(XVID_DEBUG_ERROR, "warning: bvop found in low_delay==1 stream\n");                          DPRINTF(XVID_DEBUG_ERROR, "warning: bvop found in low_delay==1 stream\n");
1582                          dec->low_delay = 1;                          dec->low_delay = 0;
1583                  }                  }
1584    
1585                  if (dec->frames < 2) {                  if (dec->frames < 2) {

Legend:
Removed from v.1.58  
changed lines
  Added in v.1.61

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4