Repository navigation
feat: Supercharge FFmpeg & Third-Party Codecs Status Assistant - #56
Merged
Merged
Conversation
…alog (#35) - Introduce RvCodecManager and RvCodecDialog for cross-platform detection and management of multimedia codecs and third-party SDKs (FFmpeg, Blackmagic RAW, RED Digital Cinema, NDI Network Video, and Apple VideoToolbox) - Detect when Homebrew ffmpeg-full is shadowed by standard ffmpeg on macOS/Linux and provide a 1-click Relink FFmpeg-Full action and startup alerts - Provide instructions and commands for Windows package managers (winget, scoop, choco, Gyan.dev) to install shared FFmpeg with full codec support - Expose showCodecDialog and isFFmpegShadowed to Mu and Python scripting environments - Integrate into Help menu (Supercharge FFmpeg & Codecs...) and Preferences -> Formats tab - Add standalone cross-platform CLI/GUI helper openutv-supercharge-ffmpeg.py with .sh and .cmd wrappers and stage into app bundle resources - Closes #35 Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…decDialog - Remove probeAll() call from RvCodecDialog::refreshUI() to eliminate synchronous infinite signal recursion with statusUpdated - Cleanly remove and delete layout items in RvCodecDialog::refreshUI() to prevent dangling layout pointers - Inject Homebrew/system binary search paths into QProcessEnvironment in probeFFmpeg and relinkFFmpegFull for macOS GUI application mode - Reduce probe process timeouts to 500ms to keep UI snappy Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…DK versions Signed-off-by: Michael Oliver <mcoliver@gmail.com>
… all platforms - Fix false positive where standard Homebrew FFmpeg was labeled Supercharged due to basic libx265 flag - Use canonical path symlink resolution, prefix checks, and full-build flags (libplacebo, libxvid, whisper, gyan.dev) to distinguish true FFmpeg-Full - Correctly flag when FFmpeg-Full is shadowed by standard FFmpeg and offer 1-click relinking - Extract and display detected active FFmpeg version string in UI - Update version requirement title to v7.x–v9.x+ (Full) Signed-off-by: Michael Oliver <mcoliver@gmail.com>
When ffmpeg-full is not installed on the system, wire the action button to onInstallFFmpegHomebrewClicked instead of onRelinkFFmpegClicked. Provide users with the option to launch Terminal directly or copy 'brew update && brew install ffmpeg-full && brew link --overwrite ffmpeg-full' to the clipboard. Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…fmpeg Signed-off-by: Michael Oliver <mcoliver@gmail.com>
- On Windows, re-read User/System PATH from the registry and probe %LOCALAPPDATA%/Microsoft/WinGet/Links and Packages directories. - Prioritize Gyan.dev FFmpeg Shared full builds when evaluating candidates. - Add support for NDI 6 Tools runtime dll paths and recursive search under C:/Program Files/NDI. Signed-off-by: Michael Oliver <mcoliver@gmail.com>
… deprecation Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…iler Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…rectories on Windows Signed-off-by: Michael Oliver <mcoliver@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Addresses and resolves #35: feat: supercharge ffmpeg.
Provides a comprehensive, cross-platform 'easy button' and status assistant for users to supercharge FFmpeg (enabling non-free/patented codecs like H.265/HEVC, AAC, ProRes) while strictly respecting software distribution and licensing requirements. Extends coverage to other professional formats requiring third-party runtime installs: Blackmagic RAW (BRAW), RED Digital Cinema (R3D), NewTek NDI Network Video, and native Apple VideoToolbox / ProRes RAW.
Key Features Implemented
RvCodecManagerDynamic Probing & Engine Backend:ffmpeg -versionconfiguration flags (--enable-libx265,--enable-nonfree,--enable-gpl, etc.) and determines if the active build is standard or supercharged.ffmpeg-fullis installed via Homebrew but shadowed by standardffmpeg(due tobrew upgradesymlink overwrites).brew unlink ffmpeg-full && brew unlink ffmpeg && brew link --overwrite ffmpeg-fulldirectly from C++ and Python.RED_SDK_PATH, local OpenUTV RED folders (~/Library/Application Support/OpenUTV/RED,%APPDATA%/OpenUTV/RED), and provides 1-click folder opening and SDK download links.RvCodecDialogModern Qt UI:winget install "FFmpeg (Shared)",scoop install ffmpeg-shared), open Gyan.dev release builds, open RED SDK directory, download BRAW, download NDI.Application Integration:
Help -> Supercharge FFmpeg & Codecs...in Mu (openrv_help_menu_mode.mu), with dynamic alert warning if shadowed on startup.Video Codecs & Professional Formatssection at the top of the Formats tab with a direct button to launch the assistant dialog.commands.showCodecDialog()andcommands.isFFmpegShadowed()to Mu and Python (py_rvui).Standalone Cross-Platform CLI/GUI Helper:
src/bin/nsapps/UTV/openutv-supercharge-ffmpeg.py(with.shand.cmdwrappers).--status(formatted terminal report),--json(structured data),--relink, and--open-red-folder.Closes #35.