| 171 | } |
| 172 | |
| 173 | static int16_t read_table(ChannelData *chd, uint8_t val, int tab_idx) |
| 174 | { |
| 175 | int16_t current; |
| 176 | |
| 177 | if (val < tabs[tab_idx].stride) |
| 178 | current = tabs[tab_idx].tab2[((chd->index & 0x7f0) >> 4) * tabs[tab_idx].stride + val]; |
| 179 | else |
| 180 | current = - 1 - tabs[tab_idx].tab2[((chd->index & 0x7f0) >> 4)*tabs[tab_idx].stride + 2*tabs[tab_idx].stride-val-1]; |
| 181 | |
| 182 | if (( chd->index += tabs[tab_idx].tab1[val]-(chd->index >> 5) ) < 0) |
| 183 | chd->index = 0; |
| 184 | |
| 185 | return current; |
| 186 | } |
| 187 | |
| 188 | static void chomp3(ChannelData *chd, int16_t *output, uint8_t val, |
| 189 | int tab_idx, |