mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
fix IPCM_decode_error.h264
Originally committed as revision 14135 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
8dbee6538d
commit
7445f9cc67
@ -4352,12 +4352,11 @@ static int decode_residual(H264Context *h, GetBitContext *gb, DCTELEM *block, in
|
||||
level_code= (prefix<<suffix_length) + get_bits(gb, suffix_length); //part
|
||||
else
|
||||
level_code= prefix + get_bits(gb, 4); //part
|
||||
}else if(prefix==15){
|
||||
level_code= (prefix<<suffix_length) + get_bits(gb, 12); //part
|
||||
if(suffix_length==0) level_code+=15; //FIXME doesn't make (much)sense
|
||||
}else{
|
||||
av_log(h->s.avctx, AV_LOG_ERROR, "prefix too large at %d %d\n", s->mb_x, s->mb_y);
|
||||
return -1;
|
||||
level_code= (15<<suffix_length) + get_bits(gb, prefix-3); //part
|
||||
if(suffix_length==0) level_code+=15; //FIXME doesn't make (much)sense
|
||||
if(prefix>=16)
|
||||
level_code += (1<<(prefix-3))-4096;
|
||||
}
|
||||
|
||||
if(trailing_ones < 3) level_code += 2;
|
||||
@ -4375,11 +4374,10 @@ static int decode_residual(H264Context *h, GetBitContext *gb, DCTELEM *block, in
|
||||
prefix = get_level_prefix(gb);
|
||||
if(prefix<15){
|
||||
level_code = (prefix<<suffix_length) + get_bits(gb, suffix_length);
|
||||
}else if(prefix==15){
|
||||
level_code = (prefix<<suffix_length) + get_bits(gb, 12);
|
||||
}else{
|
||||
av_log(h->s.avctx, AV_LOG_ERROR, "prefix too large at %d %d\n", s->mb_x, s->mb_y);
|
||||
return -1;
|
||||
level_code = (15<<suffix_length) + get_bits(gb, prefix-3);
|
||||
if(prefix>=16)
|
||||
level_code += (1<<(prefix-3))-4096;
|
||||
}
|
||||
mask= -(level_code&1);
|
||||
level[i]= (((2+level_code)>>1) ^ mask) - mask;
|
||||
|
Loading…
Reference in New Issue
Block a user