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

Function IdctResAddPred8x8_ref

test/decoder/DecUT_IdctResAddPred.cpp:55–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

53}
54
55void IdctResAddPred8x8_ref (uint8_t* pPred, const int32_t kiStride, int16_t* pRs) {
56 int16_t p[8], b[8];
57 int16_t a[4];
58
59 int16_t iTmp[64];
60 int16_t iRes[64];
61
62 // Horizontal
63 for (int i = 0; i < 8; i++) {
64 for (int j = 0; j < 8; j++) {
65 p[j] = pRs[j + (i << 3)];
66 }
67 a[0] = p[0] + p[4];
68 a[1] = p[0] - p[4];
69 a[2] = p[6] - (p[2] >> 1);
70 a[3] = p[2] + (p[6] >> 1);
71
72 b[0] = a[0] + a[3];
73 b[2] = a[1] - a[2];
74 b[4] = a[1] + a[2];
75 b[6] = a[0] - a[3];
76
77 a[0] = -p[3] + p[5] - p[7] - (p[7] >> 1);
78 a[1] = p[1] + p[7] - p[3] - (p[3] >> 1);
79 a[2] = -p[1] + p[7] + p[5] + (p[5] >> 1);
80 a[3] = p[3] + p[5] + p[1] + (p[1] >> 1);
81
82 b[1] = a[0] + (a[3] >> 2);
83 b[3] = a[1] + (a[2] >> 2);
84 b[5] = a[2] - (a[1] >> 2);
85 b[7] = a[3] - (a[0] >> 2);
86
87 iTmp[0 + (i << 3)] = b[0] + b[7];
88 iTmp[1 + (i << 3)] = b[2] - b[5];
89 iTmp[2 + (i << 3)] = b[4] + b[3];
90 iTmp[3 + (i << 3)] = b[6] + b[1];
91 iTmp[4 + (i << 3)] = b[6] - b[1];
92 iTmp[5 + (i << 3)] = b[4] - b[3];
93 iTmp[6 + (i << 3)] = b[2] + b[5];
94 iTmp[7 + (i << 3)] = b[0] - b[7];
95 }
96
97 //Vertical
98 for (int i = 0; i < 8; i++) {
99 for (int j = 0; j < 8; j++) {
100 p[j] = iTmp[i + (j << 3)];
101 }
102
103 a[0] = p[0] + p[4];
104 a[1] = p[0] - p[4];
105 a[2] = p[6] - (p[2] >> 1);
106 a[3] = p[2] + (p[6] >> 1);
107
108 b[0] = a[0] + a[3];
109 b[2] = a[1] - a[2];
110 b[4] = a[1] + a[2];
111 b[6] = a[0] - a[3];
112

Callers

nothing calls this directly

Calls 1

WelsClip1Function · 0.85

Tested by

no test coverage detected