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

Side by Side Diff: webrtc/modules/video_coding/rtp_frame_reference_finder_unittest.cc

Issue 2535203002: Fix memory leak in video_coding::PacketBuffer::InsertPacket. (Closed)
Patch Set: Feedback fix. Created 4 years 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) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 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 15 matching lines...) Expand all
26 26
27 class FakePacketBuffer : public PacketBuffer { 27 class FakePacketBuffer : public PacketBuffer {
28 public: 28 public:
29 FakePacketBuffer() : PacketBuffer(nullptr, 0, 0, nullptr) {} 29 FakePacketBuffer() : PacketBuffer(nullptr, 0, 0, nullptr) {}
30 30
31 VCMPacket* GetPacket(uint16_t seq_num) override { 31 VCMPacket* GetPacket(uint16_t seq_num) override {
32 auto packet_it = packets_.find(seq_num); 32 auto packet_it = packets_.find(seq_num);
33 return packet_it == packets_.end() ? nullptr : &packet_it->second; 33 return packet_it == packets_.end() ? nullptr : &packet_it->second;
34 } 34 }
35 35
36 bool InsertPacket(const VCMPacket& packet) override { 36 bool InsertPacket(VCMPacket* packet) override {
37 packets_[packet.seqNum] = packet; 37 packets_[packet->seqNum] = *packet;
38 return true; 38 return true;
39 } 39 }
40 40
41 bool GetBitstream(const RtpFrameObject& frame, 41 bool GetBitstream(const RtpFrameObject& frame,
42 uint8_t* destination) override { 42 uint8_t* destination) override {
43 return true; 43 return true;
44 } 44 }
45 45
46 void ReturnFrame(RtpFrameObject* frame) override { 46 void ReturnFrame(RtpFrameObject* frame) override {
47 packets_.erase(frame->first_seq_num()); 47 packets_.erase(frame->first_seq_num());
(...skipping 28 matching lines...) Expand all
76 std::make_pair(std::make_pair(pid, sidx), std::move(frame))); 76 std::make_pair(std::make_pair(pid, sidx), std::move(frame)));
77 } 77 }
78 78
79 void InsertGeneric(uint16_t seq_num_start, 79 void InsertGeneric(uint16_t seq_num_start,
80 uint16_t seq_num_end, 80 uint16_t seq_num_end,
81 bool keyframe) { 81 bool keyframe) {
82 VCMPacket packet; 82 VCMPacket packet;
83 packet.codec = kVideoCodecGeneric; 83 packet.codec = kVideoCodecGeneric;
84 packet.seqNum = seq_num_start; 84 packet.seqNum = seq_num_start;
85 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; 85 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta;
86 ref_packet_buffer_->InsertPacket(packet); 86 ref_packet_buffer_->InsertPacket(&packet);
87 87
88 packet.seqNum = seq_num_end; 88 packet.seqNum = seq_num_end;
89 packet.markerBit = true; 89 packet.markerBit = true;
90 ref_packet_buffer_->InsertPacket(packet); 90 ref_packet_buffer_->InsertPacket(&packet);
91 91
92 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( 92 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject(
93 ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0)); 93 ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0));
94 reference_finder_->ManageFrame(std::move(frame)); 94 reference_finder_->ManageFrame(std::move(frame));
95 } 95 }
96 96
97 void InsertVp8(uint16_t seq_num_start, 97 void InsertVp8(uint16_t seq_num_start,
98 uint16_t seq_num_end, 98 uint16_t seq_num_end,
99 bool keyframe, 99 bool keyframe,
100 int32_t pid = kNoPictureId, 100 int32_t pid = kNoPictureId,
101 uint8_t tid = kNoTemporalIdx, 101 uint8_t tid = kNoTemporalIdx,
102 int32_t tl0 = kNoTl0PicIdx, 102 int32_t tl0 = kNoTl0PicIdx,
103 bool sync = false) { 103 bool sync = false) {
104 VCMPacket packet; 104 VCMPacket packet;
105 packet.codec = kVideoCodecVP8; 105 packet.codec = kVideoCodecVP8;
106 packet.seqNum = seq_num_start; 106 packet.seqNum = seq_num_start;
107 packet.markerBit = (seq_num_start == seq_num_end); 107 packet.markerBit = (seq_num_start == seq_num_end);
108 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; 108 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta;
109 packet.video_header.codecHeader.VP8.pictureId = pid % (1 << 15); 109 packet.video_header.codecHeader.VP8.pictureId = pid % (1 << 15);
110 packet.video_header.codecHeader.VP8.temporalIdx = tid; 110 packet.video_header.codecHeader.VP8.temporalIdx = tid;
111 packet.video_header.codecHeader.VP8.tl0PicIdx = tl0; 111 packet.video_header.codecHeader.VP8.tl0PicIdx = tl0;
112 packet.video_header.codecHeader.VP8.layerSync = sync; 112 packet.video_header.codecHeader.VP8.layerSync = sync;
113 ref_packet_buffer_->InsertPacket(packet); 113 ref_packet_buffer_->InsertPacket(&packet);
114 114
115 if (seq_num_start != seq_num_end) { 115 if (seq_num_start != seq_num_end) {
116 packet.seqNum = seq_num_end; 116 packet.seqNum = seq_num_end;
117 packet.markerBit = true; 117 packet.markerBit = true;
118 ref_packet_buffer_->InsertPacket(packet); 118 ref_packet_buffer_->InsertPacket(&packet);
119 } 119 }
120 120
121 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( 121 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject(
122 ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0)); 122 ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0));
123 reference_finder_->ManageFrame(std::move(frame)); 123 reference_finder_->ManageFrame(std::move(frame));
124 } 124 }
125 125
126 void InsertVp9Gof(uint16_t seq_num_start, 126 void InsertVp9Gof(uint16_t seq_num_start,
127 uint16_t seq_num_end, 127 uint16_t seq_num_end,
128 bool keyframe, 128 bool keyframe,
(...skipping 12 matching lines...) Expand all
141 packet.video_header.codecHeader.VP9.flexible_mode = false; 141 packet.video_header.codecHeader.VP9.flexible_mode = false;
142 packet.video_header.codecHeader.VP9.picture_id = pid % (1 << 15); 142 packet.video_header.codecHeader.VP9.picture_id = pid % (1 << 15);
143 packet.video_header.codecHeader.VP9.temporal_idx = tid; 143 packet.video_header.codecHeader.VP9.temporal_idx = tid;
144 packet.video_header.codecHeader.VP9.spatial_idx = sid; 144 packet.video_header.codecHeader.VP9.spatial_idx = sid;
145 packet.video_header.codecHeader.VP9.tl0_pic_idx = tl0; 145 packet.video_header.codecHeader.VP9.tl0_pic_idx = tl0;
146 packet.video_header.codecHeader.VP9.temporal_up_switch = up_switch; 146 packet.video_header.codecHeader.VP9.temporal_up_switch = up_switch;
147 if (ss != nullptr) { 147 if (ss != nullptr) {
148 packet.video_header.codecHeader.VP9.ss_data_available = true; 148 packet.video_header.codecHeader.VP9.ss_data_available = true;
149 packet.video_header.codecHeader.VP9.gof = *ss; 149 packet.video_header.codecHeader.VP9.gof = *ss;
150 } 150 }
151 ref_packet_buffer_->InsertPacket(packet); 151 ref_packet_buffer_->InsertPacket(&packet);
152 152
153 if (seq_num_start != seq_num_end) { 153 if (seq_num_start != seq_num_end) {
154 packet.markerBit = true; 154 packet.markerBit = true;
155 packet.video_header.codecHeader.VP9.ss_data_available = false; 155 packet.video_header.codecHeader.VP9.ss_data_available = false;
156 packet.seqNum = seq_num_end; 156 packet.seqNum = seq_num_end;
157 ref_packet_buffer_->InsertPacket(packet); 157 ref_packet_buffer_->InsertPacket(&packet);
158 } 158 }
159 159
160 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( 160 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject(
161 ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0)); 161 ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0));
162 reference_finder_->ManageFrame(std::move(frame)); 162 reference_finder_->ManageFrame(std::move(frame));
163 } 163 }
164 164
165 void InsertVp9Flex(uint16_t seq_num_start, 165 void InsertVp9Flex(uint16_t seq_num_start,
166 uint16_t seq_num_end, 166 uint16_t seq_num_end,
167 bool keyframe, 167 bool keyframe,
(...skipping 11 matching lines...) Expand all
179 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; 179 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta;
180 packet.video_header.codecHeader.VP9.inter_layer_predicted = inter; 180 packet.video_header.codecHeader.VP9.inter_layer_predicted = inter;
181 packet.video_header.codecHeader.VP9.flexible_mode = true; 181 packet.video_header.codecHeader.VP9.flexible_mode = true;
182 packet.video_header.codecHeader.VP9.picture_id = pid % (1 << 15); 182 packet.video_header.codecHeader.VP9.picture_id = pid % (1 << 15);
183 packet.video_header.codecHeader.VP9.temporal_idx = tid; 183 packet.video_header.codecHeader.VP9.temporal_idx = tid;
184 packet.video_header.codecHeader.VP9.spatial_idx = sid; 184 packet.video_header.codecHeader.VP9.spatial_idx = sid;
185 packet.video_header.codecHeader.VP9.tl0_pic_idx = tl0; 185 packet.video_header.codecHeader.VP9.tl0_pic_idx = tl0;
186 packet.video_header.codecHeader.VP9.num_ref_pics = refs.size(); 186 packet.video_header.codecHeader.VP9.num_ref_pics = refs.size();
187 for (size_t i = 0; i < refs.size(); ++i) 187 for (size_t i = 0; i < refs.size(); ++i)
188 packet.video_header.codecHeader.VP9.pid_diff[i] = refs[i]; 188 packet.video_header.codecHeader.VP9.pid_diff[i] = refs[i];
189 ref_packet_buffer_->InsertPacket(packet); 189 ref_packet_buffer_->InsertPacket(&packet);
190 190
191 if (seq_num_start != seq_num_end) { 191 if (seq_num_start != seq_num_end) {
192 packet.seqNum = seq_num_end; 192 packet.seqNum = seq_num_end;
193 packet.markerBit = true; 193 packet.markerBit = true;
194 ref_packet_buffer_->InsertPacket(packet); 194 ref_packet_buffer_->InsertPacket(&packet);
195 } 195 }
196 196
197 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( 197 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject(
198 ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0)); 198 ref_packet_buffer_, seq_num_start, seq_num_end, 0, 0, 0));
199 reference_finder_->ManageFrame(std::move(frame)); 199 reference_finder_->ManageFrame(std::move(frame));
200 } 200 }
201 201
202 // Check if a frame with picture id |pid| and spatial index |sidx| has been 202 // Check if a frame with picture id |pid| and spatial index |sidx| has been
203 // delivered from the packet buffer, and if so, if it has the references 203 // delivered from the packet buffer, and if so, if it has the references
204 // specified by |refs|. 204 // specified by |refs|.
(...skipping 1058 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 packet.video_header.codecHeader.VP9.flexible_mode = false; 1263 packet.video_header.codecHeader.VP9.flexible_mode = false;
1264 packet.video_header.codecHeader.VP9.picture_id = 1; 1264 packet.video_header.codecHeader.VP9.picture_id = 1;
1265 packet.video_header.codecHeader.VP9.temporal_idx = 0; 1265 packet.video_header.codecHeader.VP9.temporal_idx = 0;
1266 packet.video_header.codecHeader.VP9.spatial_idx = 0; 1266 packet.video_header.codecHeader.VP9.spatial_idx = 0;
1267 packet.video_header.codecHeader.VP9.tl0_pic_idx = 0; 1267 packet.video_header.codecHeader.VP9.tl0_pic_idx = 0;
1268 packet.video_header.codecHeader.VP9.temporal_up_switch = true; 1268 packet.video_header.codecHeader.VP9.temporal_up_switch = true;
1269 packet.video_header.codecHeader.VP9.ss_data_available = true; 1269 packet.video_header.codecHeader.VP9.ss_data_available = true;
1270 packet.video_header.codecHeader.VP9.gof = ss; 1270 packet.video_header.codecHeader.VP9.gof = ss;
1271 1271
1272 { 1272 {
1273 ref_packet_buffer_->InsertPacket(packet); 1273 ref_packet_buffer_->InsertPacket(&packet);
1274 std::unique_ptr<RtpFrameObject> frame( 1274 std::unique_ptr<RtpFrameObject> frame(
1275 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1275 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1276 reference_finder_->ManageFrame(std::move(frame)); 1276 reference_finder_->ManageFrame(std::move(frame));
1277 } 1277 }
1278 1278
1279 // Timestamp goes forward but pid goes backwards. 1279 // Timestamp goes forward but pid goes backwards.
1280 packet.timestamp = 1; 1280 packet.timestamp = 1;
1281 packet.video_header.codecHeader.VP9.picture_id = 0; 1281 packet.video_header.codecHeader.VP9.picture_id = 0;
1282 1282
1283 { 1283 {
1284 ref_packet_buffer_->InsertPacket(packet); 1284 ref_packet_buffer_->InsertPacket(&packet);
1285 std::unique_ptr<RtpFrameObject> frame( 1285 std::unique_ptr<RtpFrameObject> frame(
1286 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1286 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1287 reference_finder_->ManageFrame(std::move(frame)); 1287 reference_finder_->ManageFrame(std::move(frame));
1288 } 1288 }
1289 1289
1290 packet.timestamp = 2; 1290 packet.timestamp = 2;
1291 packet.video_header.codecHeader.VP9.picture_id = 5000; 1291 packet.video_header.codecHeader.VP9.picture_id = 5000;
1292 1292
1293 { 1293 {
1294 ref_packet_buffer_->InsertPacket(packet); 1294 ref_packet_buffer_->InsertPacket(&packet);
1295 std::unique_ptr<RtpFrameObject> frame( 1295 std::unique_ptr<RtpFrameObject> frame(
1296 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1296 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1297 reference_finder_->ManageFrame(std::move(frame)); 1297 reference_finder_->ManageFrame(std::move(frame));
1298 } 1298 }
1299 1299
1300 ASSERT_EQ(3UL, frames_from_callback_.size()); 1300 ASSERT_EQ(3UL, frames_from_callback_.size());
1301 CheckReferencesVp9(1, 0); 1301 CheckReferencesVp9(1, 0);
1302 CheckReferencesVp9(129, 0); 1302 CheckReferencesVp9(129, 0);
1303 CheckReferencesVp9(257, 0); 1303 CheckReferencesVp9(257, 0);
1304 } 1304 }
(...skipping 11 matching lines...) Expand all
1316 packet.markerBit = true; 1316 packet.markerBit = true;
1317 packet.video_header.codecHeader.VP9.flexible_mode = false; 1317 packet.video_header.codecHeader.VP9.flexible_mode = false;
1318 packet.video_header.codecHeader.VP9.picture_id = 0; 1318 packet.video_header.codecHeader.VP9.picture_id = 0;
1319 packet.video_header.codecHeader.VP9.temporal_idx = 0; 1319 packet.video_header.codecHeader.VP9.temporal_idx = 0;
1320 packet.video_header.codecHeader.VP9.spatial_idx = 0; 1320 packet.video_header.codecHeader.VP9.spatial_idx = 0;
1321 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1; 1321 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1;
1322 packet.video_header.codecHeader.VP9.temporal_up_switch = true; 1322 packet.video_header.codecHeader.VP9.temporal_up_switch = true;
1323 packet.video_header.codecHeader.VP9.ss_data_available = true; 1323 packet.video_header.codecHeader.VP9.ss_data_available = true;
1324 packet.video_header.codecHeader.VP9.gof = ss; 1324 packet.video_header.codecHeader.VP9.gof = ss;
1325 { 1325 {
1326 ref_packet_buffer_->InsertPacket(packet); 1326 ref_packet_buffer_->InsertPacket(&packet);
1327 std::unique_ptr<RtpFrameObject> frame( 1327 std::unique_ptr<RtpFrameObject> frame(
1328 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1328 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1329 reference_finder_->ManageFrame(std::move(frame)); 1329 reference_finder_->ManageFrame(std::move(frame));
1330 } 1330 }
1331 1331
1332 packet.timestamp = 1; 1332 packet.timestamp = 1;
1333 packet.video_header.codecHeader.VP9.picture_id = 1; 1333 packet.video_header.codecHeader.VP9.picture_id = 1;
1334 packet.video_header.codecHeader.VP9.tl0_pic_idx = 0; 1334 packet.video_header.codecHeader.VP9.tl0_pic_idx = 0;
1335 { 1335 {
1336 ref_packet_buffer_->InsertPacket(packet); 1336 ref_packet_buffer_->InsertPacket(&packet);
1337 std::unique_ptr<RtpFrameObject> frame( 1337 std::unique_ptr<RtpFrameObject> frame(
1338 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1338 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1339 reference_finder_->ManageFrame(std::move(frame)); 1339 reference_finder_->ManageFrame(std::move(frame));
1340 } 1340 }
1341 1341
1342 packet.timestamp = 2; 1342 packet.timestamp = 2;
1343 packet.frameType = kVideoFrameDelta; 1343 packet.frameType = kVideoFrameDelta;
1344 packet.video_header.codecHeader.VP9.picture_id = 2; 1344 packet.video_header.codecHeader.VP9.picture_id = 2;
1345 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2; 1345 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2;
1346 { 1346 {
1347 ref_packet_buffer_->InsertPacket(packet); 1347 ref_packet_buffer_->InsertPacket(&packet);
1348 std::unique_ptr<RtpFrameObject> frame( 1348 std::unique_ptr<RtpFrameObject> frame(
1349 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1349 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1350 reference_finder_->ManageFrame(std::move(frame)); 1350 reference_finder_->ManageFrame(std::move(frame));
1351 } 1351 }
1352 1352
1353 packet.timestamp = 3; 1353 packet.timestamp = 3;
1354 packet.frameType = kVideoFrameKey; 1354 packet.frameType = kVideoFrameKey;
1355 packet.video_header.codecHeader.VP9.ss_data_available = true; 1355 packet.video_header.codecHeader.VP9.ss_data_available = true;
1356 packet.video_header.codecHeader.VP9.picture_id = 3; 1356 packet.video_header.codecHeader.VP9.picture_id = 3;
1357 packet.video_header.codecHeader.VP9.tl0_pic_idx = 129; 1357 packet.video_header.codecHeader.VP9.tl0_pic_idx = 129;
1358 { 1358 {
1359 ref_packet_buffer_->InsertPacket(packet); 1359 ref_packet_buffer_->InsertPacket(&packet);
1360 std::unique_ptr<RtpFrameObject> frame( 1360 std::unique_ptr<RtpFrameObject> frame(
1361 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1361 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1362 reference_finder_->ManageFrame(std::move(frame)); 1362 reference_finder_->ManageFrame(std::move(frame));
1363 } 1363 }
1364 1364
1365 ASSERT_EQ(4UL, frames_from_callback_.size()); 1365 ASSERT_EQ(4UL, frames_from_callback_.size());
1366 CheckReferencesVp9(0, 0); 1366 CheckReferencesVp9(0, 0);
1367 CheckReferencesVp9(128, 0); 1367 CheckReferencesVp9(128, 0);
1368 CheckReferencesVp9(129, 0, 128); 1368 CheckReferencesVp9(129, 0, 128);
1369 CheckReferencesVp9(257, 0); 1369 CheckReferencesVp9(257, 0);
(...skipping 12 matching lines...) Expand all
1382 packet.markerBit = true; 1382 packet.markerBit = true;
1383 packet.video_header.codecHeader.VP9.flexible_mode = false; 1383 packet.video_header.codecHeader.VP9.flexible_mode = false;
1384 packet.video_header.codecHeader.VP9.picture_id = 1; 1384 packet.video_header.codecHeader.VP9.picture_id = 1;
1385 packet.video_header.codecHeader.VP9.temporal_idx = 0; 1385 packet.video_header.codecHeader.VP9.temporal_idx = 0;
1386 packet.video_header.codecHeader.VP9.spatial_idx = 0; 1386 packet.video_header.codecHeader.VP9.spatial_idx = 0;
1387 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1; 1387 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1;
1388 packet.video_header.codecHeader.VP9.temporal_up_switch = true; 1388 packet.video_header.codecHeader.VP9.temporal_up_switch = true;
1389 packet.video_header.codecHeader.VP9.ss_data_available = true; 1389 packet.video_header.codecHeader.VP9.ss_data_available = true;
1390 packet.video_header.codecHeader.VP9.gof = ss; 1390 packet.video_header.codecHeader.VP9.gof = ss;
1391 { 1391 {
1392 ref_packet_buffer_->InsertPacket(packet); 1392 ref_packet_buffer_->InsertPacket(&packet);
1393 std::unique_ptr<RtpFrameObject> frame( 1393 std::unique_ptr<RtpFrameObject> frame(
1394 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1394 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1395 reference_finder_->ManageFrame(std::move(frame)); 1395 reference_finder_->ManageFrame(std::move(frame));
1396 } 1396 }
1397 1397
1398 packet.timestamp = 1; 1398 packet.timestamp = 1;
1399 packet.video_header.codecHeader.VP9.picture_id = 2; 1399 packet.video_header.codecHeader.VP9.picture_id = 2;
1400 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2; 1400 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2;
1401 { 1401 {
1402 ref_packet_buffer_->InsertPacket(packet); 1402 ref_packet_buffer_->InsertPacket(&packet);
1403 std::unique_ptr<RtpFrameObject> frame( 1403 std::unique_ptr<RtpFrameObject> frame(
1404 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1404 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1405 reference_finder_->ManageFrame(std::move(frame)); 1405 reference_finder_->ManageFrame(std::move(frame));
1406 } 1406 }
1407 1407
1408 packet.timestamp = 2; 1408 packet.timestamp = 2;
1409 packet.video_header.codecHeader.VP9.picture_id = 3; 1409 packet.video_header.codecHeader.VP9.picture_id = 3;
1410 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2; 1410 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2;
1411 { 1411 {
1412 ref_packet_buffer_->InsertPacket(packet); 1412 ref_packet_buffer_->InsertPacket(&packet);
1413 std::unique_ptr<RtpFrameObject> frame( 1413 std::unique_ptr<RtpFrameObject> frame(
1414 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1414 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1415 reference_finder_->ManageFrame(std::move(frame)); 1415 reference_finder_->ManageFrame(std::move(frame));
1416 } 1416 }
1417 1417
1418 packet.timestamp = 2; 1418 packet.timestamp = 2;
1419 packet.video_header.codecHeader.VP9.picture_id = 4; 1419 packet.video_header.codecHeader.VP9.picture_id = 4;
1420 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1; 1420 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1;
1421 { 1421 {
1422 ref_packet_buffer_->InsertPacket(packet); 1422 ref_packet_buffer_->InsertPacket(&packet);
1423 std::unique_ptr<RtpFrameObject> frame( 1423 std::unique_ptr<RtpFrameObject> frame(
1424 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1424 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1425 reference_finder_->ManageFrame(std::move(frame)); 1425 reference_finder_->ManageFrame(std::move(frame));
1426 } 1426 }
1427 1427
1428 ASSERT_EQ(4UL, frames_from_callback_.size()); 1428 ASSERT_EQ(4UL, frames_from_callback_.size());
1429 CheckReferencesVp9(1, 0); 1429 CheckReferencesVp9(1, 0);
1430 CheckReferencesVp9(2, 0); 1430 CheckReferencesVp9(2, 0);
1431 CheckReferencesVp9(3, 0); 1431 CheckReferencesVp9(3, 0);
1432 CheckReferencesVp9(131, 0); 1432 CheckReferencesVp9(131, 0);
(...skipping 12 matching lines...) Expand all
1445 packet.markerBit = true; 1445 packet.markerBit = true;
1446 packet.video_header.codecHeader.VP9.flexible_mode = false; 1446 packet.video_header.codecHeader.VP9.flexible_mode = false;
1447 packet.video_header.codecHeader.VP9.picture_id = 1; 1447 packet.video_header.codecHeader.VP9.picture_id = 1;
1448 packet.video_header.codecHeader.VP9.temporal_idx = 0; 1448 packet.video_header.codecHeader.VP9.temporal_idx = 0;
1449 packet.video_header.codecHeader.VP9.spatial_idx = 0; 1449 packet.video_header.codecHeader.VP9.spatial_idx = 0;
1450 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1; 1450 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1;
1451 packet.video_header.codecHeader.VP9.temporal_up_switch = true; 1451 packet.video_header.codecHeader.VP9.temporal_up_switch = true;
1452 packet.video_header.codecHeader.VP9.ss_data_available = true; 1452 packet.video_header.codecHeader.VP9.ss_data_available = true;
1453 packet.video_header.codecHeader.VP9.gof = ss; 1453 packet.video_header.codecHeader.VP9.gof = ss;
1454 { 1454 {
1455 ref_packet_buffer_->InsertPacket(packet); 1455 ref_packet_buffer_->InsertPacket(&packet);
1456 std::unique_ptr<RtpFrameObject> frame( 1456 std::unique_ptr<RtpFrameObject> frame(
1457 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1457 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1458 reference_finder_->ManageFrame(std::move(frame)); 1458 reference_finder_->ManageFrame(std::move(frame));
1459 } 1459 }
1460 1460
1461 packet.timestamp = 1; 1461 packet.timestamp = 1;
1462 packet.video_header.codecHeader.VP9.picture_id = 0; 1462 packet.video_header.codecHeader.VP9.picture_id = 0;
1463 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2; 1463 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2;
1464 { 1464 {
1465 ref_packet_buffer_->InsertPacket(packet); 1465 ref_packet_buffer_->InsertPacket(&packet);
1466 std::unique_ptr<RtpFrameObject> frame( 1466 std::unique_ptr<RtpFrameObject> frame(
1467 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1467 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1468 reference_finder_->ManageFrame(std::move(frame)); 1468 reference_finder_->ManageFrame(std::move(frame));
1469 } 1469 }
1470 1470
1471 packet.timestamp = 0; 1471 packet.timestamp = 0;
1472 packet.video_header.codecHeader.VP9.picture_id = 3; 1472 packet.video_header.codecHeader.VP9.picture_id = 3;
1473 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2; 1473 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2;
1474 { 1474 {
1475 ref_packet_buffer_->InsertPacket(packet); 1475 ref_packet_buffer_->InsertPacket(&packet);
1476 std::unique_ptr<RtpFrameObject> frame( 1476 std::unique_ptr<RtpFrameObject> frame(
1477 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)); 1477 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0));
1478 reference_finder_->ManageFrame(std::move(frame)); 1478 reference_finder_->ManageFrame(std::move(frame));
1479 } 1479 }
1480 1480
1481 ASSERT_EQ(2UL, frames_from_callback_.size()); 1481 ASSERT_EQ(2UL, frames_from_callback_.size());
1482 CheckReferencesVp9(1, 0); 1482 CheckReferencesVp9(1, 0);
1483 CheckReferencesVp9(129, 0); 1483 CheckReferencesVp9(129, 0);
1484 } 1484 }
1485 1485
1486 } // namespace video_coding 1486 } // namespace video_coding
1487 } // namespace webrtc 1487 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/packet_buffer.cc ('k') | webrtc/modules/video_coding/video_packet_buffer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698