Index: webrtc/video/video_quality_test.h |
diff --git a/webrtc/video/video_quality_test.h b/webrtc/video/video_quality_test.h |
index 7b62fb3dceaf2081572a77c766340b76f343ad61..b88c5138539ea966dd8447677b3a4b9a66a57c83 100644 |
--- a/webrtc/video/video_quality_test.h |
+++ b/webrtc/video/video_quality_test.h |
@@ -33,11 +33,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 +50,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 +108,8 @@ class VideoQualityTest : public test::CallTest { |
rtc::scoped_ptr<VideoEncoder> encoder_; |
VideoCodecUnion codec_settings_; |
Clock* const clock_; |
+ |
+ Params params_; |
}; |
} // namespace webrtc |