OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |