System Design
Reworked camera loading
Our team has completely reworked the existing camera loading and switching algorithm in a way that would still work with the old code, includes much-improved performance and allows for more complex features to be added in the future.
Our biggest performance bottleneck was switching between cameras: each time the camera was changing, the existing solution was going through the process of starting and setting up the camera, which took around 4 seconds each time. This made the system user-hostile and difficult to use.
Our solution transferred this loading process to the start of the application, which meant the camera would
not need to be loaded every time. Instead of launching just one camera at the beginning - the algorithm now
sets up all the cameras when launching the application. This may significantly increase the
application’s load time, but more importantly, it decreases the time to switch the camera from 4 seconds
down to just 0. For more information, please see the diagrams below or go to the related blog post in the
Development section.
Camera mapping
The camera index is now linked with the display index, which allows the system to identify which display should change when the user switches the camera. For more information, please see the diagrams below or go to the related blog post in the Development section.
![Image 2](../../images/diagram_camera_mapping.png)
Camera mapping
Finally, we merged the camera and display switching code for the Multiview mode inside a separete class that enapsulates the data needed to determine when to switch the camera:
![Image 2](../../images/diagram_multivew.png)