[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.49, Wed Dec 8 12:43:48 2004 UTC revision 1.52.2.2, Thu Jun 28 15:00:11 2007 UTC
# Line 606  Line 606 
606          if (frame->coding_type != I_VOP)          if (frame->coding_type != I_VOP)
607                          BitstreamPutBit(bs, 0); /* not_coded */                          BitstreamPutBit(bs, 0); /* not_coded */
608    
609            if (frame->vop_flags & XVID_VOP_GREYSCALE) {
610                    pMB->cbp &= 0x3C;               /* keep only bits 5-2 */
611                    qcoeff[4*64+0]=0;               /* for INTRA DC value is saved */
612                    qcoeff[5*64+0]=0;
613            }
614    
615          if (pMB->mode == MODE_INTRA || pMB->mode == MODE_INTRA_Q)          if (pMB->mode == MODE_INTRA || pMB->mode == MODE_INTRA_Q)
616                  CodeBlockIntra(frame, pMB, qcoeff, bs, pStat);                  CodeBlockIntra(frame, pMB, qcoeff, bs, pStat);
617          else          else
# Line 692  Line 698 
698                  scan_tables[2] : scan_tables[0];                  scan_tables[2] : scan_tables[0];
699          int bits;          int bits;
700    
   
701  /*      ------------------------------------------------------------------  /*      ------------------------------------------------------------------
702                  when a block is skipped it is decoded DIRECT(0,0)                  when a block is skipped it is decoded DIRECT(0,0)
703                  hence is interpolated from forward & backward frames                  hence is interpolated from forward & backward frames
# Line 1046  Line 1051 
1051          return (level << 20) >> 20;          return (level << 20) >> 20;
1052    
1053    error:    error:
1054          *run = VLC_ERROR;          *run = 64;
1055          return 0;          return 0;
1056  }  }
1057    
# Line 1062  Line 1067 
1067    
1068          do {          do {
1069                  level = get_coeff(bs, &run, &last, 1, 0);                  level = get_coeff(bs, &run, &last, 1, 0);
1070                  if (run == -1) {                  coeff += run;
1071                          DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run");                  if (coeff & ~63) {
1072                            DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run or index");
1073                          break;                          break;
1074                  }                  }
1075                  coeff += run;  
1076                  block[scan[coeff]] = level;                  block[scan[coeff]] = level;
1077    
1078                  DPRINTF(XVID_DEBUG_COEFF,"block[%i] %i\n", scan[coeff], level);                  DPRINTF(XVID_DEBUG_COEFF,"block[%i] %i\n", scan[coeff], level);
# Line 1102  Line 1108 
1108          p = 0;          p = 0;
1109          do {          do {
1110                  level = get_coeff(bs, &run, &last, 0, 0);                  level = get_coeff(bs, &run, &last, 0, 0);
1111                  if (run == -1) {                  p += run;
1112                          DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run");                  if (p & ~63) {
1113                            DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run or index");
1114                          break;                          break;
1115                  }                  }
                 p += run;  
1116    
1117                  if (level < 0) {                  if (level < 0) {
1118                          level = level*quant_m_2 - quant_add;                          level = level*quant_m_2 - quant_add;
# Line 1137  Line 1143 
1143          p = 0;          p = 0;
1144          do {          do {
1145                  level = get_coeff(bs, &run, &last, 0, 0);                  level = get_coeff(bs, &run, &last, 0, 0);
1146                  if (run == -1) {                  p += run;
1147                          DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run");                  if (p & ~63) {
1148                            DPRINTF(XVID_DEBUG_ERROR,"fatal: invalid run or index");
1149                          break;                          break;
1150                  }                  }
                 p += run;  
1151    
1152                  if (level < 0) {                  if (level < 0) {
1153                          level = ((2 * -level + 1) * matrix[scan[p]] * quant) >> 4;                          level = ((2 * -level + 1) * matrix[scan[p]] * quant) >> 4;
# Line 1939  Line 1945 
1945  };  };
1946    
1947  short const dc_threshold[] = {  short const dc_threshold[] = {
1948          21514, 26984,  8307, 28531, 29798, 24951, 25970, 26912,          26708, 29545, 29472, 26223, 30580, 29281,  8293, 29545,
1949           8307, 25956, 26994, 25974,  8292, 29286, 28015, 29728,          25632, 29285, 30313, 25701, 26144, 28530,  8301, 26740,
1950          25960, 18208, 21838, 18208, 19536, 22560, 26998,  8260,           8293, 20039,  8277, 20551,  8268, 30296, 17513, 25376,
1951          28515, 25956,  8291, 25640, 30309, 27749, 11817, 22794,          25711, 25445, 10272, 11825, 11825, 10544,  2606, 28505,
1952          30063,  8306, 28531, 29798, 24951, 25970, 25632, 29545,          29301, 29472, 26223, 30580, 29281,  8293, 26980, 29811,
1953          29300, 25193, 29813, 29295, 26656, 29537, 29728,  8303,          26994, 30050, 28532,  8306, 24936,  8307, 28532, 26400,
1954          26983, 25974, 24864, 25443, 29541,  8307, 28532, 26912,          30313,  8293, 25441, 25955, 29555, 29728,  8303, 29801,
1955          29556, 29472, 30063, 25458,  8293, 28515, 25956,  2606           8307, 28531, 29301, 25955, 25376, 25711, 11877,    10
1956  };  };
1957    
1958  VLC const dc_lum_tab[] = {  VLC const dc_lum_tab[] = {

Legend:
Removed from v.1.49  
changed lines
  Added in v.1.52.2.2

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