diff options
Diffstat (limited to 'webrtc/video/video_quality_test.h')
-rw-r--r-- | webrtc/video/video_quality_test.h | 49 |
1 files changed, 39 insertions, 10 deletions
diff --git a/webrtc/video/video_quality_test.h b/webrtc/video/video_quality_test.h index 7b62fb3dce..dd2b011cc3 100644 --- a/webrtc/video/video_quality_test.h +++ b/webrtc/video/video_quality_test.h @@ -11,6 +11,7 @@ #define WEBRTC_VIDEO_VIDEO_QUALITY_TEST_H_ #include <string> +#include <vector> #include "webrtc/test/call_test.h" #include "webrtc/test/frame_generator.h" @@ -33,11 +34,11 @@ class VideoQualityTest : public test::CallTest { int target_bitrate_bps; int max_bitrate_bps; std::string codec; - size_t num_temporal_layers; + int num_temporal_layers; + int selected_tl; int min_transmit_bps; Call::Config::BitrateConfig call_bitrate_config; - size_t tl_discard_threshold; bool send_side_bwe; } common; struct { // Video-specific settings. @@ -50,30 +51,56 @@ class VideoQualityTest : public test::CallTest { } screenshare; struct { // Analyzer settings. std::string test_label; - double avg_psnr_threshold; - double avg_ssim_threshold; + double avg_psnr_threshold; // (*) + double avg_ssim_threshold; // (*) int test_durations_secs; std::string graph_data_output_filename; + std::string graph_title; } analyzer; FakeNetworkPipe::Config pipe; bool logs; + struct { // Spatial scalability. + std::vector<VideoStream> streams; // If empty, one stream is assumed. + size_t selected_stream; + int num_spatial_layers; + int selected_sl; + // If empty, bitrates are generated in VP9Impl automatically. + std::vector<SpatialLayer> spatial_layers; + } ss; }; + // (*) Set to -1.1 if generating graph data for simulcast or SVC and the + // selected stream/layer doesn't have the same resolution as the largest + // stream/layer (to ignore the PSNR and SSIM calculation errors). VideoQualityTest(); void RunWithAnalyzer(const Params& params); void RunWithVideoRenderer(const Params& params); + static void FillScalabilitySettings( + Params* params, + const std::vector<std::string>& stream_descriptors, + size_t selected_stream, + int num_spatial_layers, + int selected_sl, + const std::vector<std::string>& sl_descriptors); + protected: // No-op implementation to be able to instantiate this class from non-TEST_F // locations. void TestBody() override; - void CreateCapturer(const Params& params, VideoCaptureInput* input); - void ValidateParams(const Params& params); - void SetupFullStack(const Params& params, - Transport* send_transport, - Transport* recv_transport); - void SetupScreenshare(const Params& params); + // Helper methods accessing only params_. + std::string GenerateGraphTitle() const; + void CheckParams(); + + // Helper static methods. + static VideoStream DefaultVideoStream(const Params& params); + static std::vector<int> ParseCSV(const std::string& str); + + // Helper methods for setting up the call. + void CreateCapturer(VideoCaptureInput* input); + void SetupCommon(Transport* send_transport, Transport* recv_transport); + void SetupScreenshare(); // We need a more general capturer than the FrameGeneratorCapturer. rtc::scoped_ptr<test::VideoCapturer> capturer_; @@ -82,6 +109,8 @@ class VideoQualityTest : public test::CallTest { rtc::scoped_ptr<VideoEncoder> encoder_; VideoCodecUnion codec_settings_; Clock* const clock_; + + Params params_; }; } // namespace webrtc |