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

Diff of /xvidcore/src/decoder.c

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

revision 1.19, Wed Jun 12 20:38:39 2002 UTC revision 1.21, Sat Jun 22 07:23:09 2002 UTC
# Line 32  Line 32 
32   *   *
33   *  History:   *  History:
34   *   *
35     *      22.06.2002      added primative N_VOP support
36     *                              #define BFRAMES_DEC now enables Minchenm's bframe decoder
37   *  08.05.2002  add low_delay support for B_VOP decode   *  08.05.2002  add low_delay support for B_VOP decode
38   *              MinChen <chenm001@163.com>   *              MinChen <chenm001@163.com>
39   *  05.05.2002  fix some B-frame decode problem   *  05.05.2002  fix some B-frame decode problem
# Line 96  Line 98 
98    
99          dec->edged_width = 16 * dec->mb_width + 2 * EDGE_SIZE;          dec->edged_width = 16 * dec->mb_width + 2 * EDGE_SIZE;
100          dec->edged_height = 16 * dec->mb_height + 2 * EDGE_SIZE;          dec->edged_height = 16 * dec->mb_height + 2 * EDGE_SIZE;
101            dec->low_delay = 0;
102    
103          if (image_create(&dec->cur, dec->edged_width, dec->edged_height)) {          if (image_create(&dec->cur, dec->edged_width, dec->edged_height)) {
104                  xvid_free(dec);                  xvid_free(dec);
# Line 134  Line 137 
137                  xvid_free(dec);                  xvid_free(dec);
138                  return XVID_ERR_MEMORY;                  return XVID_ERR_MEMORY;
139          }          }
140    
141            memset(dec->mbs, 0, sizeof(MACROBLOCK) * dec->mb_width * dec->mb_height);
142    
143          // add by chenm001 <chenm001@163.com>          // add by chenm001 <chenm001@163.com>
144          // for skip MB flag          // for skip MB flag
145          dec->last_mbs =          dec->last_mbs =
# Line 149  Line 155 
155                  return XVID_ERR_MEMORY;                  return XVID_ERR_MEMORY;
156          }          }
157    
158            memset(dec->last_mbs, 0, sizeof(MACROBLOCK) * dec->mb_width * dec->mb_height);
159    
160          init_timer();          init_timer();
161    
162          // add by chenm001 <chenm001@163.com>          // add by chenm001 <chenm001@163.com>
# Line 1244  Line 1252 
1252                  break;                  break;
1253    
1254          case B_VOP:          case B_VOP:
1255  #ifdef BFRAMES  #ifdef BFRAMES_DEC
1256                  if (dec->time_pp > dec->time_bp) {                  if (dec->time_pp > dec->time_bp) {
1257                          DEBUG1("B_VOP  Time=", dec->time);                          DEBUG1("B_VOP  Time=", dec->time);
1258                          decoder_bframe(dec, &bs, quant, fcode_forward, fcode_backward);                          decoder_bframe(dec, &bs, quant, fcode_forward, fcode_backward);
1259                  } else {                  } else {
1260                          DEBUG("broken B-frame!");                          DEBUG("broken B-frame!");
1261                  }                  }
1262    #else
1263                    image_copy(&dec->cur, &dec->refn[0], dec->edged_width, dec->height);
1264  #endif  #endif
1265                  break;                  break;
1266    
1267          case N_VOP:                             // vop not coded          case N_VOP:                             // vop not coded
1268                    // when low_delay==0, N_VOP's should interpolate between the past and future frames
1269                    image_copy(&dec->cur, &dec->refn[0], dec->edged_width, dec->height);
1270                  break;                  break;
1271    
1272          default:          default:
# Line 1263  Line 1275 
1275    
1276          frame->length = BitstreamPos(&bs) / 8;          frame->length = BitstreamPos(&bs) / 8;
1277    
1278  #ifdef BFRAMES  #ifdef BFRAMES_DEC
1279          // test if no B_VOP          // test if no B_VOP
1280          if (dec->low_delay) {          if (dec->low_delay) {
1281  #endif  #endif
1282                  image_output(&dec->cur, dec->width, dec->height, dec->edged_width,                  image_output(&dec->cur, dec->width, dec->height, dec->edged_width,
1283                                           frame->image, frame->stride, frame->colorspace);                                           frame->image, frame->stride, frame->colorspace);
1284  #ifdef BFRAMES  #ifdef BFRAMES_DEC
1285          } else {          } else {
1286                  if (dec->frames >= 1) {                  if (dec->frames >= 1) {
1287                          start_timer();                          start_timer();

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.21

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