[wdmaudiodev] Re: Which type of driver

  • From: Matt Gonzalez <matt@xxxxxxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Fri, 05 Mar 2004 14:54:30 -0800

This is exactly what I've been doing.

If you want to talk to a 1394 device, you have to make your own IRPs and send them to the 1394 stack.   You will find examples on how to do this in the 1394 samples.  Compuware's DriverWorks also has useful sample code for talking to 1394.

To expose your hardware as an audio device, you need to create a kernel streaming filter.  You can try using portclass miniports (like MSVAD) or AVStream.  There's also the older stream class stuff, but you'd be better off with AVStream.

Portclass is an older model and doesn't handle surprise removal as well.  AVStream is cleaner, but there is no good example code for building an audio driver.  Portclass is perhaps quirkier, but much better documented.

Both AVC.sys and 61883.sys weren't useful for our purposes.  AVC.sys doesn't support audio formats.   61883.sys didn't give me enough control over the streaming.


John D. Farmer wrote:
I'm new to Audio driver development and still pretty new to driver development in general.  I am working on a project that needs to stream audio data down to the 1394 Bus, via AVC.sys and 61883.sys.  The overall propose of my project is to support Firewire hardware that will implement the IEC-61883-6 standard (which Microsoft says they were going to support, but which I have yet to see supported).  I am guessing I am in need of a upper filter driver to take care of the passing down audio data through the AV/C stack (in place of the avcaudio.sys which I cannot find on my system but found in the documentation as: Kernel-Mode WDM Audio Components subsection: AVCAudio Class System Driver) and another driver below avc.sys to be able to package the audio data up into the 61883-6 standard format on its way down to the 1394 bus (since I do not believe that 61883.sys does not yet support the 61883-6 standard).
I have been perusing the documentation and this list and there seems to be alot of confusion to me on which way would be best to do this.  I started by trying to use MSVAD (which I believe is a Port Class driver), but then I noticed that MSVAD does not seem to handle IRPs or anything else that would allow me to send data down to the 1394 bus.  I looked at the MSDN docs and they said that Port Class drivers could not be used for this purpose. I took a look at this list, and it seems a number of people have been able to do this by implementing their own IRPs and URBs (in the case of USB).  I've taken note of this and noticed that it seems to be extremely difficult to do, and probably not the best way to handle this problem.
I then started to look at the AVStream and Stream class drivers.  The AVStream overview on MSDN that it is a: "multimedia class driver that supports video-only streaming and integrated audio/video streaming."  So does this mean that I cannot use AVStream to stream audio-only?  My last option was the Stream class driver which the MSDN docs seem to suggest that these driver are almost if not totally deprecated.   
I also looked at AV/C Client driver (which I think is a Stream Minidriver) as a option, and it seemed to be almost what I wanted, but the documentation says that the avcstream.sys plays a part in the AV/C stack, my big problem with this is:  I can't find avcstream.sys on my system (I'm running Windows XP) see: IEC-61883 Protocol Driver in a Client Driver Stack in the MSDN documentation.  Am I correct in assuming that avcstream.sys handles the AV/C Audio subunit?
So as you can probably tell, I am a little lost and confused on this subject.  If there is anyone out there who could give this newbie a little guidance, I would be in your eternal debt.
John Farmer

****************** 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.de/

Other related posts: