MCPcopy Create free account
hub / github.com/cisco/openh264 / IdctResAddPred_ref

Function IdctResAddPred_ref

test/decoder/DecUT_IdctResAddPred.cpp:10–45  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8namespace {
9
10void 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
47void SetNonZeroCount_ref (int8_t* pNonZeroCount) {
48 int32_t i;

Callers 1

IdctFourResAddPred_refFunction · 0.85

Calls 1

WelsClip1Function · 0.85

Tested by

no test coverage detected