Video Calling Apps System Design
Table of content:
- Functional Requirements
 - Non Functional Requirements
 - Capacity Estimation
 - High Level System Design
 - Algorithms
 
Video Calling applications such as zoom/skype uses adaptive streaming to improve users realtime experience.
Functional Requirements
- Video calling should support peer-to-peer and video conferences
 - System should support 300M video calls/day
 - System should support Adaptive streaming
 - System should adopt Scalable Video Coding
 
Non-Functional Requirements
- System should be highly reliable and scalable
 - System should be highly available, loosing some frames is acceptable.
 
Capacity Estimation
Throughput
- Throughput : 300M/10^5= 3000 Calls/sec.
 
Storage
- Video recording stored in their local machines
 
High Level System Design
 
	IMPORTANT NOTES
- Adjusting resolution based on device type and bandwidth is called adaptive streaming.
 - Number of pixels in a video frame is called resolution
 - Sending many video streams for different resolutions isn’t scalable
 - System should use Scalable Video Coding (SVC) to stream video.