Skip to content

Conversation

@Trouffman
Copy link
Collaborator

Context

Prepare for 6.1 release
Add Minimum version check (OBS & NDI)

Goal

Enforce minimum requirements in OBS Major version and NDI SDK
Unload plugin if minimum requirements are not met (avoid issues & breaking things)

Why enforce min requirement for OBS/NDI version?

Read more at : #1189

TL;DR :

Updated Minimum Requirement

OBS v31+
NDI SDK/Runtime v6+

Why is this change necessary ?
There are changes integrated in OBS 31 that split the configuration files and we are following the guidelines set by the OBS team for a sustainable OBS-user community.

NDI v6 has been widely available for months now and proven reliable. The codebase in DistroAV 6 already integrate with NDI v6, even tho we did not leverage new feature and code optimization (yet), this will be a possiblity at "anytime" with DistroAV 6.1.

Adding a note to this TL;DR above : some changes in the audio processing in the DistroAV code requires it and bugs relating to audio have been corrected in NDI 6.1 (still we are only enforcing 6.0 for now).

Behavior expected

If the minimum OBS & NDI version are not met:

  • The plugin will unload
  • An error entry in the log will be displayed with a unique error code that can be easily searched for
  • TODO : Add a more comprehensive solution in the wiki for the error code 424 & 425 (minimum version not met)
  • TBC : An error popup will inform the user with the error code

If the minimum OBS & NDI versions are met:

  • Happy days! It will load as expected.

Change management / transparency / Roll-out plan

  • Some users are still on 4.14, and have not yet moved to DistroAV v6, but have moved on to OBS 31 and NDI 6. So no more excuses to hold back upgrade. The 4.14 codebase is over a year old and 2 major versions behind and not maintained/supported.

  • Some distros (Fedora?) are quite behind on NDI SDK (like 5.6), I have reached out to a couple maintainers of said package/distros (Nobara) that this might impact some of their users. - Fedora is not officially supported, so this was as far as I could go.

  • OBS 31 config management changes means that once the plugin is used on that version onwards, there is no way back for the config. No backward compatibility / downgrading will be put in place (as more than 2/3 of the users are on OBS 31+ already)

  • There are a lot of bug fixes and improvement in 6.1 that would have deserved a minor release. But here we are, the longer you wait to update, the more changes are required.

  • It is expected that upgrade from DistroAV 6.0 to 6.1 to be seamless. It is expected the same from 4.14 to 6.1 (but not planned to be tested)

@Trouffman Trouffman requested review from BitRate27, Copilot and paulpv and removed request for Copilot May 7, 2025 04:14
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR enforces a minimum version check for OBS and the NDI SDK to ensure compatibility with the upcoming 6.1 release. Key changes include:

  • Updating the minimum OBS version from 30.0.0 to 31.0.0 and adding a minimum check for the NDI SDK version.
  • Implementing a new function for version comparison and integrating version checks in the module load process.
  • Updating documentation in README.md to reflect the new OBS version requirement.

Reviewed Changes

Copilot reviewed 3 out of 4 changed files in this pull request and generated 2 comments.

File Description
src/plugin-main.h Updated version macros to enforce new minimum OBS and NDI requirements.
src/plugin-main.cpp Added a new version comparison function and integrated version checks.
README.md Updated the OBS version requirement in the documentation.
Files not reviewed (1)
  • buildspec.json: Language not supported

@Trouffman Trouffman self-assigned this May 8, 2025
@Trouffman Trouffman added this to the 6.1.0 milestone May 8, 2025
@Trouffman Trouffman added enhancement old-plugin old-obs old-ndi Installation Target installation improvments, issues, scripts, bugs. Dependencies Relate to a dependency (package / version) old-hardware labels May 8, 2025
@BitRate27
Copy link
Contributor

Can the minimum version be dependent on the platform? Since the Fedora platform is behind, do we wait for that platform to move up before enforcing the minimum for all, or do we say Fedora will work with the minimum supported on that platform (5.6)?

@Trouffman
Copy link
Collaborator Author

Sadly that minimum requirement is a hard requirement as it will impact on the configuration files, some functions and even some fixes

This makes DISTROAV 6.1 a sane base to built upon.

Also NDI 6 was technically already required for distroAV 6.0 but was not enforced.

For the Fedora users : I contacted the maintainer of the libndi package, he will look into it in the coming weeks.

This brings a broader question/issue : should we maintain the packages (libndi / DISTROAV) for the distro we officially support? Fedora is technically not officially supported, but we try to get it working still.

In short : no platform-specific exception should be implemented.

Should we have a way to allow for pre NDI V6 ? Nop, It was already required for distroAV 6.0. now enforced. Otherwise we are stuck to this feature level until the next DISTROAV major release

Should we have a way to allow for pre OBS 31 ?
Plain and simple : not possible :D the plugin deps are 31.0.0.

Theses changes makes the reason for a new DistroAV major version.

Also : anyone on 4.14, this might be the last version where the "upgrade" will be supported.

@RayneYoruka
Copy link
Member

RayneYoruka commented May 8, 2025

Writing here since... discord is a mess and my memory issues preceeds me!

Can the minimum version be dependent on the platform? Since the Fedora platform is behind, do we wait for that platform to move up before enforcing the minimum for all, or do we say Fedora will work with the minimum supported on that platform (5.6)?

I like the fact of the release (as it is in the artifacs for Ubuntu) worked directly on Fedora, even if I haven't figured out yet the paths fully to place the things within their intended folder. It could work in fedora via direct install instead of repo.. this opens the path to not have to compile and almost provide support for any linux distro as long as the paths are known!

That aside.. as I already brought up on the discord.. it is not detecting the version of NDI on Ubuntu.. As pointed by @Trouffman the release directly shows on the window popup as blank/empty.

I tried to upload the log file here yet it isn't working.. it's within the discord messages!

@RayneYoruka
Copy link
Member

RayneYoruka commented May 8, 2025

After the quick update:
Working fine on Ubuntu 24.04
Working as well on Fedora 42.. the locations for Fedora with the Ubuntu artifact:

/usr/share/obs/obs-plugins/distroav/ < Locale.
/lib64/obs-plugins/ < Plugin location.

I tested stability from Ubuntu through wifi6. 1440p@60 with 6 channel audio for aproximately 20 minutes. No issuess so far.

@Trouffman Trouffman merged commit e895d4f into master May 9, 2025
6 checks passed
@Trouffman Trouffman deleted the release-6.1 branch May 9, 2025 17:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Dependencies Relate to a dependency (package / version) enhancement Installation Target installation improvments, issues, scripts, bugs. old-hardware old-ndi old-obs old-plugin

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants