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

Side by Side Diff: webrtc/logging/rtc_event_log/rtc_event_log_parser.cc

Issue 2353543003: Added logging for audio send/receive stream configs. (Closed)
Patch Set: Another rebase. Created 4 years, 2 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) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 } 97 }
98 RTC_DCHECK(0 <= byte && byte <= 255); 98 RTC_DCHECK(0 <= byte && byte <= 255);
99 varint |= static_cast<uint64_t>(byte & 0x7F) << (7 * bytes_read); 99 varint |= static_cast<uint64_t>(byte & 0x7F) << (7 * bytes_read);
100 if ((byte & 0x80) == 0) { 100 if ((byte & 0x80) == 0) {
101 return std::make_pair(varint, true); 101 return std::make_pair(varint, true);
102 } 102 }
103 } 103 }
104 return std::make_pair(varint, false); 104 return std::make_pair(varint, false);
105 } 105 }
106 106
107 void GetHeaderExtensions(
108 std::vector<RtpExtension>* header_extensions,
109 const google::protobuf::RepeatedPtrField<rtclog::RtpHeaderExtension>&
110 proto_header_extensions) {
111 header_extensions->clear();
112 for (auto& p : proto_header_extensions) {
113 RTC_CHECK(p.has_name());
114 RTC_CHECK(p.has_id());
115 const std::string& name = p.name();
116 int id = p.id();
117 header_extensions->push_back(RtpExtension(name, id));
118 }
119 }
120
107 } // namespace 121 } // namespace
108 122
109 bool ParsedRtcEventLog::ParseFile(const std::string& filename) { 123 bool ParsedRtcEventLog::ParseFile(const std::string& filename) {
110 std::ifstream file(filename, std::ios_base::in | std::ios_base::binary); 124 std::ifstream file(filename, std::ios_base::in | std::ios_base::binary);
111 if (!file.good() || !file.is_open()) { 125 if (!file.good() || !file.is_open()) {
112 LOG(LS_WARNING) << "Could not open file for reading."; 126 LOG(LS_WARNING) << "Could not open file for reading.";
113 return false; 127 return false;
114 } 128 }
115 129
116 return ParseStream(file); 130 return ParseStream(file);
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 RTC_CHECK(map.has_payload_type()); 318 RTC_CHECK(map.has_payload_type());
305 RTC_CHECK(map.has_config()); 319 RTC_CHECK(map.has_config());
306 RTC_CHECK(map.config().has_rtx_ssrc()); 320 RTC_CHECK(map.config().has_rtx_ssrc());
307 RTC_CHECK(map.config().has_rtx_payload_type()); 321 RTC_CHECK(map.config().has_rtx_payload_type());
308 webrtc::VideoReceiveStream::Config::Rtp::Rtx rtx_pair; 322 webrtc::VideoReceiveStream::Config::Rtp::Rtx rtx_pair;
309 rtx_pair.ssrc = map.config().rtx_ssrc(); 323 rtx_pair.ssrc = map.config().rtx_ssrc();
310 rtx_pair.payload_type = map.config().rtx_payload_type(); 324 rtx_pair.payload_type = map.config().rtx_payload_type();
311 config->rtp.rtx.insert(std::make_pair(map.payload_type(), rtx_pair)); 325 config->rtp.rtx.insert(std::make_pair(map.payload_type(), rtx_pair));
312 } 326 }
313 // Get header extensions. 327 // Get header extensions.
314 config->rtp.extensions.clear(); 328 GetHeaderExtensions(&config->rtp.extensions,
315 for (int i = 0; i < receiver_config.header_extensions_size(); i++) { 329 receiver_config.header_extensions());
316 RTC_CHECK(receiver_config.header_extensions(i).has_name());
317 RTC_CHECK(receiver_config.header_extensions(i).has_id());
318 const std::string& name = receiver_config.header_extensions(i).name();
319 int id = receiver_config.header_extensions(i).id();
320 config->rtp.extensions.push_back(RtpExtension(name, id));
321 }
322 // Get decoders. 330 // Get decoders.
323 config->decoders.clear(); 331 config->decoders.clear();
324 for (int i = 0; i < receiver_config.decoders_size(); i++) { 332 for (int i = 0; i < receiver_config.decoders_size(); i++) {
325 RTC_CHECK(receiver_config.decoders(i).has_name()); 333 RTC_CHECK(receiver_config.decoders(i).has_name());
326 RTC_CHECK(receiver_config.decoders(i).has_payload_type()); 334 RTC_CHECK(receiver_config.decoders(i).has_payload_type());
327 VideoReceiveStream::Decoder decoder; 335 VideoReceiveStream::Decoder decoder;
328 decoder.payload_name = receiver_config.decoders(i).name(); 336 decoder.payload_name = receiver_config.decoders(i).name();
329 decoder.payload_type = receiver_config.decoders(i).payload_type(); 337 decoder.payload_type = receiver_config.decoders(i).payload_type();
330 config->decoders.push_back(decoder); 338 config->decoders.push_back(decoder);
331 } 339 }
332 } 340 }
333 341
334 void ParsedRtcEventLog::GetVideoSendConfig( 342 void ParsedRtcEventLog::GetVideoSendConfig(
335 size_t index, 343 size_t index,
336 VideoSendStream::Config* config) const { 344 VideoSendStream::Config* config) const {
337 RTC_CHECK_LT(index, GetNumberOfEvents()); 345 RTC_CHECK_LT(index, GetNumberOfEvents());
338 const rtclog::Event& event = events_[index]; 346 const rtclog::Event& event = events_[index];
339 RTC_CHECK(config != nullptr); 347 RTC_CHECK(config != nullptr);
340 RTC_CHECK(event.has_type()); 348 RTC_CHECK(event.has_type());
341 RTC_CHECK_EQ(event.type(), rtclog::Event::VIDEO_SENDER_CONFIG_EVENT); 349 RTC_CHECK_EQ(event.type(), rtclog::Event::VIDEO_SENDER_CONFIG_EVENT);
342 RTC_CHECK(event.has_video_sender_config()); 350 RTC_CHECK(event.has_video_sender_config());
343 const rtclog::VideoSendConfig& sender_config = event.video_sender_config(); 351 const rtclog::VideoSendConfig& sender_config = event.video_sender_config();
344 // Get SSRCs. 352 // Get SSRCs.
345 config->rtp.ssrcs.clear(); 353 config->rtp.ssrcs.clear();
346 for (int i = 0; i < sender_config.ssrcs_size(); i++) { 354 for (int i = 0; i < sender_config.ssrcs_size(); i++) {
347 config->rtp.ssrcs.push_back(sender_config.ssrcs(i)); 355 config->rtp.ssrcs.push_back(sender_config.ssrcs(i));
348 } 356 }
349 // Get header extensions. 357 // Get header extensions.
350 config->rtp.extensions.clear(); 358 GetHeaderExtensions(&config->rtp.extensions,
351 for (int i = 0; i < sender_config.header_extensions_size(); i++) { 359 sender_config.header_extensions());
352 RTC_CHECK(sender_config.header_extensions(i).has_name());
353 RTC_CHECK(sender_config.header_extensions(i).has_id());
354 const std::string& name = sender_config.header_extensions(i).name();
355 int id = sender_config.header_extensions(i).id();
356 config->rtp.extensions.push_back(RtpExtension(name, id));
357 }
358 // Get RTX settings. 360 // Get RTX settings.
359 config->rtp.rtx.ssrcs.clear(); 361 config->rtp.rtx.ssrcs.clear();
360 for (int i = 0; i < sender_config.rtx_ssrcs_size(); i++) { 362 for (int i = 0; i < sender_config.rtx_ssrcs_size(); i++) {
361 config->rtp.rtx.ssrcs.push_back(sender_config.rtx_ssrcs(i)); 363 config->rtp.rtx.ssrcs.push_back(sender_config.rtx_ssrcs(i));
362 } 364 }
363 if (sender_config.rtx_ssrcs_size() > 0) { 365 if (sender_config.rtx_ssrcs_size() > 0) {
364 RTC_CHECK(sender_config.has_rtx_payload_type()); 366 RTC_CHECK(sender_config.has_rtx_payload_type());
365 config->rtp.rtx.payload_type = sender_config.rtx_payload_type(); 367 config->rtp.rtx.payload_type = sender_config.rtx_payload_type();
366 } else { 368 } else {
367 // Reset RTX payload type default value if no RTX SSRCs are used. 369 // Reset RTX payload type default value if no RTX SSRCs are used.
368 config->rtp.rtx.payload_type = -1; 370 config->rtp.rtx.payload_type = -1;
369 } 371 }
370 // Get encoder. 372 // Get encoder.
371 RTC_CHECK(sender_config.has_encoder()); 373 RTC_CHECK(sender_config.has_encoder());
372 RTC_CHECK(sender_config.encoder().has_name()); 374 RTC_CHECK(sender_config.encoder().has_name());
373 RTC_CHECK(sender_config.encoder().has_payload_type()); 375 RTC_CHECK(sender_config.encoder().has_payload_type());
374 config->encoder_settings.payload_name = sender_config.encoder().name(); 376 config->encoder_settings.payload_name = sender_config.encoder().name();
375 config->encoder_settings.payload_type = 377 config->encoder_settings.payload_type =
376 sender_config.encoder().payload_type(); 378 sender_config.encoder().payload_type();
377 } 379 }
378 380
381 void ParsedRtcEventLog::GetAudioReceiveConfig(
382 size_t index,
383 AudioReceiveStream::Config* config) const {
384 RTC_CHECK_LT(index, GetNumberOfEvents());
385 const rtclog::Event& event = events_[index];
386 RTC_CHECK(config != nullptr);
387 RTC_CHECK(event.has_type());
388 RTC_CHECK_EQ(event.type(), rtclog::Event::AUDIO_RECEIVER_CONFIG_EVENT);
389 RTC_CHECK(event.has_audio_receiver_config());
390 const rtclog::AudioReceiveConfig& receiver_config =
391 event.audio_receiver_config();
392 // Get SSRCs.
393 RTC_CHECK(receiver_config.has_remote_ssrc());
394 config->rtp.remote_ssrc = receiver_config.remote_ssrc();
395 RTC_CHECK(receiver_config.has_local_ssrc());
396 config->rtp.local_ssrc = receiver_config.local_ssrc();
397 // Get header extensions.
398 GetHeaderExtensions(&config->rtp.extensions,
399 receiver_config.header_extensions());
400 }
401
402 void ParsedRtcEventLog::GetAudioSendConfig(
403 size_t index,
404 AudioSendStream::Config* config) const {
405 RTC_CHECK_LT(index, GetNumberOfEvents());
406 const rtclog::Event& event = events_[index];
407 RTC_CHECK(config != nullptr);
408 RTC_CHECK(event.has_type());
409 RTC_CHECK_EQ(event.type(), rtclog::Event::AUDIO_SENDER_CONFIG_EVENT);
410 RTC_CHECK(event.has_audio_sender_config());
411 const rtclog::AudioSendConfig& sender_config = event.audio_sender_config();
412 // Get SSRCs.
413 RTC_CHECK(sender_config.has_ssrc());
414 config->rtp.ssrc = sender_config.ssrc();
415 // Get header extensions.
416 GetHeaderExtensions(&config->rtp.extensions,
417 sender_config.header_extensions());
418 }
419
379 void ParsedRtcEventLog::GetAudioPlayout(size_t index, uint32_t* ssrc) const { 420 void ParsedRtcEventLog::GetAudioPlayout(size_t index, uint32_t* ssrc) const {
380 RTC_CHECK_LT(index, GetNumberOfEvents()); 421 RTC_CHECK_LT(index, GetNumberOfEvents());
381 const rtclog::Event& event = events_[index]; 422 const rtclog::Event& event = events_[index];
382 RTC_CHECK(event.has_type()); 423 RTC_CHECK(event.has_type());
383 RTC_CHECK_EQ(event.type(), rtclog::Event::AUDIO_PLAYOUT_EVENT); 424 RTC_CHECK_EQ(event.type(), rtclog::Event::AUDIO_PLAYOUT_EVENT);
384 RTC_CHECK(event.has_audio_playout_event()); 425 RTC_CHECK(event.has_audio_playout_event());
385 const rtclog::AudioPlayoutEvent& loss_event = event.audio_playout_event(); 426 const rtclog::AudioPlayoutEvent& loss_event = event.audio_playout_event();
386 RTC_CHECK(loss_event.has_local_ssrc()); 427 RTC_CHECK(loss_event.has_local_ssrc());
387 if (ssrc != nullptr) { 428 if (ssrc != nullptr) {
388 *ssrc = loss_event.local_ssrc(); 429 *ssrc = loss_event.local_ssrc();
(...skipping 18 matching lines...) Expand all
407 if (fraction_loss != nullptr) { 448 if (fraction_loss != nullptr) {
408 *fraction_loss = loss_event.fraction_loss(); 449 *fraction_loss = loss_event.fraction_loss();
409 } 450 }
410 RTC_CHECK(loss_event.has_total_packets()); 451 RTC_CHECK(loss_event.has_total_packets());
411 if (total_packets != nullptr) { 452 if (total_packets != nullptr) {
412 *total_packets = loss_event.total_packets(); 453 *total_packets = loss_event.total_packets();
413 } 454 }
414 } 455 }
415 456
416 } // namespace webrtc 457 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/logging/rtc_event_log/rtc_event_log_parser.h ('k') | webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698