/* * Copyright (c) 2019 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. */ #include "test/gtest.h" #include "test/peer_scenario/peer_scenario.h" namespace webrtc { namespace test { TEST(PeerScenarioQualityTest, PsnrIsCollected) { VideoQualityAnalyzerConfig analyzer_config; analyzer_config.thread = rtc::Thread::Current(); VideoQualityAnalyzer analyzer(analyzer_config); PeerScenario s(*test_info_); auto caller = s.CreateClient(PeerScenarioClient::Config()); auto callee = s.CreateClient(PeerScenarioClient::Config()); PeerScenarioClient::VideoSendTrackConfig video_conf; video_conf.generator.squares_video->framerate = 20; auto video = caller->CreateVideo("VIDEO", video_conf); auto link_builder = s.net()->NodeBuilder().delay_ms(100).capacity_kbps(600); s.AttachVideoQualityAnalyzer(&analyzer, video.track, callee); s.SimpleConnection(caller, callee, {link_builder.Build().node}, {link_builder.Build().node}); s.ProcessMessages(TimeDelta::seconds(2)); // We expect ca 40 frames to be produced, but to avoid flakiness on slow // machines we only test for 10. EXPECT_GT(analyzer.stats().render.count, 10); EXPECT_GT(analyzer.stats().psnr_with_freeze.Mean(), 20); } } // namespace test } // namespace webrtc