diff --git a/src/torchcodec/samplers/_index_based.py b/src/torchcodec/samplers/_index_based.py index d768e30dd..7ce3b518d 100644 --- a/src/torchcodec/samplers/_index_based.py +++ b/src/torchcodec/samplers/_index_based.py @@ -31,6 +31,12 @@ def _validate_sampling_range_index_based( sampling_range_end, num_frames_in_video, ): + if sampling_range_start < -num_frames_in_video: + raise ValueError( + f"sampling_range_start ({sampling_range_start}) must be greater than " + f"or equal to {-num_frames_in_video}." + ) + if sampling_range_start < 0: sampling_range_start = num_frames_in_video + sampling_range_start diff --git a/test/test_samplers.py b/test/test_samplers.py index a8d281252..3089e94cf 100644 --- a/test/test_samplers.py +++ b/test/test_samplers.py @@ -536,6 +536,20 @@ def test_index_based_samplers_errors(sampler): ): sampler(decoder, sampling_range_start=-100, sampling_range_end=-100) + sampling_range_start = -len(decoder) - 1 + with pytest.raises( + ValueError, + match=re.escape( + f"sampling_range_start ({sampling_range_start}) must be greater than " + f"or equal to {-len(decoder)}" + ), + ): + sampler( + decoder, + sampling_range_start=sampling_range_start, + sampling_range_end=-len(decoder), + ) + with pytest.raises( ValueError, match="We determined that sampling_range_end should" ):