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

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

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

revision 982, Thu Apr 10 13:05:54 2003 UTC revision 1205, Thu Nov 13 23:11:24 2003 UTC
# Line 1  Line 1 
1  /**************************************************************************  /*****************************************************************************
2   *   *
3   *      XVID MPEG-4 VIDEO CODEC   *      XVID MPEG-4 VIDEO CODEC
4   *      sum of absolute difference   *  - Sum Of Absolute Difference related code -
5   *   *
6   *      This program is an implementation of a part of one or more MPEG-4   *  Copyright(C) 2001-2003 Peter Ross <pross@xvid.org>
  *      Video tools as specified in ISO/IEC 14496-2 standard.  Those intending  
  *      to use this software module in hardware or software products are  
  *      advised that its use may infringe existing patents or copyrights, and  
  *      any such use would be at such party's own risk.  The original  
  *      developer of this software module and his/her company, and subsequent  
  *      editors and their companies, will have no liability for use of this  
  *      software or modifications or derivatives thereof.  
7   *   *
8   *      This program is free software; you can redistribute it and/or modify   *      This program is free software; you can redistribute it and/or modify
9   *      it under the terms of the GNU General Public License as published by   *      it under the terms of the GNU General Public License as published by
# Line 24  Line 17 
17   *   *
18   *      You should have received a copy of the GNU General Public License   *      You should have received a copy of the GNU General Public License
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., 675 Mass Ave, Cambridge, MA 02139, USA.   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21   *   *
22   *************************************************************************/   * $Id: sad.c,v 1.13.2.8 2003-11-13 23:11:24 edgomez Exp $
   
 /**************************************************************************  
  *  
  *      History:  
23   *   *
24   *      14.02.2002      added sad16bi_c()   ****************************************************************************/
  *      10.11.2001      initial version; (c)2001 peter ross <pross@cs.rmit.edu.au>  
  *  
  *************************************************************************/  
   
25    
26  #include "../portab.h"  #include "../portab.h"
27  #include "../global.h"  #include "../global.h"
# Line 47  Line 32 
32  sad16FuncPtr sad16;  sad16FuncPtr sad16;
33  sad8FuncPtr sad8;  sad8FuncPtr sad8;
34  sad16biFuncPtr sad16bi;  sad16biFuncPtr sad16bi;
35  sad8biFuncPtr sad8bi;           // not really sad16, but no difference in prototype  sad8biFuncPtr sad8bi;           /* not really sad16, but no difference in prototype */
36  dev16FuncPtr dev16;  dev16FuncPtr dev16;
37  sad16vFuncPtr sad16v;  sad16vFuncPtr sad16v;
38    sse8Func_16bitPtr sse8_16bit;
39    
40  sadInitFuncPtr sadInit;  sadInitFuncPtr sadInit;
41    
# Line 243  Line 229 
229                             int32_t *sad)                             int32_t *sad)
230  {  {
231          sad[0] = sad16(cur, ref, stride, 256*4096);          sad[0] = sad16(cur, ref, stride, 256*4096);
232          sad[1] = sad16(cur + 8, ref + 8, stride, 256*4096);          sad[1] = sad16(cur + 16, ref + 16, stride, 256*4096);
233          sad[2] = sad16(cur + 8*stride, ref + 8*stride, stride, 256*4096);          sad[2] = sad16(cur + 16*stride, ref + 16*stride, stride, 256*4096);
234          sad[3] = sad16(cur + 8*stride + 8, ref + 8*stride + 8, stride, 256*4096);          sad[3] = sad16(cur + 16*stride + 16, ref + 16*stride + 16, stride, 256*4096);
235    
236          return sad[0]+sad[1]+sad[2]+sad[3];          return sad[0]+sad[1]+sad[2]+sad[3];
237  }  }
# Line 291  Line 277 
277          }          }
278    
279          return MRSAD16_CORRFACTOR * sad;          return MRSAD16_CORRFACTOR * sad;
   
280  }  }
281    
282    uint32_t
283    sse8_16bit_c(const int16_t * b1,
284                             const int16_t * b2,
285                             const uint32_t stride)
286    {
287            int i;
288            int sse = 0;
289    
290            for (i=0; i<8; i++) {
291                    sse += (b1[0] - b2[0])*(b1[0] - b2[0]);
292                    sse += (b1[1] - b2[1])*(b1[1] - b2[1]);
293                    sse += (b1[2] - b2[2])*(b1[2] - b2[2]);
294                    sse += (b1[3] - b2[3])*(b1[3] - b2[3]);
295                    sse += (b1[4] - b2[4])*(b1[4] - b2[4]);
296                    sse += (b1[5] - b2[5])*(b1[5] - b2[5]);
297                    sse += (b1[6] - b2[6])*(b1[6] - b2[6]);
298                    sse += (b1[7] - b2[7])*(b1[7] - b2[7]);
299    
300                    b1 = (const int16_t*)((int8_t*)b1+stride);
301                    b2 = (const int16_t*)((int8_t*)b2+stride);
302            }
303    
304            return(sse);
305    }

Legend:
Removed from v.982  
changed lines
  Added in v.1205

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