in cpp/spectrum/core/proc/legacy/Sharpener.cpp [147:181]
void Sharpener::sharpenY() {
// assign rows, handle edge cases
int32_t* pRow0 = NULL;
int32_t* pRow1 = NULL;
int32_t* pRow2 = NULL;
if (mRow == 2) {
// first row
pRow0 = (mIntermediateRows[0].data());
pRow1 = (mIntermediateRows[0].data());
pRow2 = (mIntermediateRows[1].data());
} else if (mRow > mHeight) {
// last row
pRow0 = (mIntermediateRows[(mHead + 1) % KERNEL_WIDTH].data());
pRow1 = (mIntermediateRows[mTail].data());
pRow2 = (mIntermediateRows[mTail].data());
} else {
pRow0 = (mIntermediateRows[mHead].data());
pRow1 = (mIntermediateRows[(mHead + 1) % KERNEL_WIDTH].data());
pRow2 = (mIntermediateRows[mTail].data());
}
// sharpen across y dimension
std::fill(mYSharpenBuffer.begin(), mYSharpenBuffer.end(), 0);
int32_t* pBuf = mYSharpenBuffer.data();
for (std::uint32_t x = 0; x < mWidth; ++x) {
AddWeightedPixelQ11(mOutputComponents, pBuf, pRow0, KERNEL_Q11[0]);
AddWeightedPixelQ11(mOutputComponents, pBuf, pRow1, KERNEL_Q11[1]);
AddWeightedPixelQ11(mOutputComponents, pBuf, pRow2, KERNEL_Q11[2]);
pBuf += mOutputComponents;
pRow0 += mOutputComponents;
pRow1 += mOutputComponents;
pRow2 += mOutputComponents;
}
}