Python, Free Stream Buffers

Changing the size of the ROI requires a change in buffer size, for example as in tests/arvriotest.c.

There, the stream is stopped and buffers deleted (i.e. free’d) by calling

 arv_stream_stop_thread (data->stream, TRUE);

Then, after creating and pushing the buffers onto the stream, the stream is started by calling

arv_stream_start_thread (data->stream);

First question: How is the ROI changed in Python? Or perhaps equivalently, how are buffers deleted in Python?

Second, related, question: In the python examples, there is no call to start and stop the stream thread. It is simply created and buffers are pushed onto it. Where or how is the stream thread managed in the Python API?

Hi,

I have pushed a python example of dynamic ROI in aravis repository. Here it is:

The example can be run without installing Aravis, using the python launcher from the build directory (assuming the build directory is at the source root directory):

./tests/pylaunch ../tests/python/arv-roi-test.py
Looking for the first available camera
vendor name         = Basler
model name          = acA1920-155um
region              = (x=0, y=0, width=100, height=100)
Buffer 100x100 <Aravis.Buffer object at 0x7fb1c6298080 (ArvBuffer at 0x55b823c6dad0)>
100.0
Buffer 100x100 <Aravis.Buffer object at 0x7fb1c6297f40 (ArvBuffer at 0x55b823c73900)>
Buffer 100x100 <Aravis.Buffer object at 0x7fb1c6298080 (ArvBuffer at 0x55b823c73990)>
Buffer 100x100 <Aravis.Buffer object at 0x7fb1c7631d00 (ArvBuffer at 0x55b823c73a20)>
Buffer 100x100 <Aravis.Buffer object at 0x7fb1c6298080 (ArvBuffer at 0x55b823c73ab0)>
Buffer 100x100 <Aravis.Buffer object at 0x7fb1c6297f40 (ArvBuffer at 0x55b823c73870)>
Buffer 100x100 <Aravis.Buffer object at 0x7fb1c6298080 (ArvBuffer at 0x55b823c6df50)>
Buffer 100x100 <Aravis.Buffer object at 0x7fb1c7631d00 (ArvBuffer at 0x55b823c6dec0)>
Buffer 100x100 <Aravis.Buffer object at 0x7fb1c6298080 (ArvBuffer at 0x55b823c6de30)>
Buffer 100x100 <Aravis.Buffer object at 0x7fb1c6297f40 (ArvBuffer at 0x55b823c6dda0)>
Buffer 100x100 <Aravis.Buffer object at 0x7fb1c6298080 (ArvBuffer at 0x55b823c6dd10)>
200.0
Buffer 200x200 <Aravis.Buffer object at 0x7fb1c6292a00 (ArvBuffer at 0x55b823c6dc80)>
Buffer 200x200 <Aravis.Buffer object at 0x7fb1c6298080 (ArvBuffer at 0x55b823c6dbf0)>
Buffer 200x200 <Aravis.Buffer object at 0x7fb1c6297f40 (ArvBuffer at 0x55b823c6db60)>
Buffer 200x200 <Aravis.Buffer object at 0x7fb1c6298080 (ArvBuffer at 0x55b823c6dda0)>
Buffer 200x200 <Aravis.Buffer object at 0x7fb1c6292a00 (ArvBuffer at 0x55b823c6de30)>
Buffer 200x200 <Aravis.Buffer object at 0x7fb1c6298080 (ArvBuffer at 0x55b823c6dec0)>
Buffer 200x200 <Aravis.Buffer object at 0x7fb1c6297f40 (ArvBuffer at 0x55b823c6df50)>
Buffer 200x200 <Aravis.Buffer object at 0x7fb1c6298080 (ArvBuffer at 0x55b823c73870)>
^CYou pressed Ctrl+C!
Buffer 200x200 <Aravis.Buffer object at 0x7fb1c6292a00 (ArvBuffer at 0x55b823c73ab0)>

Hope it helps.

Cheers,

Emmanuel.

Wonderful. Thank you

I see the stream.stop_thread(True).

Undoubtedly, that is the interface to arv_stream_stop_thread (…, TRUE) that you mentioned earlier.

A post was split to a new topic: Set_region issue