[wdmaudiodev] Re: GFX/LFX fullduplex support.

  • From: Wayne <brocean@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Tue, 9 Sep 2008 12:47:07 +0800

Hi pete c,
   Did you do any synchronization to prevent data race, or to
maintain data consistency, e.g. available data length in the buffer?


On Sat, Sep 6, 2008 at 2:41 AM, pete c <prchan_0779@xxxxxxxxx> wrote:

>   Tim,
> >>>How are you sending the data from the render end back to the capture
> end?
> The GFX-render side allocates a share memory mapped file which is used as a
> circular buffer for the LFX-capture side to exchange render data.
> The GFX-render side maintains a current write buffer pointer that it uses
> to write render data to (then increments when written to) and the
> LFX-capture side maintains a current read buffer pointer to read the render
> data from (then increments when read from).
> As of right now the current circular buffer contains 10 buffers(so a total
> of 100 ms of buffering) and the GFX-render write buffer pointer maintains a
> spacing of 2 buffers behind the LFX-catpure read buffer pointer.
> So for example on my laptop there is a service that runs every minute that
> is related to the WLAN, when enabled the LFX-capture read buffer pointer
> catches up with the GFX-render write buffer pointer, which leads me to
> assume that the GFX has been delayed, while the LFX continues to run ahead
> of the GFX allowing the read and write buffer pointers to meet.
> When this WLAN service is diabled everything runs smoothly and the
> read/write pointers maintain a ~2 buffer spacing and never meet. The same
> skewing situation happens when i insert a USB jump drive into my laptop.
> The GFX/LFX should be running in ~10ms intervals, which is set by the OS?
> --- On *Fri, 9/5/08, Tim Roberts <timr@xxxxxxxxx>* wrote:
> From: Tim Roberts <timr@xxxxxxxxx>
> Subject: [wdmaudiodev] Re: GFX/LFX fullduplex support.
> To: wdmaudiodev@xxxxxxxxxxxxx
> Date: Friday, September 5, 2008, 12:10 PM
> pete c wrote:
> ive been experiementing with a GFX-render and an LFX-capture APO framework,
> they run smoothly with not much going on in the Vista OS background; however
> once other apps/services begin running simultaneously the GFX/LFX drift is
> much more drastic almost as if higher priority tasks in Vista are prempting
> the GFX-render process; and the LFX-capture begins to overrun the GFX-render
> side which is not good for AEC. Is there anyway to set kernel priorities to
> the GFX/LFX processes (like in an RTOS) or does this depend on the parent
> Audio Graph process priority level?
> The audio graph runs in a separate system process, and already runs at a
> raised priority.  Besides, you should know that raising the priority won't
> solve the problem.  It just delays it.
> You need to be able to handle this skew.
> How are you sending the data from the render end back to the capture end?
> --
> Tim Roberts, timr@xxxxxxxxx
> Providenza & Boekelheide, Inc.

Other related posts: