Skip to content

Version 6.3.0 - #740

Open
cdgriffith wants to merge 26 commits into
masterfrom
develop
Open

cdgriffith wants to merge 26 commits into
masterfrom
develop

Conversation

@cdgriffith

@cdgriffith cdgriffith commented Apr 5, 2026 •

Copy link
Copy Markdown
Owner
  • Adding Feature request: Add gamma correction option #377 Gamma #550 Add Gamma option to the EQ filter #694 gamma and hue options to the Equalizer in the Advanced panel (FFmpeg eq/hue filters for software encoders, --vpp-tweak for rigaya) (thanks to lincsat, DCNerds, and Patrick Isbendjian)
  • Adding Add sharpen filters #405 sharpen filter (CAS) to the Advanced panel (FFmpeg cas filter for software encoders, --vpp-unsharp for rigaya)
  • Adding Set GOP Length #447 GOP length setting to the Advanced panel (FFmpeg -g, rigaya --gop-len) (thanks to colemar)
  • Adding Add deinterlace options to profile #498 deinterlace setting persistence in profiles
  • Adding -movflags +faststart toggle #526 -movflags +faststart toggle for MP4/MOV containers, enabled by default (thanks to Aria)
  • Adding Reverse Video option in the Advanced panel (applies FFmpeg reverse video filter and areverse audio filter for converted tracks)
  • Adding rigaya encoder support for Equalizer (--vpp-tweak), Denoise (--vpp-nlmeans/knn/pmd), Deblock (--vpp-deblock), Output FPS (--vpp-fps), and Video Track Title — only Video Speed and Reverse Video remain unsupported
  • Adding warning in Data & Attachments tab and reason text when tracks are incompatible with the output format (e.g. data streams in MKV)
  • Changing Advanced panel layout to use QGroupBox sections (Video Details, Frame Rate, Video Processing, Color, Output) for better visual hierarchy
  • Fixing Error generating thumbnail (dolby vision track) #736 thumbnail and crop preview generation failing with FFmpeg 8.0+ by adding -update 1 flag required by the image2 muxer for single-image output (thanks to kliffgomel)
  • Fixing Conversion Error with Google Phone Videos #738 conversion error with Google Pixel videos by disabling data stream mapping for Matroska containers which do not support data streams (attachments like fonts are still allowed) (thanks to Hankuuuu)
  • Fixing attachment streams (fonts, etc.) losing mimetype/filename metadata during conversion due to -map_metadata -1 stripping per-stream tags required by the muxers
  • Fixing cover image metadata targeting wrong output stream when data/attachment tracks are present (FFmpeg places -map streams before -attach streams in output order)
  • Fixing data streams being auto-included by FFmpeg when encoding to MKV, causing "Only audio, video, and subtitles are supported" errors — now explicitly excludes unmapped data with -dn and rechecks compatibility when output format changes
  • Fixing Unable to add more than 1 video to FastFlix in a session #739 unable to add more than 1 video per session due to AttributeError when closing audio track widgets (thanks to mrdav1)
  • Fixing startup crash when queue file exists but is missing the 'queue' key

…eg 8.0+ by adding `-update 1` flag required by the image2 muxer for single-image output (thanks to kliffgomel)
… (FFmpeg eq/hue filters for software encoders, --vpp-tweak for rigaya)

* Adding Reverse Video option in the Advanced panel (applies FFmpeg reverse video filter and areverse audio filter for converted tracks)
* Adding rigaya encoder support for Equalizer (--vpp-tweak), Denoise (--vpp-nlmeans/knn/pmd), Deblock (--vpp-deblock), Output FPS (--vpp-fps), and Video Track Title — only Video Speed and Reverse Video remain unsupported
* Fixing #738 conversion error with Google Pixel videos by disabling data stream mapping for Matroska containers which only support audio, video, and subtitle streams (thanks to Hankuuuu)
* Fixing #739 unable to add more than 1 video per session due to AttributeError when closing audio track widgets (thanks to mrdav1)
* Fixing startup crash when queue file exists but is missing the 'queue' key
…filter for software encoders, --vpp-unsharp for rigaya)

* Adding #447 GOP length setting to the Advanced panel (FFmpeg -g, rigaya --gop-len) (thanks to colemar)
* Adding #498 deinterlace setting persistence in profiles
* Adding #526 -movflags +faststart toggle for MP4/MOV containers, enabled by default (thanks to Aria)
…s are incompatible with the output format (e.g. data streams in MKV)

* Fixing attachment streams (fonts, etc.) losing mimetype/filename metadata during conversion due to `-map_metadata -1` stripping per-stream tags required by the muxers
* Fixing cover image metadata targeting wrong output stream when data/attachment tracks are present (FFmpeg places `-map` streams before `-attach` streams in output order)
* Fixing data streams being auto-included by FFmpeg when encoding to MKV, causing "Only audio, video, and subtitles are supported" errors — now explicitly excludes unmapped data with `-dn` and rechecks compatibility when output format changes
…, and AV1 (SVT-AV1) encoders

* Adding #457 QSVEncC --tune parameter support (hq, ll, ull, lossless) for HEVC, AV1, and AVC encoders (thanks to Marco Ravich)
* Adding #682 HE-AAC and HE-AAC v2 audio profile selection for AAC and libfdk_aac codecs (thanks to Augusto7743)
* Adding #520 "Same as Source" option for the output file extension, matching the output container to the source format for batch encoding mixed MKV/MP4 files (thanks to x9sim9)
* Adding #480 2-pass CRF encoding for the AOM AV1 encoder for improved quality (thanks to jimbow973)
* Adding #665 profile-level control for subtitle "default" and "forced" disposition flags with Keep Source, Clear All, and Set on First Track modes (thanks to legoleigh)
* Adding #523 drag and drop folder support in the Concatenation Builder (thanks to GokieKS)
* Adding #677 "Keep source loaded after adding to queue" setting to allow tweaking and re-queuing the same source without reloading (thanks to Mine181)
* Adding #594 codec and codec+profile matching options for audio profile pattern matching, allowing users to distinguish between e.g. DTS-HD MA and regular DTS tracks (thanks to Damundai)
* Adding #202 new video filters to the Advanced panel: vibrance, color temperature, curves presets, colorbalance presets, unsharp mask, deflicker, pad/letterbox, LUT3D file loading, and nlmeans_opencl GPU-accelerated denoise — with rigaya hardware encoder support for curves (--vpp-curves), unsharp (--vpp-unsharp), pad (--vpp-pad), LUT3D (--vpp-colorspace lut3d), and nlmeans_opencl (--vpp-nlmeans)
…ndard aspect ratios (4:3 FHD, 2.76:1 ultra-wide) due to independent dimension tracking across cropdetect frames and Python falsy-zero bug (thanks to hallmansm)

* Adding structured table view to Source Details tab with grouped sections, human-readable value formatting, Download JSON export, and full path tooltips on source/output filename fields
* Fixing HDR tonemapping failing with zscale "no path between colorspaces" by passing complete source colorspace parameters (primaries, matrix, transfer) to the zscale filter, with fallback retry for crop previews when tonemapping still fails
* Fixing bitrate combobox being unreadably small on x264 and x265 encoders — combo now sizes to fit its widest item
* Fixing rigaya encoder pad/letterbox calculation ignoring crop dimensions due to incorrect type check
…r exporting mastering display and content light level data in x265-compatible format (thanks to yundebian918)
@jrff123

jrff123 commented Aug 4, 2026

Copy link
Copy Markdown

please, add support to enable the option/ability to download at fastflix start-up the lastest ffmepg software and/or rigaya software, and the option to checks stable/beta fastflix program at the start-up.
Thanks!!

cdgriffith and others added 16 commits October 20, 2026 19:47
- Keep auto-detected interlacing when a profile default is applied
- Give a kept source a fresh uuid/work_path after adding to queue
- Use explicit mode for yadif/bwdif/w3fdif/estdif deinterlace presets
- Suppress speed/reverse warnings on programmatic changes
- GOP length minimum 1, preserve values with is-not-None checks
- Restore word wrap in yes_no_message
- ElidedLabel now actually elides (small minimum size hint)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Reverse forces input-side seeking so -ss/-to are not applied to the reversed timeline
- nlmeans_opencl initializes the OpenCL device without HDR removal; falls back to CPU nlmeans
  when OpenCL is unavailable (thumbnails); hwupload format follows source bit depth (p010)
- Copy encoder no longer reverses converted audio when video filters are disabled
- Pad is applied after rotation/flip
- Text subtitle burn-in is applied before reverse
- Data/attachment per-stream metadata uses the real output index computed from emitted maps
- gop_length <= 0 is treated as unset (no -g 0)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- QSVEncC: use valid --tune values (default, psnr, ssim, ms_ssim, vmaf, perceptual); drop legacy NVEncC values
- HE-AAC only for libfdk_aac (native aac rejects it); HE-AACv2 falls back to HE-AAC when not stereo
- rigaya --audio-profile uses libavcodec names (HE-AAC, HE-AACv2)
- x264 lossless omits incompatible -profile:v (keeps high444)
- SVT-AV1/AOM lossless skip film grain / denoise options
- Merge hdr2sdr and lut3d into a single --vpp-colorspace
- rigaya pad calculation accounts for 90/270 rotation
- Treat gop_length <= 0 as unset for rigaya encoders

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…les, i18n

- Video.compute_output_dimensions: restore w:-N / -N:h custom scaling, round auto dimension to nearest multiple
- Auto-crop: ignore negative cropdetect output, use union of content rects per edge (also in GUI aggregation)
- Info panel: reset hdr10 button/min height, deleteLater tabs, plain-text labels, error box on HDR10 save failure
- Data panel: restore user's Preserve selection when container becomes compatible again
- ToggleSwitch: dimmed rendering when disabled
- Profile window: remove dead set_disposition_from_profile, add AAC (HE) profile selector
- languages.yaml: add missing keys and translations
- test_local_encode: accept webp_anim, skip unavailable hardware encoders

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y deinterlace presets

* FFmpeg hevc_nvenc/av1_nvenc bitrate mode used -pass/-passlogfile/-2pass, which NVENC does not support
  (-2pass was removed from FFmpeg); now a single encode using -multipass
* hevc_nvenc passed -spatial_aq:v, the FFmpeg option is -spatial-aq
* Cover -attach metadata now addressed by attachment-type stream specifier (s:t:N) instead of stale outdex
* Map deinterlace filter strings saved by earlier versions back to the new explicit presets

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…einterlace toggle

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…uild pipeline

Installer/uninstaller:
- Self-delete now writes a temp .bat (retry loop, deletes itself) run hidden/detached
- New shared package cmd/internal/ffinstall: path validation, separator-aware
  protected-root checks, SafeToRemove marker checks, manifest-based removal that keeps
  user files (portable fastflix.yaml), registry cleanup in both views, process detection
  incl. orphaned python.exe, IsAdmin via process token
- Installer writes install_manifest.txt; uninstall removes only installed entries and
  only the registry root that owns the install; --silent still checks running + elevates
- Elevated cleanup/installs use installer helper modes (--elevated-uninstall/-install)
  instead of cmd /c rmdir; error markers surfaced in the GUI, incl. timeout
- Finds NSIS installs via WOW6432Node view; cleans WOW6432Node uninstall key
- Shortcut creation passes paths via env vars and reports errors
- Remove dead code (runUninstall, copyFile, --elevated-copy, expired ad), use BuildDate
- Fix go vet unsafe.Pointer warnings, handle leaks, installing flag, partial extraction
- Launcher passes args through, drops ineffective PYTHONHOME/PYTHONPATH

Build/CI:
- build_distribution.py: clean wheel dir, exactly one wheel, uv.lock-pinned deps resolved
  for bundled CPython 3.13 / win_amd64|arm64, single DEFAULT_PYTHON_VERSION (3.13.16),
  runs go-winres for every cmd, -H windowsgui for uninstaller, injects version/date,
  syncs winres.json from fastflix/version.py, --installer flag, keeps license files,
  limits tests-dir deletion to known-safe packages
- Windows CI job uses the new pipeline (setup-go, go-winres v0.3.3, go vet/test, smoke test)
- Remove accidentally committed .claude/settings.local.json and detect_cards.py,
  fix .gitignore entry, drop unused deepl dev dependency
- Update WINDOWS_BUILD.md, CLAUDE.md build section and build-installer skill

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sole windows

Paths are passed to the cleanup batch through environment variables instead of being written into the
script (cmd reads batch files in the OEM code page), and the batch runs with CREATE_NO_WINDOW only, since
DETACHED_PROCESS made each ping open its own console window.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… delete checks

The elevated helpers no longer write a marker file to a user-controlled temp path
(symlink/junction overwrite risk). The GUI launches them with ShellExecuteExW
(SEE_MASK_NOCLOSEPROCESS), waits on the process handle and reads GetExitCodeProcess.

LooksInstalled now requires FastFlix.exe plus a manifest, uninstall.exe or python dir.
The legacy delete-everything branch additionally requires a folder named FastFlix with
FastFlix.exe and uninstall.exe.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nux (#766)

* Implement clean_env to manage environment variables

Add clean_env function to remove LD_LIBRARY_PATH from environment.

* Add clean_env to subprocess environment

* Use clean_env() in run_check_features function

Added clean_env() to subprocess calls for feature checks.

* Add clean_env to subprocess calls in background_tasks

Updated the run method to include a clean environment for subprocesses.

* Update subprocess call to include cleaned environment

Pass cleaned environment to subprocess run for thumbnail generation.

* Use clean_env for thumbnail generation

Updated thumbnail generation to use a cleaned environment.

* Use clean environment for thumbnail generation

Updated thumbnail generation to use a cleaned environment.

* Add clean_env function to subprocess environment

---------

Co-authored-by: Chris Griffith <chris@cdgriffith.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants