|
|
|
@ -1704,35 +1704,6 @@ static void add_8x8basis_c(int16_t rem[64], int16_t basis[64], int scale){ |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Permute an 8x8 block. |
|
|
|
|
* @param block the block which will be permuted according to the given permutation vector |
|
|
|
|
* @param permutation the permutation vector |
|
|
|
|
* @param last the last non zero coefficient in scantable order, used to speed the permutation up |
|
|
|
|
* @param scantable the used scantable, this is only used to speed the permutation up, the block is not |
|
|
|
|
* (inverse) permutated to scantable order! |
|
|
|
|
*/ |
|
|
|
|
void ff_block_permute(int16_t *block, uint8_t *permutation, const uint8_t *scantable, int last) |
|
|
|
|
{ |
|
|
|
|
int i; |
|
|
|
|
int16_t temp[64]; |
|
|
|
|
|
|
|
|
|
if(last<=0) return; |
|
|
|
|
//if(permutation[1]==1) return; //FIXME it is ok but not clean and might fail for some permutations
|
|
|
|
|
|
|
|
|
|
for(i=0; i<=last; i++){ |
|
|
|
|
const int j= scantable[i]; |
|
|
|
|
temp[j]= block[j]; |
|
|
|
|
block[j]=0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for(i=0; i<=last; i++){ |
|
|
|
|
const int j= scantable[i]; |
|
|
|
|
const int perm_j= permutation[j]; |
|
|
|
|
block[perm_j]= temp[j]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int zero_cmp(void *s, uint8_t *a, uint8_t *b, int stride, int h){ |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|