OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2016 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2016 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 | 10 |
(...skipping 18 matching lines...) Expand all Loading... | |
29 namespace webrtc { | 29 namespace webrtc { |
30 | 30 |
31 namespace { | 31 namespace { |
32 | 32 |
33 std::string RTCCertificateIDFromFingerprint(const std::string& fingerprint) { | 33 std::string RTCCertificateIDFromFingerprint(const std::string& fingerprint) { |
34 return "RTCCertificate_" + fingerprint; | 34 return "RTCCertificate_" + fingerprint; |
35 } | 35 } |
36 | 36 |
37 std::string RTCCodecStatsIDFromDirectionMediaAndPayload( | 37 std::string RTCCodecStatsIDFromDirectionMediaAndPayload( |
38 bool inbound, bool audio, uint32_t payload_type) { | 38 bool inbound, bool audio, uint32_t payload_type) { |
39 // TODO(hbos): When we are able to handle multiple m= lines of the same media | 39 // TODO(hbos): The present codec ID assignment is not sufficient to support |
40 // type (and multiple BaseChannels for the same type is possible?) this needs | 40 // Unified Plan or unbundled connections in all cases. When we are able to |
41 // to be updated to differentiate the transport being used, and stats need to | 41 // handle multiple m= lines of the same media type (and multiple BaseChannels |
42 // be collected for all of them. crbug.com/659117 | 42 // for the same type is possible?) this needs to be updated to differentiate |
43 // the transport being used, and stats need to be collected for all of them. | |
43 if (inbound) { | 44 if (inbound) { |
44 return audio ? "RTCCodec_InboundAudio_" + rtc::ToString<>(payload_type) | 45 return audio ? "RTCCodec_InboundAudio_" + rtc::ToString<>(payload_type) |
45 : "RTCCodec_InboundVideo_" + rtc::ToString<>(payload_type); | 46 : "RTCCodec_InboundVideo_" + rtc::ToString<>(payload_type); |
46 } | 47 } |
47 return audio ? "RTCCodec_OutboundAudio_" + rtc::ToString<>(payload_type) | 48 return audio ? "RTCCodec_OutboundAudio_" + rtc::ToString<>(payload_type) |
48 : "RTCCodec_OutboundVideo_" + rtc::ToString<>(payload_type); | 49 : "RTCCodec_OutboundVideo_" + rtc::ToString<>(payload_type); |
49 } | 50 } |
50 | 51 |
51 std::string RTCIceCandidatePairStatsIDFromConnectionInfo( | 52 std::string RTCIceCandidatePairStatsIDFromConnectionInfo( |
52 const cricket::ConnectionInfo& info) { | 53 const cricket::ConnectionInfo& info) { |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
188 } | 189 } |
189 | 190 |
190 // Provides the media independent counters (both audio and video). | 191 // Provides the media independent counters (both audio and video). |
191 void SetInboundRTPStreamStatsFromMediaReceiverInfo( | 192 void SetInboundRTPStreamStatsFromMediaReceiverInfo( |
192 const cricket::MediaReceiverInfo& media_receiver_info, | 193 const cricket::MediaReceiverInfo& media_receiver_info, |
193 RTCInboundRTPStreamStats* inbound_stats) { | 194 RTCInboundRTPStreamStats* inbound_stats) { |
194 RTC_DCHECK(inbound_stats); | 195 RTC_DCHECK(inbound_stats); |
195 inbound_stats->ssrc = rtc::ToString<>(media_receiver_info.ssrc()); | 196 inbound_stats->ssrc = rtc::ToString<>(media_receiver_info.ssrc()); |
196 // TODO(hbos): Support the remote case. crbug.com/657855 | 197 // TODO(hbos): Support the remote case. crbug.com/657855 |
197 inbound_stats->is_remote = false; | 198 inbound_stats->is_remote = false; |
198 // TODO(hbos): Set |codec_id| when we have |RTCCodecStats|. Maybe relevant: | |
199 // |media_receiver_info.codec_name|. crbug.com/657854, 657855, 659117 | |
hbos
2017/02/03 15:18:32
This is an old TODO that has already been resolved
| |
200 inbound_stats->packets_received = | 199 inbound_stats->packets_received = |
201 static_cast<uint32_t>(media_receiver_info.packets_rcvd); | 200 static_cast<uint32_t>(media_receiver_info.packets_rcvd); |
202 inbound_stats->bytes_received = | 201 inbound_stats->bytes_received = |
203 static_cast<uint64_t>(media_receiver_info.bytes_rcvd); | 202 static_cast<uint64_t>(media_receiver_info.bytes_rcvd); |
204 inbound_stats->packets_lost = | 203 inbound_stats->packets_lost = |
205 static_cast<uint32_t>(media_receiver_info.packets_lost); | 204 static_cast<uint32_t>(media_receiver_info.packets_lost); |
206 inbound_stats->fraction_lost = | 205 inbound_stats->fraction_lost = |
207 static_cast<double>(media_receiver_info.fraction_lost); | 206 static_cast<double>(media_receiver_info.fraction_lost); |
208 } | 207 } |
209 | 208 |
210 void SetInboundRTPStreamStatsFromVoiceReceiverInfo( | 209 void SetInboundRTPStreamStatsFromVoiceReceiverInfo( |
211 const cricket::VoiceReceiverInfo& voice_receiver_info, | 210 const cricket::VoiceReceiverInfo& voice_receiver_info, |
212 RTCInboundRTPStreamStats* inbound_audio) { | 211 RTCInboundRTPStreamStats* inbound_audio) { |
213 SetInboundRTPStreamStatsFromMediaReceiverInfo( | 212 SetInboundRTPStreamStatsFromMediaReceiverInfo( |
214 voice_receiver_info, inbound_audio); | 213 voice_receiver_info, inbound_audio); |
215 inbound_audio->media_type = "audio"; | 214 inbound_audio->media_type = "audio"; |
215 if (voice_receiver_info.codec_payload_type) { | |
216 inbound_audio->codec_id = | |
217 RTCCodecStatsIDFromDirectionMediaAndPayload( | |
218 true, true, *voice_receiver_info.codec_payload_type); | |
219 } | |
hbos
2017/02/03 15:18:32
The refactoring was to move this to here. Previous
| |
216 inbound_audio->jitter = | 220 inbound_audio->jitter = |
217 static_cast<double>(voice_receiver_info.jitter_ms) / | 221 static_cast<double>(voice_receiver_info.jitter_ms) / |
218 rtc::kNumMillisecsPerSec; | 222 rtc::kNumMillisecsPerSec; |
219 // |fir_count|, |pli_count| and |sli_count| are only valid for video and are | 223 // |fir_count|, |pli_count| and |sli_count| are only valid for video and are |
220 // purposefully left undefined for audio. | 224 // purposefully left undefined for audio. |
221 } | 225 } |
222 | 226 |
223 void SetInboundRTPStreamStatsFromVideoReceiverInfo( | 227 void SetInboundRTPStreamStatsFromVideoReceiverInfo( |
224 const cricket::VideoReceiverInfo& video_receiver_info, | 228 const cricket::VideoReceiverInfo& video_receiver_info, |
225 RTCInboundRTPStreamStats* inbound_video) { | 229 RTCInboundRTPStreamStats* inbound_video) { |
226 SetInboundRTPStreamStatsFromMediaReceiverInfo( | 230 SetInboundRTPStreamStatsFromMediaReceiverInfo( |
227 video_receiver_info, inbound_video); | 231 video_receiver_info, inbound_video); |
228 inbound_video->media_type = "video"; | 232 inbound_video->media_type = "video"; |
233 if (video_receiver_info.codec_payload_type) { | |
234 inbound_video->codec_id = | |
235 RTCCodecStatsIDFromDirectionMediaAndPayload( | |
236 true, false, *video_receiver_info.codec_payload_type); | |
237 } | |
229 inbound_video->fir_count = | 238 inbound_video->fir_count = |
230 static_cast<uint32_t>(video_receiver_info.firs_sent); | 239 static_cast<uint32_t>(video_receiver_info.firs_sent); |
231 inbound_video->pli_count = | 240 inbound_video->pli_count = |
232 static_cast<uint32_t>(video_receiver_info.plis_sent); | 241 static_cast<uint32_t>(video_receiver_info.plis_sent); |
233 inbound_video->nack_count = | 242 inbound_video->nack_count = |
234 static_cast<uint32_t>(video_receiver_info.nacks_sent); | 243 static_cast<uint32_t>(video_receiver_info.nacks_sent); |
235 inbound_video->frames_decoded = video_receiver_info.frames_decoded; | 244 inbound_video->frames_decoded = video_receiver_info.frames_decoded; |
236 } | 245 } |
237 | 246 |
238 // Provides the media independent counters (both audio and video). | 247 // Provides the media independent counters (both audio and video). |
239 void SetOutboundRTPStreamStatsFromMediaSenderInfo( | 248 void SetOutboundRTPStreamStatsFromMediaSenderInfo( |
240 const cricket::MediaSenderInfo& media_sender_info, | 249 const cricket::MediaSenderInfo& media_sender_info, |
241 RTCOutboundRTPStreamStats* outbound_stats) { | 250 RTCOutboundRTPStreamStats* outbound_stats) { |
242 RTC_DCHECK(outbound_stats); | 251 RTC_DCHECK(outbound_stats); |
243 outbound_stats->ssrc = rtc::ToString<>(media_sender_info.ssrc()); | 252 outbound_stats->ssrc = rtc::ToString<>(media_sender_info.ssrc()); |
244 // TODO(hbos): Support the remote case. crbug.com/657856 | 253 // TODO(hbos): Support the remote case. crbug.com/657856 |
245 outbound_stats->is_remote = false; | 254 outbound_stats->is_remote = false; |
246 // TODO(hbos): Set |codec_id| when we have |RTCCodecStats|. Maybe relevant: | |
247 // |media_sender_info.codec_name|. crbug.com/657854, 657856, 659117 | |
248 outbound_stats->packets_sent = | 255 outbound_stats->packets_sent = |
249 static_cast<uint32_t>(media_sender_info.packets_sent); | 256 static_cast<uint32_t>(media_sender_info.packets_sent); |
250 outbound_stats->bytes_sent = | 257 outbound_stats->bytes_sent = |
251 static_cast<uint64_t>(media_sender_info.bytes_sent); | 258 static_cast<uint64_t>(media_sender_info.bytes_sent); |
252 if (media_sender_info.rtt_ms >= 0) { | 259 if (media_sender_info.rtt_ms >= 0) { |
253 outbound_stats->round_trip_time = static_cast<double>( | 260 outbound_stats->round_trip_time = static_cast<double>( |
254 media_sender_info.rtt_ms) / rtc::kNumMillisecsPerSec; | 261 media_sender_info.rtt_ms) / rtc::kNumMillisecsPerSec; |
255 } | 262 } |
256 } | 263 } |
257 | 264 |
258 void SetOutboundRTPStreamStatsFromVoiceSenderInfo( | 265 void SetOutboundRTPStreamStatsFromVoiceSenderInfo( |
259 const cricket::VoiceSenderInfo& voice_sender_info, | 266 const cricket::VoiceSenderInfo& voice_sender_info, |
260 RTCOutboundRTPStreamStats* outbound_audio) { | 267 RTCOutboundRTPStreamStats* outbound_audio) { |
261 SetOutboundRTPStreamStatsFromMediaSenderInfo( | 268 SetOutboundRTPStreamStatsFromMediaSenderInfo( |
262 voice_sender_info, outbound_audio); | 269 voice_sender_info, outbound_audio); |
263 outbound_audio->media_type = "audio"; | 270 outbound_audio->media_type = "audio"; |
271 if (voice_sender_info.codec_payload_type) { | |
272 outbound_audio->codec_id = | |
273 RTCCodecStatsIDFromDirectionMediaAndPayload( | |
274 false, true, *voice_sender_info.codec_payload_type); | |
275 } | |
264 // |fir_count|, |pli_count| and |sli_count| are only valid for video and are | 276 // |fir_count|, |pli_count| and |sli_count| are only valid for video and are |
265 // purposefully left undefined for audio. | 277 // purposefully left undefined for audio. |
266 } | 278 } |
267 | 279 |
268 void SetOutboundRTPStreamStatsFromVideoSenderInfo( | 280 void SetOutboundRTPStreamStatsFromVideoSenderInfo( |
269 const cricket::VideoSenderInfo& video_sender_info, | 281 const cricket::VideoSenderInfo& video_sender_info, |
270 RTCOutboundRTPStreamStats* outbound_video) { | 282 RTCOutboundRTPStreamStats* outbound_video) { |
271 SetOutboundRTPStreamStatsFromMediaSenderInfo( | 283 SetOutboundRTPStreamStatsFromMediaSenderInfo( |
272 video_sender_info, outbound_video); | 284 video_sender_info, outbound_video); |
273 outbound_video->media_type = "video"; | 285 outbound_video->media_type = "video"; |
286 if (video_sender_info.codec_payload_type) { | |
287 outbound_video->codec_id = | |
288 RTCCodecStatsIDFromDirectionMediaAndPayload( | |
289 false, false, *video_sender_info.codec_payload_type); | |
290 } | |
274 outbound_video->fir_count = | 291 outbound_video->fir_count = |
275 static_cast<uint32_t>(video_sender_info.firs_rcvd); | 292 static_cast<uint32_t>(video_sender_info.firs_rcvd); |
276 outbound_video->pli_count = | 293 outbound_video->pli_count = |
277 static_cast<uint32_t>(video_sender_info.plis_rcvd); | 294 static_cast<uint32_t>(video_sender_info.plis_rcvd); |
278 outbound_video->nack_count = | 295 outbound_video->nack_count = |
279 static_cast<uint32_t>(video_sender_info.nacks_rcvd); | 296 static_cast<uint32_t>(video_sender_info.nacks_rcvd); |
280 if (video_sender_info.qp_sum) | 297 if (video_sender_info.qp_sum) |
281 outbound_video->qp_sum = *video_sender_info.qp_sum; | 298 outbound_video->qp_sum = *video_sender_info.qp_sum; |
282 outbound_video->frames_encoded = video_sender_info.frames_encoded; | 299 outbound_video->frames_encoded = video_sender_info.frames_encoded; |
283 } | 300 } |
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
931 if (audio_track) { | 948 if (audio_track) { |
932 RTC_DCHECK(track_to_id_.find(audio_track.get()) != track_to_id_.end()); | 949 RTC_DCHECK(track_to_id_.find(audio_track.get()) != track_to_id_.end()); |
933 inbound_audio->track_id = | 950 inbound_audio->track_id = |
934 RTCMediaStreamTrackStatsIDFromTrackKindIDAndSsrc( | 951 RTCMediaStreamTrackStatsIDFromTrackKindIDAndSsrc( |
935 false, | 952 false, |
936 MediaStreamTrackInterface::kAudioKind, | 953 MediaStreamTrackInterface::kAudioKind, |
937 track_to_id_.find(audio_track.get())->second, | 954 track_to_id_.find(audio_track.get())->second, |
938 voice_receiver_info.ssrc()); | 955 voice_receiver_info.ssrc()); |
939 } | 956 } |
940 inbound_audio->transport_id = transport_id; | 957 inbound_audio->transport_id = transport_id; |
941 if (voice_receiver_info.codec_payload_type) { | |
942 inbound_audio->codec_id = | |
943 RTCCodecStatsIDFromDirectionMediaAndPayload( | |
944 true, true, *voice_receiver_info.codec_payload_type); | |
945 } | |
946 report->AddStats(std::move(inbound_audio)); | 958 report->AddStats(std::move(inbound_audio)); |
947 } | 959 } |
948 // Outbound | 960 // Outbound |
949 for (const cricket::VoiceSenderInfo& voice_sender_info : | 961 for (const cricket::VoiceSenderInfo& voice_sender_info : |
950 track_media_info_map.voice_media_info()->senders) { | 962 track_media_info_map.voice_media_info()->senders) { |
951 // TODO(nisse): SSRC == 0 currently means none. Delete check when that | 963 // TODO(nisse): SSRC == 0 currently means none. Delete check when that |
952 // is fixed. | 964 // is fixed. |
953 if (voice_sender_info.ssrc() == 0) | 965 if (voice_sender_info.ssrc() == 0) |
954 continue; | 966 continue; |
955 std::unique_ptr<RTCOutboundRTPStreamStats> outbound_audio( | 967 std::unique_ptr<RTCOutboundRTPStreamStats> outbound_audio( |
956 new RTCOutboundRTPStreamStats( | 968 new RTCOutboundRTPStreamStats( |
957 RTCOutboundRTPStreamStatsIDFromSSRC( | 969 RTCOutboundRTPStreamStatsIDFromSSRC( |
958 true, voice_sender_info.ssrc()), | 970 true, voice_sender_info.ssrc()), |
959 timestamp_us)); | 971 timestamp_us)); |
960 SetOutboundRTPStreamStatsFromVoiceSenderInfo( | 972 SetOutboundRTPStreamStatsFromVoiceSenderInfo( |
961 voice_sender_info, outbound_audio.get()); | 973 voice_sender_info, outbound_audio.get()); |
962 rtc::scoped_refptr<AudioTrackInterface> audio_track = | 974 rtc::scoped_refptr<AudioTrackInterface> audio_track = |
963 track_media_info_map_->GetAudioTrack(voice_sender_info); | 975 track_media_info_map_->GetAudioTrack(voice_sender_info); |
964 if (audio_track) { | 976 if (audio_track) { |
965 RTC_DCHECK(track_to_id_.find(audio_track.get()) != track_to_id_.end()); | 977 RTC_DCHECK(track_to_id_.find(audio_track.get()) != track_to_id_.end()); |
966 outbound_audio->track_id = | 978 outbound_audio->track_id = |
967 RTCMediaStreamTrackStatsIDFromTrackKindIDAndSsrc( | 979 RTCMediaStreamTrackStatsIDFromTrackKindIDAndSsrc( |
968 true, | 980 true, |
969 MediaStreamTrackInterface::kAudioKind, | 981 MediaStreamTrackInterface::kAudioKind, |
970 track_to_id_.find(audio_track.get())->second, | 982 track_to_id_.find(audio_track.get())->second, |
971 voice_sender_info.ssrc()); | 983 voice_sender_info.ssrc()); |
972 } | 984 } |
973 outbound_audio->transport_id = transport_id; | 985 outbound_audio->transport_id = transport_id; |
974 if (voice_sender_info.codec_payload_type) { | |
975 outbound_audio->codec_id = | |
976 RTCCodecStatsIDFromDirectionMediaAndPayload( | |
977 false, true, *voice_sender_info.codec_payload_type); | |
978 } | |
979 report->AddStats(std::move(outbound_audio)); | 986 report->AddStats(std::move(outbound_audio)); |
980 } | 987 } |
981 } | 988 } |
982 // Video | 989 // Video |
983 if (track_media_info_map.video_media_info()) { | 990 if (track_media_info_map.video_media_info()) { |
984 std::string transport_id = RTCTransportStatsIDFromBaseChannel( | 991 std::string transport_id = RTCTransportStatsIDFromBaseChannel( |
985 session_stats.proxy_to_transport, *pc_->session()->video_channel()); | 992 session_stats.proxy_to_transport, *pc_->session()->video_channel()); |
986 RTC_DCHECK(!transport_id.empty()); | 993 RTC_DCHECK(!transport_id.empty()); |
987 // Inbound | 994 // Inbound |
988 for (const cricket::VideoReceiverInfo& video_receiver_info : | 995 for (const cricket::VideoReceiverInfo& video_receiver_info : |
(...skipping 14 matching lines...) Expand all Loading... | |
1003 if (video_track) { | 1010 if (video_track) { |
1004 RTC_DCHECK(track_to_id_.find(video_track.get()) != track_to_id_.end()); | 1011 RTC_DCHECK(track_to_id_.find(video_track.get()) != track_to_id_.end()); |
1005 inbound_video->track_id = | 1012 inbound_video->track_id = |
1006 RTCMediaStreamTrackStatsIDFromTrackKindIDAndSsrc( | 1013 RTCMediaStreamTrackStatsIDFromTrackKindIDAndSsrc( |
1007 false, | 1014 false, |
1008 MediaStreamTrackInterface::kVideoKind, | 1015 MediaStreamTrackInterface::kVideoKind, |
1009 track_to_id_.find(video_track.get())->second, | 1016 track_to_id_.find(video_track.get())->second, |
1010 video_receiver_info.ssrc()); | 1017 video_receiver_info.ssrc()); |
1011 } | 1018 } |
1012 inbound_video->transport_id = transport_id; | 1019 inbound_video->transport_id = transport_id; |
1013 if (video_receiver_info.codec_payload_type) { | |
1014 inbound_video->codec_id = | |
1015 RTCCodecStatsIDFromDirectionMediaAndPayload( | |
1016 true, false, *video_receiver_info.codec_payload_type); | |
1017 } | |
1018 report->AddStats(std::move(inbound_video)); | 1020 report->AddStats(std::move(inbound_video)); |
1019 } | 1021 } |
1020 // Outbound | 1022 // Outbound |
1021 for (const cricket::VideoSenderInfo& video_sender_info : | 1023 for (const cricket::VideoSenderInfo& video_sender_info : |
1022 track_media_info_map.video_media_info()->senders) { | 1024 track_media_info_map.video_media_info()->senders) { |
1023 // TODO(nisse): SSRC == 0 currently means none. Delete check when that | 1025 // TODO(nisse): SSRC == 0 currently means none. Delete check when that |
1024 // is fixed. | 1026 // is fixed. |
1025 if (video_sender_info.ssrc() == 0) | 1027 if (video_sender_info.ssrc() == 0) |
1026 continue; | 1028 continue; |
1027 std::unique_ptr<RTCOutboundRTPStreamStats> outbound_video( | 1029 std::unique_ptr<RTCOutboundRTPStreamStats> outbound_video( |
1028 new RTCOutboundRTPStreamStats( | 1030 new RTCOutboundRTPStreamStats( |
1029 RTCOutboundRTPStreamStatsIDFromSSRC( | 1031 RTCOutboundRTPStreamStatsIDFromSSRC( |
1030 false, video_sender_info.ssrc()), | 1032 false, video_sender_info.ssrc()), |
1031 timestamp_us)); | 1033 timestamp_us)); |
1032 SetOutboundRTPStreamStatsFromVideoSenderInfo( | 1034 SetOutboundRTPStreamStatsFromVideoSenderInfo( |
1033 video_sender_info, outbound_video.get()); | 1035 video_sender_info, outbound_video.get()); |
1034 rtc::scoped_refptr<VideoTrackInterface> video_track = | 1036 rtc::scoped_refptr<VideoTrackInterface> video_track = |
1035 track_media_info_map_->GetVideoTrack(video_sender_info); | 1037 track_media_info_map_->GetVideoTrack(video_sender_info); |
1036 if (video_track) { | 1038 if (video_track) { |
1037 RTC_DCHECK(track_to_id_.find(video_track.get()) != track_to_id_.end()); | 1039 RTC_DCHECK(track_to_id_.find(video_track.get()) != track_to_id_.end()); |
1038 outbound_video->track_id = | 1040 outbound_video->track_id = |
1039 RTCMediaStreamTrackStatsIDFromTrackKindIDAndSsrc( | 1041 RTCMediaStreamTrackStatsIDFromTrackKindIDAndSsrc( |
1040 true, | 1042 true, |
1041 MediaStreamTrackInterface::kVideoKind, | 1043 MediaStreamTrackInterface::kVideoKind, |
1042 track_to_id_.find(video_track.get())->second, | 1044 track_to_id_.find(video_track.get())->second, |
1043 video_sender_info.ssrc()); | 1045 video_sender_info.ssrc()); |
1044 } | 1046 } |
1045 outbound_video->transport_id = transport_id; | 1047 outbound_video->transport_id = transport_id; |
1046 if (video_sender_info.codec_payload_type) { | |
1047 outbound_video->codec_id = | |
1048 RTCCodecStatsIDFromDirectionMediaAndPayload( | |
1049 false, false, *video_sender_info.codec_payload_type); | |
1050 } | |
1051 report->AddStats(std::move(outbound_video)); | 1048 report->AddStats(std::move(outbound_video)); |
1052 } | 1049 } |
1053 } | 1050 } |
1054 } | 1051 } |
1055 | 1052 |
1056 void RTCStatsCollector::ProduceTransportStats_n( | 1053 void RTCStatsCollector::ProduceTransportStats_n( |
1057 int64_t timestamp_us, const SessionStats& session_stats, | 1054 int64_t timestamp_us, const SessionStats& session_stats, |
1058 const std::map<std::string, CertificateStatsPair>& transport_cert_stats, | 1055 const std::map<std::string, CertificateStatsPair>& transport_cert_stats, |
1059 RTCStatsReport* report) const { | 1056 RTCStatsReport* report) const { |
1060 RTC_DCHECK(network_thread_->IsCurrent()); | 1057 RTC_DCHECK(network_thread_->IsCurrent()); |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1222 const std::string& type) { | 1219 const std::string& type) { |
1223 return CandidateTypeToRTCIceCandidateType(type); | 1220 return CandidateTypeToRTCIceCandidateType(type); |
1224 } | 1221 } |
1225 | 1222 |
1226 const char* DataStateToRTCDataChannelStateForTesting( | 1223 const char* DataStateToRTCDataChannelStateForTesting( |
1227 DataChannelInterface::DataState state) { | 1224 DataChannelInterface::DataState state) { |
1228 return DataStateToRTCDataChannelState(state); | 1225 return DataStateToRTCDataChannelState(state); |
1229 } | 1226 } |
1230 | 1227 |
1231 } // namespace webrtc | 1228 } // namespace webrtc |
OLD | NEW |