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 | 10 |
11 #include "webrtc/logging/rtc_event_log/rtc_event_log.h" | 11 #include "webrtc/logging/rtc_event_log/rtc_event_log.h" |
12 | 12 |
13 #include <limits> | 13 #include <limits> |
| 14 #include <utility> |
14 #include <vector> | 15 #include <vector> |
15 | 16 |
16 #include "webrtc/logging/rtc_event_log/rtc_event_log_helper_thread.h" | 17 #include "webrtc/logging/rtc_event_log/rtc_event_log_helper_thread.h" |
17 #include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_networ
k_adaptor.h" | 18 #include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_networ
k_adaptor.h" |
18 #include "webrtc/modules/remote_bitrate_estimator/include/bwe_defines.h" | 19 #include "webrtc/modules/remote_bitrate_estimator/include/bwe_defines.h" |
19 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" | 20 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
20 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" | 21 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" |
21 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h" | 22 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h" |
22 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h" | 23 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/bye.h" |
23 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/common_header.h" | 24 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/common_header.h" |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 int min_probes, | 91 int min_probes, |
91 int min_bytes) override; | 92 int min_bytes) override; |
92 void LogProbeResultSuccess(int id, int bitrate_bps) override; | 93 void LogProbeResultSuccess(int id, int bitrate_bps) override; |
93 void LogProbeResultFailure(int id, | 94 void LogProbeResultFailure(int id, |
94 ProbeFailureReason failure_reason) override; | 95 ProbeFailureReason failure_reason) override; |
95 | 96 |
96 private: | 97 private: |
97 // Private constructor to ensure that creation is done by RtcEventLog::Create. | 98 // Private constructor to ensure that creation is done by RtcEventLog::Create. |
98 RtcEventLogImpl(); | 99 RtcEventLogImpl(); |
99 | 100 |
100 void StoreEvent(std::unique_ptr<rtclog::Event>* event); | 101 void StoreEvent(std::unique_ptr<rtclog::Event> event); |
101 void LogProbeResult(int id, | 102 void LogProbeResult(int id, |
102 rtclog::BweProbeResult::ResultType result, | 103 rtclog::BweProbeResult::ResultType result, |
103 int bitrate_bps); | 104 int bitrate_bps); |
104 | 105 |
105 static volatile int log_count_; | 106 static volatile int log_count_; |
106 | 107 |
107 // Message queue for passing control messages to the logging thread. | 108 // Message queue for passing control messages to the logging thread. |
108 SwapQueue<RtcEventLogHelperThread::ControlMessage> message_queue_; | 109 SwapQueue<RtcEventLogHelperThread::ControlMessage> message_queue_; |
109 | 110 |
110 // Message queue for passing events to the logging thread. | 111 // Message queue for passing events to the logging thread. |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 rtclog::DecoderConfig* decoder = receiver_config->add_decoders(); | 293 rtclog::DecoderConfig* decoder = receiver_config->add_decoders(); |
293 decoder->set_name(d.payload_name); | 294 decoder->set_name(d.payload_name); |
294 decoder->set_payload_type(d.payload_type); | 295 decoder->set_payload_type(d.payload_type); |
295 if (d.rtx_payload_type != 0) { | 296 if (d.rtx_payload_type != 0) { |
296 rtclog::RtxMap* rtx = receiver_config->add_rtx_map(); | 297 rtclog::RtxMap* rtx = receiver_config->add_rtx_map(); |
297 rtx->set_payload_type(d.payload_type); | 298 rtx->set_payload_type(d.payload_type); |
298 rtx->mutable_config()->set_rtx_ssrc(config.rtx_ssrc); | 299 rtx->mutable_config()->set_rtx_ssrc(config.rtx_ssrc); |
299 rtx->mutable_config()->set_rtx_payload_type(d.rtx_payload_type); | 300 rtx->mutable_config()->set_rtx_payload_type(d.rtx_payload_type); |
300 } | 301 } |
301 } | 302 } |
302 StoreEvent(&event); | 303 StoreEvent(std::move(event)); |
303 } | 304 } |
304 | 305 |
305 void RtcEventLogImpl::LogVideoSendStreamConfig( | 306 void RtcEventLogImpl::LogVideoSendStreamConfig( |
306 const rtclog::StreamConfig& config) { | 307 const rtclog::StreamConfig& config) { |
307 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); | 308 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); |
308 event->set_timestamp_us(rtc::TimeMicros()); | 309 event->set_timestamp_us(rtc::TimeMicros()); |
309 event->set_type(rtclog::Event::VIDEO_SENDER_CONFIG_EVENT); | 310 event->set_type(rtclog::Event::VIDEO_SENDER_CONFIG_EVENT); |
310 | 311 |
311 rtclog::VideoSendConfig* sender_config = event->mutable_video_sender_config(); | 312 rtclog::VideoSendConfig* sender_config = event->mutable_video_sender_config(); |
312 | 313 |
(...skipping 18 matching lines...) Expand all Loading... |
331 encoder->set_name(codec.payload_name); | 332 encoder->set_name(codec.payload_name); |
332 encoder->set_payload_type(codec.payload_type); | 333 encoder->set_payload_type(codec.payload_type); |
333 | 334 |
334 if (config.codecs.size() > 1) { | 335 if (config.codecs.size() > 1) { |
335 LOG(WARNING) << "LogVideoSendStreamConfig currently only supports one " | 336 LOG(WARNING) << "LogVideoSendStreamConfig currently only supports one " |
336 << "codec. Logging codec :" << codec.payload_name; | 337 << "codec. Logging codec :" << codec.payload_name; |
337 break; | 338 break; |
338 } | 339 } |
339 } | 340 } |
340 | 341 |
341 StoreEvent(&event); | 342 StoreEvent(std::move(event)); |
342 } | 343 } |
343 | 344 |
344 void RtcEventLogImpl::LogAudioReceiveStreamConfig( | 345 void RtcEventLogImpl::LogAudioReceiveStreamConfig( |
345 const rtclog::StreamConfig& config) { | 346 const rtclog::StreamConfig& config) { |
346 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); | 347 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); |
347 event->set_timestamp_us(rtc::TimeMicros()); | 348 event->set_timestamp_us(rtc::TimeMicros()); |
348 event->set_type(rtclog::Event::AUDIO_RECEIVER_CONFIG_EVENT); | 349 event->set_type(rtclog::Event::AUDIO_RECEIVER_CONFIG_EVENT); |
349 | 350 |
350 rtclog::AudioReceiveConfig* receiver_config = | 351 rtclog::AudioReceiveConfig* receiver_config = |
351 event->mutable_audio_receiver_config(); | 352 event->mutable_audio_receiver_config(); |
352 receiver_config->set_remote_ssrc(config.remote_ssrc); | 353 receiver_config->set_remote_ssrc(config.remote_ssrc); |
353 receiver_config->set_local_ssrc(config.local_ssrc); | 354 receiver_config->set_local_ssrc(config.local_ssrc); |
354 | 355 |
355 for (const auto& e : config.rtp_extensions) { | 356 for (const auto& e : config.rtp_extensions) { |
356 rtclog::RtpHeaderExtension* extension = | 357 rtclog::RtpHeaderExtension* extension = |
357 receiver_config->add_header_extensions(); | 358 receiver_config->add_header_extensions(); |
358 extension->set_name(e.uri); | 359 extension->set_name(e.uri); |
359 extension->set_id(e.id); | 360 extension->set_id(e.id); |
360 } | 361 } |
361 StoreEvent(&event); | 362 StoreEvent(std::move(event)); |
362 } | 363 } |
363 | 364 |
364 void RtcEventLogImpl::LogAudioSendStreamConfig( | 365 void RtcEventLogImpl::LogAudioSendStreamConfig( |
365 const rtclog::StreamConfig& config) { | 366 const rtclog::StreamConfig& config) { |
366 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); | 367 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); |
367 event->set_timestamp_us(rtc::TimeMicros()); | 368 event->set_timestamp_us(rtc::TimeMicros()); |
368 event->set_type(rtclog::Event::AUDIO_SENDER_CONFIG_EVENT); | 369 event->set_type(rtclog::Event::AUDIO_SENDER_CONFIG_EVENT); |
369 | 370 |
370 rtclog::AudioSendConfig* sender_config = event->mutable_audio_sender_config(); | 371 rtclog::AudioSendConfig* sender_config = event->mutable_audio_sender_config(); |
371 | 372 |
372 sender_config->set_ssrc(config.local_ssrc); | 373 sender_config->set_ssrc(config.local_ssrc); |
373 | 374 |
374 for (const auto& e : config.rtp_extensions) { | 375 for (const auto& e : config.rtp_extensions) { |
375 rtclog::RtpHeaderExtension* extension = | 376 rtclog::RtpHeaderExtension* extension = |
376 sender_config->add_header_extensions(); | 377 sender_config->add_header_extensions(); |
377 extension->set_name(e.uri); | 378 extension->set_name(e.uri); |
378 extension->set_id(e.id); | 379 extension->set_id(e.id); |
379 } | 380 } |
380 | 381 |
381 StoreEvent(&event); | 382 StoreEvent(std::move(event)); |
382 } | 383 } |
383 | 384 |
384 void RtcEventLogImpl::LogRtpHeader(PacketDirection direction, | 385 void RtcEventLogImpl::LogRtpHeader(PacketDirection direction, |
385 const uint8_t* header, | 386 const uint8_t* header, |
386 size_t packet_length) { | 387 size_t packet_length) { |
387 LogRtpHeader(direction, header, packet_length, PacedPacketInfo::kNotAProbe); | 388 LogRtpHeader(direction, header, packet_length, PacedPacketInfo::kNotAProbe); |
388 } | 389 } |
389 | 390 |
390 void RtcEventLogImpl::LogRtpHeader(PacketDirection direction, | 391 void RtcEventLogImpl::LogRtpHeader(PacketDirection direction, |
391 const uint8_t* header, | 392 const uint8_t* header, |
(...skipping 16 matching lines...) Expand all Loading... |
408 } | 409 } |
409 | 410 |
410 std::unique_ptr<rtclog::Event> rtp_event(new rtclog::Event()); | 411 std::unique_ptr<rtclog::Event> rtp_event(new rtclog::Event()); |
411 rtp_event->set_timestamp_us(rtc::TimeMicros()); | 412 rtp_event->set_timestamp_us(rtc::TimeMicros()); |
412 rtp_event->set_type(rtclog::Event::RTP_EVENT); | 413 rtp_event->set_type(rtclog::Event::RTP_EVENT); |
413 rtp_event->mutable_rtp_packet()->set_incoming(direction == kIncomingPacket); | 414 rtp_event->mutable_rtp_packet()->set_incoming(direction == kIncomingPacket); |
414 rtp_event->mutable_rtp_packet()->set_packet_length(packet_length); | 415 rtp_event->mutable_rtp_packet()->set_packet_length(packet_length); |
415 rtp_event->mutable_rtp_packet()->set_header(header, header_length); | 416 rtp_event->mutable_rtp_packet()->set_header(header, header_length); |
416 if (probe_cluster_id != PacedPacketInfo::kNotAProbe) | 417 if (probe_cluster_id != PacedPacketInfo::kNotAProbe) |
417 rtp_event->mutable_rtp_packet()->set_probe_cluster_id(probe_cluster_id); | 418 rtp_event->mutable_rtp_packet()->set_probe_cluster_id(probe_cluster_id); |
418 StoreEvent(&rtp_event); | 419 StoreEvent(std::move(rtp_event)); |
419 } | 420 } |
420 | 421 |
421 void RtcEventLogImpl::LogRtcpPacket(PacketDirection direction, | 422 void RtcEventLogImpl::LogRtcpPacket(PacketDirection direction, |
422 const uint8_t* packet, | 423 const uint8_t* packet, |
423 size_t length) { | 424 size_t length) { |
424 std::unique_ptr<rtclog::Event> rtcp_event(new rtclog::Event()); | 425 std::unique_ptr<rtclog::Event> rtcp_event(new rtclog::Event()); |
425 rtcp_event->set_timestamp_us(rtc::TimeMicros()); | 426 rtcp_event->set_timestamp_us(rtc::TimeMicros()); |
426 rtcp_event->set_type(rtclog::Event::RTCP_EVENT); | 427 rtcp_event->set_type(rtclog::Event::RTCP_EVENT); |
427 rtcp_event->mutable_rtcp_packet()->set_incoming(direction == kIncomingPacket); | 428 rtcp_event->mutable_rtcp_packet()->set_incoming(direction == kIncomingPacket); |
428 | 429 |
(...skipping 27 matching lines...) Expand all Loading... |
456 case rtcp::App::kPacketType: | 457 case rtcp::App::kPacketType: |
457 default: | 458 default: |
458 // We don't log sender descriptions, application defined messages | 459 // We don't log sender descriptions, application defined messages |
459 // or message blocks of unknown type. | 460 // or message blocks of unknown type. |
460 break; | 461 break; |
461 } | 462 } |
462 | 463 |
463 block_begin += block_size; | 464 block_begin += block_size; |
464 } | 465 } |
465 rtcp_event->mutable_rtcp_packet()->set_packet_data(buffer, buffer_length); | 466 rtcp_event->mutable_rtcp_packet()->set_packet_data(buffer, buffer_length); |
466 StoreEvent(&rtcp_event); | 467 StoreEvent(std::move(rtcp_event)); |
467 } | 468 } |
468 | 469 |
469 void RtcEventLogImpl::LogAudioPlayout(uint32_t ssrc) { | 470 void RtcEventLogImpl::LogAudioPlayout(uint32_t ssrc) { |
470 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); | 471 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); |
471 event->set_timestamp_us(rtc::TimeMicros()); | 472 event->set_timestamp_us(rtc::TimeMicros()); |
472 event->set_type(rtclog::Event::AUDIO_PLAYOUT_EVENT); | 473 event->set_type(rtclog::Event::AUDIO_PLAYOUT_EVENT); |
473 auto playout_event = event->mutable_audio_playout_event(); | 474 auto playout_event = event->mutable_audio_playout_event(); |
474 playout_event->set_local_ssrc(ssrc); | 475 playout_event->set_local_ssrc(ssrc); |
475 StoreEvent(&event); | 476 StoreEvent(std::move(event)); |
476 } | 477 } |
477 | 478 |
478 void RtcEventLogImpl::LogLossBasedBweUpdate(int32_t bitrate_bps, | 479 void RtcEventLogImpl::LogLossBasedBweUpdate(int32_t bitrate_bps, |
479 uint8_t fraction_loss, | 480 uint8_t fraction_loss, |
480 int32_t total_packets) { | 481 int32_t total_packets) { |
481 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); | 482 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); |
482 event->set_timestamp_us(rtc::TimeMicros()); | 483 event->set_timestamp_us(rtc::TimeMicros()); |
483 event->set_type(rtclog::Event::LOSS_BASED_BWE_UPDATE); | 484 event->set_type(rtclog::Event::LOSS_BASED_BWE_UPDATE); |
484 auto bwe_event = event->mutable_loss_based_bwe_update(); | 485 auto bwe_event = event->mutable_loss_based_bwe_update(); |
485 bwe_event->set_bitrate_bps(bitrate_bps); | 486 bwe_event->set_bitrate_bps(bitrate_bps); |
486 bwe_event->set_fraction_loss(fraction_loss); | 487 bwe_event->set_fraction_loss(fraction_loss); |
487 bwe_event->set_total_packets(total_packets); | 488 bwe_event->set_total_packets(total_packets); |
488 StoreEvent(&event); | 489 StoreEvent(std::move(event)); |
489 } | 490 } |
490 | 491 |
491 void RtcEventLogImpl::LogDelayBasedBweUpdate(int32_t bitrate_bps, | 492 void RtcEventLogImpl::LogDelayBasedBweUpdate(int32_t bitrate_bps, |
492 BandwidthUsage detector_state) { | 493 BandwidthUsage detector_state) { |
493 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); | 494 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); |
494 event->set_timestamp_us(rtc::TimeMicros()); | 495 event->set_timestamp_us(rtc::TimeMicros()); |
495 event->set_type(rtclog::Event::DELAY_BASED_BWE_UPDATE); | 496 event->set_type(rtclog::Event::DELAY_BASED_BWE_UPDATE); |
496 auto bwe_event = event->mutable_delay_based_bwe_update(); | 497 auto bwe_event = event->mutable_delay_based_bwe_update(); |
497 bwe_event->set_bitrate_bps(bitrate_bps); | 498 bwe_event->set_bitrate_bps(bitrate_bps); |
498 bwe_event->set_detector_state(ConvertDetectorState(detector_state)); | 499 bwe_event->set_detector_state(ConvertDetectorState(detector_state)); |
499 StoreEvent(&event); | 500 StoreEvent(std::move(event)); |
500 } | 501 } |
501 | 502 |
502 void RtcEventLogImpl::LogAudioNetworkAdaptation( | 503 void RtcEventLogImpl::LogAudioNetworkAdaptation( |
503 const AudioEncoderRuntimeConfig& config) { | 504 const AudioEncoderRuntimeConfig& config) { |
504 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); | 505 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); |
505 event->set_timestamp_us(rtc::TimeMicros()); | 506 event->set_timestamp_us(rtc::TimeMicros()); |
506 event->set_type(rtclog::Event::AUDIO_NETWORK_ADAPTATION_EVENT); | 507 event->set_type(rtclog::Event::AUDIO_NETWORK_ADAPTATION_EVENT); |
507 auto audio_network_adaptation = event->mutable_audio_network_adaptation(); | 508 auto audio_network_adaptation = event->mutable_audio_network_adaptation(); |
508 if (config.bitrate_bps) | 509 if (config.bitrate_bps) |
509 audio_network_adaptation->set_bitrate_bps(*config.bitrate_bps); | 510 audio_network_adaptation->set_bitrate_bps(*config.bitrate_bps); |
510 if (config.frame_length_ms) | 511 if (config.frame_length_ms) |
511 audio_network_adaptation->set_frame_length_ms(*config.frame_length_ms); | 512 audio_network_adaptation->set_frame_length_ms(*config.frame_length_ms); |
512 if (config.uplink_packet_loss_fraction) { | 513 if (config.uplink_packet_loss_fraction) { |
513 audio_network_adaptation->set_uplink_packet_loss_fraction( | 514 audio_network_adaptation->set_uplink_packet_loss_fraction( |
514 *config.uplink_packet_loss_fraction); | 515 *config.uplink_packet_loss_fraction); |
515 } | 516 } |
516 if (config.enable_fec) | 517 if (config.enable_fec) |
517 audio_network_adaptation->set_enable_fec(*config.enable_fec); | 518 audio_network_adaptation->set_enable_fec(*config.enable_fec); |
518 if (config.enable_dtx) | 519 if (config.enable_dtx) |
519 audio_network_adaptation->set_enable_dtx(*config.enable_dtx); | 520 audio_network_adaptation->set_enable_dtx(*config.enable_dtx); |
520 if (config.num_channels) | 521 if (config.num_channels) |
521 audio_network_adaptation->set_num_channels(*config.num_channels); | 522 audio_network_adaptation->set_num_channels(*config.num_channels); |
522 StoreEvent(&event); | 523 StoreEvent(std::move(event)); |
523 } | 524 } |
524 | 525 |
525 void RtcEventLogImpl::LogProbeClusterCreated(int id, | 526 void RtcEventLogImpl::LogProbeClusterCreated(int id, |
526 int bitrate_bps, | 527 int bitrate_bps, |
527 int min_probes, | 528 int min_probes, |
528 int min_bytes) { | 529 int min_bytes) { |
529 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); | 530 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); |
530 event->set_timestamp_us(rtc::TimeMicros()); | 531 event->set_timestamp_us(rtc::TimeMicros()); |
531 event->set_type(rtclog::Event::BWE_PROBE_CLUSTER_CREATED_EVENT); | 532 event->set_type(rtclog::Event::BWE_PROBE_CLUSTER_CREATED_EVENT); |
532 | 533 |
533 auto probe_cluster = event->mutable_probe_cluster(); | 534 auto probe_cluster = event->mutable_probe_cluster(); |
534 probe_cluster->set_id(id); | 535 probe_cluster->set_id(id); |
535 probe_cluster->set_bitrate_bps(bitrate_bps); | 536 probe_cluster->set_bitrate_bps(bitrate_bps); |
536 probe_cluster->set_min_packets(min_probes); | 537 probe_cluster->set_min_packets(min_probes); |
537 probe_cluster->set_min_bytes(min_bytes); | 538 probe_cluster->set_min_bytes(min_bytes); |
538 StoreEvent(&event); | 539 StoreEvent(std::move(event)); |
539 } | 540 } |
540 | 541 |
541 void RtcEventLogImpl::LogProbeResultSuccess(int id, int bitrate_bps) { | 542 void RtcEventLogImpl::LogProbeResultSuccess(int id, int bitrate_bps) { |
542 LogProbeResult(id, rtclog::BweProbeResult::SUCCESS, bitrate_bps); | 543 LogProbeResult(id, rtclog::BweProbeResult::SUCCESS, bitrate_bps); |
543 } | 544 } |
544 | 545 |
545 void RtcEventLogImpl::LogProbeResultFailure(int id, | 546 void RtcEventLogImpl::LogProbeResultFailure(int id, |
546 ProbeFailureReason failure_reason) { | 547 ProbeFailureReason failure_reason) { |
547 rtclog::BweProbeResult::ResultType result = | 548 rtclog::BweProbeResult::ResultType result = |
548 ConvertProbeResultType(failure_reason); | 549 ConvertProbeResultType(failure_reason); |
549 LogProbeResult(id, result, -1); | 550 LogProbeResult(id, result, -1); |
550 } | 551 } |
551 | 552 |
552 void RtcEventLogImpl::LogProbeResult(int id, | 553 void RtcEventLogImpl::LogProbeResult(int id, |
553 rtclog::BweProbeResult::ResultType result, | 554 rtclog::BweProbeResult::ResultType result, |
554 int bitrate_bps) { | 555 int bitrate_bps) { |
555 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); | 556 std::unique_ptr<rtclog::Event> event(new rtclog::Event()); |
556 event->set_timestamp_us(rtc::TimeMicros()); | 557 event->set_timestamp_us(rtc::TimeMicros()); |
557 event->set_type(rtclog::Event::BWE_PROBE_RESULT_EVENT); | 558 event->set_type(rtclog::Event::BWE_PROBE_RESULT_EVENT); |
558 | 559 |
559 auto probe_result = event->mutable_probe_result(); | 560 auto probe_result = event->mutable_probe_result(); |
560 probe_result->set_id(id); | 561 probe_result->set_id(id); |
561 probe_result->set_result(result); | 562 probe_result->set_result(result); |
562 if (result == rtclog::BweProbeResult::SUCCESS) | 563 if (result == rtclog::BweProbeResult::SUCCESS) |
563 probe_result->set_bitrate_bps(bitrate_bps); | 564 probe_result->set_bitrate_bps(bitrate_bps); |
564 StoreEvent(&event); | 565 StoreEvent(std::move(event)); |
565 } | 566 } |
566 | 567 |
567 void RtcEventLogImpl::StoreEvent(std::unique_ptr<rtclog::Event>* event) { | 568 void RtcEventLogImpl::StoreEvent(std::unique_ptr<rtclog::Event> event) { |
568 RTC_DCHECK(event != nullptr); | 569 RTC_DCHECK(event.get() != nullptr); |
569 RTC_DCHECK(event->get() != nullptr); | 570 if (!event_queue_.Insert(&event)) { |
570 if (!event_queue_.Insert(event)) { | |
571 LOG(LS_ERROR) << "WebRTC event log queue full. Dropping event."; | 571 LOG(LS_ERROR) << "WebRTC event log queue full. Dropping event."; |
572 } | 572 } |
573 helper_thread_.SignalNewEvent(); | 573 helper_thread_.SignalNewEvent(); |
574 } | 574 } |
575 | 575 |
576 bool RtcEventLog::ParseRtcEventLog(const std::string& file_name, | 576 bool RtcEventLog::ParseRtcEventLog(const std::string& file_name, |
577 rtclog::EventStream* result) { | 577 rtclog::EventStream* result) { |
578 char tmp_buffer[1024]; | 578 char tmp_buffer[1024]; |
579 int bytes_read = 0; | 579 int bytes_read = 0; |
580 std::unique_ptr<FileWrapper> dump_file(FileWrapper::Create()); | 580 std::unique_ptr<FileWrapper> dump_file(FileWrapper::Create()); |
(...skipping 25 matching lines...) Expand all Loading... |
606 #else | 606 #else |
607 return std::unique_ptr<RtcEventLog>(new RtcEventLogNullImpl()); | 607 return std::unique_ptr<RtcEventLog>(new RtcEventLogNullImpl()); |
608 #endif // ENABLE_RTC_EVENT_LOG | 608 #endif // ENABLE_RTC_EVENT_LOG |
609 } | 609 } |
610 | 610 |
611 std::unique_ptr<RtcEventLog> RtcEventLog::CreateNull() { | 611 std::unique_ptr<RtcEventLog> RtcEventLog::CreateNull() { |
612 return std::unique_ptr<RtcEventLog>(new RtcEventLogNullImpl()); | 612 return std::unique_ptr<RtcEventLog>(new RtcEventLogNullImpl()); |
613 } | 613 } |
614 | 614 |
615 } // namespace webrtc | 615 } // namespace webrtc |
OLD | NEW |