[wdmaudiodev] Re: Windows Clock Compensation

  • From: "Troy Gentry" <dmarc-noreply@xxxxxxxxxxxxx> (Redacted sender "tge96" for DMARC)
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 18 Oct 2017 22:38:39 +0000 (UTC)

I don't know how others "do it", but this clock synchronization method (ISO 
Sync) is very easy to do in hardware
you simply infer the USB host's clock by accurately timing SOF<>SOF in hardware 
(not via MCU ISR) and dynamically (but slowly) adjust your local master audio 
clock to manage audio buffers... you can achieve a very accurate "water level" 
using this method of synchronization
ISO Async is a completely different synchronization method, but has the 
advantage of low jitter audio master clock (since the synchronization method 
above is removed and feedback is solved other ways)
It's in now way extremely tricky problem... but, in the early days of UAC for 
some reason this problem was left up to the software engineer to solve on the 
UAC Device, which led to the whole add/drop audio sample debacle - which is 
completely unacceptable... 
<please keep in mind, not of what I have type is related to how Windows deals 
with all this ---- strictly how USB system handles this, for anything ISO 
transfer related - no matter UAC, UVC, etc)

      From: Tim Roberts <timr@xxxxxxxxx>
 To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx> 
 Sent: Wednesday, October 18, 2017 2:41 PM
 Subject: [wdmaudiodev] Re: Windows Clock Compensation
   
Akshaykeerti Sharma wrote:


One possible solution we implemented for usb-audio using synchronous
mode was to adjust the reference clocks on the micro-controller in
realtime by a very small amount to ensure that there are no
underflow/overflow conditions that manifest themselves as
pops/clicks(we did have pops and clicks otherwise)

How would you know?  By monitoring the levels in your onboard FIFOs? 
This is an extremely tricky problem, because even though audio seems to
be smoothly continuous, at the microscopic level it is rather chunky. 
Audio Engine tries to transfer 10ms at a time, and applications commonly
work in buffers even larger than that.

-- 
Tim Roberts, timr@xxxxxxxxx
Providenza & Boekelheide, Inc.

******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/



   

Other related posts: