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:
parent
6bce6ad485
commit
68af10de7f
@ -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.
|
||||
|
||||
@ -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_;
|
||||
};
|
||||
|
||||
|
||||
@ -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());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user