Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(745)

Unified Diff: webrtc/media/engine/webrtcvoiceengine.cc

Issue 2532433002: Add overhead to audio bwe min, max. (Closed)
Patch Set: Respond to offline discussion. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | webrtc/media/engine/webrtcvoiceengine_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/media/engine/webrtcvoiceengine.cc
diff --git a/webrtc/media/engine/webrtcvoiceengine.cc b/webrtc/media/engine/webrtcvoiceengine.cc
index 96f9ed70d403c6c464cc9b015f83190630a0b331..9a447fe0b6f62da6b331b2fe96339c9c73d5d8e3 100644
--- a/webrtc/media/engine/webrtcvoiceengine.cc
+++ b/webrtc/media/engine/webrtcvoiceengine.cc
@@ -399,6 +399,24 @@ class WebRtcVoiceCodecs final {
return 0;
}
+ static rtc::ArrayView<const int> GetPacketSizesMs(
+ const webrtc::CodecInst& codec) {
+ for (size_t i = 0; i < arraysize(kCodecPrefs); ++i) {
+ if (IsCodec(codec, kCodecPrefs[i].name)) {
+ size_t num_packet_sizes = kMaxNumPacketSize;
+ for (int index = 0; index < kMaxNumPacketSize; index++) {
+ if (kCodecPrefs[i].packet_sizes_ms[index] == 0) {
+ num_packet_sizes = index;
+ break;
+ }
+ }
+ return rtc::ArrayView<const int>(kCodecPrefs[i].packet_sizes_ms,
+ num_packet_sizes);
+ }
+ }
+ return rtc::ArrayView<const int>();
+ }
+
// If the AudioCodec param kCodecParamPTime is set, then we will set it to
// codec pacsize if it's valid, or we will pick the next smallest value we
// support.
@@ -1420,8 +1438,38 @@ class WebRtcVoiceMediaChannel::WebRtcAudioSendStream
"Enabled") {
// TODO(mflodman): Keep testing this and set proper values.
// Note: This is an early experiment currently only supported by Opus.
- config_.min_bitrate_bps = kOpusMinBitrateBps;
- config_.max_bitrate_bps = kOpusBitrateFbBps;
+ if (webrtc::field_trial::FindFullName(
+ "WebRTC-SendSideBwe-WithOverhead") == "Enabled") {
+ auto packet_sizes_ms = WebRtcVoiceCodecs::GetPacketSizesMs(
+ config_.send_codec_spec.codec_inst);
+ if (packet_sizes_ms.size() > 0) {
stefan-webrtc 2017/01/11 14:23:26 !packet_sizes_ms.empty() instead
michaelt 2017/01/11 15:30:51 Done.
+ int max_packet_size_ms =
+ *std::max_element(packet_sizes_ms.begin(), packet_sizes_ms.end());
+ int min_packet_size_ms =
+ *std::min_element(packet_sizes_ms.begin(), packet_sizes_ms.end());
+
+ if (config_.audio_network_adaptor_config &&
+ IsCodec(config_.send_codec_spec.codec_inst, kOpusCodecName)) {
stefan-webrtc 2017/01/11 14:23:26 I still think we should have a comment here. To so
michaelt 2017/01/11 15:30:51 Done.
+ max_packet_size_ms = 60;
+ min_packet_size_ms = 20;
+ }
+
+ // OverheadPerPacket = Ipv4(20B) + UDP(8B) + SRTP(10B) + RTP(12)
+ constexpr int kOverheadPerPacket = 20 + 8 + 10 + 12;
+
+ int min_overhead_bps =
+ kOverheadPerPacket * 8 * 1000 / max_packet_size_ms;
+
+ int max_overhead_bps =
+ kOverheadPerPacket * 8 * 1000 / min_packet_size_ms;
+
+ config_.min_bitrate_bps = kOpusMinBitrateBps + min_overhead_bps;
+ config_.max_bitrate_bps = kOpusBitrateFbBps + max_overhead_bps;
+ }
+ } else {
+ config_.min_bitrate_bps = kOpusMinBitrateBps;
+ config_.max_bitrate_bps = kOpusBitrateFbBps;
+ }
}
stream_ = call_->CreateAudioSendStream(config_);
RTC_CHECK(stream_);
« no previous file with comments | « no previous file | webrtc/media/engine/webrtcvoiceengine_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698