Enable payload-based padding by default and remove the API.
BUG=1812
R=mflodman@webrtc.org, pbos@webrtc.org, perkj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/31319004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7964 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/app/webrtc/webrtcsession.cc b/talk/app/webrtc/webrtcsession.cc
index 683efac..7d4174f 100644
--- a/talk/app/webrtc/webrtcsession.cc
+++ b/talk/app/webrtc/webrtcsession.cc
@@ -593,11 +593,6 @@
MediaConstraintsInterface::kCpuOveruseEncodeRsdThreshold,
&video_options_.cpu_overuse_encode_rsd_threshold);
- // Find payload padding constraint.
- SetOptionFromOptionalConstraint(constraints,
- MediaConstraintsInterface::kPayloadPadding,
- &video_options_.use_payload_padding);
-
SetOptionFromOptionalConstraint(constraints,
MediaConstraintsInterface::kNumUnsignalledRecvStreams,
&video_options_.unsignalled_recv_stream_limit);
diff --git a/talk/media/base/mediachannel.h b/talk/media/base/mediachannel.h
index cb50490..e3454c4 100644
--- a/talk/media/base/mediachannel.h
+++ b/talk/media/base/mediachannel.h
@@ -314,7 +314,6 @@
unsignalled_recv_stream_limit.SetFrom(change.unsignalled_recv_stream_limit);
use_simulcast_adapter.SetFrom(change.use_simulcast_adapter);
screencast_min_bitrate.SetFrom(change.screencast_min_bitrate);
- use_payload_padding.SetFrom(change.use_payload_padding);
}
bool operator==(const VideoOptions& o) const {
@@ -342,8 +341,7 @@
suspend_below_min_bitrate == o.suspend_below_min_bitrate &&
unsignalled_recv_stream_limit == o.unsignalled_recv_stream_limit &&
use_simulcast_adapter == o.use_simulcast_adapter &&
- screencast_min_bitrate == o.screencast_min_bitrate &&
- use_payload_padding == o.use_payload_padding;
+ screencast_min_bitrate == o.screencast_min_bitrate;
}
std::string ToString() const {
@@ -376,7 +374,6 @@
unsignalled_recv_stream_limit);
ost << ToStringIfSet("use simulcast adapter", use_simulcast_adapter);
ost << ToStringIfSet("screencast min bitrate", screencast_min_bitrate);
- ost << ToStringIfSet("payload padding", use_payload_padding);
ost << "}";
return ost.str();
}
@@ -436,8 +433,6 @@
Settable<bool> use_simulcast_adapter;
// Force screencast to use a minimum bitrate
Settable<int> screencast_min_bitrate;
- // Enable payload padding.
- Settable<bool> use_payload_padding;
};
// A class for playing out soundclips.
diff --git a/talk/media/webrtc/fakewebrtcvideoengine.h b/talk/media/webrtc/fakewebrtcvideoengine.h
index e8a3f09..aaa2f3b 100644
--- a/talk/media/webrtc/fakewebrtcvideoengine.h
+++ b/talk/media/webrtc/fakewebrtcvideoengine.h
@@ -689,11 +689,7 @@
channels_[channel]->overuse_observer_ = observer;
return 0;
}
-#ifdef USE_WEBRTC_DEV_BRANCH
WEBRTC_STUB(GetCpuOveruseMetrics, (int, webrtc::CpuOveruseMetrics*));
-#else
- WEBRTC_STUB(CpuOveruseMeasures, (int, int*, int*, int*, int*));
-#endif
WEBRTC_FUNC(SetCpuOveruseOptions,
(int channel, const webrtc::CpuOveruseOptions& options)) {
WEBRTC_CHECK_CHANNEL(channel);
@@ -1017,10 +1013,6 @@
return 0;
}
-#ifdef USE_WEBRTC_DEV_BRANCH
- WEBRTC_STUB(SetPadWithRedundantPayloads, (int, bool));
-#endif
-
WEBRTC_FUNC(SetRtxReceivePayloadType, (const int channel,
const uint8 payload_type)) {
WEBRTC_CHECK_CHANNEL(channel);
diff --git a/talk/media/webrtc/webrtcvideoengine.cc b/talk/media/webrtc/webrtcvideoengine.cc
index 1785cc2..689aef3 100644
--- a/talk/media/webrtc/webrtcvideoengine.cc
+++ b/talk/media/webrtc/webrtcvideoengine.cc
@@ -1078,7 +1078,7 @@
// Use method based on encode usage.
overuse_options->low_encode_usage_threshold_percent = underuse_threshold;
overuse_options->high_encode_usage_threshold_percent = overuse_threshold;
-#ifdef USE_WEBRTC_DEV_BRANCH
+
// Set optional thresholds, if configured.
int underuse_rsd_threshold = 0;
if (options.cpu_underuse_encode_rsd_threshold.Get(
@@ -1089,7 +1089,6 @@
if (options.cpu_overuse_encode_rsd_threshold.Get(&overuse_rsd_threshold)) {
overuse_options->high_encode_time_rsd_threshold = overuse_rsd_threshold;
}
-#endif
} else {
// Use default method based on capture jitter.
overuse_options->low_capture_jitter_threshold_ms =
@@ -2653,35 +2652,12 @@
sinfo.adapt_reason = send_channel->CurrentAdaptReason();
sinfo.adapt_changes = send_channel->AdaptChanges();
-#ifdef USE_WEBRTC_DEV_BRANCH
webrtc::CpuOveruseMetrics metrics;
engine()->vie()->base()->GetCpuOveruseMetrics(channel_id, &metrics);
sinfo.capture_jitter_ms = metrics.capture_jitter_ms;
sinfo.avg_encode_ms = metrics.avg_encode_time_ms;
sinfo.encode_usage_percent = metrics.encode_usage_percent;
sinfo.capture_queue_delay_ms_per_s = metrics.capture_queue_delay_ms_per_s;
-#else
- sinfo.capture_jitter_ms = -1;
- sinfo.avg_encode_ms = -1;
- sinfo.encode_usage_percent = -1;
- sinfo.capture_queue_delay_ms_per_s = -1;
-
- int capture_jitter_ms = 0;
- int avg_encode_time_ms = 0;
- int encode_usage_percent = 0;
- int capture_queue_delay_ms_per_s = 0;
- if (engine()->vie()->base()->CpuOveruseMeasures(
- channel_id,
- &capture_jitter_ms,
- &avg_encode_time_ms,
- &encode_usage_percent,
- &capture_queue_delay_ms_per_s) == 0) {
- sinfo.capture_jitter_ms = capture_jitter_ms;
- sinfo.avg_encode_ms = avg_encode_time_ms;
- sinfo.encode_usage_percent = encode_usage_percent;
- sinfo.capture_queue_delay_ms_per_s = capture_queue_delay_ms_per_s;
- }
-#endif
webrtc::RtcpPacketTypeCounter rtcp_sent;
webrtc::RtcpPacketTypeCounter rtcp_received;
@@ -3192,19 +3168,6 @@
}
}
-#ifdef USE_WEBRTC_DEV_BRANCH
- bool use_payload_padding;
- if (Changed(options.use_payload_padding,
- original.use_payload_padding,
- &use_payload_padding)) {
- LOG(LS_INFO) << "Payload-based padding called.";
- for (SendChannelMap::iterator it = send_channels_.begin();
- it != send_channels_.end(); ++it) {
- engine()->vie()->rtp()->SetPadWithRedundantPayloads(
- it->second->channel_id(), use_payload_padding);
- }
- }
-#endif
webrtc::CpuOveruseOptions overuse_options;
if (GetCpuOveruseOptions(options_, &overuse_options)) {
for (SendChannelMap::iterator it = send_channels_.begin();
diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc
index b30c467..0b72fdf 100644
--- a/talk/media/webrtc/webrtcvideoengine2.cc
+++ b/talk/media/webrtc/webrtcvideoengine2.cc
@@ -606,7 +606,6 @@
options_.cpu_overuse_detection.Set(false);
options_.dscp.Set(false);
options_.suspend_below_min_bitrate.Set(false);
- options_.use_payload_padding.Set(false);
options_.video_noise_reduction.Set(true);
options_.screencast_min_bitrate.Set(0);
}
@@ -1595,9 +1594,6 @@
// Set RTX payload type if RTX is enabled.
if (!parameters_.config.rtp.rtx.ssrcs.empty()) {
parameters_.config.rtp.rtx.payload_type = codec_settings.rtx_payload_type;
-
- options.use_payload_padding.Get(
- ¶meters_.config.rtp.rtx.pad_with_redundant_payloads);
}
if (IsNackEnabled(codec_settings.codec)) {
diff --git a/talk/media/webrtc/webrtcvideoengine2_unittest.cc b/talk/media/webrtc/webrtcvideoengine2_unittest.cc
index 1248b31..cc7c2f9 100644
--- a/talk/media/webrtc/webrtcvideoengine2_unittest.cc
+++ b/talk/media/webrtc/webrtcvideoengine2_unittest.cc
@@ -1387,32 +1387,6 @@
EXPECT_FALSE(stream->GetConfig().suspend_below_min_bitrate);
}
-TEST_F(WebRtcVideoChannel2Test, RedundantPayloadsDisabledByDefault) {
- const std::vector<uint32> ssrcs = MAKE_VECTOR(kSsrcs1);
- const std::vector<uint32> rtx_ssrcs = MAKE_VECTOR(kRtxSsrcs1);
- FakeVideoSendStream* stream = AddSendStream(
- cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs));
- EXPECT_FALSE(stream->GetConfig().rtp.rtx.pad_with_redundant_payloads);
-}
-
-TEST_F(WebRtcVideoChannel2Test, SetOptionsWithPayloadPadding) {
- VideoOptions options;
- options.use_payload_padding.Set(true);
- channel_->SetOptions(options);
-
- const std::vector<uint32> ssrcs = MAKE_VECTOR(kSsrcs1);
- const std::vector<uint32> rtx_ssrcs = MAKE_VECTOR(kRtxSsrcs1);
- FakeVideoSendStream* stream = AddSendStream(
- cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs));
- EXPECT_TRUE(stream->GetConfig().rtp.rtx.pad_with_redundant_payloads);
-
- options.use_payload_padding.Set(false);
- channel_->SetOptions(options);
-
- stream = fake_call_->GetVideoSendStreams()[0];
- EXPECT_FALSE(stream->GetConfig().rtp.rtx.pad_with_redundant_payloads);
-}
-
TEST_F(WebRtcVideoChannel2Test, Vp8DenoisingEnabledByDefault) {
FakeVideoSendStream* stream = AddSendStream();
webrtc::VideoCodecVP8 vp8_settings;
diff --git a/webrtc/video/end_to_end_tests.cc b/webrtc/video/end_to_end_tests.cc
index 51b5bf7..f820554 100644
--- a/webrtc/video/end_to_end_tests.cc
+++ b/webrtc/video/end_to_end_tests.cc
@@ -1765,7 +1765,6 @@
}
send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
- send_config->rtp.rtx.pad_with_redundant_payloads = true;
for (size_t i = 0; i < kNumSsrcs; ++i)
send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]);
diff --git a/webrtc/video/rampup_tests.cc b/webrtc/video/rampup_tests.cc
index 704115a..1d530aa 100644
--- a/webrtc/video/rampup_tests.cc
+++ b/webrtc/video/rampup_tests.cc
@@ -421,7 +421,6 @@
if (rtx) {
send_config_.rtp.rtx.payload_type = kSendRtxPayloadType;
send_config_.rtp.rtx.ssrcs = rtx_ssrcs;
- send_config_.rtp.rtx.pad_with_redundant_payloads = true;
}
if (num_streams == 1) {
@@ -467,7 +466,6 @@
if (rtx) {
send_config_.rtp.rtx.payload_type = kSendRtxPayloadType;
send_config_.rtp.rtx.ssrcs = GenerateSsrcs(number_of_streams, 200);
- send_config_.rtp.rtx.pad_with_redundant_payloads = true;
}
CreateStreams();
diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc
index cd8554e..b8ef4d3 100644
--- a/webrtc/video/video_send_stream.cc
+++ b/webrtc/video/video_send_stream.cc
@@ -458,7 +458,6 @@
}
if (config_.rtp.rtx.ssrcs.empty()) {
- assert(!config_.rtp.rtx.pad_with_redundant_payloads);
return;
}
@@ -475,10 +474,6 @@
rtp_rtcp_->SetRtpStateForSsrc(channel_, ssrc, it->second);
}
- if (config_.rtp.rtx.pad_with_redundant_payloads) {
- rtp_rtcp_->SetPadWithRedundantPayloads(channel_, true);
- }
-
assert(config_.rtp.rtx.payload_type >= 0);
rtp_rtcp_->SetRtxSendPayloadType(channel_, config_.rtp.rtx.payload_type);
}
diff --git a/webrtc/video_engine/include/vie_rtp_rtcp.h b/webrtc/video_engine/include/vie_rtp_rtcp.h
index f704f74..103a196 100644
--- a/webrtc/video_engine/include/vie_rtp_rtcp.h
+++ b/webrtc/video_engine/include/vie_rtp_rtcp.h
@@ -116,15 +116,6 @@
virtual int SetRtxSendPayloadType(const int video_channel,
const uint8_t payload_type) = 0;
- // This enables sending redundant payloads when padding up the bitrate instead
- // of sending dummy padding packets. This feature is off by default and will
- // only have an effect if RTX is also enabled.
- // TODO(holmer): Remove default implementation once this has been implemented
- // in libjingle.
- virtual int SetPadWithRedundantPayloads(int video_channel, bool enable) {
- return 0;
- }
-
virtual int SetRtxReceivePayloadType(const int video_channel,
const uint8_t payload_type) = 0;
diff --git a/webrtc/video_engine/vie_channel.cc b/webrtc/video_engine/vie_channel.cc
index 6708ead..24805ae 100644
--- a/webrtc/video_engine/vie_channel.cc
+++ b/webrtc/video_engine/vie_channel.cc
@@ -136,7 +136,6 @@
intra_frame_observer_(intra_frame_observer),
rtt_stats_(rtt_stats),
paced_sender_(paced_sender),
- pad_with_redundant_payloads_(false),
bandwidth_observer_(bandwidth_observer),
send_timestamp_extension_id_(kInvalidRtpExtensionId),
absolute_send_time_extension_id_(kInvalidRtpExtensionId),
@@ -937,22 +936,6 @@
return 0;
}
-void ViEChannel::SetPadWithRedundantPayloads(bool enable) {
- {
- CriticalSectionScoped cs(callback_cs_.get());
- pad_with_redundant_payloads_ = enable;
- }
- int mode;
- uint32_t ssrc;
- int payload_type;
- rtp_rtcp_->RTXSendStatus(&mode, &ssrc, &payload_type);
- if (mode != kRtxOff) {
- // Since RTX was already enabled we have to reset it with payload-based
- // padding on.
- SetRtxSendStatus(true);
- }
-}
-
int ViEChannel::SetRtxSendPayloadType(int payload_type) {
rtp_rtcp_->SetRtxSendPayloadType(payload_type);
for (std::list<RtpRtcp*>::iterator it = simulcast_rtp_rtcp_.begin();
@@ -964,13 +947,8 @@
}
void ViEChannel::SetRtxSendStatus(bool enable) {
- int rtx_settings = kRtxOff;
- if (enable) {
- CriticalSectionScoped cs(callback_cs_.get());
- rtx_settings = kRtxRetransmitted;
- if (pad_with_redundant_payloads_)
- rtx_settings |= kRtxRedundantPayloads;
- }
+ int rtx_settings =
+ enable ? kRtxRetransmitted | kRtxRedundantPayloads : kRtxOff;
rtp_rtcp_->SetRTXSendStatus(rtx_settings);
CriticalSectionScoped cs(rtp_rtcp_cs_.get());
for (std::list<RtpRtcp*>::iterator it = simulcast_rtp_rtcp_.begin();
diff --git a/webrtc/video_engine/vie_channel.h b/webrtc/video_engine/vie_channel.h
index d3cc366..5c85b5b 100644
--- a/webrtc/video_engine/vie_channel.h
+++ b/webrtc/video_engine/vie_channel.h
@@ -145,8 +145,6 @@
int32_t GetRemoteCSRC(uint32_t CSRCs[kRtpCsrcSize]);
int SetRtxSendPayloadType(int payload_type);
- // Only has an effect once RTX is enabled.
- void SetPadWithRedundantPayloads(bool enable);
void SetRtxReceivePayloadType(int payload_type);
// Sets the starting sequence number, must be called before StartSend.
@@ -490,7 +488,6 @@
RtcpIntraFrameObserver* intra_frame_observer_;
RtcpRttStats* rtt_stats_;
PacedSender* paced_sender_;
- bool pad_with_redundant_payloads_;
scoped_ptr<RtcpBandwidthObserver> bandwidth_observer_;
int send_timestamp_extension_id_;
diff --git a/webrtc/video_engine/vie_rtp_rtcp_impl.cc b/webrtc/video_engine/vie_rtp_rtcp_impl.cc
index 49999a9..ae21307 100644
--- a/webrtc/video_engine/vie_rtp_rtcp_impl.cc
+++ b/webrtc/video_engine/vie_rtp_rtcp_impl.cc
@@ -207,21 +207,6 @@
return 0;
}
-int ViERTP_RTCPImpl::SetPadWithRedundantPayloads(int video_channel,
- bool enable) {
- LOG_F(LS_INFO) << "channel: " << video_channel
- << " pad with redundant payloads: " << (enable ? "enable" :
- "disable");
- ViEChannelManagerScoped cs(*(shared_data_->channel_manager()));
- ViEChannel* vie_channel = cs.Channel(video_channel);
- if (!vie_channel) {
- shared_data_->SetLastError(kViERtpRtcpInvalidChannelId);
- return -1;
- }
- vie_channel->SetPadWithRedundantPayloads(enable);
- return 0;
-}
-
int ViERTP_RTCPImpl::SetRtxReceivePayloadType(const int video_channel,
const uint8_t payload_type) {
LOG_F(LS_INFO) << "channel: " << video_channel
diff --git a/webrtc/video_engine/vie_rtp_rtcp_impl.h b/webrtc/video_engine/vie_rtp_rtcp_impl.h
index 99b9758..8e9f097 100644
--- a/webrtc/video_engine/vie_rtp_rtcp_impl.h
+++ b/webrtc/video_engine/vie_rtp_rtcp_impl.h
@@ -41,7 +41,6 @@
unsigned int CSRCs[kRtpCsrcSize]) const;
virtual int SetRtxSendPayloadType(const int video_channel,
const uint8_t payload_type);
- virtual int SetPadWithRedundantPayloads(int video_channel, bool enable);
virtual int SetRtxReceivePayloadType(const int video_channel,
const uint8_t payload_type);
virtual int SetStartSequenceNumber(const int video_channel,
diff --git a/webrtc/video_send_stream.h b/webrtc/video_send_stream.h
index 712b16d..269fda0 100644
--- a/webrtc/video_send_stream.h
+++ b/webrtc/video_send_stream.h
@@ -95,17 +95,13 @@
// Settings for RTP retransmission payload format, see RFC 4588 for
// details.
struct Rtx {
- Rtx() : payload_type(-1), pad_with_redundant_payloads(false) {}
+ Rtx() : payload_type(-1) {}
std::string ToString() const;
// SSRCs to use for the RTX streams.
std::vector<uint32_t> ssrcs;
// Payload type to use for the RTX stream.
int payload_type;
- // Use redundant payloads to pad the bitrate. Instead of padding with
- // randomized packets, we will preemptively retransmit media packets on
- // the RTX stream.
- bool pad_with_redundant_payloads;
} rtx;
// RTCP CNAME, see RFC 3550.