[wdmaudiodev] Re: MSVAD and WDM capture

  • From: Yura <spirit@xxxxxxxxxx>
  • To: Sam Tertzakian <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Sat, 19 Jun 2004 15:09:16 +0300

Hello ,Sam

Tuesday, June 15, 2004, 5:40:31 AM, you wrote:

Thank you so much for the answer!

I tried what you suggested, but have some problems again.

When I call SuggestAllocatorProperties(before the pin is connected),
it returns SUCCESS. Then I connect the pin and call
GetAllocatorProperties but it returns E_FAIL. When I run the graph I
see that KsProxy ignored my previous SuggestAllocatorProperties call.

Then I used debugger to find allocator properties in memory and to change
them. When I did this, the sound became perfect!!!(Only until I restart the
graph of course).

So here is my new question. Can I change the default allocator
properties that KsProxy uses from my driver? Or what else I need to do
to change them from User-mode?


ST> You have to use IAMBufferNegotiation to set the buffer size that KxProxy
ST> uses (from a user mode directshow application). Of course, if you make the
ST> buffer too big you will have latency issues and possibly AV sync issues,
ST> depending on how things are configured.

ST> -----Original Message-----
ST> From: wdmaudiodev-bounce@xxxxxxxxxxxxx
ST> [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Yura
ST> Sent: Monday, June 14, 2004 9:06 AM
ST> To: wdmaudiodev@xxxxxxxxxxxxx
ST> Subject: [wdmaudiodev] MSVAD and WDM capture

ST> Hello to all audio people!

ST> I have a problem which I struggle with for about a month now. Hope you
ST> can help me.

ST> I'm using the MSVAD sample as a base for my sound capture driver. I
ST> create two virtual sound cards which are connected to each other in
ST> such way: fist input->second output & second output -> first input.
ST> So, if you have two apps they can speak to each other.

ST> When CopyTo is called on the one sound card, I put the data to the
ST> FIFO buffer, then when CopyFrom is called on the other sound card, I
ST> just copy the data from that FIFO buffer.

ST> This works great with apps that use wave* APIs. But it does not work with
ST> DirectSound apps which use WDM capture and WDM render. Capture side
ST> sometimes doesn't get all the available sound data, so FIFO gets
ST> overflowed and I get clicking, skippy sound (it sometimes sounds like
ST> lownmower you know :)). I've noticed that the sound quality highly depends
ST> on processor load, i.e. when I scroll some text with the scroller on
ST> my mouse, the sound becomes horrible, but when I don't touch anything
ST> the sound is almost good (only skips about once per few seconds).

ST> After some investigation I found that KSPROXY.AX filter sends
ST> requests to my driver in some strange way (I think it's strange for
ST> streaming). It sends one ioctl once after each Notify() call in my
ST> driver. All requests are 1764 bytes long (this equals to 10ms of sound
ST> at 44100 16bit stereo). And sometimes when processor is loaded, it
ST> does not send that ioctl at all and here I get sound skip.

ST> So, my question is how to tell KSPROXY to send several IOCTLs
ST> beforehead to avoid skips? Or is there any property that I should set
ST> for my driver?

ST> Thank you all!

Best regards,
 Yura                            mailto:spirit@xxxxxxxxxx


WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx


Other related posts: