- // init per channel states
- for (i = 0; i < s->channels; i++) {
- s->ch_ctx[i].predictor = 0;
- ttafilter_init(&s->ch_ctx[i].filter, ttafilter_configs[s->bps-1][0], ttafilter_configs[s->bps-1][1]);
- rice_init(&s->ch_ctx[i].rice, 10, 10);
+ // init per channel states
+ for (i = 0; i < s->channels; i++) {
+ s->ch_ctx[i].predictor = 0;
+ ttafilter_init(&s->ch_ctx[i].filter, ttafilter_configs[s->bps-1]);
+ rice_init(&s->ch_ctx[i].rice, 10, 10);
+ }
+
+ i = 0;
+ for (p = s->decode_buffer; p < s->decode_buffer + (framelen * s->channels); p++) {
+ int32_t *predictor = &s->ch_ctx[cur_chan].predictor;
+ TTAFilter *filter = &s->ch_ctx[cur_chan].filter;
+ TTARice *rice = &s->ch_ctx[cur_chan].rice;
+ uint32_t unary, depth, k;
+ int32_t value;
+
+ unary = tta_get_unary(&s->gb);
+
+ if (unary == 0) {
+ depth = 0;
+ k = rice->k0;
+ } else {
+ depth = 1;
+ k = rice->k1;
+ unary--;