# HG changeset patch # User michael # Date 1073012554 0 # Node ID da5d64a0fa02f6db60168fe12ba4e18c1804575b # Parent 88a2c6cc45f4cfba68d2d3d1c88b84b14e1f0b47 cleanup diff -r 88a2c6cc45f4 -r da5d64a0fa02 mpegvideo.c --- a/mpegvideo.c Fri Jan 02 02:39:05 2004 +0000 +++ b/mpegvideo.c Fri Jan 02 03:02:34 2004 +0000 @@ -4758,41 +4758,28 @@ for(i=0; i<=last_non_zero - start_i; i++){ int level_index, run, j; - const int dct_coeff= block[ scantable[i + start_i] ]; + const int dct_coeff= ABS(block[ scantable[i + start_i] ]); const int zero_distoration= dct_coeff*dct_coeff; int best_score=256*256*256*120; for(level_index=0; level_index < coeff_count[i]; level_index++){ int distoration; int level= coeff[level_index][i]; + const int alevel= ABS(level); int unquant_coeff; assert(level); if(s->out_format == FMT_H263){ - if(level>0){ - unquant_coeff= level*qmul + qadd; - }else{ - unquant_coeff= level*qmul - qadd; - } + unquant_coeff= alevel*qmul + qadd; }else{ //MPEG1 j= s->dsp.idct_permutation[ scantable[i + start_i] ]; //FIXME optimize if(s->mb_intra){ - if (level < 0) { - unquant_coeff = (int)((-level) * qscale * s->intra_matrix[j]) >> 3; - unquant_coeff = -((unquant_coeff - 1) | 1); - } else { - unquant_coeff = (int)( level * qscale * s->intra_matrix[j]) >> 3; + unquant_coeff = (int)( alevel * qscale * s->intra_matrix[j]) >> 3; unquant_coeff = (unquant_coeff - 1) | 1; - } }else{ - if (level < 0) { - unquant_coeff = ((((-level) << 1) + 1) * qscale * ((int) s->inter_matrix[j])) >> 4; - unquant_coeff = -((unquant_coeff - 1) | 1); - } else { - unquant_coeff = ((( level << 1) + 1) * qscale * ((int) s->inter_matrix[j])) >> 4; + unquant_coeff = ((( alevel << 1) + 1) * qscale * ((int) s->inter_matrix[j])) >> 4; unquant_coeff = (unquant_coeff - 1) | 1; - } } unquant_coeff<<= 3; } @@ -4880,7 +4867,7 @@ s->coded_score[n] = last_score; - dc= block[0]; + dc= ABS(block[0]); last_non_zero= last_i - 1 + start_i; memset(block + start_i, 0, (64-start_i)*sizeof(DCTELEM)); @@ -4893,32 +4880,22 @@ for(i=0; iout_format == FMT_H263){ - if(level>0){ - unquant_coeff= (level*qmul + qadd)>>3; - }else{ - unquant_coeff= (level*qmul - qadd)>>3; - } + unquant_coeff= (alevel*qmul + qadd)>>3; }else{ //MPEG1 - if (level < 0) { - unquant_coeff = ((((-level) << 1) + 1) * qscale * ((int) s->inter_matrix[0])) >> 4; - unquant_coeff = -((unquant_coeff - 1) | 1); - } else { - unquant_coeff = ((( level << 1) + 1) * qscale * ((int) s->inter_matrix[0])) >> 4; - unquant_coeff = (unquant_coeff - 1) | 1; - } + unquant_coeff = ((( alevel << 1) + 1) * qscale * ((int) s->inter_matrix[0])) >> 4; + unquant_coeff = (unquant_coeff - 1) | 1; } unquant_coeff = (unquant_coeff + 4) >> 3; unquant_coeff<<= 3 + 3; - distoration= (unquant_coeff - dc) * (unquant_coeff - dc); + distortion= (unquant_coeff - dc) * (unquant_coeff - dc); level+=64; - if((level&(~127)) == 0) - score= distoration + last_length[UNI_AC_ENC_INDEX(0, level)]*lambda; - else - score= distoration + esc_length*lambda; + if((level&(~127)) == 0) score= distortion + last_length[UNI_AC_ENC_INDEX(0, level)]*lambda; + else score= distortion + esc_length*lambda; if(score < best_score){ best_score= score;