Revert "Fix target bitrate RTCP messages behavior for SVC streams"
This reverts commit ab65d8aab5fe63619033371fca1ce2711c2c2137. Reason for revert: Fails video_engine_tests ExtendedReportsEndToEndTest.TestExtendedReportsCanSignalZeroTargetBitrate https://ci.chromium.org/p/webrtc/builders/ci/Linux%20MSan/18366 Original change's description: > Fix target bitrate RTCP messages behavior for SVC streams > > Before this CL for SVC streams (e.g VP9) still 3 separate RTP_RTCP senders > were created. The RTCP target bitrate messages were treated as simulcast > and were split and send for each separate spatial layer in a separate SSRC. > > To fix that an svc flag is now wired to VideoSendStream config > and filled based on the encoder config in WebrtcVideoEngine. This flag is > used to differentiate between simulcast and SVC mode in RtpVideoSender. > > Bug: webrtc:10485 > Change-Id: Ifa01d12a7d4f01fcbe448ad11e0cc39ab2d1df55 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129929 > Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org> > Reviewed-by: Niels Moller <nisse@webrtc.org> > Reviewed-by: Erik Språng <sprang@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#27345} TBR=ilnik@webrtc.org,nisse@webrtc.org,sprang@webrtc.org Change-Id: I184f87289d9dccc67de165038d76a5690158a3b5 No-Tree-Checks: True No-Try: True Bug: webrtc:10485 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/130467 Commit-Queue: Oleh Prypin <oprypin@webrtc.org> Reviewed-by: Oleh Prypin <oprypin@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/master@{#27355}
This commit is contained in:
@ -104,14 +104,13 @@ RtpVideoSenderInterface* RtpTransportControllerSend::CreateRtpVideoSender(
|
||||
const RtpConfig& rtp_config,
|
||||
int rtcp_report_interval_ms,
|
||||
Transport* send_transport,
|
||||
bool is_svc,
|
||||
const RtpSenderObservers& observers,
|
||||
RtcEventLog* event_log,
|
||||
std::unique_ptr<FecController> fec_controller,
|
||||
const RtpSenderFrameEncryptionConfig& frame_encryption_config) {
|
||||
video_rtp_senders_.push_back(absl::make_unique<RtpVideoSender>(
|
||||
clock_, suspended_ssrcs, states, rtp_config, rtcp_report_interval_ms,
|
||||
send_transport, is_svc, observers,
|
||||
send_transport, observers,
|
||||
// TODO(holmer): Remove this circular dependency by injecting
|
||||
// the parts of RtpTransportControllerSendInterface that are really used.
|
||||
this, event_log, &retransmission_rate_limiter_, std::move(fec_controller),
|
||||
|
||||
@ -60,7 +60,6 @@ class RtpTransportControllerSend final
|
||||
const RtpConfig& rtp_config,
|
||||
int rtcp_report_interval_ms,
|
||||
Transport* send_transport,
|
||||
bool is_svc,
|
||||
const RtpSenderObservers& observers,
|
||||
RtcEventLog* event_log,
|
||||
std::unique_ptr<FecController> fec_controller,
|
||||
|
||||
@ -104,7 +104,6 @@ class RtpTransportControllerSendInterface {
|
||||
const RtpConfig& rtp_config,
|
||||
int rtcp_report_interval_ms,
|
||||
Transport* send_transport,
|
||||
bool is_svc,
|
||||
const RtpSenderObservers& observers,
|
||||
RtcEventLog* event_log,
|
||||
std::unique_ptr<FecController> fec_controller,
|
||||
|
||||
@ -212,7 +212,6 @@ RtpVideoSender::RtpVideoSender(
|
||||
const RtpConfig& rtp_config,
|
||||
int rtcp_report_interval_ms,
|
||||
Transport* send_transport,
|
||||
bool is_svc,
|
||||
const RtpSenderObservers& observers,
|
||||
RtpTransportControllerSendInterface* transport,
|
||||
RtcEventLog* event_log,
|
||||
@ -254,8 +253,7 @@ RtpVideoSender::RtpVideoSender(
|
||||
overhead_bytes_per_packet_(0),
|
||||
encoder_target_rate_bps_(0),
|
||||
frame_counts_(rtp_config.ssrcs.size()),
|
||||
frame_count_observer_(observers.frame_count_observer),
|
||||
is_svc_(is_svc) {
|
||||
frame_count_observer_(observers.frame_count_observer) {
|
||||
RTC_DCHECK_EQ(rtp_config.ssrcs.size(), rtp_streams_.size());
|
||||
module_process_thread_checker_.DetachFromThread();
|
||||
// SSRCs are assumed to be sorted in the same order as |rtp_modules|.
|
||||
@ -450,7 +448,7 @@ void RtpVideoSender::OnBitrateAllocationUpdated(
|
||||
const VideoBitrateAllocation& bitrate) {
|
||||
rtc::CritScope lock(&crit_);
|
||||
if (IsActive()) {
|
||||
if (rtp_streams_.size() == 1 || is_svc_) {
|
||||
if (rtp_streams_.size() == 1) {
|
||||
// If spatial scalability is enabled, it is covered by a single stream.
|
||||
rtp_streams_[0].rtp_rtcp->SetVideoBitrateAllocation(bitrate);
|
||||
} else {
|
||||
|
||||
@ -76,7 +76,6 @@ class RtpVideoSender : public RtpVideoSenderInterface,
|
||||
const RtpConfig& rtp_config,
|
||||
int rtcp_report_interval_ms,
|
||||
Transport* send_transport,
|
||||
bool is_svc,
|
||||
const RtpSenderObservers& observers,
|
||||
RtpTransportControllerSendInterface* transport,
|
||||
RtcEventLog* event_log,
|
||||
@ -191,8 +190,6 @@ class RtpVideoSender : public RtpVideoSenderInterface,
|
||||
std::vector<FrameCounts> frame_counts_ RTC_GUARDED_BY(crit_);
|
||||
FrameCountObserver* const frame_count_observer_;
|
||||
|
||||
const bool is_svc_;
|
||||
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(RtpVideoSender);
|
||||
};
|
||||
|
||||
|
||||
@ -99,7 +99,7 @@ class RtpVideoSenderTestFixture {
|
||||
std::map<uint32_t, RtpState> suspended_ssrcs;
|
||||
router_ = absl::make_unique<RtpVideoSender>(
|
||||
&clock_, suspended_ssrcs, suspended_payload_states, config_.rtp,
|
||||
config_.rtcp_report_interval_ms, &transport_, config_.is_svc,
|
||||
config_.rtcp_report_interval_ms, &transport_,
|
||||
CreateObservers(&call_stats_, &encoder_feedback_, &stats_proxy_,
|
||||
&stats_proxy_, &stats_proxy_, frame_count_observer,
|
||||
&stats_proxy_, &stats_proxy_, &send_delay_stats_),
|
||||
|
||||
@ -32,14 +32,13 @@ namespace webrtc {
|
||||
class MockRtpTransportControllerSend
|
||||
: public RtpTransportControllerSendInterface {
|
||||
public:
|
||||
MOCK_METHOD10(
|
||||
MOCK_METHOD9(
|
||||
CreateRtpVideoSender,
|
||||
RtpVideoSenderInterface*(std::map<uint32_t, RtpState>,
|
||||
const std::map<uint32_t, RtpPayloadState>&,
|
||||
const RtpConfig&,
|
||||
int rtcp_report_interval_ms,
|
||||
Transport*,
|
||||
bool,
|
||||
const RtpSenderObservers&,
|
||||
RtcEventLog*,
|
||||
std::unique_ptr<FecController>,
|
||||
|
||||
@ -151,10 +151,6 @@ class VideoSendStream {
|
||||
// Per PeerConnection cryptography options.
|
||||
CryptoOptions crypto_options;
|
||||
|
||||
// Forces spatial scalability to be implemented via spatial layers
|
||||
// instead of simulcast.
|
||||
bool is_svc;
|
||||
|
||||
private:
|
||||
// Access to the copy constructor is private to force use of the Copy()
|
||||
// method for those exceptional cases where we do use it.
|
||||
|
||||
@ -2302,7 +2302,6 @@ void WebRtcVideoChannel::WebRtcVideoSendStream::RecreateWebRtcStream() {
|
||||
"payload type the set codec. Ignoring RTX.";
|
||||
config.rtp.rtx.ssrcs.clear();
|
||||
}
|
||||
config.is_svc = parameters_.encoder_config.number_of_streams == 1;
|
||||
stream_ = call_->CreateVideoSendStream(std::move(config),
|
||||
parameters_.encoder_config.Copy());
|
||||
|
||||
|
||||
@ -762,9 +762,6 @@ void VideoQualityTest::SetupVideo(Transport* send_transport,
|
||||
video_send_configs_[video_idx].suspend_below_min_bitrate =
|
||||
params_.video[video_idx].suspend_below_min_bitrate;
|
||||
|
||||
video_send_configs_[video_idx].is_svc =
|
||||
params_.ss[video_idx].streams.size() == 1;
|
||||
|
||||
video_encoder_configs_[video_idx].number_of_streams =
|
||||
params_.ss[video_idx].streams.size();
|
||||
video_encoder_configs_[video_idx].max_bitrate_bps = 0;
|
||||
|
||||
@ -236,7 +236,6 @@ VideoSendStreamImpl::VideoSendStreamImpl(
|
||||
config_->rtp,
|
||||
config_->rtcp_report_interval_ms,
|
||||
config_->send_transport,
|
||||
config_->is_svc,
|
||||
CreateObservers(call_stats,
|
||||
&encoder_feedback_,
|
||||
stats_proxy_,
|
||||
|
||||
@ -96,7 +96,7 @@ class VideoSendStreamImplTest : public ::testing::Test {
|
||||
EXPECT_CALL(transport_controller_, packet_router())
|
||||
.WillRepeatedly(Return(&packet_router_));
|
||||
EXPECT_CALL(transport_controller_,
|
||||
CreateRtpVideoSender(_, _, _, _, _, _, _, _, _, _))
|
||||
CreateRtpVideoSender(_, _, _, _, _, _, _, _, _))
|
||||
.WillRepeatedly(Return(&rtp_video_sender_));
|
||||
EXPECT_CALL(rtp_video_sender_, SetActive(_))
|
||||
.WillRepeatedly(testing::Invoke(
|
||||
|
||||
Reference in New Issue
Block a user