On 28.03.2016 17:18, Georg Chini wrote: > On 28.03.2016 16:16, Pierre-Louis Bossart wrote: >> On 3/22/16 4:11 AM, Georg Chini wrote: >>> Hi, >>> >> >> Sorry I missed this thread last week. >> At the risk of being pedantic, maybe you should consider two >> different concepts. >> - cold latency: the time it takes for the audio device to render the >> first sample when first opened >> - continuous latency: the time it takes to hear a sample after it's >> written to the ring buffer. >> > > Yes, but it looks like the alsa USB driver assumes that a sample can > be heard immediately > after it left the buffer, which is not true. So there is some > additional continuous latency > that is not reported. This is visible as a "startup delay" - the time > between the moment > the first sample is written to the buffer and the moment when it is > reported that the > first chunk of audio has been played. More correctly the time between snd_pcm_start() and the moment when the first chunk has been played minus the chunk time, since the buffer is filled before snd_pcm_start() is called. > >> The cold latency is mostly what happens in the .prepare step at the >> driver level. It's very hard to estimate by software since you can't >> observe the analog output. It can also vary depending on platform >> states. > > Well, I can observe the analog output. In my setup I have an > oscilloscope connected > to input and output of the loopback, that is why I detected the > difference between > configured and real latency at all. Ups, looks like I misread your sentence above. You are right, in software you can't see the output. But what you can see is the time between dispatching the audio to the USB bus and the time when the bus reports back that the audio was played. I am not sure if I read the code right, I don't know anything about USB, but if the URB's you are submitting to the bus in the prepare step are handled in chronological order, it means that a) you have to wait for the next URB to retire before you can send any real audio b) after you submitted the first audio, it is at the end of the queue and all the other URB's containing silence will be processed first.