View Full Version : Vitual Device Drivers on Macs (firewire video and mpeg streams)

Mar 12, 2007, 11:00 PM

Is it possible on a mac to create a virtual device driver that would allow an application to think it is connected to a firewire port which in turn is working as a DV video i/o but is actual converting streaming mpeg from the LAN to the DV firewire standard.

Essentilly we have an app that is outfitted for multiple DV firewire inputs but we want to interface it with network (IP) cameras.

Where might I look for more information as well as find mac developers (I am a windows dev only sadly... )

Thanks for any pointers at all.

Mar 13, 2007, 10:12 AM
Let me apologize in advance. I hate it when someone asks a question and they get responses like "why would you want to do that anyway?" because the responders don't know the answer to the original question.

But I'm going to responed like that anyway :D :o

I'd say avoid writing a device driver and instead modify the app (if at all possible). If you go the device driver route you've got three main components to worry about:
If you go the device driver route your components and
1. connecting to and accessing the stream of an IP camera.
2. translating IP camera video streams to Firewire video streams
3. An OS X device driver that simulates a firewire video device.

If you can modify the app you only really need to implement #1 above, plus some overhead to shoehorn it in to an existing app.


Anyway, if you do need to go the device driver route, you can read over IO Kit Fundementals (available on Apple's Developer site) which describes OS X's device driver environment. It explains how and when OS X enumerates available devices, drivers and chooses appropriate drivers. I read it a while ago, but I do remember it mentioning where to hook in a driver for a virtual device.

Good luck.

Mar 13, 2007, 10:34 AM
Another thing to mention is that your device driver won't be able to access network resources easily, and will likely need to be fed by a userland app getting the streams, complicating your solution.

Then again, if you can find a way to create a virtual device from userland, you can avoid the extra complication.