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 |