Skip to content

v.1.9.37b

Choose a tag to compare

@naxci1 naxci1 released this 09 Aug 10:24
· 21 commits to main since this release
99743c7

1-Click SeedVR2.5 GUI — Changelog v1.8b → v1.9.37b

v1.9.37b

  • Split video frame offset sync — The split-view widget now calculates the
    frame count difference between source and upscaled videos and applies an
    automatic offset. Source video frame N is displayed alongside upscaled video
    frame N+offset, ensuring temporal alignment in the comparison view.

v1.9.36b

  • Postprocess prepend_frames fix_process_frames_core was passing
    prepend_frames=0 to postprocess_all_batches, causing 4 extra frames in
    the output. Now passes args.prepend_frames to correctly remove prepended
    frames, ensuring output frame count matches input.

Export System Overhaul

v1.9.35b

  • Reverted prepend removal — Temporarily reverted to diagnose frame sync
    issues. Prepend frames are kept in the output for debugging.

Comprehensive Codec Support

  • H264 / H265 (NVENC GPU encoding) — Hardware-accelerated encoding via
    h264_nvenc / hevc_nvenc with automatic NVENC detection. Profiles: Baseline,
    Main, High (H264); Main, Main10, Main12 (H265). Quality levels: Low / Mid / High
    mapped to CQ values.
  • ProRes — Apple ProRes with 6 profiles: Proxy, LT, Standard, HQ, 4444,
    4444 XQ. MOV container.
  • DNxHR — Avid DNxHR with 5 profiles: LB, SQ, HQ, HQX, 444. MOV/MXF container.
  • FFV1 — Lossless FFV1 codec (MKV/AVI).
  • FFV1 Intra RGBA-16bit — Intra-only FFV1 with rgba64le pixel format for
    maximum fidelity (MKV/AVI). Uses -coder 1 -context 1 -g 1.
  • AV1 (NVENC) — Hardware-accelerated AV1 encoding (av1_nvenc).
  • VP9 — Software VP9 encoding (WebM/MKV).
  • QuickTime V210 — Uncompressed YUV 10-bit 4:2:2 (MOV).
  • QuickTime R210 — Uncompressed RGB 10-bit (MOV).
  • QuickTime Animation — Run-length compressed RGB 8-bit with alpha (MOV).

v1.9.34b

  • Initial prepend_frames investigation — Attempted fix for frame count
    mismatch between input and output videos.

Image Sequence Export

  • TIFF — 8-bit and 16-bit (deflate compression).
  • PNG — 8-bit and 16-bit.
  • JPEG — 8-bit.
  • EXR — 16-bit (half) and 32-bit (float).
  • DPX — 8-bit, 10-bit, and 16-bit.

v1.9.33b

  • Pipeline mode attempt (reverted) — Implemented per-batch streaming
    pipeline (_pipeline_process) with async frame prefetch. This was slower
    than the original 4-phase serial approach and was fully reverted. The
    original serial pipeline is retained.
  • Batch size override removal — Removed chunk_args.batch_size override
    that was forcing single-batch processing per chunk, causing OOM with large
    frame counts.
  • Stream mode cleanup — Removed all pipeline/stream mode artifacts:
    _pipeline_process, lightweight_cleanup, pipeline_mode, async prefetch
    thread, and related code.

Export Dialog Features

  • NVENC auto-detection — Automatically probes ffmpeg for NVENC encoder
    availability and selects GPU encoding when present.
  • Quality presets — Low / Mid / High quality levels per codec, mapped to
    appropriate CQ/QP values.
  • Spatial AQ-spatial_aq 1 enabled for NVENC encoders for better quality.
  • 10-bit output — Optional 10-bit encoding (-pix_fmt p010le for H265,
    yuv422p10le for ProRes, etc.).
  • Smart container filtering — Only valid containers per codec are shown
    (e.g., ProRes → MOV only).
  • FFmpeg argument builderbuild_ffmpeg_command() constructs optimal
    ffmpeg arguments based on selected codec, profile, quality, and container.

v1.9.32b

  • Channels-last memory format (ComfyUI --force-channels-last equivalent)
    — The DiT model is now converted to torch.channels_last memory layout
    after materialization. On Blackwell (RTX 50xx) this enables the faster NHWC
    tensor core path for conv and linear ops. Backend-specific: only applied on
    NVIDIA CUDA and AMD ROCm RDNA3+ via supports_channels_last().
  • RoPE bf16 (no float32 upcast) (ComfyUI --dont-upcast-attention
    equivalent) — Rotary position embeddings were upcasting q/k to float32 on
    every attention layer, then casting back. Now RoPE runs in native bf16
    throughout (via supports_low_precision_rope()), eliminating the expensive
    fp32 round-trip on every forward pass in both 3B and 7B models.
  • VAE attention upcast disabled — VAE attention used upcast_softmax=True
    and force_upcast=True, forcing softmax to float32. Both disabled to keep
    the entire VAE pipeline in bf16. Applied at runtime in model_loader.py
    based on backend detection.
  • VAE tiled encode/decode off by default — Tiling was splitting 960x720
    into 2 tiles, doubling the decode work. Now both vae_encode_tiled and
    vae_decode_tiled default to False (matching ComfyUI node defaults). RTX
    5070 Ti 16GB VRAM handles full-resolution VAE without tiling.
  • CUDA caching allocator (no PYTORCH_ALLOC_CONF) — Previous attempts with
    expandable_segments:True (unsupported on Windows, PyTorch #123548 conflict)
    and backend:cudaMallocAsync (reserved VRAM never reclaimed) both caused
    fragmentation. The default PyTorch caching allocator works best on Windows.
  • _parse_offload_device no longer forces CPU — When offload_device="none",
    the CLI previously auto-promoted to "cpu" if caching was enabled, silently
    re-introducing model ping-pong. Now "none" always means GPU resident.
  • Performance parity fix — model ping-pong eliminated — GUI offload
    defaults were vae_offload_device=cpu and tensor_offload_device=cpu,
    forcing every model and all latent tensors to ping-pong GPU↔CPU between
    phases. Defaults changed to GPU (none), matching ComfyUI's --gpu-only.
  • GUI offload labels — Dropdown options changed from cryptic "none"/"cpu"
    to friendly "GPU"/"CPU" labels with bidirectional mapping.

v1.9.31b

  • Lossless preview source frame — Preview now reads the source frame
    directly from the original file via cv2 (preserving full bit depth) instead
    of the 8-bit display pixmap. 16-bit sources keep their full 16-bit precision
    in the comparison.
  • Stale preview cleanup — Old preview artifacts (preview_source.tiff,
    preview_fallback.tiff, preview_result.tiff) are deleted before each new
    preview run and when a file is removed from the project list.
  • Synchronized video split viewSplitViewWidget rewritten with
    dual-video synchronized playback via dual cv2.VideoCapture + QTimer.
    Supports play/pause, seek slider, keyboard controls (Space/Left/Right/
    Home/End), and click-to-toggle playback.

Settings Panel Enhancements

v1.9.30b

  • Performance parity with ComfyUI — CLI now sets the same PyTorch
    environment variables ComfyUI uses (TORCH_CUDNN_BENCHMARK,
    TORCH_CUDNN_SDP_ENABLED, TRITON_INTERPRET=0, CUDA_CACHE_PATH,
    CUDA_MODULE_LOADING=LAZY), plus cudnn.benchmark=True and TF32 matmul
    (set_float32_matmul_precision("high")). Compile-free speedup.
  • EWA-Lanczos downscale — Pre-downscale now uses GPU torch.interpolate
    (Lanczos + antialias) instead of CPU cv2 with uint8 quantization.
  • FFV1 Intra RGBA-16bit codec — Added lossless intra-only FFV1 codec
    (ffv1 -pix_fmt rgba64le -coder 1 -context 1 -g 1, MKV/AVI).
  • Clear list button — Project panel now has a 🗑 Clear List button
    (variant="danger") that clears all files and emits file_removed per file.
  • Sound fixes — Success = rising 3-note Beep chime (659→880→1319 Hz);
    failure = descending two-tone (622→415 Hz). All via winsound.Beep.

Resolution

  • Resolution modes — Pixel (exact short-side), X-Times (multiplier), and
    Presets (720p, 1080p, 1440p, 4K).
  • Max resolution — Hard cap on the longest edge (default: 3840px).
  • Pre-downscale — Optional 2:1 or 3:1 pre-downscale before upscaling, with
    EWA-Lanczos GPU interpolation.

v1.9.21b–v1.9.29b

  • Auto-Tune OOM-retry system — When CUDA OOM occurs, the CLI automatically
    reduces tile size (1024→512→256), increases BlockSwap (0→16→24→32→36),
    reduces batch size, or enables pre-downscale — then retries without manual
    intervention.
  • BlockSwap escalation — Automatic block swap escalation for low-VRAM GPUs.
  • Conv3d memory bug workaround — Detects PyTorch 2.9+ with cuDNN ≥91002
    Conv3d 3x memory bug and applies direct torch.cudnn_convolution bypass.
  • Device manager backend detection — Unified Backend enum (CUDA/ROCM/
    XPU/MPS/CPU) with supports_channels_last() and supports_low_precision_rope()
    for backend-specific optimizations.
  • VAE decode batch cleanupempty_cache() between decode batches to
    prevent reserved-but-unallocated VRAM accumulation.
  • retry_on_oom sleep removal — Removed hardcoded 0.5s sleep in OOM retry
    path for faster recovery.
  • release_model_memory VRAM flush — Added empty_cache() after model
    parameter release to immediately return freed VRAM to the allocator.

Batch Processing

  • Batch size — Configurable batch size (default: 81). Higher = better temporal
    coherence but more VRAM.
  • Uniform batch size — Pads the final batch to match batch_size for consistent
    processing.
  • Temporal overlap — Overlapping frames between batches for smooth blending
    (default: 4).
  • Prepend frames — Reversed frames prepended at the start to reduce start
    artifacts (default: 4).

VAE Tiling

  • Encode tiled — Optional spatial tiling during VAE encoding.
  • Decode tiled — Optional spatial tiling during VAE decoding.
  • Tile size / overlap — Configurable tile dimensions and overlap for both
    encode and decode.

Color Correction

  • Methods — LAB perceptual transfer, Wavelet adaptive, Wavelet reconstruction,
    HSV, AdaIN, or None.

Noise

  • Input noise scale — Adds subtle noise to input before encoding (0.0–1.0).
  • Latent noise scale — Adds noise during diffusion conditioning (0.0–1.0).

Advanced

  • Auto-Tune — Automatically reduces tile size, enables BlockSwap, and adjusts
    batch size on OOM errors without manual intervention.
  • Offload devices — GPU/CPU selection for DiT, VAE, and intermediate tensors.
    Friendly dropdown labels ("GPU"/"CPU") with automatic CLI token mapping.
  • BlockSwap — Configurable transformer block swapping (0–36) for low-VRAM GPUs.
  • Swap I/O components — Additional I/O layer offloading for maximum VRAM savings.
  • Chunked processingchunk_duration_minutes for streaming large videos in
    time-bounded chunks with temporal overlap blending.
  • Frame selectionload_cap, skip_first_frames, only_frames for
    processing specific portions of a video.
  • Attention mode — SDPA, Flash Attention 2/3, SageAttention 2/3 selectable.
  • Model cachingcache_dit / cache_vae keeps models in RAM between runs,
    eliminating SSD re-reads for batch processing.
  • Debug mode — Detailed logging with VRAM/RAM statistics per phase.
  • Tile debug — Visualizes encode/decode tile boundaries on output frames.

Project Panel

  • Clear list button — 🗑 "Clear list" button (danger variant) removes all files
    from the queue. Emits file_removed signal per file for proper cleanup.
  • Drag & drop — Drag video files directly into the project list.
  • Folder batch — Select a folder to batch-process all supported video files.
  • Per-file remove — Each file has a ✕ button for individual removal.

Split View Widget

  • Dual-video synchronized playback — Opens two cv2.VideoCapture handles and
    plays source + upscaled videos in sync via QTimer.
  • Automatic frame offset — Calculates frame count difference between source
    and upscaled videos, applies temporal offset for correct alignment.
  • Seek slider — Embedded QSlider for frame-accurate scrubbing.
  • Keyboard controls — Space (play/pause), Left/Right (±1 frame), Home/End
    (jump to start/end).
  • Click to toggle — Click anywhere on the video to toggle play/pause.
  • Divider drag — Draggable split divider for adjustable left/right ratio.
  • Zoom & pan — Mouse wheel to zoom, drag to pan.
  • Static image mode — Falls back to set_images() for single-frame preview
    comparison.

Preview System

  • Lossless source frame — Preview reads the source frame directly from the
    original file via cv2 at native bit depth (16-bit TIFF preserved) instead of
    the 8-bit display pixmap.
  • Stale preview cleanup — Old preview artifacts are deleted before each new
    preview run and on file removal, preventing stale split-view images.

Performance Optimizations

Environment & Allocator

  • ComfyUI-matching environment variablesTORCH_CUDNN_BENCHMARK=1,
    TORCH_CUDNN_SDP_ENABLED=1, TRITON_INTERPRET=0, CUDA_MODULE_LOADING=LAZY,
    CUDA_CACHE_MAXSIZE=4GB, persistent CUDA_CACHE_PATH.
  • cuDNN benchmark + TF32torch.backends.cudnn.benchmark = True and
    set_float32_matmul_precision("high") for compile-free speedup.
  • Default CUDA caching allocator — No PYTORCH_CUDA_ALLOC_CONF override.
    expandable_segments is unsupported on Windows; cudaMallocAsync causes VRAM
    fragmentation; max_split_size_mb conflicts with expandable_segments (#123548).
    The default allocator is the most stable on Windows.

Model Memory

  • Channels-last (NVIDIA/AMD) — DiT model converted to torch.channels_last
    after materialization, enabling NHWC tensor core path on Blackwell/RDNA3+.
    Backend-gated via supports_channels_last().
  • RoPE bf16 (no fp32 upcast) — Rotary position embeddings run in native bf16
    on CUDA/ROCm/XPU, eliminating the per-attention-layer fp32 round-trip in both
    3B and 7B models. Backend-gated via supports_low_precision_rope().
  • VAE attention upcast disabledupcast_softmax=False and
    force_upcast=False to keep entire VAE in bf16. Applied at runtime based on
    backend detection.
  • Model ping-pong eliminated — When offload_device=none + caching, models
    stay resident on GPU (no CPU round-trip). When offload_device=cpu + caching,
    models are kept in RAM (no SSD re-read).
  • _parse_offload_device fix"none" always returns None (GPU resident),
    no longer auto-promoted to "cpu" when caching is enabled.

VAE Decode

  • empty_cache() between decode batches — Prevents reserved-but-unallocated
    VRAM accumulation that triggers OOM on later batches.
  • release_model_memory VRAM flushempty_cache() after parameter release
    to immediately return freed VRAM to the allocator.
  • retry_on_oom sleep removal — Removed hardcoded 0.5s sleep for faster OOM
    recovery.
  • Conv3d cuDNN benchmarkbenchmark=True in the Conv3d memory bug workaround
    for optimal kernel selection.

Backend Detection

  • Unified Backend enum — CUDA (NVIDIA), ROCM (AMD), XPU (Intel), MPS (Apple),
    CPU. Automatic detection via torch.version.hip, torch.xpu, etc.
  • supports_channels_last() — Returns True for NVIDIA CUDA and AMD RDNA3+/MI300.
  • supports_low_precision_rope() — Returns True for CUDA, ROCM, XPU, CPU.
    Returns False for MPS (numerical stability).

Auto-Tune OOM System

  • Automatic step-down — On CUDA OOM: tile size 1024→512→256, BlockSwap
    0→16→24→32→36, batch size reduction, pre-downscale activation.
  • No manual intervention — Retries automatically with reduced settings.

Audio & UX

  • Success chime — Rising 3-note Beep (659→880→1319 Hz) on successful export.
  • Failure tone — Descending two-tone Beep (622→415 Hz) on error.
  • Toast notifications — Non-intrusive popup messages with auto-dismiss.
  • Button3D variants — default, danger, ghost styles for different actions.

ComfyUI Optimizations Applied

All CLI optimizations were also applied to the ComfyUI custom node at
C:\ComfyUI\ComfyUI\custom_nodes\seedvr2_videoupscaler\:

  • RoPE bf16 (3B + 7B)
  • VAE upcast_softmax=False, force_upcast=False
  • device_manager.py backend detection
  • DiT/VAE cache RAM (none + cache_model = RAM resident)
  • Cache validation removal (none + cache_model allowed)
  • sleep(0.5) removal in retry_on_oom
  • Conv3d benchmark=True

Version History Summary

Version Key Changes
v1.9.18b–v1.9.21b Export system, codecs, NVENC, settings panel, Auto-Tune
v1.9.22b–v1.9.29b Project panel, Toast, Button3D, sound, performance env vars
v1.9.30b EWA-Lanczos, FFV1, clear list, sound fixes, performance parity
v1.9.31b Lossless preview, stale cleanup, synchronized video split
v1.9.32b Channels-last, RoPE bf16, VAE upcast, offload GPU defaults
v1.9.33b Pipeline attempt (reverted), batch override removal
v1.9.34b–v1.9.36b Prepend frames / frame sync investigation
v1.9.37b Split view frame offset sync