@@ -1417,13 +1417,23 @@ def test_get_frames_at_tensor_indices(self):
1417
1417
1418
1418
@needs_cuda
1419
1419
@pytest .mark .parametrize (
1420
- "asset" , (NASA_VIDEO , TEST_SRC_2_720P , BT709_FULL_RANGE , TEST_SRC_2_720P_H265 )
1420
+ "asset" ,
1421
+ (
1422
+ NASA_VIDEO ,
1423
+ TEST_SRC_2_720P ,
1424
+ BT709_FULL_RANGE ,
1425
+ TEST_SRC_2_720P_H265 ,
1426
+ AV1_VIDEO ,
1427
+ ),
1421
1428
)
1422
1429
@pytest .mark .parametrize ("contiguous_indices" , (True , False ))
1423
1430
@pytest .mark .parametrize ("seek_mode" , ("exact" , "approximate" ))
1424
1431
def test_beta_cuda_interface_get_frame_at (
1425
1432
self , asset , contiguous_indices , seek_mode
1426
1433
):
1434
+ if asset == AV1_VIDEO and seek_mode == "approximate" :
1435
+ pytest .skip ("AV1 asset doesn't work with approximate mode" )
1436
+
1427
1437
ref_decoder = VideoDecoder (asset .path , device = "cuda" , seek_mode = seek_mode )
1428
1438
beta_decoder = VideoDecoder (
1429
1439
asset .path , device = "cuda:0:beta" , seek_mode = seek_mode
@@ -1449,13 +1459,23 @@ def test_beta_cuda_interface_get_frame_at(
1449
1459
1450
1460
@needs_cuda
1451
1461
@pytest .mark .parametrize (
1452
- "asset" , (NASA_VIDEO , TEST_SRC_2_720P , BT709_FULL_RANGE , TEST_SRC_2_720P_H265 )
1462
+ "asset" ,
1463
+ (
1464
+ NASA_VIDEO ,
1465
+ TEST_SRC_2_720P ,
1466
+ BT709_FULL_RANGE ,
1467
+ TEST_SRC_2_720P_H265 ,
1468
+ AV1_VIDEO ,
1469
+ ),
1453
1470
)
1454
1471
@pytest .mark .parametrize ("contiguous_indices" , (True , False ))
1455
1472
@pytest .mark .parametrize ("seek_mode" , ("exact" , "approximate" ))
1456
1473
def test_beta_cuda_interface_get_frames_at (
1457
1474
self , asset , contiguous_indices , seek_mode
1458
1475
):
1476
+ if asset == AV1_VIDEO and seek_mode == "approximate" :
1477
+ pytest .skip ("AV1 asset doesn't work with approximate mode" )
1478
+
1459
1479
ref_decoder = VideoDecoder (asset .path , device = "cuda" , seek_mode = seek_mode )
1460
1480
beta_decoder = VideoDecoder (
1461
1481
asset .path , device = "cuda:0:beta" , seek_mode = seek_mode
@@ -1482,10 +1502,20 @@ def test_beta_cuda_interface_get_frames_at(
1482
1502
1483
1503
@needs_cuda
1484
1504
@pytest .mark .parametrize (
1485
- "asset" , (NASA_VIDEO , TEST_SRC_2_720P , BT709_FULL_RANGE , TEST_SRC_2_720P_H265 )
1505
+ "asset" ,
1506
+ (
1507
+ NASA_VIDEO ,
1508
+ TEST_SRC_2_720P ,
1509
+ BT709_FULL_RANGE ,
1510
+ TEST_SRC_2_720P_H265 ,
1511
+ AV1_VIDEO ,
1512
+ ),
1486
1513
)
1487
1514
@pytest .mark .parametrize ("seek_mode" , ("exact" , "approximate" ))
1488
1515
def test_beta_cuda_interface_get_frame_played_at (self , asset , seek_mode ):
1516
+ if asset == AV1_VIDEO and seek_mode == "approximate" :
1517
+ pytest .skip ("AV1 asset doesn't work with approximate mode" )
1518
+
1489
1519
ref_decoder = VideoDecoder (asset .path , device = "cuda" , seek_mode = seek_mode )
1490
1520
beta_decoder = VideoDecoder (
1491
1521
asset .path , device = "cuda:0:beta" , seek_mode = seek_mode
@@ -1506,10 +1536,20 @@ def test_beta_cuda_interface_get_frame_played_at(self, asset, seek_mode):
1506
1536
1507
1537
@needs_cuda
1508
1538
@pytest .mark .parametrize (
1509
- "asset" , (NASA_VIDEO , TEST_SRC_2_720P , BT709_FULL_RANGE , TEST_SRC_2_720P_H265 )
1539
+ "asset" ,
1540
+ (
1541
+ NASA_VIDEO ,
1542
+ TEST_SRC_2_720P ,
1543
+ BT709_FULL_RANGE ,
1544
+ TEST_SRC_2_720P_H265 ,
1545
+ AV1_VIDEO ,
1546
+ ),
1510
1547
)
1511
1548
@pytest .mark .parametrize ("seek_mode" , ("exact" , "approximate" ))
1512
1549
def test_beta_cuda_interface_get_frames_played_at (self , asset , seek_mode ):
1550
+ if asset == AV1_VIDEO and seek_mode == "approximate" :
1551
+ pytest .skip ("AV1 asset doesn't work with approximate mode" )
1552
+
1513
1553
ref_decoder = VideoDecoder (asset .path , device = "cuda" , seek_mode = seek_mode )
1514
1554
beta_decoder = VideoDecoder (
1515
1555
asset .path , device = "cuda:0:beta" , seek_mode = seek_mode
@@ -1531,10 +1571,19 @@ def test_beta_cuda_interface_get_frames_played_at(self, asset, seek_mode):
1531
1571
1532
1572
@needs_cuda
1533
1573
@pytest .mark .parametrize (
1534
- "asset" , (NASA_VIDEO , TEST_SRC_2_720P , BT709_FULL_RANGE , TEST_SRC_2_720P_H265 )
1574
+ "asset" ,
1575
+ (
1576
+ NASA_VIDEO ,
1577
+ TEST_SRC_2_720P ,
1578
+ BT709_FULL_RANGE ,
1579
+ TEST_SRC_2_720P_H265 ,
1580
+ AV1_VIDEO ,
1581
+ ),
1535
1582
)
1536
1583
@pytest .mark .parametrize ("seek_mode" , ("exact" , "approximate" ))
1537
1584
def test_beta_cuda_interface_backwards (self , asset , seek_mode ):
1585
+ if asset == AV1_VIDEO and seek_mode == "approximate" :
1586
+ pytest .skip ("AV1 asset doesn't work with approximate mode" )
1538
1587
1539
1588
ref_decoder = VideoDecoder (asset .path , device = "cuda" , seek_mode = seek_mode )
1540
1589
beta_decoder = VideoDecoder (
@@ -1543,8 +1592,14 @@ def test_beta_cuda_interface_backwards(self, asset, seek_mode):
1543
1592
1544
1593
assert ref_decoder .metadata == beta_decoder .metadata
1545
1594
1546
- for frame_index in [0 , 100 , 10 , 50 , 20 , 200 , 150 , 389 ]:
1595
+ for frame_index in [0 , 1 , 2 , 1 , 0 , 100 , 10 , 50 , 20 , 200 , 150 , 150 , 150 , 389 , 2 ]:
1596
+ # This is ugly, but OK: the indices values above are relevant for
1597
+ # the NASA_VIDEO. We need to avoid going out of bounds for other
1598
+ # videos so we cap the frame_index. This test still serves its
1599
+ # purpose: no matter what the range of the video, we're still doing
1600
+ # backwards seeks.
1547
1601
frame_index = min (frame_index , len (ref_decoder ) - 1 )
1602
+
1548
1603
ref_frame = ref_decoder .get_frame_at (frame_index )
1549
1604
beta_frame = beta_decoder .get_frame_at (frame_index )
1550
1605
torch .testing .assert_close (beta_frame .data , ref_frame .data , rtol = 0 , atol = 0 )
@@ -1568,8 +1623,6 @@ def test_beta_cuda_interface_small_h265(self):
1568
1623
1569
1624
@needs_cuda
1570
1625
def test_beta_cuda_interface_error (self ):
1571
- with pytest .raises (RuntimeError , match = "Unsupported codec type: av1" ):
1572
- VideoDecoder (AV1_VIDEO .path , device = "cuda:0:beta" )
1573
1626
with pytest .raises (RuntimeError , match = "Unsupported device" ):
1574
1627
VideoDecoder (NASA_VIDEO .path , device = "cuda:0:bad_variant" )
1575
1628
0 commit comments