No description
  • Go 90.1%
  • Shell 4.6%
  • PowerShell 3.9%
  • C 0.7%
  • Batchfile 0.7%
Find a file
Stu Leak 0ec8b98011
Some checks failed
Forgejo Publish Release / windows-package (push) Failing after 1m42s
Forgejo Publish Release / linux-package (push) Failing after 10m16s
Forgejo Publish Release / publish-release (push) Has been skipped
docs: update AGENTS.md, CHANGELOG.md, DONE.md, TODO.md, ROADMAP.md, roadmap.html for dev51 close
2026-06-20 17:20:01 -04:00
.forgejo/workflows fix(ci): shared FFmpeg build: --disable-doc instead of --enable-doc 2026-06-12 03:49:16 -04:00
.github/workflows fix(ci): shared FFmpeg build: --disable-doc instead of --enable-doc 2026-06-12 03:49:16 -04:00
.opencode/plans Rename Thumb module to Thumbnail throughout codebase 2026-01-17 04:15:39 -05:00
_fyne@f869b443b4 fix(select): use ForegroundOnPrimary text on active dropdown rows 2026-05-22 23:40:09 -04:00
assets Fix language flags and dropdown caret in Settings 2026-05-11 15:11:13 -04:00
cmd Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
docs docs: update AGENTS.md, CHANGELOG.md, DONE.md, TODO.md, ROADMAP.md, roadmap.html for dev51 close 2026-06-20 17:20:01 -04:00
internal fix(udf): thread safety for partitionStartAbs, progress callbacks, defer Cleanup 2026-06-20 10:59:48 -04:00
packaging fix(linux): align desktop Icon= name with icon filename for AppImage 2026-03-18 15:16:33 -04:00
qr-demo Migrate About and docs links to Forgejo wiki 2026-03-07 02:42:08 -05:00
scripts docs: add .mailmap, credits table, GitHub mirror scripts; strip agent attributions from docs 2026-05-21 07:02:01 -04:00
.gitattributes Track Whisper model with LFS 2026-01-05 22:10:57 -05:00
.gitignore gitignore: ignore *.dll files 2026-05-12 03:48:30 -04:00
.gitmodules build: add Fyne fork as submodule at _fyne 2026-03-20 13:54:13 -04:00
.mailmap docs: add .mailmap, credits table, GitHub mirror scripts; strip agent attributions from docs 2026-05-21 07:02:01 -04:00
about_module.go Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
AGENTS.md docs: update AGENTS.md, CHANGELOG.md, DONE.md, TODO.md, ROADMAP.md, roadmap.html for dev51 close 2026-06-20 17:20:01 -04:00
audio_module.go migrate audio_module buttons to MakePillButton 2026-05-16 16:52:50 -04:00
author_dvd_functions.go migrate author_menu_preview, author_dvd_functions, convert_player_native buttons to MakePillButton 2026-05-17 00:16:33 -04:00
author_menu.go refactor(dvd): remove dead menu code and fix PatchVOBPCI encoding 2026-05-19 20:37:00 -04:00
author_menu_preview.go migrate author_menu_preview, author_dvd_functions, convert_player_native buttons to MakePillButton 2026-05-17 00:16:33 -04:00
author_module.go fix(probe): guard against empty ffprobe output in probeVideo + extractChaptersFromFile 2026-05-23 21:59:36 -04:00
burn_linux.go fix(burn): replace stubs with real burn implementations 2026-04-04 13:43:54 -04:00
burn_module.go fix(ui): add missing View Queue button to Trim, Audio, and Burn header bars 2026-05-21 03:43:46 -04:00
burn_windows.go fix(burn): replace stubs with real burn implementations 2026-04-04 13:43:54 -04:00
compare_module.go Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
convert_player_native.go migrate author_menu_preview, author_dvd_functions, convert_player_native buttons to MakePillButton 2026-05-17 00:16:33 -04:00
deps_dialog_module.go Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
DONE.md docs: update AGENTS.md, CHANGELOG.md, DONE.md, TODO.md, ROADMAP.md, roadmap.html for dev51 close 2026-06-20 17:20:01 -04:00
file_manager_module.go migrate file_manager_module buttons to MakePillButton 2026-05-16 16:55:10 -04:00
filters_module.go feat(ui): apply Convert-style colored headers to Upscale and Filters modules 2026-05-23 02:19:30 -04:00
flags_embed.go Feat: flag icons in Settings language selector 2026-05-03 03:19:51 -04:00
font_preference.go Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
font_preference_stub.go Change font toggle to dropdown with IBM Plex Mono / VCR OSD Mono options 2026-04-22 15:08:43 -04:00
fonts_embed.go feat(player): SMPTE colour bars idle state and click-to-load dialog 2026-04-11 21:35:57 -04:00
FyneApp.toml fix(ci): overhaul Windows DLL pipeline (BUG-012) 2026-06-12 01:33:15 -04:00
go.mod Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
go.sum feat(tooltips): add tooltip support to module tiles 2026-04-05 19:33:35 -04:00
icons_embed.go dev33: fix embed paths and import cycle 2026-03-13 13:54:16 -04:00
inspect_module.go Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
inspect_module_stub.go build: always compile with native_media tag; fix inspect stub message 2026-03-22 01:26:35 -04:00
locale_module.go fix(i18n): remember Inuktitut script preference across language switches 2026-05-15 06:00:31 -04:00
logo_embed.go dev33: fix embed paths and import cycle 2026-03-13 13:54:16 -04:00
main.go fix(upscale): zero-frame validation before RIFE invocation 2026-06-20 14:07:42 -04:00
mainmenu_module.go feat(menu): hide in-progress modules in release builds; delete Enhancement 2026-06-12 04:38:30 -04:00
merge_config.go Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
naming_helpers.go Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
native_media.go cleanup(player): remove 10 legacy alias vars, all callers migrated to GetXxxPlayer() 2026-06-20 17:13:28 -04:00
native_media_stub.go feat(player): per-codec HW decode deny-list + Settings UI 2026-05-23 08:23:47 -04:00
platform.go Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
player_module.go feat(player): add DVD disc player with topology analysis 2026-05-21 05:50:21 -04:00
queue_module.go fix(queue): remove blocking dialog after convert, fix goroutine self-exit 2026-05-22 07:18:33 -04:00
README.md docs: add .mailmap, credits table, GitHub mirror scripts; strip agent attributions from docs 2026-05-21 07:02:01 -04:00
rip_module.go feat(rip): retire VLC 'play with menus' — open disc in native VT player 2026-05-22 02:04:38 -04:00
settings_module.go fix(updater): also update DLL folder and ffmpeg/ffprobe on in-place update 2026-05-23 20:20:14 -04:00
subtitles_module.go refactor(buttons): migrate author_module.go widget.NewButton → MakePillButton 2026-05-16 18:28:02 -04:00
thumbnail_config.go Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
thumbnail_module.go Fix Go module path: git.leaktechnologies.dev/stu/VideoTools → git.leaktechnologies.dev/leak_technologies/VideoTools 2026-05-15 02:42:43 -04:00
TODO.md docs: update AGENTS.md, CHANGELOG.md, DONE.md, TODO.md, ROADMAP.md, roadmap.html for dev51 close 2026-06-20 17:20:01 -04:00
update_linux.go fix(update): use helper script for Linux binary replacement 2026-04-13 21:00:54 -04:00
update_windows.go fix(update): retry file copy until lock releases instead of fixed 2s sleep 2026-04-07 16:58:34 -04:00
upscale_module.go feat(filters,upscale): match Convert layout — metadata panel, wider players, clean header 2026-05-22 01:56:48 -04:00
VERSION fix(ci): overhaul Windows DLL pipeline (BUG-012) 2026-06-12 01:33:15 -04:00
VideoTools_test.exe docs: update all 6 docs for dev48 — theme system, transport migration, crash diagnostics, i18n persistence, signing 2026-05-16 15:37:13 -04:00

VideoTools

Video processing suite with native DVD authoring, disc ripping, and a CGo/FFmpeg media engine.

Built for Linux and Windows — macOS is not supported.

Capabilities

  • Convert — H.264/H.265/AV1/ProRes/VP9, lossless remux, DVD-compliant MPEG-2, deinterlace, normalize, crop, preset system
  • Rip — DVD/ISO extraction via FFmpeg dvdvideo demuxer or VOB concat; IFO-based title/chapter/audio/subtitle scanning; region detection; PAL↔NTSC full-disc conversion with IFO regeneration; menu preservation
  • Author — Native DVD-Video authoring: M1M7 menu system, 4 menu resolutions (720→1920px), button highlights, multiple audio/subtitle streams, VOB muxer, UDF writer
  • Burn — Multi-drive disc burning via xorriso/isoburn
  • Queue — Batch job processing with progress tracking per module
  • Filters — Real-time video filter chain (crop, scale, deinterlace, denoise, color, etc.)
  • Audio — Track selection, language tagging, extraction
  • Subtitles — Bitmap subtitle support, pass-through
  • Trim — Frame-accurate cutting with preview
  • Thumbnail — Grid/3-way output with image inspector
  • Compare — Side-by-side before/after with independent engines
  • Upscale — AI-assisted upscaling (Real-ESRGAN, waifu2x, etc.)
  • Inspect — Codec, format, chapter, metadata analysis
  • Settings — Language (en-CA, fr-CA, Inuktitut), HW decode, theme

Platform Targets

Platform Status Notes
Linux x86_64 Primary dev target FFmpeg built from source with x264/x265
Windows x86_64 Primary user target BtbN FFmpeg DLL bundle, isoburn for burning
macOS Not supported No darwin code paths in tree

Project Status

Under active development (v0.1.1-dev49). See Interactive Roadmap for module-by-module status with changelog, checklist, and card-level detail.

Output Formats

Format Video Audio Container
H.264 MKV libx264 (CRF 18) copy / aac MKV
H.264 MP4 libx264 (CRF 18) aac MP4
H.265 MKV libx265 copy / aac MKV
AV1 MKV libaom-av1 / SVT-AV1 copy / aac MKV
ProRes MOV prores_ks pcm_s16le MOV
VP9 WebM libvpx-vp9 libopus WebM
Lossless MKV stream copy stream copy MKV (remux)
DVD-NTSC mpeg2video (CBR 6 Mbps) ac3 (192k) MPG
DVD-PAL mpeg2video (CBR 6 Mbps) ac3 (192k) MPG

Quick Start

Linux

bash scripts/linux/install.sh
source ~/.bashrc
VideoTools

Windows (PowerShell)

.\scripts\windows\install.ps1

For more detail: docs/INSTALL_LINUX.md · docs/INSTALL_WINDOWS.md · docs/INSTALLATION.md

DVD Workflow

Rip a Disc (Rip module)

  1. Insert a DVD or load an ISO → Rip tab
  2. Click Start Scan → IFO parsing shows titles, chapters, audio/subtitle tracks
  3. Select titles to rip (menus excluded by default)
  4. Choose output path → Add to Queue
  5. Start Queue → FFmpeg dvdvideo or VOB concat extracts each title
  6. Output: H.264 MKV per title (or MPEG-2 MPG)

Author a DVD (Author module)

  1. Encode source video as DVD-NTSC/PAL MPEG-2 in Convert
  2. Switch to Author tab → add the encoded stream
  3. Select menu template (M1M7): choose backdrop, colours, layout
  4. Set audio/subtitle languages
  5. Build → creates VIDEO_TS structure with IFO/BUP/VOB
  6. Burn → write to disc via the Burn module

Documentation

Document What it covers
docs/roadmap.html Interactive roadmap with changelog, testing checklist, card-by-card status
docs/ROADMAP.md Mermaid timeline, current state, now/next
docs/INSTALLATION.md Comprehensive install guide (read first)
docs/INSTALL_LINUX.md Linux-specific setup
docs/INSTALL_WINDOWS.md Windows-specific setup
docs/NATIVE_PLAYER.md Native CGo/FFmpeg media engine architecture
docs/REFACTOR_DEV30_PLAN.md Long-term refactor plan (root → internal/)
docs/RIP_MODULE_REDESIGN.md Rip module design and fixes
docs/BURN_MODULE_DESIGN.md Burn module design
docs/CHANGELOG.md Per-release changelog
docs/localization-policy.md i18n strategy (en-CA, fr-CA, Inuktitut)
docs/PLAYER_DEBUG.md Player crash diagnostics log

Localization

VideoTools ships with built-in support for multiple languages. Switch language in Settings → General. Aboriginal Sans is embedded for proper rendering of Unified Canadian Aboriginal Syllabics (Inuktitut).

Language Code Script Coverage
English (Canada) en-CA Latin 100% — source of truth
French (Canada) fr-CA Latin 98%
Inuktitut iu Syllabics + Latin toggle 11% — in progress

Coverage is measured against the en-CA field count. The iu translation is an ongoing community effort; untranslated strings fall back to English automatically.

The Inuktitut syllabics↔roman transliteration algorithm is derived from the iutools project by the National Research Council Canada (MIT license). Empty script variants are auto-filled via transliteration; manually-entered strings take precedence.

Requirements

Runtime:

  • FFmpeg (auto-bundled on Windows via DLLs; Linux built from source in CI)
  • Linux: X11 or Wayland display server
  • Windows: Windows 10/11

Build:

  • Go 1.21+
  • MinGW-w64 (Windows) or GCC (Linux) — required for native_media CGo code
  • pkg-config (Linux)
  • nasm, cmake, git (for FFmpeg/x264/x265 source builds)
  • Resource compiler (Windows): x86_64-w64-mingw32-windres

System Architecture

cmd/videotools/          → Executable entrypoint (future)
internal/media/          → CGo/FFmpeg engine: demux, decode, audio (oto v3), HW accel
internal/media/          → VideoPlayer Fyne widget: frame rendering, control overlay, thumbnails
internal/ui/             → UI components, InlineVideoPlayer API layer
internal/theme/          → VT_Navy palette, PillButton/PillIconButton, text primitives
internal/i18n/           → Localization (en-CA, fr-CA, iu, iu-Latn)
internal/dvd/            → IFO parsing, UDF reader, CSS decrypt, IFO regeneration
internal/convert/        → Presets, FFmpeg pipeline config
internal/queue/          → Batch job queue with progress
internal/app/modules/    → All feature modules (convert, rip, author, burn, queue, etc.)
internal/app/            → App wiring (module registry, settings, config)
scripts/                 → Build/install automation (Linux + Windows)

Build & Run

# One-time setup (Linux)
source scripts/alias.sh

# Run
VideoTools

# Rebuild
VideoToolsRebuild

Windows:

.\scripts\windows\install.ps1

Direct (any):

go build -tags native_media -o VideoTools .
./VideoTools
VIDEOTOOLS_DEBUG=1 ./VideoTools

Troubleshooting

  • BUILD_AND_RUN.md — setup troubleshooting
  • videotools.log — error details
  • VIDEOTOOLS_DEBUG=1 — verbose logging
  • docs/PLAYER_DEBUG.md — player crash diagnostics
  • docs/INSTALL_LINUX.md / docs/INSTALL_WINDOWS.md — platform-specific issues

Getting Help

  1. docs/roadmap.html — feature status and testing checklist
  2. docs/INSTALLATION.md — setup guide
  3. docs/ROADMAP.md — planned work
  4. docs/CHANGELOG.md — release history
  5. Issue tracker: https://git.leaktechnologies.dev/leak_technologies/VideoTools/issues

Credits

VideoTools directly depends on and gratefully acknowledges these projects:

Project Used for License
FFmpeg All media encode/decode/filter/mux operations LGPL/GPL
Fyne Cross-platform GUI toolkit BSD-3
oto Audio playback engine Apache-2.0
x264 H.264 encoding (static build, from source) GPL-2
x265 H.265/HEVC encoding (static build, from source) GPL-2
iutools Inuktitut syllabics↔roman transliteration algorithm MIT
Aboriginal Sans Inuktitut syllabics font rendering OFL
Real-ESRGAN / ncnn AI upscaling engine BSD-3
RIFE Frame interpolation (ncnn port) MIT
Real-CUGAN Anime upscaling (ncnn port) MIT
BtbN/FFmpeg-Builds Windows shared DLL CI bundle LGPL/GPL
linuxdeploy + AppImageKit Linux AppImage packaging GPL-2 / MIT
SignPath / SignPath.io Windows code signing