Skip to content

Timing pictures travel small, sound-clocked nodes count, sound-only feeds end - #4

Merged
imbcmdth merged 4 commits into
mainfrom
timing-small
Oct 3, 2026
Merged

imbcmdth merged 4 commits into
mainfrom
timing-small

Conversation

@imbcmdth

@imbcmdth imbcmdth commented Oct 3, 2026

Copy link
Copy Markdown
Owner

Three things the first CPU measurement of the SMART demo on 0.29.0 asked for.

  • A picture that only timing inputs read is scaled to 16x16 before it leaves ffmpeg, and its true geometry rides in the input's -pad, so the node's stream info, like outputs and matte sizes are unchanged while the split, the relay and the host carry almost nothing for it.
  • A node clocked by its sound (a window in samples) has its held time counted in frames of the bound, so it is no longer refused as unbounded on a live input.
  • A sound-only hold group reports its foretold end on every tick through its last.

Head of the demo: about 9% less CPU per minute of output, identical deal rows, pictures identical outside the countdown-start frames that vary run to run.

🤖 Generated with Claude Code

imbcmdth and others added 4 commits October 3, 2026 01:52
A picture only timing inputs read may cross smaller than it is. -pad's
"geometry" gives each of an input's pictures its own size, by position
among them: the node is told that size in video-format, an output like
the input takes it, and each frame is checked against the wire's header.
A picture something reads the pixels of is refused at another size.

shape-probe gains `matte`, a gray picture like `size`, to show it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A node input that wants timing reads a frame's times and the stream's
size, never its pixels, yet the picture it was handed crossed whole:
decoded, split, relayed and dropped by the host. Where every port a node
region hands a picture to reads it for its timing, the picture is now
scaled to 16x16 in the ffmpeg that writes it, in the pixel format it
already has, and its own size rides the input's -pad as "geometry". A
picture a port of the same region reads the pixels of still crosses
whole, once, for both. The plan's diagram labels such an edge
"timing, 16x16".

On the demo's head this is the sell clock: 103 CPU s a minute of output
to 93, the split, the relay and sell each cheaper, deals and pictures as
before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A node's delay was counted at its pictures' rate, so a node reading no
picture (the switch with only `a` bound, 1024 samples a tick) had no size,
and over one live input whose picture goes elsewhere the plan was refused
UNBOUNDED_LIVE_INPUT naming it. What it holds past its clock is now
counted in frames of the bound: the pictures of the input its clock comes
from, or the longest frame where that input has none, the unit the edges'
bounds are sized in.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A hold group's end was foretold from the lead member's last queued frame,
or else from the picture it last showed. A sound shows nothing, so once
the ticks had taken its last run the foretold end was gone, and the feed's
last tick reported none where a picture's reports it. A sound's end is
now foretold from the pts its last run arrived with.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@imbcmdth
imbcmdth merged commit 874dfcc into main Oct 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant