Instil was hired by Tyco to develop victor Go, a mobile application used to control remote CCTV cameras and stream live footage over the internet. Go is the companion app for Tyco’s market leading victor product - a range of hardware and software components used to manage access control and surveillance devices across wide-area deployments.
Prior to Go, the core victor application server shipped with a browser-based solution to control and monitor multiple, simultaneous high-definition CCTV cameras. Designed purely for the desktop, the browser solution is able to rely upon the increased screen real-estate and processing power afforded by the desktop to enable its rich functionality.
The challenge was therefore to replicate this experience onto a mobile device whilst maintaining the functional richness and streaming capabilities of the desktop, including the ability to stream up to 9 high-definition CCTV camera feeds concurrently, without killing the device’s battery.
At the core of the Instil solution is a bespoke C++ streaming library called Surge that has been designed and tested to reliably and efficiently stream video content over RTP/RTSP. The actual Android and iOS clients were developed using Xamarin, a highly productive, cross-platform development framework that essentially compiles C# into native code.
By combining these technologies we were able to:
- Reduce the overall development effort (and cost) by reusing low-level protocol and application logic across Android and iOS.
- Maximise video decoding efficiency by handing decoding over to the underlying hardware.
- Simplify the code base by using one language for the app development (C#) and one language for handling the low-level streaming logic (C++).
As with all our projects, the development team employed the usual slew of developer tools, including Calabash for automated testing, Jenkins for continuous integration, and a device farm for testing functionality and performance across a range of devices.
For more information on our experiences with Xamarin, please see this blog post.
Android, iOS, Xamarin, C#, C/C++, RTSP/RTP, Calabash / Test Droid