| uint32_t in2, out2, aprev, bprev, flag; | uint32_t in2, out2, aprev, bprev, flag; | ||||
| uint32_t *data, *end; | uint32_t *data, *end; | ||||
| int32_t *state; | int32_t *state; | ||||
| block = receiveWritable(); | block = receiveWritable(); | ||||
| data = (uint32_t *)(block->data); | |||||
| if (!block) return; | if (!block) return; | ||||
| end = data + AUDIO_BLOCK_SAMPLES/2; | end = data + AUDIO_BLOCK_SAMPLES/2; | ||||
| state = (int32_t *)definition; | state = (int32_t *)definition; | ||||
| do { | do { | ||||
| data = (uint32_t *)(block->data); // needs to be done inside the loop, end need not be reset. | |||||
| a0 = *state++; | a0 = *state++; | ||||
| a1 = *state++; | a1 = *state++; | ||||
| a2 = *state++; | a2 = *state++; | ||||
| *state++ = sum | flag; | *state++ = sum | flag; | ||||
| *(state-2) = bprev; | *(state-2) = bprev; | ||||
| *(state-3) = aprev; | *(state-3) = aprev; | ||||
| data = (uint32_t *)(block->data); // needs to be reset, may as well be done here | |||||
| } while (flag); | } while (flag); | ||||
| transmit(block); | transmit(block); | ||||
| release(block); | release(block); |