Repository navigation
format: webm films move - a new picture every change_interval - #166
Conversation
… clock and a stepping square A film used to show one picture for its whole length, which a viewer saw as a photograph. Every change_interval (one second by default) the clock under the label moves on and a square takes a step, each change coded on its own. The WebM Void moved before the Cues, which are last, so the file is written while its pictures are coded one at a time. Every picture is held to a reserve: the rung's ceiling, measured again with the clock and the square, or for a named size the largest of a sample of ten coded at planning. The AV1 level counts every picture a second carries rather than two. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ilm keeps its reserve, and the bytes that moved Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ite, the README and the changelog Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
⛔ Files ignored due to path filters (47)
📒 Files selected for processing (26)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📜 Recent review details⏰ Context from checks skipped due to timeout. (16)
🧰 Additional context used📚 Code guidelines (1)📓 Path-based instructions (14)Applies to text shown to the user (labels, buttons, tooltips, placeholders, dialogs, errors, status messages, empty states, translations).⚙️ CodeRabbit configuration file Files:
Verify tests check real behavior and would fail if the implementation were broken.⚙️ CodeRabbit configuration file Files:
These are end-user desktop applications.⚙️ CodeRabbit configuration file Files:
Performance is a known weak spot of these projects.⚙️ CodeRabbit configuration file Files:
Applies only to code that builds or styles a GUI.⚙️ CodeRabbit configuration file Files:
User-facing changelog.⚙️ CodeRabbit configuration file Files:
Domain: test file generator (Go; `tfg` CLI and `tfg-gui` Fyne window over one engine).⚙️ CodeRabbit configuration file Files:
SECURITY, HIGH PRIORITY.⚙️ CodeRabbit configuration file Files:
These apps are QA/developer tools.⚙️ CodeRabbit configuration file Files:
Go code.⚙️ CodeRabbit configuration file Files:
Check that documentation matches the actual code in this PR: commands, flags, config keys, file paths, build steps and examples must exist.⚙️ CodeRabbit configuration file Files:
Python code.⚙️ CodeRabbit configuration file Files:
All code in this repository is written by an AI coding agent (Claude Code).⚙️ CodeRabbit configuration file Files:
Source excerpt: **Words a user reads are English, with a flat hyphen and no semicolons.**📄 CodeRabbit inference engine (CONTRIBUTING.md) Files:
🪛 ast-grep (0.45.3)internal/format/video/picture.go[warning] 99-99: Narrowing a non-constant integer to a smaller fixed-width type (int8/int16/int32, uint8/uint16/uint32) can silently overflow or wrap, yielding negative or truncated values that are dangerous in size, length, or index logic. Validate the source value is within the target type's range before converting (e.g. bounds-check, or use a checked helper), and avoid narrowing untrusted or len()/parsed values. (integer-overflow-narrowing-conversion-go) [warning] 99-99: Narrowing a non-constant integer to a smaller fixed-width type (int8/int16/int32, uint8/uint16/uint32) can silently overflow or wrap, yielding negative or truncated values that are dangerous in size, length, or index logic. Validate the source value is within the target type's range before converting (e.g. bounds-check, or use a checked helper), and avoid narrowing untrusted or len()/parsed values. (integer-overflow-narrowing-conversion-go) [warning] 99-99: Narrowing a non-constant integer to a smaller fixed-width type (int8/int16/int32, uint8/uint16/uint32) can silently overflow or wrap, yielding negative or truncated values that are dangerous in size, length, or index logic. Validate the source value is within the target type's range before converting (e.g. bounds-check, or use a checked helper), and avoid narrowing untrusted or len()/parsed values. (integer-overflow-narrowing-conversion-go) 🪛 LanguageToolCHANGELOG.md[style] ~23-~23: Consider using “who” when you are referring to a person instead of an object. (THAT_WHO) [grammar] ~38-~38: Use a hyphen to join words. (QB_NEW_EN_HYPHEN) [grammar] ~44-~44: Ensure spelling is correct (QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1) 📝 WalkthroughWalkthroughWebM generation now supports a configurable picture-change interval. Timeline frames can show a moving square and clock. Planning samples changing pictures, and the writer streams clusters with padding before the final Cues. ChangesWebM picture changes
Priority: ➖ Normal Estimated code review effort: 4 (Complex) | ~50 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant Choice as video.Choice
participant Pictures as video.Pictures
participant Painter as video.Painter
participant Writer as webm.Write
participant Segment as WebM Segment
Choice->>Choice: SampleChanges selects timeline changes
Writer->>Pictures: At(frame)
Pictures->>Painter: Render changed picture
Pictures-->>Writer: Provide key or copy sample
Writer->>Segment: Write clusters, then Void, then Cues
Suggested labels: Merge Risk: ⚪ Minimal · up to WebM films now change picture at each change interval. No concrete merge-blocking defect was found in the reviewed change. 🚥 Pre-merge checks | ✅ 13 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (13 passed)
Full details: Desktop RobustnessExplanation The PR adds a long planning step without effective progress or cancellation. Resolution Make reserve sampling part of cancellable, observable planning. Thread a context and progress callback through the planning path into
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…d two words of the changelog golangci-lint's errorlint: a failed ffmpeg run is wrapped with %w, and kept apart from what ffmpeg says on standard error, which is the verdict. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What
A film's picture now moves. Every
change_interval(one second unless set) the clock burned into the picture moves on and a square steps across it, so a player that plays the film shows a running clock and one that freezes shows a stopped one. Before this, a 30 fps film showed the same picture for its whole length and looked like a photograph.change_interval, a length of time likekeyframe_interval. As long as the film or longer keeps one picture throughout. At most 100 000 changes a film.00:00:07, with milliseconds when the changes do not fall on whole seconds. A picture too small for it gets the manifest noteclock_omitted.change_countandchange_interval_ms.Cost
Each change is a whole picture in bytes and coding time (34 ms at 640x360, about a second at 3840x2160), and the frames between changes stay a few bytes each. An hour at 30 fps with a change every second is 1 075 831 B at the smallest. The default minimum went from 3044 B to 3294 B. No release carried
webmyet, so its bytes were nobody's contract and this is not a breaking change.How it was checked
🤖 Generated with Claude Code
Summary by CodeRabbit