| 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 "webrtc/video/video_quality_test.h" | 10 #include "webrtc/video/video_quality_test.h" |
| (...skipping 1026 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1037 layer.target_bitrate_bps = v[2]; | 1037 layer.target_bitrate_bps = v[2]; |
| 1038 params->ss.spatial_layers.push_back(layer); | 1038 params->ss.spatial_layers.push_back(layer); |
| 1039 } | 1039 } |
| 1040 } | 1040 } |
| 1041 | 1041 |
| 1042 void VideoQualityTest::SetupVideo(Transport* send_transport, | 1042 void VideoQualityTest::SetupVideo(Transport* send_transport, |
| 1043 Transport* recv_transport) { | 1043 Transport* recv_transport) { |
| 1044 if (params_.logs) | 1044 if (params_.logs) |
| 1045 trace_to_stderr_.reset(new test::TraceToStderr); | 1045 trace_to_stderr_.reset(new test::TraceToStderr); |
| 1046 | 1046 |
| 1047 size_t num_streams = params_.ss.streams.size(); | 1047 size_t num_video_streams = params_.ss.streams.size(); |
| 1048 CreateSendConfig(num_streams, 0, 0, send_transport); | 1048 size_t num_flexfec_streams = params_.video.flexfec ? 1 : 0; |
| 1049 CreateSendConfig(num_video_streams, 0, num_flexfec_streams, send_transport); |
| 1049 | 1050 |
| 1050 int payload_type; | 1051 int payload_type; |
| 1051 if (params_.video.codec == "H264") { | 1052 if (params_.video.codec == "H264") { |
| 1052 video_encoder_.reset(H264Encoder::Create(cricket::VideoCodec("H264"))); | 1053 video_encoder_.reset(H264Encoder::Create(cricket::VideoCodec("H264"))); |
| 1053 payload_type = kPayloadTypeH264; | 1054 payload_type = kPayloadTypeH264; |
| 1054 } else if (params_.video.codec == "VP8") { | 1055 } else if (params_.video.codec == "VP8") { |
| 1055 video_encoder_.reset(VP8Encoder::Create()); | 1056 video_encoder_.reset(VP8Encoder::Create()); |
| 1056 payload_type = kPayloadTypeVP8; | 1057 payload_type = kPayloadTypeVP8; |
| 1057 } else if (params_.video.codec == "VP9") { | 1058 } else if (params_.video.codec == "VP9") { |
| 1058 video_encoder_.reset(VP9Encoder::Create()); | 1059 video_encoder_.reset(VP9Encoder::Create()); |
| 1059 payload_type = kPayloadTypeVP9; | 1060 payload_type = kPayloadTypeVP9; |
| 1060 } else { | 1061 } else { |
| 1061 RTC_NOTREACHED() << "Codec not supported!"; | 1062 RTC_NOTREACHED() << "Codec not supported!"; |
| 1062 return; | 1063 return; |
| 1063 } | 1064 } |
| 1064 video_send_config_.encoder_settings.encoder = video_encoder_.get(); | 1065 video_send_config_.encoder_settings.encoder = video_encoder_.get(); |
| 1065 video_send_config_.encoder_settings.payload_name = params_.video.codec; | 1066 video_send_config_.encoder_settings.payload_name = params_.video.codec; |
| 1066 video_send_config_.encoder_settings.payload_type = payload_type; | 1067 video_send_config_.encoder_settings.payload_type = payload_type; |
| 1067 video_send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 1068 video_send_config_.rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 1068 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; | 1069 video_send_config_.rtp.rtx.payload_type = kSendRtxPayloadType; |
| 1069 for (size_t i = 0; i < num_streams; ++i) | 1070 for (size_t i = 0; i < num_video_streams; ++i) |
| 1070 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); | 1071 video_send_config_.rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[i]); |
| 1071 | 1072 |
| 1072 video_send_config_.rtp.extensions.clear(); | 1073 video_send_config_.rtp.extensions.clear(); |
| 1073 if (params_.call.send_side_bwe) { | 1074 if (params_.call.send_side_bwe) { |
| 1074 video_send_config_.rtp.extensions.push_back( | 1075 video_send_config_.rtp.extensions.push_back( |
| 1075 RtpExtension(RtpExtension::kTransportSequenceNumberUri, | 1076 RtpExtension(RtpExtension::kTransportSequenceNumberUri, |
| 1076 test::kTransportSequenceNumberExtensionId)); | 1077 test::kTransportSequenceNumberExtensionId)); |
| 1077 } else { | 1078 } else { |
| 1078 video_send_config_.rtp.extensions.push_back(RtpExtension( | 1079 video_send_config_.rtp.extensions.push_back(RtpExtension( |
| 1079 RtpExtension::kAbsSendTimeUri, test::kAbsSendTimeExtensionId)); | 1080 RtpExtension::kAbsSendTimeUri, test::kAbsSendTimeExtensionId)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1091 video_encoder_config_.max_bitrate_bps += | 1092 video_encoder_config_.max_bitrate_bps += |
| 1092 params_.ss.streams[i].max_bitrate_bps; | 1093 params_.ss.streams[i].max_bitrate_bps; |
| 1093 } | 1094 } |
| 1094 video_encoder_config_.video_stream_factory = | 1095 video_encoder_config_.video_stream_factory = |
| 1095 new rtc::RefCountedObject<VideoStreamFactory>(params_.ss.streams); | 1096 new rtc::RefCountedObject<VideoStreamFactory>(params_.ss.streams); |
| 1096 | 1097 |
| 1097 video_encoder_config_.spatial_layers = params_.ss.spatial_layers; | 1098 video_encoder_config_.spatial_layers = params_.ss.spatial_layers; |
| 1098 | 1099 |
| 1099 CreateMatchingReceiveConfigs(recv_transport); | 1100 CreateMatchingReceiveConfigs(recv_transport); |
| 1100 | 1101 |
| 1101 for (size_t i = 0; i < num_streams; ++i) { | 1102 for (size_t i = 0; i < num_video_streams; ++i) { |
| 1102 video_receive_configs_[i].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; | 1103 video_receive_configs_[i].rtp.nack.rtp_history_ms = kNackRtpHistoryMs; |
| 1103 video_receive_configs_[i].rtp.rtx[payload_type].ssrc = kSendRtxSsrcs[i]; | 1104 video_receive_configs_[i].rtp.rtx[payload_type].ssrc = kSendRtxSsrcs[i]; |
| 1104 video_receive_configs_[i].rtp.rtx[payload_type].payload_type = | 1105 video_receive_configs_[i].rtp.rtx[payload_type].payload_type = |
| 1105 kSendRtxPayloadType; | 1106 kSendRtxPayloadType; |
| 1106 video_receive_configs_[i].rtp.transport_cc = params_.call.send_side_bwe; | 1107 video_receive_configs_[i].rtp.transport_cc = params_.call.send_side_bwe; |
| 1107 } | 1108 } |
| 1108 | 1109 |
| 1109 if (params_.video.flexfec) { | 1110 if (params_.video.flexfec) { |
| 1110 video_send_config_.rtp.flexfec.flexfec_payload_type = kFlexfecPayloadType; | 1111 // Override send config constructed by CreateSendConfig. |
| 1111 video_send_config_.rtp.flexfec.flexfec_ssrc = kFlexfecSendSsrc; | |
| 1112 video_send_config_.rtp.flexfec.protected_media_ssrcs = { | 1112 video_send_config_.rtp.flexfec.protected_media_ssrcs = { |
| 1113 kVideoSendSsrcs[params_.ss.selected_stream]}; | 1113 kVideoSendSsrcs[params_.ss.selected_stream]}; |
| 1114 | 1114 |
| 1115 FlexfecReceiveStream::Config flexfec_receive_config; | 1115 // The matching receive config is _not_ created by |
| 1116 // CreateMatchingReceiveConfigs, since VideoQualityTest is not a BaseTest. |
| 1117 // Set up the receive config manually instead. |
| 1118 FlexfecReceiveStream::Config flexfec_receive_config(recv_transport); |
| 1116 flexfec_receive_config.payload_type = | 1119 flexfec_receive_config.payload_type = |
| 1117 video_send_config_.rtp.flexfec.flexfec_payload_type; | 1120 video_send_config_.rtp.flexfec.flexfec_payload_type; |
| 1118 flexfec_receive_config.remote_ssrc = | 1121 flexfec_receive_config.remote_ssrc = |
| 1119 video_send_config_.rtp.flexfec.flexfec_ssrc; | 1122 video_send_config_.rtp.flexfec.flexfec_ssrc; |
| 1120 flexfec_receive_config.protected_media_ssrcs = | 1123 flexfec_receive_config.protected_media_ssrcs = |
| 1121 video_send_config_.rtp.flexfec.protected_media_ssrcs; | 1124 video_send_config_.rtp.flexfec.protected_media_ssrcs; |
| 1122 flexfec_receive_config.transport_cc = params_.call.send_side_bwe; | 1125 flexfec_receive_config.transport_cc = params_.call.send_side_bwe; |
| 1123 if (params_.call.send_side_bwe) { | 1126 if (params_.call.send_side_bwe) { |
| 1124 flexfec_receive_config.rtp_header_extensions.push_back( | 1127 flexfec_receive_config.rtp_header_extensions.push_back( |
| 1125 RtpExtension(RtpExtension::kTransportSequenceNumberUri, | 1128 RtpExtension(RtpExtension::kTransportSequenceNumberUri, |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1534 std::ostringstream str; | 1537 std::ostringstream str; |
| 1535 str << receive_logs_++; | 1538 str << receive_logs_++; |
| 1536 std::string path = | 1539 std::string path = |
| 1537 params_.video.encoded_frame_base_path + "." + str.str() + ".recv.ivf"; | 1540 params_.video.encoded_frame_base_path + "." + str.str() + ".recv.ivf"; |
| 1538 stream->EnableEncodedFrameRecording(rtc::CreatePlatformFile(path), | 1541 stream->EnableEncodedFrameRecording(rtc::CreatePlatformFile(path), |
| 1539 10000000); | 1542 10000000); |
| 1540 } | 1543 } |
| 1541 } | 1544 } |
| 1542 | 1545 |
| 1543 } // namespace webrtc | 1546 } // namespace webrtc |
| OLD | NEW |