=== On the rewind safeguard ===
Result 1: it has been decided that the return value of
snd_pcm_rewindable() is not changed, and the safeguard is returned by a separate function.
It is unlikely to return any value which is safe, it is the responsiability of the application to decide how much can be rewind
You are placing a responsibility on an application without giving it any
means to make an informed decision. E.g. 4 ms is OK on snd-hda-intel, but definitely not OK on ymfpci even on infinitely fast CPU (because of the fixed 5 ms interrupt interval). The whole question here is: how is an application supposed to know that?
Take a look at patent US 20100131783
System and Method of Dynamically Switching Queue Threshold
HDA may have different fifo threshold in different power states, the granularity is not fixed
Twice the minimum period size/time is not any over estimate
Glitching still occurs at switch sink / change in power state when you allow sound card run with lowest latency ?
I don't think your proposal of having three different class of granularity is good idea