| 8 | namespace { |
| 9 | |
| 10 | void IdctResAddPred_ref (uint8_t* pPred, const int32_t kiStride, int16_t* pRs) { |
| 11 | int16_t iSrc[16]; |
| 12 | |
| 13 | uint8_t* pDst = pPred; |
| 14 | const int32_t kiStride2 = kiStride << 1; |
| 15 | const int32_t kiStride3 = kiStride + kiStride2; |
| 16 | int32_t i; |
| 17 | |
| 18 | for (i = 0; i < 4; i++) { |
| 19 | const int32_t kiY = i << 2; |
| 20 | const int32_t kiT0 = pRs[kiY] + pRs[kiY + 2]; |
| 21 | const int32_t kiT1 = pRs[kiY] - pRs[kiY + 2]; |
| 22 | const int32_t kiT2 = (pRs[kiY + 1] >> 1) - pRs[kiY + 3]; |
| 23 | const int32_t kiT3 = pRs[kiY + 1] + (pRs[kiY + 3] >> 1); |
| 24 | |
| 25 | iSrc[kiY] = kiT0 + kiT3; |
| 26 | iSrc[kiY + 1] = kiT1 + kiT2; |
| 27 | iSrc[kiY + 2] = kiT1 - kiT2; |
| 28 | iSrc[kiY + 3] = kiT0 - kiT3; |
| 29 | } |
| 30 | |
| 31 | for (i = 0; i < 4; i++) { |
| 32 | int32_t kT1 = iSrc[i] + iSrc[i + 8]; |
| 33 | int32_t kT2 = iSrc[i + 4] + (iSrc[i + 12] >> 1); |
| 34 | int32_t kT3 = (32 + kT1 + kT2) >> 6; |
| 35 | int32_t kT4 = (32 + kT1 - kT2) >> 6; |
| 36 | |
| 37 | pDst[i] = WelsClip1 (kT3 + pPred[i]); |
| 38 | pDst[i + kiStride3] = WelsClip1 (kT4 + pPred[i + kiStride3]); |
| 39 | |
| 40 | kT1 = iSrc[i] - iSrc[i + 8]; |
| 41 | kT2 = (iSrc[i + 4] >> 1) - iSrc[i + 12]; |
| 42 | pDst[i + kiStride] = WelsClip1 (((32 + kT1 + kT2) >> 6) + pDst[i + kiStride]); |
| 43 | pDst[i + kiStride2] = WelsClip1 (((32 + kT1 - kT2) >> 6) + pDst[i + kiStride2]); |
| 44 | } |
| 45 | } |
| 46 | |
| 47 | void SetNonZeroCount_ref (int8_t* pNonZeroCount) { |
| 48 | int32_t i; |
no test coverage detected