2016-09-01 01:17:40 -07:00
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
|
|
|
*
|
|
|
|
|
* Use of this source code is governed by a BSD-style license
|
|
|
|
|
* that can be found in the LICENSE file in the root of the source
|
|
|
|
|
* tree. An additional intellectual property rights grant can be found
|
|
|
|
|
* in the file PATENTS. All contributing project authors may
|
|
|
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
|
|
|
*/
|
|
|
|
|
|
2018-10-12 10:30:31 +02:00
|
|
|
#include "video/video_stream_encoder.h"
|
|
|
|
|
|
2017-03-29 08:24:59 -07:00
|
|
|
#include <algorithm>
|
2016-11-01 11:45:46 -07:00
|
|
|
#include <limits>
|
2019-04-10 17:01:23 +02:00
|
|
|
#include <memory>
|
2016-09-23 15:52:06 +02:00
|
|
|
#include <utility>
|
|
|
|
|
|
2019-05-28 16:30:16 +02:00
|
|
|
#include "absl/memory/memory.h"
|
2019-04-10 17:01:23 +02:00
|
|
|
#include "api/task_queue/default_task_queue_factory.h"
|
2019-07-02 11:20:09 +02:00
|
|
|
#include "api/test/mock_fec_controller_override.h"
|
2018-11-08 10:02:56 -08:00
|
|
|
#include "api/video/builtin_video_bitrate_allocator_factory.h"
|
2017-09-15 06:47:31 +02:00
|
|
|
#include "api/video/i420_buffer.h"
|
2019-01-16 17:10:57 +01:00
|
|
|
#include "api/video/video_bitrate_allocation.h"
|
2019-06-11 14:57:57 +02:00
|
|
|
#include "api/video_codecs/video_encoder.h"
|
2018-10-12 10:30:31 +02:00
|
|
|
#include "api/video_codecs/vp8_temporal_layers.h"
|
2019-03-20 11:56:20 +01:00
|
|
|
#include "api/video_codecs/vp8_temporal_layers_factory.h"
|
2019-05-28 16:30:16 +02:00
|
|
|
#include "common_video/h264/h264_common.h"
|
2019-06-12 06:59:12 -07:00
|
|
|
#include "common_video/include/video_frame_buffer.h"
|
2019-01-11 09:11:00 -08:00
|
|
|
#include "media/base/video_adapter.h"
|
2018-03-28 19:32:37 +02:00
|
|
|
#include "modules/video_coding/codecs/vp9/include/vp9_globals.h"
|
2017-09-15 06:47:31 +02:00
|
|
|
#include "modules/video_coding/utility/default_video_bitrate_allocator.h"
|
2019-03-25 12:06:59 +01:00
|
|
|
#include "modules/video_coding/utility/simulcast_rate_allocator.h"
|
2019-01-11 09:11:00 -08:00
|
|
|
#include "rtc_base/fake_clock.h"
|
2017-09-15 06:47:31 +02:00
|
|
|
#include "rtc_base/logging.h"
|
2019-01-11 09:11:00 -08:00
|
|
|
#include "rtc_base/ref_counted_object.h"
|
2019-02-06 16:20:17 +01:00
|
|
|
#include "system_wrappers/include/field_trial.h"
|
2018-09-28 08:51:10 +02:00
|
|
|
#include "system_wrappers/include/metrics.h"
|
2017-09-15 06:47:31 +02:00
|
|
|
#include "system_wrappers/include/sleep.h"
|
|
|
|
|
#include "test/encoder_settings.h"
|
|
|
|
|
#include "test/fake_encoder.h"
|
2018-08-02 10:51:40 +02:00
|
|
|
#include "test/field_trial.h"
|
2017-09-15 06:47:31 +02:00
|
|
|
#include "test/frame_generator.h"
|
|
|
|
|
#include "test/gmock.h"
|
|
|
|
|
#include "test/gtest.h"
|
2018-09-28 09:07:24 +02:00
|
|
|
#include "test/video_encoder_proxy_factory.h"
|
2017-09-15 06:47:31 +02:00
|
|
|
#include "video/send_statistics_proxy.h"
|
2016-09-01 01:17:40 -07:00
|
|
|
|
|
|
|
|
namespace webrtc {
|
|
|
|
|
|
2017-02-01 08:38:12 -08:00
|
|
|
using ScaleReason = AdaptationObserverInterface::AdaptReason;
|
2017-01-16 06:24:02 -08:00
|
|
|
using ::testing::_;
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2016-11-01 11:45:46 -07:00
|
|
|
namespace {
|
2018-09-13 10:42:19 +02:00
|
|
|
const int kMinPixelsPerFrame = 320 * 180;
|
|
|
|
|
const int kMinFramerateFps = 2;
|
|
|
|
|
const int kMinBalancedFramerateFps = 7;
|
|
|
|
|
const int64_t kFrameTimeoutMs = 100;
|
2016-11-25 04:37:00 -08:00
|
|
|
const size_t kMaxPayloadLength = 1440;
|
2019-02-21 21:19:53 +01:00
|
|
|
const uint32_t kTargetBitrateBps = 1000000;
|
2019-07-02 14:18:34 +02:00
|
|
|
const uint32_t kStartBitrateBps = 600000;
|
2019-02-21 21:19:53 +01:00
|
|
|
const uint32_t kSimulcastTargetBitrateBps = 3150000;
|
|
|
|
|
const uint32_t kLowTargetBitrateBps = kTargetBitrateBps / 10;
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
const int kMaxInitialFramedrop = 4;
|
2017-06-15 04:21:07 -07:00
|
|
|
const int kDefaultFramerate = 30;
|
2018-09-13 10:42:19 +02:00
|
|
|
const int64_t kFrameIntervalMs = rtc::kNumMillisecsPerSec / kDefaultFramerate;
|
2016-11-25 04:37:00 -08:00
|
|
|
|
2019-05-28 16:30:16 +02:00
|
|
|
uint8_t optimal_sps[] = {0, 0, 0, 1, H264::NaluType::kSps,
|
|
|
|
|
0x00, 0x00, 0x03, 0x03, 0xF4,
|
|
|
|
|
0x05, 0x03, 0xC7, 0xE0, 0x1B,
|
|
|
|
|
0x41, 0x10, 0x8D, 0x00};
|
|
|
|
|
|
2016-11-01 11:45:46 -07:00
|
|
|
class TestBuffer : public webrtc::I420Buffer {
|
|
|
|
|
public:
|
|
|
|
|
TestBuffer(rtc::Event* event, int width, int height)
|
|
|
|
|
: I420Buffer(width, height), event_(event) {}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
friend class rtc::RefCountedObject<TestBuffer>;
|
|
|
|
|
~TestBuffer() override {
|
|
|
|
|
if (event_)
|
|
|
|
|
event_->Set();
|
|
|
|
|
}
|
|
|
|
|
rtc::Event* const event_;
|
|
|
|
|
};
|
|
|
|
|
|
2019-06-12 06:59:12 -07:00
|
|
|
// A fake native buffer that can't be converted to I420.
|
|
|
|
|
class FakeNativeBuffer : public webrtc::VideoFrameBuffer {
|
|
|
|
|
public:
|
|
|
|
|
FakeNativeBuffer(rtc::Event* event, int width, int height)
|
|
|
|
|
: event_(event), width_(width), height_(height) {}
|
|
|
|
|
webrtc::VideoFrameBuffer::Type type() const override { return Type::kNative; }
|
|
|
|
|
int width() const override { return width_; }
|
|
|
|
|
int height() const override { return height_; }
|
|
|
|
|
rtc::scoped_refptr<webrtc::I420BufferInterface> ToI420() override {
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
friend class rtc::RefCountedObject<FakeNativeBuffer>;
|
|
|
|
|
~FakeNativeBuffer() override {
|
|
|
|
|
if (event_)
|
|
|
|
|
event_->Set();
|
|
|
|
|
}
|
|
|
|
|
rtc::Event* const event_;
|
|
|
|
|
const int width_;
|
|
|
|
|
const int height_;
|
|
|
|
|
};
|
|
|
|
|
|
2017-12-06 10:27:48 +01:00
|
|
|
class CpuOveruseDetectorProxy : public OveruseFrameDetector {
|
|
|
|
|
public:
|
2018-03-28 16:40:58 +02:00
|
|
|
explicit CpuOveruseDetectorProxy(CpuOveruseMetricsObserver* metrics_observer)
|
|
|
|
|
: OveruseFrameDetector(metrics_observer),
|
2017-12-06 10:27:48 +01:00
|
|
|
last_target_framerate_fps_(-1) {}
|
|
|
|
|
virtual ~CpuOveruseDetectorProxy() {}
|
|
|
|
|
|
|
|
|
|
void OnTargetFramerateUpdated(int framerate_fps) override {
|
|
|
|
|
rtc::CritScope cs(&lock_);
|
|
|
|
|
last_target_framerate_fps_ = framerate_fps;
|
|
|
|
|
OveruseFrameDetector::OnTargetFramerateUpdated(framerate_fps);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int GetLastTargetFramerate() {
|
|
|
|
|
rtc::CritScope cs(&lock_);
|
|
|
|
|
return last_target_framerate_fps_;
|
|
|
|
|
}
|
|
|
|
|
|
2018-04-19 09:04:13 +02:00
|
|
|
CpuOveruseOptions GetOptions() { return options_; }
|
|
|
|
|
|
2017-12-06 10:27:48 +01:00
|
|
|
private:
|
|
|
|
|
rtc::CriticalSection lock_;
|
|
|
|
|
int last_target_framerate_fps_ RTC_GUARDED_BY(lock_);
|
|
|
|
|
};
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
class VideoStreamEncoderUnderTest : public VideoStreamEncoder {
|
2016-11-01 11:45:46 -07:00
|
|
|
public:
|
2018-07-24 09:29:58 +02:00
|
|
|
VideoStreamEncoderUnderTest(SendStatisticsProxy* stats_proxy,
|
2019-04-10 17:01:23 +02:00
|
|
|
const VideoStreamEncoderSettings& settings,
|
|
|
|
|
TaskQueueFactory* task_queue_factory)
|
2019-03-04 18:30:41 +01:00
|
|
|
: VideoStreamEncoder(Clock::GetRealTimeClock(),
|
|
|
|
|
1 /* number_of_cores */,
|
2017-08-03 08:27:51 -07:00
|
|
|
stats_proxy,
|
|
|
|
|
settings,
|
|
|
|
|
std::unique_ptr<OveruseFrameDetector>(
|
2017-12-06 10:27:48 +01:00
|
|
|
overuse_detector_proxy_ =
|
2019-03-01 11:50:20 +01:00
|
|
|
new CpuOveruseDetectorProxy(stats_proxy)),
|
2019-04-10 17:01:23 +02:00
|
|
|
task_queue_factory) {}
|
2016-11-01 11:45:46 -07:00
|
|
|
|
2017-02-01 08:38:12 -08:00
|
|
|
void PostTaskAndWait(bool down, AdaptReason reason) {
|
2018-11-07 08:43:50 +01:00
|
|
|
rtc::Event event;
|
2016-11-29 01:44:11 -08:00
|
|
|
encoder_queue()->PostTask([this, &event, reason, down] {
|
2019-08-16 17:24:59 +02:00
|
|
|
if (down)
|
|
|
|
|
AdaptDown(reason);
|
|
|
|
|
else
|
|
|
|
|
AdaptUp(reason);
|
2016-11-01 11:45:46 -07:00
|
|
|
event.Set();
|
|
|
|
|
});
|
2017-02-16 15:46:27 -08:00
|
|
|
ASSERT_TRUE(event.Wait(5000));
|
2016-11-01 11:45:46 -07:00
|
|
|
}
|
|
|
|
|
|
2017-03-03 00:24:41 -08:00
|
|
|
// This is used as a synchronisation mechanism, to make sure that the
|
|
|
|
|
// encoder queue is not blocked before we start sending it frames.
|
|
|
|
|
void WaitUntilTaskQueueIsIdle() {
|
2018-11-07 08:43:50 +01:00
|
|
|
rtc::Event event;
|
2017-03-03 00:24:41 -08:00
|
|
|
encoder_queue()->PostTask([&event] { event.Set(); });
|
|
|
|
|
ASSERT_TRUE(event.Wait(5000));
|
|
|
|
|
}
|
|
|
|
|
|
2017-02-01 08:38:12 -08:00
|
|
|
void TriggerCpuOveruse() { PostTaskAndWait(true, AdaptReason::kCpu); }
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-02-01 08:38:12 -08:00
|
|
|
void TriggerCpuNormalUsage() { PostTaskAndWait(false, AdaptReason::kCpu); }
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-02-01 08:38:12 -08:00
|
|
|
void TriggerQualityLow() { PostTaskAndWait(true, AdaptReason::kQuality); }
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-02-01 08:38:12 -08:00
|
|
|
void TriggerQualityHigh() { PostTaskAndWait(false, AdaptReason::kQuality); }
|
2017-06-15 04:21:07 -07:00
|
|
|
|
2017-12-06 10:27:48 +01:00
|
|
|
CpuOveruseDetectorProxy* overuse_detector_proxy_;
|
2016-11-01 11:45:46 -07:00
|
|
|
};
|
|
|
|
|
|
2016-11-25 04:37:00 -08:00
|
|
|
class VideoStreamFactory
|
|
|
|
|
: public VideoEncoderConfig::VideoStreamFactoryInterface {
|
|
|
|
|
public:
|
2017-06-15 04:21:07 -07:00
|
|
|
explicit VideoStreamFactory(size_t num_temporal_layers, int framerate)
|
|
|
|
|
: num_temporal_layers_(num_temporal_layers), framerate_(framerate) {
|
2016-11-25 04:37:00 -08:00
|
|
|
EXPECT_GT(num_temporal_layers, 0u);
|
2017-06-15 04:21:07 -07:00
|
|
|
EXPECT_GT(framerate, 0);
|
2016-11-25 04:37:00 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
std::vector<VideoStream> CreateEncoderStreams(
|
|
|
|
|
int width,
|
|
|
|
|
int height,
|
|
|
|
|
const VideoEncoderConfig& encoder_config) override {
|
|
|
|
|
std::vector<VideoStream> streams =
|
|
|
|
|
test::CreateVideoStreams(width, height, encoder_config);
|
|
|
|
|
for (VideoStream& stream : streams) {
|
2018-03-01 15:11:29 +01:00
|
|
|
stream.num_temporal_layers = num_temporal_layers_;
|
2017-06-15 04:21:07 -07:00
|
|
|
stream.max_framerate = framerate_;
|
2016-11-25 04:37:00 -08:00
|
|
|
}
|
|
|
|
|
return streams;
|
|
|
|
|
}
|
2017-06-15 04:21:07 -07:00
|
|
|
|
2016-11-25 04:37:00 -08:00
|
|
|
const size_t num_temporal_layers_;
|
2017-06-15 04:21:07 -07:00
|
|
|
const int framerate_;
|
2016-11-25 04:37:00 -08:00
|
|
|
};
|
|
|
|
|
|
2019-06-12 06:59:12 -07:00
|
|
|
// Simulates simulcast behavior and makes highest stream resolutions divisible
|
|
|
|
|
// by 4.
|
|
|
|
|
class CroppingVideoStreamFactory
|
|
|
|
|
: public VideoEncoderConfig::VideoStreamFactoryInterface {
|
|
|
|
|
public:
|
|
|
|
|
explicit CroppingVideoStreamFactory(size_t num_temporal_layers, int framerate)
|
|
|
|
|
: num_temporal_layers_(num_temporal_layers), framerate_(framerate) {
|
|
|
|
|
EXPECT_GT(num_temporal_layers, 0u);
|
|
|
|
|
EXPECT_GT(framerate, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
std::vector<VideoStream> CreateEncoderStreams(
|
|
|
|
|
int width,
|
|
|
|
|
int height,
|
|
|
|
|
const VideoEncoderConfig& encoder_config) override {
|
|
|
|
|
std::vector<VideoStream> streams = test::CreateVideoStreams(
|
|
|
|
|
width - width % 4, height - height % 4, encoder_config);
|
|
|
|
|
for (VideoStream& stream : streams) {
|
|
|
|
|
stream.num_temporal_layers = num_temporal_layers_;
|
|
|
|
|
stream.max_framerate = framerate_;
|
|
|
|
|
}
|
|
|
|
|
return streams;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const size_t num_temporal_layers_;
|
|
|
|
|
const int framerate_;
|
|
|
|
|
};
|
|
|
|
|
|
2017-02-01 08:38:12 -08:00
|
|
|
class AdaptingFrameForwarder : public test::FrameForwarder {
|
|
|
|
|
public:
|
|
|
|
|
AdaptingFrameForwarder() : adaptation_enabled_(false) {}
|
2017-04-04 05:51:49 -07:00
|
|
|
~AdaptingFrameForwarder() override {}
|
2017-02-01 08:38:12 -08:00
|
|
|
|
|
|
|
|
void set_adaptation_enabled(bool enabled) {
|
|
|
|
|
rtc::CritScope cs(&crit_);
|
|
|
|
|
adaptation_enabled_ = enabled;
|
|
|
|
|
}
|
|
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
bool adaption_enabled() const {
|
2017-02-01 08:38:12 -08:00
|
|
|
rtc::CritScope cs(&crit_);
|
|
|
|
|
return adaptation_enabled_;
|
|
|
|
|
}
|
|
|
|
|
|
2017-05-15 23:40:18 -07:00
|
|
|
rtc::VideoSinkWants last_wants() const {
|
|
|
|
|
rtc::CritScope cs(&crit_);
|
|
|
|
|
return last_wants_;
|
|
|
|
|
}
|
|
|
|
|
|
2018-06-15 12:28:07 +02:00
|
|
|
absl::optional<int> last_sent_width() const { return last_width_; }
|
|
|
|
|
absl::optional<int> last_sent_height() const { return last_height_; }
|
2017-12-08 17:04:29 -08:00
|
|
|
|
2017-02-01 08:38:12 -08:00
|
|
|
void IncomingCapturedFrame(const VideoFrame& video_frame) override {
|
|
|
|
|
int cropped_width = 0;
|
|
|
|
|
int cropped_height = 0;
|
|
|
|
|
int out_width = 0;
|
|
|
|
|
int out_height = 0;
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
if (adaption_enabled()) {
|
|
|
|
|
if (adapter_.AdaptFrameResolution(
|
|
|
|
|
video_frame.width(), video_frame.height(),
|
|
|
|
|
video_frame.timestamp_us() * 1000, &cropped_width,
|
|
|
|
|
&cropped_height, &out_width, &out_height)) {
|
2019-01-03 23:49:37 +01:00
|
|
|
VideoFrame adapted_frame =
|
|
|
|
|
VideoFrame::Builder()
|
|
|
|
|
.set_video_frame_buffer(new rtc::RefCountedObject<TestBuffer>(
|
|
|
|
|
nullptr, out_width, out_height))
|
|
|
|
|
.set_timestamp_rtp(99)
|
|
|
|
|
.set_timestamp_ms(99)
|
|
|
|
|
.set_rotation(kVideoRotation_0)
|
|
|
|
|
.build();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
adapted_frame.set_ntp_time_ms(video_frame.ntp_time_ms());
|
|
|
|
|
test::FrameForwarder::IncomingCapturedFrame(adapted_frame);
|
2017-12-08 17:04:29 -08:00
|
|
|
last_width_.emplace(adapted_frame.width());
|
|
|
|
|
last_height_.emplace(adapted_frame.height());
|
|
|
|
|
} else {
|
2018-06-15 12:28:07 +02:00
|
|
|
last_width_ = absl::nullopt;
|
|
|
|
|
last_height_ = absl::nullopt;
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
}
|
2017-02-01 08:38:12 -08:00
|
|
|
} else {
|
|
|
|
|
test::FrameForwarder::IncomingCapturedFrame(video_frame);
|
2017-12-08 17:04:29 -08:00
|
|
|
last_width_.emplace(video_frame.width());
|
|
|
|
|
last_height_.emplace(video_frame.height());
|
2017-02-01 08:38:12 -08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AddOrUpdateSink(rtc::VideoSinkInterface<VideoFrame>* sink,
|
|
|
|
|
const rtc::VideoSinkWants& wants) override {
|
|
|
|
|
rtc::CritScope cs(&crit_);
|
2017-05-15 23:40:18 -07:00
|
|
|
last_wants_ = sink_wants();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
adapter_.OnResolutionFramerateRequest(wants.target_pixel_count,
|
|
|
|
|
wants.max_pixel_count,
|
|
|
|
|
wants.max_framerate_fps);
|
2017-02-01 08:38:12 -08:00
|
|
|
test::FrameForwarder::AddOrUpdateSink(sink, wants);
|
|
|
|
|
}
|
|
|
|
|
cricket::VideoAdapter adapter_;
|
2017-09-09 04:17:22 -07:00
|
|
|
bool adaptation_enabled_ RTC_GUARDED_BY(crit_);
|
|
|
|
|
rtc::VideoSinkWants last_wants_ RTC_GUARDED_BY(crit_);
|
2018-06-15 12:28:07 +02:00
|
|
|
absl::optional<int> last_width_;
|
|
|
|
|
absl::optional<int> last_height_;
|
2017-02-01 08:38:12 -08:00
|
|
|
};
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
|
2018-07-24 09:29:58 +02:00
|
|
|
// TODO(nisse): Mock only VideoStreamEncoderObserver.
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
class MockableSendStatisticsProxy : public SendStatisticsProxy {
|
|
|
|
|
public:
|
|
|
|
|
MockableSendStatisticsProxy(Clock* clock,
|
|
|
|
|
const VideoSendStream::Config& config,
|
|
|
|
|
VideoEncoderConfig::ContentType content_type)
|
|
|
|
|
: SendStatisticsProxy(clock, config, content_type) {}
|
|
|
|
|
|
|
|
|
|
VideoSendStream::Stats GetStats() override {
|
|
|
|
|
rtc::CritScope cs(&lock_);
|
|
|
|
|
if (mock_stats_)
|
|
|
|
|
return *mock_stats_;
|
|
|
|
|
return SendStatisticsProxy::GetStats();
|
|
|
|
|
}
|
|
|
|
|
|
2018-07-24 09:29:58 +02:00
|
|
|
int GetInputFrameRate() const override {
|
|
|
|
|
rtc::CritScope cs(&lock_);
|
|
|
|
|
if (mock_stats_)
|
|
|
|
|
return mock_stats_->input_frame_rate;
|
|
|
|
|
return SendStatisticsProxy::GetInputFrameRate();
|
|
|
|
|
}
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
void SetMockStats(const VideoSendStream::Stats& stats) {
|
|
|
|
|
rtc::CritScope cs(&lock_);
|
|
|
|
|
mock_stats_.emplace(stats);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ResetMockStats() {
|
|
|
|
|
rtc::CritScope cs(&lock_);
|
|
|
|
|
mock_stats_.reset();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
rtc::CriticalSection lock_;
|
2018-06-15 12:28:07 +02:00
|
|
|
absl::optional<VideoSendStream::Stats> mock_stats_ RTC_GUARDED_BY(lock_);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
};
|
|
|
|
|
|
2017-06-27 07:06:52 -07:00
|
|
|
class MockBitrateObserver : public VideoBitrateAllocationObserver {
|
|
|
|
|
public:
|
2018-04-23 12:32:22 +02:00
|
|
|
MOCK_METHOD1(OnBitrateAllocationUpdated, void(const VideoBitrateAllocation&));
|
2017-06-27 07:06:52 -07:00
|
|
|
};
|
|
|
|
|
|
2016-11-01 11:45:46 -07:00
|
|
|
} // namespace
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
class VideoStreamEncoderTest : public ::testing::Test {
|
2016-09-01 01:17:40 -07:00
|
|
|
public:
|
|
|
|
|
static const int kDefaultTimeoutMs = 30 * 1000;
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
VideoStreamEncoderTest()
|
2016-09-01 01:17:40 -07:00
|
|
|
: video_send_config_(VideoSendStream::Config(nullptr)),
|
2016-10-02 23:45:26 -07:00
|
|
|
codec_width_(320),
|
|
|
|
|
codec_height_(240),
|
2018-09-13 10:42:19 +02:00
|
|
|
max_framerate_(kDefaultFramerate),
|
2019-04-10 17:01:23 +02:00
|
|
|
task_queue_factory_(CreateDefaultTaskQueueFactory()),
|
2016-09-01 01:17:40 -07:00
|
|
|
fake_encoder_(),
|
2018-04-19 09:04:13 +02:00
|
|
|
encoder_factory_(&fake_encoder_),
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
stats_proxy_(new MockableSendStatisticsProxy(
|
2016-11-01 11:45:46 -07:00
|
|
|
Clock::GetRealTimeClock(),
|
|
|
|
|
video_send_config_,
|
|
|
|
|
webrtc::VideoEncoderConfig::ContentType::kRealtimeVideo)),
|
2016-09-01 01:17:40 -07:00
|
|
|
sink_(&fake_encoder_) {}
|
|
|
|
|
|
|
|
|
|
void SetUp() override {
|
2016-11-01 11:45:46 -07:00
|
|
|
metrics::Reset();
|
2016-09-01 01:17:40 -07:00
|
|
|
video_send_config_ = VideoSendStream::Config(nullptr);
|
2018-04-19 09:04:13 +02:00
|
|
|
video_send_config_.encoder_settings.encoder_factory = &encoder_factory_;
|
2018-11-08 10:02:56 -08:00
|
|
|
video_send_config_.encoder_settings.bitrate_allocator_factory =
|
2019-07-02 14:18:34 +02:00
|
|
|
&bitrate_allocator_factory_;
|
Reland "Reland "Move rtp-specific config out of EncoderSettings.""
This reverts commit 6c2c13af06b32778b86950681758a7970d1c5d9e.
Reason for revert: Intend to investigate and fix perf problems.
Original change's description:
> Revert "Reland "Move rtp-specific config out of EncoderSettings.""
>
> This reverts commit 04dd1768625eb2241d1fb97fd0137897e703e266.
>
> Reason for revert: Regression in ramp up perf tests.
>
> Original change's description:
> > Reland "Move rtp-specific config out of EncoderSettings."
> >
> > This is a reland of bc900cb1d1810fcf678fe41cf1e3966daa39c88c
> >
> > Original change's description:
> > > Move rtp-specific config out of EncoderSettings.
> > >
> > > In VideoSendStream::Config, move payload_name and payload_type from
> > > EncoderSettings to Rtp.
> > >
> > > EncoderSettings now contains configuration for VideoStreamEncoder only,
> > > and should perhaps be renamed in a follow up cl. It's no longer
> > > passed as an argument to VideoCodecInitializer::SetupCodec.
> > >
> > > The latter then needs a different way to know the codec type,
> > > which is provided by a new codec_type member in VideoEncoderConfig.
> > >
> > > Bug: webrtc:8830
> > > Change-Id: Ifcc691aef1ee6a95e43c0452c5e630d92a511cd6
> > > Reviewed-on: https://webrtc-review.googlesource.com/62062
> > > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > > Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> > > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#22532}
> >
> > Bug: webrtc:8830
> > Change-Id: If88ef7d57cdaa4fae3c7b2a97ea5a6e1b833e019
> > Reviewed-on: https://webrtc-review.googlesource.com/63721
> > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#22595}
>
> TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
>
> Bug: webrtc:8830,chromium:827080
> Change-Id: Iaaf146de91ec5c0d741b8efdf143f7e173084fef
> Reviewed-on: https://webrtc-review.googlesource.com/65520
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22677}
TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:8830, chromium:827080
Change-Id: I9b62987bf5daced90dfeb3ebb6739c80117c487f
Reviewed-on: https://webrtc-review.googlesource.com/66862
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22751}
2018-04-05 15:36:51 +02:00
|
|
|
video_send_config_.rtp.payload_name = "FAKE";
|
|
|
|
|
video_send_config_.rtp.payload_type = 125;
|
2016-09-01 01:17:40 -07:00
|
|
|
|
2016-09-23 15:52:06 +02:00
|
|
|
VideoEncoderConfig video_encoder_config;
|
Reland "Reland "Move rtp-specific config out of EncoderSettings.""
This reverts commit 6c2c13af06b32778b86950681758a7970d1c5d9e.
Reason for revert: Intend to investigate and fix perf problems.
Original change's description:
> Revert "Reland "Move rtp-specific config out of EncoderSettings.""
>
> This reverts commit 04dd1768625eb2241d1fb97fd0137897e703e266.
>
> Reason for revert: Regression in ramp up perf tests.
>
> Original change's description:
> > Reland "Move rtp-specific config out of EncoderSettings."
> >
> > This is a reland of bc900cb1d1810fcf678fe41cf1e3966daa39c88c
> >
> > Original change's description:
> > > Move rtp-specific config out of EncoderSettings.
> > >
> > > In VideoSendStream::Config, move payload_name and payload_type from
> > > EncoderSettings to Rtp.
> > >
> > > EncoderSettings now contains configuration for VideoStreamEncoder only,
> > > and should perhaps be renamed in a follow up cl. It's no longer
> > > passed as an argument to VideoCodecInitializer::SetupCodec.
> > >
> > > The latter then needs a different way to know the codec type,
> > > which is provided by a new codec_type member in VideoEncoderConfig.
> > >
> > > Bug: webrtc:8830
> > > Change-Id: Ifcc691aef1ee6a95e43c0452c5e630d92a511cd6
> > > Reviewed-on: https://webrtc-review.googlesource.com/62062
> > > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > > Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> > > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#22532}
> >
> > Bug: webrtc:8830
> > Change-Id: If88ef7d57cdaa4fae3c7b2a97ea5a6e1b833e019
> > Reviewed-on: https://webrtc-review.googlesource.com/63721
> > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#22595}
>
> TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
>
> Bug: webrtc:8830,chromium:827080
> Change-Id: Iaaf146de91ec5c0d741b8efdf143f7e173084fef
> Reviewed-on: https://webrtc-review.googlesource.com/65520
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22677}
TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:8830, chromium:827080
Change-Id: I9b62987bf5daced90dfeb3ebb6739c80117c487f
Reviewed-on: https://webrtc-review.googlesource.com/66862
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22751}
2018-04-05 15:36:51 +02:00
|
|
|
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
|
2017-06-27 07:06:52 -07:00
|
|
|
video_encoder_config.video_stream_factory =
|
|
|
|
|
new rtc::RefCountedObject<VideoStreamFactory>(1, max_framerate_);
|
2016-11-16 16:41:30 +01:00
|
|
|
video_encoder_config_ = video_encoder_config.Copy();
|
2017-06-27 07:06:52 -07:00
|
|
|
|
|
|
|
|
// Framerate limit is specified by the VideoStreamFactory.
|
|
|
|
|
std::vector<VideoStream> streams =
|
|
|
|
|
video_encoder_config.video_stream_factory->CreateEncoderStreams(
|
|
|
|
|
codec_width_, codec_height_, video_encoder_config);
|
|
|
|
|
max_framerate_ = streams[0].max_framerate;
|
2019-04-17 12:11:20 +02:00
|
|
|
fake_clock_.SetTime(Timestamp::us(1234));
|
2017-06-27 07:06:52 -07:00
|
|
|
|
2018-04-26 09:51:47 +02:00
|
|
|
ConfigureEncoder(std::move(video_encoder_config));
|
2016-11-25 04:37:00 -08:00
|
|
|
}
|
|
|
|
|
|
2018-04-26 09:51:47 +02:00
|
|
|
void ConfigureEncoder(VideoEncoderConfig video_encoder_config) {
|
2017-08-03 08:27:51 -07:00
|
|
|
if (video_stream_encoder_)
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
video_stream_encoder_.reset(new VideoStreamEncoderUnderTest(
|
2019-04-10 17:01:23 +02:00
|
|
|
stats_proxy_.get(), video_send_config_.encoder_settings,
|
|
|
|
|
task_queue_factory_.get()));
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSink(&sink_, false /* rotation_applied */);
|
|
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&video_source_, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetStartBitrate(kTargetBitrateBps);
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
2018-04-26 09:51:47 +02:00
|
|
|
kMaxPayloadLength);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
2016-11-25 04:37:00 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ResetEncoder(const std::string& payload_name,
|
|
|
|
|
size_t num_streams,
|
|
|
|
|
size_t num_temporal_layers,
|
2017-08-18 00:28:40 -07:00
|
|
|
unsigned char num_spatial_layers,
|
2017-06-27 07:06:52 -07:00
|
|
|
bool screenshare) {
|
Reland "Reland "Move rtp-specific config out of EncoderSettings.""
This reverts commit 6c2c13af06b32778b86950681758a7970d1c5d9e.
Reason for revert: Intend to investigate and fix perf problems.
Original change's description:
> Revert "Reland "Move rtp-specific config out of EncoderSettings.""
>
> This reverts commit 04dd1768625eb2241d1fb97fd0137897e703e266.
>
> Reason for revert: Regression in ramp up perf tests.
>
> Original change's description:
> > Reland "Move rtp-specific config out of EncoderSettings."
> >
> > This is a reland of bc900cb1d1810fcf678fe41cf1e3966daa39c88c
> >
> > Original change's description:
> > > Move rtp-specific config out of EncoderSettings.
> > >
> > > In VideoSendStream::Config, move payload_name and payload_type from
> > > EncoderSettings to Rtp.
> > >
> > > EncoderSettings now contains configuration for VideoStreamEncoder only,
> > > and should perhaps be renamed in a follow up cl. It's no longer
> > > passed as an argument to VideoCodecInitializer::SetupCodec.
> > >
> > > The latter then needs a different way to know the codec type,
> > > which is provided by a new codec_type member in VideoEncoderConfig.
> > >
> > > Bug: webrtc:8830
> > > Change-Id: Ifcc691aef1ee6a95e43c0452c5e630d92a511cd6
> > > Reviewed-on: https://webrtc-review.googlesource.com/62062
> > > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > > Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> > > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#22532}
> >
> > Bug: webrtc:8830
> > Change-Id: If88ef7d57cdaa4fae3c7b2a97ea5a6e1b833e019
> > Reviewed-on: https://webrtc-review.googlesource.com/63721
> > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#22595}
>
> TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
>
> Bug: webrtc:8830,chromium:827080
> Change-Id: Iaaf146de91ec5c0d741b8efdf143f7e173084fef
> Reviewed-on: https://webrtc-review.googlesource.com/65520
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22677}
TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:8830, chromium:827080
Change-Id: I9b62987bf5daced90dfeb3ebb6739c80117c487f
Reviewed-on: https://webrtc-review.googlesource.com/66862
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22751}
2018-04-05 15:36:51 +02:00
|
|
|
video_send_config_.rtp.payload_name = payload_name;
|
2016-11-25 04:37:00 -08:00
|
|
|
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
Reland "Reland "Move rtp-specific config out of EncoderSettings.""
This reverts commit 6c2c13af06b32778b86950681758a7970d1c5d9e.
Reason for revert: Intend to investigate and fix perf problems.
Original change's description:
> Revert "Reland "Move rtp-specific config out of EncoderSettings.""
>
> This reverts commit 04dd1768625eb2241d1fb97fd0137897e703e266.
>
> Reason for revert: Regression in ramp up perf tests.
>
> Original change's description:
> > Reland "Move rtp-specific config out of EncoderSettings."
> >
> > This is a reland of bc900cb1d1810fcf678fe41cf1e3966daa39c88c
> >
> > Original change's description:
> > > Move rtp-specific config out of EncoderSettings.
> > >
> > > In VideoSendStream::Config, move payload_name and payload_type from
> > > EncoderSettings to Rtp.
> > >
> > > EncoderSettings now contains configuration for VideoStreamEncoder only,
> > > and should perhaps be renamed in a follow up cl. It's no longer
> > > passed as an argument to VideoCodecInitializer::SetupCodec.
> > >
> > > The latter then needs a different way to know the codec type,
> > > which is provided by a new codec_type member in VideoEncoderConfig.
> > >
> > > Bug: webrtc:8830
> > > Change-Id: Ifcc691aef1ee6a95e43c0452c5e630d92a511cd6
> > > Reviewed-on: https://webrtc-review.googlesource.com/62062
> > > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > > Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> > > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#22532}
> >
> > Bug: webrtc:8830
> > Change-Id: If88ef7d57cdaa4fae3c7b2a97ea5a6e1b833e019
> > Reviewed-on: https://webrtc-review.googlesource.com/63721
> > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#22595}
>
> TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
>
> Bug: webrtc:8830,chromium:827080
> Change-Id: Iaaf146de91ec5c0d741b8efdf143f7e173084fef
> Reviewed-on: https://webrtc-review.googlesource.com/65520
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22677}
TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:8830, chromium:827080
Change-Id: I9b62987bf5daced90dfeb3ebb6739c80117c487f
Reviewed-on: https://webrtc-review.googlesource.com/66862
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22751}
2018-04-05 15:36:51 +02:00
|
|
|
video_encoder_config.codec_type = PayloadStringToCodecType(payload_name);
|
2016-11-25 04:37:00 -08:00
|
|
|
video_encoder_config.number_of_streams = num_streams;
|
2019-02-21 21:19:53 +01:00
|
|
|
video_encoder_config.max_bitrate_bps =
|
|
|
|
|
num_streams == 1 ? kTargetBitrateBps : kSimulcastTargetBitrateBps;
|
2016-11-25 04:37:00 -08:00
|
|
|
video_encoder_config.video_stream_factory =
|
2017-06-15 04:21:07 -07:00
|
|
|
new rtc::RefCountedObject<VideoStreamFactory>(num_temporal_layers,
|
|
|
|
|
kDefaultFramerate);
|
2017-06-27 07:06:52 -07:00
|
|
|
video_encoder_config.content_type =
|
|
|
|
|
screenshare ? VideoEncoderConfig::ContentType::kScreen
|
|
|
|
|
: VideoEncoderConfig::ContentType::kRealtimeVideo;
|
2017-08-18 00:28:40 -07:00
|
|
|
if (payload_name == "VP9") {
|
|
|
|
|
VideoCodecVP9 vp9_settings = VideoEncoder::GetDefaultVp9Settings();
|
|
|
|
|
vp9_settings.numberOfSpatialLayers = num_spatial_layers;
|
|
|
|
|
video_encoder_config.encoder_specific_settings =
|
|
|
|
|
new rtc::RefCountedObject<
|
|
|
|
|
VideoEncoderConfig::Vp9EncoderSpecificSettings>(vp9_settings);
|
|
|
|
|
}
|
2018-04-26 09:51:47 +02:00
|
|
|
ConfigureEncoder(std::move(video_encoder_config));
|
2016-09-01 01:17:40 -07:00
|
|
|
}
|
|
|
|
|
|
2017-01-16 06:24:02 -08:00
|
|
|
VideoFrame CreateFrame(int64_t ntp_time_ms,
|
|
|
|
|
rtc::Event* destruction_event) const {
|
2019-01-03 23:49:37 +01:00
|
|
|
VideoFrame frame =
|
|
|
|
|
VideoFrame::Builder()
|
|
|
|
|
.set_video_frame_buffer(new rtc::RefCountedObject<TestBuffer>(
|
|
|
|
|
destruction_event, codec_width_, codec_height_))
|
|
|
|
|
.set_timestamp_rtp(99)
|
|
|
|
|
.set_timestamp_ms(99)
|
|
|
|
|
.set_rotation(kVideoRotation_0)
|
|
|
|
|
.build();
|
2017-01-16 06:24:02 -08:00
|
|
|
frame.set_ntp_time_ms(ntp_time_ms);
|
2016-09-01 01:17:40 -07:00
|
|
|
return frame;
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-18 13:01:26 +01:00
|
|
|
VideoFrame CreateFrameWithUpdatedPixel(int64_t ntp_time_ms,
|
|
|
|
|
rtc::Event* destruction_event,
|
|
|
|
|
int offset_x) const {
|
|
|
|
|
VideoFrame frame =
|
|
|
|
|
VideoFrame::Builder()
|
|
|
|
|
.set_video_frame_buffer(new rtc::RefCountedObject<TestBuffer>(
|
|
|
|
|
destruction_event, codec_width_, codec_height_))
|
|
|
|
|
.set_timestamp_rtp(99)
|
|
|
|
|
.set_timestamp_ms(99)
|
|
|
|
|
.set_rotation(kVideoRotation_0)
|
|
|
|
|
.set_update_rect({offset_x, 0, 1, 1})
|
|
|
|
|
.build();
|
|
|
|
|
frame.set_ntp_time_ms(ntp_time_ms);
|
|
|
|
|
return frame;
|
|
|
|
|
}
|
|
|
|
|
|
2017-01-16 06:24:02 -08:00
|
|
|
VideoFrame CreateFrame(int64_t ntp_time_ms, int width, int height) const {
|
2019-01-03 23:49:37 +01:00
|
|
|
VideoFrame frame =
|
|
|
|
|
VideoFrame::Builder()
|
|
|
|
|
.set_video_frame_buffer(
|
|
|
|
|
new rtc::RefCountedObject<TestBuffer>(nullptr, width, height))
|
|
|
|
|
.set_timestamp_rtp(99)
|
|
|
|
|
.set_timestamp_ms(99)
|
|
|
|
|
.set_rotation(kVideoRotation_0)
|
|
|
|
|
.build();
|
2017-01-16 06:24:02 -08:00
|
|
|
frame.set_ntp_time_ms(ntp_time_ms);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
frame.set_timestamp_us(ntp_time_ms * 1000);
|
2016-11-01 11:45:46 -07:00
|
|
|
return frame;
|
|
|
|
|
}
|
|
|
|
|
|
2019-06-12 06:59:12 -07:00
|
|
|
VideoFrame CreateFakeNativeFrame(int64_t ntp_time_ms,
|
|
|
|
|
rtc::Event* destruction_event,
|
|
|
|
|
int width,
|
|
|
|
|
int height) const {
|
|
|
|
|
VideoFrame frame =
|
|
|
|
|
VideoFrame::Builder()
|
|
|
|
|
.set_video_frame_buffer(new rtc::RefCountedObject<FakeNativeBuffer>(
|
|
|
|
|
destruction_event, width, height))
|
|
|
|
|
.set_timestamp_rtp(99)
|
|
|
|
|
.set_timestamp_ms(99)
|
|
|
|
|
.set_rotation(kVideoRotation_0)
|
|
|
|
|
.build();
|
|
|
|
|
frame.set_ntp_time_ms(ntp_time_ms);
|
|
|
|
|
return frame;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
VideoFrame CreateFakeNativeFrame(int64_t ntp_time_ms,
|
|
|
|
|
rtc::Event* destruction_event) const {
|
|
|
|
|
return CreateFakeNativeFrame(ntp_time_ms, destruction_event, codec_width_,
|
|
|
|
|
codec_height_);
|
|
|
|
|
}
|
|
|
|
|
|
2019-03-25 12:06:59 +01:00
|
|
|
void VerifyAllocatedBitrate(const VideoBitrateAllocation& expected_bitrate) {
|
|
|
|
|
MockBitrateObserver bitrate_observer;
|
|
|
|
|
video_stream_encoder_->SetBitrateAllocationObserver(&bitrate_observer);
|
|
|
|
|
|
|
|
|
|
EXPECT_CALL(bitrate_observer, OnBitrateAllocationUpdated(expected_bitrate))
|
|
|
|
|
.Times(1);
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(DataRate::bps(kTargetBitrateBps),
|
2019-04-08 15:14:01 +02:00
|
|
|
DataRate::bps(kTargetBitrateBps), 0,
|
|
|
|
|
0);
|
2019-03-25 12:06:59 +01:00
|
|
|
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(1, codec_width_, codec_height_));
|
|
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
}
|
|
|
|
|
|
2017-04-10 01:12:52 -07:00
|
|
|
void VerifyNoLimitation(const rtc::VideoSinkWants& wants) {
|
|
|
|
|
EXPECT_EQ(std::numeric_limits<int>::max(), wants.max_framerate_fps);
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_EQ(std::numeric_limits<int>::max(), wants.max_pixel_count);
|
|
|
|
|
EXPECT_FALSE(wants.target_pixel_count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void VerifyFpsEqResolutionEq(const rtc::VideoSinkWants& wants1,
|
|
|
|
|
const rtc::VideoSinkWants& wants2) {
|
|
|
|
|
EXPECT_EQ(wants1.max_framerate_fps, wants2.max_framerate_fps);
|
|
|
|
|
EXPECT_EQ(wants1.max_pixel_count, wants2.max_pixel_count);
|
2017-04-10 01:12:52 -07:00
|
|
|
}
|
|
|
|
|
|
2018-09-13 10:42:19 +02:00
|
|
|
void VerifyFpsMaxResolutionMax(const rtc::VideoSinkWants& wants) {
|
|
|
|
|
EXPECT_EQ(kDefaultFramerate, wants.max_framerate_fps);
|
|
|
|
|
EXPECT_EQ(std::numeric_limits<int>::max(), wants.max_pixel_count);
|
|
|
|
|
EXPECT_FALSE(wants.target_pixel_count);
|
|
|
|
|
}
|
|
|
|
|
|
2017-05-15 23:40:18 -07:00
|
|
|
void VerifyFpsMaxResolutionLt(const rtc::VideoSinkWants& wants1,
|
|
|
|
|
const rtc::VideoSinkWants& wants2) {
|
2018-09-13 10:42:19 +02:00
|
|
|
EXPECT_EQ(kDefaultFramerate, wants1.max_framerate_fps);
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_LT(wants1.max_pixel_count, wants2.max_pixel_count);
|
|
|
|
|
EXPECT_GT(wants1.max_pixel_count, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void VerifyFpsMaxResolutionGt(const rtc::VideoSinkWants& wants1,
|
|
|
|
|
const rtc::VideoSinkWants& wants2) {
|
2018-09-13 10:42:19 +02:00
|
|
|
EXPECT_EQ(kDefaultFramerate, wants1.max_framerate_fps);
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_GT(wants1.max_pixel_count, wants2.max_pixel_count);
|
|
|
|
|
}
|
|
|
|
|
|
2017-06-13 23:25:22 -07:00
|
|
|
void VerifyFpsMaxResolutionEq(const rtc::VideoSinkWants& wants1,
|
|
|
|
|
const rtc::VideoSinkWants& wants2) {
|
2018-09-13 10:42:19 +02:00
|
|
|
EXPECT_EQ(kDefaultFramerate, wants1.max_framerate_fps);
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_EQ(wants1.max_pixel_count, wants2.max_pixel_count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void VerifyFpsLtResolutionEq(const rtc::VideoSinkWants& wants1,
|
|
|
|
|
const rtc::VideoSinkWants& wants2) {
|
|
|
|
|
EXPECT_LT(wants1.max_framerate_fps, wants2.max_framerate_fps);
|
|
|
|
|
EXPECT_EQ(wants1.max_pixel_count, wants2.max_pixel_count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void VerifyFpsGtResolutionEq(const rtc::VideoSinkWants& wants1,
|
|
|
|
|
const rtc::VideoSinkWants& wants2) {
|
|
|
|
|
EXPECT_GT(wants1.max_framerate_fps, wants2.max_framerate_fps);
|
|
|
|
|
EXPECT_EQ(wants1.max_pixel_count, wants2.max_pixel_count);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void VerifyFpsEqResolutionLt(const rtc::VideoSinkWants& wants1,
|
|
|
|
|
const rtc::VideoSinkWants& wants2) {
|
|
|
|
|
EXPECT_EQ(wants1.max_framerate_fps, wants2.max_framerate_fps);
|
|
|
|
|
EXPECT_LT(wants1.max_pixel_count, wants2.max_pixel_count);
|
|
|
|
|
EXPECT_GT(wants1.max_pixel_count, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void VerifyFpsEqResolutionGt(const rtc::VideoSinkWants& wants1,
|
|
|
|
|
const rtc::VideoSinkWants& wants2) {
|
|
|
|
|
EXPECT_EQ(wants1.max_framerate_fps, wants2.max_framerate_fps);
|
|
|
|
|
EXPECT_GT(wants1.max_pixel_count, wants2.max_pixel_count);
|
|
|
|
|
}
|
|
|
|
|
|
2017-05-15 23:40:18 -07:00
|
|
|
void VerifyFpsMaxResolutionLt(const rtc::VideoSinkWants& wants,
|
|
|
|
|
int pixel_count) {
|
2018-09-13 10:42:19 +02:00
|
|
|
EXPECT_EQ(kDefaultFramerate, wants.max_framerate_fps);
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_LT(wants.max_pixel_count, pixel_count);
|
|
|
|
|
EXPECT_GT(wants.max_pixel_count, 0);
|
2017-05-15 23:40:18 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void VerifyFpsLtResolutionMax(const rtc::VideoSinkWants& wants, int fps) {
|
|
|
|
|
EXPECT_LT(wants.max_framerate_fps, fps);
|
|
|
|
|
EXPECT_EQ(std::numeric_limits<int>::max(), wants.max_pixel_count);
|
|
|
|
|
EXPECT_FALSE(wants.target_pixel_count);
|
2017-04-10 01:12:52 -07:00
|
|
|
}
|
|
|
|
|
|
2017-06-13 23:25:22 -07:00
|
|
|
void VerifyFpsEqResolutionMax(const rtc::VideoSinkWants& wants,
|
|
|
|
|
int expected_fps) {
|
|
|
|
|
EXPECT_EQ(expected_fps, wants.max_framerate_fps);
|
|
|
|
|
EXPECT_EQ(std::numeric_limits<int>::max(), wants.max_pixel_count);
|
|
|
|
|
EXPECT_FALSE(wants.target_pixel_count);
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-08 17:04:29 -08:00
|
|
|
void VerifyBalancedModeFpsRange(const rtc::VideoSinkWants& wants,
|
|
|
|
|
int last_frame_pixels) {
|
|
|
|
|
// Balanced mode should always scale FPS to the desired range before
|
|
|
|
|
// attempting to scale resolution.
|
|
|
|
|
int fps_limit = wants.max_framerate_fps;
|
|
|
|
|
if (last_frame_pixels <= 320 * 240) {
|
|
|
|
|
EXPECT_TRUE(7 <= fps_limit && fps_limit <= 10);
|
|
|
|
|
} else if (last_frame_pixels <= 480 * 270) {
|
|
|
|
|
EXPECT_TRUE(10 <= fps_limit && fps_limit <= 15);
|
|
|
|
|
} else if (last_frame_pixels <= 640 * 480) {
|
|
|
|
|
EXPECT_LE(15, fps_limit);
|
|
|
|
|
} else {
|
2018-09-13 10:42:19 +02:00
|
|
|
EXPECT_EQ(kDefaultFramerate, fps_limit);
|
2017-12-08 17:04:29 -08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-06-27 07:06:52 -07:00
|
|
|
void WaitForEncodedFrame(int64_t expected_ntp_time) {
|
|
|
|
|
sink_.WaitForEncodedFrame(expected_ntp_time);
|
2019-04-17 12:11:20 +02:00
|
|
|
fake_clock_.AdvanceTime(TimeDelta::seconds(1) / max_framerate_);
|
2017-06-27 07:06:52 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TimedWaitForEncodedFrame(int64_t expected_ntp_time, int64_t timeout_ms) {
|
|
|
|
|
bool ok = sink_.TimedWaitForEncodedFrame(expected_ntp_time, timeout_ms);
|
2019-04-17 12:11:20 +02:00
|
|
|
fake_clock_.AdvanceTime(TimeDelta::seconds(1) / max_framerate_);
|
2017-06-27 07:06:52 -07:00
|
|
|
return ok;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void WaitForEncodedFrame(uint32_t expected_width, uint32_t expected_height) {
|
|
|
|
|
sink_.WaitForEncodedFrame(expected_width, expected_height);
|
2019-04-17 12:11:20 +02:00
|
|
|
fake_clock_.AdvanceTime(TimeDelta::seconds(1) / max_framerate_);
|
2017-06-27 07:06:52 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ExpectDroppedFrame() {
|
|
|
|
|
sink_.ExpectDroppedFrame();
|
2019-04-17 12:11:20 +02:00
|
|
|
fake_clock_.AdvanceTime(TimeDelta::seconds(1) / max_framerate_);
|
2017-06-27 07:06:52 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool WaitForFrame(int64_t timeout_ms) {
|
|
|
|
|
bool ok = sink_.WaitForFrame(timeout_ms);
|
2019-04-17 12:11:20 +02:00
|
|
|
fake_clock_.AdvanceTime(TimeDelta::seconds(1) / max_framerate_);
|
2017-06-27 07:06:52 -07:00
|
|
|
return ok;
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-01 01:17:40 -07:00
|
|
|
class TestEncoder : public test::FakeEncoder {
|
|
|
|
|
public:
|
2018-11-07 08:43:50 +01:00
|
|
|
TestEncoder() : FakeEncoder(Clock::GetRealTimeClock()) {}
|
2016-09-01 01:17:40 -07:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
VideoCodec codec_config() const {
|
2017-01-16 05:57:16 -08:00
|
|
|
rtc::CritScope lock(&crit_sect_);
|
2016-10-02 23:45:26 -07:00
|
|
|
return config_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void BlockNextEncode() {
|
2017-01-16 05:57:16 -08:00
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
2016-10-02 23:45:26 -07:00
|
|
|
block_next_encode_ = true;
|
|
|
|
|
}
|
|
|
|
|
|
2018-11-05 12:57:17 +01:00
|
|
|
VideoEncoder::EncoderInfo GetEncoderInfo() const override {
|
2017-03-03 00:24:41 -08:00
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
2019-01-15 12:42:18 +01:00
|
|
|
EncoderInfo info;
|
2019-02-26 15:52:33 +01:00
|
|
|
if (initialized_ == EncoderState::kInitialized) {
|
2019-01-15 12:42:18 +01:00
|
|
|
if (quality_scaling_) {
|
|
|
|
|
info.scaling_settings =
|
|
|
|
|
VideoEncoder::ScalingSettings(1, 2, kMinPixelsPerFrame);
|
|
|
|
|
}
|
|
|
|
|
info.is_hardware_accelerated = is_hardware_accelerated_;
|
2019-03-25 12:06:59 +01:00
|
|
|
for (int i = 0; i < kMaxSpatialLayers; ++i) {
|
|
|
|
|
if (temporal_layers_supported_[i]) {
|
|
|
|
|
int num_layers = temporal_layers_supported_[i].value() ? 2 : 1;
|
|
|
|
|
info.fps_allocation[i].resize(num_layers);
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-11-05 12:57:17 +01:00
|
|
|
}
|
2019-07-08 17:56:40 +02:00
|
|
|
|
|
|
|
|
info.resolution_bitrate_limits = resolution_bitrate_limits_;
|
2018-11-05 12:57:17 +01:00
|
|
|
return info;
|
2016-11-29 01:44:11 -08:00
|
|
|
}
|
|
|
|
|
|
2019-02-26 15:52:33 +01:00
|
|
|
int32_t RegisterEncodeCompleteCallback(
|
|
|
|
|
EncodedImageCallback* callback) override {
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
encoded_image_callback_ = callback;
|
|
|
|
|
return FakeEncoder::RegisterEncodeCompleteCallback(callback);
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-02 23:45:26 -07:00
|
|
|
void ContinueEncode() { continue_encode_event_.Set(); }
|
|
|
|
|
|
|
|
|
|
void CheckLastTimeStampsMatch(int64_t ntp_time_ms,
|
|
|
|
|
uint32_t timestamp) const {
|
2017-01-16 05:57:16 -08:00
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
2016-10-02 23:45:26 -07:00
|
|
|
EXPECT_EQ(timestamp_, timestamp);
|
|
|
|
|
EXPECT_EQ(ntp_time_ms_, ntp_time_ms);
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-03 00:24:41 -08:00
|
|
|
void SetQualityScaling(bool b) {
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
quality_scaling_ = b;
|
|
|
|
|
}
|
2017-02-14 00:46:51 -08:00
|
|
|
|
2019-01-15 12:42:18 +01:00
|
|
|
void SetIsHardwareAccelerated(bool is_hardware_accelerated) {
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
is_hardware_accelerated_ = is_hardware_accelerated;
|
|
|
|
|
}
|
|
|
|
|
|
2019-03-25 12:06:59 +01:00
|
|
|
void SetTemporalLayersSupported(size_t spatial_idx, bool supported) {
|
|
|
|
|
RTC_DCHECK_LT(spatial_idx, kMaxSpatialLayers);
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
temporal_layers_supported_[spatial_idx] = supported;
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-08 17:56:40 +02:00
|
|
|
void SetResolutionBitrateLimits(
|
|
|
|
|
std::vector<ResolutionBitrateLimits> thresholds) {
|
|
|
|
|
rtc::CritScope cs(&local_crit_sect_);
|
|
|
|
|
resolution_bitrate_limits_ = thresholds;
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-29 08:24:59 -07:00
|
|
|
void ForceInitEncodeFailure(bool force_failure) {
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
force_init_encode_failed_ = force_failure;
|
|
|
|
|
}
|
|
|
|
|
|
2019-01-11 11:11:10 +01:00
|
|
|
void SimulateOvershoot(double rate_factor) {
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
rate_factor_ = rate_factor;
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-21 21:19:53 +01:00
|
|
|
uint32_t GetLastFramerate() const {
|
2019-01-11 11:11:10 +01:00
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
return last_framerate_;
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-21 21:19:53 +01:00
|
|
|
VideoFrame::UpdateRect GetLastUpdateRect() const {
|
2019-02-18 13:01:26 +01:00
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
return last_update_rect_;
|
|
|
|
|
}
|
|
|
|
|
|
2019-03-07 10:18:23 +01:00
|
|
|
const std::vector<VideoFrameType>& LastFrameTypes() const {
|
2019-02-21 21:19:53 +01:00
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
return last_frame_types_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void InjectFrame(const VideoFrame& input_image, bool keyframe) {
|
2019-03-07 10:18:23 +01:00
|
|
|
const std::vector<VideoFrameType> frame_type = {
|
2019-03-21 15:43:58 +01:00
|
|
|
keyframe ? VideoFrameType::kVideoFrameKey
|
|
|
|
|
: VideoFrameType::kVideoFrameDelta};
|
2019-02-21 21:19:53 +01:00
|
|
|
{
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
last_frame_types_ = frame_type;
|
|
|
|
|
}
|
2019-03-07 12:40:01 +01:00
|
|
|
FakeEncoder::Encode(input_image, &frame_type);
|
2019-02-21 21:19:53 +01:00
|
|
|
}
|
|
|
|
|
|
2019-02-26 15:52:33 +01:00
|
|
|
void InjectEncodedImage(const EncodedImage& image) {
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
encoded_image_callback_->OnEncodedImage(image, nullptr, nullptr);
|
|
|
|
|
}
|
|
|
|
|
|
2019-05-28 16:30:16 +02:00
|
|
|
void InjectEncodedImage(const EncodedImage& image,
|
|
|
|
|
const CodecSpecificInfo* codec_specific_info,
|
|
|
|
|
const RTPFragmentationHeader* fragmentation) {
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
encoded_image_callback_->OnEncodedImage(image, codec_specific_info,
|
|
|
|
|
fragmentation);
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-21 21:19:53 +01:00
|
|
|
void ExpectNullFrame() {
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
expect_null_frame_ = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
absl::optional<VideoBitrateAllocation> GetAndResetLastBitrateAllocation() {
|
|
|
|
|
auto allocation = last_bitrate_allocation_;
|
|
|
|
|
last_bitrate_allocation_.reset();
|
|
|
|
|
return allocation;
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-02 14:18:34 +02:00
|
|
|
int GetNumEncoderInitializations() const {
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
return num_encoder_initializations_;
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-02 23:45:26 -07:00
|
|
|
private:
|
2016-09-01 01:17:40 -07:00
|
|
|
int32_t Encode(const VideoFrame& input_image,
|
2019-03-07 10:18:23 +01:00
|
|
|
const std::vector<VideoFrameType>* frame_types) override {
|
2016-09-01 01:17:40 -07:00
|
|
|
bool block_encode;
|
|
|
|
|
{
|
2017-01-16 05:57:16 -08:00
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
2019-02-21 21:19:53 +01:00
|
|
|
if (expect_null_frame_) {
|
|
|
|
|
EXPECT_EQ(input_image.timestamp(), 0u);
|
|
|
|
|
EXPECT_EQ(input_image.width(), 1);
|
|
|
|
|
last_frame_types_ = *frame_types;
|
|
|
|
|
expect_null_frame_ = false;
|
|
|
|
|
} else {
|
|
|
|
|
EXPECT_GT(input_image.timestamp(), timestamp_);
|
|
|
|
|
EXPECT_GT(input_image.ntp_time_ms(), ntp_time_ms_);
|
|
|
|
|
EXPECT_EQ(input_image.timestamp(), input_image.ntp_time_ms() * 90);
|
|
|
|
|
}
|
2016-09-01 01:17:40 -07:00
|
|
|
|
|
|
|
|
timestamp_ = input_image.timestamp();
|
|
|
|
|
ntp_time_ms_ = input_image.ntp_time_ms();
|
2016-11-01 11:45:46 -07:00
|
|
|
last_input_width_ = input_image.width();
|
|
|
|
|
last_input_height_ = input_image.height();
|
2016-09-01 01:17:40 -07:00
|
|
|
block_encode = block_next_encode_;
|
|
|
|
|
block_next_encode_ = false;
|
2019-02-18 13:01:26 +01:00
|
|
|
last_update_rect_ = input_image.update_rect();
|
2019-02-21 21:19:53 +01:00
|
|
|
last_frame_types_ = *frame_types;
|
2016-09-01 01:17:40 -07:00
|
|
|
}
|
2019-03-07 12:40:01 +01:00
|
|
|
int32_t result = FakeEncoder::Encode(input_image, frame_types);
|
2016-09-01 01:17:40 -07:00
|
|
|
if (block_encode)
|
2016-09-16 07:53:41 -07:00
|
|
|
EXPECT_TRUE(continue_encode_event_.Wait(kDefaultTimeoutMs));
|
2016-09-01 01:17:40 -07:00
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-29 08:24:59 -07:00
|
|
|
int32_t InitEncode(const VideoCodec* config,
|
2019-06-11 14:57:57 +02:00
|
|
|
const Settings& settings) override {
|
|
|
|
|
int res = FakeEncoder::InitEncode(config, settings);
|
2019-07-02 14:18:34 +02:00
|
|
|
|
2017-03-29 08:24:59 -07:00
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
2019-02-26 15:52:33 +01:00
|
|
|
EXPECT_EQ(initialized_, EncoderState::kUninitialized);
|
2019-07-02 14:18:34 +02:00
|
|
|
|
|
|
|
|
++num_encoder_initializations_;
|
|
|
|
|
|
2018-03-21 09:57:23 +01:00
|
|
|
if (config->codecType == kVideoCodecVP8) {
|
2017-03-29 08:24:59 -07:00
|
|
|
// Simulate setting up temporal layers, in order to validate the life
|
|
|
|
|
// cycle of these objects.
|
2019-03-20 11:56:20 +01:00
|
|
|
Vp8TemporalLayersFactory factory;
|
2019-07-02 11:20:09 +02:00
|
|
|
frame_buffer_controller_ =
|
|
|
|
|
factory.Create(*config, settings, &fec_controller_override_);
|
2017-03-29 08:24:59 -07:00
|
|
|
}
|
2019-02-26 15:52:33 +01:00
|
|
|
if (force_init_encode_failed_) {
|
|
|
|
|
initialized_ = EncoderState::kInitializationFailed;
|
2017-03-29 08:24:59 -07:00
|
|
|
return -1;
|
2019-02-26 15:52:33 +01:00
|
|
|
}
|
2019-01-15 12:42:18 +01:00
|
|
|
|
2019-02-26 15:52:33 +01:00
|
|
|
initialized_ = EncoderState::kInitialized;
|
2017-03-29 08:24:59 -07:00
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-26 15:52:33 +01:00
|
|
|
int32_t Release() override {
|
|
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
EXPECT_NE(initialized_, EncoderState::kUninitialized);
|
|
|
|
|
initialized_ = EncoderState::kUninitialized;
|
|
|
|
|
return FakeEncoder::Release();
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-12 13:59:09 +02:00
|
|
|
void SetRates(const RateControlParameters& parameters) {
|
2019-01-11 11:11:10 +01:00
|
|
|
rtc::CritScope lock(&local_crit_sect_);
|
|
|
|
|
VideoBitrateAllocation adjusted_rate_allocation;
|
|
|
|
|
for (size_t si = 0; si < kMaxSpatialLayers; ++si) {
|
|
|
|
|
for (size_t ti = 0; ti < kMaxTemporalStreams; ++ti) {
|
2019-04-12 13:59:09 +02:00
|
|
|
if (parameters.bitrate.HasBitrate(si, ti)) {
|
2019-01-11 11:11:10 +01:00
|
|
|
adjusted_rate_allocation.SetBitrate(
|
|
|
|
|
si, ti,
|
2019-04-12 13:59:09 +02:00
|
|
|
static_cast<uint32_t>(parameters.bitrate.GetBitrate(si, ti) *
|
2019-01-11 11:11:10 +01:00
|
|
|
rate_factor_));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2019-04-12 13:59:09 +02:00
|
|
|
last_framerate_ = static_cast<uint32_t>(parameters.framerate_fps + 0.5);
|
|
|
|
|
last_bitrate_allocation_ = parameters.bitrate;
|
|
|
|
|
RateControlParameters adjusted_paramters = parameters;
|
|
|
|
|
adjusted_paramters.bitrate = adjusted_rate_allocation;
|
|
|
|
|
FakeEncoder::SetRates(adjusted_paramters);
|
2019-01-11 11:11:10 +01:00
|
|
|
}
|
|
|
|
|
|
2017-01-16 05:57:16 -08:00
|
|
|
rtc::CriticalSection local_crit_sect_;
|
2019-02-26 15:52:33 +01:00
|
|
|
enum class EncoderState {
|
|
|
|
|
kUninitialized,
|
|
|
|
|
kInitializationFailed,
|
|
|
|
|
kInitialized
|
|
|
|
|
} initialized_ RTC_GUARDED_BY(local_crit_sect_) =
|
|
|
|
|
EncoderState::kUninitialized;
|
2017-09-09 04:17:22 -07:00
|
|
|
bool block_next_encode_ RTC_GUARDED_BY(local_crit_sect_) = false;
|
2016-09-01 01:17:40 -07:00
|
|
|
rtc::Event continue_encode_event_;
|
2017-09-09 04:17:22 -07:00
|
|
|
uint32_t timestamp_ RTC_GUARDED_BY(local_crit_sect_) = 0;
|
|
|
|
|
int64_t ntp_time_ms_ RTC_GUARDED_BY(local_crit_sect_) = 0;
|
|
|
|
|
int last_input_width_ RTC_GUARDED_BY(local_crit_sect_) = 0;
|
|
|
|
|
int last_input_height_ RTC_GUARDED_BY(local_crit_sect_) = 0;
|
|
|
|
|
bool quality_scaling_ RTC_GUARDED_BY(local_crit_sect_) = true;
|
2019-01-15 12:42:18 +01:00
|
|
|
bool is_hardware_accelerated_ RTC_GUARDED_BY(local_crit_sect_) = false;
|
2019-03-20 11:56:20 +01:00
|
|
|
std::unique_ptr<Vp8FrameBufferController> frame_buffer_controller_
|
2017-09-09 04:17:22 -07:00
|
|
|
RTC_GUARDED_BY(local_crit_sect_);
|
2019-03-25 12:06:59 +01:00
|
|
|
absl::optional<bool>
|
|
|
|
|
temporal_layers_supported_[kMaxSpatialLayers] RTC_GUARDED_BY(
|
|
|
|
|
local_crit_sect_);
|
2017-09-09 04:17:22 -07:00
|
|
|
bool force_init_encode_failed_ RTC_GUARDED_BY(local_crit_sect_) = false;
|
2019-01-11 11:11:10 +01:00
|
|
|
double rate_factor_ RTC_GUARDED_BY(local_crit_sect_) = 1.0;
|
|
|
|
|
uint32_t last_framerate_ RTC_GUARDED_BY(local_crit_sect_) = 0;
|
2019-02-21 21:19:53 +01:00
|
|
|
absl::optional<VideoBitrateAllocation> last_bitrate_allocation_;
|
2019-02-18 13:01:26 +01:00
|
|
|
VideoFrame::UpdateRect last_update_rect_
|
|
|
|
|
RTC_GUARDED_BY(local_crit_sect_) = {0, 0, 0, 0};
|
2019-03-07 10:18:23 +01:00
|
|
|
std::vector<VideoFrameType> last_frame_types_;
|
2019-02-21 21:19:53 +01:00
|
|
|
bool expect_null_frame_ = false;
|
2019-02-26 15:52:33 +01:00
|
|
|
EncodedImageCallback* encoded_image_callback_
|
|
|
|
|
RTC_GUARDED_BY(local_crit_sect_) = nullptr;
|
2019-07-02 11:20:09 +02:00
|
|
|
MockFecControllerOverride fec_controller_override_;
|
2019-07-02 14:18:34 +02:00
|
|
|
int num_encoder_initializations_ RTC_GUARDED_BY(local_crit_sect_) = 0;
|
2019-07-08 17:56:40 +02:00
|
|
|
std::vector<ResolutionBitrateLimits> resolution_bitrate_limits_
|
|
|
|
|
RTC_GUARDED_BY(local_crit_sect_);
|
2016-09-01 01:17:40 -07:00
|
|
|
};
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
class TestSink : public VideoStreamEncoder::EncoderSink {
|
2016-09-01 01:17:40 -07:00
|
|
|
public:
|
|
|
|
|
explicit TestSink(TestEncoder* test_encoder)
|
2018-11-07 08:43:50 +01:00
|
|
|
: test_encoder_(test_encoder) {}
|
2016-09-01 01:17:40 -07:00
|
|
|
|
|
|
|
|
void WaitForEncodedFrame(int64_t expected_ntp_time) {
|
2017-06-27 07:06:52 -07:00
|
|
|
EXPECT_TRUE(
|
|
|
|
|
TimedWaitForEncodedFrame(expected_ntp_time, kDefaultTimeoutMs));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool TimedWaitForEncodedFrame(int64_t expected_ntp_time,
|
|
|
|
|
int64_t timeout_ms) {
|
2016-09-01 01:17:40 -07:00
|
|
|
uint32_t timestamp = 0;
|
2017-06-27 07:06:52 -07:00
|
|
|
if (!encoded_frame_event_.Wait(timeout_ms))
|
|
|
|
|
return false;
|
2016-09-01 01:17:40 -07:00
|
|
|
{
|
|
|
|
|
rtc::CritScope lock(&crit_);
|
2017-02-01 08:38:12 -08:00
|
|
|
timestamp = last_timestamp_;
|
2016-09-01 01:17:40 -07:00
|
|
|
}
|
|
|
|
|
test_encoder_->CheckLastTimeStampsMatch(expected_ntp_time, timestamp);
|
2017-06-27 07:06:52 -07:00
|
|
|
return true;
|
2016-09-01 01:17:40 -07:00
|
|
|
}
|
|
|
|
|
|
2017-02-01 08:38:12 -08:00
|
|
|
void WaitForEncodedFrame(uint32_t expected_width,
|
|
|
|
|
uint32_t expected_height) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_TRUE(encoded_frame_event_.Wait(kDefaultTimeoutMs));
|
2017-12-04 14:13:56 +01:00
|
|
|
CheckLastFrameSizeMatches(expected_width, expected_height);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
}
|
|
|
|
|
|
2017-12-04 14:13:56 +01:00
|
|
|
void CheckLastFrameSizeMatches(uint32_t expected_width,
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
uint32_t expected_height) {
|
2017-02-01 08:38:12 -08:00
|
|
|
uint32_t width = 0;
|
|
|
|
|
uint32_t height = 0;
|
|
|
|
|
{
|
|
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
width = last_width_;
|
|
|
|
|
height = last_height_;
|
|
|
|
|
}
|
|
|
|
|
EXPECT_EQ(expected_height, height);
|
|
|
|
|
EXPECT_EQ(expected_width, width);
|
|
|
|
|
}
|
|
|
|
|
|
2019-06-04 15:15:14 +02:00
|
|
|
void CheckLastFrameRotationMatches(VideoRotation expected_rotation) {
|
|
|
|
|
VideoRotation rotation;
|
|
|
|
|
{
|
|
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
rotation = last_rotation_;
|
|
|
|
|
}
|
|
|
|
|
EXPECT_EQ(expected_rotation, rotation);
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-03 00:24:41 -08:00
|
|
|
void ExpectDroppedFrame() { EXPECT_FALSE(encoded_frame_event_.Wait(100)); }
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
bool WaitForFrame(int64_t timeout_ms) {
|
|
|
|
|
return encoded_frame_event_.Wait(timeout_ms);
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-01 01:17:40 -07:00
|
|
|
void SetExpectNoFrames() {
|
|
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
expect_frames_ = false;
|
|
|
|
|
}
|
|
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
int number_of_reconfigurations() const {
|
2016-09-23 15:52:06 +02:00
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
return number_of_reconfigurations_;
|
|
|
|
|
}
|
|
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
int last_min_transmit_bitrate() const {
|
2016-09-23 15:52:06 +02:00
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
return min_transmit_bitrate_bps_;
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-21 21:19:53 +01:00
|
|
|
void SetNumExpectedLayers(size_t num_layers) {
|
|
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
num_expected_layers_ = num_layers;
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-26 15:52:33 +01:00
|
|
|
int64_t GetLastCaptureTimeMs() const {
|
|
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
return last_capture_time_ms_;
|
|
|
|
|
}
|
|
|
|
|
|
2019-05-28 16:30:16 +02:00
|
|
|
std::vector<uint8_t> GetLastEncodedImageData() {
|
|
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
return std::move(last_encoded_image_data_);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RTPFragmentationHeader GetLastFragmentation() {
|
|
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
return std::move(last_fragmentation_);
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-01 01:17:40 -07:00
|
|
|
private:
|
2016-11-04 11:39:29 -07:00
|
|
|
Result OnEncodedImage(
|
|
|
|
|
const EncodedImage& encoded_image,
|
|
|
|
|
const CodecSpecificInfo* codec_specific_info,
|
|
|
|
|
const RTPFragmentationHeader* fragmentation) override {
|
2016-09-23 15:52:06 +02:00
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
EXPECT_TRUE(expect_frames_);
|
2019-05-28 16:30:16 +02:00
|
|
|
last_encoded_image_data_ = std::vector<uint8_t>(
|
|
|
|
|
encoded_image.data(), encoded_image.data() + encoded_image.size());
|
|
|
|
|
if (fragmentation) {
|
|
|
|
|
last_fragmentation_.CopyFrom(*fragmentation);
|
|
|
|
|
}
|
2019-02-21 21:19:53 +01:00
|
|
|
uint32_t timestamp = encoded_image.Timestamp();
|
|
|
|
|
if (last_timestamp_ != timestamp) {
|
|
|
|
|
num_received_layers_ = 1;
|
|
|
|
|
} else {
|
|
|
|
|
++num_received_layers_;
|
|
|
|
|
}
|
|
|
|
|
last_timestamp_ = timestamp;
|
2019-02-26 15:52:33 +01:00
|
|
|
last_capture_time_ms_ = encoded_image.capture_time_ms_;
|
2017-02-01 08:38:12 -08:00
|
|
|
last_width_ = encoded_image._encodedWidth;
|
|
|
|
|
last_height_ = encoded_image._encodedHeight;
|
2019-06-04 15:15:14 +02:00
|
|
|
last_rotation_ = encoded_image.rotation_;
|
2019-02-21 21:19:53 +01:00
|
|
|
if (num_received_layers_ == num_expected_layers_) {
|
|
|
|
|
encoded_frame_event_.Set();
|
|
|
|
|
}
|
2017-02-01 08:38:12 -08:00
|
|
|
return Result(Result::OK, last_timestamp_);
|
2016-09-23 15:52:06 +02:00
|
|
|
}
|
|
|
|
|
|
2019-02-04 11:09:46 +01:00
|
|
|
void OnEncoderConfigurationChanged(
|
|
|
|
|
std::vector<VideoStream> streams,
|
|
|
|
|
VideoEncoderConfig::ContentType content_type,
|
|
|
|
|
int min_transmit_bitrate_bps) override {
|
2019-07-02 14:18:34 +02:00
|
|
|
rtc::CritScope lock(&crit_);
|
2016-09-23 15:52:06 +02:00
|
|
|
++number_of_reconfigurations_;
|
|
|
|
|
min_transmit_bitrate_bps_ = min_transmit_bitrate_bps;
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-01 01:17:40 -07:00
|
|
|
rtc::CriticalSection crit_;
|
|
|
|
|
TestEncoder* test_encoder_;
|
|
|
|
|
rtc::Event encoded_frame_event_;
|
2019-05-28 16:30:16 +02:00
|
|
|
std::vector<uint8_t> last_encoded_image_data_;
|
|
|
|
|
RTPFragmentationHeader last_fragmentation_;
|
2017-02-01 08:38:12 -08:00
|
|
|
uint32_t last_timestamp_ = 0;
|
2019-02-26 15:52:33 +01:00
|
|
|
int64_t last_capture_time_ms_ = 0;
|
2017-02-01 08:38:12 -08:00
|
|
|
uint32_t last_height_ = 0;
|
|
|
|
|
uint32_t last_width_ = 0;
|
2019-06-04 15:15:14 +02:00
|
|
|
VideoRotation last_rotation_ = kVideoRotation_0;
|
2019-02-21 21:19:53 +01:00
|
|
|
size_t num_expected_layers_ = 1;
|
|
|
|
|
size_t num_received_layers_ = 0;
|
2016-09-01 01:17:40 -07:00
|
|
|
bool expect_frames_ = true;
|
2016-09-23 15:52:06 +02:00
|
|
|
int number_of_reconfigurations_ = 0;
|
|
|
|
|
int min_transmit_bitrate_bps_ = 0;
|
2016-09-01 01:17:40 -07:00
|
|
|
};
|
|
|
|
|
|
2019-07-02 14:18:34 +02:00
|
|
|
class VideoBitrateAllocatorProxyFactory
|
|
|
|
|
: public VideoBitrateAllocatorFactory {
|
|
|
|
|
public:
|
|
|
|
|
VideoBitrateAllocatorProxyFactory()
|
|
|
|
|
: bitrate_allocator_factory_(
|
|
|
|
|
CreateBuiltinVideoBitrateAllocatorFactory()) {}
|
|
|
|
|
|
|
|
|
|
std::unique_ptr<VideoBitrateAllocator> CreateVideoBitrateAllocator(
|
|
|
|
|
const VideoCodec& codec) override {
|
|
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
codec_config_ = codec;
|
|
|
|
|
return bitrate_allocator_factory_->CreateVideoBitrateAllocator(codec);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
VideoCodec codec_config() const {
|
|
|
|
|
rtc::CritScope lock(&crit_);
|
|
|
|
|
return codec_config_;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
std::unique_ptr<VideoBitrateAllocatorFactory> bitrate_allocator_factory_;
|
|
|
|
|
|
|
|
|
|
rtc::CriticalSection crit_;
|
|
|
|
|
VideoCodec codec_config_ RTC_GUARDED_BY(crit_);
|
|
|
|
|
};
|
|
|
|
|
|
2016-09-01 01:17:40 -07:00
|
|
|
VideoSendStream::Config video_send_config_;
|
2016-11-16 16:41:30 +01:00
|
|
|
VideoEncoderConfig video_encoder_config_;
|
2016-09-23 15:52:06 +02:00
|
|
|
int codec_width_;
|
|
|
|
|
int codec_height_;
|
2017-06-27 07:06:52 -07:00
|
|
|
int max_framerate_;
|
2019-04-10 17:01:23 +02:00
|
|
|
const std::unique_ptr<TaskQueueFactory> task_queue_factory_;
|
2016-09-01 01:17:40 -07:00
|
|
|
TestEncoder fake_encoder_;
|
2018-09-28 09:07:24 +02:00
|
|
|
test::VideoEncoderProxyFactory encoder_factory_;
|
2019-07-02 14:18:34 +02:00
|
|
|
VideoBitrateAllocatorProxyFactory bitrate_allocator_factory_;
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
std::unique_ptr<MockableSendStatisticsProxy> stats_proxy_;
|
2016-09-01 01:17:40 -07:00
|
|
|
TestSink sink_;
|
2017-02-01 08:38:12 -08:00
|
|
|
AdaptingFrameForwarder video_source_;
|
2017-08-03 08:27:51 -07:00
|
|
|
std::unique_ptr<VideoStreamEncoderUnderTest> video_stream_encoder_;
|
2017-06-27 07:06:52 -07:00
|
|
|
rtc::ScopedFakeClock fake_clock_;
|
2016-09-01 01:17:40 -07:00
|
|
|
};
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, EncodeOneFrame) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2018-11-07 08:43:50 +01:00
|
|
|
rtc::Event frame_destroyed_event;
|
2016-09-16 07:53:41 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, &frame_destroyed_event));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2016-09-16 07:53:41 -07:00
|
|
|
EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-09-01 01:17:40 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, DropsFramesBeforeFirstOnBitrateUpdated) {
|
2016-09-01 01:17:40 -07:00
|
|
|
// Dropped since no target bitrate has been set.
|
2018-11-07 08:43:50 +01:00
|
|
|
rtc::Event frame_destroyed_event;
|
2018-04-10 13:05:49 +02:00
|
|
|
// The encoder will cache up to one frame for a short duration. Adding two
|
|
|
|
|
// frames means that the first frame will be dropped and the second frame will
|
|
|
|
|
// be sent when the encoder is enabled.
|
2016-09-16 07:53:41 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, &frame_destroyed_event));
|
2018-04-10 13:05:49 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
2016-09-16 07:53:41 -07:00
|
|
|
EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
|
2016-09-01 01:17:40 -07:00
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-09-01 01:17:40 -07:00
|
|
|
|
2018-04-10 13:05:49 +02:00
|
|
|
// The pending frame should be received.
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(2);
|
2018-04-10 13:05:49 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(3, nullptr));
|
|
|
|
|
|
|
|
|
|
WaitForEncodedFrame(3);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-09-01 01:17:40 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, DropsFramesWhenRateSetToZero) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-09-16 07:53:41 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2016-09-01 01:17:40 -07:00
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(DataRate::bps(0), DataRate::bps(0), 0,
|
2019-03-06 15:37:33 +01:00
|
|
|
0);
|
2018-04-10 13:05:49 +02:00
|
|
|
// The encoder will cache up to one frame for a short duration. Adding two
|
|
|
|
|
// frames means that the first frame will be dropped and the second frame will
|
|
|
|
|
// be sent when the encoder is resumed.
|
2016-09-16 07:53:41 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
2018-04-10 13:05:49 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(3, nullptr));
|
2016-09-01 01:17:40 -07:00
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(3);
|
2018-04-10 13:05:49 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(4, nullptr));
|
|
|
|
|
WaitForEncodedFrame(4);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-09-01 01:17:40 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, DropsFramesWithSameOrOldNtpTimestamp) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-09-16 07:53:41 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2016-09-01 01:17:40 -07:00
|
|
|
|
|
|
|
|
// This frame will be dropped since it has the same ntp timestamp.
|
2016-09-16 07:53:41 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
2016-09-01 01:17:40 -07:00
|
|
|
|
2016-09-16 07:53:41 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(2);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-09-01 01:17:40 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, DropsFrameAfterStop) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-09-01 01:17:40 -07:00
|
|
|
|
2016-09-16 07:53:41 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2016-09-01 01:17:40 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-09-01 01:17:40 -07:00
|
|
|
sink_.SetExpectNoFrames();
|
2018-11-07 08:43:50 +01:00
|
|
|
rtc::Event frame_destroyed_event;
|
2016-09-16 07:53:41 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, &frame_destroyed_event));
|
|
|
|
|
EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
|
2016-09-01 01:17:40 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, DropsPendingFramesOnSlowEncode) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-09-01 01:17:40 -07:00
|
|
|
|
|
|
|
|
fake_encoder_.BlockNextEncode();
|
2016-09-16 07:53:41 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2016-09-01 01:17:40 -07:00
|
|
|
// Here, the encoder thread will be blocked in the TestEncoder waiting for a
|
|
|
|
|
// call to ContinueEncode.
|
2016-09-16 07:53:41 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(3, nullptr));
|
2016-09-01 01:17:40 -07:00
|
|
|
fake_encoder_.ContinueEncode();
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(3);
|
2016-09-01 01:17:40 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-09-01 01:17:40 -07:00
|
|
|
}
|
|
|
|
|
|
2019-06-12 06:59:12 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, DropFrameWithFailedI420Conversion) {
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
|
|
|
|
|
|
|
|
|
rtc::Event frame_destroyed_event;
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFakeNativeFrame(1, &frame_destroyed_event));
|
|
|
|
|
ExpectDroppedFrame();
|
|
|
|
|
EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest, DropFrameWithFailedI420ConversionWithCrop) {
|
|
|
|
|
// Use the cropping factory.
|
|
|
|
|
video_encoder_config_.video_stream_factory =
|
|
|
|
|
new rtc::RefCountedObject<CroppingVideoStreamFactory>(1, 30);
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config_),
|
|
|
|
|
kMaxPayloadLength);
|
|
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
|
|
|
|
|
|
|
// Capture a frame at codec_width_/codec_height_.
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
|
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
// The encoder will have been configured once.
|
|
|
|
|
EXPECT_EQ(1, sink_.number_of_reconfigurations());
|
|
|
|
|
EXPECT_EQ(codec_width_, fake_encoder_.codec_config().width);
|
|
|
|
|
EXPECT_EQ(codec_height_, fake_encoder_.codec_config().height);
|
|
|
|
|
|
|
|
|
|
// Now send in a fake frame that needs to be cropped as the width/height
|
|
|
|
|
// aren't divisible by 4 (see CreateEncoderStreams above).
|
|
|
|
|
rtc::Event frame_destroyed_event;
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFakeNativeFrame(
|
|
|
|
|
2, &frame_destroyed_event, codec_width_ + 1, codec_height_ + 1));
|
|
|
|
|
ExpectDroppedFrame();
|
|
|
|
|
EXPECT_TRUE(frame_destroyed_event.Wait(kDefaultTimeoutMs));
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
ConfigureEncoderTriggersOnEncoderConfigurationChanged) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-10-30 21:37:57 +01:00
|
|
|
EXPECT_EQ(0, sink_.number_of_reconfigurations());
|
2016-09-23 15:52:06 +02:00
|
|
|
|
|
|
|
|
// Capture a frame and wait for it to synchronize with the encoder thread.
|
2016-09-23 16:24:55 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2016-10-30 21:37:57 +01:00
|
|
|
// The encoder will have been configured once when the first frame is
|
|
|
|
|
// received.
|
|
|
|
|
EXPECT_EQ(1, sink_.number_of_reconfigurations());
|
2016-09-23 15:52:06 +02:00
|
|
|
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
Reland "Reland "Move rtp-specific config out of EncoderSettings.""
This reverts commit 6c2c13af06b32778b86950681758a7970d1c5d9e.
Reason for revert: Intend to investigate and fix perf problems.
Original change's description:
> Revert "Reland "Move rtp-specific config out of EncoderSettings.""
>
> This reverts commit 04dd1768625eb2241d1fb97fd0137897e703e266.
>
> Reason for revert: Regression in ramp up perf tests.
>
> Original change's description:
> > Reland "Move rtp-specific config out of EncoderSettings."
> >
> > This is a reland of bc900cb1d1810fcf678fe41cf1e3966daa39c88c
> >
> > Original change's description:
> > > Move rtp-specific config out of EncoderSettings.
> > >
> > > In VideoSendStream::Config, move payload_name and payload_type from
> > > EncoderSettings to Rtp.
> > >
> > > EncoderSettings now contains configuration for VideoStreamEncoder only,
> > > and should perhaps be renamed in a follow up cl. It's no longer
> > > passed as an argument to VideoCodecInitializer::SetupCodec.
> > >
> > > The latter then needs a different way to know the codec type,
> > > which is provided by a new codec_type member in VideoEncoderConfig.
> > >
> > > Bug: webrtc:8830
> > > Change-Id: Ifcc691aef1ee6a95e43c0452c5e630d92a511cd6
> > > Reviewed-on: https://webrtc-review.googlesource.com/62062
> > > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > > Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> > > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#22532}
> >
> > Bug: webrtc:8830
> > Change-Id: If88ef7d57cdaa4fae3c7b2a97ea5a6e1b833e019
> > Reviewed-on: https://webrtc-review.googlesource.com/63721
> > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#22595}
>
> TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
>
> Bug: webrtc:8830,chromium:827080
> Change-Id: Iaaf146de91ec5c0d741b8efdf143f7e173084fef
> Reviewed-on: https://webrtc-review.googlesource.com/65520
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22677}
TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:8830, chromium:827080
Change-Id: I9b62987bf5daced90dfeb3ebb6739c80117c487f
Reviewed-on: https://webrtc-review.googlesource.com/66862
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22751}
2018-04-05 15:36:51 +02:00
|
|
|
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
|
2016-09-23 15:52:06 +02:00
|
|
|
video_encoder_config.min_transmit_bitrate_bps = 9999;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
2018-04-26 09:51:47 +02:00
|
|
|
kMaxPayloadLength);
|
2016-09-23 15:52:06 +02:00
|
|
|
|
|
|
|
|
// Capture a frame and wait for it to synchronize with the encoder thread.
|
2016-09-23 16:24:55 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(2);
|
2016-10-30 21:37:57 +01:00
|
|
|
EXPECT_EQ(2, sink_.number_of_reconfigurations());
|
2016-09-29 23:25:40 -07:00
|
|
|
EXPECT_EQ(9999, sink_.last_min_transmit_bitrate());
|
2016-09-29 22:39:10 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-09-29 22:39:10 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, FrameResolutionChangeReconfigureEncoder) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-10-02 23:45:26 -07:00
|
|
|
|
|
|
|
|
// Capture a frame and wait for it to synchronize with the encoder thread.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2016-10-30 21:37:57 +01:00
|
|
|
// The encoder will have been configured once.
|
|
|
|
|
EXPECT_EQ(1, sink_.number_of_reconfigurations());
|
2016-10-02 23:45:26 -07:00
|
|
|
EXPECT_EQ(codec_width_, fake_encoder_.codec_config().width);
|
|
|
|
|
EXPECT_EQ(codec_height_, fake_encoder_.codec_config().height);
|
|
|
|
|
|
|
|
|
|
codec_width_ *= 2;
|
|
|
|
|
codec_height_ *= 2;
|
|
|
|
|
// Capture a frame with a higher resolution and wait for it to synchronize
|
|
|
|
|
// with the encoder thread.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(2);
|
2016-10-02 23:45:26 -07:00
|
|
|
EXPECT_EQ(codec_width_, fake_encoder_.codec_config().width);
|
|
|
|
|
EXPECT_EQ(codec_height_, fake_encoder_.codec_config().height);
|
2016-10-30 21:37:57 +01:00
|
|
|
EXPECT_EQ(2, sink_.number_of_reconfigurations());
|
2016-10-02 23:45:26 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-10-02 23:45:26 -07:00
|
|
|
}
|
|
|
|
|
|
2019-06-28 12:53:07 +02:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
EncoderInstanceDestroyedBeforeAnotherInstanceCreated) {
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
|
|
|
|
|
|
|
|
|
// Capture a frame and wait for it to synchronize with the encoder thread.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
|
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
|
|
|
|
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
|
|
|
|
|
// Changing the max payload data length recreates encoder.
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
|
|
|
|
kMaxPayloadLength / 2);
|
|
|
|
|
|
|
|
|
|
// Capture a frame and wait for it to synchronize with the encoder thread.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
|
|
|
|
WaitForEncodedFrame(2);
|
|
|
|
|
EXPECT_EQ(1, encoder_factory_.GetMaxNumberOfSimultaneousEncoderInstances());
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-02 14:18:34 +02:00
|
|
|
TEST_F(VideoStreamEncoderTest, BitrateLimitsChangeReconfigureRateAllocator) {
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
|
|
|
|
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
|
|
|
|
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
|
|
|
|
|
video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
|
|
|
|
|
video_stream_encoder_->SetStartBitrate(kStartBitrateBps);
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(video_encoder_config.Copy(),
|
|
|
|
|
kMaxPayloadLength);
|
|
|
|
|
|
|
|
|
|
// Capture a frame and wait for it to synchronize with the encoder thread.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
|
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
// The encoder will have been configured once when the first frame is
|
|
|
|
|
// received.
|
|
|
|
|
EXPECT_EQ(1, sink_.number_of_reconfigurations());
|
|
|
|
|
EXPECT_EQ(kTargetBitrateBps,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate * 1000);
|
|
|
|
|
EXPECT_EQ(kStartBitrateBps,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().startBitrate * 1000);
|
|
|
|
|
|
2019-07-08 17:56:40 +02:00
|
|
|
test::FillEncoderConfiguration(kVideoCodecVP8, 1,
|
|
|
|
|
&video_encoder_config); //???
|
2019-07-02 14:18:34 +02:00
|
|
|
video_encoder_config.max_bitrate_bps = kTargetBitrateBps * 2;
|
|
|
|
|
video_stream_encoder_->SetStartBitrate(kStartBitrateBps * 2);
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
|
|
|
|
kMaxPayloadLength);
|
|
|
|
|
|
|
|
|
|
// Capture a frame and wait for it to synchronize with the encoder thread.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
|
|
|
|
WaitForEncodedFrame(2);
|
|
|
|
|
EXPECT_EQ(2, sink_.number_of_reconfigurations());
|
|
|
|
|
// Bitrate limits have changed - rate allocator should be reconfigured,
|
|
|
|
|
// encoder should not be reconfigured.
|
|
|
|
|
EXPECT_EQ(kTargetBitrateBps * 2,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate * 1000);
|
|
|
|
|
EXPECT_EQ(kStartBitrateBps * 2,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().startBitrate * 1000);
|
|
|
|
|
EXPECT_EQ(1, fake_encoder_.GetNumEncoderInitializations());
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-08 17:56:40 +02:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
2019-08-09 16:04:05 +02:00
|
|
|
EncoderRecommendedBitrateLimitsDoNotOverrideAppBitrateLimits) {
|
2019-07-08 17:56:40 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
|
|
|
|
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
|
|
|
|
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
|
|
|
|
|
video_encoder_config.max_bitrate_bps = 0;
|
2019-08-09 16:04:05 +02:00
|
|
|
video_encoder_config.simulcast_layers[0].min_bitrate_bps = 0;
|
2019-07-08 17:56:40 +02:00
|
|
|
video_stream_encoder_->ConfigureEncoder(video_encoder_config.Copy(),
|
|
|
|
|
kMaxPayloadLength);
|
|
|
|
|
|
2019-08-09 16:04:05 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, 360, 180));
|
2019-07-08 17:56:40 +02:00
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
|
2019-08-09 16:04:05 +02:00
|
|
|
// Get the default bitrate limits and use them as baseline for custom
|
|
|
|
|
// application and encoder recommended limits.
|
|
|
|
|
const uint32_t kDefaultMinBitrateKbps =
|
|
|
|
|
bitrate_allocator_factory_.codec_config().minBitrate;
|
|
|
|
|
const uint32_t kDefaultMaxBitrateKbps =
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate;
|
|
|
|
|
const uint32_t kEncMinBitrateKbps = kDefaultMinBitrateKbps * 2;
|
|
|
|
|
const uint32_t kEncMaxBitrateKbps = kDefaultMaxBitrateKbps * 2;
|
|
|
|
|
const uint32_t kAppMinBitrateKbps = kDefaultMinBitrateKbps * 3;
|
|
|
|
|
const uint32_t kAppMaxBitrateKbps = kDefaultMaxBitrateKbps * 3;
|
|
|
|
|
|
|
|
|
|
const VideoEncoder::ResolutionBitrateLimits encoder_bitrate_limits(
|
|
|
|
|
codec_width_ * codec_height_, kEncMinBitrateKbps * 1000,
|
|
|
|
|
kEncMinBitrateKbps * 1000, kEncMaxBitrateKbps * 1000);
|
|
|
|
|
fake_encoder_.SetResolutionBitrateLimits({encoder_bitrate_limits});
|
|
|
|
|
|
|
|
|
|
// Change resolution. This will trigger encoder re-configuration and video
|
|
|
|
|
// stream encoder will pick up the bitrate limits recommended by encoder.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, 640, 360));
|
|
|
|
|
WaitForEncodedFrame(2);
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(3, 360, 180));
|
|
|
|
|
WaitForEncodedFrame(3);
|
|
|
|
|
|
|
|
|
|
// App bitrate limits are not set - bitrate limits recommended by encoder
|
|
|
|
|
// should be used.
|
|
|
|
|
EXPECT_EQ(kEncMaxBitrateKbps,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate);
|
|
|
|
|
EXPECT_EQ(kEncMinBitrateKbps,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().minBitrate);
|
|
|
|
|
|
|
|
|
|
video_encoder_config.max_bitrate_bps = kAppMaxBitrateKbps * 1000;
|
|
|
|
|
video_encoder_config.simulcast_layers[0].min_bitrate_bps = 0;
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(video_encoder_config.Copy(),
|
|
|
|
|
kMaxPayloadLength);
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(4, nullptr));
|
|
|
|
|
WaitForEncodedFrame(4);
|
|
|
|
|
|
|
|
|
|
// App limited the max bitrate - bitrate limits recommended by encoder should
|
|
|
|
|
// not be applied.
|
|
|
|
|
EXPECT_EQ(kAppMaxBitrateKbps,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate);
|
|
|
|
|
EXPECT_EQ(kDefaultMinBitrateKbps,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().minBitrate);
|
|
|
|
|
|
|
|
|
|
video_encoder_config.max_bitrate_bps = 0;
|
|
|
|
|
video_encoder_config.simulcast_layers[0].min_bitrate_bps =
|
|
|
|
|
kAppMinBitrateKbps * 1000;
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(video_encoder_config.Copy(),
|
|
|
|
|
kMaxPayloadLength);
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(5, nullptr));
|
|
|
|
|
WaitForEncodedFrame(5);
|
|
|
|
|
|
|
|
|
|
// App limited the min bitrate - bitrate limits recommended by encoder should
|
|
|
|
|
// not be applied.
|
|
|
|
|
EXPECT_EQ(kDefaultMaxBitrateKbps,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate);
|
|
|
|
|
EXPECT_EQ(kAppMinBitrateKbps,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().minBitrate);
|
|
|
|
|
|
|
|
|
|
video_encoder_config.max_bitrate_bps = kAppMaxBitrateKbps * 1000;
|
|
|
|
|
video_encoder_config.simulcast_layers[0].min_bitrate_bps =
|
|
|
|
|
kAppMinBitrateKbps * 1000;
|
2019-07-08 17:56:40 +02:00
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
|
|
|
|
kMaxPayloadLength);
|
2019-08-09 16:04:05 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(6, nullptr));
|
|
|
|
|
WaitForEncodedFrame(6);
|
2019-07-08 17:56:40 +02:00
|
|
|
|
2019-08-09 16:04:05 +02:00
|
|
|
// App limited both min and max bitrates - bitrate limits recommended by
|
|
|
|
|
// encoder should not be applied.
|
|
|
|
|
EXPECT_EQ(kAppMaxBitrateKbps,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate);
|
|
|
|
|
EXPECT_EQ(kAppMinBitrateKbps,
|
|
|
|
|
bitrate_allocator_factory_.codec_config().minBitrate);
|
2019-07-08 17:56:40 +02:00
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest,
|
2019-08-09 16:04:05 +02:00
|
|
|
EncoderRecommendedMaxAndMinBitratesUsedForGivenResolution) {
|
2019-07-08 17:56:40 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
|
|
|
|
|
|
|
|
|
const VideoEncoder::ResolutionBitrateLimits encoder_bitrate_limits_270p(
|
2019-08-09 16:04:05 +02:00
|
|
|
480 * 270, 34 * 1000, 12 * 1000, 1234 * 1000);
|
2019-07-08 17:56:40 +02:00
|
|
|
const VideoEncoder::ResolutionBitrateLimits encoder_bitrate_limits_360p(
|
2019-08-09 16:04:05 +02:00
|
|
|
640 * 360, 43 * 1000, 21 * 1000, 2345 * 1000);
|
2019-07-08 17:56:40 +02:00
|
|
|
fake_encoder_.SetResolutionBitrateLimits(
|
|
|
|
|
{encoder_bitrate_limits_270p, encoder_bitrate_limits_360p});
|
|
|
|
|
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
|
|
|
|
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
|
|
|
|
|
video_encoder_config.max_bitrate_bps = 0;
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(video_encoder_config.Copy(),
|
|
|
|
|
kMaxPayloadLength);
|
|
|
|
|
|
2019-08-09 16:04:05 +02:00
|
|
|
// 270p. The bitrate limits recommended by encoder for 270p should be used.
|
2019-07-08 17:56:40 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, 480, 270));
|
|
|
|
|
WaitForEncodedFrame(1);
|
2019-08-09 16:04:05 +02:00
|
|
|
EXPECT_EQ(static_cast<uint32_t>(encoder_bitrate_limits_270p.min_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().minBitrate * 1000);
|
2019-07-08 17:56:40 +02:00
|
|
|
EXPECT_EQ(static_cast<uint32_t>(encoder_bitrate_limits_270p.max_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate * 1000);
|
|
|
|
|
|
2019-08-09 16:04:05 +02:00
|
|
|
// 360p. The bitrate limits recommended by encoder for 360p should be used.
|
2019-07-08 17:56:40 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, 640, 360));
|
|
|
|
|
WaitForEncodedFrame(2);
|
2019-08-09 16:04:05 +02:00
|
|
|
EXPECT_EQ(static_cast<uint32_t>(encoder_bitrate_limits_360p.min_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().minBitrate * 1000);
|
2019-07-08 17:56:40 +02:00
|
|
|
EXPECT_EQ(static_cast<uint32_t>(encoder_bitrate_limits_360p.max_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate * 1000);
|
|
|
|
|
|
2019-08-09 16:04:05 +02:00
|
|
|
// Resolution between 270p and 360p. The bitrate limits recommended by
|
2019-07-08 17:56:40 +02:00
|
|
|
// encoder for 360p should be used.
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(3, (640 + 480) / 2, (360 + 270) / 2));
|
|
|
|
|
WaitForEncodedFrame(3);
|
2019-08-09 16:04:05 +02:00
|
|
|
EXPECT_EQ(static_cast<uint32_t>(encoder_bitrate_limits_360p.min_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().minBitrate * 1000);
|
2019-07-08 17:56:40 +02:00
|
|
|
EXPECT_EQ(static_cast<uint32_t>(encoder_bitrate_limits_360p.max_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate * 1000);
|
|
|
|
|
|
2019-08-09 16:04:05 +02:00
|
|
|
// Resolution higher than 360p. The caps recommended by encoder should be
|
2019-07-08 17:56:40 +02:00
|
|
|
// ignored.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(4, 960, 540));
|
|
|
|
|
WaitForEncodedFrame(4);
|
2019-08-09 16:04:05 +02:00
|
|
|
EXPECT_NE(static_cast<uint32_t>(encoder_bitrate_limits_270p.min_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().minBitrate * 1000);
|
2019-07-08 17:56:40 +02:00
|
|
|
EXPECT_NE(static_cast<uint32_t>(encoder_bitrate_limits_270p.max_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate * 1000);
|
2019-08-09 16:04:05 +02:00
|
|
|
EXPECT_NE(static_cast<uint32_t>(encoder_bitrate_limits_360p.min_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().minBitrate * 1000);
|
2019-07-08 17:56:40 +02:00
|
|
|
EXPECT_NE(static_cast<uint32_t>(encoder_bitrate_limits_360p.max_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate * 1000);
|
|
|
|
|
|
|
|
|
|
// Resolution lower than 270p. The max bitrate limit recommended by encoder
|
|
|
|
|
// for 270p should be used.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(5, 320, 180));
|
|
|
|
|
WaitForEncodedFrame(5);
|
2019-08-09 16:04:05 +02:00
|
|
|
EXPECT_EQ(static_cast<uint32_t>(encoder_bitrate_limits_270p.min_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().minBitrate * 1000);
|
2019-07-08 17:56:40 +02:00
|
|
|
EXPECT_EQ(static_cast<uint32_t>(encoder_bitrate_limits_270p.max_bitrate_bps),
|
|
|
|
|
bitrate_allocator_factory_.codec_config().maxBitrate * 1000);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2019-08-09 16:04:05 +02:00
|
|
|
TEST_F(VideoStreamEncoderTest, EncoderRecommendedMaxBitrateCapsTargetBitrate) {
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
|
|
|
|
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
|
|
|
|
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
|
|
|
|
|
video_encoder_config.max_bitrate_bps = 0;
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(video_encoder_config.Copy(),
|
|
|
|
|
kMaxPayloadLength);
|
|
|
|
|
|
|
|
|
|
// Encode 720p frame to get the default encoder target bitrate.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, 1280, 720));
|
|
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
const uint32_t kDefaultTargetBitrateFor720pKbps =
|
|
|
|
|
bitrate_allocator_factory_.codec_config()
|
|
|
|
|
.simulcastStream[0]
|
|
|
|
|
.targetBitrate;
|
|
|
|
|
|
|
|
|
|
// Set the max recommended encoder bitrate to something lower than the default
|
|
|
|
|
// target bitrate.
|
|
|
|
|
const VideoEncoder::ResolutionBitrateLimits encoder_bitrate_limits(
|
|
|
|
|
1280 * 720, 10 * 1000, 10 * 1000,
|
|
|
|
|
kDefaultTargetBitrateFor720pKbps / 2 * 1000);
|
|
|
|
|
fake_encoder_.SetResolutionBitrateLimits({encoder_bitrate_limits});
|
|
|
|
|
|
|
|
|
|
// Change resolution to trigger encoder reinitialization.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, 640, 360));
|
|
|
|
|
WaitForEncodedFrame(2);
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(3, 1280, 720));
|
|
|
|
|
WaitForEncodedFrame(3);
|
|
|
|
|
|
|
|
|
|
// Ensure the target bitrate is capped by the max bitrate.
|
|
|
|
|
EXPECT_EQ(bitrate_allocator_factory_.codec_config().maxBitrate * 1000,
|
|
|
|
|
static_cast<uint32_t>(encoder_bitrate_limits.max_bitrate_bps));
|
|
|
|
|
EXPECT_EQ(bitrate_allocator_factory_.codec_config()
|
|
|
|
|
.simulcastStream[0]
|
|
|
|
|
.targetBitrate *
|
|
|
|
|
1000,
|
|
|
|
|
static_cast<uint32_t>(encoder_bitrate_limits.max_bitrate_bps));
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, SwitchSourceDeregisterEncoderAsSink) {
|
2016-11-01 11:45:46 -07:00
|
|
|
EXPECT_TRUE(video_source_.has_sinks());
|
|
|
|
|
test::FrameForwarder new_video_source;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2016-11-01 11:45:46 -07:00
|
|
|
EXPECT_FALSE(video_source_.has_sinks());
|
|
|
|
|
EXPECT_TRUE(new_video_source.has_sinks());
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-11-01 11:45:46 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, SinkWantsRotationApplied) {
|
2016-11-01 11:45:46 -07:00
|
|
|
EXPECT_FALSE(video_source_.sink_wants().rotation_applied);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSink(&sink_, true /*rotation_applied*/);
|
2016-11-01 11:45:46 -07:00
|
|
|
EXPECT_TRUE(video_source_.sink_wants().rotation_applied);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-11-01 11:45:46 -07:00
|
|
|
}
|
|
|
|
|
|
2017-12-08 17:04:29 -08:00
|
|
|
TEST_F(VideoStreamEncoderTest, TestCpuDowngrades_BalancedMode) {
|
|
|
|
|
const int kFramerateFps = 30;
|
2017-06-13 23:25:22 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2017-12-08 17:04:29 -08:00
|
|
|
|
|
|
|
|
// We rely on the automatic resolution adaptation, but we handle framerate
|
|
|
|
|
// adaptation manually by mocking the stats proxy.
|
|
|
|
|
video_source_.set_adaptation_enabled(true);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable BALANCED preference, no initial limitation.
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&video_source_,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
2017-12-08 17:04:29 -08:00
|
|
|
VerifyNoLimitation(video_source_.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
2017-12-08 17:04:29 -08:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-12-08 17:04:29 -08:00
|
|
|
// Adapt down as far as possible.
|
|
|
|
|
rtc::VideoSinkWants last_wants;
|
|
|
|
|
int64_t t = 1;
|
|
|
|
|
int loop_count = 0;
|
|
|
|
|
do {
|
|
|
|
|
++loop_count;
|
|
|
|
|
last_wants = video_source_.sink_wants();
|
|
|
|
|
|
|
|
|
|
// Simulate the framerate we've been asked to adapt to.
|
|
|
|
|
const int fps = std::min(kFramerateFps, last_wants.max_framerate_fps);
|
|
|
|
|
const int frame_interval_ms = rtc::kNumMillisecsPerSec / fps;
|
|
|
|
|
VideoSendStream::Stats mock_stats = stats_proxy_->GetStats();
|
|
|
|
|
mock_stats.input_frame_rate = fps;
|
|
|
|
|
stats_proxy_->SetMockStats(mock_stats);
|
|
|
|
|
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(t, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(t);
|
|
|
|
|
t += frame_interval_ms;
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2017-12-08 17:04:29 -08:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
|
|
|
|
VerifyBalancedModeFpsRange(
|
|
|
|
|
video_source_.sink_wants(),
|
|
|
|
|
*video_source_.last_sent_width() * *video_source_.last_sent_height());
|
|
|
|
|
} while (video_source_.sink_wants().max_pixel_count <
|
|
|
|
|
last_wants.max_pixel_count ||
|
|
|
|
|
video_source_.sink_wants().max_framerate_fps <
|
|
|
|
|
last_wants.max_framerate_fps);
|
|
|
|
|
|
|
|
|
|
// Verify that we've adapted all the way down.
|
|
|
|
|
stats_proxy_->ResetMockStats();
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
2017-12-08 17:04:29 -08:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(loop_count - 1,
|
2017-06-13 23:25:22 -07:00
|
|
|
stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
2017-12-08 17:04:29 -08:00
|
|
|
EXPECT_EQ(kMinPixelsPerFrame, *video_source_.last_sent_width() *
|
|
|
|
|
*video_source_.last_sent_height());
|
|
|
|
|
EXPECT_EQ(kMinBalancedFramerateFps,
|
|
|
|
|
video_source_.sink_wants().max_framerate_fps);
|
|
|
|
|
|
|
|
|
|
// Adapt back up the same number of times we adapted down.
|
|
|
|
|
for (int i = 0; i < loop_count - 1; ++i) {
|
|
|
|
|
last_wants = video_source_.sink_wants();
|
|
|
|
|
|
|
|
|
|
// Simulate the framerate we've been asked to adapt to.
|
|
|
|
|
const int fps = std::min(kFramerateFps, last_wants.max_framerate_fps);
|
|
|
|
|
const int frame_interval_ms = rtc::kNumMillisecsPerSec / fps;
|
|
|
|
|
VideoSendStream::Stats mock_stats = stats_proxy_->GetStats();
|
|
|
|
|
mock_stats.input_frame_rate = fps;
|
|
|
|
|
stats_proxy_->SetMockStats(mock_stats);
|
|
|
|
|
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(t, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(t);
|
|
|
|
|
t += frame_interval_ms;
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2017-12-08 17:04:29 -08:00
|
|
|
VerifyBalancedModeFpsRange(
|
|
|
|
|
video_source_.sink_wants(),
|
|
|
|
|
*video_source_.last_sent_width() * *video_source_.last_sent_height());
|
|
|
|
|
EXPECT_TRUE(video_source_.sink_wants().max_pixel_count >
|
|
|
|
|
last_wants.max_pixel_count ||
|
|
|
|
|
video_source_.sink_wants().max_framerate_fps >
|
|
|
|
|
last_wants.max_framerate_fps);
|
2017-06-13 23:25:22 -07:00
|
|
|
}
|
|
|
|
|
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(video_source_.sink_wants());
|
2017-12-08 17:04:29 -08:00
|
|
|
stats_proxy_->ResetMockStats();
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
2017-12-08 17:04:29 -08:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ((loop_count - 1) * 2,
|
|
|
|
|
stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-13 23:25:22 -07:00
|
|
|
}
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, SinkWantsStoredByDegradationPreference) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-04-10 01:12:52 -07:00
|
|
|
VerifyNoLimitation(video_source_.sink_wants());
|
2016-11-01 11:45:46 -07:00
|
|
|
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
|
2018-09-13 10:42:19 +02:00
|
|
|
int64_t frame_timestamp = 1;
|
2016-11-01 11:45:46 -07:00
|
|
|
|
2016-12-01 03:59:51 -08:00
|
|
|
video_source_.IncomingCapturedFrame(
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
CreateFrame(frame_timestamp, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(frame_timestamp);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
frame_timestamp += kFrameIntervalMs;
|
|
|
|
|
|
2016-11-01 11:45:46 -07:00
|
|
|
// Trigger CPU overuse.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
Reason for revert:
This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
Original issue's description:
> Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
>
> Reason for revert:
> Found issue with test case, will add fix to reland cl.
>
> Original issue's description:
> > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> >
> > Reason for revert:
> > Breaks perf tests:
> > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> >
> > Original issue's description:
> > > Add framerate to VideoSinkWants and ability to signal on overuse
> > >
> > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > current degradation preference is maintain-resolution rather than
> > > balanced.
> > >
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2716643002
> > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > # Skipping CQ checks because original CL landed less than 1 days ago.
> > NOPRESUBMIT=true
> > NOTREECHECKS=true
> > NOTRY=true
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2764133002
> > Cr-Commit-Position: refs/heads/master@{#17331}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
>
> TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> # Not skipping CQ checks because original CL landed more than 1 days ago.
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2781433002
> Cr-Commit-Position: refs/heads/master@{#17474}
> Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2783183003
Cr-Commit-Position: refs/heads/master@{#17477}
2017-03-30 10:44:38 -07:00
|
|
|
video_source_.IncomingCapturedFrame(
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
CreateFrame(frame_timestamp, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(frame_timestamp);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
frame_timestamp += kFrameIntervalMs;
|
|
|
|
|
|
2017-04-07 00:57:58 -07:00
|
|
|
// Default degradation preference is maintain-framerate, so will lower max
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
// wanted resolution.
|
2017-02-10 07:04:27 -08:00
|
|
|
EXPECT_FALSE(video_source_.sink_wants().target_pixel_count);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_LT(video_source_.sink_wants().max_pixel_count,
|
|
|
|
|
kFrameWidth * kFrameHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
EXPECT_EQ(kDefaultFramerate, video_source_.sink_wants().max_framerate_fps);
|
2016-11-01 11:45:46 -07:00
|
|
|
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
// Set new source, switch to maintain-resolution.
|
2016-11-01 11:45:46 -07:00
|
|
|
test::FrameForwarder new_video_source;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
2016-11-01 11:45:46 -07:00
|
|
|
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
// Initially no degradation registered.
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(new_video_source.sink_wants());
|
2016-11-01 11:45:46 -07:00
|
|
|
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
// Force an input frame rate to be available, or the adaptation call won't
|
|
|
|
|
// know what framerate to adapt form.
|
2017-04-10 01:12:52 -07:00
|
|
|
const int kInputFps = 30;
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
2017-04-10 01:12:52 -07:00
|
|
|
stats.input_frame_rate = kInputFps;
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
stats_proxy_->SetMockStats(stats);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2016-11-01 11:45:46 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
CreateFrame(frame_timestamp, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(frame_timestamp);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
frame_timestamp += kFrameIntervalMs;
|
|
|
|
|
|
|
|
|
|
// Some framerate constraint should be set.
|
|
|
|
|
EXPECT_FALSE(new_video_source.sink_wants().target_pixel_count);
|
|
|
|
|
EXPECT_EQ(std::numeric_limits<int>::max(),
|
|
|
|
|
new_video_source.sink_wants().max_pixel_count);
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_LT(new_video_source.sink_wants().max_framerate_fps, kInputFps);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
|
2017-04-10 01:12:52 -07:00
|
|
|
// Turn off degradation completely.
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&new_video_source,
|
|
|
|
|
webrtc::DegradationPreference::DISABLED);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(new_video_source.sink_wants());
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(frame_timestamp, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(frame_timestamp);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
frame_timestamp += kFrameIntervalMs;
|
|
|
|
|
|
|
|
|
|
// Still no degradation.
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(new_video_source.sink_wants());
|
2016-11-01 11:45:46 -07:00
|
|
|
|
|
|
|
|
// Calling SetSource with resolution scaling enabled apply the old SinkWants.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_LT(new_video_source.sink_wants().max_pixel_count,
|
|
|
|
|
kFrameWidth * kFrameHeight);
|
|
|
|
|
EXPECT_FALSE(new_video_source.sink_wants().target_pixel_count);
|
2018-09-13 10:42:19 +02:00
|
|
|
EXPECT_EQ(kDefaultFramerate, new_video_source.sink_wants().max_framerate_fps);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
|
|
|
|
|
// Calling SetSource with framerate scaling enabled apply the old SinkWants.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
2017-02-10 07:04:27 -08:00
|
|
|
EXPECT_FALSE(new_video_source.sink_wants().target_pixel_count);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_EQ(std::numeric_limits<int>::max(),
|
|
|
|
|
new_video_source.sink_wants().max_pixel_count);
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_LT(new_video_source.sink_wants().max_framerate_fps, kInputFps);
|
2016-11-01 11:45:46 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-11-01 11:45:46 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, StatsTracksQualityAdaptationStats) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-11-01 11:45:46 -07:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2017-04-04 05:51:49 -07:00
|
|
|
VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_FALSE(stats.bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(2);
|
2017-04-04 05:51:49 -07:00
|
|
|
|
|
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_TRUE(stats.bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(3);
|
2017-04-04 05:51:49 -07:00
|
|
|
|
|
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_FALSE(stats.bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(2, stats.number_of_quality_adapt_changes);
|
|
|
|
|
EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-04-04 05:51:49 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, StatsTracksCpuAdaptationStats) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-04-04 05:51:49 -07:00
|
|
|
|
|
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2016-11-01 11:45:46 -07:00
|
|
|
VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger CPU overuse.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(2);
|
2016-11-01 11:45:46 -07:00
|
|
|
|
|
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_TRUE(stats.cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger CPU normal use.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(3);
|
2016-11-01 11:45:46 -07:00
|
|
|
|
|
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
|
2017-04-04 05:51:49 -07:00
|
|
|
EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
|
2016-11-01 11:45:46 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-11-01 11:45:46 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2016-11-29 01:44:11 -08:00
|
|
|
VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats.bw_limited_resolution);
|
2016-11-29 01:44:11 -08:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Trigger CPU overuse.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(2);
|
2016-11-29 01:44:11 -08:00
|
|
|
stats = stats_proxy_->GetStats();
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats.bw_limited_resolution);
|
2016-11-29 01:44:11 -08:00
|
|
|
EXPECT_TRUE(stats.cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Set new source with adaptation still enabled.
|
|
|
|
|
test::FrameForwarder new_video_source;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(3);
|
2016-11-29 01:44:11 -08:00
|
|
|
stats = stats_proxy_->GetStats();
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats.bw_limited_resolution);
|
2016-11-29 01:44:11 -08:00
|
|
|
EXPECT_TRUE(stats.cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Set adaptation disabled.
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&new_video_source,
|
|
|
|
|
webrtc::DegradationPreference::DISABLED);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(CreateFrame(4, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(4);
|
2016-11-29 01:44:11 -08:00
|
|
|
stats = stats_proxy_->GetStats();
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats.bw_limited_resolution);
|
2016-11-29 01:44:11 -08:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Set adaptation back to enabled.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(CreateFrame(5, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(5);
|
2016-11-29 01:44:11 -08:00
|
|
|
stats = stats_proxy_->GetStats();
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats.bw_limited_resolution);
|
2016-11-29 01:44:11 -08:00
|
|
|
EXPECT_TRUE(stats.cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Trigger CPU normal use.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2017-04-04 05:51:49 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(CreateFrame(6, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(6);
|
2016-11-29 01:44:11 -08:00
|
|
|
stats = stats_proxy_->GetStats();
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats.bw_limited_resolution);
|
2016-11-29 01:44:11 -08:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-11-29 01:44:11 -08:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, SwitchingSourceKeepsQualityAdaptation) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2016-11-29 01:44:11 -08:00
|
|
|
VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_FALSE(stats.bw_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.bw_limited_framerate);
|
2017-04-04 05:51:49 -07:00
|
|
|
EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
|
|
|
|
// Set new source with adaptation still enabled.
|
|
|
|
|
test::FrameForwarder new_video_source;
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&new_video_source,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(2);
|
2016-11-29 01:44:11 -08:00
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_FALSE(stats.bw_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.bw_limited_framerate);
|
2017-04-04 05:51:49 -07:00
|
|
|
EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Trigger adapt down.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-04-04 05:51:49 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(3);
|
2016-11-29 01:44:11 -08:00
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_TRUE(stats.bw_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.bw_limited_framerate);
|
2017-04-04 05:51:49 -07:00
|
|
|
EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Set new source with adaptation still enabled.
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&new_video_source,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(CreateFrame(4, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(4);
|
2016-11-29 01:44:11 -08:00
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_TRUE(stats.bw_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.bw_limited_framerate);
|
2017-04-04 05:51:49 -07:00
|
|
|
EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-10 01:12:52 -07:00
|
|
|
// Disable resolution scaling.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(CreateFrame(5, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(5);
|
2016-11-29 01:44:11 -08:00
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_FALSE(stats.bw_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.bw_limited_framerate);
|
2017-04-04 05:51:49 -07:00
|
|
|
EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
|
|
|
|
|
EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-11-29 01:44:11 -08:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
QualityAdaptationStatsAreResetWhenScalerIsDisabled) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-03-31 05:29:12 -07:00
|
|
|
|
|
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2018-09-13 10:42:19 +02:00
|
|
|
int64_t timestamp_ms = kFrameIntervalMs;
|
2017-03-31 05:29:12 -07:00
|
|
|
video_source_.set_adaptation_enabled(true);
|
2018-09-13 10:42:19 +02:00
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-03-31 05:29:12 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-03-31 05:29:12 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger overuse.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-03-31 05:29:12 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
2018-04-19 09:04:13 +02:00
|
|
|
// Leave source unchanged, but disable quality scaler.
|
2017-03-31 05:29:12 -07:00
|
|
|
fake_encoder_.SetQualityScaling(false);
|
2018-04-19 09:04:13 +02:00
|
|
|
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
|
|
|
|
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
|
|
|
|
|
// Make format different, to force recreation of encoder.
|
|
|
|
|
video_encoder_config.video_format.parameters["foo"] = "foo";
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
2018-04-26 09:51:47 +02:00
|
|
|
kMaxPayloadLength);
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-03-31 05:29:12 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-03-31 05:29:12 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
StatsTracksCpuAdaptationStatsWhenSwitchingSource) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-11-01 11:45:46 -07:00
|
|
|
|
2017-04-07 00:57:58 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2017-02-10 07:04:27 -08:00
|
|
|
int sequence = 1;
|
2016-11-01 11:45:46 -07:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(sequence, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(sequence++);
|
2016-11-01 11:45:46 -07:00
|
|
|
VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
2017-02-10 07:04:27 -08:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_framerate);
|
2017-02-10 07:04:27 -08:00
|
|
|
EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-04-10 01:12:52 -07:00
|
|
|
// Trigger CPU overuse, should now adapt down.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(sequence, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(sequence++);
|
2017-02-10 07:04:27 -08:00
|
|
|
stats = stats_proxy_->GetStats();
|
2016-11-01 11:45:46 -07:00
|
|
|
EXPECT_TRUE(stats.cpu_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_framerate);
|
2016-11-01 11:45:46 -07:00
|
|
|
EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Set new source with adaptation still enabled.
|
|
|
|
|
test::FrameForwarder new_video_source;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2016-11-01 11:45:46 -07:00
|
|
|
|
|
|
|
|
new_video_source.IncomingCapturedFrame(
|
2017-04-04 05:51:49 -07:00
|
|
|
CreateFrame(sequence, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(sequence++);
|
2016-11-01 11:45:46 -07:00
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_TRUE(stats.cpu_limited_resolution);
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_framerate);
|
2016-11-01 11:45:46 -07:00
|
|
|
EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
// Set cpu adaptation by frame dropping.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
2016-11-01 11:45:46 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(
|
2017-04-04 05:51:49 -07:00
|
|
|
CreateFrame(sequence, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(sequence++);
|
2016-11-01 11:45:46 -07:00
|
|
|
stats = stats_proxy_->GetStats();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
// Not adapted at first.
|
2016-11-01 11:45:46 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_framerate);
|
2016-11-01 11:45:46 -07:00
|
|
|
EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
// Force an input frame rate to be available, or the adaptation call won't
|
2017-05-15 23:40:18 -07:00
|
|
|
// know what framerate to adapt from.
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
VideoSendStream::Stats mock_stats = stats_proxy_->GetStats();
|
|
|
|
|
mock_stats.input_frame_rate = 30;
|
|
|
|
|
stats_proxy_->SetMockStats(mock_stats);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
stats_proxy_->ResetMockStats();
|
|
|
|
|
|
|
|
|
|
new_video_source.IncomingCapturedFrame(
|
2017-04-04 05:51:49 -07:00
|
|
|
CreateFrame(sequence, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(sequence++);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
|
|
|
|
|
// Framerate now adapted.
|
|
|
|
|
stats = stats_proxy_->GetStats();
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats.cpu_limited_framerate);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Disable CPU adaptation.
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&new_video_source,
|
|
|
|
|
webrtc::DegradationPreference::DISABLED);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(
|
2017-04-04 05:51:49 -07:00
|
|
|
CreateFrame(sequence, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(sequence++);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
|
|
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_framerate);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Try to trigger overuse. Should not succeed.
|
|
|
|
|
stats_proxy_->SetMockStats(mock_stats);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
stats_proxy_->ResetMockStats();
|
|
|
|
|
|
|
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_framerate);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Switch back the source with resolution adaptation enabled.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&video_source_, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(sequence, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(sequence++);
|
2016-11-01 11:45:46 -07:00
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_TRUE(stats.cpu_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_framerate);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
|
2016-11-01 11:45:46 -07:00
|
|
|
|
|
|
|
|
// Trigger CPU normal usage.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(sequence, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(sequence++);
|
2016-11-01 11:45:46 -07:00
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_framerate);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_EQ(3, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Back to the source with adaptation off, set it back to maintain-resolution.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(
|
2017-04-04 05:51:49 -07:00
|
|
|
CreateFrame(sequence, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(sequence++);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
stats = stats_proxy_->GetStats();
|
2017-06-07 00:01:02 -07:00
|
|
|
// Disabled, since we previously switched the source to disabled.
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_TRUE(stats.cpu_limited_framerate);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_EQ(3, stats.number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger CPU normal usage.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(
|
2017-04-04 05:51:49 -07:00
|
|
|
CreateFrame(sequence, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(sequence++);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
EXPECT_FALSE(stats.cpu_limited_resolution);
|
2017-06-07 00:01:02 -07:00
|
|
|
EXPECT_FALSE(stats.cpu_limited_framerate);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_EQ(4, stats.number_of_cpu_adapt_changes);
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
|
2016-11-01 11:45:46 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-11-01 11:45:46 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
ScalingUpAndDownDoesNothingWithMaintainResolution) {
|
2017-04-04 05:51:49 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Expect no scaling to begin with.
|
2017-04-10 01:12:52 -07:00
|
|
|
VerifyNoLimitation(video_source_.sink_wants());
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Trigger scale down.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2016-12-01 03:59:51 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(2);
|
2016-12-01 03:59:51 -08:00
|
|
|
|
2016-11-29 01:44:11 -08:00
|
|
|
// Expect a scale down.
|
|
|
|
|
EXPECT_TRUE(video_source_.sink_wants().max_pixel_count);
|
2017-04-04 05:51:49 -07:00
|
|
|
EXPECT_LT(video_source_.sink_wants().max_pixel_count, kWidth * kHeight);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-10 01:12:52 -07:00
|
|
|
// Set resolution scaling disabled.
|
2016-11-29 01:44:11 -08:00
|
|
|
test::FrameForwarder new_video_source;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Trigger scale down.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-04-04 05:51:49 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(3);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Expect no scaling.
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_EQ(std::numeric_limits<int>::max(),
|
|
|
|
|
new_video_source.sink_wants().max_pixel_count);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Trigger scale up.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2017-04-04 05:51:49 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(CreateFrame(4, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(4);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-04-10 01:12:52 -07:00
|
|
|
// Expect nothing to change, still no scaling.
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_EQ(std::numeric_limits<int>::max(),
|
|
|
|
|
new_video_source.sink_wants().max_pixel_count);
|
2016-11-29 01:44:11 -08:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-11-29 01:44:11 -08:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
SkipsSameAdaptDownRequest_MaintainFramerateMode) {
|
2017-04-10 01:12:52 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-04-10 01:12:52 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
|
2017-04-10 01:12:52 -07:00
|
|
|
test::FrameForwarder source;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2017-04-10 01:12:52 -07:00
|
|
|
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2017-05-15 23:40:18 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
2017-04-10 01:12:52 -07:00
|
|
|
const int kLastMaxPixelCount = source.sink_wants().max_pixel_count;
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down for same input resolution, expect no change.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_EQ(kLastMaxPixelCount, source.sink_wants().max_pixel_count);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-04-10 01:12:52 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, SkipsSameOrLargerAdaptDownRequest_BalancedMode) {
|
2017-06-13 23:25:22 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable BALANCED preference, no initial limitation.
|
2017-06-13 23:25:22 -07:00
|
|
|
test::FrameForwarder source;
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&source,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
2017-06-13 23:25:22 -07:00
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(1);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
const int kLastMaxPixelCount = source.sink_wants().max_pixel_count;
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down for same input resolution, expect no change.
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(2);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_EQ(kLastMaxPixelCount, source.sink_wants().max_pixel_count);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down for larger input resolution, expect no change.
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(3, kWidth + 1, kHeight + 1));
|
|
|
|
|
sink_.WaitForEncodedFrame(3);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_EQ(kLastMaxPixelCount, source.sink_wants().max_pixel_count);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-13 23:25:22 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
NoChangeForInitialNormalUsage_MaintainFramerateMode) {
|
2017-04-10 01:12:52 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-04-10 01:12:52 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
|
2017-04-10 01:12:52 -07:00
|
|
|
test::FrameForwarder source;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2017-04-10 01:12:52 -07:00
|
|
|
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no change.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-04-10 01:12:52 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
NoChangeForInitialNormalUsage_MaintainResolutionMode) {
|
2017-04-10 01:12:52 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-04-10 01:12:52 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable MAINTAIN_RESOLUTION preference, no initial limitation.
|
2017-04-10 01:12:52 -07:00
|
|
|
test::FrameForwarder source;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
2017-04-10 01:12:52 -07:00
|
|
|
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no change.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-04-10 01:12:52 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, NoChangeForInitialNormalUsage_BalancedMode) {
|
2017-06-13 23:25:22 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable BALANCED preference, no initial limitation.
|
2017-06-13 23:25:22 -07:00
|
|
|
test::FrameForwarder source;
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&source,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no change.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-13 23:25:22 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, NoChangeForInitialNormalUsage_DisabledMode) {
|
2017-05-15 23:40:18 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-05-15 23:40:18 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable DISABLED preference, no initial limitation.
|
2017-05-15 23:40:18 -07:00
|
|
|
test::FrameForwarder source;
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&source,
|
|
|
|
|
webrtc::DegradationPreference::DISABLED);
|
2017-05-15 23:40:18 -07:00
|
|
|
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no change.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-05-15 23:40:18 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-05-15 23:40:18 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
AdaptsResolutionForLowQuality_MaintainFramerateMode) {
|
2017-04-10 01:12:52 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-04-10 01:12:52 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
|
2017-04-10 01:12:52 -07:00
|
|
|
AdaptingFrameForwarder source;
|
|
|
|
|
source.set_adaptation_enabled(true);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2017-04-10 01:12:52 -07:00
|
|
|
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-04-10 01:12:52 -07:00
|
|
|
source.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(2);
|
2017-05-15 23:40:18 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no restriction.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-04-10 01:12:52 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-04-10 01:12:52 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
AdaptsFramerateForLowQuality_MaintainResolutionMode) {
|
2017-05-15 23:40:18 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
|
|
|
|
const int kInputFps = 30;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-05-15 23:40:18 -07:00
|
|
|
|
|
|
|
|
VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
|
|
|
|
stats.input_frame_rate = kInputFps;
|
|
|
|
|
stats_proxy_->SetMockStats(stats);
|
|
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Expect no scaling to begin with (preference: MAINTAIN_FRAMERATE).
|
2017-05-15 23:40:18 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(1);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(video_source_.sink_wants());
|
2017-05-15 23:40:18 -07:00
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-05-15 23:40:18 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(2);
|
|
|
|
|
VerifyFpsMaxResolutionLt(video_source_.sink_wants(), kWidth * kHeight);
|
|
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable MAINTAIN_RESOLUTION preference.
|
2017-05-15 23:40:18 -07:00
|
|
|
test::FrameForwarder new_video_source;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&new_video_source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(new_video_source.sink_wants());
|
2017-05-15 23:40:18 -07:00
|
|
|
|
|
|
|
|
// Trigger adapt down, expect reduced framerate.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-05-15 23:40:18 -07:00
|
|
|
new_video_source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(3);
|
|
|
|
|
VerifyFpsLtResolutionMax(new_video_source.sink_wants(), kInputFps);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no restriction.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(new_video_source.sink_wants());
|
2017-05-15 23:40:18 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-05-15 23:40:18 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, DoesNotScaleBelowSetResolutionLimit) {
|
2017-04-21 01:47:31 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
|
|
|
|
const size_t kNumFrames = 10;
|
|
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2016-12-01 03:59:51 -08:00
|
|
|
|
2017-04-21 01:47:31 -07:00
|
|
|
// Enable adapter, expected input resolutions when downscaling:
|
2017-08-17 08:58:54 -07:00
|
|
|
// 1280x720 -> 960x540 -> 640x360 -> 480x270 -> 320x180 (kMinPixelsPerFrame)
|
2017-04-21 01:47:31 -07:00
|
|
|
video_source_.set_adaptation_enabled(true);
|
|
|
|
|
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
int downscales = 0;
|
|
|
|
|
for (size_t i = 1; i <= kNumFrames; i++) {
|
2018-09-13 10:42:19 +02:00
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(i * kFrameIntervalMs, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(i * kFrameIntervalMs);
|
2017-04-21 01:47:31 -07:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Trigger scale down.
|
2017-04-21 01:47:31 -07:00
|
|
|
rtc::VideoSinkWants last_wants = video_source_.sink_wants();
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_GE(video_source_.sink_wants().max_pixel_count, kMinPixelsPerFrame);
|
2017-04-21 01:47:31 -07:00
|
|
|
|
|
|
|
|
if (video_source_.sink_wants().max_pixel_count < last_wants.max_pixel_count)
|
|
|
|
|
++downscales;
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(downscales,
|
|
|
|
|
stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
EXPECT_GT(downscales, 0);
|
2016-12-01 03:59:51 -08:00
|
|
|
}
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-04-21 01:47:31 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
2017-04-21 01:47:31 -07:00
|
|
|
AdaptsResolutionUpAndDownTwiceOnOveruse_MaintainFramerateMode) {
|
|
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-04-21 01:47:31 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
|
2017-04-21 01:47:31 -07:00
|
|
|
AdaptingFrameForwarder source;
|
|
|
|
|
source.set_adaptation_enabled(true);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2017-04-21 01:47:31 -07:00
|
|
|
|
2018-09-13 10:42:19 +02:00
|
|
|
int64_t timestamp_ms = kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-05-15 23:40:18 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no restriction.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-05-15 23:40:18 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(3, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no restriction.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-05-15 23:40:18 -07:00
|
|
|
sink_.WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(4, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-04-21 01:47:31 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
2017-06-13 23:25:22 -07:00
|
|
|
AdaptsResolutionUpAndDownTwiceForLowQuality_BalancedMode_NoFpsLimit) {
|
|
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable BALANCED preference, no initial limitation.
|
2017-06-13 23:25:22 -07:00
|
|
|
AdaptingFrameForwarder source;
|
|
|
|
|
source.set_adaptation_enabled(true);
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&source,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2018-09-13 10:42:19 +02:00
|
|
|
int64_t timestamp_ms = kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-13 23:25:22 -07:00
|
|
|
sink_.WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no restriction.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-13 23:25:22 -07:00
|
|
|
sink_.WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(3, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no restriction.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-13 23:25:22 -07:00
|
|
|
sink_.WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(4, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-13 23:25:22 -07:00
|
|
|
}
|
|
|
|
|
|
2019-08-14 17:26:39 +02:00
|
|
|
TEST_F(VideoStreamEncoderTest, NoAdaptUpIfBwEstimateIsLessThanMinBitrate) {
|
|
|
|
|
webrtc::test::ScopedFieldTrials field_trials(
|
|
|
|
|
"WebRTC-Video-BalancedDegradationSettings/"
|
|
|
|
|
"pixels:57600|129600|230400,fps:7|10|14,kbps:0|0|425/");
|
|
|
|
|
// Reset encoder for field trials to take effect.
|
|
|
|
|
ConfigureEncoder(video_encoder_config_.Copy());
|
|
|
|
|
|
|
|
|
|
const int kWidth = 640; // pixels:640x360=230400
|
|
|
|
|
const int kHeight = 360;
|
|
|
|
|
const int64_t kFrameIntervalMs = 150;
|
|
|
|
|
const int kMinBitrateBps = 425000;
|
|
|
|
|
const int kTooLowMinBitrateBps = 424000;
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(DataRate::bps(kTooLowMinBitrateBps),
|
|
|
|
|
DataRate::bps(kTooLowMinBitrateBps),
|
|
|
|
|
0, 0);
|
|
|
|
|
|
|
|
|
|
// Enable BALANCED preference, no initial limitation.
|
|
|
|
|
AdaptingFrameForwarder source;
|
|
|
|
|
source.set_adaptation_enabled(true);
|
|
|
|
|
video_stream_encoder_->SetSource(&source,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
|
|
|
|
|
|
|
|
|
int64_t timestamp_ms = kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(kWidth, kHeight);
|
|
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down framerate (640x360@14fps).
|
|
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
|
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(timestamp_ms);
|
|
|
|
|
VerifyFpsEqResolutionMax(source.sink_wants(), 14);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution (480x270@14fps).
|
|
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
|
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(timestamp_ms);
|
|
|
|
|
VerifyFpsEqResolutionLt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no upscale (target bitrate < min bitrate).
|
|
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
|
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(timestamp_ms);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect upscaled resolution (target bitrate == min
|
|
|
|
|
// bitrate).
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(DataRate::bps(kMinBitrateBps),
|
|
|
|
|
DataRate::bps(kMinBitrateBps), 0, 0);
|
|
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
|
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
sink_.WaitForEncodedFrame(timestamp_ms);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(3, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
2017-04-21 01:47:31 -07:00
|
|
|
AdaptsResolutionOnOveruseAndLowQuality_MaintainFramerateMode) {
|
|
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-04-21 01:47:31 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
|
2017-04-21 01:47:31 -07:00
|
|
|
AdaptingFrameForwarder source;
|
|
|
|
|
source.set_adaptation_enabled(true);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2017-04-21 01:47:31 -07:00
|
|
|
|
2018-09-13 10:42:19 +02:00
|
|
|
int64_t timestamp_ms = kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger cpu adapt down, expect scaled down resolution (960x540).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-05-15 23:40:18 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger cpu adapt down, expect scaled down resolution (640x360).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-05-15 23:40:18 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), source.last_wants());
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-12-08 17:04:29 -08:00
|
|
|
// Trigger cpu adapt down, expect scaled down resolution (480x270).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-12-08 17:04:29 -08:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), source.last_wants());
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
2017-12-08 17:04:29 -08:00
|
|
|
EXPECT_EQ(3, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-12-08 17:04:29 -08:00
|
|
|
// Trigger quality adapt down, expect scaled down resolution (320x180).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-05-15 23:40:18 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), source.last_wants());
|
2017-12-08 17:04:29 -08:00
|
|
|
rtc::VideoSinkWants last_wants = source.sink_wants();
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
2017-12-08 17:04:29 -08:00
|
|
|
EXPECT_EQ(3, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-12-08 17:04:29 -08:00
|
|
|
// Trigger quality adapt down, expect no change (min resolution reached).
|
|
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-12-08 17:04:29 -08:00
|
|
|
VerifyFpsMaxResolutionEq(source.sink_wants(), last_wants);
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(3, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-12-08 17:04:29 -08:00
|
|
|
// Trigger cpu adapt up, expect upscaled resolution (480x270).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-05-15 23:40:18 -07:00
|
|
|
VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
2017-12-08 17:04:29 -08:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(4, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-12-08 17:04:29 -08:00
|
|
|
// Trigger cpu adapt up, expect upscaled resolution (640x360).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-12-08 17:04:29 -08:00
|
|
|
VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(5, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger cpu adapt up, expect upscaled resolution (960x540).
|
|
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-12-08 17:04:29 -08:00
|
|
|
VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
|
|
|
|
last_wants = source.sink_wants();
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_EQ(6, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger cpu adapt up, no cpu downgrades, expect no change (960x540).
|
|
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-05-15 23:40:18 -07:00
|
|
|
VerifyFpsEqResolutionEq(source.sink_wants(), last_wants);
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
2017-12-08 17:04:29 -08:00
|
|
|
EXPECT_EQ(6, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger quality adapt up, expect no restriction (1280x720).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2018-09-13 10:42:19 +02:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kWidth, kHeight);
|
2017-05-15 23:40:18 -07:00
|
|
|
VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
2017-12-08 17:04:29 -08:00
|
|
|
EXPECT_EQ(6, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
2016-12-01 03:59:51 -08:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2016-12-01 03:59:51 -08:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, CpuLimitedHistogramIsReported) {
|
2017-04-04 05:51:49 -07:00
|
|
|
const int kWidth = 640;
|
|
|
|
|
const int kHeight = 360;
|
2016-11-01 11:45:46 -07:00
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-27 07:06:52 -07:00
|
|
|
|
2016-11-01 11:45:46 -07:00
|
|
|
for (int i = 1; i <= SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) {
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(i, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(i);
|
2016-11-01 11:45:46 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2016-11-01 11:45:46 -07:00
|
|
|
for (int i = 1; i <= SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) {
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(
|
|
|
|
|
SendStatisticsProxy::kMinRequiredMetricsSamples + i, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(SendStatisticsProxy::kMinRequiredMetricsSamples + i);
|
2016-11-01 11:45:46 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
video_stream_encoder_.reset();
|
2016-11-01 11:45:46 -07:00
|
|
|
stats_proxy_.reset();
|
2017-02-28 08:49:33 -08:00
|
|
|
|
2016-11-01 11:45:46 -07:00
|
|
|
EXPECT_EQ(1,
|
|
|
|
|
metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent"));
|
|
|
|
|
EXPECT_EQ(
|
|
|
|
|
1, metrics::NumEvents("WebRTC.Video.CpuLimitedResolutionInPercent", 50));
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
CpuLimitedHistogramIsNotReportedForDisabledDegradation) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-04-19 02:01:06 -07:00
|
|
|
const int kWidth = 640;
|
|
|
|
|
const int kHeight = 360;
|
|
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&video_source_,
|
|
|
|
|
webrtc::DegradationPreference::DISABLED);
|
2017-04-19 02:01:06 -07:00
|
|
|
|
|
|
|
|
for (int i = 1; i <= SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) {
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(i, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(i);
|
2017-04-19 02:01:06 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
video_stream_encoder_.reset();
|
2017-04-19 02:01:06 -07:00
|
|
|
stats_proxy_.reset();
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ(0,
|
|
|
|
|
metrics::NumSamples("WebRTC.Video.CpuLimitedResolutionInPercent"));
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, CallsBitrateObserver) {
|
2017-06-27 07:06:52 -07:00
|
|
|
MockBitrateObserver bitrate_observer;
|
2018-05-21 14:09:31 +02:00
|
|
|
video_stream_encoder_->SetBitrateAllocationObserver(&bitrate_observer);
|
2017-01-16 06:24:02 -08:00
|
|
|
|
|
|
|
|
const int kDefaultFps = 30;
|
2018-04-23 12:32:22 +02:00
|
|
|
const VideoBitrateAllocation expected_bitrate =
|
2017-01-16 06:24:02 -08:00
|
|
|
DefaultVideoBitrateAllocator(fake_encoder_.codec_config())
|
2019-08-02 15:16:28 +02:00
|
|
|
.Allocate(VideoBitrateAllocationParameters(kLowTargetBitrateBps,
|
|
|
|
|
kDefaultFps));
|
2017-01-16 06:24:02 -08:00
|
|
|
|
|
|
|
|
EXPECT_CALL(bitrate_observer, OnBitrateAllocationUpdated(expected_bitrate))
|
2019-01-11 11:11:10 +01:00
|
|
|
.Times(1);
|
2019-03-06 15:37:33 +01:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(DataRate::bps(kLowTargetBitrateBps),
|
2019-04-08 15:14:01 +02:00
|
|
|
DataRate::bps(kLowTargetBitrateBps),
|
|
|
|
|
0, 0);
|
2017-01-16 06:24:02 -08:00
|
|
|
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
2019-02-21 21:19:53 +01:00
|
|
|
CreateFrame(rtc::TimeMillis(), codec_width_, codec_height_));
|
|
|
|
|
WaitForEncodedFrame(rtc::TimeMillis());
|
|
|
|
|
absl::optional<VideoBitrateAllocation> bitrate_allocation =
|
|
|
|
|
fake_encoder_.GetAndResetLastBitrateAllocation();
|
|
|
|
|
// Check that encoder has been updated too, not just allocation observer.
|
|
|
|
|
EXPECT_EQ(bitrate_allocation->get_sum_bps(), kLowTargetBitrateBps);
|
2019-04-17 12:11:20 +02:00
|
|
|
// TODO(srte): The use of millisecs here looks like an error, but the tests
|
|
|
|
|
// fails using seconds, this should be investigated.
|
|
|
|
|
fake_clock_.AdvanceTime(TimeDelta::ms(1) / kDefaultFps);
|
2017-01-16 06:24:02 -08:00
|
|
|
|
|
|
|
|
// Not called on second frame.
|
|
|
|
|
EXPECT_CALL(bitrate_observer, OnBitrateAllocationUpdated(expected_bitrate))
|
|
|
|
|
.Times(0);
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
2019-02-21 21:19:53 +01:00
|
|
|
CreateFrame(rtc::TimeMillis(), codec_width_, codec_height_));
|
|
|
|
|
WaitForEncodedFrame(rtc::TimeMillis());
|
2019-04-17 12:11:20 +02:00
|
|
|
fake_clock_.AdvanceTime(TimeDelta::ms(1) / kDefaultFps);
|
2017-01-16 06:24:02 -08:00
|
|
|
|
|
|
|
|
// Called after a process interval.
|
|
|
|
|
const int64_t kProcessIntervalMs =
|
|
|
|
|
vcm::VCMProcessTimer::kDefaultProcessIntervalMs;
|
|
|
|
|
EXPECT_CALL(bitrate_observer, OnBitrateAllocationUpdated(expected_bitrate))
|
|
|
|
|
.Times(1);
|
2019-02-21 21:19:53 +01:00
|
|
|
const int64_t start_time_ms = rtc::TimeMillis();
|
|
|
|
|
while (rtc::TimeMillis() - start_time_ms < kProcessIntervalMs) {
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(rtc::TimeMillis(), codec_width_, codec_height_));
|
|
|
|
|
WaitForEncodedFrame(rtc::TimeMillis());
|
2019-04-17 12:11:20 +02:00
|
|
|
fake_clock_.AdvanceTime(TimeDelta::ms(1) / kDefaultFps);
|
2019-02-21 21:19:53 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Since rates are unchanged, encoder should not be reconfigured.
|
|
|
|
|
EXPECT_FALSE(fake_encoder_.GetAndResetLastBitrateAllocation().has_value());
|
2017-01-16 06:24:02 -08:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-01-16 06:24:02 -08:00
|
|
|
}
|
|
|
|
|
|
2019-03-25 12:06:59 +01:00
|
|
|
TEST_F(VideoStreamEncoderTest, TemporalLayersNotDisabledIfSupported) {
|
|
|
|
|
// 2 TLs configured, temporal layers supported by encoder.
|
|
|
|
|
const int kNumTemporalLayers = 2;
|
|
|
|
|
ResetEncoder("VP8", 1, kNumTemporalLayers, 1, /*screenshare*/ false);
|
|
|
|
|
fake_encoder_.SetTemporalLayersSupported(0, true);
|
|
|
|
|
|
|
|
|
|
// Bitrate allocated across temporal layers.
|
|
|
|
|
const int kTl0Bps = kTargetBitrateBps *
|
|
|
|
|
webrtc::SimulcastRateAllocator::GetTemporalRateAllocation(
|
|
|
|
|
kNumTemporalLayers, /*temporal_id*/ 0);
|
|
|
|
|
const int kTl1Bps = kTargetBitrateBps *
|
|
|
|
|
webrtc::SimulcastRateAllocator::GetTemporalRateAllocation(
|
|
|
|
|
kNumTemporalLayers, /*temporal_id*/ 1);
|
|
|
|
|
VideoBitrateAllocation expected_bitrate;
|
|
|
|
|
expected_bitrate.SetBitrate(/*si*/ 0, /*ti*/ 0, kTl0Bps);
|
|
|
|
|
expected_bitrate.SetBitrate(/*si*/ 0, /*ti*/ 1, kTl1Bps - kTl0Bps);
|
|
|
|
|
|
|
|
|
|
VerifyAllocatedBitrate(expected_bitrate);
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest, TemporalLayersDisabledIfNotSupported) {
|
|
|
|
|
// 2 TLs configured, temporal layers not supported by encoder.
|
|
|
|
|
ResetEncoder("VP8", 1, /*num_temporal_layers*/ 2, 1, /*screenshare*/ false);
|
|
|
|
|
fake_encoder_.SetTemporalLayersSupported(0, false);
|
|
|
|
|
|
|
|
|
|
// Temporal layers not supported by the encoder.
|
|
|
|
|
// Total bitrate should be at ti:0.
|
|
|
|
|
VideoBitrateAllocation expected_bitrate;
|
|
|
|
|
expected_bitrate.SetBitrate(/*si*/ 0, /*ti*/ 0, kTargetBitrateBps);
|
|
|
|
|
|
|
|
|
|
VerifyAllocatedBitrate(expected_bitrate);
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest, VerifyBitrateAllocationForTwoStreams) {
|
|
|
|
|
// 2 TLs configured, temporal layers only supported for first stream.
|
|
|
|
|
ResetEncoder("VP8", 2, /*num_temporal_layers*/ 2, 1, /*screenshare*/ false);
|
|
|
|
|
fake_encoder_.SetTemporalLayersSupported(0, true);
|
|
|
|
|
fake_encoder_.SetTemporalLayersSupported(1, false);
|
|
|
|
|
|
|
|
|
|
const int kS0Bps = 150000;
|
|
|
|
|
const int kS0Tl0Bps =
|
|
|
|
|
kS0Bps * webrtc::SimulcastRateAllocator::GetTemporalRateAllocation(
|
|
|
|
|
/*num_layers*/ 2, /*temporal_id*/ 0);
|
|
|
|
|
const int kS0Tl1Bps =
|
|
|
|
|
kS0Bps * webrtc::SimulcastRateAllocator::GetTemporalRateAllocation(
|
|
|
|
|
/*num_layers*/ 2, /*temporal_id*/ 1);
|
|
|
|
|
const int kS1Bps = kTargetBitrateBps - kS0Tl1Bps;
|
|
|
|
|
// Temporal layers not supported by si:1.
|
|
|
|
|
VideoBitrateAllocation expected_bitrate;
|
|
|
|
|
expected_bitrate.SetBitrate(/*si*/ 0, /*ti*/ 0, kS0Tl0Bps);
|
|
|
|
|
expected_bitrate.SetBitrate(/*si*/ 0, /*ti*/ 1, kS0Tl1Bps - kS0Tl0Bps);
|
|
|
|
|
expected_bitrate.SetBitrate(/*si*/ 1, /*ti*/ 0, kS1Bps);
|
|
|
|
|
|
|
|
|
|
VerifyAllocatedBitrate(expected_bitrate);
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-06 10:27:48 +01:00
|
|
|
TEST_F(VideoStreamEncoderTest, OveruseDetectorUpdatedOnReconfigureAndAdaption) {
|
|
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
const int kFramerate = 24;
|
|
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-12-06 10:27:48 +01:00
|
|
|
test::FrameForwarder source;
|
|
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
2017-12-06 10:27:48 +01:00
|
|
|
|
|
|
|
|
// Insert a single frame, triggering initial configuration.
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
|
|
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ(
|
|
|
|
|
video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
|
|
|
|
kDefaultFramerate);
|
|
|
|
|
|
|
|
|
|
// Trigger reconfigure encoder (without resetting the entire instance).
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
Reland "Reland "Move rtp-specific config out of EncoderSettings.""
This reverts commit 6c2c13af06b32778b86950681758a7970d1c5d9e.
Reason for revert: Intend to investigate and fix perf problems.
Original change's description:
> Revert "Reland "Move rtp-specific config out of EncoderSettings.""
>
> This reverts commit 04dd1768625eb2241d1fb97fd0137897e703e266.
>
> Reason for revert: Regression in ramp up perf tests.
>
> Original change's description:
> > Reland "Move rtp-specific config out of EncoderSettings."
> >
> > This is a reland of bc900cb1d1810fcf678fe41cf1e3966daa39c88c
> >
> > Original change's description:
> > > Move rtp-specific config out of EncoderSettings.
> > >
> > > In VideoSendStream::Config, move payload_name and payload_type from
> > > EncoderSettings to Rtp.
> > >
> > > EncoderSettings now contains configuration for VideoStreamEncoder only,
> > > and should perhaps be renamed in a follow up cl. It's no longer
> > > passed as an argument to VideoCodecInitializer::SetupCodec.
> > >
> > > The latter then needs a different way to know the codec type,
> > > which is provided by a new codec_type member in VideoEncoderConfig.
> > >
> > > Bug: webrtc:8830
> > > Change-Id: Ifcc691aef1ee6a95e43c0452c5e630d92a511cd6
> > > Reviewed-on: https://webrtc-review.googlesource.com/62062
> > > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > > Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> > > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#22532}
> >
> > Bug: webrtc:8830
> > Change-Id: If88ef7d57cdaa4fae3c7b2a97ea5a6e1b833e019
> > Reviewed-on: https://webrtc-review.googlesource.com/63721
> > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#22595}
>
> TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
>
> Bug: webrtc:8830,chromium:827080
> Change-Id: Iaaf146de91ec5c0d741b8efdf143f7e173084fef
> Reviewed-on: https://webrtc-review.googlesource.com/65520
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22677}
TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:8830, chromium:827080
Change-Id: I9b62987bf5daced90dfeb3ebb6739c80117c487f
Reviewed-on: https://webrtc-review.googlesource.com/66862
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22751}
2018-04-05 15:36:51 +02:00
|
|
|
video_encoder_config.codec_type = kVideoCodecVP8;
|
2017-12-06 10:27:48 +01:00
|
|
|
video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
|
|
|
|
|
video_encoder_config.number_of_streams = 1;
|
|
|
|
|
video_encoder_config.video_stream_factory =
|
|
|
|
|
new rtc::RefCountedObject<VideoStreamFactory>(1, kFramerate);
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
2018-04-26 09:51:47 +02:00
|
|
|
kMaxPayloadLength);
|
2017-12-06 10:27:48 +01:00
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
|
|
|
|
|
|
|
// Detector should be updated with fps limit from codec config.
|
|
|
|
|
EXPECT_EQ(
|
|
|
|
|
video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
|
|
|
|
kFramerate);
|
|
|
|
|
|
|
|
|
|
// Trigger overuse, max framerate should be reduced.
|
|
|
|
|
VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
|
|
|
|
stats.input_frame_rate = kFramerate;
|
|
|
|
|
stats_proxy_->SetMockStats(stats);
|
|
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
|
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
|
|
int adapted_framerate =
|
|
|
|
|
video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate();
|
|
|
|
|
EXPECT_LT(adapted_framerate, kFramerate);
|
|
|
|
|
|
|
|
|
|
// Trigger underuse, max framerate should go back to codec configured fps.
|
|
|
|
|
// Set extra low fps, to make sure it's actually reset, not just incremented.
|
|
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
stats.input_frame_rate = adapted_framerate / 2;
|
|
|
|
|
stats_proxy_->SetMockStats(stats);
|
|
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
|
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
|
|
EXPECT_EQ(
|
|
|
|
|
video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
|
|
|
|
kFramerate);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
OveruseDetectorUpdatedRespectsFramerateAfterUnderuse) {
|
|
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
const int kLowFramerate = 15;
|
|
|
|
|
const int kHighFramerate = 25;
|
|
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-12-06 10:27:48 +01:00
|
|
|
test::FrameForwarder source;
|
|
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
2017-12-06 10:27:48 +01:00
|
|
|
|
|
|
|
|
// Trigger initial configuration.
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
Reland "Reland "Move rtp-specific config out of EncoderSettings.""
This reverts commit 6c2c13af06b32778b86950681758a7970d1c5d9e.
Reason for revert: Intend to investigate and fix perf problems.
Original change's description:
> Revert "Reland "Move rtp-specific config out of EncoderSettings.""
>
> This reverts commit 04dd1768625eb2241d1fb97fd0137897e703e266.
>
> Reason for revert: Regression in ramp up perf tests.
>
> Original change's description:
> > Reland "Move rtp-specific config out of EncoderSettings."
> >
> > This is a reland of bc900cb1d1810fcf678fe41cf1e3966daa39c88c
> >
> > Original change's description:
> > > Move rtp-specific config out of EncoderSettings.
> > >
> > > In VideoSendStream::Config, move payload_name and payload_type from
> > > EncoderSettings to Rtp.
> > >
> > > EncoderSettings now contains configuration for VideoStreamEncoder only,
> > > and should perhaps be renamed in a follow up cl. It's no longer
> > > passed as an argument to VideoCodecInitializer::SetupCodec.
> > >
> > > The latter then needs a different way to know the codec type,
> > > which is provided by a new codec_type member in VideoEncoderConfig.
> > >
> > > Bug: webrtc:8830
> > > Change-Id: Ifcc691aef1ee6a95e43c0452c5e630d92a511cd6
> > > Reviewed-on: https://webrtc-review.googlesource.com/62062
> > > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > > Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> > > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#22532}
> >
> > Bug: webrtc:8830
> > Change-Id: If88ef7d57cdaa4fae3c7b2a97ea5a6e1b833e019
> > Reviewed-on: https://webrtc-review.googlesource.com/63721
> > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#22595}
>
> TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
>
> Bug: webrtc:8830,chromium:827080
> Change-Id: Iaaf146de91ec5c0d741b8efdf143f7e173084fef
> Reviewed-on: https://webrtc-review.googlesource.com/65520
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22677}
TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:8830, chromium:827080
Change-Id: I9b62987bf5daced90dfeb3ebb6739c80117c487f
Reviewed-on: https://webrtc-review.googlesource.com/66862
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22751}
2018-04-05 15:36:51 +02:00
|
|
|
video_encoder_config.codec_type = kVideoCodecVP8;
|
2017-12-06 10:27:48 +01:00
|
|
|
video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
|
|
|
|
|
video_encoder_config.number_of_streams = 1;
|
|
|
|
|
video_encoder_config.video_stream_factory =
|
|
|
|
|
new rtc::RefCountedObject<VideoStreamFactory>(1, kLowFramerate);
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
2018-04-26 09:51:47 +02:00
|
|
|
kMaxPayloadLength);
|
2017-12-06 10:27:48 +01:00
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ(
|
|
|
|
|
video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
|
|
|
|
kLowFramerate);
|
|
|
|
|
|
|
|
|
|
// Trigger overuse, max framerate should be reduced.
|
|
|
|
|
VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
|
|
|
|
stats.input_frame_rate = kLowFramerate;
|
|
|
|
|
stats_proxy_->SetMockStats(stats);
|
|
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
|
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
|
|
int adapted_framerate =
|
|
|
|
|
video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate();
|
|
|
|
|
EXPECT_LT(adapted_framerate, kLowFramerate);
|
|
|
|
|
|
|
|
|
|
// Reconfigure the encoder with a new (higher max framerate), max fps should
|
|
|
|
|
// still respect the adaptation.
|
|
|
|
|
video_encoder_config.video_stream_factory =
|
|
|
|
|
new rtc::RefCountedObject<VideoStreamFactory>(1, kHighFramerate);
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
2018-04-26 09:51:47 +02:00
|
|
|
kMaxPayloadLength);
|
2017-12-06 10:27:48 +01:00
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ(
|
|
|
|
|
video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
|
|
|
|
adapted_framerate);
|
|
|
|
|
|
|
|
|
|
// Trigger underuse, max framerate should go back to codec configured fps.
|
|
|
|
|
stats = stats_proxy_->GetStats();
|
|
|
|
|
stats.input_frame_rate = adapted_framerate;
|
|
|
|
|
stats_proxy_->SetMockStats(stats);
|
|
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
|
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
|
|
EXPECT_EQ(
|
|
|
|
|
video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
|
|
|
|
kHighFramerate);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
OveruseDetectorUpdatedOnDegradationPreferenceChange) {
|
2017-06-15 04:21:07 -07:00
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
const int kFramerate = 24;
|
|
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-15 04:21:07 -07:00
|
|
|
test::FrameForwarder source;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&source, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
2017-06-15 04:21:07 -07:00
|
|
|
|
|
|
|
|
// Trigger initial configuration.
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
Reland "Reland "Move rtp-specific config out of EncoderSettings.""
This reverts commit 6c2c13af06b32778b86950681758a7970d1c5d9e.
Reason for revert: Intend to investigate and fix perf problems.
Original change's description:
> Revert "Reland "Move rtp-specific config out of EncoderSettings.""
>
> This reverts commit 04dd1768625eb2241d1fb97fd0137897e703e266.
>
> Reason for revert: Regression in ramp up perf tests.
>
> Original change's description:
> > Reland "Move rtp-specific config out of EncoderSettings."
> >
> > This is a reland of bc900cb1d1810fcf678fe41cf1e3966daa39c88c
> >
> > Original change's description:
> > > Move rtp-specific config out of EncoderSettings.
> > >
> > > In VideoSendStream::Config, move payload_name and payload_type from
> > > EncoderSettings to Rtp.
> > >
> > > EncoderSettings now contains configuration for VideoStreamEncoder only,
> > > and should perhaps be renamed in a follow up cl. It's no longer
> > > passed as an argument to VideoCodecInitializer::SetupCodec.
> > >
> > > The latter then needs a different way to know the codec type,
> > > which is provided by a new codec_type member in VideoEncoderConfig.
> > >
> > > Bug: webrtc:8830
> > > Change-Id: Ifcc691aef1ee6a95e43c0452c5e630d92a511cd6
> > > Reviewed-on: https://webrtc-review.googlesource.com/62062
> > > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > > Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> > > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#22532}
> >
> > Bug: webrtc:8830
> > Change-Id: If88ef7d57cdaa4fae3c7b2a97ea5a6e1b833e019
> > Reviewed-on: https://webrtc-review.googlesource.com/63721
> > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#22595}
>
> TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
>
> Bug: webrtc:8830,chromium:827080
> Change-Id: Iaaf146de91ec5c0d741b8efdf143f7e173084fef
> Reviewed-on: https://webrtc-review.googlesource.com/65520
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22677}
TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:8830, chromium:827080
Change-Id: I9b62987bf5daced90dfeb3ebb6739c80117c487f
Reviewed-on: https://webrtc-review.googlesource.com/66862
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22751}
2018-04-05 15:36:51 +02:00
|
|
|
video_encoder_config.codec_type = kVideoCodecVP8;
|
2017-06-15 04:21:07 -07:00
|
|
|
video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
|
|
|
|
|
video_encoder_config.number_of_streams = 1;
|
|
|
|
|
video_encoder_config.video_stream_factory =
|
|
|
|
|
new rtc::RefCountedObject<VideoStreamFactory>(1, kFramerate);
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kFrameWidth, kFrameHeight));
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
2018-04-26 09:51:47 +02:00
|
|
|
kMaxPayloadLength);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
2017-06-15 04:21:07 -07:00
|
|
|
|
2017-12-06 10:27:48 +01:00
|
|
|
EXPECT_EQ(
|
|
|
|
|
video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
|
|
|
|
kFramerate);
|
2017-06-15 04:21:07 -07:00
|
|
|
|
|
|
|
|
// Trigger overuse, max framerate should be reduced.
|
|
|
|
|
VideoSendStream::Stats stats = stats_proxy_->GetStats();
|
|
|
|
|
stats.input_frame_rate = kFramerate;
|
|
|
|
|
stats_proxy_->SetMockStats(stats);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
|
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
2017-12-06 10:27:48 +01:00
|
|
|
int adapted_framerate =
|
|
|
|
|
video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate();
|
2017-06-15 04:21:07 -07:00
|
|
|
EXPECT_LT(adapted_framerate, kFramerate);
|
|
|
|
|
|
|
|
|
|
// Change degradation preference to not enable framerate scaling. Target
|
|
|
|
|
// framerate should be changed to codec defined limit.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
2017-12-06 10:27:48 +01:00
|
|
|
EXPECT_EQ(
|
|
|
|
|
video_stream_encoder_->overuse_detector_proxy_->GetLastTargetFramerate(),
|
|
|
|
|
kFramerate);
|
2017-06-15 04:21:07 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-15 04:21:07 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, DropsFramesAndScalesWhenBitrateIsTooLow) {
|
2017-04-04 05:51:49 -07:00
|
|
|
const int kTooLowBitrateForFrameSizeBps = 10000;
|
2019-03-06 15:37:33 +01:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
2019-04-08 15:14:01 +02:00
|
|
|
DataRate::bps(kTooLowBitrateForFrameSizeBps),
|
|
|
|
|
DataRate::bps(kTooLowBitrateForFrameSizeBps), 0, 0);
|
2017-04-04 05:51:49 -07:00
|
|
|
const int kWidth = 640;
|
|
|
|
|
const int kHeight = 360;
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
|
|
|
|
// Expect to drop this frame, the wait should time out.
|
2017-06-27 07:06:52 -07:00
|
|
|
ExpectDroppedFrame();
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
|
|
|
|
// Expect the sink_wants to specify a scaled frame.
|
2017-04-07 00:57:58 -07:00
|
|
|
EXPECT_LT(video_source_.sink_wants().max_pixel_count, kWidth * kHeight);
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
int last_pixel_count = video_source_.sink_wants().max_pixel_count;
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Next frame is scaled.
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
video_source_.IncomingCapturedFrame(
|
2017-04-04 05:51:49 -07:00
|
|
|
CreateFrame(2, kWidth * 3 / 4, kHeight * 3 / 4));
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
|
|
|
|
// Expect to drop this frame, the wait should time out.
|
2017-06-27 07:06:52 -07:00
|
|
|
ExpectDroppedFrame();
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
EXPECT_LT(video_source_.sink_wants().max_pixel_count, last_pixel_count);
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
NumberOfDroppedFramesLimitedWhenBitrateIsTooLow) {
|
2017-04-04 05:51:49 -07:00
|
|
|
const int kTooLowBitrateForFrameSizeBps = 10000;
|
2019-03-06 15:37:33 +01:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
2019-04-08 15:14:01 +02:00
|
|
|
DataRate::bps(kTooLowBitrateForFrameSizeBps),
|
|
|
|
|
DataRate::bps(kTooLowBitrateForFrameSizeBps), 0, 0);
|
2017-04-04 05:51:49 -07:00
|
|
|
const int kWidth = 640;
|
|
|
|
|
const int kHeight = 360;
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
|
|
|
|
// We expect the n initial frames to get dropped.
|
|
|
|
|
int i;
|
|
|
|
|
for (i = 1; i <= kMaxInitialFramedrop; ++i) {
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(i, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
ExpectDroppedFrame();
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
}
|
|
|
|
|
// The n+1th frame should not be dropped, even though it's size is too large.
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(i, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(i);
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
|
|
|
|
// Expect the sink_wants to specify a scaled frame.
|
2017-04-04 05:51:49 -07:00
|
|
|
EXPECT_LT(video_source_.sink_wants().max_pixel_count, kWidth * kHeight);
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
InitialFrameDropOffWithMaintainResolutionPreference) {
|
2017-04-04 05:51:49 -07:00
|
|
|
const int kWidth = 640;
|
|
|
|
|
const int kHeight = 360;
|
2019-03-06 15:37:33 +01:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(DataRate::bps(kLowTargetBitrateBps),
|
2019-04-08 15:14:01 +02:00
|
|
|
DataRate::bps(kLowTargetBitrateBps),
|
|
|
|
|
0, 0);
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
|
|
|
|
// Set degradation preference.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&video_source_, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
// Frame should not be dropped, even if it's too large.
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
Reland of Drop frames until specified bitrate is achieved. (patchset #1 id:1 of https://codereview.webrtc.org/2666303002/ )
Reason for revert:
Perf test broke as it made assumptions that quality scaling was turned off. This turns out not to be the case. Fixed by turning quality scaling off for the tests.
Original issue's description:
> Revert of Drop frames until specified bitrate is achieved. (patchset #12 id:240001 of https://codereview.webrtc.org/2630333002/ )
>
> Reason for revert:
> due to failures on perf tests (not on perf stats, but fails running due to dcheck failures), see e.g., https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20(K%20Nexus5)
>
> Original issue's description:
> > Drop frames until specified bitrate is achieved.
> >
> > This CL fixes a regression introduced with the new quality scaler
> > where the video would no longer start in a scaled mode. This CL adds
> > code that compares incoming captured frames to the target bitrate,
> > and if they are found to be too large, they are dropped and sinkWants
> > set to a lower resolution. The number of dropped frames should be low
> > (0-4 in most cases) and should not introduce a noticeable delay, or
> > at least should be preferrable to having the first 2-4 seconds of video
> > have very low quality.
> >
> > BUG=webrtc:6953
> >
> > Review-Url: https://codereview.webrtc.org/2630333002
> > Cr-Commit-Position: refs/heads/master@{#16391}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/83399caec5762d2dad038b8e9d86163e92c18c9f
>
> TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,kthelgason@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6953
>
> Review-Url: https://codereview.webrtc.org/2666303002
> Cr-Commit-Position: refs/heads/master@{#16395}
> Committed: https://chromium.googlesource.com/external/webrtc/+/35fc2aa82fb5a562f3f76f2b91a55f05ebfd4874
TBR=perkj@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,minyue@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6953
Review-Url: https://codereview.webrtc.org/2675223002
Cr-Commit-Position: refs/heads/master@{#16473}
2017-02-07 07:02:22 -08:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, InitialFrameDropOffWhenEncoderDisabledScaling) {
|
2017-04-04 05:51:49 -07:00
|
|
|
const int kWidth = 640;
|
|
|
|
|
const int kHeight = 360;
|
2017-02-14 00:46:51 -08:00
|
|
|
fake_encoder_.SetQualityScaling(false);
|
2018-04-19 09:04:13 +02:00
|
|
|
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
|
|
|
|
test::FillEncoderConfiguration(kVideoCodecVP8, 1, &video_encoder_config);
|
|
|
|
|
// Make format different, to force recreation of encoder.
|
|
|
|
|
video_encoder_config.video_format.parameters["foo"] = "foo";
|
|
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
2018-04-26 09:51:47 +02:00
|
|
|
kMaxPayloadLength);
|
2019-03-06 15:37:33 +01:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(DataRate::bps(kLowTargetBitrateBps),
|
2019-04-08 15:14:01 +02:00
|
|
|
DataRate::bps(kLowTargetBitrateBps),
|
|
|
|
|
0, 0);
|
2017-05-15 23:40:18 -07:00
|
|
|
|
2017-02-14 11:57:25 -08:00
|
|
|
// Force quality scaler reconfiguration by resetting the source.
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&video_source_,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
2017-02-14 00:46:51 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
2017-02-14 00:46:51 -08:00
|
|
|
// Frame should not be dropped, even if it's too large.
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2017-02-14 00:46:51 -08:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-02-14 00:46:51 -08:00
|
|
|
fake_encoder_.SetQualityScaling(true);
|
|
|
|
|
}
|
|
|
|
|
|
2018-08-02 10:51:40 +02:00
|
|
|
TEST_F(VideoStreamEncoderTest, InitialFrameDropActivatesWhenBWEstimateReady) {
|
|
|
|
|
webrtc::test::ScopedFieldTrials field_trials(
|
|
|
|
|
"WebRTC-InitialFramedrop/Enabled/");
|
|
|
|
|
// Reset encoder for field trials to take effect.
|
|
|
|
|
ConfigureEncoder(video_encoder_config_.Copy());
|
|
|
|
|
const int kTooLowBitrateForFrameSizeBps = 10000;
|
|
|
|
|
const int kWidth = 640;
|
|
|
|
|
const int kHeight = 360;
|
|
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2018-08-02 10:51:40 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
|
|
|
|
// Frame should not be dropped.
|
|
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
|
2019-03-06 15:37:33 +01:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
2019-04-08 15:14:01 +02:00
|
|
|
DataRate::bps(kTooLowBitrateForFrameSizeBps),
|
|
|
|
|
DataRate::bps(kTooLowBitrateForFrameSizeBps), 0, 0);
|
2018-08-02 10:51:40 +02:00
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
|
|
|
|
// Expect to drop this frame, the wait should time out.
|
|
|
|
|
ExpectDroppedFrame();
|
|
|
|
|
|
|
|
|
|
// Expect the sink_wants to specify a scaled frame.
|
|
|
|
|
EXPECT_LT(video_source_.sink_wants().max_pixel_count, kWidth * kHeight);
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2019-08-02 09:29:58 +02:00
|
|
|
TEST_F(VideoStreamEncoderTest, InitialFrameDropActivatesWhenBweDrops) {
|
|
|
|
|
webrtc::test::ScopedFieldTrials field_trials(
|
|
|
|
|
"WebRTC-Video-QualityScalerSettings/"
|
|
|
|
|
"initial_bitrate_interval_ms:1000,initial_bitrate_factor:0.2/");
|
|
|
|
|
// Reset encoder for field trials to take effect.
|
|
|
|
|
ConfigureEncoder(video_encoder_config_.Copy());
|
|
|
|
|
const int kNotTooLowBitrateForFrameSizeBps = kTargetBitrateBps * 0.2;
|
|
|
|
|
const int kTooLowBitrateForFrameSizeBps = kTargetBitrateBps * 0.19;
|
|
|
|
|
const int kWidth = 640;
|
|
|
|
|
const int kHeight = 360;
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
|
|
|
|
|
// Frame should not be dropped.
|
|
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kNotTooLowBitrateForFrameSizeBps),
|
|
|
|
|
DataRate::bps(kNotTooLowBitrateForFrameSizeBps), 0, 0);
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
|
|
|
|
|
// Frame should not be dropped.
|
|
|
|
|
WaitForEncodedFrame(2);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTooLowBitrateForFrameSizeBps),
|
|
|
|
|
DataRate::bps(kTooLowBitrateForFrameSizeBps), 0, 0);
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
|
|
|
|
|
// Expect to drop this frame, the wait should time out.
|
|
|
|
|
ExpectDroppedFrame();
|
|
|
|
|
|
|
|
|
|
// Expect the sink_wants to specify a scaled frame.
|
|
|
|
|
EXPECT_LT(video_source_.sink_wants().max_pixel_count, kWidth * kHeight);
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
2017-04-21 01:47:31 -07:00
|
|
|
ResolutionNotAdaptedForTooSmallFrame_MaintainFramerateMode) {
|
|
|
|
|
const int kTooSmallWidth = 10;
|
|
|
|
|
const int kTooSmallHeight = 10;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-04-21 01:47:31 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable MAINTAIN_FRAMERATE preference, no initial limitation.
|
2017-04-21 01:47:31 -07:00
|
|
|
test::FrameForwarder source;
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
|
2017-04-21 01:47:31 -07:00
|
|
|
VerifyNoLimitation(source.sink_wants());
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, too small frame, expect no change.
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kTooSmallWidth, kTooSmallHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-04-21 01:47:31 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-04-21 01:47:31 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
ResolutionNotAdaptedForTooSmallFrame_BalancedMode) {
|
2017-06-13 23:25:22 -07:00
|
|
|
const int kTooSmallWidth = 10;
|
|
|
|
|
const int kTooSmallHeight = 10;
|
|
|
|
|
const int kFpsLimit = 7;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable BALANCED preference, no initial limitation.
|
2017-06-13 23:25:22 -07:00
|
|
|
test::FrameForwarder source;
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&source,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyNoLimitation(source.sink_wants());
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect limited framerate.
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(1, kTooSmallWidth, kTooSmallHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(1);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsEqResolutionMax(source.sink_wants(), kFpsLimit);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, too small frame, expect no change.
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(2, kTooSmallWidth, kTooSmallHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(2);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsEqResolutionMax(source.sink_wants(), kFpsLimit);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-13 23:25:22 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, FailingInitEncodeDoesntCauseCrash) {
|
2017-04-10 01:12:52 -07:00
|
|
|
fake_encoder_.ForceInitEncodeFailure(true);
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2018-04-26 09:51:47 +02:00
|
|
|
ResetEncoder("VP8", 2, 1, 1, false);
|
2017-04-10 01:12:52 -07:00
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(1, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
ExpectDroppedFrame();
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-04-10 01:12:52 -07:00
|
|
|
}
|
|
|
|
|
|
2017-02-01 08:38:12 -08:00
|
|
|
// TODO(sprang): Extend this with fps throttling and any "balanced" extensions.
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
AdaptsResolutionOnOveruse_MaintainFramerateMode) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-02-01 08:38:12 -08:00
|
|
|
|
|
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
// Enabled default VideoAdapter downscaling. First step is 3/4, not 3/5 as
|
2017-08-03 08:27:51 -07:00
|
|
|
// requested by
|
|
|
|
|
// VideoStreamEncoder::VideoSourceProxy::RequestResolutionLowerThan().
|
2017-02-01 08:38:12 -08:00
|
|
|
video_source_.set_adaptation_enabled(true);
|
|
|
|
|
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
2018-09-13 10:42:19 +02:00
|
|
|
CreateFrame(1 * kFrameIntervalMs, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kFrameWidth, kFrameHeight);
|
2017-02-01 08:38:12 -08:00
|
|
|
|
|
|
|
|
// Trigger CPU overuse, downscale by 3/4.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2017-02-01 08:38:12 -08:00
|
|
|
video_source_.IncomingCapturedFrame(
|
2018-09-13 10:42:19 +02:00
|
|
|
CreateFrame(2 * kFrameIntervalMs, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame((kFrameWidth * 3) / 4, (kFrameHeight * 3) / 4);
|
2017-02-01 08:38:12 -08:00
|
|
|
|
2017-04-04 05:51:49 -07:00
|
|
|
// Trigger CPU normal use, return to original resolution.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2017-02-01 08:38:12 -08:00
|
|
|
video_source_.IncomingCapturedFrame(
|
2018-09-13 10:42:19 +02:00
|
|
|
CreateFrame(3 * kFrameIntervalMs, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kFrameWidth, kFrameHeight);
|
2017-02-01 08:38:12 -08:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-02-01 08:38:12 -08:00
|
|
|
}
|
2017-03-29 08:24:59 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
AdaptsFramerateOnOveruse_MaintainResolutionMode) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&video_source_, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
video_source_.set_adaptation_enabled(true);
|
|
|
|
|
|
2017-06-27 07:06:52 -07:00
|
|
|
int64_t timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
|
|
|
|
|
// Try to trigger overuse. No fps estimate available => no effect.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
|
|
|
|
|
// Insert frames for one second to get a stable estimate.
|
2017-06-27 07:06:52 -07:00
|
|
|
for (int i = 0; i < max_framerate_; ++i) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Trigger CPU overuse, reduce framerate by 2/3.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
int num_frames_dropped = 0;
|
2017-06-27 07:06:52 -07:00
|
|
|
for (int i = 0; i < max_framerate_; ++i) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
if (!WaitForFrame(kFrameTimeoutMs)) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
++num_frames_dropped;
|
|
|
|
|
} else {
|
2017-12-04 14:13:56 +01:00
|
|
|
sink_.CheckLastFrameSizeMatches(kFrameWidth, kFrameHeight);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-06-27 07:06:52 -07:00
|
|
|
// Add some slack to account for frames dropped by the frame dropper.
|
|
|
|
|
const int kErrorMargin = 1;
|
|
|
|
|
EXPECT_NEAR(num_frames_dropped, max_framerate_ - (max_framerate_ * 2 / 3),
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
kErrorMargin);
|
|
|
|
|
|
|
|
|
|
// Trigger CPU overuse, reduce framerate by 2/3 again.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
num_frames_dropped = 0;
|
2018-09-13 10:42:19 +02:00
|
|
|
for (int i = 0; i <= max_framerate_; ++i) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
if (!WaitForFrame(kFrameTimeoutMs)) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
++num_frames_dropped;
|
|
|
|
|
} else {
|
2017-12-04 14:13:56 +01:00
|
|
|
sink_.CheckLastFrameSizeMatches(kFrameWidth, kFrameHeight);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
}
|
|
|
|
|
}
|
2017-06-27 07:06:52 -07:00
|
|
|
EXPECT_NEAR(num_frames_dropped, max_framerate_ - (max_framerate_ * 4 / 9),
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
kErrorMargin);
|
|
|
|
|
|
|
|
|
|
// Go back up one step.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
num_frames_dropped = 0;
|
2017-06-27 07:06:52 -07:00
|
|
|
for (int i = 0; i < max_framerate_; ++i) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
if (!WaitForFrame(kFrameTimeoutMs)) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
++num_frames_dropped;
|
|
|
|
|
} else {
|
2017-12-04 14:13:56 +01:00
|
|
|
sink_.CheckLastFrameSizeMatches(kFrameWidth, kFrameHeight);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
}
|
|
|
|
|
}
|
2017-06-27 07:06:52 -07:00
|
|
|
EXPECT_NEAR(num_frames_dropped, max_framerate_ - (max_framerate_ * 2 / 3),
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
kErrorMargin);
|
|
|
|
|
|
|
|
|
|
// Go back up to original mode.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
num_frames_dropped = 0;
|
2017-06-27 07:06:52 -07:00
|
|
|
for (int i = 0; i < max_framerate_; ++i) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
if (!WaitForFrame(kFrameTimeoutMs)) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
++num_frames_dropped;
|
|
|
|
|
} else {
|
2017-12-04 14:13:56 +01:00
|
|
|
sink_.CheckLastFrameSizeMatches(kFrameWidth, kFrameHeight);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
EXPECT_NEAR(num_frames_dropped, 0, kErrorMargin);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, DoesntAdaptDownPastMinFramerate) {
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
const int kFramerateFps = 5;
|
|
|
|
|
const int kFrameIntervalMs = rtc::kNumMillisecsPerSec / kFramerateFps;
|
|
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
|
2017-06-27 07:06:52 -07:00
|
|
|
// Reconfigure encoder with two temporal layers and screensharing, which will
|
|
|
|
|
// disable frame dropping and make testing easier.
|
2018-04-26 09:51:47 +02:00
|
|
|
ResetEncoder("VP8", 1, 2, 1, true);
|
2017-06-27 07:06:52 -07:00
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->SetSource(
|
2018-05-16 14:20:41 -07:00
|
|
|
&video_source_, webrtc::DegradationPreference::MAINTAIN_RESOLUTION);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
video_source_.set_adaptation_enabled(true);
|
|
|
|
|
|
2017-06-27 07:06:52 -07:00
|
|
|
int64_t timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
|
|
|
|
|
// Trigger overuse as much as we can.
|
2017-12-08 17:04:29 -08:00
|
|
|
rtc::VideoSinkWants last_wants;
|
|
|
|
|
do {
|
|
|
|
|
last_wants = video_source_.sink_wants();
|
|
|
|
|
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
// Insert frames to get a new fps estimate...
|
|
|
|
|
for (int j = 0; j < kFramerateFps; ++j) {
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
2017-12-08 17:04:29 -08:00
|
|
|
if (video_source_.last_sent_width()) {
|
|
|
|
|
sink_.WaitForEncodedFrame(timestamp_ms);
|
|
|
|
|
}
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
2019-04-17 12:11:20 +02:00
|
|
|
fake_clock_.AdvanceTime(TimeDelta::ms(kFrameIntervalMs));
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
}
|
|
|
|
|
// ...and then try to adapt again.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2017-12-08 17:04:29 -08:00
|
|
|
} while (video_source_.sink_wants().max_framerate_fps <
|
|
|
|
|
last_wants.max_framerate_fps);
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
|
2017-12-08 17:04:29 -08:00
|
|
|
VerifyFpsEqResolutionMax(video_source_.sink_wants(), kMinFramerateFps);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-13 23:25:22 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
AdaptsResolutionAndFramerateForLowQuality_BalancedMode) {
|
2017-06-13 23:25:22 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
|
|
|
|
const int64_t kFrameIntervalMs = 150;
|
|
|
|
|
int64_t timestamp_ms = kFrameIntervalMs;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable BALANCED preference, no initial limitation.
|
2017-06-13 23:25:22 -07:00
|
|
|
AdaptingFrameForwarder source;
|
|
|
|
|
source.set_adaptation_enabled(true);
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&source,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution (960x540@30fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution (640x360@30fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect reduced fps (640x360@15fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsLtResolutionEq(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(3, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution (480x270@15fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsEqResolutionLt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(4, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Restrict bitrate, trigger adapt down, expect reduced fps (480x270@10fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsLtResolutionEq(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(5, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect scaled down resolution (320x180@10fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsEqResolutionLt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(6, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect reduced fps (320x180@7fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsLtResolutionEq(source.sink_wants(), source.last_wants());
|
|
|
|
|
rtc::VideoSinkWants last_wants = source.sink_wants();
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(7, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, min resolution reached, expect no change.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsEqResolutionEq(source.sink_wants(), last_wants);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(7, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt down, expect expect increased fps (320x180@10fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsGtResolutionEq(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(8, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect upscaled resolution (480x270@10fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsEqResolutionGt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(9, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Increase bitrate, trigger adapt up, expect increased fps (480x270@15fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsGtResolutionEq(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(10, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect upscaled resolution (640x360@15fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsEqResolutionGt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(11, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect increased fps (640x360@30fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionEq(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(12, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect upscaled resolution (960x540@30fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(13, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no restriction (1280x720fps@30fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kWidth, kHeight);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_EQ(14, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no change.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_EQ(14, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-13 23:25:22 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, AdaptWithTwoReasonsAndDifferentOrder_Framerate) {
|
2017-06-13 23:25:22 -07:00
|
|
|
const int kWidth = 1280;
|
|
|
|
|
const int kHeight = 720;
|
|
|
|
|
const int64_t kFrameIntervalMs = 150;
|
|
|
|
|
int64_t timestamp_ms = kFrameIntervalMs;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable BALANCED preference, no initial limitation.
|
2017-06-13 23:25:22 -07:00
|
|
|
AdaptingFrameForwarder source;
|
|
|
|
|
source.set_adaptation_enabled(true);
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&source,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger cpu adapt down, expect scaled down resolution (960x540@30fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), kWidth * kHeight);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger cpu adapt down, expect scaled down resolution (640x360@30fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionLt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger quality adapt down, expect reduced fps (640x360@15fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsLtResolutionEq(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger cpu adapt up, expect increased fps (640x360@30fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionEq(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(3, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger quality adapt up, expect upscaled resolution (960x540@30fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(3, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger cpu adapt up, expect no restriction (1280x720fps@30fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kWidth, kHeight);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsMaxResolutionGt(source.sink_wants(), source.last_wants());
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(4, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no change.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_EQ(4, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-13 23:25:22 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
AdaptWithTwoReasonsAndDifferentOrder_Resolution) {
|
2017-06-13 23:25:22 -07:00
|
|
|
const int kWidth = 640;
|
|
|
|
|
const int kHeight = 360;
|
|
|
|
|
const int kFpsLimit = 15;
|
|
|
|
|
const int64_t kFrameIntervalMs = 150;
|
|
|
|
|
int64_t timestamp_ms = kFrameIntervalMs;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2018-05-16 14:20:41 -07:00
|
|
|
// Enable BALANCED preference, no initial limitation.
|
2017-06-13 23:25:22 -07:00
|
|
|
AdaptingFrameForwarder source;
|
|
|
|
|
source.set_adaptation_enabled(true);
|
2018-05-16 14:20:41 -07:00
|
|
|
video_stream_encoder_->SetSource(&source,
|
|
|
|
|
webrtc::DegradationPreference::BALANCED);
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kWidth, kHeight);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger cpu adapt down, expect scaled down framerate (640x360@15fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsEqResolutionMax(source.sink_wants(), kFpsLimit);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(0, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger quality adapt down, expect scaled down resolution (480x270@15fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityLow();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsEqResolutionLt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger cpu adapt up, expect upscaled resolution (640x360@15fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuNormalUsage();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2017-06-13 23:25:22 -07:00
|
|
|
VerifyFpsEqResolutionGt(source.sink_wants(), source.last_wants());
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(1, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger quality adapt up, expect increased fps (640x360@30fps).
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2017-06-13 23:25:22 -07:00
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
source.IncomingCapturedFrame(CreateFrame(timestamp_ms, kWidth, kHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_framerate);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_resolution);
|
|
|
|
|
EXPECT_FALSE(stats_proxy_->GetStats().cpu_limited_framerate);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
|
|
|
|
// Trigger adapt up, expect no change.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerQualityHigh();
|
2018-09-13 10:42:19 +02:00
|
|
|
VerifyFpsMaxResolutionMax(source.sink_wants());
|
2017-06-13 23:25:22 -07:00
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_cpu_adapt_changes);
|
|
|
|
|
EXPECT_EQ(2, stats_proxy_->GetStats().number_of_quality_adapt_changes);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2783183003/ )
Reason for revert:
Seem to be a flaky test rather than an issue with this cl. Creating reland, will add code to reduce flakiness to that test.
Original issue's description:
> Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #8 id:410001 of https://codereview.webrtc.org/2781433002/ )
>
> Reason for revert:
> This has resulted in failure of CallPerfTest.ReceivesCpuOveruseAndUnderuse test on the Win7 build bot https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1780
>
> Original issue's description:
> > Reland of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #1 id:1 of https://codereview.webrtc.org/2764133002/ )
> >
> > Reason for revert:
> > Found issue with test case, will add fix to reland cl.
> >
> > Original issue's description:
> > > Revert of Add framerate to VideoSinkWants and ability to signal on overuse (patchset #14 id:250001 of https://codereview.webrtc.org/2716643002/ )
> > >
> > > Reason for revert:
> > > Breaks perf tests:
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Win7/builds/1679
> > > https://build.chromium.org/p/client.webrtc.perf/builders/Android32%20Tests%20%28L%20Nexus5%29/builds/2325
> > >
> > > Original issue's description:
> > > > Add framerate to VideoSinkWants and ability to signal on overuse
> > > >
> > > > In ViEEncoder, try to reduce framerate instead of resolution if the
> > > > current degradation preference is maintain-resolution rather than
> > > > balanced.
> > > >
> > > > BUG=webrtc:4172
> > > >
> > > > Review-Url: https://codereview.webrtc.org/2716643002
> > > > Cr-Commit-Position: refs/heads/master@{#17327}
> > > > Committed: https://chromium.googlesource.com/external/webrtc/+/72acf2526177bb4dbb5103cd6e165eb4361a5ae6
> > >
> > > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,sprang@webrtc.org
> > > # Skipping CQ checks because original CL landed less than 1 days ago.
> > > NOPRESUBMIT=true
> > > NOTREECHECKS=true
> > > NOTRY=true
> > > BUG=webrtc:4172
> > >
> > > Review-Url: https://codereview.webrtc.org/2764133002
> > > Cr-Commit-Position: refs/heads/master@{#17331}
> > > Committed: https://chromium.googlesource.com/external/webrtc/+/8b45b11144c968b4173215c76f78c710c9a2ed0b
> >
> > TBR=nisse@webrtc.org,magjed@webrtc.org,kthelgason@webrtc.org,ilnik@webrtc.org,stefan@webrtc.org,skvlad@webrtc.org
> > # Not skipping CQ checks because original CL landed more than 1 days ago.
> > BUG=webrtc:4172
> >
> > Review-Url: https://codereview.webrtc.org/2781433002
> > Cr-Commit-Position: refs/heads/master@{#17474}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/3ea3c77e93121b1ab9d5e46641e6764f2cca0d51
>
> TBR=ilnik@webrtc.org,stefan@webrtc.org,asapersson@webrtc.org,sprang@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:4172
>
> Review-Url: https://codereview.webrtc.org/2783183003
> Cr-Commit-Position: refs/heads/master@{#17477}
> Committed: https://chromium.googlesource.com/external/webrtc/+/f9ed235c9b7248694edcb46feb1f29ce7456ab59
R=ilnik@webrtc.org,stefan@webrtc.org
BUG=webrtc:4172
Review-Url: https://codereview.webrtc.org/2789823002
Cr-Commit-Position: refs/heads/master@{#17498}
2017-04-02 23:53:04 -07:00
|
|
|
}
|
2017-06-13 23:25:22 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, AcceptsFullHdAdaptedDownSimulcastFrames) {
|
2017-06-16 06:53:48 -07:00
|
|
|
const int kFrameWidth = 1920;
|
|
|
|
|
const int kFrameHeight = 1080;
|
|
|
|
|
// 3/4 of 1920.
|
|
|
|
|
const int kAdaptedFrameWidth = 1440;
|
|
|
|
|
// 3/4 of 1080 rounded down to multiple of 4.
|
|
|
|
|
const int kAdaptedFrameHeight = 808;
|
|
|
|
|
const int kFramerate = 24;
|
|
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-16 06:53:48 -07:00
|
|
|
// Trigger reconfigure encoder (without resetting the entire instance).
|
|
|
|
|
VideoEncoderConfig video_encoder_config;
|
Reland "Reland "Move rtp-specific config out of EncoderSettings.""
This reverts commit 6c2c13af06b32778b86950681758a7970d1c5d9e.
Reason for revert: Intend to investigate and fix perf problems.
Original change's description:
> Revert "Reland "Move rtp-specific config out of EncoderSettings.""
>
> This reverts commit 04dd1768625eb2241d1fb97fd0137897e703e266.
>
> Reason for revert: Regression in ramp up perf tests.
>
> Original change's description:
> > Reland "Move rtp-specific config out of EncoderSettings."
> >
> > This is a reland of bc900cb1d1810fcf678fe41cf1e3966daa39c88c
> >
> > Original change's description:
> > > Move rtp-specific config out of EncoderSettings.
> > >
> > > In VideoSendStream::Config, move payload_name and payload_type from
> > > EncoderSettings to Rtp.
> > >
> > > EncoderSettings now contains configuration for VideoStreamEncoder only,
> > > and should perhaps be renamed in a follow up cl. It's no longer
> > > passed as an argument to VideoCodecInitializer::SetupCodec.
> > >
> > > The latter then needs a different way to know the codec type,
> > > which is provided by a new codec_type member in VideoEncoderConfig.
> > >
> > > Bug: webrtc:8830
> > > Change-Id: Ifcc691aef1ee6a95e43c0452c5e630d92a511cd6
> > > Reviewed-on: https://webrtc-review.googlesource.com/62062
> > > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > > Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> > > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#22532}
> >
> > Bug: webrtc:8830
> > Change-Id: If88ef7d57cdaa4fae3c7b2a97ea5a6e1b833e019
> > Reviewed-on: https://webrtc-review.googlesource.com/63721
> > Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Commit-Queue: Niels Moller <nisse@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#22595}
>
> TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
>
> Bug: webrtc:8830,chromium:827080
> Change-Id: Iaaf146de91ec5c0d741b8efdf143f7e173084fef
> Reviewed-on: https://webrtc-review.googlesource.com/65520
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22677}
TBR=brandtr@webrtc.org,magjed@webrtc.org,nisse@webrtc.org,stefan@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:8830, chromium:827080
Change-Id: I9b62987bf5daced90dfeb3ebb6739c80117c487f
Reviewed-on: https://webrtc-review.googlesource.com/66862
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22751}
2018-04-05 15:36:51 +02:00
|
|
|
video_encoder_config.codec_type = kVideoCodecVP8;
|
2017-06-16 06:53:48 -07:00
|
|
|
video_encoder_config.max_bitrate_bps = kTargetBitrateBps;
|
|
|
|
|
video_encoder_config.number_of_streams = 1;
|
|
|
|
|
video_encoder_config.video_stream_factory =
|
|
|
|
|
new rtc::RefCountedObject<CroppingVideoStreamFactory>(1, kFramerate);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->ConfigureEncoder(std::move(video_encoder_config),
|
2018-04-26 09:51:47 +02:00
|
|
|
kMaxPayloadLength);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
2017-06-16 06:53:48 -07:00
|
|
|
|
|
|
|
|
video_source_.set_adaptation_enabled(true);
|
|
|
|
|
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(1, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kFrameWidth, kFrameHeight);
|
2017-06-16 06:53:48 -07:00
|
|
|
|
|
|
|
|
// Trigger CPU overuse, downscale by 3/4.
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->TriggerCpuOveruse();
|
2017-06-16 06:53:48 -07:00
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(2, kFrameWidth, kFrameHeight));
|
2017-06-27 07:06:52 -07:00
|
|
|
WaitForEncodedFrame(kAdaptedFrameWidth, kAdaptedFrameHeight);
|
2017-06-16 06:53:48 -07:00
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-16 06:53:48 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, PeriodicallyUpdatesChannelParameters) {
|
2017-06-27 07:06:52 -07:00
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
const int kLowFps = 2;
|
|
|
|
|
const int kHighFps = 30;
|
|
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-27 07:06:52 -07:00
|
|
|
|
|
|
|
|
int64_t timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
|
|
|
|
max_framerate_ = kLowFps;
|
|
|
|
|
|
|
|
|
|
// Insert 2 seconds of 2fps video.
|
|
|
|
|
for (int i = 0; i < kLowFps * 2; ++i) {
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
|
|
|
|
timestamp_ms += 1000 / kLowFps;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Make sure encoder is updated with new target.
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-06-27 07:06:52 -07:00
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
|
|
|
|
timestamp_ms += 1000 / kLowFps;
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ(kLowFps, fake_encoder_.GetConfiguredInputFramerate());
|
|
|
|
|
|
|
|
|
|
// Insert 30fps frames for just a little more than the forced update period.
|
|
|
|
|
const int kVcmTimerIntervalFrames =
|
|
|
|
|
(vcm::VCMProcessTimer::kDefaultProcessIntervalMs * kHighFps) / 1000;
|
|
|
|
|
const int kFrameIntervalMs = 1000 / kHighFps;
|
|
|
|
|
max_framerate_ = kHighFps;
|
|
|
|
|
for (int i = 0; i < kVcmTimerIntervalFrames + 2; ++i) {
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
|
|
|
|
// Wait for encoded frame, but skip ahead if it doesn't arrive as it might
|
|
|
|
|
// be dropped if the encoder hans't been updated with the new higher target
|
|
|
|
|
// framerate yet, causing it to overshoot the target bitrate and then
|
|
|
|
|
// suffering the wrath of the media optimizer.
|
|
|
|
|
TimedWaitForEncodedFrame(timestamp_ms, 2 * kFrameIntervalMs);
|
|
|
|
|
timestamp_ms += kFrameIntervalMs;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Don expect correct measurement just yet, but it should be higher than
|
|
|
|
|
// before.
|
|
|
|
|
EXPECT_GT(fake_encoder_.GetConfiguredInputFramerate(), kLowFps);
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-27 07:06:52 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
TEST_F(VideoStreamEncoderTest, DoesNotUpdateBitrateAllocationWhenSuspended) {
|
2017-06-27 07:06:52 -07:00
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
const int kTargetBitrateBps = 1000000;
|
|
|
|
|
|
|
|
|
|
MockBitrateObserver bitrate_observer;
|
2018-05-21 14:09:31 +02:00
|
|
|
video_stream_encoder_->SetBitrateAllocationObserver(&bitrate_observer);
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
2017-06-27 07:06:52 -07:00
|
|
|
|
|
|
|
|
// Insert a first video frame, causes another bitrate update.
|
|
|
|
|
int64_t timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
|
|
|
|
EXPECT_CALL(bitrate_observer, OnBitrateAllocationUpdated(_)).Times(1);
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
|
|
|
|
|
|
|
|
|
// Next, simulate video suspension due to pacer queue overrun.
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(DataRate::bps(0), DataRate::bps(0), 0,
|
2019-03-06 15:37:33 +01:00
|
|
|
1);
|
2017-06-27 07:06:52 -07:00
|
|
|
|
|
|
|
|
// Skip ahead until a new periodic parameter update should have occured.
|
|
|
|
|
timestamp_ms += vcm::VCMProcessTimer::kDefaultProcessIntervalMs;
|
2019-04-17 12:11:20 +02:00
|
|
|
fake_clock_.AdvanceTime(
|
|
|
|
|
TimeDelta::ms(vcm::VCMProcessTimer::kDefaultProcessIntervalMs));
|
2017-06-27 07:06:52 -07:00
|
|
|
|
|
|
|
|
// Bitrate observer should not be called.
|
|
|
|
|
EXPECT_CALL(bitrate_observer, OnBitrateAllocationUpdated(_)).Times(0);
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
|
|
|
|
ExpectDroppedFrame();
|
|
|
|
|
|
2017-08-03 08:27:51 -07:00
|
|
|
video_stream_encoder_->Stop();
|
2017-06-27 07:06:52 -07:00
|
|
|
}
|
2017-06-16 06:53:48 -07:00
|
|
|
|
2018-04-19 09:04:13 +02:00
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
DefaultCpuAdaptationThresholdsForSoftwareEncoder) {
|
|
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
const CpuOveruseOptions default_options;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2018-04-19 09:04:13 +02:00
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(1, kFrameWidth, kFrameHeight));
|
|
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
EXPECT_EQ(video_stream_encoder_->overuse_detector_proxy_->GetOptions()
|
|
|
|
|
.low_encode_usage_threshold_percent,
|
|
|
|
|
default_options.low_encode_usage_threshold_percent);
|
|
|
|
|
EXPECT_EQ(video_stream_encoder_->overuse_detector_proxy_->GetOptions()
|
|
|
|
|
.high_encode_usage_threshold_percent,
|
|
|
|
|
default_options.high_encode_usage_threshold_percent);
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest,
|
|
|
|
|
HigherCpuAdaptationThresholdsForHardwareEncoder) {
|
|
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
CpuOveruseOptions hardware_options;
|
|
|
|
|
hardware_options.low_encode_usage_threshold_percent = 150;
|
|
|
|
|
hardware_options.high_encode_usage_threshold_percent = 200;
|
2019-01-15 12:42:18 +01:00
|
|
|
fake_encoder_.SetIsHardwareAccelerated(true);
|
2018-04-19 09:04:13 +02:00
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2018-04-19 09:04:13 +02:00
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(1, kFrameWidth, kFrameHeight));
|
|
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
EXPECT_EQ(video_stream_encoder_->overuse_detector_proxy_->GetOptions()
|
|
|
|
|
.low_encode_usage_threshold_percent,
|
|
|
|
|
hardware_options.low_encode_usage_threshold_percent);
|
|
|
|
|
EXPECT_EQ(video_stream_encoder_->overuse_detector_proxy_->GetOptions()
|
|
|
|
|
.high_encode_usage_threshold_percent,
|
|
|
|
|
hardware_options.high_encode_usage_threshold_percent);
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2019-01-11 11:11:10 +01:00
|
|
|
TEST_F(VideoStreamEncoderTest, DropsFramesWhenEncoderOvershoots) {
|
|
|
|
|
const int kFrameWidth = 320;
|
|
|
|
|
const int kFrameHeight = 240;
|
|
|
|
|
const int kFps = 30;
|
|
|
|
|
const int kTargetBitrateBps = 120000;
|
|
|
|
|
const int kNumFramesInRun = kFps * 5; // Runs of five seconds.
|
|
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2019-01-11 11:11:10 +01:00
|
|
|
|
|
|
|
|
int64_t timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
|
|
|
|
max_framerate_ = kFps;
|
|
|
|
|
|
|
|
|
|
// Insert 3 seconds of video, verify number of drops with normal bitrate.
|
|
|
|
|
fake_encoder_.SimulateOvershoot(1.0);
|
|
|
|
|
int num_dropped = 0;
|
|
|
|
|
for (int i = 0; i < kNumFramesInRun; ++i) {
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
|
|
|
|
// Wait up to two frame durations for a frame to arrive.
|
|
|
|
|
if (!TimedWaitForEncodedFrame(timestamp_ms, 2 * 1000 / kFps)) {
|
|
|
|
|
++num_dropped;
|
|
|
|
|
}
|
|
|
|
|
timestamp_ms += 1000 / kFps;
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-08 14:17:40 +01:00
|
|
|
// Framerate should be measured to be near the expected target rate.
|
|
|
|
|
EXPECT_NEAR(fake_encoder_.GetLastFramerate(), kFps, 1);
|
|
|
|
|
|
|
|
|
|
// Frame drops should be within 5% of expected 0%.
|
|
|
|
|
EXPECT_NEAR(num_dropped, 0, 5 * kNumFramesInRun / 100);
|
2019-01-11 11:11:10 +01:00
|
|
|
|
|
|
|
|
// Make encoder produce frames at double the expected bitrate during 3 seconds
|
|
|
|
|
// of video, verify number of drops. Rate needs to be slightly changed in
|
|
|
|
|
// order to force the rate to be reconfigured.
|
2019-02-06 16:20:17 +01:00
|
|
|
double overshoot_factor = 2.0;
|
|
|
|
|
if (RateControlSettings::ParseFromFieldTrials().UseEncoderBitrateAdjuster()) {
|
|
|
|
|
// With bitrate adjuster, when need to overshoot even more to trigger
|
|
|
|
|
// frame dropping.
|
|
|
|
|
overshoot_factor *= 2;
|
|
|
|
|
}
|
|
|
|
|
fake_encoder_.SimulateOvershoot(overshoot_factor);
|
2019-03-06 15:37:33 +01:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
2019-04-08 15:14:01 +02:00
|
|
|
DataRate::bps(kTargetBitrateBps + 1000),
|
|
|
|
|
DataRate::bps(kTargetBitrateBps + 1000), 0, 0);
|
2019-01-11 11:11:10 +01:00
|
|
|
num_dropped = 0;
|
|
|
|
|
for (int i = 0; i < kNumFramesInRun; ++i) {
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
|
|
|
|
// Wait up to two frame durations for a frame to arrive.
|
|
|
|
|
if (!TimedWaitForEncodedFrame(timestamp_ms, 2 * 1000 / kFps)) {
|
|
|
|
|
++num_dropped;
|
|
|
|
|
}
|
|
|
|
|
timestamp_ms += 1000 / kFps;
|
|
|
|
|
}
|
|
|
|
|
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2019-02-08 14:17:40 +01:00
|
|
|
|
|
|
|
|
// Target framerate should be still be near the expected target, despite
|
|
|
|
|
// the frame drops.
|
|
|
|
|
EXPECT_NEAR(fake_encoder_.GetLastFramerate(), kFps, 1);
|
|
|
|
|
|
|
|
|
|
// Frame drops should be within 5% of expected 50%.
|
|
|
|
|
EXPECT_NEAR(num_dropped, kNumFramesInRun / 2, 5 * kNumFramesInRun / 100);
|
2019-01-11 11:11:10 +01:00
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest, ConfiguresCorrectFrameRate) {
|
|
|
|
|
const int kFrameWidth = 320;
|
|
|
|
|
const int kFrameHeight = 240;
|
|
|
|
|
const int kActualInputFps = 24;
|
|
|
|
|
const int kTargetBitrateBps = 120000;
|
|
|
|
|
|
|
|
|
|
ASSERT_GT(max_framerate_, kActualInputFps);
|
|
|
|
|
|
|
|
|
|
int64_t timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
|
|
|
|
max_framerate_ = kActualInputFps;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2019-01-11 11:11:10 +01:00
|
|
|
|
|
|
|
|
// Insert 3 seconds of video, with an input fps lower than configured max.
|
|
|
|
|
for (int i = 0; i < kActualInputFps * 3; ++i) {
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight));
|
|
|
|
|
// Wait up to two frame durations for a frame to arrive.
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
|
|
|
|
timestamp_ms += 1000 / kActualInputFps;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EXPECT_NEAR(kActualInputFps, fake_encoder_.GetLastFramerate(), 1);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-18 13:01:26 +01:00
|
|
|
TEST_F(VideoStreamEncoderTest, AccumulatesUpdateRectOnDroppedFrames) {
|
|
|
|
|
VideoFrame::UpdateRect rect;
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2019-02-18 13:01:26 +01:00
|
|
|
|
|
|
|
|
fake_encoder_.BlockNextEncode();
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrameWithUpdatedPixel(1, nullptr, 0));
|
|
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
// On the very first frame full update should be forced.
|
|
|
|
|
rect = fake_encoder_.GetLastUpdateRect();
|
|
|
|
|
EXPECT_EQ(rect.offset_x, 0);
|
|
|
|
|
EXPECT_EQ(rect.offset_y, 0);
|
|
|
|
|
EXPECT_EQ(rect.height, codec_height_);
|
|
|
|
|
EXPECT_EQ(rect.width, codec_width_);
|
|
|
|
|
// Here, the encoder thread will be blocked in the TestEncoder waiting for a
|
|
|
|
|
// call to ContinueEncode.
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrameWithUpdatedPixel(2, nullptr, 1));
|
|
|
|
|
ExpectDroppedFrame();
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrameWithUpdatedPixel(3, nullptr, 10));
|
|
|
|
|
ExpectDroppedFrame();
|
|
|
|
|
fake_encoder_.ContinueEncode();
|
|
|
|
|
WaitForEncodedFrame(3);
|
|
|
|
|
// Updates to pixels 1 and 10 should be accumulated to one 10x1 rect.
|
|
|
|
|
rect = fake_encoder_.GetLastUpdateRect();
|
|
|
|
|
EXPECT_EQ(rect.offset_x, 1);
|
|
|
|
|
EXPECT_EQ(rect.offset_y, 0);
|
|
|
|
|
EXPECT_EQ(rect.width, 10);
|
|
|
|
|
EXPECT_EQ(rect.height, 1);
|
|
|
|
|
|
|
|
|
|
video_source_.IncomingCapturedFrame(
|
|
|
|
|
CreateFrameWithUpdatedPixel(4, nullptr, 0));
|
|
|
|
|
WaitForEncodedFrame(4);
|
|
|
|
|
// Previous frame was encoded, so no accumulation should happen.
|
|
|
|
|
rect = fake_encoder_.GetLastUpdateRect();
|
|
|
|
|
EXPECT_EQ(rect.offset_x, 0);
|
|
|
|
|
EXPECT_EQ(rect.offset_y, 0);
|
|
|
|
|
EXPECT_EQ(rect.width, 1);
|
|
|
|
|
EXPECT_EQ(rect.height, 1);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-21 21:19:53 +01:00
|
|
|
TEST_F(VideoStreamEncoderTest, SetsFrameTypes) {
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2019-02-21 21:19:53 +01:00
|
|
|
|
|
|
|
|
// First frame is always keyframe.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
|
|
|
|
WaitForEncodedFrame(1);
|
2019-03-21 15:43:58 +01:00
|
|
|
EXPECT_THAT(
|
|
|
|
|
fake_encoder_.LastFrameTypes(),
|
2019-04-09 15:11:12 +02:00
|
|
|
::testing::ElementsAre(VideoFrameType{VideoFrameType::kVideoFrameKey}));
|
2019-02-21 21:19:53 +01:00
|
|
|
|
|
|
|
|
// Insert delta frame.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
|
|
|
|
WaitForEncodedFrame(2);
|
2019-03-21 15:43:58 +01:00
|
|
|
EXPECT_THAT(
|
|
|
|
|
fake_encoder_.LastFrameTypes(),
|
2019-04-09 15:11:12 +02:00
|
|
|
::testing::ElementsAre(VideoFrameType{VideoFrameType::kVideoFrameDelta}));
|
2019-02-21 21:19:53 +01:00
|
|
|
|
|
|
|
|
// Request next frame be a key-frame.
|
|
|
|
|
video_stream_encoder_->SendKeyFrame();
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(3, nullptr));
|
|
|
|
|
WaitForEncodedFrame(3);
|
2019-03-21 15:43:58 +01:00
|
|
|
EXPECT_THAT(
|
|
|
|
|
fake_encoder_.LastFrameTypes(),
|
2019-04-09 15:11:12 +02:00
|
|
|
::testing::ElementsAre(VideoFrameType{VideoFrameType::kVideoFrameKey}));
|
2019-02-21 21:19:53 +01:00
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest, SetsFrameTypesSimulcast) {
|
|
|
|
|
// Setup simulcast with three streams.
|
|
|
|
|
ResetEncoder("VP8", 3, 1, 1, false);
|
2019-03-06 15:37:33 +01:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
2019-04-08 15:14:01 +02:00
|
|
|
DataRate::bps(kSimulcastTargetBitrateBps),
|
|
|
|
|
DataRate::bps(kSimulcastTargetBitrateBps), 0, 0);
|
2019-02-21 21:19:53 +01:00
|
|
|
// Wait for all three layers before triggering event.
|
|
|
|
|
sink_.SetNumExpectedLayers(3);
|
|
|
|
|
|
|
|
|
|
// First frame is always keyframe.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(1, nullptr));
|
|
|
|
|
WaitForEncodedFrame(1);
|
|
|
|
|
EXPECT_THAT(fake_encoder_.LastFrameTypes(),
|
2019-04-09 15:11:12 +02:00
|
|
|
::testing::ElementsAreArray({VideoFrameType::kVideoFrameKey,
|
|
|
|
|
VideoFrameType::kVideoFrameKey,
|
|
|
|
|
VideoFrameType::kVideoFrameKey}));
|
2019-02-21 21:19:53 +01:00
|
|
|
|
|
|
|
|
// Insert delta frame.
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(2, nullptr));
|
|
|
|
|
WaitForEncodedFrame(2);
|
|
|
|
|
EXPECT_THAT(fake_encoder_.LastFrameTypes(),
|
2019-04-09 15:11:12 +02:00
|
|
|
::testing::ElementsAreArray({VideoFrameType::kVideoFrameDelta,
|
|
|
|
|
VideoFrameType::kVideoFrameDelta,
|
|
|
|
|
VideoFrameType::kVideoFrameDelta}));
|
2019-02-21 21:19:53 +01:00
|
|
|
|
|
|
|
|
// Request next frame be a key-frame.
|
|
|
|
|
// Only first stream is configured to produce key-frame.
|
|
|
|
|
video_stream_encoder_->SendKeyFrame();
|
|
|
|
|
video_source_.IncomingCapturedFrame(CreateFrame(3, nullptr));
|
|
|
|
|
WaitForEncodedFrame(3);
|
2019-05-13 13:45:39 +02:00
|
|
|
|
|
|
|
|
// TODO(webrtc:10615): Map keyframe request to spatial layer. Currently
|
|
|
|
|
// keyframe request on any layer triggers keyframe on all layers.
|
2019-02-21 21:19:53 +01:00
|
|
|
EXPECT_THAT(fake_encoder_.LastFrameTypes(),
|
2019-04-09 15:11:12 +02:00
|
|
|
::testing::ElementsAreArray({VideoFrameType::kVideoFrameKey,
|
2019-05-13 13:45:39 +02:00
|
|
|
VideoFrameType::kVideoFrameKey,
|
|
|
|
|
VideoFrameType::kVideoFrameKey}));
|
2019-02-21 21:19:53 +01:00
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest, RequestKeyframeInternalSource) {
|
|
|
|
|
// Configure internal source factory and setup test again.
|
|
|
|
|
encoder_factory_.SetHasInternalSource(true);
|
|
|
|
|
ResetEncoder("VP8", 1, 1, 1, false);
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2019-02-21 21:19:53 +01:00
|
|
|
|
|
|
|
|
// Call encoder directly, simulating internal source where encoded frame
|
|
|
|
|
// callback in VideoStreamEncoder is called despite no OnFrame().
|
|
|
|
|
fake_encoder_.InjectFrame(CreateFrame(1, nullptr), true);
|
|
|
|
|
EXPECT_TRUE(WaitForFrame(kDefaultTimeoutMs));
|
2019-03-21 15:43:58 +01:00
|
|
|
EXPECT_THAT(
|
|
|
|
|
fake_encoder_.LastFrameTypes(),
|
2019-04-09 15:11:12 +02:00
|
|
|
::testing::ElementsAre(VideoFrameType{VideoFrameType::kVideoFrameKey}));
|
2019-02-21 21:19:53 +01:00
|
|
|
|
2019-03-21 15:43:58 +01:00
|
|
|
const std::vector<VideoFrameType> kDeltaFrame = {
|
|
|
|
|
VideoFrameType::kVideoFrameDelta};
|
2019-02-21 21:19:53 +01:00
|
|
|
// Need to set timestamp manually since manually for injected frame.
|
|
|
|
|
VideoFrame frame = CreateFrame(101, nullptr);
|
|
|
|
|
frame.set_timestamp(101);
|
|
|
|
|
fake_encoder_.InjectFrame(frame, false);
|
|
|
|
|
EXPECT_TRUE(WaitForFrame(kDefaultTimeoutMs));
|
2019-03-21 15:43:58 +01:00
|
|
|
EXPECT_THAT(
|
|
|
|
|
fake_encoder_.LastFrameTypes(),
|
2019-04-09 15:11:12 +02:00
|
|
|
::testing::ElementsAre(VideoFrameType{VideoFrameType::kVideoFrameDelta}));
|
2019-02-21 21:19:53 +01:00
|
|
|
|
|
|
|
|
// Request key-frame. The forces a dummy frame down into the encoder.
|
|
|
|
|
fake_encoder_.ExpectNullFrame();
|
|
|
|
|
video_stream_encoder_->SendKeyFrame();
|
|
|
|
|
EXPECT_TRUE(WaitForFrame(kDefaultTimeoutMs));
|
2019-03-21 15:43:58 +01:00
|
|
|
EXPECT_THAT(
|
|
|
|
|
fake_encoder_.LastFrameTypes(),
|
2019-04-09 15:11:12 +02:00
|
|
|
::testing::ElementsAre(VideoFrameType{VideoFrameType::kVideoFrameKey}));
|
2019-02-21 21:19:53 +01:00
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
2019-02-26 15:52:33 +01:00
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest, AdjustsTimestampInternalSource) {
|
|
|
|
|
// Configure internal source factory and setup test again.
|
|
|
|
|
encoder_factory_.SetHasInternalSource(true);
|
|
|
|
|
ResetEncoder("VP8", 1, 1, 1, false);
|
2019-04-08 15:14:01 +02:00
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
2019-02-26 15:52:33 +01:00
|
|
|
|
|
|
|
|
int64_t timestamp = 1;
|
|
|
|
|
EncodedImage image;
|
2019-06-18 15:56:56 +02:00
|
|
|
image.SetEncodedData(
|
|
|
|
|
EncodedImageBuffer::Create(kTargetBitrateBps / kDefaultFramerate / 8));
|
2019-02-26 15:52:33 +01:00
|
|
|
image.capture_time_ms_ = ++timestamp;
|
|
|
|
|
image.SetTimestamp(static_cast<uint32_t>(timestamp * 90));
|
|
|
|
|
const int64_t kEncodeFinishDelayMs = 10;
|
|
|
|
|
image.timing_.encode_start_ms = timestamp;
|
|
|
|
|
image.timing_.encode_finish_ms = timestamp + kEncodeFinishDelayMs;
|
|
|
|
|
fake_encoder_.InjectEncodedImage(image);
|
|
|
|
|
// Wait for frame without incrementing clock.
|
|
|
|
|
EXPECT_TRUE(sink_.WaitForFrame(kDefaultTimeoutMs));
|
|
|
|
|
// Frame is captured kEncodeFinishDelayMs before it's encoded, so restored
|
|
|
|
|
// capture timestamp should be kEncodeFinishDelayMs in the past.
|
|
|
|
|
EXPECT_EQ(sink_.GetLastCaptureTimeMs(),
|
|
|
|
|
fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec -
|
|
|
|
|
kEncodeFinishDelayMs);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
2019-05-28 16:30:16 +02:00
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest, DoesNotRewriteH264BitstreamWithOptimalSps) {
|
|
|
|
|
// Configure internal source factory and setup test again.
|
|
|
|
|
encoder_factory_.SetHasInternalSource(true);
|
|
|
|
|
ResetEncoder("H264", 1, 1, 1, false);
|
|
|
|
|
|
|
|
|
|
EncodedImage image(optimal_sps, sizeof(optimal_sps), sizeof(optimal_sps));
|
|
|
|
|
image._frameType = VideoFrameType::kVideoFrameKey;
|
|
|
|
|
|
|
|
|
|
CodecSpecificInfo codec_specific_info;
|
|
|
|
|
codec_specific_info.codecType = kVideoCodecH264;
|
|
|
|
|
|
|
|
|
|
RTPFragmentationHeader fragmentation;
|
|
|
|
|
fragmentation.VerifyAndAllocateFragmentationHeader(1);
|
|
|
|
|
fragmentation.fragmentationOffset[0] = 4;
|
|
|
|
|
fragmentation.fragmentationLength[0] = sizeof(optimal_sps) - 4;
|
|
|
|
|
|
|
|
|
|
fake_encoder_.InjectEncodedImage(image, &codec_specific_info, &fragmentation);
|
|
|
|
|
EXPECT_TRUE(sink_.WaitForFrame(kDefaultTimeoutMs));
|
|
|
|
|
|
|
|
|
|
EXPECT_THAT(sink_.GetLastEncodedImageData(),
|
|
|
|
|
testing::ElementsAreArray(optimal_sps));
|
|
|
|
|
RTPFragmentationHeader last_fragmentation = sink_.GetLastFragmentation();
|
|
|
|
|
ASSERT_THAT(last_fragmentation.fragmentationVectorSize, 1U);
|
|
|
|
|
EXPECT_EQ(last_fragmentation.fragmentationOffset[0], 4U);
|
|
|
|
|
EXPECT_EQ(last_fragmentation.fragmentationLength[0], sizeof(optimal_sps) - 4);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(VideoStreamEncoderTest, RewritesH264BitstreamWithNonOptimalSps) {
|
|
|
|
|
uint8_t original_sps[] = {0, 0, 0, 1, H264::NaluType::kSps,
|
|
|
|
|
0x00, 0x00, 0x03, 0x03, 0xF4,
|
|
|
|
|
0x05, 0x03, 0xC7, 0xC0};
|
|
|
|
|
|
|
|
|
|
// Configure internal source factory and setup test again.
|
|
|
|
|
encoder_factory_.SetHasInternalSource(true);
|
|
|
|
|
ResetEncoder("H264", 1, 1, 1, false);
|
|
|
|
|
|
|
|
|
|
EncodedImage image(original_sps, sizeof(original_sps), sizeof(original_sps));
|
|
|
|
|
image._frameType = VideoFrameType::kVideoFrameKey;
|
|
|
|
|
|
|
|
|
|
CodecSpecificInfo codec_specific_info;
|
|
|
|
|
codec_specific_info.codecType = kVideoCodecH264;
|
|
|
|
|
|
|
|
|
|
RTPFragmentationHeader fragmentation;
|
|
|
|
|
fragmentation.VerifyAndAllocateFragmentationHeader(1);
|
|
|
|
|
fragmentation.fragmentationOffset[0] = 4;
|
|
|
|
|
fragmentation.fragmentationLength[0] = sizeof(original_sps) - 4;
|
|
|
|
|
|
|
|
|
|
fake_encoder_.InjectEncodedImage(image, &codec_specific_info, &fragmentation);
|
|
|
|
|
EXPECT_TRUE(sink_.WaitForFrame(kDefaultTimeoutMs));
|
|
|
|
|
|
|
|
|
|
EXPECT_THAT(sink_.GetLastEncodedImageData(),
|
|
|
|
|
testing::ElementsAreArray(optimal_sps));
|
|
|
|
|
RTPFragmentationHeader last_fragmentation = sink_.GetLastFragmentation();
|
|
|
|
|
ASSERT_THAT(last_fragmentation.fragmentationVectorSize, 1U);
|
|
|
|
|
EXPECT_EQ(last_fragmentation.fragmentationOffset[0], 4U);
|
|
|
|
|
EXPECT_EQ(last_fragmentation.fragmentationLength[0], sizeof(optimal_sps) - 4);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2019-06-04 15:15:14 +02:00
|
|
|
TEST_F(VideoStreamEncoderTest, CopiesVideoFrameMetadataAfterDownscale) {
|
|
|
|
|
const int kFrameWidth = 1280;
|
|
|
|
|
const int kFrameHeight = 720;
|
|
|
|
|
const int kTargetBitrateBps = 300000; // To low for HD resolution.
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->OnBitrateUpdated(
|
|
|
|
|
DataRate::bps(kTargetBitrateBps), DataRate::bps(kTargetBitrateBps), 0, 0);
|
|
|
|
|
video_stream_encoder_->WaitUntilTaskQueueIsIdle();
|
|
|
|
|
|
|
|
|
|
// Insert a first video frame. It should be dropped because of downscale in
|
|
|
|
|
// resolution.
|
|
|
|
|
int64_t timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
|
|
|
|
VideoFrame frame = CreateFrame(timestamp_ms, kFrameWidth, kFrameHeight);
|
|
|
|
|
frame.set_rotation(kVideoRotation_270);
|
|
|
|
|
video_source_.IncomingCapturedFrame(frame);
|
|
|
|
|
|
|
|
|
|
ExpectDroppedFrame();
|
|
|
|
|
|
|
|
|
|
// Second frame is downscaled.
|
|
|
|
|
timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
|
|
|
|
frame = CreateFrame(timestamp_ms, kFrameWidth / 2, kFrameHeight / 2);
|
|
|
|
|
frame.set_rotation(kVideoRotation_90);
|
|
|
|
|
video_source_.IncomingCapturedFrame(frame);
|
|
|
|
|
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
|
|
|
|
sink_.CheckLastFrameRotationMatches(kVideoRotation_90);
|
|
|
|
|
|
|
|
|
|
// Insert another frame, also downscaled.
|
|
|
|
|
timestamp_ms = fake_clock_.TimeNanos() / rtc::kNumNanosecsPerMillisec;
|
|
|
|
|
frame = CreateFrame(timestamp_ms, kFrameWidth / 2, kFrameHeight / 2);
|
|
|
|
|
frame.set_rotation(kVideoRotation_180);
|
|
|
|
|
video_source_.IncomingCapturedFrame(frame);
|
|
|
|
|
|
|
|
|
|
WaitForEncodedFrame(timestamp_ms);
|
|
|
|
|
sink_.CheckLastFrameRotationMatches(kVideoRotation_180);
|
|
|
|
|
|
|
|
|
|
video_stream_encoder_->Stop();
|
|
|
|
|
}
|
|
|
|
|
|
2016-09-01 01:17:40 -07:00
|
|
|
} // namespace webrtc
|