leadedge / ofxNDI

An Openframeworks addon to allow sending and receiving images over a network using the NewTek Network Device Protocol.
GNU General Public License v3.0
134 stars 50 forks source link

VS setup #2

Closed rwebber closed 7 years ago

rwebber commented 7 years ago

i Believe these 2 steps are incorrect in the readme.

Add "ofxNDI/libs/NDI/Libs/x86" to "Linker > Input > Additional Library Directories" Add "Processing.NDI.Lib.x86.lib" to "Linker > Additional Dependencies"

I think it should be:

Add "ofxNDI/libs/NDI/Libs/x86" to "Linker > Input > General > Additional Library Directories" Add "Processing.NDI.Lib.x86.lib" to "Linker > Input > Additional Dependencies"

that said, still not working for me... but I haven't given up.

rwebber commented 7 years ago

can't seem to get it.. everything is in place as best as I can figure. The only errors I get now come from: resource.rc


3>......\addons\ofxNDI\src\resource.rc(36): error C2143: syntax error: missing ';' before 'constant' 3>......\addons\ofxNDI\src\resource.rc(36): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 3>......\addons\ofxNDI\src\resource.rc(41): error C2143: syntax error: missing ';' before '{' 3>......\addons\ofxNDI\src\resource.rc(41): error C2447: '{': missing function header (old-style formal list?)

any thoughts?

leadedge commented 7 years ago

I think it is an include problem and "IDD_SENDERBOX" and "IDC_SENDERS" are not being defined.

One thing to try in resource,rc is

// #include "resource.h"

ifndef IDC_STATIC

define IDC_STATIC (-1)

endif

define IDD_SENDERBOX 101

define IDC_SENDERS 40000

and remove resource.h from the project. That might not work but it's worth a try.

I think I have the use of these resource files wrong and resource files belong to the application itself. Multiple resources are not all that straight forward to manage. You can remove the resource files from the project as well as ofxNDIdialog.cpp and ofxNDIdialog.h.

Then in the receiver example remove :

include "ofxNDIdialog.h"

and ofxNDIdialog ndiDialog; and SelectNDIPanel code from mousePressed.

The resources are only needed for the Sender selection dialog. The receiver creates a separate ofxNDIdialog object to manage it. I am thinking about removing this.

Well spotted to find those errors in the the documentation.

rwebber commented 7 years ago

Well the first option didn't work for me.. but based on the second option, these steps is allowing my project to build now.

Unfortunately I'm not working in the example file/s.. I jumped into adding NDI into my Kinect2share project.... so it will be a little while before I know how/if it works.. but I have ported much of the code from the example into the project already and there are no errors (yet) and it builds :)

Thanks for your help. I'll let you know after I spend more time on it tomorrow how I do with getting it working.

If I can make 1 more suggestions.. the first bullet of the Windows setup "Add files from "ofxNDI" to your Visual Studio project." Its a little vague, and at first I thought it meant the following steps, rather than the usual including of the Addon into the project (using project generator worked well for this step).

leadedge commented 7 years ago

Ok, the quick fix was worth a try. Remove ofxNDIdialog.cpp and ofxNDIdialog.h from the project too.

rwebber commented 7 years ago

Thanks, removing them is fine.

I have been able to spend a little more time with this today, and I have one NDI being output perfectly. I am only planning to send NDI, but I would like to send multiple streams/sources. However, I don't see an option for how to send multiple sources, especially where each is a different width and height. (I have 2 sizes of video, and multiple streams of one size.) Is this possible? Creating 2 Senders with different sizes doesn't seem to work.

leadedge commented 7 years ago

It should work with two separate objects e.g.

ofxNDIsender ndiSender1; ofxNDIsender ndiSender2;

Is that what you are doing?

rwebber commented 7 years ago

No. I was trying to create and use differently named senders from the same object. I think I was following how my spout senders are setup. This will be a quick/easy change. Thanks

rwebber commented 7 years ago

Separate senders and buffers for each stream (and shared PBOs) seem to be the right mix. Thanks, it's working rather well.

The only remaining issue I seem to have, is async. (using and not using PBO is working) If I enable Async, my project will build and launch, but loads to a White only window. In Visual Studio in the Output window, the last 2 lines read: 'kinect2share_debug.exe' (Win32): Loaded 'C:\Windows\SysWOW64\WinTypes.dll'. Symbols loaded. 'kinect2share_debug.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\WinTypes.dll'

If I set async to false, the last 3 lines are: 'kinect2share_debug.exe' (Win32): Loaded 'C:\Windows\SysWOW64\WinTypes.dll'. Symbols loaded. 'kinect2share_debug.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\WinTypes.dll' 'kinect2share_debug.exe' (Win32): Loaded 'C:\Windows\SysWOW64\usermgrcli.dll'. Symbols loaded.

I can live without Async, I am getting ~25fps in my app. But if you have some insight, it would be interesting to see is async improves on that.

as always, your help is greatly appreciated.

leadedge commented 7 years ago

I had some trouble with Async mode but have not explored it properly. Maybe combining this with two PBOs might not be the thing to do, so start by disabling that. Or try the very latest Newtek libraries. Otherwise leave Async out until I have had time to look at it.

rwebber commented 7 years ago

Ok. No async. Right now it's more important that I can support multiple streams. My Newtek libs are very recent so I doubt that's a factor. Thanks again ☺

leadedge commented 7 years ago

OK, looks like you are in business. I won't get around to looking at Async mode for a while.

I think I will leave out the resource dialog entirely, so maybe we can close this issue?

leadedge commented 7 years ago

Closing this one. Open another of course if you need to.