We are working on a interactive projection screen using 4 point grey firefly cams, 3 projectors and 1 macpro. We are using of 7 and ofxLibdc for the videograbbing.
In order to make the mac recognize all the camera’s we added 3 extra firewire pci-e cards.
With 4 firewire busses and 4 cameras everything seemed to work fine.
But every hour or so i’m losing one of my camera’s, or at least their image.
Strangely, most of the time it is the cam on the original firewire bus of the macpro (not a pci card).
Most of the time restarting the app solves the problem, sometimes we need to restart the mac.
the error i’m getting is:
**libdc1394 error: Error reading (e0002d7)…
libdc1394 error: Generic failure: in dc1394_video_get_transmission (control.c, line 965): Could not get ISO status
libdc1394 error: Error writing (e0002d7)…
libdc1394 error: Generic failure: in dc1394_video_get_transmission (control.c, line 948): Could not get ISO transmission
Anyone had this problem before or knows where to find the solution?
the only online topic i could find was:
I tried resetting the bus with
but it did not work.
i haven’t seen this before.
where did you add dc1394_reset_bus(camera)?
i’ve used this function on linux when initializing the camera, but never on OSX. but it happens inside initCamera() on linux.
I tried resetting the bus when the application did not receive new images from the camera for ten frames in a row (quick hack). Just to see if it had any effect. it didn’t
my advice is to call setup() again on the device. this will try connecting to it again, just like restarting the app. if that doesn’t work, it might be a problem deeper inside libdc, and you would have to call stopLibdcContext() then startLibdcContext() before setup().
alternatively, with all the cameras you could be reaching some DMA buffer limit. try changing the define to #define OFXLIBDC_BUFFER_SIZE 2 and see if that helps.
i have a similar problem. i try to change the shutterspeed and the camera seems to get blocked by that. The next time i start the program i crashes always at the same function: dc1394_macosx_capture_dequeue.
This doesn’t happen with the example program. I think there is some timing problem on my side but i have no clue where or why.
The only way to get a connection to the camera is by replugging it. I tried to find a software reset solution of the firewire bus but with no success. Anyone has an idea how to do that?
OK. In my case i found the problem. The application didn’t call the ~Camera function and the libDcContext wasn’t stopped. This blocked the camera the next time i ran the application. Now i call the close-function manually on exit and everything is fine.
I also ended up calling ~Camera.
When the application does not receive the new frame from the camera for 10 frames it reinitializes the camera.
First it stops the cam by calling ~Camera and then it does a new setup()…