if (s->h263_rv10 && level == -128) {
/* XXX: should patch encoder too */
level = get_bits(&s->gb, 12);
- level = (level << 20) >> 20;
+ level= (level + ((-1)<<11)) ^ ((-1)<<11); //sign extension
}
} else {
run = rl->table_run[code];
/* escape */
run = get_bits(&s->gb, 6);
level = get_bits(&s->gb, 8);
- level = (level << 24) >> 24;
+ level= (level + ((-1)<<7)) ^ ((-1)<<7); //sign extension
if (level == -128) {
level = get_bits(&s->gb, 8) - 256;
} else if (level == 0) {
/* escape */
run = get_bits(&s->gb, 6);
level = get_bits(&s->gb, 12);
- level = (level << 20) >> 20;
+ level= (level + ((-1)<<11)) ^ ((-1)<<11); //sign extension
} else {
run = rl->table_run[code];
level = rl->table_level[code];
/* escape */
run = get_bits(&s->gb, 6);
level = get_bits(&s->gb, 12);
- level = (level << 20) >> 20;
+ level= (level + ((-1)<<11)) ^ ((-1)<<11); //sign extension
} else {
run = rl->table_run[code];
level = rl->table_level[code];