Re-applies the /video_metadata route from PR #15090 (078f0f5), dropped
during the merge in favor of the assets-based metadata approach. It
does not conflict with that work at the route level and closes a
cosmetic gap (fps/file-size estimation) for the VIDEO_EDIT trim/crop
widget during QA.
Implemented as a self-contained handler (duplicating /view's minimal
filename-resolution logic for blake3 asset hashes vs. on-disk paths)
rather than refactoring /view's already-reviewed inline logic into a
shared helper, to keep this QA-only change isolated and low-risk.
Combines the VIDEO_EDIT trim/crop feature with the asset-based video
metadata approach from #15147/#15180. #15090 implemented the same
VIDEO_EDIT node feature (VideoTrim/VideoCrop/LoadVideo edit widget,
DynamicCombo codec, io.VideoEdit type) essentially identically to
#15147, so those files merged cleanly with no functional duplication.
Conflict resolution:
- comfy_api/latest/_input/video_types.py: trivial docstring-only
conflict on VideoInput.as_cropped(); kept the more descriptive
docstring from #15090, function body identical on both sides.
- server.py: reverted to master's version, dropping #15090's
competing `GET /video_metadata` endpoint (and the
resolve_view_media_path refactor that existed solely to support it).
That endpoint was #15090's alternative way of sourcing video
metadata for the frontend widget (live ffprobe via HTTP), which is
superseded here by #15147/#15180's asset system_metadata extraction
on ingest/scan. Nothing else in the tree referenced this route, so
dropping it is safe. No other unique, non-conflicting content from
#15090 was discarded.
Comfy-aimdo 0.4.12 increases error logging reliablity to help root
cause os errors in some of the C APIs that are causing issues for
some users.
The log is also unified with python logging, so non-terminal users
see the logs properly.
Aimdo 0.4.13 fixes a bug in async-offload + MRU primary weights
allocation. https://github.com/Comfy-Org/ComfyUI/issues/15284
This avoids name collision (circular imports) for external custom nodes,
for which the comfy path is pushed into sys.path so Python's own logging module
is shadowed otherwise.
fixes: #15229
This priority scheme was broken in the case where you have pin
registration exhaustion while loading a VBAR that gets a big evicition.
The weight would stay in the loaded set but inherit the MRU priority
against other workflow models WRT pin registration which leads to async
offload without pinning.
Fix by universally promiting active pin registration above workflow
pins without concern for the weights/weights-loaded split. This diverges
from the actual budgeting where the split still makes sense.
Changes:
Remove sequential scan hint
Prefer NVML pressure on windows
Add async malloc clamp option (unused by comfy so far)
Workaround AMD windows GPU virtual address space leak
The largest change is the NVML pressure, which works around a cuMemGetInfo
drift from actual VRAM in some circumstances.