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

Diff of /xvidcore/src/encoder.c

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

revision 1.76.2.28, Wed Dec 11 10:47:43 2002 UTC revision 1.76.2.29, Thu Dec 12 12:42:31 2002 UTC
# Line 646  Line 646 
646    
647    
648    
649    /* convert pFrame->intra to coding_type */
650    static int intra2coding_type(int intra)
651    {
652            if (intra < 0)          return -1;
653            if (intra == 1)         return I_VOP;
654            if (intra == 2)         return B_VOP;
655    
656            return P_VOP;
657    }
658    
659    
660    
661  /*****************************************************************************  /*****************************************************************************
# Line 855  Line 865 
865          // only inc frame num, adapt quant, etc. if we havent seen it before          // only inc frame num, adapt quant, etc. if we havent seen it before
866          if (pEnc->bframenum_dx50bvop < 0 )          if (pEnc->bframenum_dx50bvop < 0 )
867          {          {
868                    mode = intra2coding_type(pFrame->intra);
869                  if (pFrame->quant == 0)                  if (pFrame->quant == 0)
870                          pEnc->current->quant = RateControlGetQ(&pEnc->rate_control, 0);                          pEnc->current->quant = RateControlGetQ(&pEnc->rate_control, 0);
871                  else                  else
# Line 928  Line 939 
939           * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */           * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
940          pEnc->iFrameNum++;          pEnc->iFrameNum++;
941    
942          if (pEnc->iFrameNum == 0 || pFrame->intra == 1 || pEnc->bframenum_dx50bvop >= 0 ||          if (pEnc->iFrameNum == 0 || pEnc->bframenum_dx50bvop >= 0 ||
943                  (pFrame->intra < 0 && pEnc->mbParam.iMaxKeyInterval > 0 &&                  (mode < 0 && pEnc->mbParam.iMaxKeyInterval > 0 &&
944                   pEnc->iFrameNum >= pEnc->mbParam.iMaxKeyInterval)                          pEnc->iFrameNum >= pEnc->mbParam.iMaxKeyInterval))
945                  || 2 == (mode = MEanalysis(&pEnc->reference->image, pEnc->current,          {
946                    mode = I_VOP;
947            }else{
948                    mode = MEanalysis(&pEnc->reference->image, pEnc->current,
949                                                                          &pEnc->mbParam, pEnc->mbParam.iMaxKeyInterval,                                                                          &pEnc->mbParam, pEnc->mbParam.iMaxKeyInterval,
950                                                                          (pFrame->intra < 0) ? pEnc->iFrameNum : 0,                                          (mode < 0) ? pEnc->iFrameNum : 0,
951                                                                          bframes_count++))) {                                          bframes_count++);
952            }
953    
954            if (mode == I_VOP) {
955                  /*                  /*
956                   * This will be coded as an Intra Frame                   * This will be coded as an Intra Frame
957                   */                   */
# Line 999  Line 1015 
1015                   * NB : sequences like "IIBB" decode fine with msfdam but,                   * NB : sequences like "IIBB" decode fine with msfdam but,
1016                   *      go screwy with divx 5.00                   *      go screwy with divx 5.00
1017                   */                   */
1018          } else if (pEnc->bframenum_tail >= pEnc->mbParam.max_bframes || mode != 0) {          } else if (mode == P_VOP || pEnc->bframenum_tail >= pEnc->mbParam.max_bframes) {
 //      } else if (pFrame->intra == 0 || pEnc->bframenum_tail >= pEnc->mbParam.max_bframes || mode != 0) {  
1019                  /*                  /*
1020                   * This will be coded as a Predicted Frame                   * This will be coded as a Predicted Frame
1021                   */                   */
# Line 1024  Line 1039 
1039                          goto ipvop_loop;                          goto ipvop_loop;
1040                  }                  }
1041    
1042          } else {          } else {        /* mode == B_VOP */
1043                  /*                  /*
1044                   * This will be coded as a Bidirectional Frame                   * This will be coded as a Bidirectional Frame
1045                   */                   */

Legend:
Removed from v.1.76.2.28  
changed lines
  Added in v.1.76.2.29

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