Lines Matching refs:dec
82 static void truespeech_read_frame(TSContext *dec, const uint8_t *input)
86 dec->bdsp.bswap_buf((uint32_t *) dec->buffer, (const uint32_t *) input, 8);
87 init_get_bits(&gb, dec->buffer, 32 * 8);
89 dec->vector[7] = ts_codebook[7][get_bits(&gb, 3)];
90 dec->vector[6] = ts_codebook[6][get_bits(&gb, 3)];
91 dec->vector[5] = ts_codebook[5][get_bits(&gb, 3)];
92 dec->vector[4] = ts_codebook[4][get_bits(&gb, 4)];
93 dec->vector[3] = ts_codebook[3][get_bits(&gb, 4)];
94 dec->vector[2] = ts_codebook[2][get_bits(&gb, 4)];
95 dec->vector[1] = ts_codebook[1][get_bits(&gb, 5)];
96 dec->vector[0] = ts_codebook[0][get_bits(&gb, 5)];
97 dec->flag = get_bits1(&gb);
99 dec->offset1[0] = get_bits(&gb, 4) << 4;
100 dec->offset2[3] = get_bits(&gb, 7);
101 dec->offset2[2] = get_bits(&gb, 7);
102 dec->offset2[1] = get_bits(&gb, 7);
103 dec->offset2[0] = get_bits(&gb, 7);
105 dec->offset1[1] = get_bits(&gb, 4);
106 dec->pulseval[1] = get_bits(&gb, 14);
107 dec->pulseval[0] = get_bits(&gb, 14);
109 dec->offset1[1] |= get_bits(&gb, 4) << 4;
110 dec->pulseval[3] = get_bits(&gb, 14);
111 dec->pulseval[2] = get_bits(&gb, 14);
113 dec->offset1[0] |= get_bits1(&gb);
114 dec->pulsepos[0] = get_bits_long(&gb, 27);
115 dec->pulseoff[0] = get_bits(&gb, 4);
117 dec->offset1[0] |= get_bits1(&gb) << 1;
118 dec->pulsepos[1] = get_bits_long(&gb, 27);
119 dec->pulseoff[1] = get_bits(&gb, 4);
121 dec->offset1[0] |= get_bits1(&gb) << 2;
122 dec->pulsepos[2] = get_bits_long(&gb, 27);
123 dec->pulseoff[2] = get_bits(&gb, 4);
125 dec->offset1[0] |= get_bits1(&gb) << 3;
126 dec->pulsepos[3] = get_bits_long(&gb, 27);
127 dec->pulseoff[3] = get_bits(&gb, 4);
130 static void truespeech_correlate_filter(TSContext *dec)
137 memcpy(tmp, dec->cvector, i * sizeof(*tmp));
139 dec->cvector[j] += (tmp[i - j - 1] * dec->vector[i] + 0x4000) >> 15;
141 dec->cvector[i] = (8 - dec->vector[i]) >> 3;
144 dec->cvector[i] = (dec->cvector[i] * ts_decay_994_1000[i]) >> 15;
146 dec->filtval = dec->vector[0];
149 static void truespeech_filters_merge(TSContext *dec)
153 if(!dec->flag){
155 dec->filters[i + 0] = dec->prevfilt[i];
156 dec->filters[i + 8] = dec->prevfilt[i];
160 dec->filters[i + 0]=(dec->cvector[i] * 21846 + dec->prevfilt[i] * 10923 + 16384) >> 15;
161 dec->filters[i + 8]=(dec->cvector[i] * 10923 + dec->prevfilt[i] * 21846 + 16384) >> 15;
165 dec->filters[i + 16] = dec->cvector[i];
166 dec->filters[i + 24] = dec->cvector[i];
170 static void truespeech_apply_twopoint_filter(TSContext *dec, int quart)
176 t = dec->offset2[quart];
178 memset(dec->newvec, 0, 60 * sizeof(*dec->newvec));
182 tmp[i] = dec->filtbuf[i];
183 off = (t / 25) + dec->offset1[quart >> 1] + 18;
191 dec->newvec[i] = t;
196 static void truespeech_place_pulses(TSContext *dec, int16_t *out, int quart)
206 t = dec->pulseval[quart] & 3;
207 dec->pulseval[quart] >>= 2;
208 tmp[6 - i] = ts_pulse_scales[dec->pulseoff[quart] * 4 + t];
211 coef = dec->pulsepos[quart] >> 15;
224 coef = dec->pulsepos[quart] & 0x7FFF;
239 static void truespeech_update_filters(TSContext *dec, int16_t *out, int quart)
243 memmove(dec->filtbuf, &dec->filtbuf[60], 86 * sizeof(*dec->filtbuf));
245 dec->filtbuf[i + 86] = out[i] + dec->newvec[i] - (dec->newvec[i] >> 3);
246 out[i] += dec->newvec[i];
250 static void truespeech_synth(TSContext *dec, int16_t *out, int quart)
256 ptr0 = dec->tmp1;
257 ptr1 = dec->filters + quart * 8;
272 ptr0 = dec->tmp2;
286 ptr0 = dec->tmp3;
295 sum = ((ptr0[1] * (dec->filtval - (dec->filtval >> 2))) >> 4) + sum;