--- trunk/xvidcore/src/bitstream/cbp.c 2002/03/08 02:46:11 3 +++ trunk/xvidcore/src/bitstream/cbp.c 2002/03/28 21:07:26 79 @@ -3,19 +3,32 @@ cbpFuncPtr calc_cbp; -uint32_t calc_cbp_c(const int16_t codes[6][64]) +/* + * Returns a field of bits that indicates non zero ac blocks + * for this macro block + */ +uint32_t calc_cbp_c(const int16_t codes[6*64]) { - uint32_t i, j; - uint32_t cbp = 0; + uint32_t i, j; + uint32_t cbp = 0; - for (i = 0; i < 6; i++) { - for (j = 1; j < 64/4; j+=4) { - if (codes[i][j] |codes[i][j+1]| - codes[i][j+2]|codes[i][j+3]) { + for (i = 0; i < 6; i++) + { + for (j = 1; j < 61; j+=4) + { + if (codes[i*64 + j ]|codes[i*64 + j + 1]| + codes[i*64 + j + 2]|codes[i*64 + j + 3]) + { cbp |= 1 << (5 - i); break; } } - } - return cbp; + + if(codes[i*64 + j]|codes[i*64 + j + 1]|codes[i*64 + j + 2]) + cbp |= 1 << (5 - i); + + } + + return cbp; + }