ak5k / ndi-audio-io

NDI Audio IO software can stream audio between compatible audio devices and/or audio plugin host software using NewTek NDI technology.
GNU General Public License v3.0
17 stars 3 forks source link

possible conflict or bug-on-first-run with pre-installed NDI #3

Open tokfrans03 opened 5 months ago

tokfrans03 commented 5 months ago

Hello,

First of all, this project is just what I need and is really easy to use!

The sending button works just fine on windows and macos, but the recive button does not do anything on windows.

I have experimented a bit and using the test button works fine, so the audio coming from the appliction works, but when recieving from NDI it for some reason does not. Using NDI studio monitor, I can confirm that there is audio coming from the NDI source.

Using the same setup but with a mac works perfectly.

System

Windows 10

Built from the latest source code as of this message 2024-04-27 with ASIO

Config

I am using Dante in ASIO mode to send audio to a mixer with a physical Dante card.

It also does not work with WDM, Direct audio, windows audio

Steps to reproduce

  1. Select a NDI source
  2. Enable recv
  3. no audio

I am able to offer monetary compensation if we can get this to work.

ak5k commented 5 months ago

Hi! If you built from source, you might still first need to install the release download. It will install the required NDI library.

tokfrans03 commented 5 months ago

Hello!

I've gotten it to work now by reinstalling the latest NDI runtime 5. I might've forgotten to write that I tried your release first, then trying my own build to get ASIO which should've worked.

Thanks for your help.

marcotasto commented 4 months ago

Hi. Sorry to comment on a closed issue but I can replicate the same with a couple of Windows PCs with NDI Tools 6.0.0.0 already installed. The ndi-audio-io application was able to generate test tones through the settings panel, but seems not able to receive any audio from whathever NDI stream until I've updated NDI Tools 6.0.0.0 to NDI 6.0.1.0. NDI streams generated with the tool were ok before the upgrade. Thank you for your job.

ak5k commented 4 months ago

Hi! It would seem NDI Audio IO (NDI 5) and NDI 6 won't work together on same host machine. However, I was able to get test patterns connected between two separate machines with other running NDI 6 and other NDI Audio IO.

EDIT: Hmm. It does work on same host also. I just had the test pattern audio muted. After all, NDI Audio IO primarily tries to load and use system installed NDI runtime library, so there shouldn't be NDI version conflicts.

whats0n0 commented 4 months ago

I work together with @tokfrans03. I think something weird happens with the NDI versions, but I am not sure what. This is what seems to happen for us:

Could it be caused by something like if NDI 6 is installed first it will try to load NDI 6 runtime which doesn't work and if NDI Audio IO is installed first it will use the NDI 5 runtime which does work?

marcotasto commented 4 months ago

Hi @whats0n0. Yes. I can confirm you I've found a similar behaviour. Also to mention that if you have NDI 6 already installed on the PC, and then NDI Audio IO is installed but receive does not work, by simply upgrading the NDI 6 to the very latest version solves the issue. This is, probably, because the NDI runtimes upgrade unistalls and re-installs the new NDI runtimes under the hood. Thank you, and nice job.

ak5k commented 4 months ago

Hi! NDI Audio IO checks system for installed NDI runtime/tools, and during each start/load tries to load latest NDI library available. When NDI 6 is installed, NDI Audio IO will always try to load it. It might be beyond my scope trying to figure out why exactly NDI 6 won't load at first time. If no NDI 5 or 6 library are installed, NDI Audio IO will fall back to its internal NDI 5 library, which should work as before.

whats0n0 commented 4 months ago

Could it be possible to always force the internal NDI 5 library to be used? As NDI 6 is fully backwards compatible, there shouldn't be an issue if NDI 5 is always used for NDI Audio IO.

Also, thanks a lot for your work!

ak5k commented 4 months ago

Could it be possible to always force the internal NDI 5 library to be used? As NDI 6 is fully backwards compatible, there shouldn't be an issue if NDI 5 is always used for NDI Audio IO.

Also, thanks a lot for your work!

Well, technically yes, but I'm not sure that would help. To my understanding/testing, only one library can be loaded on a host system at a time, so naturally internal library has to be the fallback library and loaded only when no other library exists. Also, technically, on a fresh system with NDI5/6 is pre-installed, a new install of NDI Audio IO never tries loading the internal library, only the pre-installed one. From NDI Audio IO perspective 'it never knows if tools/runtime was re-installed'; it only looks for NDI runtime dll file in NDI SDK specified path. So, this might be something NDI library operation related, or e.g. Windows operating system security.