[wdmaudiodev] Re: buffering samples in an APO

  • From: "Cheng-mean Liu (SOCCER)" <soccerl@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 16 Dec 2014 00:13:35 +0000

Is this a 100% repro?  Which OS version is it?

An APO has no idea on when the stream will end. If an audio application stops 
its streaming before the end of stream, I am not sure whether APO could do 
anything with this situation.

From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Matthew van Eerde
Sent: Monday, December 15, 2014 10:23 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: buffering samples in an APO

Make sure you implement IAudioProcessingObject::GetLatency(...), and report the 
delay between your input and output.

If an app cares about its sound playing all the way through to the very last 
byte, the design is for the IAudioClient to pad silence onto the end of the 
stream, and keep pumping silence until IAudioClock indicates that the very last 
byte has made it all the way through the speaker.

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx> 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Abhinav Singh
Sent: Monday, December 15, 2014 10:12 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] buffering samples in an APO

I am trying to integrate a DSP algorithm with my GFX APO which requires a fixed 
number of samples greater than the number of samples i get every time the Audio 
Engine calls the APOProcess() function of my APO. So i buffer the samples until 
i have the required number of samples and feed the audio engine zeros until i 
have valid output to feed to the engine. This works but there is a loss of few 
samples at the very end(some samples remain unprocessed in the input buffer 
while some are left over in the output buffer ). Is there any workaround to 
this problem?

Other related posts: