V3 Changelog
— Changelog, Code — 1 min read
Summary
This update addresses a minor but consistent off-by-one error in how frame numbers were being labeled in generated output.
The issue stemmed from a misunderstanding of how frame indexing works in VapourSynth. In programming—and VapourSynth specifically—frames are zero-indexed, meaning the first frame is frame 0.
In previous versions, when generating a single frame using:
c = c[frame_num:frame_num+1]we would pass a value like frame_num = 5, expecting this to output frame 5. However, because of zero-based indexing, c[5:6] actually produces frame 6, not 5. The result was that filenames and labels were consistently off by one—showing a lower frame number than what was actually being extracted.
The same applied to clip ranges. A slice like:
c[5:10]was assumed to represent frames 5 through 10, but it actually represents frames 6 through 10, again due to zero-based indexing and the fact that the slice endpoint (10) is non-inclusive in Python and VapourSynth.
This update corrects the file naming to reflect the actual frames being extracted, ensuring frame and clip labels now accurately match their content.
Key points
- Frames and clips were accurate but were incorrectly labelled
- Any frames posted on LOTRByFrame between June 18th, 2025 and October 20th, 2025 have a off-by-1 inaccuracy
- Clips were affected but due to the small number posted on the page, I took the liberty of manually updating their captions to make them accurate
Frame 74,781 - Two Towers Extended (Also my face when I realized the silly mistake I made 😵)
As always, feel free to reach out if you'd like to chat about my process and any of the silly mistakes I've made along the way!