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

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

Issue 2969043002: Remove temporary VP9 pid/tl0 jump fix. (Closed)
Patch Set: Created 3 years, 5 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
« no previous file with comments | « webrtc/modules/video_coding/rtp_frame_reference_finder.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1265 matching lines...) Expand 10 before | Expand all | Expand 10 after
1276 CheckReferencesVp9(pid + 4, 0, pid + 2); 1276 CheckReferencesVp9(pid + 4, 0, pid + 2);
1277 CheckReferencesVp9(pid + 4, 1, pid + 3); 1277 CheckReferencesVp9(pid + 4, 1, pid + 3);
1278 CheckReferencesVp9(pid + 5, 1, pid + 4); 1278 CheckReferencesVp9(pid + 5, 1, pid + 4);
1279 CheckReferencesVp9(pid + 6, 0, pid + 4); 1279 CheckReferencesVp9(pid + 6, 0, pid + 4);
1280 CheckReferencesVp9(pid + 6, 1, pid + 5); 1280 CheckReferencesVp9(pid + 6, 1, pid + 5);
1281 CheckReferencesVp9(pid + 7, 1, pid + 6); 1281 CheckReferencesVp9(pid + 7, 1, pid + 6);
1282 CheckReferencesVp9(pid + 8, 0, pid + 6); 1282 CheckReferencesVp9(pid + 8, 0, pid + 6);
1283 CheckReferencesVp9(pid + 8, 1, pid + 7); 1283 CheckReferencesVp9(pid + 8, 1, pid + 7);
1284 } 1284 }
1285 1285
1286 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be
1287 // around M59).
1288 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_PidJumpsForwardNoTl0PicIdx) {
1289 GofInfoVP9 ss;
1290 ss.SetGofInfoVP9(kTemporalStructureMode1);
1291
1292 VCMPacket packet;
1293 packet.timestamp = 0;
1294 packet.codec = kVideoCodecVP9;
1295 packet.frameType = kVideoFrameKey;
1296 packet.markerBit = true;
1297 packet.video_header.codecHeader.VP9.flexible_mode = false;
1298 packet.video_header.codecHeader.VP9.picture_id = 0;
1299 packet.video_header.codecHeader.VP9.temporal_idx = kNoTemporalIdx;
1300 packet.video_header.codecHeader.VP9.spatial_idx = kNoSpatialIdx;
1301 packet.video_header.codecHeader.VP9.tl0_pic_idx = kNoTl0PicIdx;
1302 packet.video_header.codecHeader.VP9.temporal_up_switch = true;
1303 packet.video_header.codecHeader.VP9.ss_data_available = true;
1304 packet.video_header.codecHeader.VP9.gof = ss;
1305
1306 ref_packet_buffer_->InsertPacket(&packet);
1307 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1308 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1309
1310 packet.timestamp = 1;
1311 packet.video_header.codecHeader.VP9.picture_id = 5000;
1312
1313 ref_packet_buffer_->InsertPacket(&packet);
1314 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1315 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1316
1317 ASSERT_EQ(2UL, frames_from_callback_.size());
1318 CheckReferencesVp9(0, 0);
1319 CheckReferencesVp9(128, 0);
1320 }
1321
1322 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be
1323 // around M59).
1324 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_PidJumpsBackwardThenForward) {
1325 GofInfoVP9 ss;
1326 ss.SetGofInfoVP9(kTemporalStructureMode1);
1327
1328 VCMPacket packet;
1329 packet.timestamp = 0;
1330 packet.codec = kVideoCodecVP9;
1331 packet.frameType = kVideoFrameKey;
1332 packet.markerBit = true;
1333 packet.video_header.codecHeader.VP9.flexible_mode = false;
1334 packet.video_header.codecHeader.VP9.picture_id = 1;
1335 packet.video_header.codecHeader.VP9.temporal_idx = 0;
1336 packet.video_header.codecHeader.VP9.spatial_idx = 0;
1337 packet.video_header.codecHeader.VP9.tl0_pic_idx = 0;
1338 packet.video_header.codecHeader.VP9.temporal_up_switch = true;
1339 packet.video_header.codecHeader.VP9.ss_data_available = true;
1340 packet.video_header.codecHeader.VP9.gof = ss;
1341
1342 ref_packet_buffer_->InsertPacket(&packet);
1343 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1344 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1345
1346 // Timestamp goes forward but pid goes backwards.
1347 packet.timestamp = 1;
1348 packet.video_header.codecHeader.VP9.picture_id = 0;
1349
1350 ref_packet_buffer_->InsertPacket(&packet);
1351 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1352 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1353
1354 packet.timestamp = 2;
1355 packet.video_header.codecHeader.VP9.picture_id = 5000;
1356
1357 ref_packet_buffer_->InsertPacket(&packet);
1358 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1359 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1360
1361 ASSERT_EQ(3UL, frames_from_callback_.size());
1362 CheckReferencesVp9(1, 0);
1363 CheckReferencesVp9(129, 0);
1364 CheckReferencesVp9(257, 0);
1365 }
1366
1367 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be
1368 // around M59).
1369 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_Tl0JumpsBackwardThenForward) {
1370 GofInfoVP9 ss;
1371 ss.SetGofInfoVP9(kTemporalStructureMode1);
1372
1373 VCMPacket packet;
1374 packet.timestamp = 0;
1375 packet.codec = kVideoCodecVP9;
1376 packet.frameType = kVideoFrameKey;
1377 packet.markerBit = true;
1378 packet.video_header.codecHeader.VP9.flexible_mode = false;
1379 packet.video_header.codecHeader.VP9.picture_id = 0;
1380 packet.video_header.codecHeader.VP9.temporal_idx = 0;
1381 packet.video_header.codecHeader.VP9.spatial_idx = 0;
1382 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1;
1383 packet.video_header.codecHeader.VP9.temporal_up_switch = true;
1384 packet.video_header.codecHeader.VP9.ss_data_available = true;
1385 packet.video_header.codecHeader.VP9.gof = ss;
1386 ref_packet_buffer_->InsertPacket(&packet);
1387 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1388 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1389
1390 packet.timestamp = 1;
1391 packet.video_header.codecHeader.VP9.picture_id = 1;
1392 packet.video_header.codecHeader.VP9.tl0_pic_idx = 0;
1393 ref_packet_buffer_->InsertPacket(&packet);
1394 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1395 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1396
1397 packet.timestamp = 2;
1398 packet.frameType = kVideoFrameDelta;
1399 packet.video_header.codecHeader.VP9.picture_id = 2;
1400 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2;
1401 ref_packet_buffer_->InsertPacket(&packet);
1402 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1403 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1404
1405 packet.timestamp = 3;
1406 packet.frameType = kVideoFrameKey;
1407 packet.video_header.codecHeader.VP9.ss_data_available = true;
1408 packet.video_header.codecHeader.VP9.picture_id = 3;
1409 packet.video_header.codecHeader.VP9.tl0_pic_idx = 129;
1410 ref_packet_buffer_->InsertPacket(&packet);
1411 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1412 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1413
1414 ASSERT_EQ(4UL, frames_from_callback_.size());
1415 CheckReferencesVp9(0, 0);
1416 CheckReferencesVp9(128, 0);
1417 CheckReferencesVp9(129, 0, 128);
1418 CheckReferencesVp9(257, 0);
1419 }
1420
1421 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be
1422 // around M59).
1423 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_PidSmallJumpForward) {
1424 GofInfoVP9 ss;
1425 ss.SetGofInfoVP9(kTemporalStructureMode1);
1426
1427 VCMPacket packet;
1428 packet.timestamp = 0;
1429 packet.codec = kVideoCodecVP9;
1430 packet.frameType = kVideoFrameKey;
1431 packet.markerBit = true;
1432 packet.video_header.codecHeader.VP9.flexible_mode = false;
1433 packet.video_header.codecHeader.VP9.picture_id = 1;
1434 packet.video_header.codecHeader.VP9.temporal_idx = 0;
1435 packet.video_header.codecHeader.VP9.spatial_idx = 0;
1436 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1;
1437 packet.video_header.codecHeader.VP9.temporal_up_switch = true;
1438 packet.video_header.codecHeader.VP9.ss_data_available = true;
1439 packet.video_header.codecHeader.VP9.gof = ss;
1440 ref_packet_buffer_->InsertPacket(&packet);
1441 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1442 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1443
1444 packet.timestamp = 1;
1445 packet.video_header.codecHeader.VP9.picture_id = 2;
1446 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2;
1447 ref_packet_buffer_->InsertPacket(&packet);
1448 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1449 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1450
1451 packet.timestamp = 2;
1452 packet.video_header.codecHeader.VP9.picture_id = 3;
1453 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2;
1454 ref_packet_buffer_->InsertPacket(&packet);
1455 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1456 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1457
1458 packet.timestamp = 2;
1459 packet.video_header.codecHeader.VP9.picture_id = 4;
1460 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1;
1461 ref_packet_buffer_->InsertPacket(&packet);
1462 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1463 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1464
1465 ASSERT_EQ(4UL, frames_from_callback_.size());
1466 CheckReferencesVp9(1, 0);
1467 CheckReferencesVp9(2, 0);
1468 CheckReferencesVp9(3, 0);
1469 CheckReferencesVp9(131, 0);
1470 }
1471
1472 // TODO(philipel): Remove when VP9 PID/TL0 does not jump mid-stream (should be
1473 // around M59).
1474 TEST_F(TestRtpFrameReferenceFinder, Vp9PidFix_DropOldFrame) {
1475 GofInfoVP9 ss;
1476 ss.SetGofInfoVP9(kTemporalStructureMode1);
1477
1478 VCMPacket packet;
1479 packet.timestamp = 0;
1480 packet.codec = kVideoCodecVP9;
1481 packet.frameType = kVideoFrameKey;
1482 packet.markerBit = true;
1483 packet.video_header.codecHeader.VP9.flexible_mode = false;
1484 packet.video_header.codecHeader.VP9.picture_id = 1;
1485 packet.video_header.codecHeader.VP9.temporal_idx = 0;
1486 packet.video_header.codecHeader.VP9.spatial_idx = 0;
1487 packet.video_header.codecHeader.VP9.tl0_pic_idx = 1;
1488 packet.video_header.codecHeader.VP9.temporal_up_switch = true;
1489 packet.video_header.codecHeader.VP9.ss_data_available = true;
1490 packet.video_header.codecHeader.VP9.gof = ss;
1491 ref_packet_buffer_->InsertPacket(&packet);
1492 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1493 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1494
1495 packet.timestamp = 1;
1496 packet.video_header.codecHeader.VP9.picture_id = 0;
1497 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2;
1498 ref_packet_buffer_->InsertPacket(&packet);
1499 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1500 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1501
1502 packet.timestamp = 0;
1503 packet.video_header.codecHeader.VP9.picture_id = 3;
1504 packet.video_header.codecHeader.VP9.tl0_pic_idx = 2;
1505 ref_packet_buffer_->InsertPacket(&packet);
1506 reference_finder_->ManageFrame(std::unique_ptr<RtpFrameObject>(
1507 new RtpFrameObject(ref_packet_buffer_, 0, 0, 0, 0, 0)));
1508
1509 ASSERT_EQ(2UL, frames_from_callback_.size());
1510 CheckReferencesVp9(1, 0);
1511 CheckReferencesVp9(129, 0);
1512 }
1513
1514 } // namespace video_coding 1286 } // namespace video_coding
1515 } // namespace webrtc 1287 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/rtp_frame_reference_finder.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698