[svn] / branches / dev-api-4 / xvidcore / src / motion / vop_type_decision.c Repository:
ViewVC logotype

Diff of /branches/dev-api-4/xvidcore/src/motion/vop_type_decision.c

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

revision 1160, Tue Sep 30 18:20:31 2003 UTC revision 1212, Sun Nov 16 15:32:38 2003 UTC
# Line 19  Line 19 
19   *  along with this program ; if not, write to the Free Software   *  along with this program ; if not, write to the Free Software
20   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21   *   *
22   * $Id: vop_type_decision.c,v 1.1.2.2 2003-09-30 18:20:31 edgomez Exp $   * $Id: vop_type_decision.c,v 1.1.2.4 2003-11-16 15:32:38 edgomez Exp $
23   *   *
24   ****************************************************************************/   ****************************************************************************/
25    
# Line 33  Line 33 
33  #include "motion_inlines.h"  #include "motion_inlines.h"
34    
35    
36  #define INTRA_THRESH    2200  #define INTRA_THRESH    2000
37  #define INTER_THRESH    40  #define INTER_THRESH    40
38  #define INTRA_THRESH2   95  #define INTRA_THRESH2   90
39    
40  static void  static void
41  CheckCandidate32I(const int x, const int y, const SearchData * const data, const unsigned int Direction)  CheckCandidate32I(const int x, const int y, const SearchData * const data, const unsigned int Direction)
# Line 140  Line 140 
140                          const int maxIntra, /* maximum number if non-I frames */                          const int maxIntra, /* maximum number if non-I frames */
141                          const int intraCount, /* number of non-I frames after last I frame; 0 if we force P/B frame */                          const int intraCount, /* number of non-I frames after last I frame; 0 if we force P/B frame */
142                          const int bCount, /* number of B frames in a row */                          const int bCount, /* number of B frames in a row */
143                          const int b_thresh)                          const int b_thresh,
144                            const MACROBLOCK * const prev_mbs)
145  {  {
146          uint32_t x, y, intra = 0;          uint32_t x, y, intra = 0;
147          int sSAD = 0;          int sSAD = 0;
148          MACROBLOCK * const pMBs = Current->mbs;          MACROBLOCK * const pMBs = Current->mbs;
149          const IMAGE * const pCurrent = &Current->image;          const IMAGE * const pCurrent = &Current->image;
150          int IntraThresh = INTRA_THRESH, InterThresh = INTER_THRESH + b_thresh;          int IntraThresh = INTRA_THRESH, InterThresh = INTER_THRESH + b_thresh;
151          int blocks = 0;          int blocks = 10;
152          int complexity = 0;          int complexity = 0;
153    
154          int32_t iMinSAD[5], temp[5];          int32_t iMinSAD[5], temp[5];
# Line 184  Line 185 
185                          if (bCount == 0) pMBs[x + y * pParam->mb_width].mvs[0] = zeroMV;                          if (bCount == 0) pMBs[x + y * pParam->mb_width].mvs[0] = zeroMV;
186                          else { /* extrapolation of the vector found for last frame */                          else { /* extrapolation of the vector found for last frame */
187                                  pMBs[x + y * pParam->mb_width].mvs[0].x =                                  pMBs[x + y * pParam->mb_width].mvs[0].x =
188                                          (pMBs[x + y * pParam->mb_width].mvs[0].x * (bCount+1) ) / bCount;                                          (prev_mbs[x + y * pParam->mb_width].mvs[0].x * (bCount+1) ) / bCount;
189                                  pMBs[x + y * pParam->mb_width].mvs[0].y =                                  pMBs[x + y * pParam->mb_width].mvs[0].y =
190                                          (pMBs[x + y * pParam->mb_width].mvs[0].y * (bCount+1) ) / bCount;                                          (prev_mbs[x + y * pParam->mb_width].mvs[0].y * (bCount+1) ) / bCount;
191                          }                          }
192    
193                          MEanalyzeMB(pRef->y, pCurrent->y, x, y, pParam, pMBs, &Data);                          MEanalyzeMB(pRef->y, pCurrent->y, x, y, pParam, pMBs, &Data);
# Line 215  Line 216 
216    
217          sSAD /= complexity + 4*blocks;          sSAD /= complexity + 4*blocks;
218    
219          if (intraCount > 80 && sSAD > INTRA_THRESH2 ) return I_VOP;          if (intraCount > 60 && sSAD > INTRA_THRESH2 ) return I_VOP;
220          if (sSAD > InterThresh ) return P_VOP;          if (sSAD > InterThresh ) return P_VOP;
221          emms();          emms();
222          return B_VOP;          return B_VOP;

Legend:
Removed from v.1160  
changed lines
  Added in v.1212

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