3 |
|
|
4 |
cbpFuncPtr calc_cbp; |
cbpFuncPtr calc_cbp; |
5 |
|
|
6 |
uint32_t calc_cbp_c(const int16_t codes[6][64]) |
/* |
7 |
|
* Returns a field of bits that indicates non zero ac blocks |
8 |
|
* for this macro block |
9 |
|
*/ |
10 |
|
uint32_t |
11 |
|
calc_cbp_c(const int16_t codes[6 * 64]) |
12 |
{ |
{ |
13 |
uint32_t i, j; |
uint32_t i, j; |
14 |
uint32_t cbp = 0; |
uint32_t cbp = 0; |
15 |
|
|
16 |
for (i = 0; i < 6; i++) { |
for (i = 0; i < 6; i++) { |
17 |
for (j = 1; j < 64/4; j+=4) { |
for (j = 1; j < 61; j += 4) { |
18 |
if (codes[i][j] |codes[i][j+1]| |
if (codes[i * 64 + j] | codes[i * 64 + j + 1] | |
19 |
codes[i][j+2]|codes[i][j+3]) { |
codes[i * 64 + j + 2] | codes[i * 64 + j + 3]) { |
20 |
cbp |= 1 << (5 - i); |
cbp |= 1 << (5 - i); |
21 |
break; |
break; |
22 |
} |
} |
23 |
} |
} |
24 |
|
|
25 |
|
if (codes[i * 64 + j] | codes[i * 64 + j + 1] | codes[i * 64 + j + 2]) |
26 |
|
cbp |= 1 << (5 - i); |
27 |
|
|
28 |
} |
} |
29 |
|
|
30 |
return cbp; |
return cbp; |
31 |
|
|
32 |
} |
} |