PDA

View Full Version : DFG/MC4 multi-camera usage



bitsnbites13
May 6, 2005, 21:16:58
I want to grab at a rate of about 3~4 frames per second up to 4 cameras "simultaneously" i.e. by snapping 1 frame from each grabber input that has active video in a timed loop.

Note that 1 camera is colour NTSC, 1 is BW RS170(NTSC BW) and 2 other BW PAL format.

I had my application running with the DFG/LC4 but it ran way too slow when using more than 1 camera because I had to use start/stop live to change the video norms and format for each channel as I cycled through.

I was told that with the DFG/MC4, I could run all four channels at once, as long as I don't reach the limits of the PCI bus. I thus now have this 4 grabber channel card.

There is 1 "channel" per grabber, with 4 grabbers on the board.

My question:
Can I instantiate 4 grabber objects to use/setup each physical grabber independently of each other to capture video from each physical input (BNC)?

By looking at the library documentation it is not clear if a particular grabber "chip" (I don't want to use the term "channel" as it refers to the BNC connector on the card like the DFG/LC4) gets attached to a grabber object and thus permit each grabber chip be used independently or not.

Otherwise what would be a preferable method?

Thanks

Stefan Geissler
May 9, 2005, 10:30:51
Hello,

Yes, you can instatiate 4 grabber objects and assign each device to one grabber object. The chips on the DFG/MC4 will be numerated as BT878, BT878 #1 etc. (These are not the real names, have a look at your computer for this.)

Then you can set the input channel, video norm and video format indiviually for each grabber.
After this you can call startlive() of each grabber object. You may pause the single grabber objects (setPauseLive()) to avoid an overload of the PCI bus. The setPauseLivemethod is much more faster than the startLive().

You may instantiate the grabber objects in an array, so you can easy handle them:


DShowLib::Grabber cGrabber[4];

for(int i = 0, i < 4; i++ )
{
cGrabber[i].startLive();
cGrabber[i].setPauseLive(true);
}


To snap an image from each grabber you can write following:



for(int i = 0, i < 4; i++ )
{
cGrabber[i].setPauseLive(false);
cGrabber[i].snapImages(1);
// Build the file name and save the image
cGrabber[i].setPauseLive(true);
}

bitsnbites13
May 9, 2005, 14:01:14
Thanks!

This is exactly what I needed to know