• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Writing a private device driver
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Writing a private device driver


  • Subject: Re: Writing a private device driver
  • From: Jeff Moore <email@hidden>
  • Date: Tue, 27 Dec 2005 09:40:11 -0800


On Dec 26, 2005, at 10:12 AM, Jeremy Bernstein wrote:

Hello coreaudio-api -

I am trying to adapt the Phantom Audio Device driver to a specific project. I am admittedly a newbie in the CoreAudio realm, although I've been working with the QuickTime API for several years.

The first thing you should do is to switch over to the newer AudioReflectorDriver sample in our recent SDK. It is a very updated version of the PhantomAudioDriver, including new blit routines.


Ideally, I would like to be able to instantiate a variable number of private, independent audio "devices" to facilitate communication between 2 parts of my software (I need to stream audio out of a QuickTime movie and into a more general audio signal processing environment). I am more or less clear about how the basic functionality needs to be implemented, thanks to the example project, but:

You really ought to look at the AudioContext APIs in QT7. They let you create a means to patch into the QT data stream as you will. I have heard of other developers doing this to implement what you describe. Creating a device driver in the kernel to solve this is like swatting a fly with a sledge hammer.


The AudioContext APIs are beyond the scope of this list. You will need to pose your questions about them on the QT lists.

- I can't determine if it is possible to create a "private" audio device driver: that is, I don't want users to be able to use these audio devices. As far as I can tell, I _have_ to create a virtual device driver in order to use SetMovieAudioContext() for what I need to do, but I'd like this private mechanism to remain private.

There's no such thing as a private device driver. You cannot implement such a thing using an IOAudio based driver.


- I can't determine if it is possible to load multiple instances of a driver on the fly. That is, I would prefer to instantiate and initialize 1 (x-channel) stream for each request, rather than assigning a hard upper limit by extending the AudioEngines array, or by setting IOAudioStreamNumChannels to some fixed value. Ideally, I would like to reload my device driver and create a new instance of it.

It is possible to do this, but it isn't easy. Basically, IOKit drivers are instantiated when something they match appears on the system. You'd need to find a way to cause the matching to happen without using real hardware.


Alternately, you could create a private call to your driver that tells it to instantiate more instances of itself.

Both topics are really beyond the scope of this list.

If any of this sounds interesting or possible, I'd love to know. If any of it sounds completely impossible, but gets you thinking about alternative solutions, I'd love to know that, too...

I think you are totally barking up the wrong tree on this. As I said, the QT AudioContext APIs were created at least in part for your purpose and you should look at that as the starting point of your solution.


--

Jeff Moore
Core Audio
Apple


_______________________________________________ Do not post admin requests to the list. They will be ignored. Coreaudio-api mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
References: 
 >Writing a private device driver (From: Jeremy Bernstein <email@hidden>)

  • Prev by Date: Accessing AudioCodec from AudioConverter?
  • Next by Date: Re: Writing a private device driver
  • Previous by thread: Writing a private device driver
  • Next by thread: Re: Writing a private device driver
  • Index(es):
    • Date
    • Thread