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

Diff of /trunk/xvidcore/src/decoder.c

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

revision 195, Wed Jun 12 20:38:41 2002 UTC revision 233, Sat Jun 22 07:23:10 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 47  Line 49 
49   *  22.12.2001  lock based interpolation   *  22.12.2001  lock based interpolation
50   *  01.12.2001  inital version; (c)2001 peter ross <pross@cs.rmit.edu.au>   *  01.12.2001  inital version; (c)2001 peter ross <pross@cs.rmit.edu.au>
51   *   *
52   *  $Id: decoder.c,v 1.19 2002-06-12 20:38:39 edgomez Exp $   *  $Id: decoder.c,v 1.21 2002-06-22 07:23:09 suxen_drol Exp $
53   *   *
54   *************************************************************************/   *************************************************************************/
55    
# 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.195  
changed lines
  Added in v.233

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