September 17, 2002

Non-DMA Video Digitizing

Turns out the reason VDSetPlayThruDestination() was returning -2208 (noDMA) is because when using an external device like a FireWire camera, you can't do DMA. Obviously. VDSetPlayThruDestination() should be used for video capture cards on the PCI bus, but a different sequence of video digitizer API calls are needed for interfacing with USB and FireWire cameras.

I found a post in Apple's quicktime-api list archives by Steve Sisak from back on June 16, 2000 which explains this and also provides the correct video digitizer API call sequence. These are API calls I hadn't looked at before, so I'm reading through them as I try to add them to the Mac OS X video capture code in Open Mash. I'm thinking about the best way to do this is because the frames need to be grabbed asynchronously; vic shouldn't eat up CPU cycles and also let the user do things while grabbing a frame which means I can't just sleep until the frame is grabbed. I think it will work if VDCompressOneFrameAsync() is called once when starting the capture device and recalling it after each successful frame grab.

Posted by josuah at September 17, 2002 2:29 AM UTC+00:00

Trackback Pings

TrackBack URL for this entry:


Post a comment

July 2013
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31