[wdmaudiodev] Re: Problem running an AVStream audio capture filter under XP

  • From: Tim Roberts <timr@xxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Thu, 7 Jul 2011 16:55:59 -0700

Mike Horgan wrote:
>
> If I install this same driver under XP sp3 and launch Reaper I again
> see that the device is enumerating under WDM Kernel Streaming system. 
> If I select the device and try to record, the cursor just seems to sit
> at time “0”.  Under the debugger I see the capture pin get instanced
> and the system changes the state of the pin from KSSTATE_STOP to
> KSSTATE_ACQUIRE, but it goes no further.  I’ve verified that the state
> change to acquire returns success so I’m a bit baffled as to what is
> wrong.  If I run GraphEdit and instance the capture filter, I can
> smart render the pin (it connects up to default DS renderer) and run
> the graph and actually hear the tone from my generator.
>
>  
>
> I’m at a loss to explain what it is that the XP audio system doesn’t
> like about the filter.  Neither the filter, nor the pin are exposing
> an automation table.  I’m just letting the AVStream framework handle
> any properties.  I don’t see the system querying for any audio
> specific properties (latency, position) which would lead me to believe
> that maybe I need to include one or more.
>

Do you have KSPIN_FLAG_PROCESS_IN_RUN_STATE_ONLY set in the pin
descriptor?  Ordinarily, the graph wants to get the first chunk of data
while it's in "acquire" state, so that it is ready to go immediately on
the transition to "run".  When that happens, the graph does not
transition to "run" until it has at least one sample.  This is very
useful for video devices (so you get a poster frame), but not so much
for audio.

The IN_RUN_STATE_ONLY flag should suppress that behavior.  It is
equivalent to the VFW_S_CANT_CUE return in a DirectShow source filter.

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

Other related posts: