Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

template<class DstArrayT, class SrcArrayT, class ExtraArrayT, class Extra2ArrayT, class NgbT>
void Impala::Core::Array::Pattern::FuncNgbOp2dExtra2_Row ( DstArrayT *  dst,
SrcArrayT *  src,
ExtraArrayT *  extra,
Extra2ArrayT *  extra2,
NgbT &  ngb,
int  y,
TagNPhase  dummy1,
TagLoop  dummy2 
) [inline]

Row : phase N, loop.

Definition at line 297 of file FuncNgbOp2dExtra2.h.

References ArrayCPB(), ArrayCW(), ArrayInc(), FuncNgbOp2dExtra2_Pix_P1Loop(), PtrRead(), and PtrWrite().

00300 {
00301     typedef typename DstArrayT::StorType DstStorT;
00302     typedef typename DstArrayT::ArithType DstArithT;
00303     typedef typename SrcArrayT::StorType SrcStorT;
00304     typedef typename SrcArrayT::ArithType SrcArithT;
00305     typedef typename ExtraArrayT::StorType ExtraStorT;
00306     typedef typename ExtraArrayT::ArithType ExtraArithT;
00307     typedef typename Extra2ArrayT::StorType Extra2StorT;
00308     typedef typename Extra2ArrayT::ArithType Extra2ArithT;
00309 
00310     int ngbWidth = ngb.Width();
00311     int ngbHeight = ngb.Height();
00312     int width = ArrayCW(dst);
00313     DstStorT* dPtr = ArrayCPB(dst, 0, y);
00314     SrcStorT* sPtr = ArrayCPB(src, -ngbWidth/2, y-ngbHeight/2);
00315     SrcStorT* ePtr = ArrayCPB(extra, -ngbWidth/2, y-ngbHeight/2);
00316     SrcStorT* e2Ptr = ArrayCPB(extra2, -ngbWidth/2, y-ngbHeight/2);
00317     SrcStorT* cenPtr = ArrayCPB(src, 0, y);
00318     SrcStorT* ecenPtr = ArrayCPB(extra, 0, y);
00319     SrcStorT* e2cenPtr = ArrayCPB(extra2, 0, y);
00320     int srcIncX = ArrayInc(src, 1, 0);
00321     int srcIncY = ArrayInc(src, -ngbWidth, 1);
00322     int extraIncX = ArrayInc(extra, 1, 0);
00323     int extraIncY = ArrayInc(extra, -ngbWidth, 1);
00324     int extra2IncX = ArrayInc(extra2, 1, 0);
00325     int extra2IncY = ArrayInc(extra2, -ngbWidth, 1);
00326     for (int x=0 ; x<width ; x++)
00327     {
00328         int phase = 1;
00329         do
00330         {
00331             ngb.Init(phase, x, y, PtrRead(cenPtr, SrcArithT()),
00332                      PtrRead(ecenPtr, ExtraArithT()),
00333                      PtrRead(e2cenPtr, Extra2ArithT()));
00334             FuncNgbOp2dExtra2_Pix_P1Loop(sPtr, ePtr, e2Ptr, ngb,
00335                                          ngbWidth, ngbHeight,
00336                                          srcIncX, srcIncY, SrcArithT(),
00337                                          extraIncX, extraIncY, ExtraArithT(),
00338                                          extra2IncX, extra2IncY, Extra2ArithT());
00339             ngb.Done(phase);
00340         }
00341         while (ngb.HasNextPhase(phase++));
00342         PtrWrite(dPtr, ngb.Result());
00343         dPtr += DstArrayT::ElemSize();
00344         sPtr += SrcArrayT::ElemSize();
00345         ePtr += ExtraArrayT::ElemSize();
00346         e2Ptr += Extra2ArrayT::ElemSize();
00347         cenPtr += SrcArrayT::ElemSize();
00348         ecenPtr += ExtraArrayT::ElemSize();
00349         e2cenPtr += Extra2ArrayT::ElemSize();
00350     }
00351 }

Here is the call graph for this function:


Generated on Fri Mar 19 11:01:37 2010 for ImpalaSrc by  doxygen 1.5.1