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

Diff of /xvidcore/src/motion/estimation_bvop.c

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

revision 1.17, Sun Dec 5 04:53:01 2004 UTC revision 1.18, Wed Dec 8 12:43:48 2004 UTC
# Line 918  Line 918 
918          }          }
919  }  }
920    
921    static __inline void
922    maxMotionBVOP(int * const MVmaxF, int * const MVmaxB, const MACROBLOCK * const pMB, const int qpel)
923    {
924            if (pMB->mode == MODE_FORWARD || pMB->mode == MODE_INTERPOLATE) {
925                    const VECTOR * const mv = qpel ? pMB->qmvs : pMB->mvs;
926                    int max = *MVmaxF;
927                    if (mv[0].x > max) max = mv[0].x;
928                    else if (-mv[0].x - 1 > max) max = -mv[0].x - 1;
929                    if (mv[0].y > max) max = mv[0].y;
930                    else if (-mv[0].y - 1 > max) max = -mv[0].y - 1;
931    
932                    *MVmaxF = max;
933            }
934    
935            if (pMB->mode == MODE_BACKWARD || pMB->mode == MODE_INTERPOLATE) {
936                    const VECTOR * const mv = qpel ? pMB->b_qmvs : pMB->b_mvs;
937                    int max = *MVmaxB;
938                    if (mv[0].x > max) max = mv[0].x;
939                    else if (-mv[0].x - 1 > max) max = -mv[0].x - 1;
940                    if (mv[0].y > max) max = mv[0].y;
941                    else if (-mv[0].y - 1 > max) max = -mv[0].y - 1;
942                    *MVmaxB = max;
943            }
944    }
945    
946    
947  void  void
948  MotionEstimationBVOP(MBParam * const pParam,  MotionEstimationBVOP(MBParam * const pParam,
949                                           FRAMEINFO * const frame,                                           FRAMEINFO * const frame,
# Line 945  Line 971 
971    
972          VECTOR f_predMV, b_predMV;          VECTOR f_predMV, b_predMV;
973    
974            int MVmaxF = 0, MVmaxB = 0;
975          const int32_t TRB = time_pp - time_bp;          const int32_t TRB = time_pp - time_bp;
976          const int32_t TRD = time_pp;          const int32_t TRD = time_pp;
977          DECLARE_ALIGNED_MATRIX(dct_space, 3, 64, int16_t, CACHE_LINE);          DECLARE_ALIGNED_MATRIX(dct_space, 3, 64, int16_t, CACHE_LINE);
# Line 968  Line 995 
995          memcpy(&Data_b, &Data_d, sizeof(SearchData));          memcpy(&Data_b, &Data_d, sizeof(SearchData));
996          memcpy(&Data_i, &Data_d, sizeof(SearchData));          memcpy(&Data_i, &Data_d, sizeof(SearchData));
997    
998          Data_f.iFcode = Data_i.iFcode = frame->fcode;          Data_f.iFcode = Data_i.iFcode = frame->fcode = b_reference->fcode;
999          Data_b.iFcode = Data_i.bFcode = frame->bcode;          Data_b.iFcode = Data_i.bFcode = frame->bcode = b_reference->fcode;
   
1000    
1001          for (j = 0; j < pParam->mb_height; j++) {          for (j = 0; j < pParam->mb_height; j++) {
1002    
# Line 1050  Line 1076 
1076                          else                          else
1077                                  ModeDecision_BVOP_SAD(&Data_d, &Data_b, &Data_f, &Data_i, pMB, b_mb, &f_predMV, &b_predMV);                                  ModeDecision_BVOP_SAD(&Data_d, &Data_b, &Data_f, &Data_i, pMB, b_mb, &f_predMV, &b_predMV);
1078    
1079                            maxMotionBVOP(&MVmaxF, &MVmaxB, pMB, Data_d.qpel);
1080    
1081                  }                  }
1082          }          }
1083    
1084            frame->fcode = getMinFcode(MVmaxF);
1085            frame->bcode = getMinFcode(MVmaxB);
1086  }  }

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.18

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