Files
Michael Froman f93a9c27d6 Bug 2064200 - Vendor libwebrtc from 36338af30e
Upstream commit: https://webrtc.googlesource.com/src/+/36338af30ec0b69a823b537ce5c7ae6c0b709948
    Support single-stream/SVC per-SSRC keyframe requests in VideoStreamEncoder

    When WebRTC-Video-PerSsrcKeyframes is enabled, EncoderRtcpFeedback calls
    SendKeyFrame with a layers vector sized to config_.rtp.ssrcs.size(). In
    single-stream or SVC configurations, codec.numberOfSimulcastStreams is
    1, so next_frame_types_.size() is 1, which caused
    RTC_DCHECK_EQ(layers.size(), next_frame_types_.size()) to crash. This
    removes the assertion and ensures any requested keyframe across RTP
    layers triggers a keyframe on the single encoded stream when
    next_frame_types_.size() == 1.

    Bug: b/527798266, webrtc:527515375
    Change-Id: I8970a563c4f12f85cdc55650a626faba1c4fb4ae
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/493920
    Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
    Reviewed-by: Åsa Persson <asapersson@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#48307}
2026-08-28 09:31:38 +00:00

25 lines
1.0 KiB
Diff

From: Michael Froman <mfroman@mozilla.com>
Date: Wed, 5 Jul 2023 19:15:00 +0000
Subject: Bug 1841864 - upstream commit 4baea5b07f should properly check size
of encoder_config_.simulcast_layers. r=jib
Differential Revision: https://phabricator.services.mozilla.com/D182813
Mercurial Revision: https://hg.mozilla.org/mozilla-central/rev/a7179d8d75313b6c9c76a496e10d102da019ff4f
---
video/video_stream_encoder.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/video/video_stream_encoder.cc b/video/video_stream_encoder.cc
index 1856c75e60..6f79c24b70 100644
--- a/video/video_stream_encoder.cc
+++ b/video/video_stream_encoder.cc
@@ -1486,7 +1486,7 @@ void VideoStreamEncoder::ReconfigureEncoder() {
bool is_svc = false;
bool single_stream_or_non_first_inactive = true;
- for (size_t i = 1; i < encoder_config_.number_of_streams; ++i) {
+ for (size_t i = 1; i < encoder_config_.simulcast_layers.size(); ++i) {
if (encoder_config_.simulcast_layers[i].active) {
single_stream_or_non_first_inactive = false;
break;