Hi there.

I had a quick look at this, and it should be pretty straightforward, actually. The audio driver in the kernel already has 8 * 4608 bytes of buffer, which the volume adjustment stuff piggybacks on. So if you didn't want to increase the memory footprint, you could reduce that to 7 * 4608 and use the remaining 4608 for the time shifting.

Shonky, if you're working from a volume adjustment kernel it would be easy to insert this functionality just after the voladj code does the scaling, perhaps you could call voladj_scale, and then voladj_shift directly after?

The UI is the hard bit. I'd be very tempted to simply add another parameter to the voladj_intinit and to the ioctl (probably a signed parameter in units of samples of delay), and then let somebody else come up with a decent UI.

Richard.