Real-time Internet video systems are built by combining two components: a transport protocol and a video codec. In existing systems, these components operate independently, occasionally communicating through a standardized interface. For example, the video encoder reads frames off the camera at a particular frame rate and compresses them, aiming for a particular average bit rate. The transport protocol updates the encoder’s frame rate and target bit rate on a roughly one-second timescale. The congestion response is generally reactive: if the video codec produces a compressed frame that overshoots the network’s capacity, the transport will send it (even though it will cause packet loss or bloated buffers), but it subsequently tells the codec to pause encoding new frames until congestion clears.