[wdmaudiodev] Re: Need help in Wave Test

  • From: Gaurav Khuntale <gauravkhuntale@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Mon, 3 Feb 2014 12:25:10 +0530

Hello Guys,

I am working on following failure in wave test,

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.

Is there a need to implement notification callback of IOCTL_KS_RESET_STATE,
IOCTL_KS_WRITE_STREAM IRP so that my test cases may get pass, if yes then
can anyone please give me some reference for the implementation of these
notification callback ? What exactly happens when request of
IOCTL_KS_WRITE_STREAM IRP comes ?.

Thanks.



On Fri, Jan 31, 2014 at 12:07 PM, Gaurav Khuntale
<gauravkhuntale@xxxxxxxxx>wrote:

> Hello,
>
> Any guess what could be the reason behind above failures ?
>
> Thanks in advance.
>
>
> On Thu, Jan 30, 2014 at 6:37 PM, Gaurav Khuntale <gauravkhuntale@xxxxxxxxx
> > wrote:
>
>> I am seeing following failures,
>>
>>
>> 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.
>>
>> Also yes, i do see a NewStream call during the test run.
>>
>> Thanks.
>>
>>
>>
>> On Thu, Jan 30, 2014 at 6:18 PM, Matthew van Eerde <
>> Matthew.van.Eerde@xxxxxxxxxxxxx> wrote:
>>
>>>  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> 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] *On Behalf Of *Gaurav Khuntale
>>> *Sent:* Wednesday, January 29, 2014 10:44 PM
>>>
>>>
>>> *To:* 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> 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] *On Behalf Of *Gaurav Khuntale
>>> *Sent:* Wednesday, January 29, 2014 2:33 AM
>>> *To:* 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> 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> 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
>>> Providenza & Boekelheide, Inc.
>>>
>>> ******************
>>>
>>> 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: