Skip to content

Commit b677863

Browse files
author
Molly Xu
committed
address feedback
1 parent 20a7227 commit b677863

File tree

2 files changed

+4
-58
lines changed

2 files changed

+4
-58
lines changed

src/torchcodec/_core/_metadata.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def __repr__(self):
5252
return s
5353

5454

55-
@dataclass(repr=False)
55+
@dataclass
5656
class VideoStreamMetadata(StreamMetadata):
5757
"""Metadata of a single video stream."""
5858

@@ -107,6 +107,9 @@ class VideoStreamMetadata(StreamMetadata):
107107
if :term:`scan` was performed, computes from
108108
num_frames and duration, otherwise uses header value."""
109109

110+
def __repr__(self):
111+
return super().__repr__()
112+
110113

111114
@dataclass
112115
class AudioStreamMetadata(StreamMetadata):

test/test_decoders.py

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66

77
import contextlib
88
import gc
9-
import json
109
from functools import partial
11-
from unittest.mock import patch
1210

1311
import numpy
1412
import pytest
@@ -877,61 +875,6 @@ def test_get_frames_in_range_slice_indices_syntax(self, device, seek_mode):
877875
).to(device)
878876
assert_frames_equal(frames387_None.data, reference_frame387_389)
879877

880-
@pytest.mark.parametrize("device", all_supported_devices())
881-
@pytest.mark.parametrize("seek_mode", ("exact", "approximate"))
882-
@patch("torchcodec._core._metadata._get_stream_json_metadata")
883-
def test_get_frames_with_missing_num_frames_metadata(
884-
self, mock_get_stream_json_metadata, device, seek_mode
885-
):
886-
# Create a mock stream_dict to test that initializing VideoDecoder without
887-
# num_frames_from_header and num_frames_from_content calculates num_frames
888-
# using the average_fps and duration_seconds metadata.
889-
mock_stream_dict = {
890-
"averageFpsFromHeader": 29.97003,
891-
"beginStreamSecondsFromContent": 0.0,
892-
"beginStreamSecondsFromHeader": 0.0,
893-
"bitRate": 128783.0,
894-
"codec": "h264",
895-
"durationSecondsFromHeader": 13.013,
896-
"endStreamSecondsFromContent": 13.013,
897-
"width": 480,
898-
"height": 270,
899-
"mediaType": "video",
900-
"numFramesFromHeader": None,
901-
"numFramesFromContent": None,
902-
"beginStreamSeconds": 0.0,
903-
"durationSeconds": 13.013,
904-
"endStreamSeconds": 13.013,
905-
"numFrames": int(29.97003 * 13.013), # Calculated from fps * duration
906-
"averageFps": 29.97003,
907-
}
908-
# Set the return value of the mock to be the mock_stream_dict
909-
mock_get_stream_json_metadata.return_value = json.dumps(mock_stream_dict)
910-
911-
decoder, device = make_video_decoder(
912-
NASA_VIDEO.path,
913-
stream_index=3,
914-
device=device,
915-
seek_mode=seek_mode,
916-
)
917-
918-
assert decoder.metadata.num_frames_from_header is None
919-
assert decoder.metadata.num_frames_from_content is None
920-
assert decoder.metadata.duration_seconds is not None
921-
assert decoder.metadata.average_fps is not None
922-
assert decoder.metadata.num_frames == int(
923-
decoder.metadata.duration_seconds * decoder.metadata.average_fps
924-
)
925-
assert len(decoder) == 390
926-
927-
# Test get_frames_in_range Python logic which uses the num_frames metadata mocked earlier.
928-
# The frame is read at the C++ level.
929-
ref_frames9 = NASA_VIDEO.get_frame_data_by_range(
930-
start=9, stop=10, stream_index=3
931-
).to(device)
932-
frames9 = decoder.get_frames_in_range(start=9, stop=10)
933-
assert_frames_equal(ref_frames9, frames9.data)
934-
935878
@pytest.mark.parametrize("dimension_order", ["NCHW", "NHWC"])
936879
@pytest.mark.parametrize(
937880
"frame_getter",

0 commit comments

Comments
 (0)