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

Side by Side Diff: media/cast/transport/rtp_sender/rtp_packetizer/rtp_packetizer.cc

Issue 317243007: Cast: reduce the amount of retransmission packets (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
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
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);
miu 2014/06/07 00:59:42 Nice how the PacketStorage clean-up helped clean u
Alpha Left Google 2014/06/07 01:15:09 Done.
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698