On 13.04.2016 17:06, Raymond Yau wrote: > > > > > >> do loopback module assume sink is not running when it start source > capture? > >> > > Sink and source are started independently. Source data is discarded > until the sink-input has > > called pop() the first time. > > But you cannot skip more than 9ms source data since you need 1ms( or > 25ms fragment time when not using timer schedule mode) to capture > > If you are using usb as source and hda as sink, hda fifo trigger dma > transfer whenever the fifo fill level is less than fifo threshold, you > need to fill 256 bytes at first write to avoid fifo underrun > > Yes, if the source takes too long to start up, there will be an an underrun. But as I said, I fill the memblockq with silence to the full requested end-to-end latency before starting source or sink. This is usually sufficient to avoid underruns at startup. Additionally the new loopback code contains an underrun protection, if the configured end-to-end latency is too small. After 3 underruns it will increase the target latency by 5 ms until no underruns occur.