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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_packet.cc

Issue 1696203002: [rtp_rtcp] rtc::scoped_ptr<rtcp::RawPacket> replaced with rtc::Buffer (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 10 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 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 13 matching lines...) Expand all
24 ByteWriter<uint16_t>::WriteBigEndian(buffer + *offset, value); 24 ByteWriter<uint16_t>::WriteBigEndian(buffer + *offset, value);
25 *offset += 2; 25 *offset += 2;
26 } 26 }
27 } // namespace 27 } // namespace
28 28
29 void RtcpPacket::Append(RtcpPacket* packet) { 29 void RtcpPacket::Append(RtcpPacket* packet) {
30 assert(packet); 30 assert(packet);
31 appended_packets_.push_back(packet); 31 appended_packets_.push_back(packet);
32 } 32 }
33 33
34 rtc::scoped_ptr<RawPacket> RtcpPacket::Build() const { 34 rtc::Buffer RtcpPacket::Build() const {
35 size_t length = 0; 35 size_t length = 0;
36 rtc::scoped_ptr<RawPacket> packet(new RawPacket(IP_PACKET_SIZE)); 36 rtc::Buffer packet(IP_PACKET_SIZE);
37 37
38 class PacketVerifier : public PacketReadyCallback { 38 class PacketVerifier : public PacketReadyCallback {
39 public: 39 public:
40 explicit PacketVerifier(RawPacket* packet) 40 explicit PacketVerifier(rtc::Buffer* packet)
41 : called_(false), packet_(packet) {} 41 : called_(false), packet_(packet) {}
42 virtual ~PacketVerifier() {} 42 virtual ~PacketVerifier() {}
43 void OnPacketReady(uint8_t* data, size_t length) override { 43 void OnPacketReady(uint8_t* data, size_t length) override {
44 RTC_CHECK(!called_) << "Fragmentation not supported."; 44 RTC_CHECK(!called_) << "Fragmentation not supported.";
45 called_ = true; 45 called_ = true;
46 packet_->SetLength(length); 46 packet_->SetSize(length);
47 } 47 }
48 48
49 private: 49 private:
50 bool called_; 50 bool called_;
51 RawPacket* const packet_; 51 rtc::Buffer* const packet_;
52 } verifier(packet.get()); 52 } verifier(&packet);
53 CreateAndAddAppended(packet->MutableBuffer(), &length, packet->BufferLength(), 53 CreateAndAddAppended(packet.data(), &length, packet.capacity(), &verifier);
54 &verifier); 54 OnBufferFull(packet.data(), &length, &verifier);
55 OnBufferFull(packet->MutableBuffer(), &length, &verifier);
56 return packet; 55 return packet;
57 } 56 }
58 57
59 bool RtcpPacket::Build(PacketReadyCallback* callback) const { 58 bool RtcpPacket::Build(PacketReadyCallback* callback) const {
60 uint8_t buffer[IP_PACKET_SIZE]; 59 uint8_t buffer[IP_PACKET_SIZE];
61 return BuildExternalBuffer(buffer, IP_PACKET_SIZE, callback); 60 return BuildExternalBuffer(buffer, IP_PACKET_SIZE, callback);
62 } 61 }
63 62
64 bool RtcpPacket::BuildExternalBuffer(uint8_t* buffer, 63 bool RtcpPacket::BuildExternalBuffer(uint8_t* buffer,
65 size_t max_length, 64 size_t max_length,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 size_t length, 114 size_t length,
116 uint8_t* buffer, 115 uint8_t* buffer,
117 size_t* pos) { 116 size_t* pos) {
118 assert(length <= 0xffff); 117 assert(length <= 0xffff);
119 const uint8_t kVersion = 2; 118 const uint8_t kVersion = 2;
120 AssignUWord8(buffer, pos, (kVersion << 6) + count_or_format); 119 AssignUWord8(buffer, pos, (kVersion << 6) + count_or_format);
121 AssignUWord8(buffer, pos, packet_type); 120 AssignUWord8(buffer, pos, packet_type);
122 AssignUWord16(buffer, pos, length); 121 AssignUWord16(buffer, pos, length);
123 } 122 }
124 123
125 RawPacket::RawPacket(size_t buffer_length)
126 : buffer_length_(buffer_length), length_(0) {
127 buffer_.reset(new uint8_t[buffer_length]);
128 }
129
130 RawPacket::RawPacket(const uint8_t* packet, size_t packet_length)
131 : buffer_length_(packet_length), length_(packet_length) {
132 buffer_.reset(new uint8_t[packet_length]);
133 memcpy(buffer_.get(), packet, packet_length);
134 }
135
136 const uint8_t* RawPacket::Buffer() const {
137 return buffer_.get();
138 }
139
140 uint8_t* RawPacket::MutableBuffer() {
141 return buffer_.get();
142 }
143
144 size_t RawPacket::BufferLength() const {
145 return buffer_length_;
146 }
147
148 size_t RawPacket::Length() const {
149 return length_;
150 }
151
152 void RawPacket::SetLength(size_t length) {
153 assert(length <= buffer_length_);
154 length_ = length;
155 }
156
157 } // namespace rtcp 124 } // namespace rtcp
158 } // namespace webrtc 125 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698