OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/cast/net/pacing/paced_sender.h" | 5 #include "media/cast/net/pacing/paced_sender.h" |
6 | 6 |
7 #include "base/big_endian.h" | 7 #include "base/big_endian.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/debug/dump_without_crashing.h" | 9 #include "base/debug/dump_without_crashing.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 PacketEvent& event = recent_packet_events_->back(); | 328 PacketEvent& event = recent_packet_events_->back(); |
329 | 329 |
330 // Populate the new PacketEvent by parsing the wire-format |packet|. | 330 // Populate the new PacketEvent by parsing the wire-format |packet|. |
331 // | 331 // |
332 // TODO(miu): This parsing logic belongs in RtpParser. | 332 // TODO(miu): This parsing logic belongs in RtpParser. |
333 event.timestamp = clock_->NowTicks(); | 333 event.timestamp = clock_->NowTicks(); |
334 event.type = type; | 334 event.type = type; |
335 base::BigEndianReader reader(reinterpret_cast<const char*>(&packet[0]), | 335 base::BigEndianReader reader(reinterpret_cast<const char*>(&packet[0]), |
336 packet.size()); | 336 packet.size()); |
337 bool success = reader.Skip(4); | 337 bool success = reader.Skip(4); |
338 success &= reader.ReadU32(&event.rtp_timestamp); | 338 uint32_t truncated_rtp_timestamp; |
| 339 success &= reader.ReadU32(&truncated_rtp_timestamp); |
339 uint32 ssrc; | 340 uint32 ssrc; |
340 success &= reader.ReadU32(&ssrc); | 341 success &= reader.ReadU32(&ssrc); |
341 if (ssrc == audio_ssrc_) { | 342 if (ssrc == audio_ssrc_) { |
| 343 event.rtp_timestamp = last_logged_audio_rtp_timestamp_ = |
| 344 last_logged_audio_rtp_timestamp_.Expand(truncated_rtp_timestamp); |
342 event.media_type = AUDIO_EVENT; | 345 event.media_type = AUDIO_EVENT; |
343 } else if (ssrc == video_ssrc_) { | 346 } else if (ssrc == video_ssrc_) { |
| 347 event.rtp_timestamp = last_logged_video_rtp_timestamp_ = |
| 348 last_logged_video_rtp_timestamp_.Expand(truncated_rtp_timestamp); |
344 event.media_type = VIDEO_EVENT; | 349 event.media_type = VIDEO_EVENT; |
345 } else { | 350 } else { |
346 DVLOG(3) << "Got unknown ssrc " << ssrc << " when logging packet event"; | 351 DVLOG(3) << "Got unknown ssrc " << ssrc << " when logging packet event"; |
347 return; | 352 return; |
348 } | 353 } |
349 success &= reader.Skip(2); | 354 success &= reader.Skip(2); |
350 success &= reader.ReadU16(&event.packet_id); | 355 success &= reader.ReadU16(&event.packet_id); |
351 success &= reader.ReadU16(&event.max_packet_id); | 356 success &= reader.ReadU16(&event.max_packet_id); |
352 event.size = packet.size(); | 357 event.size = packet.size(); |
353 DCHECK(success); | 358 DCHECK(success); |
354 } | 359 } |
355 | 360 |
356 } // namespace cast | 361 } // namespace cast |
357 } // namespace media | 362 } // namespace media |
OLD | NEW |