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}
25 lines
1.0 KiB
Diff
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;
|