Revert of fixed VP8 simulcast to not decode non-selected streams (patchset #5 id:80001 of https://codereview.webrtc.org/2728553003/ )

Reason for revert:
Causes regression in VP8 simulcast metrics (receive time, encoded frame size, etc) as two excluded streams' decoders request keyframes periodically, which affects metrics of a selected stream.

Original issue's description:
> In full-stack tests: fixed VP8 simulcast to not decode non-selected streams.
>
> BUG=webrtc:7095
>
> Review-Url: https://codereview.webrtc.org/2728553003
> Cr-Commit-Position: refs/heads/master@{#16948}
> Committed: 8dccd67520

TBR=sprang@webrtc.org,kjellander@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7095

Review-Url: https://codereview.webrtc.org/2729623005
Cr-Commit-Position: refs/heads/master@{#16967}
This commit is contained in:
ilnik 2017-03-02 04:59:33 -08:00 committed by Commit bot
parent 6bce6ad485
commit 68af10de7f
3 changed files with 16 additions and 27 deletions

View File

@ -26,14 +26,12 @@ LayerFilteringTransport::LayerFilteringTransport(
uint8_t vp8_video_payload_type,
uint8_t vp9_video_payload_type,
int selected_tl,
int selected_sl,
const std::set<uint32_t> &excluded_ssrcs)
int selected_sl)
: test::DirectTransport(config, send_call),
vp8_video_payload_type_(vp8_video_payload_type),
vp9_video_payload_type_(vp9_video_payload_type),
selected_tl_(selected_tl),
selected_sl_(selected_sl),
excluded_ssrcs_(std::move(excluded_ssrcs)),
discarded_last_packet_(false) {}
bool LayerFilteringTransport::DiscardedLastPacket() const {
@ -83,9 +81,7 @@ bool LayerFilteringTransport::SendRtp(const uint8_t* packet,
} else if ((selected_tl_ >= 0 && temporal_idx != kNoTemporalIdx &&
temporal_idx > selected_tl_) ||
(selected_sl_ >= 0 && spatial_idx != kNoSpatialIdx &&
spatial_idx > selected_sl_) ||
excluded_ssrcs_.find(header.ssrc) !=
excluded_ssrcs_.end()) {
spatial_idx > selected_sl_)) {
// Truncate packet to a padding packet.
length = header.headerLength + 1;
temp_buffer[0] |= (1 << 5); // P = 1.

View File

@ -27,8 +27,7 @@ class LayerFilteringTransport : public test::DirectTransport {
uint8_t vp8_video_payload_type,
uint8_t vp9_video_payload_type,
int selected_tl,
int selected_sl,
const std::set<uint32_t> &excluded_ssrcs_);
int selected_sl);
bool DiscardedLastPacket() const;
bool SendRtp(const uint8_t* data,
size_t length,
@ -42,7 +41,6 @@ class LayerFilteringTransport : public test::DirectTransport {
// selected one. -1 to disable filtering.
const int selected_tl_;
const int selected_sl_;
const std::set<uint32_t> excluded_ssrcs_;
bool discarded_last_packet_;
};

View File

@ -1438,26 +1438,21 @@ void VideoQualityTest::RunWithAnalyzer(const Params& params) {
call_config.bitrate_config = params.call.call_bitrate_config;
CreateCalls(call_config, call_config);
VideoStream& selected_stream = params_.ss.streams[params_.ss.selected_stream];
test::LayerFilteringTransport send_transport(
params_.pipe, sender_call_.get(), kPayloadTypeVP8, kPayloadTypeVP9,
params_.video.selected_tl, params_.ss.selected_sl);
test::DirectTransport recv_transport(params_.pipe, receiver_call_.get());
std::string graph_title = params_.analyzer.graph_title;
if (graph_title.empty())
graph_title = VideoQualityTest::GenerateGraphTitle();
std::set<uint32_t> excluded_ssrcs;
for (size_t i = 0; i < params_.ss.streams.size(); i++) {
if (i != params_.ss.selected_stream) {
excluded_ssrcs.insert(kVideoSendSsrcs[i]);
excluded_ssrcs.insert(kSendRtxSsrcs[i]);
}
}
test::LayerFilteringTransport send_transport(
params_.pipe, sender_call_.get(), kPayloadTypeVP8, kPayloadTypeVP9,
params_.video.selected_tl, params_.ss.selected_sl,
excluded_ssrcs);
test::DirectTransport recv_transport(params_.pipe, receiver_call_.get());
// In the case of different resolutions, the functions calculating PSNR and
// SSIM return -1.0, instead of a positive value as usual. VideoAnalyzer
// aborts if the average psnr/ssim are below the given threshold, which is
// 0.0 by default. Setting the thresholds to -1.1 prevents the unnecessary
// abort.
VideoStream& selected_stream = params_.ss.streams[params_.ss.selected_stream];
bool is_quick_test_enabled = field_trial::IsEnabled("WebRTC-QuickPerfTest");
VideoAnalyzer analyzer(
@ -1589,8 +1584,7 @@ void VideoQualityTest::RunWithRenderers(const Params& params) {
// calls.
test::LayerFilteringTransport transport(
params.pipe, call.get(), kPayloadTypeVP8, kPayloadTypeVP9,
params.video.selected_tl, params_.ss.selected_sl,
std::set<uint32_t>());
params.video.selected_tl, params_.ss.selected_sl);
// TODO(ivica): Use two calls to be able to merge with RunWithAnalyzer or at
// least share as much code as possible. That way this test would also match
// the full stack tests better.
@ -1623,7 +1617,8 @@ void VideoQualityTest::RunWithRenderers(const Params& params) {
if (params_.audio.enabled && params_.audio.sync_video)
video_receive_configs_[stream_id].sync_group = kSyncGroup;
SetupScreenshareOrSVC();
if (params_.screenshare.enabled)
SetupScreenshareOrSVC();
video_send_stream_ = call->CreateVideoSendStream(
video_send_config_.Copy(), video_encoder_config_.Copy());