[wdmaudiodev] Re: Multichannel test playback in Win10
- From: Eugene Muzychenko <eugene@xxxxxxxxxxxxxx>
- To: Matthew van Eerde <wdmaudiodev@xxxxxxxxxxxxx>
- Date: Wed, 28 Oct 2015 23:22:15 +0600
Hello Matthew,
You hit the "Test" button on the Advanced tab, with the format you want
selected...
And a pin is being created, and even getting as far as KSSTATE_PAUSE...
And *then* you're getting format-support queries?
I checked timestamps and thread IDs in my driver logs and see the
following sequence:
Immediately after driver load, there is a series of property requests
of AudioEndpointBuilder, related to filter topology, pin names, volume
levels etc. There are several Pin/PROPOSEDATAFORMAT/Set requests with
KSDATAFORMAT_SPECIFIER_WAVEFORMATEX and FormatSize=64. I'm afraid
these requests are incorrect. My driver fails them with
STATUS_INVALID_PARAMETER. No buffer size query requests (with
ValueSize=0) are sent on this stage.
As I open the Multimedia (Sound) applet, there is a series of property
requests from rundll32. There are several incorrect
Pin/PROPOSEDATAFORMAT/Set again.
As I open my driver's playback endpoint, Sound applet sends another
series of requests, with several incorrect Pin/PROPOSEDATAFORMAT/Set.
But there are several Pin/PROPOSEDATAFORMAT/Get requests, and my
driver returns the "widest" format it supports (48000/16/8). Then a
stream is created with this format, and immediately destroyed.
Then a series of pairs of valid Pin/PROPOSEDATAFORMAT/Set and
Pin/DATAINTERSECTION/Get requests are sent. For unsupported formats,
my driver returns STATUS_INVALID_PARAMETER to PROPOSEDATAFORMAT and
STATUS_NO_MATCH to DATAINTERSECTION.
As I select the Advanced tab, choose a format from the list, and click
the Test button, a stream with the appropriate format is created,
paused, stopped and destroyed. No data are submitted.
After stream termination, a series of various property request is
sent.
Then Pin/PROPOSEDATAFORMAT/Set request is sent with the same format,
my driver satisfies it. Immediately, a stream with the same format is
created but destroyed without state changing.
Pin/PROPOSEDATAFORMAT/Set request is sent again with the same format.
Then yet another stream with the same format is created and destroyed
immediately. Then Pin/PROPOSEDATAFORMAT/Set with ValueSize=64 is sent
(driver fails it). Then Pin/PROPOSEDATAFORMAT/Set request is sent
again with the same valid format. Then a third stream with the same
format is created and destroyed immediately. Then
Pin/PROPOSEDATAFORMAT/Set request is sent again with the same valid
format. Then a fourth stream with the same format is created and
destroyed immediately.
I have changed return status for unmatched formats from
INVALID_PARAMETER to NO_MATCH but no effect.
What format is being passed to the pin creation dispatch routine?
44100, 16 bits, 8 channels.
I assume the format support queries are still targeted to a filter handle,
not a pin handle.
Of course, yes.
Can you grab traces and send them to me?
http://www.filedropper.com/testtones
Tried formats 48000/16/8, 44100/16/8 and 44100/16/6.
Regards,
Eugene
******************
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
URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/
Other related posts: