void Sharpener::sharpenY()

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;
  }
}