From ee214df40c0fa9f25ca08e2c4413a23bcd727f6e Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Mon, 28 Oct 2024 15:37:30 +0000 Subject: [PATCH 1/2] Remove get_frame_by_name test util --- packaging/check_glibcxx.py | 4 +- test/decoders/test_video_decoder.py | 28 ++++++++----- test/decoders/test_video_decoder_ops.py | 40 ++++++++++++++----- .../nasa_13013.mp4.stream3.frame000180.pt | 1 + .../nasa_13013.mp4.stream3.frame000289.pt | 1 + test/utils.py | 3 -- 6 files changed, 52 insertions(+), 25 deletions(-) create mode 120000 test/resources/nasa_13013.mp4.stream3.frame000180.pt create mode 120000 test/resources/nasa_13013.mp4.stream3.frame000289.pt diff --git a/packaging/check_glibcxx.py b/packaging/check_glibcxx.py index 37ff654c..b7efd981 100644 --- a/packaging/check_glibcxx.py +++ b/packaging/check_glibcxx.py @@ -46,7 +46,9 @@ all_symbols.add(match.group(0)) if not all_symbols: - raise ValueError(f"No GLIBCXX symbols found in {symbol_matches}. Something is wrong.") + raise ValueError( + f"No GLIBCXX symbols found in {symbol_matches}. Something is wrong." + ) all_versions = (symbol.split("_")[1].split(".") for symbol in all_symbols) all_versions = (tuple(int(v) for v in version) for version in all_versions) diff --git a/test/decoders/test_video_decoder.py b/test/decoders/test_video_decoder.py index b34f02aa..19ca1a20 100644 --- a/test/decoders/test_video_decoder.py +++ b/test/decoders/test_video_decoder.py @@ -61,8 +61,8 @@ def test_getitem_int(self, num_ffmpeg_threads): ref_frame0 = NASA_VIDEO.get_frame_data_by_index(0) ref_frame1 = NASA_VIDEO.get_frame_data_by_index(1) - ref_frame180 = NASA_VIDEO.get_frame_by_name("time6.000000") - ref_frame_last = NASA_VIDEO.get_frame_by_name("time12.979633") + ref_frame180 = NASA_VIDEO.get_frame_data_by_index(180) + ref_frame_last = NASA_VIDEO.get_frame_data_by_index(289) assert_tensor_equal(ref_frame0, decoder[0]) assert_tensor_equal(ref_frame1, decoder[1]) @@ -74,8 +74,8 @@ def test_getitem_numpy_int(self): ref_frame0 = NASA_VIDEO.get_frame_data_by_index(0) ref_frame1 = NASA_VIDEO.get_frame_data_by_index(1) - ref_frame180 = NASA_VIDEO.get_frame_by_name("time6.000000") - ref_frame_last = NASA_VIDEO.get_frame_by_name("time12.979633") + ref_frame180 = NASA_VIDEO.get_frame_data_by_index(180) + ref_frame_last = NASA_VIDEO.get_frame_data_by_index(289) # test against numpy.int64 assert_tensor_equal(ref_frame0, decoder[numpy.int64(0)]) @@ -140,7 +140,7 @@ def test_getitem_slice(self): ) assert_tensor_equal(ref8, slice8) - ref180 = NASA_VIDEO.get_frame_by_name("time6.000000") + ref180 = NASA_VIDEO.get_frame_data_by_index(180) slice180 = decoder[180:181] assert slice180.shape == torch.Size( [ @@ -258,8 +258,8 @@ def test_iteration(self): ref_frame1 = NASA_VIDEO.get_frame_data_by_index(1) ref_frame9 = NASA_VIDEO.get_frame_data_by_index(9) ref_frame35 = NASA_VIDEO.get_frame_data_by_index(35) - ref_frame180 = NASA_VIDEO.get_frame_by_name("time6.000000") - ref_frame_last = NASA_VIDEO.get_frame_by_name("time12.979633") + ref_frame180 = NASA_VIDEO.get_frame_data_by_index(180) + ref_frame_last = NASA_VIDEO.get_frame_data_by_index(289) # Access an arbitrary frame to make sure that the later iteration # still works as expected. The underlying C++ decoder object is @@ -392,10 +392,16 @@ def test_get_frames_at_fails(self): def test_get_frame_played_at(self): decoder = VideoDecoder(NASA_VIDEO.path) - ref_frame6 = NASA_VIDEO.get_frame_by_name("time6.000000") - assert_tensor_equal(ref_frame6, decoder.get_frame_played_at(6.006).data) - assert_tensor_equal(ref_frame6, decoder.get_frame_played_at(6.02).data) - assert_tensor_equal(ref_frame6, decoder.get_frame_played_at(6.039366).data) + ref_frame_played_at_6 = NASA_VIDEO.get_frame_data_by_index(180) + assert_tensor_equal( + ref_frame_played_at_6, decoder.get_frame_played_at(6.006).data + ) + assert_tensor_equal( + ref_frame_played_at_6, decoder.get_frame_played_at(6.02).data + ) + assert_tensor_equal( + ref_frame_played_at_6, decoder.get_frame_played_at(6.039366).data + ) assert isinstance(decoder.get_frame_played_at(6.02).pts_seconds, float) assert isinstance(decoder.get_frame_played_at(6.02).duration_seconds, float) diff --git a/test/decoders/test_video_decoder_ops.py b/test/decoders/test_video_decoder_ops.py index d7291c30..f81e273d 100644 --- a/test/decoders/test_video_decoder_ops.py +++ b/test/decoders/test_video_decoder_ops.py @@ -40,6 +40,8 @@ torch._dynamo.config.capture_dynamic_output_shape_ops = True +INDEX_OF_FRAME_AT_6_SECONDS = 180 + class ReferenceDecoder: def __init__(self): @@ -67,7 +69,9 @@ def test_seek_and_next(self): assert_tensor_equal(frame1, reference_frame1) seek_to_pts(decoder, 6.0) frame_time6, _, _ = get_next_frame(decoder) - reference_frame_time6 = NASA_VIDEO.get_frame_by_name("time6.000000") + reference_frame_time6 = NASA_VIDEO.get_frame_data_by_index( + INDEX_OF_FRAME_AT_6_SECONDS + ) assert_tensor_equal(frame_time6, reference_frame_time6) def test_get_frame_at_pts(self): @@ -76,7 +80,9 @@ def test_get_frame_at_pts(self): # This frame has pts=6.006 and duration=0.033367, so it should be visible # at timestamps in the range [6.006, 6.039367) (not including the last timestamp). frame6, _, _ = get_frame_at_pts(decoder, 6.006) - reference_frame6 = NASA_VIDEO.get_frame_by_name("time6.000000") + reference_frame6 = NASA_VIDEO.get_frame_data_by_index( + INDEX_OF_FRAME_AT_6_SECONDS + ) assert_tensor_equal(frame6, reference_frame6) frame6, _, _ = get_frame_at_pts(decoder, 6.02) assert_tensor_equal(frame6, reference_frame6) @@ -98,7 +104,9 @@ def test_get_frame_at_index(self): assert_tensor_equal(frame0, reference_frame0) # The frame that is played at 6 seconds is frame 180 from a 0-based index. frame6, _, _ = get_frame_at_index(decoder, stream_index=3, frame_index=180) - reference_frame6 = NASA_VIDEO.get_frame_by_name("time6.000000") + reference_frame6 = NASA_VIDEO.get_frame_data_by_index( + INDEX_OF_FRAME_AT_6_SECONDS + ) assert_tensor_equal(frame6, reference_frame6) def test_get_frame_with_info_at_index(self): @@ -108,7 +116,9 @@ def test_get_frame_with_info_at_index(self): frame6, pts, duration = get_frame_at_index( decoder, stream_index=3, frame_index=180 ) - reference_frame6 = NASA_VIDEO.get_frame_by_name("time6.000000") + reference_frame6 = NASA_VIDEO.get_frame_data_by_index( + INDEX_OF_FRAME_AT_6_SECONDS + ) assert_tensor_equal(frame6, reference_frame6) assert pts.item() == pytest.approx(6.006, rel=1e-3) assert duration.item() == pytest.approx(0.03337, rel=1e-3) @@ -121,7 +131,9 @@ def test_get_frames_at_indices(self): decoder, stream_index=3, frame_indices=[0, 180] ) reference_frame0 = NASA_VIDEO.get_frame_data_by_index(0) - reference_frame180 = NASA_VIDEO.get_frame_by_name("time6.000000") + reference_frame180 = NASA_VIDEO.get_frame_data_by_index( + INDEX_OF_FRAME_AT_6_SECONDS + ) assert_tensor_equal(frames0and180[0], reference_frame0) assert_tensor_equal(frames0and180[1], reference_frame180) @@ -301,7 +313,7 @@ def test_throws_exception_at_eof(self): add_video_stream(decoder) seek_to_pts(decoder, 12.979633) last_frame, _, _ = get_next_frame(decoder) - reference_last_frame = NASA_VIDEO.get_frame_by_name("time12.979633") + reference_last_frame = NASA_VIDEO.get_frame_data_by_index(289) assert_tensor_equal(last_frame, reference_last_frame) with pytest.raises(IndexError, match="no more frames"): get_next_frame(decoder) @@ -331,7 +343,9 @@ def get_frame1_and_frame_time6(decoder): decoder = create_from_file(str(NASA_VIDEO.path)) frame0, frame_time6 = get_frame1_and_frame_time6(decoder) reference_frame0 = NASA_VIDEO.get_frame_data_by_index(0) - reference_frame_time6 = NASA_VIDEO.get_frame_by_name("time6.000000") + reference_frame_time6 = NASA_VIDEO.get_frame_data_by_index( + INDEX_OF_FRAME_AT_6_SECONDS + ) assert_tensor_equal(frame0, reference_frame0) assert_tensor_equal(frame_time6, reference_frame_time6) @@ -349,7 +363,9 @@ def class_based_get_frame1_and_frame_time6( decoder = ReferenceDecoder() frame0, frame_time6 = class_based_get_frame1_and_frame_time6(decoder) reference_frame0 = NASA_VIDEO.get_frame_data_by_index(0) - reference_frame_time6 = NASA_VIDEO.get_frame_by_name("time6.000000") + reference_frame_time6 = NASA_VIDEO.get_frame_data_by_index( + INDEX_OF_FRAME_AT_6_SECONDS + ) assert_tensor_equal(frame0, reference_frame0) assert_tensor_equal(frame_time6, reference_frame_time6) @@ -376,7 +392,9 @@ def test_create_decoder(self, create_from): assert_tensor_equal(frame1, reference_frame1) seek_to_pts(decoder, 6.0) frame_time6, _, _ = get_next_frame(decoder) - reference_frame_time6 = NASA_VIDEO.get_frame_by_name("time6.000000") + reference_frame_time6 = NASA_VIDEO.get_frame_data_by_index( + INDEX_OF_FRAME_AT_6_SECONDS + ) assert_tensor_equal(frame_time6, reference_frame_time6) # Keeping the metadata tests below for now, but we should remove them @@ -459,7 +477,9 @@ def test_color_conversion_library(self, color_conversion_library): assert_tensor_equal(frame1, reference_frame1) seek_to_pts(decoder, 6.0) frame_time6, *_ = get_next_frame(decoder) - reference_frame_time6 = NASA_VIDEO.get_frame_by_name("time6.000000") + reference_frame_time6 = NASA_VIDEO.get_frame_data_by_index( + INDEX_OF_FRAME_AT_6_SECONDS + ) assert_tensor_equal(frame_time6, reference_frame_time6) # We choose arbitrary values for width and height scaling to get better diff --git a/test/resources/nasa_13013.mp4.stream3.frame000180.pt b/test/resources/nasa_13013.mp4.stream3.frame000180.pt new file mode 120000 index 00000000..2e21a14e --- /dev/null +++ b/test/resources/nasa_13013.mp4.stream3.frame000180.pt @@ -0,0 +1 @@ +nasa_13013.mp4.time6.000000.pt \ No newline at end of file diff --git a/test/resources/nasa_13013.mp4.stream3.frame000289.pt b/test/resources/nasa_13013.mp4.stream3.frame000289.pt new file mode 120000 index 00000000..f7a7a65f --- /dev/null +++ b/test/resources/nasa_13013.mp4.stream3.frame000289.pt @@ -0,0 +1 @@ +nasa_13013.mp4.time12.979633.pt \ No newline at end of file diff --git a/test/utils.py b/test/utils.py index 2cd10bf1..57397073 100644 --- a/test/utils.py +++ b/test/utils.py @@ -152,9 +152,6 @@ def get_frame_info( return self.frames[stream_index][idx] - def get_frame_by_name(self, name: str) -> torch.Tensor: - return _load_tensor_from_file(f"{self.filename}.{name}.pt") - @property def empty_pts_seconds(self) -> torch.Tensor: return torch.empty([0], dtype=torch.float64) From bb3b2c7ca736e88d1ba176863894866b28e26cc9 Mon Sep 17 00:00:00 2001 From: Nicolas Hug Date: Mon, 28 Oct 2024 15:38:57 +0000 Subject: [PATCH 2/2] revert --- packaging/check_glibcxx.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packaging/check_glibcxx.py b/packaging/check_glibcxx.py index b7efd981..37ff654c 100644 --- a/packaging/check_glibcxx.py +++ b/packaging/check_glibcxx.py @@ -46,9 +46,7 @@ all_symbols.add(match.group(0)) if not all_symbols: - raise ValueError( - f"No GLIBCXX symbols found in {symbol_matches}. Something is wrong." - ) + raise ValueError(f"No GLIBCXX symbols found in {symbol_matches}. Something is wrong.") all_versions = (symbol.split("_")[1].split(".") for symbol in all_symbols) all_versions = (tuple(int(v) for v in version) for version in all_versions)