Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(375)

Side by Side Diff: webrtc/media/engine/webrtcvoiceengine.cc

Issue 3008373002: Only return stats for the most recent unsignaled audio stream. (Closed)
Patch Set: Only return stats for the most recent unsignaled stream. Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2004 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 2249 matching lines...) Expand 10 before | Expand all | Expand 10 after
2260 sinfo.residual_echo_likelihood_recent_max = 2260 sinfo.residual_echo_likelihood_recent_max =
2261 stats.residual_echo_likelihood_recent_max; 2261 stats.residual_echo_likelihood_recent_max;
2262 sinfo.typing_noise_detected = (send_ ? stats.typing_noise_detected : false); 2262 sinfo.typing_noise_detected = (send_ ? stats.typing_noise_detected : false);
2263 sinfo.ana_statistics = stats.ana_statistics; 2263 sinfo.ana_statistics = stats.ana_statistics;
2264 info->senders.push_back(sinfo); 2264 info->senders.push_back(sinfo);
2265 } 2265 }
2266 2266
2267 // Get SSRC and stats for each receiver. 2267 // Get SSRC and stats for each receiver.
2268 RTC_DCHECK_EQ(info->receivers.size(), 0U); 2268 RTC_DCHECK_EQ(info->receivers.size(), 0U);
2269 for (const auto& stream : recv_streams_) { 2269 for (const auto& stream : recv_streams_) {
2270 uint32_t ssrc = stream.first;
2271 // When SSRCs are unsignaled, there's only one audio MediaStreamTrack, but
2272 // multiple RTP streams can be received over time (if the SSRC changes for
2273 // whatever reason). We only want the RTCMediaStreamTrackStats to represent
2274 // the stats for the most recent stream (the one whose audio is actually
2275 // routed to the MediaStreamTrack), so here we ignore any unsignaled SSRCs
2276 // except for the most recent one (last in the vector). This is somewhat of
2277 // a hack, and means you don't get *any* stats for these inactive streams,
2278 // but it's slightly better than the previous behavior, which was "highest
2279 // SSRC wins".
2280 // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=8158
2281 if (!unsignaled_recv_ssrcs_.empty() &&
2282 std::find(unsignaled_recv_ssrcs_.begin(),
2283 --unsignaled_recv_ssrcs_.end(),
the sun 2017/09/18 18:59:35 nit: I would've done it auto end_it = --unsignale
Taylor Brandstetter 2017/09/20 00:19:45 Can't quite do that since if the list is empty end
2284 ssrc) != --unsignaled_recv_ssrcs_.end()) {
2285 continue;
2286 }
2270 webrtc::AudioReceiveStream::Stats stats = stream.second->GetStats(); 2287 webrtc::AudioReceiveStream::Stats stats = stream.second->GetStats();
2271 VoiceReceiverInfo rinfo; 2288 VoiceReceiverInfo rinfo;
2272 rinfo.add_ssrc(stats.remote_ssrc); 2289 rinfo.add_ssrc(stats.remote_ssrc);
2273 rinfo.bytes_rcvd = stats.bytes_rcvd; 2290 rinfo.bytes_rcvd = stats.bytes_rcvd;
2274 rinfo.packets_rcvd = stats.packets_rcvd; 2291 rinfo.packets_rcvd = stats.packets_rcvd;
2275 rinfo.packets_lost = stats.packets_lost; 2292 rinfo.packets_lost = stats.packets_lost;
2276 rinfo.fraction_lost = stats.fraction_lost; 2293 rinfo.fraction_lost = stats.fraction_lost;
2277 rinfo.codec_name = stats.codec_name; 2294 rinfo.codec_name = stats.codec_name;
2278 rinfo.codec_payload_type = stats.codec_payload_type; 2295 rinfo.codec_payload_type = stats.codec_payload_type;
2279 rinfo.ext_seqnum = stats.ext_seqnum; 2296 rinfo.ext_seqnum = stats.ext_seqnum;
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
2377 ssrc); 2394 ssrc);
2378 if (it != unsignaled_recv_ssrcs_.end()) { 2395 if (it != unsignaled_recv_ssrcs_.end()) {
2379 unsignaled_recv_ssrcs_.erase(it); 2396 unsignaled_recv_ssrcs_.erase(it);
2380 return true; 2397 return true;
2381 } 2398 }
2382 return false; 2399 return false;
2383 } 2400 }
2384 } // namespace cricket 2401 } // namespace cricket
2385 2402
2386 #endif // HAVE_WEBRTC_VOICE 2403 #endif // HAVE_WEBRTC_VOICE
OLDNEW
« no previous file with comments | « no previous file | webrtc/pc/peerconnection_integrationtest.cc » ('j') | webrtc/pc/peerconnection_integrationtest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698