Using multiple(x6) GiGE from ubuntu

Hi! I want to use 6 GiGE The Imaging Source Camera from ubuntu. By launching 6 independent viewer applications, it works fine. Accessing single camera from my application, it also works. Accessing 6 cameras by launching 6 gstreamer pipelines, it works, but is sluggish and unstable.

  • It looks work at the begging,
  • in a minute, frame rate of some cameras drops and then stop,
  • not all of the camera stop,
  • Sometimes, all the threads are killed, then main program is killed.

I am a little curious about why so many threads are launched for even single gstreamer pipeline. I appreciate any advices. Thank you.

Hi,

I am a little curious about why so many threads are launched for even single gstreamer pipeline.

Aravis itself creates 2 thread by device. The number of threads gstreamer create really depends on the pipeline you have built.

A possible issue when using more than one camera is a network switch buffer overrun. Depending on the exact model you are using, each time an image is emitted, the full link bandwith can be used. If several cameras are emitting an image at the same time, the buffer of the switch between the cameras and the machine can be filled completely and you will experiencing high packet loss rate.

Than can be mitigated using the GevSCPD or DeviceLinkThroughputLimit features.

Thank you so much for detailed advice. I am using 2 sets of AD-LINK 4port GiGE card, and connect one camera to one port, each channel is at 1440x1080@30Hz. It looks working well when I launched 6 capture program independently. Could you please advise just one more thing, whether it would become better if I call aravise objects directly without gstreamer?

It is hard to guess without knowing the pipeline you are using. Could you describe it please, or attach the corresponding command line ?

Also, what is the CPU consumption ? is it similar to the aravis viewer case ?

Dear Emmanuel,

Pipeline I am using is as follows;

pipeline_str = “tcambin name=source ! capsfilter name=filter ! videoconvert ! appsink name=sink”;
sprintf(capstring,“video/x-raw,format=RGB,width=%d,height=%d,framerate=30/1”,MCEO_W,MCEO_H);

CPU load;
6 viewers case: 22% x 6
my application with GiGE: 400% (50% for each core)
my application without GiGE : 80%.

The pipeline section of my program is just a copy of “tiscamera” examples.
When I execute one of the examples, “app-sink”, in total 9 threads were launched, and in a minute, one of the threads exits while the program is still going on.

Thank you very much in advance,

Dear Emmanuel,

I have re-checked all the status, and found that CPU load, latency and frame-drop are consistent between “arv-viewer”," tcam-capture", and my application. They work fine with 6x1440x1080@30Hz, but drop at 60Hz. I am very sorry for taking your time and bothering you. I also apologize for that I misspelled your name. I will then try suggested method for further quality.

Thank you very much again,