fixup! [TTVD][WebRTC] Implement switchable RTC video encoder wrapper 64/320564/4
authorAdam Bujalski <a.bujalski@samsung.com>
Wed, 13 Nov 2024 15:55:18 +0000 (16:55 +0100)
committerBot Blink <blinkbot@samsung.com>
Mon, 18 Nov 2024 17:37:12 +0000 (17:37 +0000)
To simulcast streams (more than one stream encoded) there are multiple
instances of decoders created and each encoding stream with different
parameters. Each stream is populated with its own requested bandwidth
values. Due to always using wrong index in getting bandwidth, it has
been reported that encoder bandwidth was 0 which causes stream to be
paused.

Bug: DF241106-01332
Bug: https://jira-eu.sec.samsung.net/browse/VDWASM-1907
Change-Id: I49121d00afb3157ef860c357d0c0b77e2a7a4bc6
Signed-off-by: Adam Bujalski <a.bujalski@samsung.com>
tizen_src/chromium_impl/third_party/blink/renderer/platform/peerconnection/switchable_video_encoder_wrapper.cc

index e8a100448d52765d41524baf952ba054ed1f2a36..f908e36969778e76de091015672a9ba960b819c8 100644 (file)
@@ -204,9 +204,8 @@ int32_t SwitchableVideoEncoderWrapper::Encode(
     return WEBRTC_VIDEO_CODEC_OK;
   }
 
-  const auto encoder_info = encoders_.front().encoder().GetEncoderInfo();
-
   for (auto& encoder : encoders_) {
+    const auto encoder_info = encoder.encoder().GetEncoderInfo();
     const bool skip_frame_conversion =
         (frame.width() == encoder.requested_width() &&
          frame.height() == encoder.requested_height()) ||
@@ -428,12 +427,13 @@ void SwitchableVideoEncoderWrapper::EncoderContext::SetRates(
     return;
   }
 
+  constexpr size_t kSpatialIdx = 0;
   RateControlParameters stream_parameters = parameters;
   stream_parameters.bitrate = webrtc::VideoBitrateAllocation();
   for (int i = 0; i < webrtc::kMaxTemporalStreams; ++i) {
     if (parameters.bitrate.HasBitrate(*stream_idx_, i)) {
       stream_parameters.bitrate.SetBitrate(
-          0, i, parameters.bitrate.GetBitrate(*stream_idx_, i));
+          kSpatialIdx, i, parameters.bitrate.GetBitrate(*stream_idx_, i));
     }
   }
 
@@ -453,7 +453,7 @@ void SwitchableVideoEncoderWrapper::EncoderContext::SetRates(
   }
 
   const uint32_t stream_bitrate_kbps =
-      stream_parameters.bitrate.GetSpatialLayerSum(*stream_idx_) / 1000;
+      stream_parameters.bitrate.GetSpatialLayerSum(kSpatialIdx) / 1000;
   is_paused_ = (stream_bitrate_kbps == 0);
   if (is_paused_) {
     request_keyframe_ = true;