[wdmaudiodev] Re: Win7 Dynamic Format Changes - Streaming Minidriver

  • From: uwekirst <u.kirst@xxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Wed, 18 Nov 2009 12:06:27 +0100

Hi all,

I am also trying to implement the dynamic format changes support in Win7, but I'm facing an issue.
I specified the event + event handler on the filter.
I'm calling GenerateEventList when the samplerate of my devices changes.
I set the current samplerate on 3 positions within my driver:
-proposedformat handler
-datarangeIntersection handler
-dataranges table

The GenerateEventList call seems to do something, but not what I expected:

Let's assume that the old samplerate is 44100 and the new samplerate is 48000. Before I change the samplerate, the formatlist within the windows controlpanel is populated with all 44100Hz formats: 2 channel, 8 channel, 16 bit and 32 bit. After I changed the samplerate the formatlist is populated with all 48000Hz formats plus one 44100Hz format that was selected before I changed the samplerate. I think this is a bug, since the 44100Hz is still default after the formatchange and nothing has really changed.
What am I missing here, any ideas?

If I don't call GenerateEventList, there are no formats available after the change, so I conclude that the KSEVENT_PINCAPS_FORMATCHANGE did something, but not what I expected.

/Uwe


















Neetu Sand schrieb:
Hi,

I am still trying to figure our a way to implement dynamic format changes support on Win7. I tried to implement events on filter as well as on pins in the streaming minidriver. I am not able to see those events in KSStudio - Does KSStudio show events exposed correctly? I might not be looking at the correct place so please advice where the events are shown in KSStudio.

Also I call StreamClassDeviceNotification from filter whenever there is change from device but I don't get any queries from class driver where my driver can report new format. I see two possibilities:

- My driver is not exposing the events properly. Here I am assuming that streaming minidriver has full support for events. - StreamClassDeviceNotification is not working correctly because there is problem in parameter passed or something else.

Here is what I am doing:
- Defining Event set and Event Item.
- Reporting these events in SRB_GET_STREAM_INFO.
- When there is a change from device side, calling StreamClassDeviceNotification with SignalMultipleDeviceEvents.

The above does not work. I appreciate any suggestions.

Thanks, Neetu.

On Mon, Sep 14, 2009 at 5:27 PM, Neetu Sand <neetu.freelist@xxxxxxxxx <mailto:neetu.freelist@xxxxxxxxx>> wrote:

    Hi,

    Thanks for your suggestions. I will try them out and let you know
    how it goes.

    Thanks, Neetu,

    On 9/12/09, AI Developer <developer@xxxxxxxxxxxxxxxx
    <mailto:developer@xxxxxxxxxxxxxxxx>> wrote:
    > Three things come to mind:
    >
    > a. Seems like you should specify the event on the device(filter)
    not the
    > stream(pin) - that's what the documentation you refer to says(it
    talks about
    > automation table of the filter descriptor, not of pin
    descriptor). And
    > correspondingly should be calling StreamClassDeviceNotification.
    >
    > b. Note that MyEventHandler is called to "enable" the event. It
    simply means
    > that "somebody" is interested in listening to your events. For
    AVStream
    > drivers (and I assume also for Stream class minidrivers), this
    is optional.
    >
    > c. Once you set things up, examine your filters with KsStudio
    (or whatever
    > they have for Win7!), to make sure your events are being exposed
    properly.
    > You may use existing PortClass mini-port drivers(or samples) for
    > comparison.  You can perhaps even register for, and verify that
    the events
    > are being fired properly with KsStudio (or some other tool).
    >
    > Thanks.
    > Devendra.
    >
    > Neetu Sand wrote:
    >>
    >> Hi,
    >>
    >> Thanks for your responses.
    >>
    >> @Karthik - I already saw that post and am doing things the way they
    >> describe.
    >>
    >> @Tim - Yes, We should be notifying the event whenever there is a
    >> format change from driver side but we should be receive the format
    >> changes event from class driver as well. At least this is my
    >> interpretation based on the following link:
    >>
    >> http://msdn.microsoft.com/en-us/library/dd573912.aspx
    >>
    >> where it says:
    >> "In the preceding code example, the MyEventHandler custom event
    >> handler must monitor the KSEVENT_PINCAPS_FORMATCHANGE event .."
    >>
    >> Also I am making sure that I call
    "StreamClassStreamNotification" from
    >> streaming minidriver whenever there is a format change but class
    >> driver does not seem to enumerate format again.
    >>
    >> Let me know what you think.
    >>
    >> Thanks, Neetu.
    >>
    >> On 9/10/09, Neetu Sand <neetu.freelist@xxxxxxxxx
    <mailto:neetu.freelist@xxxxxxxxx>> wrote:
    >>
    >>>
    >>> Hi,
    >>>
    >>> I am trying to implement code so that our driver can report
    new format
    >>> capabilities under Win 7 using  "Dynamic format changes". Our
    audio
    >>> driver
    >>> has been written using "Streaming minidriver" model. So I am using
    >>> KSEVENT_PINCAPS_FORMATCHANGE event to implement this. In order
    to do this
    >>> I
    >>> do the following in audio minidriver:
    >>>
    >>> - Added KSEVENT_TABLE with a KSEVENT_ITEM entry for
    >>> KSEVENT_PINCAPS_FORMATCHANGE.
    >>> - Added KSEVENT_SET_TABLE with a KSEVENT_SET entry for
    >>> KSEVENTSETID_PinCapsChange.
    >>> - Added event details in structure- HW_STREAM_INFORMATION.
    >>> - Implemented StrMiniEvent.
    >>> - Provided "HwEventRoutine" in Open Stream call.
    >>>
    >>> I am not receiving any event callbacks from class driver so I am
    >>> wondering
    >>> if I am doing something wrong here. Any help is appreciated.
    >>>
    >>> Thanks, Neetu.
    >>>
    >>>
    >>
    >> ******************
    >>
    >> 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/
    >>
    >>
    >>
    >
    >
    > ****************** 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: