| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 #include <stdio.h> | 10 #include <stdio.h> |
| (...skipping 776 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 787 if (params_.common.codec == "VP8") { | 787 if (params_.common.codec == "VP8") { |
| 788 encoder_.reset(VideoEncoder::Create(VideoEncoder::kVp8)); | 788 encoder_.reset(VideoEncoder::Create(VideoEncoder::kVp8)); |
| 789 payload_type = kPayloadTypeVP8; | 789 payload_type = kPayloadTypeVP8; |
| 790 } else if (params_.common.codec == "VP9") { | 790 } else if (params_.common.codec == "VP9") { |
| 791 encoder_.reset(VideoEncoder::Create(VideoEncoder::kVp9)); | 791 encoder_.reset(VideoEncoder::Create(VideoEncoder::kVp9)); |
| 792 payload_type = kPayloadTypeVP9; | 792 payload_type = kPayloadTypeVP9; |
| 793 } else { | 793 } else { |
| 794 RTC_NOTREACHED() << "Codec not supported!"; | 794 RTC_NOTREACHED() << "Codec not supported!"; |
| 795 return; | 795 return; |
| 796 } | 796 } |
| 797 send_config_.encoder_settings.encoder = encoder_.get(); | 797 video_send_config_.encoder_settings.encoder = encoder_.get(); |
| 798 send_config_.encoder_settings.payload_name = params_.common.codec; | 798 video_send_config_.encoder_settings.payload_name = params_.common.codec; |
| 799 send_config_.encoder_settings.payload_type = payload_type; | 799 video_send_config_.encoder_settings.payload_type = payload_type; |
| 800 send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 800 video_send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 801 send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; | 801 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; |
| 802 for (size_t i = 0; i < num_streams; ++i) | 802 for (size_t i = 0; i < num_streams; ++i) |
| 803 send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); | 803 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); |
| 804 | 804 |
| 805 send_config_.rtp.extensions.clear(); | 805 video_send_config_.rtp.extensions.clear(); |
| 806 if (params_.common.send_side_bwe) { | 806 if (params_.common.send_side_bwe) { |
| 807 send_config_.rtp.extensions.push_back( | 807 video_send_config_.rtp.extensions.push_back( |
| 808 RtpExtension(RtpExtension::kTransportSequenceNumber, | 808 RtpExtension(RtpExtension::kTransportSequenceNumber, |
| 809 test::kTransportSequenceNumberExtensionId)); | 809 test::kTransportSequenceNumberExtensionId)); |
| 810 } else { | 810 } else { |
| 811 send_config_.rtp.extensions.push_back(RtpExtension( | 811 video_send_config_.rtp.extensions.push_back(RtpExtension( |
| 812 RtpExtension::kAbsSendTime, test::kAbsSendTimeExtensionId)); | 812 RtpExtension::kAbsSendTime, test::kAbsSendTimeExtensionId)); |
| 813 } | 813 } |
| 814 | 814 |
| 815 encoder_config_.min_transmit_bitrate_bps = params_.common.min_transmit_bps; | 815 video_encoder_config_.min_transmit_bitrate_bps = |
| 816 encoder_config_.streams = params_.ss.streams; | 816 params_.common.min_transmit_bps; |
| 817 encoder_config_.spatial_layers = params_.ss.spatial_layers; | 817 video_encoder_config_.streams = params_.ss.streams; |
| 818 video_encoder_config_.spatial_layers = params_.ss.spatial_layers; |
| 818 | 819 |
| 819 CreateMatchingReceiveConfigs(recv_transport); | 820 CreateMatchingReceiveConfigs(recv_transport); |
| 820 | 821 |
| 821 for (size_t i = 0; i < num_streams; ++i) { | 822 for (size_t i = 0; i < num_streams; ++i) { |
| 822 receive_configs_[i].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 823 video_receive_configs_[i].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 823 receive_configs_[i].rtp.rtx[kSendRtxPayloadType].ssrc = kSendRtxSsrcs[i]; | 824 video_receive_configs_[i].rtp.rtx[kSendRtxPayloadType].ssrc = |
| 824 receive_configs_[i].rtp.rtx[kSendRtxPayloadType].payload_type = | 825 kSendRtxSsrcs[i]; |
| 826 video_receive_configs_[i].rtp.rtx[kSendRtxPayloadType].payload_type = |
| 825 kSendRtxPayloadType; | 827 kSendRtxPayloadType; |
| 826 receive_configs_[i].rtp.transport_cc = params_.common.send_side_bwe; | 828 video_receive_configs_[i].rtp.transport_cc = params_.common.send_side_bwe; |
| 827 } | 829 } |
| 828 } | 830 } |
| 829 | 831 |
| 830 void VideoQualityTest::SetupScreenshare() { | 832 void VideoQualityTest::SetupScreenshare() { |
| 831 RTC_CHECK(params_.screenshare.enabled); | 833 RTC_CHECK(params_.screenshare.enabled); |
| 832 | 834 |
| 833 // Fill out codec settings. | 835 // Fill out codec settings. |
| 834 encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen; | 836 video_encoder_config_.content_type = VideoEncoderConfig::ContentType::kScreen; |
| 835 if (params_.common.codec == "VP8") { | 837 if (params_.common.codec == "VP8") { |
| 836 codec_settings_.VP8 = VideoEncoder::GetDefaultVp8Settings(); | 838 codec_settings_.VP8 = VideoEncoder::GetDefaultVp8Settings(); |
| 837 codec_settings_.VP8.denoisingOn = false; | 839 codec_settings_.VP8.denoisingOn = false; |
| 838 codec_settings_.VP8.frameDroppingOn = false; | 840 codec_settings_.VP8.frameDroppingOn = false; |
| 839 codec_settings_.VP8.numberOfTemporalLayers = | 841 codec_settings_.VP8.numberOfTemporalLayers = |
| 840 static_cast<unsigned char>(params_.common.num_temporal_layers); | 842 static_cast<unsigned char>(params_.common.num_temporal_layers); |
| 841 encoder_config_.encoder_specific_settings = &codec_settings_.VP8; | 843 video_encoder_config_.encoder_specific_settings = &codec_settings_.VP8; |
| 842 } else if (params_.common.codec == "VP9") { | 844 } else if (params_.common.codec == "VP9") { |
| 843 codec_settings_.VP9 = VideoEncoder::GetDefaultVp9Settings(); | 845 codec_settings_.VP9 = VideoEncoder::GetDefaultVp9Settings(); |
| 844 codec_settings_.VP9.denoisingOn = false; | 846 codec_settings_.VP9.denoisingOn = false; |
| 845 codec_settings_.VP9.frameDroppingOn = false; | 847 codec_settings_.VP9.frameDroppingOn = false; |
| 846 codec_settings_.VP9.numberOfTemporalLayers = | 848 codec_settings_.VP9.numberOfTemporalLayers = |
| 847 static_cast<unsigned char>(params_.common.num_temporal_layers); | 849 static_cast<unsigned char>(params_.common.num_temporal_layers); |
| 848 encoder_config_.encoder_specific_settings = &codec_settings_.VP9; | 850 video_encoder_config_.encoder_specific_settings = &codec_settings_.VP9; |
| 849 codec_settings_.VP9.numberOfSpatialLayers = | 851 codec_settings_.VP9.numberOfSpatialLayers = |
| 850 static_cast<unsigned char>(params_.ss.num_spatial_layers); | 852 static_cast<unsigned char>(params_.ss.num_spatial_layers); |
| 851 } | 853 } |
| 852 | 854 |
| 853 // Setup frame generator. | 855 // Setup frame generator. |
| 854 const size_t kWidth = 1850; | 856 const size_t kWidth = 1850; |
| 855 const size_t kHeight = 1110; | 857 const size_t kHeight = 1110; |
| 856 std::vector<std::string> slides; | 858 std::vector<std::string> slides; |
| 857 slides.push_back(test::ResourcePath("web_screenshot_1850_1110", "yuv")); | 859 slides.push_back(test::ResourcePath("web_screenshot_1850_1110", "yuv")); |
| 858 slides.push_back(test::ResourcePath("presentation_1850_1110", "yuv")); | 860 slides.push_back(test::ResourcePath("presentation_1850_1110", "yuv")); |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 962 disable_quality_check ? -1.1 : params_.analyzer.avg_ssim_threshold, | 964 disable_quality_check ? -1.1 : params_.analyzer.avg_ssim_threshold, |
| 963 params_.analyzer.test_durations_secs * params_.common.fps, | 965 params_.analyzer.test_durations_secs * params_.common.fps, |
| 964 graph_data_output_file, graph_title, | 966 graph_data_output_file, graph_title, |
| 965 kSendSsrcs[params_.ss.selected_stream]); | 967 kSendSsrcs[params_.ss.selected_stream]); |
| 966 | 968 |
| 967 analyzer.SetReceiver(receiver_call_->Receiver()); | 969 analyzer.SetReceiver(receiver_call_->Receiver()); |
| 968 send_transport.SetReceiver(&analyzer); | 970 send_transport.SetReceiver(&analyzer); |
| 969 recv_transport.SetReceiver(sender_call_->Receiver()); | 971 recv_transport.SetReceiver(sender_call_->Receiver()); |
| 970 | 972 |
| 971 SetupCommon(&analyzer, &recv_transport); | 973 SetupCommon(&analyzer, &recv_transport); |
| 972 send_config_.encoding_time_observer = &analyzer; | 974 video_send_config_.encoding_time_observer = &analyzer; |
| 973 receive_configs_[params_.ss.selected_stream].renderer = &analyzer; | 975 video_receive_configs_[params_.ss.selected_stream].renderer = &analyzer; |
| 974 for (auto& config : receive_configs_) | 976 for (auto& config : video_receive_configs_) |
| 975 config.pre_decode_callback = &analyzer; | 977 config.pre_decode_callback = &analyzer; |
| 976 | 978 |
| 977 if (params_.screenshare.enabled) | 979 if (params_.screenshare.enabled) |
| 978 SetupScreenshare(); | 980 SetupScreenshare(); |
| 979 | 981 |
| 980 CreateStreams(); | 982 CreateStreams(); |
| 981 analyzer.input_ = send_stream_->Input(); | 983 analyzer.input_ = video_send_stream_->Input(); |
| 982 analyzer.send_stream_ = send_stream_; | 984 analyzer.send_stream_ = video_send_stream_; |
| 983 | 985 |
| 984 CreateCapturer(&analyzer); | 986 CreateCapturer(&analyzer); |
| 985 | 987 |
| 986 send_stream_->Start(); | 988 video_send_stream_->Start(); |
| 987 for (size_t i = 0; i < receive_streams_.size(); ++i) | 989 for (VideoReceiveStream* receive_stream : video_receive_streams_) |
| 988 receive_streams_[i]->Start(); | 990 receive_stream->Start(); |
| 989 capturer_->Start(); | 991 capturer_->Start(); |
| 990 | 992 |
| 991 analyzer.Wait(); | 993 analyzer.Wait(); |
| 992 | 994 |
| 993 send_transport.StopSending(); | 995 send_transport.StopSending(); |
| 994 recv_transport.StopSending(); | 996 recv_transport.StopSending(); |
| 995 | 997 |
| 996 capturer_->Stop(); | 998 capturer_->Stop(); |
| 997 for (size_t i = 0; i < receive_streams_.size(); ++i) | 999 for (VideoReceiveStream* receive_stream : video_receive_streams_) |
| 998 receive_streams_[i]->Stop(); | 1000 receive_stream->Stop(); |
| 999 send_stream_->Stop(); | 1001 video_send_stream_->Stop(); |
| 1000 | 1002 |
| 1001 DestroyStreams(); | 1003 DestroyStreams(); |
| 1002 | 1004 |
| 1003 if (graph_data_output_file) | 1005 if (graph_data_output_file) |
| 1004 fclose(graph_data_output_file); | 1006 fclose(graph_data_output_file); |
| 1005 } | 1007 } |
| 1006 | 1008 |
| 1007 void VideoQualityTest::RunWithVideoRenderer(const Params& params) { | 1009 void VideoQualityTest::RunWithVideoRenderer(const Params& params) { |
| 1008 params_ = params; | 1010 params_ = params; |
| 1009 CheckParams(); | 1011 CheckParams(); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1033 test::LayerFilteringTransport transport( | 1035 test::LayerFilteringTransport transport( |
| 1034 params.pipe, call.get(), kPayloadTypeVP8, kPayloadTypeVP9, | 1036 params.pipe, call.get(), kPayloadTypeVP8, kPayloadTypeVP9, |
| 1035 params.common.selected_tl, params_.ss.selected_sl); | 1037 params.common.selected_tl, params_.ss.selected_sl); |
| 1036 // TODO(ivica): Use two calls to be able to merge with RunWithAnalyzer or at | 1038 // TODO(ivica): Use two calls to be able to merge with RunWithAnalyzer or at |
| 1037 // least share as much code as possible. That way this test would also match | 1039 // least share as much code as possible. That way this test would also match |
| 1038 // the full stack tests better. | 1040 // the full stack tests better. |
| 1039 transport.SetReceiver(call->Receiver()); | 1041 transport.SetReceiver(call->Receiver()); |
| 1040 | 1042 |
| 1041 SetupCommon(&transport, &transport); | 1043 SetupCommon(&transport, &transport); |
| 1042 | 1044 |
| 1043 send_config_.local_renderer = local_preview.get(); | 1045 video_send_config_.local_renderer = local_preview.get(); |
| 1044 receive_configs_[stream_id].renderer = loopback_video.get(); | 1046 video_receive_configs_[stream_id].renderer = loopback_video.get(); |
| 1045 | 1047 |
| 1046 if (params_.screenshare.enabled) | 1048 if (params_.screenshare.enabled) |
| 1047 SetupScreenshare(); | 1049 SetupScreenshare(); |
| 1048 | 1050 |
| 1049 send_stream_ = call->CreateVideoSendStream(send_config_, encoder_config_); | 1051 video_send_stream_ = |
| 1052 call->CreateVideoSendStream(video_send_config_, video_encoder_config_); |
| 1050 VideoReceiveStream* receive_stream = | 1053 VideoReceiveStream* receive_stream = |
| 1051 call->CreateVideoReceiveStream(receive_configs_[stream_id]); | 1054 call->CreateVideoReceiveStream(video_receive_configs_[stream_id]); |
| 1052 CreateCapturer(send_stream_->Input()); | 1055 CreateCapturer(video_send_stream_->Input()); |
| 1053 | 1056 |
| 1054 receive_stream->Start(); | 1057 receive_stream->Start(); |
| 1055 send_stream_->Start(); | 1058 video_send_stream_->Start(); |
| 1056 capturer_->Start(); | 1059 capturer_->Start(); |
| 1057 | 1060 |
| 1058 test::PressEnterToContinue(); | 1061 test::PressEnterToContinue(); |
| 1059 | 1062 |
| 1060 capturer_->Stop(); | 1063 capturer_->Stop(); |
| 1061 send_stream_->Stop(); | 1064 video_send_stream_->Stop(); |
| 1062 receive_stream->Stop(); | 1065 receive_stream->Stop(); |
| 1063 | 1066 |
| 1064 call->DestroyVideoReceiveStream(receive_stream); | 1067 call->DestroyVideoReceiveStream(receive_stream); |
| 1065 call->DestroyVideoSendStream(send_stream_); | 1068 call->DestroyVideoSendStream(video_send_stream_); |
| 1066 | 1069 |
| 1067 transport.StopSending(); | 1070 transport.StopSending(); |
| 1068 } | 1071 } |
| 1069 | 1072 |
| 1070 } // namespace webrtc | 1073 } // namespace webrtc |
| OLD | NEW |