# HG changeset patch # User michaelni # Date 1062435928 0 # Node ID ba444d478ffe471c1167e3ad4eb09b00746d3cc7 # Parent b57e910e4235cf353ced83c3d55bc49e7fc0cf97 more fixes diff -r b57e910e4235 -r ba444d478ffe mdec.c --- a/mdec.c Mon Sep 01 16:40:25 2003 +0000 +++ b/mdec.c Mon Sep 01 17:05:28 2003 +0000 @@ -65,7 +65,7 @@ /* DC coef */ if(a->version==2){ - block[0]= get_sbits(&a->gb, 10); + block[0]= 2*get_sbits(&a->gb, 10) + 1024; }else{ component = (n <= 3 ? 0 : n - 4 + 1); diff = decode_dc(&a->gb, component); @@ -89,7 +89,7 @@ i += run; j = scantable[i]; level= (level*qscale*quant_matrix[j])>>3; - level= (level-1)|1; +// level= (level-1)|1; level = (level ^ SHOW_SBITS(re, &a->gb, 1)) - SHOW_SBITS(re, &a->gb, 1); LAST_SKIP_BITS(re, &a->gb, 1); } else { @@ -99,15 +99,15 @@ level = SHOW_SBITS(re, &a->gb, 10); SKIP_BITS(re, &a->gb, 10); i += run; j = scantable[i]; -/* if(level<0){ + if(level<0){ level= -level; - level= (level*qscale*quant_matrix[j])>>4; + level= (level*qscale*quant_matrix[j])>>3; level= (level-1)|1; level= -level; - }else{*/ - level= (level*qscale*quant_matrix[j])>>4; -/* level= (level-1)|1; - }*/ + }else{ + level= (level*qscale*quant_matrix[j])>>3; + level= (level-1)|1; + } } if (i > 63){ fprintf(stderr, "ac-tex damaged at %d %d\n", a->mb_x, a->mb_y); @@ -124,11 +124,12 @@ static inline int decode_mb(MDECContext *a, DCTELEM block[6][64]){ int i; + const int block_index[6]= {5,6,0,1,2,3}; a->dsp.clear_blocks(block[0]); - for(i=5; i>=0; i--){ - if( mdec_decode_block_intra(a, block[i], i) < 0) + for(i=0; i<6; i++){ + if( mdec_decode_block_intra(a, block[ block_index[i] ], block_index[i]) < 0) return -1; } return 0;