[wdmaudiodev] Re: Need help in Wave Test

  • From: Matthew van Eerde <Matthew.van.Eerde@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Thu, 30 Jan 2014 12:48:22 +0000

OK, good.

For clarity, in the situation where current count is initially 0, what failure 
do you see? Also, do you see a NewStream() call in that situation?

From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Gaurav Khuntale
Sent: Thursday, January 30, 2014 4:33 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: Need help in Wave Test

Yes, I was opening a stream before running wave test by playing a song from 
WMP. So after i tried running wave test without first opening a stream. But 
still there are failures which i mentioned in last mail.
I just saw on KS studio and found that it reports Current Count = 0 and 
Possible Count = 1 for KSPROPERTY_PIN_CINSTANCES.
Should i attach my wave test log file?
Thanks.

On Thu, Jan 30, 2014 at 5:41 PM, Matthew van Eerde 
<Matthew.van.Eerde@xxxxxxxxxxxxx<mailto:Matthew.van.Eerde@xxxxxxxxxxxxx>> wrote:
> So i removed this handling and allowed mutliple streams to be created

Um, don't do that.

The test only attempts to open one stream at a time. Is there already a stream 
open when the test begins? If so, see if you can figure out what is opening the 
stream and stop it. (This could be KS Studio, or maybe something is playing a 
sound, or maybe something else is going on.)

Typically the instance limit (in this case, 1) is enforced above the miniport, 
so the fact that you even have the opportunity to return 
STATUS_INVALID_DEVICE_REQUEST is indicative of a problem. What does KS Studio 
report for KSPROPERTY_PIN_CINSTANCES on this pin factory, both "current" and 
"possible"?

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx> 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>]
 On Behalf Of Gaurav Khuntale
Sent: Wednesday, January 29, 2014 10:44 PM

To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: Need help in Wave Test

Hi Matthew,
Yes, i am seeing a NewStream() call when test case fails. Also i got the reason 
why Pin was not getting instantiated. Its because, my driver currently supports 
only one stream instantiation at a time.If there is try of creating multiple 
streams then my driver is returning STATUS_INVALID_DEVICE_REQUEST status from 
NewStream() function. So i removed this handling and allowed mutliple streams 
to be created and test case "Data Intersection Test\Render Streaming\Check 
Supported Formats" got Pass. But now i am getting more failures in following 
test cases:

1) Standard Streaming\Rendering Pin Tests\Reset Pin while streaming data
     KSPIN_DATAFLOW_IN pin is currently in state KSSTATE_PAUSE; want it to be 
in state KSSTATE_RUN
    Setting KSPIN_DATAFLOW_IN pin to state KSSTATE_RUN
    Position reported before issuing KSRESET_BEGIN = 121 bytes
    KSPIN_DATAFLOW_IN pin is currently in state KSSTATE_RUN; want it to be in 
state KSSTATE_RUN
    Resetting Pin state: IOCTL_KS_RESET_STATE (KSRESET_BEGIN)
    Position reported after issuing KSRESET_BEGIN = 0 bytes
    Submitting IOCTL_KS_WRITE_STREAM IRP ...
    GetLastError did not return ERROR_IO_PENDING even though the pin is paused

     [ GetLastError() returned 21 (0x15) - The device is not ready.   ].
    FAIL: Failed WriteData(Render)/ReadData(Capture) to see if pin position is 
moving or not.

2) Standard Streaming\Rendering Pin Tests\Streaming buffer from different 
threads
   FAIL: Position (1600) is less than the amount of data streamed (3200).

3) Standard Streaming\Rendering Pin Tests\Calling get position from the 
different thread

4) Standard Streaming\Rendering Pin Tests\Streaming with 2 different instance 
of the pin.
     Wave Format used for instantiation:
    Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE
    Format.nChannels = 2
    Format.nSamplesPerSec = 22050
    Format.nAvgBytesPerSec = 88200
    Format.nBlockAlign = 4
    Format.wBitsPerSample = 16
    Format.cbSize = 22
    wValidBitsPerSample = 16
    dwChannelMask = KSAUDIO_SPEAKER_STEREO (0x3)
    SubFormat = KSDATAFORMAT_SUBTYPE_PCM{00000001-0000-0010-8000-00AA00389B71}

    CKsPin::Instantiate.  Failed to instantiate KSPIN_DATAFLOW_IN pin!
    KsCreatePin returned = 0x00000057
     [ GetLastError() returned 87 (0x57) - The parameter is incorrect.   ].
    PreparePin: Unable to instantiate pin.
Can you please help me in above failures ? What could be the reasons behind 
these failures ? Here i don't understand one thing is that, when i doesn't 
allow multiple streams to be instantiated in my driver then above mentioned 
test cases got skipped while wave test and if i allow multiple streams then i 
got failure for this test cases.
Regarding your another question, my driver supports WAVE_FORMAT_PCM with 
maximum channels 2, max sample rate 64000, min sample rate 4000.
Thanks.


On Wed, Jan 29, 2014 at 10:30 PM, Matthew van Eerde 
<Matthew.van.Eerde@xxxxxxxxxxxxx<mailto:Matthew.van.Eerde@xxxxxxxxxxxxx>> wrote:
Yes, pin instantiations are only attempted on the wave filter. The topology 
filter typically does not have any pin factories that support meaningful pin 
instantiation.

When the test case fails, are you seeing a NewStream() call?

What formats do you support?

From: wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx> 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>]
 On Behalf Of Gaurav Khuntale
Sent: Wednesday, January 29, 2014 2:33 AM
To: wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>
Subject: [wdmaudiodev] Re: Need help in Wave Test

Hi Tim,
As you said, i tried instantiating my driver with ksstudio. I selected my wave 
filter from KS Studio and successfully instantiated pin on wave filter.
Is failure which i mentioned is related to wave filter only ?
Also i am getting one more failure in same test case mentioned above saying:
CKsPin::Instantiate.  Failed to instantiate KSPIN_DATAFLOW_IN pin!
KsCreatePin returned = 0x00000001
 [ GetLastError() returned 1 (0x1) - Incorrect function.   ].
FAIL: KSPROPERTY_PIN_DATAINTERSECTION Succeeded, Pin Creation Failed
FAIL: Pin does not support WLP required sample frequencies of:
        - 44100 Hz
        - or 48000 Hz
But my driver supports above mentioned sample frequencies, still i don't 
understand why this failure ?
Thanks.

On Wed, Jan 29, 2014 at 9:42 AM, Gaurav Khuntale 
<gauravkhuntale@xxxxxxxxx<mailto:gauravkhuntale@xxxxxxxxx>> wrote:
Hi Tim,
No, i haven't tried using ksstudio to instantiate my driver. To be frank, i am 
not aware of this. What exactly will happen when i instantiate driver with 
ksstudio and how to do that ( if possible just give me some reference link or 
document ) ?
Thanks.

On Wed, Jan 29, 2014 at 6:18 AM, Tim Roberts 
<timr@xxxxxxxxx<mailto:timr@xxxxxxxxx>> wrote:
Gaurav Khuntale wrote:
>
>
> I am working on a audio driver which is based on wavecyclic. My driver
> is failing Wave test with following errors,
>
> 1) FAIL : Data Intersection Test\Render Streaming\Check Supported Formats
>        CKsPin::Instantiate.  Failed to instantiate KSPIN_DATAFLOW_IN pin!
>        KsCreatePin returned = 0x00000001
>        [ GetLastError() returned 1 (0x1) - Incorrect function.   ].
>        FAIL: KSPROPERTY_PIN_DATAINTERSECTION Succeeded, Pin Creation
> Failed.
>
> 2) Compliance Tests\UAA-Compliance Test
>   1.FAIL: The Device driver is not one of the UAA Compliant types
> (HDAudio,USB      Audio 1.0, USB Audio 2.0, Bluetooth)!
>
> Regarding first failure, i tried to search about that but failed to
> understand what exactly Failure is and reason behind the failure. My
> primary understanding says, this failure is because my driver is not
> supporting KSPROPERTY_PIN_DATAINTERSECTION property. Is this right ?
> Can anyone please help me here ?
No.  Read the error:  KSPROPERTY_PIN_DATAINTERSECTION succeeded.  Pin
creation failed.  You're going to need to put some debug prints into
your driver to chase down which function is failing.  Have you tried
using ksstudio to instantiate your driver?  Does it work in graphedt?


> Regarding second failure, as my driver is virtual driver, how can i
> pass this failure ? Should my driver must be from one of the category
> listed in failure ?
You can't WHQL a virtual audio driver.

--
Tim Roberts, timr@xxxxxxxxx<mailto:timr@xxxxxxxxx>
Providenza & Boekelheide, Inc.

******************

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

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/




Other related posts: