[wdmaudiodev] SysFx DTM failure: - ValidateDefaultAPOFormat Documentation

  • From: Dibyendu Nandy <dnandy@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Mon, 6 Apr 2009 10:15:28 -0700 (PDT)

Hello,

I am trying to debug a DTM failure for a capture SysFx. The SysFx works as 
expected in normal operation and functionally error-free. It is only failing in 
DTM testing.

The DTM log indicates the following, after stripping out the SysFx algorithms 
and leaving just the SysFx APO framework in place.

Task Result Status Process Exit Status Start Time End Time 
Failed -2147220479 4/6/2009 10:22:27 AM 4/6/2009 10:23:22 AM 
Pass Fail Not Run Not Applicable 
0 1 0 0 
  
# Message Time Source Machine Name 
1 4/6/2009 11:22:43 AM Execution Agent TEST_VISTA32
Root Cause 
The Execute Task with Commandline
cmd /c extfxtst.exe -c wdk_extfxtst.pro -l "s98wtt.dll" -h 
"HDAUDIO\FUNC_01&VEN_111D&DEV_76B2&SUBSYS_14C00039&REV_1003\4&22D1CDCC&0&0001" 

Failed with ExitCode c0000005 (c- The instruction at "0x%08lx" referenced 
memory at "0x%08lx". The memory could not be "%s".)

 
Resolution 
No resolution provided.  

Obviously, this is not very helpful to get to the root cause.

However, we have also been running the APO with DebugView
and the DebugView log indicates that the ValidateDefaultAPOFormat is returning 
with a HRESULT S_FALSE  (hrInput) on the requested format.
An example failure when the DTM test is running is shown below. Here the 
ValidateDefaultAPOFormat returns 1 (S_FALSE) for a WAVE_FORMAT_PCM requested 
input format. Currently, we try to accept this format by matching the 
ppSupportedInputFormat to the pRequestedInputFormat despite the S_FALSE return. 
This would normally be a floating point interface for the SysFxAPO. This might 
be causing problems with the message STATUS_ACCESS_VIOLATION that we see.  

My question is why does ValidateDefaultAPOFormat fail on this requested format 
and how should this case be handled. 
Any input or a pointer to documentation about ValidateDefaultAPOFormat would be 
much appreciated.

Extract from DebugView log:
000002961.84247351[1644] LFX | IsInputFormatSupported() Call
000002971.84253693[1644] LFX | ValidateDefaultAPOFormat hrInput 1
000002981.84258723[1644] LFX | ---------------- REQUESTED FORMAT 
----------------
000002991.84262025[1644] LFX |         inFormat.dwSamplesPerFrame: 2
000003001.84267926[1644] LFX | inFormat.dwBytesPerSampleContainer: 4
000003011.84272802[1644] LFX |      inFormat.dwValidBitsPerSample: 32
000003021.84278846[1644] LFX |          inFormat.fFramesPerSecond: 48000.000000
000003031.84283817[1644] LFX |             inFormat.dwChannelMask: 0
000003041.84293592[1644] LFX |                          FormatTag: 1
000003051.84300983[1644] LFX | ---------------- CaptureWI ----------------
000003061.84309876[1644] LFX |           m_CaptureWI.WF.Format.wFormatTag: 1
000003071.84314847[1644] LFX |            m_CaptureWI.WF.Format.nChannels: 2
000003081.84320951[1644] LFX |       m_CaptureWI.WF.Format.nSamplesPerSec: 48000
000003091.84325910[1644] LFX |      m_CaptureWI.WF.Format.nAvgBytesPerSec: 
192000
000003101.84331095[1644] LFX |          m_CaptureWI.WF.Format.nBlockAlign: 4
000003111.84336054[1644] LFX |       m_CaptureWI.WF.Format.wBitsPerSample: 16
000003121.84341133[1644] LFX |               m_CaptureWI.WF.Format.cbSize: 0
000003131.84346080[1644] LFX | m_CaptureWI.WF.Samples.wValidBitsPerSample: 32
000003141.84354424[1644] LFX |               m_CaptureWI.WF.dwChannelMask: 3
000003151.84359348[1644] LFX |                m_CaptureWI.SamplesPerFrame: 48

Thanks & Best Regards
Dibyendu Nandy
dnandy@xxxxxxxxx

Other related posts: