Add VideoSendStream::Stats::prefered_media_bitrate_bps
This cl move calculation of stats for prefered_media_bitrate_bps from webrtcvideoengine2.GetStats to SendStatisticsProxy::OnEncoderReconfigured. This aligns better with how other send stats are reported and is needed as a prerequisite for moving video encoder configuration due to video resolution change from WebRtcVideoEngine2 to ViEEncoder. BUG=webrtc:6371 R=mflodman@webrtc.org, sprang@webrtc.org Review URL: https://codereview.webrtc.org/2368223002 . Cr-Commit-Position: refs/heads/master@{#14431}
This commit is contained in:
@ -29,7 +29,7 @@ std::vector<uint32_t> webrtc::SimulcastRateAllocator::GetAllocation(
|
||||
if (codec_.maxBitrate)
|
||||
left_to_allocate = std::min(left_to_allocate, codec_.maxBitrate);
|
||||
|
||||
if (codec_.numberOfSimulcastStreams == 0) {
|
||||
if (codec_.numberOfSimulcastStreams < 2) {
|
||||
// No simulcast, just set the target as this has been capped already.
|
||||
return std::vector<uint32_t>(1, left_to_allocate);
|
||||
}
|
||||
@ -65,6 +65,15 @@ std::vector<uint32_t> webrtc::SimulcastRateAllocator::GetAllocation(
|
||||
return allocated_bitrates_bps;
|
||||
}
|
||||
|
||||
uint32_t SimulcastRateAllocator::GetPreferedBitrate() const {
|
||||
std::vector<uint32_t> rates = GetAllocation(codec_.maxBitrate);
|
||||
uint32_t preferred_bitrate = 0;
|
||||
for (const uint32_t& rate : rates) {
|
||||
preferred_bitrate += rate;
|
||||
}
|
||||
return preferred_bitrate;
|
||||
}
|
||||
|
||||
const VideoCodec& webrtc::SimulcastRateAllocator::GetCodec() const {
|
||||
return codec_;
|
||||
}
|
||||
|
||||
@ -24,6 +24,7 @@ class SimulcastRateAllocator {
|
||||
explicit SimulcastRateAllocator(const VideoCodec& codec);
|
||||
|
||||
std::vector<uint32_t> GetAllocation(uint32_t bitrate_kbps) const;
|
||||
uint32_t GetPreferedBitrate() const;
|
||||
const VideoCodec& GetCodec() const;
|
||||
|
||||
private:
|
||||
|
||||
@ -208,4 +208,32 @@ TEST_F(SimulcastRateAllocatorTest, OneToThreeStreams) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(SimulcastRateAllocatorTest, GetPreferredBitrate) {
|
||||
EXPECT_EQ(codec_.maxBitrate, allocator_->GetPreferedBitrate());
|
||||
}
|
||||
|
||||
TEST_F(SimulcastRateAllocatorTest, GetPreferredBitrateSimulcast) {
|
||||
codec_.numberOfSimulcastStreams = 3;
|
||||
codec_.maxBitrate = 999999;
|
||||
codec_.simulcastStream[0].minBitrate = 10;
|
||||
codec_.simulcastStream[0].targetBitrate = 100;
|
||||
|
||||
codec_.simulcastStream[0].maxBitrate = 500;
|
||||
codec_.simulcastStream[1].minBitrate = 50;
|
||||
codec_.simulcastStream[1].targetBitrate = 500;
|
||||
codec_.simulcastStream[1].maxBitrate = 1000;
|
||||
|
||||
codec_.simulcastStream[2].minBitrate = 2000;
|
||||
codec_.simulcastStream[2].targetBitrate = 3000;
|
||||
codec_.simulcastStream[2].maxBitrate = 4000;
|
||||
CreateAllocator();
|
||||
|
||||
uint32_t preferred_bitrate;
|
||||
preferred_bitrate = codec_.simulcastStream[0].targetBitrate;
|
||||
preferred_bitrate += codec_.simulcastStream[1].targetBitrate;
|
||||
preferred_bitrate += codec_.simulcastStream[2].maxBitrate;
|
||||
|
||||
EXPECT_EQ(preferred_bitrate, allocator_->GetPreferedBitrate());
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
Reference in New Issue
Block a user