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/