Skip to content

fix(r3d): enhance RED SDK initialization diagnostics and user search paths - #49

Merged
mcoliver merged 6 commits into
mainfrom
fix/red-sdk-diagnostics-search-paths
Sep 25, 2026
Merged

mcoliver merged 6 commits into
mainfrom
fix/red-sdk-diagnostics-search-paths

Conversation

@mcoliver

Copy link
Copy Markdown
Collaborator

Summary

  • User search paths: Added automatic lookup for RED Redistributable libraries in standard user configuration directories:
    • macOS: ~/Library/Application Support/OpenUTV/RED
    • Linux: ~/.local/share/openutv/red
    • Windows: %APPDATA%\OpenUTV\RED
  • Lifecycle & Cleanup: Explicitly call R3DSDK::FinalizeSdk() upon any failed InitializeSdk() call before fallback or moving to the next directory (mandated by RED SDK documentation).
  • Diagnostics: Log actionable warnings with full enum status strings if InitializeSdk fails, explicitly identifying ISLibraryVersionMismatch (status 6) when an installed RED PLAYER/REDCINE-X is a different version than the SDK UTV was compiled against.
  • Preloader logging: Fixed a bug in MovieIO.cpp where PRELOADER READ ERROR printed **** filename cleared **** instead of the actual file path.

Root Cause Context

UTV was compiled against R3D SDK 9.2.1. When scanning /Applications/REDCINE-X Professional/RED PLAYER.app/Contents/MacOS, it finds REDR3D.dylib version 9.3.0. Because RED SDK uses an internal handshake verifying the static shim version matches the dynamic library version, RED returns ISLibraryVersionMismatch (6). Pointing RED_SDK_PATH to matching 9.2.1 Redistributables immediately enabled seamless playback and Metal GPU debayering.

…paths

- Add user directory search paths for RED Redistributable libraries:
  - macOS: ~/Library/Application Support/OpenUTV/RED
  - Linux: ~/.local/share/openutv/red
  - Windows: %APPDATA%/OpenUTV/RED
- Ensure R3DSDK::FinalizeSdk() is called upon any non-OK InitializeSdk() return
- Provide detailed warning logs including enum descriptions when InitializeSdk fails
- Explicitly warn if ISLibraryVersionMismatch (6) is encountered
- Fix MovieIO preloader error logging to report filename instead of cleared string

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…ser notifications

- Add cross-platform probeREDLibraryVersion() using LoadLibrary/dlopen to query
  RED_LIB_MAJOR_VERSION, RED_LIB_MINOR_VERSION, and RED_MINIMUM_MINOR_VERSION
- Explicitly notify user if installed RED PLAYER is older than required (9.2.1+)
  with a prompt to update RED PLAYER from red.com/downloads
- Inform user if installed RED PLAYER is newer (such as 9.3.0) with ABI mismatch
- Surface detailed diagnostics directly into MovieRED preloadOpen IOException

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…s/Linux

- Restore ditto -c -k --keepParent to ensure macOS .app bundle integrity and structure
- Restore zip/tar.gz packaging for Windows and Linux artifacts

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…eration when supported

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…inux

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
…rectly

Signed-off-by: Michael Oliver <mcoliver@gmail.com>
@mcoliver
mcoliver merged commit 0cbd488 into main Sep 25, 2026
9 checks passed
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.

1 participant