Neolink 0.5.8
Neolink Release 0.5.8
This build has various speed and consistency related improvements. It should run on less memory/cpu for longer without stopping.
-
Fix bytes remaining on stream bug
The decoder for the BCMedia was not allowing media packets to be split across packet boundaries which is an error since BCMedia packets can often split across EOF
-
Blocking was removed from the send parts of the connection.
It was possible for a thread to lock, blocking code from running at all. This has been addressed
-
Changed the recovery method for an unrecognised BCMedia
In the event that a BCMedia packet could not be decoded we used to advance the stream byte-wise until a valid BCMedia header was found. This could be too slow for large packets of erroneous data causing the thread to block. We now advance packet-wise.
-
Gstreamer buffers now have fixed sizes reducing memory usage
Long streaming when the client does not pull the frames fast enough could result in a buffer backlog in the stream. This has been addressed in two ways. A queue buffer has been added with a maximum size. Once this size is exhausted then older packets are dropped. Additionally the
enough-data
andneed-data
signals from gstreamer are properly used now and we pause pushing new buffers until ready. -
Added graceful restart to the media factory
In the event of an error in the media factory then the stream would not restart correctly with all streams failing even after a camera reconnect. This has been addressed by restarting the send thread on error.