Releases: Gaurox/FrameShift
Release list
FrameShift 1.16.0
Prepared for later publication.
- Create Subtitle File — internal subtitle model. Subtitle generation now keeps a shared
SubtitleProject/SubtitleSegment/SubtitleWordmodel with preserved word timings from the worker. - Create Subtitle File — new export targets. The same subtitle model now feeds
Standard SRT,Advanced ASS Subtitle, andFrameShift Customization Project(.frameshift-subtitles.json) without changing the default SRT behavior. - Create Subtitle File — versioned project format. Added full
SubtitleProjectserialization in the FrameShift project format (frameshift-subtitle-project, v1) for later editing or re-export. - Create Subtitle File — ASS presets.
Advanced ASS Subtitlenow supportsClassic,Word Highlight, andProgressive Reveal. Dynamic presets use reliable word timings and automatically fall back toClassicwhen a segment alignment is not reliable. - Create Subtitle File — refined display start. Dynamic ASS exports now keep the Whisper word timings as source of truth while allowing a conservative delayed cue display start when local audio onset clearly happens later.
SRT,ASS, the serialized project, andAdd Subtitles to Videoall reuse the same shared display start. - Create Subtitle File —
Word Highlightsemantics. No subtitle is shown during the preceding silence. At the refined start of the first spoken word, the full sentence appears immediately and the current word is highlighted;Progressive Revealremains progressive. - Create Subtitle File — UI / CLI wiring. The picker keeps
Standard SRTas default, shows the ASS preset choice only whenAdvanced ASS Subtitleis selected, and the CLI now supports--subtitles-formatplus--subtitles-ass-preset/--ass-preset. - Add Subtitles to Video — selectable track lot. Added
add-subtitles-videoas a product action that muxes an external.srtsubtitle file into a video as a selectable track.MKVkeeps a nativesubripsubtitle track;MP4/MOV/M4Vkeep their container withmov_textwhen existing streams stay compatible; otherwise the action falls back toMKVto preserve streams more cleanly. The normal path copies existing video/audio streams without re-encoding, uses adjacent unique naming, and removes partial outputs on failure or cancellation. Minimal launcher wiring accepts--subtitle-file/--subtitle-path/--srt-fileor opens a simple file picker when the option is missing. - Add Subtitles to Video — burn lot.
add-subtitles-videonow also supportsBurn Subtitles Into Videovia--subtitle-mode burn. It accepts.srt,.ass, and.frameshift-subtitles.json, converts.srt/ FrameShift projects to a temporary resolution-aware.ass, burns through FFmpeg, copies audio when compatible with the output container, and removes both partial outputs and temporary.assfiles after failure, cancellation, or success. - Add Subtitles to Video — burn editor lot. The burn workflow now opens a shared-helper WinForms editor with a real frame preview, simple time navigation, font / size / color / outline / shadow / position controls, shared ASS preset selection for
SRT/ FrameShift project inputs, and debounced FFmpeg/libass preview rendering with cancellation of obsolete refreshes. External.assfiles stay in style passthrough mode and clearly disable non-applicable controls. - Add Subtitles to Video — animated preview and hardening lot. The burn editor now adds a short animated preview loop generated from a temporary burn clip around the current position, then displayed as a lightweight looping preview without adding a new playback dependency. Burn preparation now uses display-aware subtitle layout for rotated videos, copies external
.assfiles to temporary working paths for safer Windows path handling, reads.srttext with a UTF-8 then Windows-codepage fallback, cleans preview clip / GIF artifacts on cancellation or refresh, and surfaces a clear HDR warning when subtitle burn-in may alter colorimetry. - Add Subtitles to Video — product integration lot. The action is now finalized as a product surface: definitively registered in
ActionRegistry, routed through the standard launcher/UI/CLI flow, listed in the active docs, and integrated into the Inno Setup packaging with its own video component, bundledffmpeg/ffprobedependencies, and an Explorer video context-menu entry labeledAdd subtitles to video.
FrameShift 1.15.0
What's new
Create Subtitle File (new AI actions)
Two new actions — create-subtitles-audio and create-subtitles-video — transcribe media to an adjacent .srt file using local Whisper AI. Three selectable models:
| Model | Size | Notes |
|---|---|---|
| Whisper Base | ~280 MB | Fast |
| Whisper Small | ~925 MB | Recommended (default) |
| Whisper Large-v3 Turbo | ~3.1 GB | Highest accuracy |
GPU acceleration via DirectML with automatic CPU fallback (both init-level and inference-level). Whisper runs in an isolated worker process (FrameShift.SubtitlesWorker) to avoid ONNX Runtime conflicts with other AI actions. Long media is processed through overlapping windows with full cancellation support. Models are downloaded on demand and SHA256-verified.
Headless: --subtitles-model whisper-base|whisper-small|whisper-turbo
Known limitation (Turbo): language auto-detection returns empty for Whisper Large-v3 Turbo due to a feature dimension mismatch (128 vs 80) in sherpa-onnx 1.13.3. Transcription is correct; the UI shows "auto" for detected language.
Upscale Video — rawvideo pipeline
The default upscale path now runs through a faster in-memory FFmpeg rawvideo pipeline instead of mandatory BMP frame extraction, reducing disk I/O on supported systems. The previous BMP workflow is kept as an automatic fallback.
UpscaleFrameProcessor also reuses ONNX input buffers across frames to cut per-frame allocations without changing models, output naming, DirectML → CPU fallback, or encoding safety fallbacks.
AnimeVideo v3 — x2/x3 routing
The visible Real-ESRGAN AnimeVideo v3 option now automatically selects dedicated x2/x3 ONNX execution variants for anime requests at ×2/×3, instead of always running the x4 graph and resizing back on CPU. The picker, CLI surface and output naming stay unchanged.
FrameShift 1.14.0
FrameShift 1.14.0 introduces Upscale Video and adopts the new versioning scheme 1.<feature release>.<patch>.
Highlights:
- New
Upscale VideoAI action with x2 / x3 / x4 scaling, DirectML to CPU fallback, shared ONNX tiling, FFmpeg frame extraction/re-encode pipeline, audio preservation, batch progress, cancellation, and cleanup. - Hosted/video-local model split: image models live under
upscale-image-onnx/, video models underupscale-video-onnx/, each with dedicated README and license files. - New dedicated Upscale Image / Upscale Video icons and demo media.
Included asset:
FrameShift_1.14.0_Setup.exe- SHA256:
F723042CFF7BFCF919D713B5F2B6365EF71B4EDD3218423A5E0E22BA763B1D0B - Size:
116,593,304bytes
Validation:
dotnet test tests/FrameShift.Tests/FrameShift.Tests.csproj -c Release(134/134passed)dotnet build src/FrameShift/FrameShift.csproj -c Releasedotnet publish src/FrameShift/FrameShift.csproj -c Release -r win-x64 --self-contained true
Version note: 1.<feature release>.<patch>; small fixes now increment only the last number.
FrameShift 1.0.13
FrameShift 1.0.13
Upscale Image — scale options
The Upscale Image model picker now lets you choose how much to enlarge:
- ×2 / ×3 / ×4 presets
- Custom size — width/height fields with the aspect ratio locked to the source (type one, the other updates), so no distortion.
Under the hood the model always runs at its native ×4, then the result is resampled (Lanczos) down to the requested factor or size — so ×2/×3 keep AI-grade detail. Everything is clamped to the model's reach (×1 … ×4); a custom size larger than ×4 is reduced to fit. Output is named accordingly (_upscaled_2x, _upscaled_3x, _upscaled_4x, or _upscaled_<W>x<H>).
Headless flags: --upscale-scale 2|3|4 and --upscale-target <W>x<H>. Custom size needs a single image; the presets apply to every selected file.
FrameShift 1.0.12
FrameShift 1.0.12
New: Upscale Image (AI)
A new local AI action upscales images ×4, with a simple model picker (dropdown) launched from a single Explorer entry under FrameShift AI → Upscale Image 4x. --upscale-model <id> skips the picker for headless use.
Three models, all hosted on Gaurox/frameshift-models/upscale-onnx/ with pinned SHA256 verified on download and bundled README + license texts:
- Real-ESRGAN x4plus (default) — general photos, screenshots, AI images. BSD-3-Clause
- Real-ESRGAN Anime 6B — anime / illustration / line art. BSD-3-Clause
- Swin2SR (Quality) — restoration / anti-JPEG, highest fidelity, slower. Apache-2.0
Runs on the GPU via DirectML with automatic CPU fallback, with automatic invisible tiling for large images (adaptive on out-of-memory). Output is saved as a new PNG next to the source (_upscaled_4x). Models are downloaded on demand; auto-download is hard-blocked if a checksum is ever left as a placeholder, and no third-party mirror URL is hardcoded.
FrameShift 1.0.11
- Remove Background — model catalog. The action now offers several selectable models, each with its own
--rmbg-modelvalue and Explorer context-menu entry. Free models are downloaded on demand; the BRIA modes are user-supplied:- Fast — BiRefNet Lite FP16, the default model. MIT license (free for commercial and non-commercial use). Runs on GPU via DirectML with automatic CPU fallback.
- High Resolution (Matting) — BiRefNet HR. MIT license. CPU only (the model fails on GPU runtimes).
- High Resolution (General) — BiRefNet HR. MIT license. CPU only (the model fails on GPU runtimes).
- BRIA Balanced (~500 MB) and BRIA High Quality (~1 GB) — BRIA RMBG-2.0, licensed CC BY-NC 4.0 (non-commercial use only). These models are user-supplied: they must be obtained manually from BRIA's official Hugging Face page, and FrameShift never downloads, bundles or redistributes them. Optional installer components are provided for them, unchecked by default.
- Remove Background — queue. Launching the action again while a progress window is already open now appends the new file to that window instead of opening a separate one. Each queued file keeps the options of its own launch (notably the chosen model), so successive launches with different models stay distinct in the queue.
- General UI improvements toward more consistent, DPI-aware window layouts.
FrameShift 1.0.10
What's new in 1.0.10
- Multi-file compress: when several files are selected in Windows Explorer, all parallel instances are coalesced and a choice popup appears — Use same settings for all files applies one compression window to the whole queue; Configure each file separately opens the compression window once per file in sequence. Single-file behavior and CLI headless mode (
--profile) are unchanged. - Compress form UX: the source filename is now shown in the header subtitle, making the current file immediately identifiable when configuring files one by one.
- Configurable AI models folder: stored in
%LOCALAPPDATA%\FrameShift\config\settings.json; configurable from the installer and from the FrameShift settings page. - Robust AI error handling: DirectML inference failures trigger an automatic CPU retry; ONNX Runtime internal paths no longer appear in user-facing messages.
- LaMa 2025 (Fast) added as a second inpainting model in Remove Object (93 MB, Apache-2.0); existing model renamed to LaMa FP32 (Quality).
- Media Info output fully translated to English.
FrameShift 1.0.9
What's new in 1.0.9
Remove Object (Image) — new local AI action
Paint a mask over any object directly in FrameShift's visual editor, click Apply, and the AI reconstructs the background behind it — entirely on your machine, no upload.
- Visual editor with zoom/pan canvas, red brush mask overlay, eraser tool, and adjustable brush size
- Custom circle cursor that matches the brush size exactly
- LaMa FP32 inpainting model via ONNX Runtime (CPU) — downloaded on demand with SHA-256 integrity check (~200 MB, one-time)
- Output saved as
_cleaned.pngnext to the source file - Explorer context-menu integration: right-click → FrameShift AI → Remove object for PNG, JPG, WEBP, BMP
- Model catalogue with ComboBox selector — extensible for future inpainting models
Notes
- LaMa runs on CPU only (its FFT/FFC operators are not supported by DirectML)
- Weights trained on Places2 — commercial use not guaranteed (documented in third-party notices)
FrameShift 1.0.8
What's new in 1.0.8
- Added Remove Noise (Video) as a local AI action — removes background noise from a video's audio track without re-encoding the video stream. Dedicated picker UI with strength control and stereo mode.
- Expanded shared AI model download flow so all local AI actions use a consistent preflight and downloader UX.
- Standardized AI window and Explorer icons.
- Fixed AI engine lifecycle:
BackgroundRemovalEngineandRemoveNoiseEngineare now created once per batch and reused across all files, then disposed at the end of the batch, eliminating the per-file ONNX session load cost. - Fixed batch routing: replaced four redundant per-action wrapper methods with a single dispatch entry using a shared action-id registry.
- Added unit tests for
FfmpegRunner.TryParseFfmpegTime,FfmpegProgressStatephase transitions,ProgramCli.TryParseArguments, andConversionActionHelpererror classification.
Installation
Download FrameShift_1.0.8_Setup.exe and run the installer. Upgrading from a previous version is supported.
FrameShift 1.0.7
1.0.7
- Security and compliance fixes: completed third-party license notices, removed developer paths from scripts, added log rotation, added NuGet package lock files, added SECURITY.md.