diff --git a/modules/video_coding/codecs/vp9/svc_rate_allocator.cc b/modules/video_coding/codecs/vp9/svc_rate_allocator.cc index daa59b1101..551e65522d 100644 --- a/modules/video_coding/codecs/vp9/svc_rate_allocator.cc +++ b/modules/video_coding/codecs/vp9/svc_rate_allocator.cc @@ -203,6 +203,7 @@ VideoBitrateAllocation SvcRateAllocator::GetAllocationScreenSharing( codec_.spatialLayers[sl_idx].minBitrate * 1000; const size_t target_bitrate_bps = codec_.spatialLayers[sl_idx].targetBitrate * 1000; + RTC_DCHECK_LE(min_bitrate_bps, target_bitrate_bps); const size_t bitrate_bps = std::min(left_bitrate_bps, target_bitrate_bps); if (bitrate_bps >= min_bitrate_bps) { diff --git a/modules/video_coding/video_codec_initializer.cc b/modules/video_coding/video_codec_initializer.cc index a2bc27aab4..3316ce1581 100644 --- a/modules/video_coding/video_codec_initializer.cc +++ b/modules/video_coding/video_codec_initializer.cc @@ -190,6 +190,7 @@ VideoCodec VideoCodecInitializer::VideoEncoderConfigToVideoCodec( if (no_spatial_layering) { // Use codec's bitrate limits. spatial_layers.back().minBitrate = video_codec.minBitrate; + spatial_layers.back().targetBitrate = video_codec.maxBitrate; spatial_layers.back().maxBitrate = video_codec.maxBitrate; } diff --git a/modules/video_coding/video_codec_initializer_unittest.cc b/modules/video_coding/video_codec_initializer_unittest.cc index 6734b7e852..0f2d9f19b9 100644 --- a/modules/video_coding/video_codec_initializer_unittest.cc +++ b/modules/video_coding/video_codec_initializer_unittest.cc @@ -296,6 +296,18 @@ TEST_F(VideoCodecInitializerTest, kDefaultMaxBitrateBps / 1000); } +TEST_F(VideoCodecInitializerTest, + Vp9SingleSpatialLayerTargetBitrateIsEqualToCodecMaxBitrate) { + SetUpFor(VideoCodecType::kVideoCodecVP9, 1, 1, true); + VideoStream stream = DefaultStream(); + stream.num_temporal_layers = 1; + streams_.push_back(stream); + + EXPECT_TRUE(InitializeCodec()); + EXPECT_EQ(codec_out_.spatialLayers[0].targetBitrate, + kDefaultMaxBitrateBps / 1000); +} + TEST_F(VideoCodecInitializerTest, Vp9KeepBitrateLimitsIfNumberOfSpatialLayersIsReducedToOne) { // Request 3 spatial layers for 320x180 input. Actual number of layers will be