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

Side by Side Diff: webrtc/call/rtc_event_log.cc

Issue 1571283002: Fixes a bug which incorrectly logs incoming RTCP as outgoing. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase Created 4 years, 11 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
« no previous file with comments | « webrtc/call/rtc_event_log.h ('k') | webrtc/call/rtc_event_log_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
(...skipping 29 matching lines...) Expand all
40 class RtcEventLogImpl final : public RtcEventLog { 40 class RtcEventLogImpl final : public RtcEventLog {
41 public: 41 public:
42 void SetBufferDuration(int64_t buffer_duration_us) override {} 42 void SetBufferDuration(int64_t buffer_duration_us) override {}
43 void StartLogging(const std::string& file_name, int duration_ms) override {} 43 void StartLogging(const std::string& file_name, int duration_ms) override {}
44 bool StartLogging(rtc::PlatformFile log_file) override { return false; } 44 bool StartLogging(rtc::PlatformFile log_file) override { return false; }
45 void StopLogging(void) override {} 45 void StopLogging(void) override {}
46 void LogVideoReceiveStreamConfig( 46 void LogVideoReceiveStreamConfig(
47 const VideoReceiveStream::Config& config) override {} 47 const VideoReceiveStream::Config& config) override {}
48 void LogVideoSendStreamConfig( 48 void LogVideoSendStreamConfig(
49 const VideoSendStream::Config& config) override {} 49 const VideoSendStream::Config& config) override {}
50 void LogRtpHeader(bool incoming, 50 void LogRtpHeader(PacketDirection direction,
51 MediaType media_type, 51 MediaType media_type,
52 const uint8_t* header, 52 const uint8_t* header,
53 size_t packet_length) override {} 53 size_t packet_length) override {}
54 void LogRtcpPacket(bool incoming, 54 void LogRtcpPacket(PacketDirection direction,
55 MediaType media_type, 55 MediaType media_type,
56 const uint8_t* packet, 56 const uint8_t* packet,
57 size_t length) override {} 57 size_t length) override {}
58 void LogAudioPlayout(uint32_t ssrc) override {} 58 void LogAudioPlayout(uint32_t ssrc) override {}
59 void LogBwePacketLossEvent(int32_t bitrate, 59 void LogBwePacketLossEvent(int32_t bitrate,
60 uint8_t fraction_loss, 60 uint8_t fraction_loss,
61 int32_t total_packets) override {} 61 int32_t total_packets) override {}
62 }; 62 };
63 63
64 #else // ENABLE_RTC_EVENT_LOG is defined 64 #else // ENABLE_RTC_EVENT_LOG is defined
65 65
66 class RtcEventLogImpl final : public RtcEventLog { 66 class RtcEventLogImpl final : public RtcEventLog {
67 public: 67 public:
68 RtcEventLogImpl(); 68 RtcEventLogImpl();
69 69
70 void SetBufferDuration(int64_t buffer_duration_us) override; 70 void SetBufferDuration(int64_t buffer_duration_us) override;
71 void StartLogging(const std::string& file_name, int duration_ms) override; 71 void StartLogging(const std::string& file_name, int duration_ms) override;
72 bool StartLogging(rtc::PlatformFile log_file) override; 72 bool StartLogging(rtc::PlatformFile log_file) override;
73 void StopLogging() override; 73 void StopLogging() override;
74 void LogVideoReceiveStreamConfig( 74 void LogVideoReceiveStreamConfig(
75 const VideoReceiveStream::Config& config) override; 75 const VideoReceiveStream::Config& config) override;
76 void LogVideoSendStreamConfig(const VideoSendStream::Config& config) override; 76 void LogVideoSendStreamConfig(const VideoSendStream::Config& config) override;
77 void LogRtpHeader(bool incoming, 77 void LogRtpHeader(PacketDirection direction,
78 MediaType media_type, 78 MediaType media_type,
79 const uint8_t* header, 79 const uint8_t* header,
80 size_t packet_length) override; 80 size_t packet_length) override;
81 void LogRtcpPacket(bool incoming, 81 void LogRtcpPacket(PacketDirection direction,
82 MediaType media_type, 82 MediaType media_type,
83 const uint8_t* packet, 83 const uint8_t* packet,
84 size_t length) override; 84 size_t length) override;
85 void LogAudioPlayout(uint32_t ssrc) override; 85 void LogAudioPlayout(uint32_t ssrc) override;
86 void LogBwePacketLossEvent(int32_t bitrate, 86 void LogBwePacketLossEvent(int32_t bitrate,
87 uint8_t fraction_loss, 87 uint8_t fraction_loss,
88 int32_t total_packets) override; 88 int32_t total_packets) override;
89 89
90 private: 90 private:
91 // Starts logging. This function assumes the file_ has been opened succesfully 91 // Starts logging. This function assumes the file_ has been opened succesfully
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 sender_config->add_rtx_ssrcs(rtx_ssrc); 320 sender_config->add_rtx_ssrcs(rtx_ssrc);
321 } 321 }
322 sender_config->set_rtx_payload_type(config.rtp.rtx.payload_type); 322 sender_config->set_rtx_payload_type(config.rtp.rtx.payload_type);
323 323
324 rtclog::EncoderConfig* encoder = sender_config->mutable_encoder(); 324 rtclog::EncoderConfig* encoder = sender_config->mutable_encoder();
325 encoder->set_name(config.encoder_settings.payload_name); 325 encoder->set_name(config.encoder_settings.payload_name);
326 encoder->set_payload_type(config.encoder_settings.payload_type); 326 encoder->set_payload_type(config.encoder_settings.payload_type);
327 HandleEvent(&event); 327 HandleEvent(&event);
328 } 328 }
329 329
330 void RtcEventLogImpl::LogRtpHeader(bool incoming, 330 void RtcEventLogImpl::LogRtpHeader(PacketDirection direction,
331 MediaType media_type, 331 MediaType media_type,
332 const uint8_t* header, 332 const uint8_t* header,
333 size_t packet_length) { 333 size_t packet_length) {
334 // Read header length (in bytes) from packet data. 334 // Read header length (in bytes) from packet data.
335 if (packet_length < 12u) { 335 if (packet_length < 12u) {
336 return; // Don't read outside the packet. 336 return; // Don't read outside the packet.
337 } 337 }
338 const bool x = (header[0] & 0x10) != 0; 338 const bool x = (header[0] & 0x10) != 0;
339 const uint8_t cc = header[0] & 0x0f; 339 const uint8_t cc = header[0] & 0x0f;
340 size_t header_length = 12u + cc * 4u; 340 size_t header_length = 12u + cc * 4u;
341 341
342 if (x) { 342 if (x) {
343 if (packet_length < 12u + cc * 4u + 4u) { 343 if (packet_length < 12u + cc * 4u + 4u) {
344 return; // Don't read outside the packet. 344 return; // Don't read outside the packet.
345 } 345 }
346 size_t x_len = ByteReader<uint16_t>::ReadBigEndian(header + 14 + cc * 4); 346 size_t x_len = ByteReader<uint16_t>::ReadBigEndian(header + 14 + cc * 4);
347 header_length += (x_len + 1) * 4; 347 header_length += (x_len + 1) * 4;
348 } 348 }
349 349
350 rtc::CritScope lock(&crit_); 350 rtc::CritScope lock(&crit_);
351 rtclog::Event rtp_event; 351 rtclog::Event rtp_event;
352 rtp_event.set_timestamp_us(clock_->TimeInMicroseconds()); 352 rtp_event.set_timestamp_us(clock_->TimeInMicroseconds());
353 rtp_event.set_type(rtclog::Event::RTP_EVENT); 353 rtp_event.set_type(rtclog::Event::RTP_EVENT);
354 rtp_event.mutable_rtp_packet()->set_incoming(incoming); 354 rtp_event.mutable_rtp_packet()->set_incoming(direction == kIncomingPacket);
355 rtp_event.mutable_rtp_packet()->set_type(ConvertMediaType(media_type)); 355 rtp_event.mutable_rtp_packet()->set_type(ConvertMediaType(media_type));
356 rtp_event.mutable_rtp_packet()->set_packet_length(packet_length); 356 rtp_event.mutable_rtp_packet()->set_packet_length(packet_length);
357 rtp_event.mutable_rtp_packet()->set_header(header, header_length); 357 rtp_event.mutable_rtp_packet()->set_header(header, header_length);
358 HandleEvent(&rtp_event); 358 HandleEvent(&rtp_event);
359 } 359 }
360 360
361 void RtcEventLogImpl::LogRtcpPacket(bool incoming, 361 void RtcEventLogImpl::LogRtcpPacket(PacketDirection direction,
362 MediaType media_type, 362 MediaType media_type,
363 const uint8_t* packet, 363 const uint8_t* packet,
364 size_t length) { 364 size_t length) {
365 rtc::CritScope lock(&crit_); 365 rtc::CritScope lock(&crit_);
366 rtclog::Event rtcp_event; 366 rtclog::Event rtcp_event;
367 rtcp_event.set_timestamp_us(clock_->TimeInMicroseconds()); 367 rtcp_event.set_timestamp_us(clock_->TimeInMicroseconds());
368 rtcp_event.set_type(rtclog::Event::RTCP_EVENT); 368 rtcp_event.set_type(rtclog::Event::RTCP_EVENT);
369 rtcp_event.mutable_rtcp_packet()->set_incoming(incoming); 369 rtcp_event.mutable_rtcp_packet()->set_incoming(direction == kIncomingPacket);
370 rtcp_event.mutable_rtcp_packet()->set_type(ConvertMediaType(media_type)); 370 rtcp_event.mutable_rtcp_packet()->set_type(ConvertMediaType(media_type));
371 371
372 RTCPUtility::RtcpCommonHeader header; 372 RTCPUtility::RtcpCommonHeader header;
373 const uint8_t* block_begin = packet; 373 const uint8_t* block_begin = packet;
374 const uint8_t* packet_end = packet + length; 374 const uint8_t* packet_end = packet + length;
375 RTC_DCHECK(length <= IP_PACKET_SIZE); 375 RTC_DCHECK(length <= IP_PACKET_SIZE);
376 uint8_t buffer[IP_PACKET_SIZE]; 376 uint8_t buffer[IP_PACKET_SIZE];
377 uint32_t buffer_length = 0; 377 uint32_t buffer_length = 0;
378 while (block_begin < packet_end) { 378 while (block_begin < packet_end) {
379 if (!RtcpParseCommonHeader(block_begin, packet_end - block_begin, 379 if (!RtcpParseCommonHeader(block_begin, packet_end - block_begin,
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 } 514 }
515 515
516 #endif // ENABLE_RTC_EVENT_LOG 516 #endif // ENABLE_RTC_EVENT_LOG
517 517
518 // RtcEventLog member functions. 518 // RtcEventLog member functions.
519 rtc::scoped_ptr<RtcEventLog> RtcEventLog::Create() { 519 rtc::scoped_ptr<RtcEventLog> RtcEventLog::Create() {
520 return rtc::scoped_ptr<RtcEventLog>(new RtcEventLogImpl()); 520 return rtc::scoped_ptr<RtcEventLog>(new RtcEventLogImpl());
521 } 521 }
522 522
523 } // namespace webrtc 523 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/call/rtc_event_log.h ('k') | webrtc/call/rtc_event_log_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698