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

Unified Diff: webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc

Issue 2528933002: Adding OnReceivedOverhead to AudioEncoder. (Closed)
Patch Set: new touch Created 4 years 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
Index: webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
diff --git a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
index 40ad595e5c2b76b4a35236d1cfd34a267caabc48..70ce3c5718622497c07d07f750b753945159e5be 100644
--- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
+++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
@@ -15,12 +15,14 @@
#include "webrtc/base/analytics/exp_filter.h"
#include "webrtc/base/checks.h"
+#include "webrtc/base/logging.h"
#include "webrtc/base/safe_conversions.h"
#include "webrtc/common_types.h"
#include "webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h"
#include "webrtc/modules/audio_coding/audio_network_adaptor/controller_manager.h"
#include "webrtc/modules/audio_coding/codecs/opus/opus_interface.h"
#include "webrtc/system_wrappers/include/clock.h"
+#include "webrtc/system_wrappers/include/field_trial.h"
namespace webrtc {
@@ -291,10 +293,27 @@ void AudioEncoderOpus::OnReceivedUplinkPacketLossFraction(
void AudioEncoderOpus::OnReceivedTargetAudioBitrate(
int target_audio_bitrate_bps) {
- if (!audio_network_adaptor_)
- return SetTargetBitrate(target_audio_bitrate_bps);
- audio_network_adaptor_->SetTargetAudioBitrate(target_audio_bitrate_bps);
- ApplyAudioNetworkAdaptor();
+ if (audio_network_adaptor_) {
+ audio_network_adaptor_->SetTargetAudioBitrate(target_audio_bitrate_bps);
+ ApplyAudioNetworkAdaptor();
+ return;
+ }
+ if (webrtc::field_trial::FindFullName("WebRTC-SendSideBwe-WithOverhead") ==
+ "Enabled") {
+ if (!overhead_bytes_per_packet_) {
+ LOG(LS_INFO)
+ << "AudioEncoderOpus: Overhead unknown, target audio bitrate "
+ << target_audio_bitrate_bps << " bps is ignored.";
+ return;
+ }
+ int overhead_rate =
+ 8 * 100 * *overhead_bytes_per_packet_ / Num10MsFramesInNextPacket();
kwiberg-webrtc 2016/12/03 00:30:56 I had a hard time deciphering this calculation. Co
minyue-webrtc 2016/12/06 09:04:19 Done.
+ SetTargetBitrate(std::min(
+ kMaxBitrateBps,
+ std::max(kMinBitrateBps, target_audio_bitrate_bps - overhead_rate)));
+ return;
+ }
+ SetTargetBitrate(target_audio_bitrate_bps);
kwiberg-webrtc 2016/12/03 00:30:56 I'd argue this would be easier to read if you remo
minyue-webrtc 2016/12/06 09:04:19 Done.
}
void AudioEncoderOpus::OnReceivedRtt(int rtt_ms) {
@@ -304,6 +323,15 @@ void AudioEncoderOpus::OnReceivedRtt(int rtt_ms) {
ApplyAudioNetworkAdaptor();
}
+void AudioEncoderOpus::OnReceivedOverhead(size_t overhead_bytes_per_packet) {
+ if (audio_network_adaptor_) {
+ audio_network_adaptor_->SetOverhead(overhead_bytes_per_packet);
+ ApplyAudioNetworkAdaptor();
+ return;
+ }
+ overhead_bytes_per_packet_ = rtc::Optional<size_t>(overhead_bytes_per_packet);
kwiberg-webrtc 2016/12/03 00:30:56 if ... else ... instead of the explicit return.
minyue-webrtc 2016/12/06 09:04:19 Done.
+}
+
void AudioEncoderOpus::SetReceiverFrameLengthRange(int min_frame_length_ms,
int max_frame_length_ms) {
// Ensure that |SetReceiverFrameLengthRange| is called before

Powered by Google App Engine
This is Rietveld 408576698