| 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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after 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 | 87 |
| 88 packet.seqNum = seq_num_end; |
| 89 packet.markerBit = true; |
| 87 ref_packet_buffer_->InsertPacket(packet); | 90 ref_packet_buffer_->InsertPacket(packet); |
| 91 |
| 88 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( | 92 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( |
| 89 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)); |
| 90 reference_finder_->ManageFrame(std::move(frame)); | 94 reference_finder_->ManageFrame(std::move(frame)); |
| 91 } | 95 } |
| 92 | 96 |
| 93 void InsertVp8(uint16_t seq_num_start, | 97 void InsertVp8(uint16_t seq_num_start, |
| 94 uint16_t seq_num_end, | 98 uint16_t seq_num_end, |
| 95 bool keyframe, | 99 bool keyframe, |
| 96 int32_t pid = kNoPictureId, | 100 int32_t pid = kNoPictureId, |
| 97 uint8_t tid = kNoTemporalIdx, | 101 uint8_t tid = kNoTemporalIdx, |
| 98 int32_t tl0 = kNoTl0PicIdx, | 102 int32_t tl0 = kNoTl0PicIdx, |
| 99 bool sync = false) { | 103 bool sync = false) { |
| 100 VCMPacket packet; | 104 VCMPacket packet; |
| 101 packet.codec = kVideoCodecVP8; | 105 packet.codec = kVideoCodecVP8; |
| 102 packet.seqNum = seq_num_start; | 106 packet.seqNum = seq_num_start; |
| 107 packet.markerBit = (seq_num_start == seq_num_end); |
| 103 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; | 108 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; |
| 104 packet.video_header.codecHeader.VP8.pictureId = pid % (1 << 15); | 109 packet.video_header.codecHeader.VP8.pictureId = pid % (1 << 15); |
| 105 packet.video_header.codecHeader.VP8.temporalIdx = tid; | 110 packet.video_header.codecHeader.VP8.temporalIdx = tid; |
| 106 packet.video_header.codecHeader.VP8.tl0PicIdx = tl0; | 111 packet.video_header.codecHeader.VP8.tl0PicIdx = tl0; |
| 107 packet.video_header.codecHeader.VP8.layerSync = sync; | 112 packet.video_header.codecHeader.VP8.layerSync = sync; |
| 113 ref_packet_buffer_->InsertPacket(packet); |
| 108 | 114 |
| 109 ref_packet_buffer_->InsertPacket(packet); | 115 if (seq_num_start != seq_num_end) { |
| 116 packet.seqNum = seq_num_end; |
| 117 packet.markerBit = true; |
| 118 ref_packet_buffer_->InsertPacket(packet); |
| 119 } |
| 120 |
| 110 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( | 121 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( |
| 111 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)); |
| 112 reference_finder_->ManageFrame(std::move(frame)); | 123 reference_finder_->ManageFrame(std::move(frame)); |
| 113 } | 124 } |
| 114 | 125 |
| 115 void InsertVp9Gof(uint16_t seq_num_start, | 126 void InsertVp9Gof(uint16_t seq_num_start, |
| 116 uint16_t seq_num_end, | 127 uint16_t seq_num_end, |
| 117 bool keyframe, | 128 bool keyframe, |
| 118 int32_t pid = kNoPictureId, | 129 int32_t pid = kNoPictureId, |
| 119 uint8_t sid = kNoSpatialIdx, | 130 uint8_t sid = kNoSpatialIdx, |
| 120 uint8_t tid = kNoTemporalIdx, | 131 uint8_t tid = kNoTemporalIdx, |
| 121 int32_t tl0 = kNoTl0PicIdx, | 132 int32_t tl0 = kNoTl0PicIdx, |
| 122 bool up_switch = false, | 133 bool up_switch = false, |
| 123 GofInfoVP9* ss = nullptr) { | 134 GofInfoVP9* ss = nullptr) { |
| 124 VCMPacket packet; | 135 VCMPacket packet; |
| 125 packet.timestamp = pid; | 136 packet.timestamp = pid; |
| 126 packet.codec = kVideoCodecVP9; | 137 packet.codec = kVideoCodecVP9; |
| 127 packet.seqNum = seq_num_start; | 138 packet.seqNum = seq_num_start; |
| 139 packet.markerBit = (seq_num_start == seq_num_end); |
| 128 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; | 140 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; |
| 129 packet.video_header.codecHeader.VP9.flexible_mode = false; | 141 packet.video_header.codecHeader.VP9.flexible_mode = false; |
| 130 packet.video_header.codecHeader.VP9.picture_id = pid % (1 << 15); | 142 packet.video_header.codecHeader.VP9.picture_id = pid % (1 << 15); |
| 131 packet.video_header.codecHeader.VP9.temporal_idx = tid; | 143 packet.video_header.codecHeader.VP9.temporal_idx = tid; |
| 132 packet.video_header.codecHeader.VP9.spatial_idx = sid; | 144 packet.video_header.codecHeader.VP9.spatial_idx = sid; |
| 133 packet.video_header.codecHeader.VP9.tl0_pic_idx = tl0; | 145 packet.video_header.codecHeader.VP9.tl0_pic_idx = tl0; |
| 134 packet.video_header.codecHeader.VP9.temporal_up_switch = up_switch; | 146 packet.video_header.codecHeader.VP9.temporal_up_switch = up_switch; |
| 135 if (ss != nullptr) { | 147 if (ss != nullptr) { |
| 136 packet.video_header.codecHeader.VP9.ss_data_available = true; | 148 packet.video_header.codecHeader.VP9.ss_data_available = true; |
| 137 packet.video_header.codecHeader.VP9.gof = *ss; | 149 packet.video_header.codecHeader.VP9.gof = *ss; |
| 138 } | 150 } |
| 151 ref_packet_buffer_->InsertPacket(packet); |
| 139 | 152 |
| 140 ref_packet_buffer_->InsertPacket(packet); | 153 if (seq_num_start != seq_num_end) { |
| 154 packet.markerBit = true; |
| 155 packet.video_header.codecHeader.VP9.ss_data_available = false; |
| 156 packet.seqNum = seq_num_end; |
| 157 ref_packet_buffer_->InsertPacket(packet); |
| 158 } |
| 159 |
| 141 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( | 160 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( |
| 142 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)); |
| 143 reference_finder_->ManageFrame(std::move(frame)); | 162 reference_finder_->ManageFrame(std::move(frame)); |
| 144 } | 163 } |
| 145 | 164 |
| 146 void InsertVp9Flex(uint16_t seq_num_start, | 165 void InsertVp9Flex(uint16_t seq_num_start, |
| 147 uint16_t seq_num_end, | 166 uint16_t seq_num_end, |
| 148 bool keyframe, | 167 bool keyframe, |
| 149 int32_t pid = kNoPictureId, | 168 int32_t pid = kNoPictureId, |
| 150 uint8_t sid = kNoSpatialIdx, | 169 uint8_t sid = kNoSpatialIdx, |
| 151 uint8_t tid = kNoTemporalIdx, | 170 uint8_t tid = kNoTemporalIdx, |
| 152 int32_t tl0 = kNoTl0PicIdx, | 171 int32_t tl0 = kNoTl0PicIdx, |
| 153 bool inter = false, | 172 bool inter = false, |
| 154 std::vector<uint8_t> refs = std::vector<uint8_t>()) { | 173 std::vector<uint8_t> refs = std::vector<uint8_t>()) { |
| 155 VCMPacket packet; | 174 VCMPacket packet; |
| 156 packet.timestamp = pid; | 175 packet.timestamp = pid; |
| 157 packet.codec = kVideoCodecVP9; | 176 packet.codec = kVideoCodecVP9; |
| 158 packet.seqNum = seq_num_start; | 177 packet.seqNum = seq_num_start; |
| 178 packet.markerBit = (seq_num_start == seq_num_end); |
| 159 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; | 179 packet.frameType = keyframe ? kVideoFrameKey : kVideoFrameDelta; |
| 160 packet.video_header.codecHeader.VP9.inter_layer_predicted = inter; | 180 packet.video_header.codecHeader.VP9.inter_layer_predicted = inter; |
| 161 packet.video_header.codecHeader.VP9.flexible_mode = true; | 181 packet.video_header.codecHeader.VP9.flexible_mode = true; |
| 162 packet.video_header.codecHeader.VP9.picture_id = pid % (1 << 15); | 182 packet.video_header.codecHeader.VP9.picture_id = pid % (1 << 15); |
| 163 packet.video_header.codecHeader.VP9.temporal_idx = tid; | 183 packet.video_header.codecHeader.VP9.temporal_idx = tid; |
| 164 packet.video_header.codecHeader.VP9.spatial_idx = sid; | 184 packet.video_header.codecHeader.VP9.spatial_idx = sid; |
| 165 packet.video_header.codecHeader.VP9.tl0_pic_idx = tl0; | 185 packet.video_header.codecHeader.VP9.tl0_pic_idx = tl0; |
| 166 packet.video_header.codecHeader.VP9.num_ref_pics = refs.size(); | 186 packet.video_header.codecHeader.VP9.num_ref_pics = refs.size(); |
| 167 for (size_t i = 0; i < refs.size(); ++i) | 187 for (size_t i = 0; i < refs.size(); ++i) |
| 168 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); |
| 169 | 190 |
| 170 ref_packet_buffer_->InsertPacket(packet); | 191 if (seq_num_start != seq_num_end) { |
| 192 packet.seqNum = seq_num_end; |
| 193 packet.markerBit = true; |
| 194 ref_packet_buffer_->InsertPacket(packet); |
| 195 } |
| 196 |
| 171 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( | 197 std::unique_ptr<RtpFrameObject> frame(new RtpFrameObject( |
| 172 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)); |
| 173 reference_finder_->ManageFrame(std::move(frame)); | 199 reference_finder_->ManageFrame(std::move(frame)); |
| 174 } | 200 } |
| 175 | 201 |
| 176 // 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 |
| 177 // 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 |
| 178 // specified by |refs|. | 204 // specified by |refs|. |
| 179 template <typename... T> | 205 template <typename... T> |
| 180 void CheckReferences(uint16_t pid, uint16_t sidx, T... refs) const { | 206 void CheckReferences(uint16_t pid, uint16_t sidx, T... refs) const { |
| (...skipping 1045 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1226 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be | 1252 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be |
| 1227 // around M59). | 1253 // around M59). |
| 1228 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_PidJumpsBackwardThenForward) { | 1254 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_PidJumpsBackwardThenForward) { |
| 1229 GofInfoVP9 ss; | 1255 GofInfoVP9 ss; |
| 1230 ss.SetGofInfoVP9(kTemporalStructureMode1); | 1256 ss.SetGofInfoVP9(kTemporalStructureMode1); |
| 1231 | 1257 |
| 1232 VCMPacket packet; | 1258 VCMPacket packet; |
| 1233 packet.timestamp = 0; | 1259 packet.timestamp = 0; |
| 1234 packet.codec = kVideoCodecVP9; | 1260 packet.codec = kVideoCodecVP9; |
| 1235 packet.frameType = kVideoFrameKey; | 1261 packet.frameType = kVideoFrameKey; |
| 1262 packet.markerBit = true; |
| 1236 packet.video_header.codecHeader.VP9.flexible_mode = false; | 1263 packet.video_header.codecHeader.VP9.flexible_mode = false; |
| 1237 packet.video_header.codecHeader.VP9.picture_id = 1; | 1264 packet.video_header.codecHeader.VP9.picture_id = 1; |
| 1238 packet.video_header.codecHeader.VP9.temporal_idx = 0; | 1265 packet.video_header.codecHeader.VP9.temporal_idx = 0; |
| 1239 packet.video_header.codecHeader.VP9.spatial_idx = 0; | 1266 packet.video_header.codecHeader.VP9.spatial_idx = 0; |
| 1240 packet.video_header.codecHeader.VP9.tl0_pic_idx = 0; | 1267 packet.video_header.codecHeader.VP9.tl0_pic_idx = 0; |
| 1241 packet.video_header.codecHeader.VP9.temporal_up_switch = true; | 1268 packet.video_header.codecHeader.VP9.temporal_up_switch = true; |
| 1242 packet.video_header.codecHeader.VP9.ss_data_available = true; | 1269 packet.video_header.codecHeader.VP9.ss_data_available = true; |
| 1243 packet.video_header.codecHeader.VP9.gof = ss; | 1270 packet.video_header.codecHeader.VP9.gof = ss; |
| 1244 | 1271 |
| 1245 { | 1272 { |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1279 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be | 1306 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be |
| 1280 // around M59). | 1307 // around M59). |
| 1281 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_Tl0JumpsBackwardThenForward) { | 1308 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_Tl0JumpsBackwardThenForward) { |
| 1282 GofInfoVP9 ss; | 1309 GofInfoVP9 ss; |
| 1283 ss.SetGofInfoVP9(kTemporalStructureMode1); | 1310 ss.SetGofInfoVP9(kTemporalStructureMode1); |
| 1284 | 1311 |
| 1285 VCMPacket packet; | 1312 VCMPacket packet; |
| 1286 packet.timestamp = 0; | 1313 packet.timestamp = 0; |
| 1287 packet.codec = kVideoCodecVP9; | 1314 packet.codec = kVideoCodecVP9; |
| 1288 packet.frameType = kVideoFrameKey; | 1315 packet.frameType = kVideoFrameKey; |
| 1316 packet.markerBit = true; |
| 1289 packet.video_header.codecHeader.VP9.flexible_mode = false; | 1317 packet.video_header.codecHeader.VP9.flexible_mode = false; |
| 1290 packet.video_header.codecHeader.VP9.picture_id = 0; | 1318 packet.video_header.codecHeader.VP9.picture_id = 0; |
| 1291 packet.video_header.codecHeader.VP9.temporal_idx = 0; | 1319 packet.video_header.codecHeader.VP9.temporal_idx = 0; |
| 1292 packet.video_header.codecHeader.VP9.spatial_idx = 0; | 1320 packet.video_header.codecHeader.VP9.spatial_idx = 0; |
| 1293 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1; | 1321 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1; |
| 1294 packet.video_header.codecHeader.VP9.temporal_up_switch = true; | 1322 packet.video_header.codecHeader.VP9.temporal_up_switch = true; |
| 1295 packet.video_header.codecHeader.VP9.ss_data_available = true; | 1323 packet.video_header.codecHeader.VP9.ss_data_available = true; |
| 1296 packet.video_header.codecHeader.VP9.gof = ss; | 1324 packet.video_header.codecHeader.VP9.gof = ss; |
| 1297 { | 1325 { |
| 1298 ref_packet_buffer_->InsertPacket(packet); | 1326 ref_packet_buffer_->InsertPacket(packet); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1344 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be | 1372 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be |
| 1345 // around M59). | 1373 // around M59). |
| 1346 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_PidSmallJumpForward) { | 1374 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_PidSmallJumpForward) { |
| 1347 GofInfoVP9 ss; | 1375 GofInfoVP9 ss; |
| 1348 ss.SetGofInfoVP9(kTemporalStructureMode1); | 1376 ss.SetGofInfoVP9(kTemporalStructureMode1); |
| 1349 | 1377 |
| 1350 VCMPacket packet; | 1378 VCMPacket packet; |
| 1351 packet.timestamp = 0; | 1379 packet.timestamp = 0; |
| 1352 packet.codec = kVideoCodecVP9; | 1380 packet.codec = kVideoCodecVP9; |
| 1353 packet.frameType = kVideoFrameKey; | 1381 packet.frameType = kVideoFrameKey; |
| 1382 packet.markerBit = true; |
| 1354 packet.video_header.codecHeader.VP9.flexible_mode = false; | 1383 packet.video_header.codecHeader.VP9.flexible_mode = false; |
| 1355 packet.video_header.codecHeader.VP9.picture_id = 1; | 1384 packet.video_header.codecHeader.VP9.picture_id = 1; |
| 1356 packet.video_header.codecHeader.VP9.temporal_idx = 0; | 1385 packet.video_header.codecHeader.VP9.temporal_idx = 0; |
| 1357 packet.video_header.codecHeader.VP9.spatial_idx = 0; | 1386 packet.video_header.codecHeader.VP9.spatial_idx = 0; |
| 1358 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1; | 1387 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1; |
| 1359 packet.video_header.codecHeader.VP9.temporal_up_switch = true; | 1388 packet.video_header.codecHeader.VP9.temporal_up_switch = true; |
| 1360 packet.video_header.codecHeader.VP9.ss_data_available = true; | 1389 packet.video_header.codecHeader.VP9.ss_data_available = true; |
| 1361 packet.video_header.codecHeader.VP9.gof = ss; | 1390 packet.video_header.codecHeader.VP9.gof = ss; |
| 1362 { | 1391 { |
| 1363 ref_packet_buffer_->InsertPacket(packet); | 1392 ref_packet_buffer_->InsertPacket(packet); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1406 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be | 1435 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be |
| 1407 // around M59). | 1436 // around M59). |
| 1408 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_DropOldFrame) { | 1437 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_DropOldFrame) { |
| 1409 GofInfoVP9 ss; | 1438 GofInfoVP9 ss; |
| 1410 ss.SetGofInfoVP9(kTemporalStructureMode1); | 1439 ss.SetGofInfoVP9(kTemporalStructureMode1); |
| 1411 | 1440 |
| 1412 VCMPacket packet; | 1441 VCMPacket packet; |
| 1413 packet.timestamp = 0; | 1442 packet.timestamp = 0; |
| 1414 packet.codec = kVideoCodecVP9; | 1443 packet.codec = kVideoCodecVP9; |
| 1415 packet.frameType = kVideoFrameKey; | 1444 packet.frameType = kVideoFrameKey; |
| 1445 packet.markerBit = true; |
| 1416 packet.video_header.codecHeader.VP9.flexible_mode = false; | 1446 packet.video_header.codecHeader.VP9.flexible_mode = false; |
| 1417 packet.video_header.codecHeader.VP9.picture_id = 1; | 1447 packet.video_header.codecHeader.VP9.picture_id = 1; |
| 1418 packet.video_header.codecHeader.VP9.temporal_idx = 0; | 1448 packet.video_header.codecHeader.VP9.temporal_idx = 0; |
| 1419 packet.video_header.codecHeader.VP9.spatial_idx = 0; | 1449 packet.video_header.codecHeader.VP9.spatial_idx = 0; |
| 1420 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1; | 1450 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1; |
| 1421 packet.video_header.codecHeader.VP9.temporal_up_switch = true; | 1451 packet.video_header.codecHeader.VP9.temporal_up_switch = true; |
| 1422 packet.video_header.codecHeader.VP9.ss_data_available = true; | 1452 packet.video_header.codecHeader.VP9.ss_data_available = true; |
| 1423 packet.video_header.codecHeader.VP9.gof = ss; | 1453 packet.video_header.codecHeader.VP9.gof = ss; |
| 1424 { | 1454 { |
| 1425 ref_packet_buffer_->InsertPacket(packet); | 1455 ref_packet_buffer_->InsertPacket(packet); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1448 reference_finder_->ManageFrame(std::move(frame)); | 1478 reference_finder_->ManageFrame(std::move(frame)); |
| 1449 } | 1479 } |
| 1450 | 1480 |
| 1451 ASSERT_EQ(2UL, frames_from_callback_.size()); | 1481 ASSERT_EQ(2UL, frames_from_callback_.size()); |
| 1452 CheckReferencesVp9(1, 0); | 1482 CheckReferencesVp9(1, 0); |
| 1453 CheckReferencesVp9(129, 0); | 1483 CheckReferencesVp9(129, 0); |
| 1454 } | 1484 } |
| 1455 | 1485 |
| 1456 } // namespace video_coding | 1486 } // namespace video_coding |
| 1457 } // namespace webrtc | 1487 } // namespace webrtc |
| OLD | NEW |