You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
macOS: the preview's decode backend has never been measured #585
Decoder::open picks VideoToolbox or the software decoder from the H.264 profile alone. #583 measured that choice for export and changed it there, introducing DecodeIntent so the preview keeps the old arbitration untouched.
That was a deliberate refusal to generalise, not a conclusion. The preview has never been measured at all.
The two are not obviously the same problem:
The export wants throughput and nothing else. It won by 28.7 % on the software decoder.
The preview wants to hold a cadence and to seek — the user scrubs. A hardware decoder's fixed per-frame latency is a bad deal at 200 fps and possibly a fine one at 60 fps, and seek behaviour after avcodec_flush_buffers was not compared at all.
The preview shares the machine with the editor UI. thread_count = 0 gives the software decoder every core; that may cost more in UI smoothness than it gains in decode headroom. On battery it is a straight loss.
What would settle it, roughly: a scrub-heavy preview session with frame-pacing and CPU sampled per backend, on both power sources. Until someone does that, DecodeIntent::Preview should stay as it is.
Measured and settled in #1384, now merged: on an M1 Mac mini at 4K60, software decode of 8-bit H.264 in the preview scrubs at 13.6 fps instead of 1.7 (p50 latency 55 ms vs 660 ms), at the cost of more CPU while dragging. HEVC and 10-bit stay on VideoToolbox, and OPENSCREEN_MAC_DECODE=videotoolbox restores the old path. Thanks for raising it!
Activity
EtienneLescot commentedon Oct 24, 2026
Measured and settled in #1384, now merged: on an M1 Mac mini at 4K60, software decode of 8-bit H.264 in the preview scrubs at 13.6 fps instead of 1.7 (p50 latency 55 ms vs 660 ms), at the cost of more CPU while dragging. HEVC and 10-bit stay on VideoToolbox, and
OPENSCREEN_MAC_DECODE=videotoolboxrestores the old path. Thanks for raising it!