It is sometimes desirable to carry state throughout the lifetime of an entire video stream, rather than on a frame-by-frame basis. This is where StreamState comes in.

If the stream_state field of the capsule's Capsule class is set, the process_frame method for your capsule's backend will be passed an instance of the provided class. Any state that should exist for the duration of the video stream may be saved here.

This is commonly used by capsules that track objects between video frames. Information on previous detections can be stored in the StreamState object and read when new detections are found. This can also be useful for result smoothing, for caching frames (think RNN models), and many other use cases.

A capsule's StreamState class does not need to implement any methods and has no functional purpose outside of the capsule.