Skip to content

nv-filters: Enable support for newest SDK - #13838

Open
pkviet wants to merge 4 commits into
obsproject:masterfrom
pkviet:nvidia_sdk_update
Open

nv-filters: Enable support for newest SDK#13838
pkviet wants to merge 4 commits into
obsproject:masterfrom
pkviet:nvidia_sdk_update

Conversation

@pkviet

@pkviet pkviet commented Aug 29, 2026

Copy link
Copy Markdown
Member

Description

This adds support to :

  • version 1.3.0 of video FX SDK,
  • version 3.0.0 of audio FX SDK.

These versions do not add any feature but allow compatibility with ARM64.
Due to some ABI breaks with v3.0.0, some clean-up of unused functions has also been done.
Unused CUDA functions have also been removed from the video FX loader.
The DLL loading has been updated because NVIDIA broke the DLL architecture by offloading the FX to child DLLs.

NB: there are issues when video and audio FX redist are not updated at the same time. This actually occurs at any update of both FX SDKs. NVIDIA can only ensure both are working when the versions are those released concurrently (private comm. to the PR author).
The core of the problem is that both SDKs rely on the same set of dlls (notably nvinfer) and if versions are mismatched, one of the 2 SDKs will not work.

NB2: I chose to explicitly load the child FX dlls we use instead of using AddDllDirectory. This allows an early failure in case of issues: the main dlls might load before having attempted to load their children FX dlls which are usually loaded only when an effect is created, which is much later in the pipeline.

Motivation and Context

Support ARM64 platform.

How Has This Been Tested?

Tested that:

  • current redists (0.7.6 for video and 1.6.1.2 for audio) still work. So the code is backwards compatible.
  • tested audio FX 3.0.0 on x64, which works.
    Untested:
  • video FX 1.3.0 on x64 and ARM64.
  • audio FX 3.0.0 on ARM64

Types of changes

  • Tweak (non-breaking change to improve existing functionality)

Checklist:

  • I have read the contributing document.
  • My code has been run through clang-format.
  • My code follows the project's style guidelines
  • My code is not on the master branch.
  • My code has been tested.
  • All commit messages are properly formatted and commits squashed where appropriate.
  • I have included updates to all appropriate documentation.

@pkviet pkviet added the Seeking Testers Build artifacts on CI label Aug 29, 2026
@pkviet pkviet added this to the OBS Studio 33.0 milestone Aug 29, 2026
@pkviet
pkviet force-pushed the nvidia_sdk_update branch 4 times, most recently from ad44e6b to f08c935 Compare August 30, 2026 19:10

@RytoEX RytoEX left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the comments I've marked in nvafx-load.h and nvvfx-load.h come from the SDK, then don't change them.

Commit message nits:

  • nv-filters : -> nv-filters:
  • dll -> DLL
  • nvafx -> NVAFX

What happens if a user has the current versions of AFX/VFK (1.6.1.2/0.7.6.0) installed?

Comment thread plugins/nv-filters/data/locale/en-US.ini Outdated
Comment thread plugins/nv-filters/data/locale/en-US.ini Outdated
Comment thread plugins/nv-filters/nvafx-load.h Outdated

#define NVAFX_PARAM_NUM_INPUT_SAMPLES_PER_FRAME "num_input_samples_per_frame"
#define NVAFX_PARAM_NUM_OUTPUT_SAMPLES_PER_FRAME "num_output_samples_per_frame"
/* sdk >= 3.0.0.49, replaces the 2 previous define... */

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/* sdk >= 3.0.0.49, replaces the 2 previous define... */
/* SDK >= 3.0.0.49: replaces the 2 previous define... */

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment thread plugins/nv-filters/nvafx-load.h Outdated
#define NVAFX_PARAM_NUM_OUTPUT_CHANNELS "num_output_channels"
#define NVAFX_PARAM_INTENSITY_RATIO "intensity_ratio"
#define NVAFX_PARAM_ENABLE_VAD "enable_vad"
/** sdk >= 3.0.0.49 : Voice activity status (boolean). This is immutable parameter */

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/** sdk >= 3.0.0.49 : Voice activity status (boolean). This is immutable parameter */
/** SDK >= 3.0.0.49: Voice activity status (boolean) is an immutable parameter. */

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see this change pushed. Was it omitted?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mmh I was sure I had pushed it. Initially I had forgotten to save the file but then i repushed. I'll fix tomorrow anyway

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

Comment thread plugins/nv-filters/nvafx-load.h
@pkviet
pkviet force-pushed the nvidia_sdk_update branch 4 times, most recently from 61a8fe9 to ea8c3a9 Compare September 4, 2026 07:40

@RytoEX RytoEX left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Commit message nit still applies. Will set aside time to re-test this.

SDK 3.0.0 brings compatibility with arm64. The DLL loading sequence has
been adjusted since the FX are now loaded in their own child DLL.
The DLL loader has been also cleaned up by removing unused symbols. This
allowed us to dodge a few ABI breaks from NVIDIA...

Signed-off-by: pkv <pkv@obsproject.com>
Voice Activated Detection (VAD) does not work with the room echo removal
(dereverb) FX.
So we remove it from Properties.

Signed-off-by: pkv <pkv@obsproject.com>
This updates the video FX SDK to 1.3.0, which enables arm64 support.
Backwards compatibility with SDK 0.7.6 has been kept.

Signed-off-by: pkv <pkv@obsproject.com>
CUDA is no longer used in Audio FX, so we remove everything related to
it in the nvafx loader.

Signed-off-by: pkv <pkv@obsproject.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Seeking Testers Build artifacts on CI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants