>> How can you avoid to resample in presence of clock drift?
>
> Over the long term average, there really shouldn't much drift.  
> Frankly, I'm not sure how you cope with it. Perhaps simply detect it  
> and insert or remove samples of silence ... and log a warning... you  
> probably don't need to do more than that, because it really  
> shouldn't happen if the clocks are accurate.

Well either there is a drift (and you are supposed to detect it and  
take appropriate measures , but "insert or remove sample"  is  
certainly what you don't want in a professional application...) or  
there is no drift. I guess here again we are going to "assume" people  
using JACK are aware of this kind of issue and use professional level  
audio cards.

>>
>> And I guess II'll have to go the "poll" way untill then. I'll do  
>> that in my separated jackBoomerDriver class for now.
>>
>> Thanks for the discussion.
>
> Sure. If you're using poll(), you should do it for all OSS systems,  
> not just Boomer. The technique isn't just correct for Boomer, but  
> for all OSS systems. (And depending on the fragment size being a  
> power of two is "wrong" for all "modern" OSS implementations, even  
> though it might frequently work.)
>
> -- Garrett
>>

Thinking again of what differentiate poll/select versus blocking read/ 
write (as it was implemented in our code): say we have a fragment of  
100 frames and we want to run/process with a buffer size of 256 frames :

Reasoning at input side "only" for now:

1) poll/select would wake up the application as soon as a first 100  
frames fragment is available at input? Then the application can read  
100 frames without blocking, then the application suspends, the second  
100 frames fragment wakes up the application... read 100 frames  
again, ... until we have at least 256 frames (so 3 fragments) then the  
256 frames input buffer can be processed.... and so on

2) the application tries to read a full 256 frames buffer, the read  
returns as soon as enough frames are available in the drivers so, here  
also when 3 fragments have been "internally" received?

So what are the fundamental difference here?

Thanks

Stephane Letz

Reply via email to