How do I set up RiverMax synchronization in Unreal Engine 5.5?

I saw that the option to set up synchronization has been deprecated.How do I set up RiverMax synchronization in Unreal Engine 5.5?

/**

* Player mode to be used.

* Latest : Default mode. Will use latest available at render time. No alignment.

* Framelock : Will match sample’s frame number with engine frame number. Meant to be used for UE-UE contexts like for nDisplay

* : Will wait for an expected to arrive before moving with render

*/

UE_DEPRECATED(5.5, “This property has been deprecated.”)

UPROPERTY(meta = (DeprecatedProperty, DeprecationMessage = “Use Sample Evaluation Type and Framelock instead”))

ERivermaxPlayerMode_DEPRECATED PlayerMode_DEPRECATED = ERivermaxPlayerMode_DEPRECATED::Latest;

Hello [mention removed]​ ,

As of CL 36619371, the URivermaxMediaSource class has been refactored to inherit from UCaptureCardMediaSource with the goal of removing duplicated code and unify logic with other capture card media sources.

The deprecated PlayerMode property is now replaced by a set of inherited properties designed to achieve the same behavior.

`/** Should wait for some time until requested frame arrives? Requires JIT rendering. */
UPROPERTY(EditAnywhere, AdvancedDisplay, Category = Synchronization, meta = (DisplayName = “Framelock”))
bool bFramelock = false;

/** Sample evaluation type. */
UPROPERTY(EditAnywhere, AdvancedDisplay, Category = Synchronization, meta = (DisplayName = “Sample Evaluation Type”))
EMediaIOSampleEvaluationType EvaluationType = EMediaIOSampleEvaluationType::PlatformTime;

/**

  • Synchronize the media with the engine’s timecode.
  • The media player has be able to read timecode.
  • The media player will try to play the corresponding frame, base on the frame’s timecode value.
    */
    UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Synchronization, meta=(DisplayName=“Time Synchronization”))
    bool bUseTimeSynchronization;`If you previously relied on the PlayerMode_DEPRECATED = ERivermaxPlayerMode_DEPRECATED::Framelock, the equivalent configuration in 5.5+ would be:

EvaluationType = EMediaIOSampleEvaluationType::Timecode; bUseTimeSynchronization = true; bFramelock = true;This mapping is also handled automatically during asset loading in the PostLoad() function for backward compatibility:

`void URivermaxMediaSource::PostLoad()
{
Super::PostLoad();
// We can only recover data during editor. Proprties will be fixed during cook.
#if WITH_EDITORONLY_DATA
const int32 RivermaxMediaVersion = GetLinkerCustomVersion(FRivermaxMediaVersion::GUID);
PRAGMA_DISABLE_DEPRECATION_WARNINGS;

// Rivermax was merged with other capture card media sources and these properties
// are either duplicates or provide limited functionality compared to the inherited UI.
if (RivermaxMediaVersion < FRivermaxMediaVersion::BeforeCustomVersionAdded)
{
if (bUseZeroLatency_DEPRECATED == false)
{
bUseTimeSynchronization = true;
FrameDelay = 1;
}

if (bIsSRGBInput_DEPRECATED == true)
{
bOverrideSourceEncoding = true;
OverrideSourceEncoding = EMediaIOCoreSourceEncoding::sRGB;
}

if (PlayerMode_DEPRECATED == ERivermaxPlayerMode_DEPRECATED::Framelock)
{
EvaluationType = EMediaIOSampleEvaluationType::Timecode;
bUseTimeSynchronization = true;
bFramelock = true;
}
else
{
EvaluationType = EMediaIOSampleEvaluationType::Latest;
bFramelock = false;
}

Modify();
}

PRAGMA_ENABLE_DEPRECATION_WARNINGS;
#endif

}`Please let me know if this information helps.

Best,

Francisco

Currently, when we switch to UE 5.4 synchronization, there will be an error message at the receiving end, resulting in a black screen

UE5.5 log Here still not synchronization

Hello [mention removed]​,

Thanks for the update. Glad to hear things are working better now.

Just to confirm before closing the case: is synchronization working as expected in UE 5.5 using the FrameCreation method?

Also for future reference, could you share the settings you ended up using for the parameters mentioned in the first reply?

Best,

Francisco

We tried to use nDisplay to play RiverMax and set the parameters mentioned above, but it still cannot be synchronized. Are there other settings that affect synchronization?

[Image Removed]

目前我们换了5.4同步在接收端会有报错导致黑屏​[Image Removed]

UE5.5---> If I set timecode in Project Settings--> General Settings--> Timecode--> Timecode Provider --> Rivermax Timecode Provider--> .here some onther Warning

[2025.08.06-04.13.47:289][ 0]LogStats: UGameplayTagsManager::InitializeManager - 0.000 s

[2025.08.06-04.13.47:335][ 0]LogRivermax: Warning: Rivermax library was not initialized correctly. Did you install the Rivermax SDK?

[2025.08.06-04.13.47:335][ 0]LogRivermaxMedia: Warning: Can’t initialize Rivermax TimecodeProvider, library isn’t initialized.

[2025.08.06-04.13.47:335][ 0]LogEngine: Warning: InitializeTimecodeProvider - Failed to intialize TimecodeProvider ‘/Engine/Transient.DisplayClusterGameEngine_0:RivermaxTimecodeProvider_0’.

---------------

[2025.08.06-04.13.47:572][ 0]LogRivermax: Display: Succesfully loaded Rivermax library from ‘C:\Program Files\Mellanox\MLNX_WinOF2\..\Rivermax\lib’

[2025.08.06-04.13.47:624][ 0]LogRivermax: Display: Configure Rivermax clock for PTP using device interface 169.254.180.162

[2025.08.06-04.13.47:624][ 0]LogRivermax: Rivermax library version 1.41.11 succesfully initialized, with GPUDirect support.

-------------------------

LogMediaIOCore: Warning: The video ‘rmax://’ is configured to use timecode but none is available on the engine.

---------

Update on the latest progress. After switching to FrameCreation for synchronization, everything has returned to normal. At the same time, the RootComplex of DPU and GPU have been adjusted together. Currently, it can guarantee normal synchronization for 8 hours, but after that, frames will drop crazily, suspected to be caused by overheating.

We used the following parameter settings: EvaluationType = EMediaIOSampleEvaluationType::Timecode;

bUseTimeSynchronization = true;

bFramelock = true;

No need to set the Timecode Provider in projectSettings.

Alignment =FrameCreation was also set.

------

Yesterday’s testing showed a low frame rate when rendering 4K resolution in the inner frustum of UE5.5. While syncing to a 50 FPS signal, the actual frame rate was only around 40. Today we’ll investigate the cause.

Under the same hardware and software environment, UE5.4 performed very well, maintaining a stable 50 FPS sync and no NV sync loss logs.

Hello [mention removed]​,

Thanks for confirming the settings. Regarding the performance problem, there have been a couple of updates to RivermaxMediaPlayer since the integration of Rivermax with Media IO that may be relevant to this:

  • CL 47903344: Stability update fixing incorrect frame number inference from timestamps and improving sample state tracking.
  • CL 43646303: Workaround for a Multi-SRD issue in Rivermax that could cause significant performance drops at custom resolutions.

These changes are included in UE 5.6 and may be worth investigating.

I’ll close this case now, but if you’d like to discuss Rivermax further, feel free to open a new case or continue here if it’s related to the same sync issue.

Best,

Francisco