Stefan Richter wrote:
is there a strict requirement that the ALSA period is more than double of the FireWire interrupt period?
No. But the ALSA API promises that interrupts arrive at the end of a period (which always has a constant size), and with the FireWire packet sizes varying, this is the easiest way of ensuring that interrupts are delayed by less than half the period size.
The driver should dynamically reduce the interrupt interval for smaller periods.
Also, I believe to remember that you once said that instead of relying on periodical interrupts from the OHCI, it might be better to switch to a kind of polling scheme (i.e. process the IEEE 1394 packet buffer on an own period = ALSA period?).
This is already implemented by calling fw_iso_context_flush_completions().
It helps with PulseAudio (which predicts the correct time to poll), but is useless when the application relies on the interrupt to wake it up (e.g., Jack).
Regards, Clemens