[cvs] / xvidcore / src / bitstream / mbcoding.c Repository:
ViewVC logotype

Diff of /xvidcore/src/bitstream/mbcoding.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.54, Sat Apr 28 16:30:20 2007 UTC revision 1.60, Fri Dec 31 11:47:44 2010 UTC
# Line 588  Line 588 
588                          CodeVector(bs, pMB->pmvs[i].x, frame->fcode);                          CodeVector(bs, pMB->pmvs[i].x, frame->fcode);
589                          CodeVector(bs, pMB->pmvs[i].y, frame->fcode);                          CodeVector(bs, pMB->pmvs[i].y, frame->fcode);
590    
591  #ifdef _DEBUG  #if 0 /* #ifdef _DEBUG */
592                          if (i == 0) /* for simplicity */ {                          if (i == 0) /* for simplicity */ {
593                                  int coded_length = BitstreamPos(bs) - bits;                                  int coded_length = BitstreamPos(bs) - bits;
594                                  int estimated_length = d_mv_bits(pMB->pmvs[i].x, pMB->pmvs[i].y, zeroMV, frame->fcode, 0);                                  int estimated_length = d_mv_bits(pMB->pmvs[i].x, pMB->pmvs[i].y, zeroMV, frame->fcode, 0);
# Line 1075  Line 1075 
1075          return (level << 20) >> 20;          return (level << 20) >> 20;
1076    
1077    error:    error:
1078          *run = VLC_ERROR;          *run = 64;
1079          return 0;          return 0;
1080  }  }
1081    
# Line 1087  Line 1087 
1087  {  {
1088    
1089          const uint16_t *scan = scan_tables[direction];          const uint16_t *scan = scan_tables[direction];
1090          int level, run, last;          int level, run, last = 0;
1091    
1092          do {          do {
1093                  level = get_coeff(bs, &run, &last, 1, 0);                  level = get_coeff(bs, &run, &last, 1, 0);
1094                  if (run == -1) {                  coeff += run;
1095                          DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run");                  if (coeff & ~63) {
1096                            DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run or index");
1097                          break;                          break;
1098                  }                  }
                 coeff += run;  
   
 #ifdef _DEBUG  
                 if(coeff>=64) {  
                   DPRINTF(XVID_DEBUG_ERROR,"error: overflow in coefficient index\n");  
                   return;  
                 }  
 #endif  
1099    
1100                  block[scan[coeff]] = level;                  block[scan[coeff]] = level;
1101    
# Line 1134  Line 1127 
1127          int p;          int p;
1128          int level;          int level;
1129          int run;          int run;
1130          int last;          int last = 0;
1131    
1132          p = 0;          p = 0;
1133          do {          do {
1134                  level = get_coeff(bs, &run, &last, 0, 0);                  level = get_coeff(bs, &run, &last, 0, 0);
                 if (run == -1) {  
                         DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run");  
                         break;  
                 }  
1135                  p += run;                  p += run;
1136                    if (p & ~63) {
1137  #ifdef _DEBUG                          DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run or index");
1138                  if(p>=64)       {                          break;
                   DPRINTF(XVID_DEBUG_ERROR,"error: overflow in coefficient index\n");  
                   return;  
1139                  }                  }
 #endif  
1140    
1141                  if (level < 0) {                  if (level < 0) {
1142                          level = level*quant_m_2 - quant_add;                          level = level*quant_m_2 - quant_add;
# Line 1176  Line 1162 
1162          int p;          int p;
1163          int level;          int level;
1164          int run;          int run;
1165          int last;          int last = 0;
1166    
1167          p = 0;          p = 0;
1168          do {          do {
1169                  level = get_coeff(bs, &run, &last, 0, 0);                  level = get_coeff(bs, &run, &last, 0, 0);
                 if (run == -1) {  
                         DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run");  
                         break;  
                 }  
1170                  p += run;                  p += run;
1171                    if (p & ~63) {
1172  #ifdef _DEBUG                          DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run or index");
1173                  if(p>=64)       {                          break;
                   DPRINTF(XVID_DEBUG_ERROR,"error: overflow in coefficient index\n");  
                   return;  
1174                  }                  }
 #endif  
1175    
1176                  if (level < 0) {                  if (level < 0) {
1177                          level = ((2 * -level + 1) * matrix[scan[p]] * quant) >> 4;                          level = ((2 * -level + 1) * matrix[scan[p]] * quant) >> 4;
# Line 1993  Line 1972 
1972          26708, 29545, 29472, 26223, 30580, 29281,  8293, 29545,          26708, 29545, 29472, 26223, 30580, 29281,  8293, 29545,
1973          25632, 29285, 30313, 25701, 26144, 28530,  8301, 26740,          25632, 29285, 30313, 25701, 26144, 28530,  8301, 26740,
1974           8293, 20039,  8277, 20551,  8268, 30296, 17513, 25376,           8293, 20039,  8277, 20551,  8268, 30296, 17513, 25376,
1975          25711, 25445, 10272, 11825, 11825, 10544,  2606, 28505,          25711, 25445, 10272, 11825, 11828, 10544,  2606, 28505,
1976          29301, 29472, 26223, 30580, 29281,  8293, 26980, 29811,          29301, 29472, 26223, 30580, 29281,  8293, 26980, 29811,
1977          26994, 30050, 28532,  8306, 24936,  8307, 28532, 26400,          26994, 30050, 28532,  8306, 24936,  8307, 28532, 26400,
1978          30313,  8293, 25441, 25955, 29555, 29728,  8303, 29801,          30313,  8293, 25441, 25955, 29555, 29728,  8303, 29801,

Legend:
Removed from v.1.54  
changed lines
  Added in v.1.60

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4