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 |