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,
Tag2Phase  dummy1,
TagLoop  dummy2 
) [inline]

Row : phase 2, loop.

Definition at line 235 of file FuncNgbOp2dExtra2.h.

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

00238 {
00239     typedef typename DstArrayT::StorType DstStorT;
00240     typedef typename DstArrayT::ArithType DstArithT;
00241     typedef typename SrcArrayT::StorType SrcStorT;
00242     typedef typename SrcArrayT::ArithType SrcArithT;
00243     typedef typename ExtraArrayT::StorType ExtraStorT;
00244     typedef typename ExtraArrayT::ArithType ExtraArithT;
00245     typedef typename Extra2ArrayT::StorType Extra2StorT;
00246     typedef typename Extra2ArrayT::ArithType Extra2ArithT;
00247 
00248     int ngbWidth = ngb.Width();
00249     int ngbHeight = ngb.Height();
00250     int width = ArrayCW(dst);
00251     DstStorT* dPtr = ArrayCPB(dst, 0, y);
00252     SrcStorT* sPtr = ArrayCPB(src, -ngbWidth/2, y-ngbHeight/2);
00253     SrcStorT* ePtr = ArrayCPB(extra, -ngbWidth/2, y-ngbHeight/2);
00254     SrcStorT* e2Ptr = ArrayCPB(extra2, -ngbWidth/2, y-ngbHeight/2);
00255     SrcStorT* cenPtr = ArrayCPB(src, 0, y);
00256     SrcStorT* ecenPtr = ArrayCPB(extra, 0, y);
00257     SrcStorT* e2cenPtr = ArrayCPB(extra2, 0, y);
00258     int srcIncX = ArrayInc(src, 1, 0);
00259     int srcIncY = ArrayInc(src, -ngbWidth, 1);
00260     int extraIncX = ArrayInc(extra, 1, 0);
00261     int extraIncY = ArrayInc(extra, -ngbWidth, 1);
00262     int extra2IncX = ArrayInc(extra2, 1, 0);
00263     int extra2IncY = ArrayInc(extra2, -ngbWidth, 1);
00264     for (int x=0 ; x<width ; x++)
00265     {
00266         ngb.Init(x, y, PtrRead(cenPtr, SrcArithT()),
00267                  PtrRead(ecenPtr, ExtraArithT()),
00268                  PtrRead(e2cenPtr, Extra2ArithT()));
00269         FuncNgbOp2dExtra2_Pix_P1Loop(sPtr, ePtr, e2Ptr, ngb, ngbWidth, ngbHeight,
00270                                      srcIncX, srcIncY, SrcArithT(),
00271                                      extraIncX, extraIncY, ExtraArithT(),
00272                                      extra2IncX, extra2IncY, Extra2ArithT());
00273         ngb.Init2(x, y, PtrRead(cenPtr, SrcArithT()),
00274                   PtrRead(ecenPtr, ExtraArithT()),
00275                   PtrRead(e2cenPtr, Extra2ArithT()));
00276         FuncNgbOp2dExtra2_Pix_P2Loop(sPtr, ePtr, e2Ptr, ngb, ngbWidth, ngbHeight,
00277                                      srcIncX, srcIncY, SrcArithT(),
00278                                      extraIncX, extraIncY, ExtraArithT(),
00279                                      extra2IncX, extra2IncY, Extra2ArithT());
00280         PtrWrite(dPtr, ngb.Result());
00281         dPtr += DstArrayT::ElemSize();
00282         sPtr += SrcArrayT::ElemSize();
00283         ePtr += ExtraArrayT::ElemSize();
00284         e2Ptr += Extra2ArrayT::ElemSize();
00285         cenPtr += SrcArrayT::ElemSize();
00286         ecenPtr += ExtraArrayT::ElemSize();
00287         e2cenPtr += Extra2ArrayT::ElemSize();
00288     }
00289 }

Here is the call graph for this function:


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