summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/flacenc.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/libavcodec/flacenc.c b/libavcodec/flacenc.c
index 75d77d18da..aba02aba68 100644
--- a/libavcodec/flacenc.c
+++ b/libavcodec/flacenc.c
@@ -301,20 +301,19 @@ static void calc_sums(int pmax, uint32_t *data, int n, int pred_order,
uint32_t sums[][256])
{
int i, j;
- int parts, cnt;
- uint32_t *res;
+ int parts;
+ uint32_t *res, *res_end;
/* sums for highest level */
parts = (1 << pmax);
res = &data[pred_order];
- cnt = (n >> pmax) - pred_order;
+ res_end = &data[n >> pmax];
for(i=0; i<parts; i++) {
- if(i == 1) cnt = (n >> pmax);
- if(i > 0) res = &data[i*cnt];
sums[pmax][i] = 0;
- for(j=0; j<cnt; j++) {
- sums[pmax][i] += res[j];
+ while(res < res_end){
+ sums[pmax][i] += *(res++);
}
+ res_end+= n >> pmax;
}
/* sums for lower levels */
for(i=pmax-1; i>=0; i--) {