dslinux/user/pixil/packages/dvdview/dvdview/libvideogfx/libvideogfx/graphics/motvec Makefile.am Makefile.in blkcmp.hh full.cc full.hh mv.cc mv.hh

amadeus dslinux_amadeus at user.in-berlin.de
Tue Oct 3 13:25:42 CEST 2006


Update of /cvsroot/dslinux/dslinux/user/pixil/packages/dvdview/dvdview/libvideogfx/libvideogfx/graphics/motvec
In directory antilope:/tmp/cvs-serv11916/packages/dvdview/dvdview/libvideogfx/libvideogfx/graphics/motvec

Added Files:
	Makefile.am Makefile.in blkcmp.hh full.cc full.hh mv.cc mv.hh 
Log Message:
adding pristine copy of pixil to HEAD so I can branch from it

--- NEW FILE: mv.hh ---
/*********************************************************************
  mv.hh

  purpose:

  notes:

  to do:

  author(s):
   - Dirk Farin, farin at ti.uni-mannheim.de
     University Mannheim, Dept. Circuitry and Simulation
     B 6,26 EG, room 0.10 / D-68131 Mannheim / Germany

  modifications:
   25/May/99 - Dirk Farin
     - first implementation
 *********************************************************************/

#ifndef LIBVIDEOGFX_GRAPHICS_MOTVEC_MV_HH
#define LIBVIDEOGFX_GRAPHICS_MOTVEC_MV_HH

#include "libvideogfx/graphics/basic/bitmap.hh"


struct FullSearchData
{
  Bitmap<int> error;
};

struct MotVec
{
  int h,v;
};

#endif

--- NEW FILE: full.cc ---
/*
 *  full.cc
 */

#include <iostream.h>

#include "full.hh"


inline int Abs(int a)
{
  if (a<0) return -a; else return a;
}

void CalcFullSearch(const Bitmap<Pixel>& img1,const Bitmap<Pixel>& img2,
		    Bitmap<FullSearchData>* searchdata,
		    Bitmap<MotVec>* motiondata,
		    int hblksize,int vblksize,int hrange,int vrange)
{
  assert(img1.AskWidth()  == img2.AskWidth());
  assert(img1.AskHeight() == img2.AskHeight());

  int width  = img1.AskWidth();
  int height = img1.AskHeight();

  int hsize = (img1.AskWidth() +hblksize-1)/hblksize;
  int vsize = (img1.AskHeight()+vblksize-1)/vblksize;

  FullSearchData*const* fsdptr = NULL;
  MotVec*const* mvptr = NULL;
  if (searchdata) { searchdata->Create(hsize,vsize); fsdptr = searchdata->AskFrame(); }
  if (motiondata) { motiondata->Create(hsize,vsize); mvptr = motiondata->AskFrame(); }

  const Pixel*const* i1 = img1.AskFrame_const();
  const Pixel*const* i2 = img2.AskFrame_const();

  for (int y=0;y<vsize;y++)
    { cout << '.'; cout.flush();
    for (int x=0;x<hsize;x++)
      {
	int*const* fsderr = NULL;
	if (fsdptr)
	  {
	    FullSearchData& fsd = fsdptr[y][x];
	    fsd.error.Create(2*hrange+1,2*vrange+1);
	    fsderr = fsd.error.AskFrame();
	  }

	int x0 = x*hblksize;
	int y0 = y*vblksize;

	int besterror = 0x7FFFFFFF;
	int besth=0,bestv=0;

	for (int dy=-vrange;dy<=vrange;dy++)
	  for (int dx=-hrange;dx<=hrange;dx++)
	    {
	      int error;

	      if (x0+dx < 0 || y0+dy < 0 ||
		  x0+hblksize+dx > width ||
		  y0+vblksize+dy > height)
		{
		  error = 0x7FFFFFFF;
		}
	      else
		{
		  error = 0;
		  for (int yy=0;yy<vblksize;yy++)
		    for (int xx=0;xx<hblksize;xx++)
		      error += Abs(i1[y0+yy][x0+xx] - i2[y0+yy+dy][x0+xx+dx]);
		}

	      if ((error<besterror) ||
		  (error==besterror && Abs(dy)+Abs(dx) < Abs(besth)+Abs(bestv)))
		{
		  besterror = error;
		  besth = dx;
		  bestv = dy;
		}

	      if (fsderr) fsderr[dy+vrange][dx+hrange] = error;
	    }

	if (mvptr)
	  {
	    mvptr[y][x].h = besth;
	    mvptr[y][x].v = bestv;
	  }
      }
    }
}

--- NEW FILE: Makefile.am ---
## Makefile.am for libvideogfx/libvideogfx/graphics/motvec

noinst_LTLIBRARIES = libvideogfx-graphics-motvec.la

libvideogfx_graphics_motvec_la_SOURCES = \
	blkcmp.hh	\
	full.cc		\
	full.hh		\
	mv.cc		\
	mv.hh

INCLUDES = \
	-I$(top_srcdir)

.PHONY: files

files:
	@files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \
	  echo $$p; \
	done

--- NEW FILE: full.hh ---
/*********************************************************************
  full.hh

  purpose:

  notes:

  to do:

  author(s):
   - Dirk Farin, farin at ti.uni-mannheim.de
     University Mannheim, Dept. Circuitry and Simulation
     B 6,26 EG, room 0.10 / D-68131 Mannheim / Germany

  modifications:
   25/May/99 - Dirk Farin
     - first implementation
 *********************************************************************/

#ifndef LIBVIDEOGFX_GRAPHICS_MOTVEC_FULL_HH
#define LIBVIDEOGFX_GRAPHICS_MOTVEC_FULL_HH

#include "libvideogfx/graphics/basic/bitmap.hh"
#include "libvideogfx/graphics/motvec/mv.hh"


void CalcFullSearch(const Bitmap<Pixel>& img1,const Bitmap<Pixel>& img2,
		    Bitmap<FullSearchData>* searchdata,
		    Bitmap<MotVec>* motiondata,
		    int hblksize,int vblksize,int hrange,int vrange);

#endif

--- NEW FILE: Makefile.in ---
# Makefile.in generated automatically by automake 1.4 from Makefile.am

# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.


SHELL = @SHELL@

srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@

bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include

DESTDIR =

pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@

top_builddir = ../../..

ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@

INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@

NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_alias = @build_alias@
build_triplet = @build@
host_alias = @host_alias@
host_triplet = @host@
target_alias = @target_alias@
target_triplet = @target@
AS = @AS@
CC = @CC@
CXX = @CXX@
DLLTOOL = @DLLTOOL@
LIBTOOL = @LIBTOOL@
LIBVIDEOGFX_BINARY_AGE = @LIBVIDEOGFX_BINARY_AGE@
LIBVIDEOGFX_INTERFACE_AGE = @LIBVIDEOGFX_INTERFACE_AGE@
LIBVIDEOGFX_MAJOR_VERSION = @LIBVIDEOGFX_MAJOR_VERSION@
LIBVIDEOGFX_MICRO_VERSION = @LIBVIDEOGFX_MICRO_VERSION@
LIBVIDEOGFX_MINOR_VERSION = @LIBVIDEOGFX_MINOR_VERSION@
LIBVIDEOGFX_VERSION = @LIBVIDEOGFX_VERSION@
LN_S = @LN_S@
LT_AGE = @LT_AGE@
LT_CURRENT = @LT_CURRENT@
LT_RELEASE = @LT_RELEASE@
LT_REVISION = @LT_REVISION@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
PACKAGE = @PACKAGE@
RANLIB = @RANLIB@
VERSION = @VERSION@
X_LDFLAGS = @X_LDFLAGS@

noinst_LTLIBRARIES = libvideogfx-graphics-motvec.la

libvideogfx_graphics_motvec_la_SOURCES =  	blkcmp.hh		full.cc			full.hh			mv.cc			mv.hh


INCLUDES =  	-I$(top_srcdir)

mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../../../config.h
CONFIG_CLEAN_FILES = 
LTLIBRARIES =  $(noinst_LTLIBRARIES)


DEFS = @DEFS@ -I. -I$(srcdir) -I../../..
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
X_CFLAGS = @X_CFLAGS@
X_LIBS = @X_LIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_PRE_LIBS = @X_PRE_LIBS@
libvideogfx_graphics_motvec_la_LDFLAGS = 
libvideogfx_graphics_motvec_la_LIBADD = 
libvideogfx_graphics_motvec_la_OBJECTS =  full.lo mv.lo
CXXFLAGS = @CXXFLAGS@
CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
DIST_COMMON =  Makefile.am Makefile.in


DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)

TAR = gtar
GZIP_ENV = --best
DEP_FILES =  .deps/full.P .deps/mv.P
SOURCES = $(libvideogfx_graphics_motvec_la_SOURCES)
OBJECTS = $(libvideogfx_graphics_motvec_la_OBJECTS)

all: all-redirect
.SUFFIXES:
.SUFFIXES: .S .c .cc .lo .o .s
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
	cd $(top_srcdir) && $(AUTOMAKE) --gnu libvideogfx/graphics/motvec/Makefile

Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status $(BUILT_SOURCES)
	cd $(top_builddir) \
	  && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status


mostlyclean-noinstLTLIBRARIES:

clean-noinstLTLIBRARIES:
	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)

distclean-noinstLTLIBRARIES:

maintainer-clean-noinstLTLIBRARIES:

.s.o:
	$(COMPILE) -c $<

.S.o:
	$(COMPILE) -c $<

mostlyclean-compile:
	-rm -f *.o core *.core

clean-compile:

distclean-compile:
	-rm -f *.tab.c

maintainer-clean-compile:

.s.lo:
	$(LIBTOOL) --mode=compile $(COMPILE) -c $<

.S.lo:
	$(LIBTOOL) --mode=compile $(COMPILE) -c $<

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs

distclean-libtool:

maintainer-clean-libtool:

libvideogfx-graphics-motvec.la: $(libvideogfx_graphics_motvec_la_OBJECTS) $(libvideogfx_graphics_motvec_la_DEPENDENCIES)
	$(CXXLINK)  $(libvideogfx_graphics_motvec_la_LDFLAGS) $(libvideogfx_graphics_motvec_la_OBJECTS) $(libvideogfx_graphics_motvec_la_LIBADD) $(LIBS)
.cc.o:
	$(CXXCOMPILE) -c $<
.cc.lo:
	$(LTCXXCOMPILE) -c $<

tags: TAGS

ID: $(HEADERS) $(SOURCES) $(LISP)
	list='$(SOURCES) $(HEADERS)'; \
	unique=`for i in $$list; do echo $$i; done | \
	  awk '    { files[$$0] = 1; } \
	       END { for (i in files) print i; }'`; \
	here=`pwd` && cd $(srcdir) \
	  && mkid -f$$here/ID $$unique $(LISP)

TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
	tags=; \
	here=`pwd`; \
	list='$(SOURCES) $(HEADERS)'; \
	unique=`for i in $$list; do echo $$i; done | \
	  awk '    { files[$$0] = 1; } \
	       END { for (i in files) print i; }'`; \
	test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
	  || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS)

mostlyclean-tags:

clean-tags:

distclean-tags:
	-rm -f TAGS ID

maintainer-clean-tags:

distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)

subdir = libvideogfx/graphics/motvec

distdir: $(DISTFILES)
	here=`cd $(top_builddir) && pwd`; \
	top_distdir=`cd $(top_distdir) && pwd`; \
	distdir=`cd $(distdir) && pwd`; \
	cd $(top_srcdir) \
	  && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu libvideogfx/graphics/motvec/Makefile
	@for file in $(DISTFILES); do \
	  d=$(srcdir); \
	  if test -d $$d/$$file; then \
	    cp -pr $$d/$$file $(distdir)/$$file; \
	  else \
	    test -f $(distdir)/$$file \
	    || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
	    || cp -p $$d/$$file $(distdir)/$$file || :; \
	  fi; \
	done

DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)

-include $(DEP_FILES)

mostlyclean-depend:

clean-depend:

distclean-depend:
	-rm -rf .deps

maintainer-clean-depend:

%.o: %.c
	@echo '$(COMPILE) -c $<'; \
	$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
	@-cp .deps/$(*F).pp .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
	  | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
	    >> .deps/$(*F).P; \
	rm .deps/$(*F).pp

%.lo: %.c
	@echo '$(LTCOMPILE) -c $<'; \
	$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
	@-sed -e 's/^\([^:]*\)\.o[ 	]*:/\1.lo \1.o :/' \
	  < .deps/$(*F).pp > .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
	  | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
	    >> .deps/$(*F).P; \
	rm -f .deps/$(*F).pp

%.o: %.cc
	@echo '$(CXXCOMPILE) -c $<'; \
	$(CXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
	@-cp .deps/$(*F).pp .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
	  | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
	    >> .deps/$(*F).P; \
	rm .deps/$(*F).pp

%.lo: %.cc
	@echo '$(LTCXXCOMPILE) -c $<'; \
	$(LTCXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
	@-sed -e 's/^\([^:]*\)\.o[ 	]*:/\1.lo \1.o :/' \
	  < .deps/$(*F).pp > .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
	  | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
	    >> .deps/$(*F).P; \
	rm -f .deps/$(*F).pp
info-am:
info: info-am
dvi-am:
dvi: dvi-am
check-am: all-am
check: check-am
installcheck-am:
installcheck: installcheck-am
install-exec-am:
install-exec: install-exec-am

install-data-am:
install-data: install-data-am

install-am: all-am
	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am:
uninstall: uninstall-am
all-am: Makefile $(LTLIBRARIES)
all-redirect: all-am
install-strip:
	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:


mostlyclean-generic:

clean-generic:

distclean-generic:
	-rm -f Makefile $(CONFIG_CLEAN_FILES)
	-rm -f config.cache config.log stamp-h stamp-h[0-9]*

maintainer-clean-generic:
mostlyclean-am:  mostlyclean-noinstLTLIBRARIES mostlyclean-compile \
		mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
		mostlyclean-generic

mostlyclean: mostlyclean-am

clean-am:  clean-noinstLTLIBRARIES clean-compile clean-libtool \
		clean-tags clean-depend clean-generic mostlyclean-am

clean: clean-am

distclean-am:  distclean-noinstLTLIBRARIES distclean-compile \
		distclean-libtool distclean-tags distclean-depend \
		distclean-generic clean-am
	-rm -f libtool

distclean: distclean-am

maintainer-clean-am:  maintainer-clean-noinstLTLIBRARIES \
		maintainer-clean-compile maintainer-clean-libtool \
		maintainer-clean-tags maintainer-clean-depend \
		maintainer-clean-generic distclean-am
	@echo "This command is intended for maintainers to use;"
	@echo "it deletes files that may require special tools to rebuild."

maintainer-clean: maintainer-clean-am

.PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \
clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile mostlyclean-libtool distclean-libtool \
clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir \
mostlyclean-depend distclean-depend clean-depend \
maintainer-clean-depend info-am info dvi-am dvi check check-am \
installcheck-am installcheck install-exec-am install-exec \
install-data-am install-data install-am install uninstall-am uninstall \
all-redirect all-am all installdirs mostlyclean-generic \
distclean-generic clean-generic maintainer-clean-generic clean \
mostlyclean distclean maintainer-clean


.PHONY: files

files:
	@files=`ls $(DISTFILES) 2> /dev/null`; for p in $$files; do \
	  echo $$p; \
	done

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

--- NEW FILE: mv.cc ---
/*
 *  mv.cc
 */

#include "mv.hh"


template class Bitmap<int>;
template class Bitmap<MotVec>;
template class Bitmap<FullSearchData>;


#include "libvideogfx/graphics/basic/bitmap.cc"

--- NEW FILE: blkcmp.hh ---
/*********************************************************************
  blkcmp.hh

  purpose:
    Block-compare code including KNI (MMX2) instruction set optimized
    version.

  notes:
    !!! Don't forget to call EMMS() before using any floating-point
    arithmetic when using the MMX-version !!!

  to do:

  author(s):
   - Dirk Farin, farin at ti.uni-mannheim.de
     University Mannheim, Dept. Circuitry and Simulation
     B 6,26 EG, room 0.10 / D-68131 Mannheim / Germany

  modifications:
   11/Jul/2000 - Dirk Farin
     - first implementation
 *********************************************************************/

#ifndef LIBVIDEOGFX_GRAPHICS_MOTVEC_BLKCMP_KNI_HH
#define LIBVIDEOGFX_GRAPHICS_MOTVEC_BLKCMP_KNI_HH

#include "libvideogfx/graphics/basic/bitmap.hh"


#if ENABLE_MMX
inline int ComputeSAD_w16(const Pixel*const* blkrows_1,int h0_1,
			  const Pixel*const* blkrows_2,int h0_2,
			  int blk_height,
			  int max_error_threshold)
{
  volatile uint32 error;

  __asm__
    (
     "pxor %mm0,%mm0\n\t"
     );

  for (int dv=0; dv<blk_height; dv++) {
    const Pixel*const p1 = &blkrows_1[dv][h0_1];
    const Pixel*const p2 = &blkrows_2[dv][h0_2];

    __asm__ __volatile__ 
      (
       "movq   (%0),%%mm1\n\t"
       "psadbw (%1),%%mm1\n\t"
       "paddw  %%mm1,%%mm0\n\t"
	 
       "movq   8(%0),%%mm2\n\t"
       "psadbw 8(%1),%%mm2\n\t"
       "paddw  %%mm2,%%mm0\n\t"

       "movd   %%mm0,(%2)\n\t"

       : : "r" (p1), "r" (p2), "r" (&error)
       );

    if (error>max_error_threshold)
      return error+1;
  }

  return error;
}

inline void EMMS()
{
  __asm__
    (
     "emms\n\t"
     );
}
#else
inline int ComputeSAD_w16(const Pixel*const* blkrows_1,int h0_1,
			  const Pixel*const* blkrows_2,int h0_2,
			  int blk_height,
			  int max_error_threshold)
{
  uint32 error=0;

  for (int dv=0; dv<blk_height; dv++) {
    const Pixel* p1 = &blkrows_1[dv][h0_1];
    const Pixel* p2 = &blkrows_2[dv][h0_2];

    for (int dh=0; dh<16; dh+=4) {
      int diff1 = abs(p1[0]-p2[0]);
      int diff2 = abs(p1[1]-p2[1]);
      int diff3 = abs(p1[2]-p2[2]);
      int diff4 = abs(p1[3]-p2[3]);
      diff1 += diff2;
      diff3 += diff4;
      diff1 += diff3;
      error += diff1;
      p1 += 4;
      p2 += 4;
    }

    if (error>max_error_threshold)
      return error+1;
  }

  return error;
}

inline void EMMS() { }
#endif

#endif




More information about the dslinux-commit mailing list