| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/transport/rtp_sender/rtp_packetizer/rtp_packetizer.h" | 5 #include "media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.h" |
| 6 | 6 |
| 7 #include "base/big_endian.h" | 7 #include "base/big_endian.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "media/cast/transport/pacing/paced_sender.h" | 9 #include "media/cast/transport/pacing/paced_sender.h" |
| 10 | 10 |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 base::BigEndianWriter big_endian_writer( | 86 base::BigEndianWriter big_endian_writer( |
| 87 reinterpret_cast<char*>(&(packet->data[start_size])), 4); | 87 reinterpret_cast<char*>(&(packet->data[start_size])), 4); |
| 88 big_endian_writer.WriteU16(packet_id_); | 88 big_endian_writer.WriteU16(packet_id_); |
| 89 big_endian_writer.WriteU16(static_cast<uint16>(num_packets - 1)); | 89 big_endian_writer.WriteU16(static_cast<uint16>(num_packets - 1)); |
| 90 packet->data.push_back(static_cast<uint8>(frame.referenced_frame_id)); | 90 packet->data.push_back(static_cast<uint8>(frame.referenced_frame_id)); |
| 91 | 91 |
| 92 // Copy payload data. | 92 // Copy payload data. |
| 93 packet->data.insert(packet->data.end(), | 93 packet->data.insert(packet->data.end(), |
| 94 data_iter, | 94 data_iter, |
| 95 data_iter + payload_length); | 95 data_iter + payload_length); |
| 96 data_iter += payload_length; |
| 96 | 97 |
| 97 PacketKey key = PacedPacketSender::MakePacketKey(frame.reference_time, | 98 const PacketKey key = |
| 98 config_.ssrc, | 99 PacedPacketSender::MakePacketKey(frame.reference_time, |
| 99 packet_id_); | 100 config_.ssrc, |
| 100 | 101 packet_id_++); |
| 101 // Store packet. | 102 packets.push_back(make_pair(key, packet)); |
| 102 packet_storage_->StorePacket(frame.frame_id, packet_id_, key, packet); | |
| 103 ++packet_id_; | |
| 104 data_iter += payload_length; | |
| 105 | 103 |
| 106 // Update stats. | 104 // Update stats. |
| 107 ++send_packet_count_; | 105 ++send_packet_count_; |
| 108 send_octet_count_ += payload_length; | 106 send_octet_count_ += payload_length; |
| 109 packets.push_back(make_pair(key, packet)); | |
| 110 } | 107 } |
| 111 DCHECK(packet_id_ == num_packets) << "Invalid state"; | 108 DCHECK(packet_id_ == num_packets) << "Invalid state"; |
| 112 | 109 |
| 110 packet_storage_->StoreFrame(frame.frame_id, packets); |
| 111 |
| 113 // Send to network. | 112 // Send to network. |
| 114 transport_->SendPackets(packets); | 113 transport_->SendPackets(packets); |
| 115 | 114 |
| 116 // Prepare for next frame. | 115 // Prepare for next frame. |
| 117 packet_id_ = 0; | 116 packet_id_ = 0; |
| 118 } | 117 } |
| 119 | 118 |
| 120 void RtpPacketizer::BuildCommonRTPheader(Packet* packet, | 119 void RtpPacketizer::BuildCommonRTPheader(Packet* packet, |
| 121 bool marker_bit, | 120 bool marker_bit, |
| 122 uint32 time_stamp) { | 121 uint32 time_stamp) { |
| 123 packet->push_back(0x80); | 122 packet->push_back(0x80); |
| 124 packet->push_back(static_cast<uint8>(config_.payload_type) | | 123 packet->push_back(static_cast<uint8>(config_.payload_type) | |
| 125 (marker_bit ? kRtpMarkerBitMask : 0)); | 124 (marker_bit ? kRtpMarkerBitMask : 0)); |
| 126 size_t start_size = packet->size(); | 125 size_t start_size = packet->size(); |
| 127 packet->resize(start_size + 10); | 126 packet->resize(start_size + 10); |
| 128 base::BigEndianWriter big_endian_writer( | 127 base::BigEndianWriter big_endian_writer( |
| 129 reinterpret_cast<char*>(&((*packet)[start_size])), 10); | 128 reinterpret_cast<char*>(&((*packet)[start_size])), 10); |
| 130 big_endian_writer.WriteU16(sequence_number_); | 129 big_endian_writer.WriteU16(sequence_number_); |
| 131 big_endian_writer.WriteU32(time_stamp); | 130 big_endian_writer.WriteU32(time_stamp); |
| 132 big_endian_writer.WriteU32(config_.ssrc); | 131 big_endian_writer.WriteU32(config_.ssrc); |
| 133 ++sequence_number_; | 132 ++sequence_number_; |
| 134 } | 133 } |
| 135 | 134 |
| 136 } // namespace transport | 135 } // namespace transport |
| 137 } // namespace cast | 136 } // namespace cast |
| 138 } // namespace media | 137 } // namespace media |
| OLD | NEW |