MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / calc_cache_8uc3_2

Function calc_cache_8uc3_2

dnn/src/arm_common/resize/resize_cv.cpp:600–626  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

598}
599
600void calc_cache_8uc3_2(
601 const Mat8u& src, const Mat8u& dst, const AlignedVector<int>& tabsx,
602 const AlignedVector<int>& tabsy, const AlignedVector<int>& tabrx,
603 const AlignedVector<int>& tabry, int dx, AlignedVector<int>& cache0,
604 AlignedVector<int>& cache1) {
605 (void)tabrx;
606 const uchar* psrc0 = src.ptr(tabsx[dx] + 0);
607 const uchar* psrc1 = src.ptr(tabsx[dx] + 1);
608 int dstcols = dst.cols();
609 int dy = 0, dy3 = 0;
610
611 // 4 pixels each time
612 for (; dy < dstcols; ++dy, dy3 += 3) {
613 const uchar* pcsrc00 = psrc0 + (tabsy[dy] + 0) * 3;
614 const uchar* pcsrc01 = psrc0 + (tabsy[dy] + 1) * 3;
615 const uchar* pcsrc10 = psrc1 + (tabsy[dy] + 0) * 3;
616 const uchar* pcsrc11 = psrc1 + (tabsy[dy] + 1) * 3;
617 int ry = tabry[dy];
618 int iry = (1 << SCALE) - ry;
619 cache0[dy3 + 0] = pcsrc01[0] * ry + pcsrc00[0] * iry;
620 cache1[dy3 + 0] = pcsrc11[0] * ry + pcsrc10[0] * iry;
621 cache0[dy3 + 1] = pcsrc01[1] * ry + pcsrc00[1] * iry;
622 cache1[dy3 + 1] = pcsrc11[1] * ry + pcsrc10[1] * iry;
623 cache0[dy3 + 2] = pcsrc01[2] * ry + pcsrc00[2] * iry;
624 cache1[dy3 + 2] = pcsrc11[2] * ry + pcsrc10[2] * iry;
625 }
626}
627
628void resize_linear_8u_neon(const Mat8u& src, Mat8u& dst) {
629 AlignedVector<int> tabsx(dst.rows());

Callers 1

resize_linear_8u_neonFunction · 0.70

Calls 2

ptrMethod · 0.45
colsMethod · 0.45

Tested by

no test coverage detected