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

Diff of /branches/dev-api-4/xvidcore/src/motion/motion_est.h

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

revision 1077, Sat Jun 28 15:54:16 2003 UTC revision 1084, Sun Jul 13 09:58:44 2003 UTC
# Line 21  Line 21 
21   *  along with this program ; if not, write to the Free Software   *  along with this program ; if not, write to the Free Software
22   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
23   *   *
24   * $Id: motion_est.h,v 1.3.2.12 2003-06-28 15:51:54 chl Exp $   * $Id: motion_est.h,v 1.3.2.13 2003-07-13 09:57:28 syskin Exp $
25   *   *
26   ****************************************************************************/   ****************************************************************************/
27    
# Line 139  Line 139 
139          int16_t * dctSpace;          int16_t * dctSpace;
140          uint32_t iQuant;          uint32_t iQuant;
141          uint32_t quant_type;          uint32_t quant_type;
142            int * cbp;
143    
144  } SearchData;  } SearchData;
145    
# Line 347  Line 348 
348  static int  static int
349  CountMBBitsIntra(const SearchData * const Data);  CountMBBitsIntra(const SearchData * const Data);
350    
351    static int
352    CountMBBitsGMC(const SearchData * const Data, const IMAGE * const vGMC, const int x, const int y);
353    
354  int CodeCoeffIntra_CalcBits(const int16_t qcoeff[64], const uint16_t * zigzag);  int CodeCoeffIntra_CalcBits(const int16_t qcoeff[64], const uint16_t * zigzag);
355  int CodeCoeffInter_CalcBits(const int16_t qcoeff[64], const uint16_t * zigzag);  int CodeCoeffInter_CalcBits(const int16_t qcoeff[64], const uint16_t * zigzag);
356    
# Line 368  Line 372 
372    
373          fdct(data);          fdct(data);
374    
375          if (quant_type == 0) sum = quant_inter(coeff, data, quant);          if (quant_type) sum = quant_inter(coeff, data, quant);
376          else sum = quant4_inter(coeff, data, quant);          else sum = quant4_inter(coeff, data, quant);
377    
378          if (sum > 0) {          if (sum > 0) {
379                  *cbp |= 1 << (5 - block);                  *cbp |= 1 << (5 - block);
380                  bits = BITS_MULT * CodeCoeffInter_CalcBits(coeff, scan_tables[0]);                  bits = BITS_MULT * CodeCoeffInter_CalcBits(coeff, scan_tables[0]);
         } else bits = 0;  
381    
382          if (quant_type == 0) dequant_inter(dqcoeff, coeff, quant);                  if (quant_type) dequant_inter(dqcoeff, coeff, quant);
383          else dequant4_inter(dqcoeff, coeff, quant);          else dequant4_inter(dqcoeff, coeff, quant);
384    
385          for (i = 0; i < 64; i++) {                  for (i = 0; i < 64; i++)
386                  distortion += (data[i] - dqcoeff[i])*(data[i] - dqcoeff[i]);                  distortion += (data[i] - dqcoeff[i])*(data[i] - dqcoeff[i]);
387    
388            } else {
389                    bits = 0;
390                    for (i = 0; i < 64; i++)
391                            distortion += data[i]*data[i];
392          }          }
393    
394    
395          bits += (LAMBDA*distortion)/(quant*quant);          bits += (LAMBDA*distortion)/(quant*quant);
396    
397          return bits;          return bits;
# Line 405  Line 414 
414          fdct(data);          fdct(data);
415          data[0] -= 1024;          data[0] -= 1024;
416    
417          if (quant_type == 0) quant_intra(coeff, data, quant, iDcScaler);          if (quant_type) quant_intra(coeff, data, quant, iDcScaler);
418          else quant4_intra(coeff, data, quant, iDcScaler);          else quant4_intra(coeff, data, quant, iDcScaler);
419    
420          b_dc = coeff[0];          b_dc = coeff[0];
# Line 421  Line 430 
430          else bits += BITS_MULT*dcc_tab[coeff[0] + 255].len;          else bits += BITS_MULT*dcc_tab[coeff[0] + 255].len;
431    
432          coeff[0] = b_dc;          coeff[0] = b_dc;
433          if (quant_type == 0) dequant_intra(dqcoeff, coeff, quant, iDcScaler);          if (quant_type) dequant_intra(dqcoeff, coeff, quant, iDcScaler);
434          else dequant4_intra(dqcoeff, coeff, quant, iDcScaler);          else dequant4_intra(dqcoeff, coeff, quant, iDcScaler);
435    
436          for (i = 0; i < 64; i++) {          for (i = 0; i < 64; i++) {

Legend:
Removed from v.1077  
changed lines
  Added in v.1084

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