Per temporal layer rate control in the V2 libaom AV1 encoder. The encoder reported every frame as belonging to temporal layer 0, so libaom ran a single rate control context for the whole stream and sized every frame against the same budget regardless of how the bitrate was distributed across the layers. The per frame budget was communicated by scaling the frame duration, which left the duration meaning something other than the interval between frames. Signal the real temporal id instead, declare the layer configuration to libaom, and derive the cumulative layer bitrates and frame rate factors it expects via the new TemporalLayerRateTracker. Cbr::duration is now passed through verbatim, and the meaning of both Cbr fields is spelled out in video_encoder_interface.h. The existing rate control tests are adjusted to allow the total to overshoot by what the keyframes were actually allowed, which the microsecond precision duration no longer leaves room for. This is a precursor to https://webrtc-review.git.corp.google.com/c/src/+/503780 Bug: webrtc:496266459 Change-Id: Ic9183a9757d624293148ec28af0b6adfcd0f2e1c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/504280 Commit-Queue: Erik Språng <sprang@webrtc.org> Reviewed-by: Sergey Silkin <ssilkin@webrtc.org> Cr-Commit-Position: refs/heads/main@{#48659}
WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.
See here for instructions on how to get started developing with the native code.
Authoritative list of directories that contain the native API header files.