comparison mpeg12.c @ 2093:82816cad0e29 libavcodec

optimization
author michael
date Fri, 25 Jun 2004 14:11:44 +0000
parents 23280e1b8dbf
children 5ab35105671a
comparison
equal deleted inserted replaced
2092:58b6b0ce1c20 2093:82816cad0e29
694 } 694 }
695 695
696 // RAL: Parameter added: f_or_b_code 696 // RAL: Parameter added: f_or_b_code
697 static void mpeg1_encode_motion(MpegEncContext *s, int val, int f_or_b_code) 697 static void mpeg1_encode_motion(MpegEncContext *s, int val, int f_or_b_code)
698 { 698 {
699 int code, bit_size, l, m, bits, range, sign; 699 int code, bit_size, l, bits, range, sign;
700 700
701 if (val == 0) { 701 if (val == 0) {
702 /* zero vector */ 702 /* zero vector */
703 code = 0; 703 code = 0;
704 put_bits(&s->pb, 704 put_bits(&s->pb,
706 mbMotionVectorTable[0][0]); 706 mbMotionVectorTable[0][0]);
707 } else { 707 } else {
708 bit_size = f_or_b_code - 1; 708 bit_size = f_or_b_code - 1;
709 range = 1 << bit_size; 709 range = 1 << bit_size;
710 /* modulo encoding */ 710 /* modulo encoding */
711 l = 16 * range; 711 l= INT_BIT - 5 - bit_size;
712 m = 2 * l; 712 val= (val<<l)>>l;
713 if (val < -l) {
714 val += m;
715 } else if (val >= l) {
716 val -= m;
717 }
718 713
719 if (val >= 0) { 714 if (val >= 0) {
720 val--; 715 val--;
721 code = (val >> bit_size) + 1; 716 code = (val >> bit_size) + 1;
722 bits = val & (range - 1); 717 bits = val & (range - 1);
1409 if (sign) 1404 if (sign)
1410 val = -val; 1405 val = -val;
1411 val += pred; 1406 val += pred;
1412 1407
1413 /* modulo decoding */ 1408 /* modulo decoding */
1414 l = 1 << (shift+4); 1409 l= INT_BIT - 5 - shift;
1415 val = ((val + l)&(l*2-1)) - l; 1410 val = (val<<l)>>l;
1416 return val; 1411 return val;
1417 } 1412 }
1418 1413
1419 static inline int decode_dc(GetBitContext *gb, int component) 1414 static inline int decode_dc(GetBitContext *gb, int component)
1420 { 1415 {