[wdmaudiodev] Re: Core processor enters idle state while APO is processing audio

  • From: Matthew van Eerde <Matthew.van.Eerde@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 2 Apr 2014 22:28:41 +0000

The thread that APOProcess is running on should already be registered with the 
Multimedia Class Scheduler Service. This in turn should guarantee it runs at 
very high priority for short bursts.

If you're running on a Server SKU, the Multimedia Class Scheduler Service is 
basically neutered. Is it possible that those few production machines are all 
running the Server SKU?

From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Dadi
Sent: Wednesday, April 2, 2014 3:01 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Core processor enters idle state while APO is processing 
audio

Hi,
On few machines while audio is being played, the machine has entered an idle 
state that caused our processing inside APOProcess to process too slow and not 
return on time. This caused lost frames and bad noise has been heard.
Our code is optimized and the above case is rare but still occurs on few 
production machines. Note that we have three APOs running in memory (Render 
MFX, EFX and capture MFX) simultaneously.
Is there a way to programmatically avoid such case?

We tried to set the power parameter GUID_PROCESSOR_IDLE_DISABLE and this indeed 
prevented the processor to become idle and the problem didn't reproduced. We 
can use that in LockForProcess (to set the flag) and UnlockForProcess (to 
revert the old value of the flag).
But this way might not be the right way because this setting is a global power 
system setting that overwrites the user's active power scheme. Also - the user 
can modify the active power scheme at any time...
What is the best way (or the right way) to resolve it?
Also, isn't audiodg.exe responsible to protect the process thread from such 
case?

Thanks,
Dadi

Other related posts: