mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
more fixes
Originally committed as revision 2192 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
bf5d0505c6
commit
67b04c1aef
@ -65,7 +65,7 @@ static inline int mdec_decode_block_intra(MDECContext *a, DCTELEM *block, int n)
|
||||
|
||||
/* 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 @@ static inline int mdec_decode_block_intra(MDECContext *a, DCTELEM *block, int n)
|
||||
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 @@ static inline int mdec_decode_block_intra(MDECContext *a, DCTELEM *block, int n)
|
||||
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 mdec_decode_block_intra(MDECContext *a, DCTELEM *block, int n)
|
||||
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user