[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.49.2.27, Sat Dec 20 11:54:27 2003 UTC revision 1.49.2.28, Sun Dec 21 19:41:53 2003 UTC
# Line 205  Line 205 
205          dec->last_mbs = NULL;          dec->last_mbs = NULL;
206    
207          init_timer();          init_timer();
208          init_postproc();          init_postproc(&dec->postproc);
209          init_mpeg_matrix(dec->mpeg_quant_matrices);          init_mpeg_matrix(dec->mpeg_quant_matrices);
210    
211          /* For B-frame support (used to save reference frame's time */          /* For B-frame support (used to save reference frame's time */
# Line 1316  Line 1316 
1316    
1317  /* perform post processing if necessary, and output the image */  /* perform post processing if necessary, and output the image */
1318  void decoder_output(DECODER * dec, IMAGE * img, MACROBLOCK * mbs,  void decoder_output(DECODER * dec, IMAGE * img, MACROBLOCK * mbs,
1319                                          xvid_dec_frame_t * frame, xvid_dec_stats_t * stats, int coding_type)                                          xvid_dec_frame_t * frame, xvid_dec_stats_t * stats,
1320                                            int coding_type, int quant)
1321  {  {
1322          if (dec->cartoon_mode)          if (dec->cartoon_mode)
1323                  frame->general &= ~XVID_FILMEFFECT;                  frame->general &= ~XVID_FILMEFFECT;
# Line 1325  Line 1326 
1326          {          {
1327                  /* note: image is stored to tmp */                  /* note: image is stored to tmp */
1328                  image_copy(&dec->tmp, img, dec->edged_width, dec->height);                  image_copy(&dec->tmp, img, dec->edged_width, dec->height);
1329                  image_postproc(&dec->tmp, dec->edged_width,                  image_postproc(&dec->postproc, &dec->tmp, dec->edged_width,
1330                                             mbs, dec->mb_width, dec->mb_height, dec->mb_width,                                             mbs, dec->mb_width, dec->mb_height, dec->mb_width,
1331                                             frame->general, dec->frames);                                             frame->general, dec->frames, (coding_type == B_VOP));
1332                  img = &dec->tmp;                  img = &dec->tmp;
1333          }          }
1334    
# Line 1374  Line 1375 
1375                  /* if not decoding "low_delay/packed", and this isn't low_delay and                  /* if not decoding "low_delay/packed", and this isn't low_delay and
1376                          we have a reference frame, then outout the reference frame */                          we have a reference frame, then outout the reference frame */
1377                  if (!(dec->low_delay_default && dec->packed_mode) && !dec->low_delay && dec->frames>0) {                  if (!(dec->low_delay_default && dec->packed_mode) && !dec->low_delay && dec->frames>0) {
1378                          decoder_output(dec, &dec->refn[0], dec->last_mbs, frame, stats, dec->last_coding_type);                          decoder_output(dec, &dec->refn[0], dec->last_mbs, frame, stats, dec->last_coding_type, quant);
1379                          dec->frames = 0;                          dec->frames = 0;
1380                          ret = 0;                          ret = 0;
1381                  } else {                  } else {
# Line 1444  Line 1445 
1445          /* packed_mode: special-N_VOP treament */          /* packed_mode: special-N_VOP treament */
1446          if (dec->packed_mode && coding_type == N_VOP) {          if (dec->packed_mode && coding_type == N_VOP) {
1447                  if (dec->low_delay_default && dec->frames > 0) {                  if (dec->low_delay_default && dec->frames > 0) {
1448                          decoder_output(dec, &dec->refn[0], dec->last_mbs, frame, stats, dec->last_coding_type);                          decoder_output(dec, &dec->refn[0], dec->last_mbs, frame, stats, dec->last_coding_type, quant);
1449                          output = 1;                          output = 1;
1450                  }                  }
1451                  /* ignore otherwise */                  /* ignore otherwise */
# Line 1478  Line 1479 
1479                  /* note: for packed_mode, output is performed when the special-N_VOP is decoded */                  /* note: for packed_mode, output is performed when the special-N_VOP is decoded */
1480                  if (!(dec->low_delay_default && dec->packed_mode)) {                  if (!(dec->low_delay_default && dec->packed_mode)) {
1481                          if (dec->low_delay) {                          if (dec->low_delay) {
1482                                  decoder_output(dec, &dec->cur, dec->mbs, frame, stats, coding_type);                                  decoder_output(dec, &dec->cur, dec->mbs, frame, stats, coding_type, quant);
1483                                  output = 1;                                  output = 1;
1484                          } else if (dec->frames > 0)     { /* is the reference frame valid? */                          } else if (dec->frames > 0)     { /* is the reference frame valid? */
1485                                  /* output the reference frame */                                  /* output the reference frame */
1486                                  decoder_output(dec, &dec->refn[0], dec->last_mbs, frame, stats, dec->last_coding_type);                                  decoder_output(dec, &dec->refn[0], dec->last_mbs, frame, stats, dec->last_coding_type, quant);
1487                                  output = 1;                                  output = 1;
1488                          }                          }
1489                  }                  }
# Line 1516  Line 1517 
1517                          stats->type = XVID_TYPE_NOTHING;                          stats->type = XVID_TYPE_NOTHING;
1518                  } else {                  } else {
1519                          decoder_bframe(dec, &bs, quant, fcode_forward, fcode_backward);                          decoder_bframe(dec, &bs, quant, fcode_forward, fcode_backward);
1520                          decoder_output(dec, &dec->cur, dec->mbs, frame, stats, coding_type);                          decoder_output(dec, &dec->cur, dec->mbs, frame, stats, coding_type, quant);
1521                  }                  }
1522    
1523                  output = 1;                  output = 1;
# Line 1538  Line 1539 
1539          if (dec->low_delay_default && output == 0) {          if (dec->low_delay_default && output == 0) {
1540                  if (dec->packed_mode && seen_something) {                  if (dec->packed_mode && seen_something) {
1541                          /* output the recently decoded frame */                          /* output the recently decoded frame */
1542                          decoder_output(dec, &dec->refn[0], dec->last_mbs, frame, stats, dec->last_coding_type);                          decoder_output(dec, &dec->refn[0], dec->last_mbs, frame, stats, dec->last_coding_type, quant);
1543                  } else {                  } else {
1544                          image_clear(&dec->cur, dec->width, dec->height, dec->edged_width, 0, 128, 128);                          image_clear(&dec->cur, dec->width, dec->height, dec->edged_width, 0, 128, 128);
1545                          image_printf(&dec->cur, dec->edged_width, dec->height, 16, 16,                          image_printf(&dec->cur, dec->edged_width, dec->height, 16, 16,
# Line 1546  Line 1547 
1547                          image_printf(&dec->cur, dec->edged_width, dec->height, 16, 64,                          image_printf(&dec->cur, dec->edged_width, dec->height, 16, 64,
1548                                  "bframe decoder lag");                                  "bframe decoder lag");
1549    
1550                          decoder_output(dec, &dec->cur, NULL, frame, stats, P_VOP);                          decoder_output(dec, &dec->cur, NULL, frame, stats, P_VOP, quant);
1551                          if (stats) stats->type = XVID_TYPE_NOTHING;                          if (stats) stats->type = XVID_TYPE_NOTHING;
1552                  }                  }
1553          }          }

Legend:
Removed from v.1.49.2.27  
changed lines
  Added in v.1.49.2.28

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