|
|
|
@ -67,6 +67,7 @@ typedef struct RiceContext { |
|
|
|
|
enum CodingMode coding_mode; |
|
|
|
|
int porder; |
|
|
|
|
int params[MAX_PARTITIONS]; |
|
|
|
|
uint32_t udata[FLAC_MAX_BLOCKSIZE]; |
|
|
|
|
} RiceContext; |
|
|
|
|
|
|
|
|
|
typedef struct FlacSubframe { |
|
|
|
@ -616,7 +617,6 @@ static uint64_t calc_rice_params(RiceContext *rc, int pmin, int pmax, |
|
|
|
|
uint64_t bits[MAX_PARTITION_ORDER+1]; |
|
|
|
|
int opt_porder; |
|
|
|
|
RiceContext tmp_rc; |
|
|
|
|
uint32_t *udata; |
|
|
|
|
uint64_t sums[MAX_PARTITION_ORDER + 1][MAX_PARTITIONS] = { { 0 } }; |
|
|
|
|
|
|
|
|
|
assert(pmin >= 0 && pmin <= MAX_PARTITION_ORDER); |
|
|
|
@ -625,11 +625,10 @@ static uint64_t calc_rice_params(RiceContext *rc, int pmin, int pmax, |
|
|
|
|
|
|
|
|
|
tmp_rc.coding_mode = rc->coding_mode; |
|
|
|
|
|
|
|
|
|
udata = av_malloc(n * sizeof(uint32_t)); |
|
|
|
|
for (i = 0; i < n; i++) |
|
|
|
|
udata[i] = (2*data[i]) ^ (data[i]>>31); |
|
|
|
|
rc->udata[i] = (2 * data[i]) ^ (data[i] >> 31); |
|
|
|
|
|
|
|
|
|
calc_sums(pmin, pmax, udata, n, pred_order, sums); |
|
|
|
|
calc_sums(pmin, pmax, rc->udata, n, pred_order, sums); |
|
|
|
|
|
|
|
|
|
opt_porder = pmin; |
|
|
|
|
bits[pmin] = UINT32_MAX; |
|
|
|
@ -641,7 +640,6 @@ static uint64_t calc_rice_params(RiceContext *rc, int pmin, int pmax, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
av_freep(&udata); |
|
|
|
|
return bits[opt_porder]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|