summaryrefslogtreecommitdiff
path: root/receiver
diff options
context:
space:
mode:
Diffstat (limited to 'receiver')
-rw-r--r--receiver/Makefile13
-rw-r--r--receiver/addons.make1
-rw-r--r--receiver/config.make142
-rw-r--r--receiver/libs/libndi.3.dylibbin0 -> 2263988 bytes
-rw-r--r--receiver/obj/osx/Release/.compiler_flags1
-rwxr-xr-xreceiver/src/main.cpp45
-rwxr-xr-xreceiver/src/ofApp.cpp322
-rwxr-xr-xreceiver/src/ofApp.h81
-rwxr-xr-xreceiver/start2
9 files changed, 607 insertions, 0 deletions
diff --git a/receiver/Makefile b/receiver/Makefile
new file mode 100644
index 0000000..177e172
--- /dev/null
+++ b/receiver/Makefile
@@ -0,0 +1,13 @@
+# Attempt to load a config.make file.
+# If none is found, project defaults in config.project.make will be used.
+ifneq ($(wildcard config.make),)
+ include config.make
+endif
+
+# make sure the the OF_ROOT location is defined
+ifndef OF_ROOT
+ OF_ROOT=$(realpath ../../..)
+endif
+
+# call the project makefile!
+include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk
diff --git a/receiver/addons.make b/receiver/addons.make
new file mode 100644
index 0000000..9850f54
--- /dev/null
+++ b/receiver/addons.make
@@ -0,0 +1 @@
+ofxNDI
diff --git a/receiver/config.make b/receiver/config.make
new file mode 100644
index 0000000..a2f4f86
--- /dev/null
+++ b/receiver/config.make
@@ -0,0 +1,142 @@
+################################################################################
+# CONFIGURE PROJECT MAKEFILE (optional)
+# This file is where we make project specific configurations.
+################################################################################
+
+################################################################################
+# OF ROOT
+# The location of your root openFrameworks installation
+# (default) OF_ROOT = ../../..
+################################################################################
+OF_ROOT = ../../openFrameworks
+
+################################################################################
+# PROJECT ROOT
+# The location of the project - a starting place for searching for files
+# (default) PROJECT_ROOT = . (this directory)
+#
+################################################################################
+# PROJECT_ROOT = .
+
+################################################################################
+# PROJECT SPECIFIC CHECKS
+# This is a project defined section to create internal makefile flags to
+# conditionally enable or disable the addition of various features within
+# this makefile. For instance, if you want to make changes based on whether
+# GTK is installed, one might test that here and create a variable to check.
+################################################################################
+# None
+
+################################################################################
+# PROJECT EXTERNAL SOURCE PATHS
+# These are fully qualified paths that are not within the PROJECT_ROOT folder.
+# Like source folders in the PROJECT_ROOT, these paths are subject to
+# exlclusion via the PROJECT_EXLCUSIONS list.
+#
+# (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank)
+#
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+# PROJECT_EXTERNAL_SOURCE_PATHS =
+
+################################################################################
+# PROJECT EXCLUSIONS
+# These makefiles assume that all folders in your current project directory
+# and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations
+# to look for source code. The any folders or files that match any of the
+# items in the PROJECT_EXCLUSIONS list below will be ignored.
+#
+# Each item in the PROJECT_EXCLUSIONS list will be treated as a complete
+# string unless teh user adds a wildcard (%) operator to match subdirectories.
+# GNU make only allows one wildcard for matching. The second wildcard (%) is
+# treated literally.
+#
+# (default) PROJECT_EXCLUSIONS = (blank)
+#
+# Will automatically exclude the following:
+#
+# $(PROJECT_ROOT)/bin%
+# $(PROJECT_ROOT)/obj%
+# $(PROJECT_ROOT)/%.xcodeproj
+#
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+# PROJECT_EXCLUSIONS =
+
+################################################################################
+# PROJECT LINKER FLAGS
+# These flags will be sent to the linker when compiling the executable.
+#
+# (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs
+#
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+
+# Currently, shared libraries that are needed are copied to the
+# $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to
+# add a runtime path to search for those shared libraries, since they aren't
+# incorporated directly into the final executable application binary.
+# TODO: should this be a default setting?
+# PROJECT_LDFLAGS=-Wl,-rpath=./libs
+
+################################################################################
+# PROJECT DEFINES
+# Create a space-delimited list of DEFINES. The list will be converted into
+# CFLAGS with the "-D" flag later in the makefile.
+#
+# (default) PROJECT_DEFINES = (blank)
+#
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+# PROJECT_DEFINES =
+
+################################################################################
+# PROJECT CFLAGS
+# This is a list of fully qualified CFLAGS required when compiling for this
+# project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS
+# defined in your platform specific core configuration files. These flags are
+# presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below.
+#
+# (default) PROJECT_CFLAGS = (blank)
+#
+# Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in
+# your platform specific configuration file will be applied by default and
+# further flags here may not be needed.
+#
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+# PROJECT_CFLAGS =
+
+################################################################################
+# PROJECT OPTIMIZATION CFLAGS
+# These are lists of CFLAGS that are target-specific. While any flags could
+# be conditionally added, they are usually limited to optimization flags.
+# These flags are added BEFORE the PROJECT_CFLAGS.
+#
+# PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets.
+#
+# (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank)
+#
+# PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets.
+#
+# (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank)
+#
+# Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the
+# PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration
+# file will be applied by default and further optimization flags here may not
+# be needed.
+#
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+# PROJECT_OPTIMIZATION_CFLAGS_RELEASE =
+# PROJECT_OPTIMIZATION_CFLAGS_DEBUG =
+
+################################################################################
+# PROJECT COMPILERS
+# Custom compilers can be set for CC and CXX
+# (default) PROJECT_CXX = (blank)
+# (default) PROJECT_CC = (blank)
+# Note: Leave a leading space when adding list items with the += operator
+################################################################################
+# PROJECT_CXX =
+# PROJECT_CC =
diff --git a/receiver/libs/libndi.3.dylib b/receiver/libs/libndi.3.dylib
new file mode 100644
index 0000000..d079763
--- /dev/null
+++ b/receiver/libs/libndi.3.dylib
Binary files differ
diff --git a/receiver/obj/osx/Release/.compiler_flags b/receiver/obj/osx/Release/.compiler_flags
new file mode 100644
index 0000000..50bc4e0
--- /dev/null
+++ b/receiver/obj/osx/Release/.compiler_flags
@@ -0,0 +1 @@
+-Os -mtune=native -DNDEBUG -stdlib=libc++ -Wall -fexceptions -fpascal-strings -mmacosx-version-min=10.9 -D__MACOSX_CORE__ -fPIC -x objective-c++ -std=c++11 -I../../openFrameworks/libs/FreeImage/include -I../../openFrameworks/libs/boost/include -I../../openFrameworks/libs/boost/include/boost -I../../openFrameworks/libs/cairo/include -I../../openFrameworks/libs/cairo/include/cairo -I../../openFrameworks/libs/curl/include -I../../openFrameworks/libs/curl/include/curl -I../../openFrameworks/libs/fmodex/include -I../../openFrameworks/libs/freetype/include -I../../openFrameworks/libs/freetype/include/freetype2 -I../../openFrameworks/libs/freetype/include/freetype2/freetype -I../../openFrameworks/libs/freetype/include/freetype2/freetype/config -I../../openFrameworks/libs/freetype/include/freetype2/freetype/internal -I../../openFrameworks/libs/freetype/include/freetype2/freetype/internal/services -I../../openFrameworks/libs/glew/include -I../../openFrameworks/libs/glew/include/GL -I../../openFrameworks/libs/glfw/include -I../../openFrameworks/libs/glfw/include/GLFW -I../../openFrameworks/libs/glm/include -I../../openFrameworks/libs/glm/include/glm -I../../openFrameworks/libs/glm/include/glm/detail -I../../openFrameworks/libs/glm/include/glm/gtc -I../../openFrameworks/libs/glm/include/glm/gtx -I../../openFrameworks/libs/glm/include/glm/simd -I../../openFrameworks/libs/json/include -I../../openFrameworks/libs/kiss/include -I../../openFrameworks/libs/pugixml/include -I../../openFrameworks/libs/rtAudio/include -I../../openFrameworks/libs/tess2/include -I../../openFrameworks/libs/uriparser/include -I../../openFrameworks/libs/uriparser/include/uriparser -I../../openFrameworks/libs/utf8/include -I../../openFrameworks/libs/utf8/include/utf8 -I../../openFrameworks/libs/utf8cpp/include -I../../openFrameworks/libs/utf8cpp/include/utf8 -I../../openFrameworks/libs/openFrameworks -I../../openFrameworks/libs/openFrameworks/3d -I../../openFrameworks/libs/openFrameworks/app -I../../openFrameworks/libs/openFrameworks/communication -I../../openFrameworks/libs/openFrameworks/events -I../../openFrameworks/libs/openFrameworks/gl -I../../openFrameworks/libs/openFrameworks/graphics -I../../openFrameworks/libs/openFrameworks/math -I../../openFrameworks/libs/openFrameworks/sound -I../../openFrameworks/libs/openFrameworks/types -I../../openFrameworks/libs/openFrameworks/utils -I../../openFrameworks/libs/openFrameworks/video -I/work/workspace/raverony/receiver/libs -I/work/workspace/raverony/receiver/src -I/work/workspace/openFrameworks/addons/ofxNDI/src -I/work/workspace/openFrameworks/addons/ofxNDI/libs -I/work/workspace/openFrameworks/addons/ofxNDI/libs/linndi -I/work/workspace/openFrameworks/addons/ofxNDI/libs/linndi/include -I/work/workspace/openFrameworks/addons/ofxNDI/libs/linndi/lib -I/work/workspace/openFrameworks/addons/ofxNDI/libs/linndi/lib/osx -stdlib=libc++ -mmacosx-version-min=10.9 -v -framework Accelerate -framework QTKit -framework AGL -framework ApplicationServices -framework AudioToolbox -framework CoreAudio -framework CoreFoundation -framework CoreServices -framework OpenGL -framework IOKit -framework Cocoa -framework CoreVideo -framework AVFoundation -framework CoreMedia -framework QuartzCore -framework Security -framework LDAP
diff --git a/receiver/src/main.cpp b/receiver/src/main.cpp
new file mode 100755
index 0000000..0d13cee
--- /dev/null
+++ b/receiver/src/main.cpp
@@ -0,0 +1,45 @@
+#include "ofMain.h"
+#include "ofApp.h"
+
+/*
+ =========================================================================
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ =========================================================================
+*/
+
+//--------------------------------------------------------------
+// to change options for console window (Visual Studio)
+//
+// Properties > Linker > System > Subsystem
+// for console : Windows (/SUBSYSTEM:CONSOLE)
+//
+// for Window : Windows (/SUBSYSTEM:WINDOWS)
+//
+// Click APPLY and OK. Then make changes to Main as below
+//--------------------------------------------------------------
+
+// for default console
+//========================================================================
+int main() {
+//
+// for window without console
+//========================================================================
+// int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
+ ofSetupOpenGL(640, 360, OF_WINDOW); // <-------- setup the GL context
+ // this kicks off the running of my app
+ // can be OF_WINDOW or OF_FULLSCREEN
+ // pass in width and height too:
+ ofRunApp( new ofApp());
+
+}
diff --git a/receiver/src/ofApp.cpp b/receiver/src/ofApp.cpp
new file mode 100755
index 0000000..60a48cd
--- /dev/null
+++ b/receiver/src/ofApp.cpp
@@ -0,0 +1,322 @@
+/*
+
+ OpenFrameworks NDI receiver
+ using the NewTek NDI SDK to receive frames via network
+
+ Advanced example using a shader for BGRA-RGBA conversion and sender selection dialog
+
+ http://NDI.NewTek.com
+
+ Copyright (C) 2016-2017 Lynn Jarvis.
+
+ http://www.spout.zeal.co
+
+ With help from Harvey Buchan
+
+ https://github.com/Harvey3141
+
+ =========================================================================
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ =========================================================================
+
+ 13.10.16 - Addon receiver example created
+ 14.10.16 - Included received frame rate
+ 03.11.16 - Receive into image pixels directly
+ - Add a sender selection dialog
+ 05.11.16 - Note - dialog is Windows only
+ the ofxNDIdialog class is used separately by the application
+ and can be omitted along with resources
+ 09.02.17 - Updated to ofxNDI with Version 2 NDI SDK
+ - Added changes by Harvey Buchan to optionally
+ specify preferred pixel format in CreateReceiver
+
+*/
+#include "ofApp.h"
+
+//--------------------------------------------------------------
+void ofApp::setup() {
+
+ ofBackground(0);
+ ofSetColor(255);
+
+ // Set the window title to show that it is a receiver
+ ofSetWindowTitle("Openframeworks NDI receiver");
+ cout << "NDI SDK copyright NewTek (http:\\NDI.NewTek.com)" << endl;
+ cout << "Press 'SPACE' to list NDI senders or RH click to open sender dialog" << endl;
+
+ senderName[0] = 0; // The sender name used for display
+ nSenders = 0; // Total number of NDI senders
+ senderWidth = 0; // Sender width
+ senderHeight = 0; // Sender height
+ bNDIreceiver = false; // Receiver creation
+
+ // Create an intial receiving image
+ ndiImage.allocate(ofGetWidth(), ofGetHeight(), OF_IMAGE_COLOR_ALPHA);
+
+ // For received frame fps calculations - independent of the rendering rate
+ startTime = lastTime = frameTime = 0;
+ fps = frameRate = 1; // starting value
+
+
+} // end setup
+
+//--------------------------------------------------------------
+void ofApp::update() {
+
+}
+
+//--------------------------------------------------------------
+void ofApp::draw() {
+
+ char str[256];
+ unsigned int width = 0;
+ unsigned int height = 0;
+ bool bResult = false;
+
+ // Update the NDI sender list to find new senders
+ // There is no delay if no new senders are found
+ nSenders = ndiReceiver.FindSenders();
+
+ if(nSenders > 0) {
+
+ // Has the user changed the sender index ?
+ if(ndiReceiver.SenderSelected()) {
+ // Release the current receiver.
+ // A new one is then created from the selected sender index.
+ ndiReceiver.ReleaseReceiver();
+ bNDIreceiver = false;
+ }
+
+ // Create a new receiver if one does not exist.
+ // We don't know the sender dimensions until a frame is received.
+ if(!bNDIreceiver) {
+
+ // The receiver will detect which format a sender is using and convert
+ // the pixel buffer to BGRA for return. However, we can specify here
+ // that RGBA is the preferred format.
+ bNDIreceiver = ndiReceiver.CreateReceiver(NDIlib_recv_color_format_e_RGBX_RGBA);
+ // bNDIreceiver = ndiReceiver.CreateReceiver(); // default is BRRA
+
+ //
+ // A receiver is created from an index into a list of sender names.
+ // The current user selected index is saved in the NDIreceiver class
+ // and is used to create the receiver unless you specify a particular index.
+ //
+ // The name of the sender can also be retrieved if you need it.
+ // If you specified a particular sender index to create the receiver
+ // use that index to retrieve it's name.
+ //
+ // In this application we use it to display the sender name.
+ //
+
+ ndiReceiver.GetSenderName(senderName);
+ if(bNDIreceiver)
+ cout << "Created NDI receiver for " << senderName << endl;
+
+ // Reset the starting values for frame rate calulations
+ fps = frameRate = 1;
+
+ }
+
+ }
+
+ // Receive an image from the NDI sender
+ if(bNDIreceiver) {
+
+ // If the NDI sender uses BGRA format, the received buffer is converted to rgba by ReceiveImage.
+ // Optionally you can flip the image if necessary.
+
+ // !CHECKME MACOS
+ // ReceiveImage needs an unsigned char* so changed
+ // ndiImage.getPixels() to ndiImage.getPixels().getData()
+ // to avoid type error
+ if(ndiReceiver.ReceiveImage(ndiImage.getPixels().getData(), width, height, false)) { // receives as rgba
+
+ ndiImage.update();
+
+ // ----------------------------
+ // Calculate received frame fps
+ lastTime = startTime;
+ startTime = ofGetElapsedTimeMicros();
+ frameTime = (startTime - lastTime)/1000000; // seconds
+ if( frameTime > 0.01) {
+ frameRate = floor(1.0/frameTime + 0.5);
+ // damping from a starting fps value
+ fps *= 0.95;
+ fps += 0.05*frameRate;
+ }
+ // ----------------------------
+
+ // Have the NDI sender dimensions changed ?
+ if(senderWidth != width || senderHeight != height) {
+
+ // Update the sender dimensions
+ senderWidth = width;
+ senderHeight = height;
+
+ // Update the receiving image size
+ ndiImage.allocate(senderWidth, senderHeight, OF_IMAGE_COLOR_ALPHA);
+
+ }
+ }
+
+ //
+ // Draw the current image.
+ //
+ // If receiveimage fails, the connection could be down so keep waiting for it to come back up.
+ // Or the frame rate of the NDI sender can be less than the receiver draw cycle.
+ //
+ if(bNDIreceiver) ndiImage.draw(0, 0, ofGetWidth(), ofGetHeight());
+
+ // Show fps etc.
+ if(nSenders > 0) {
+ if(bNDIreceiver) {
+ #ifdef _MSC_VER
+ sprintf_s(str, 256, "[%s] (%dx%d) - fps %2.0f", senderName, senderWidth, senderHeight, fps);
+ #else
+ // !CHECK MACOS
+ snprintf(str, 256, "[%s] (%dx%d) - fps %2.0f", senderName, senderWidth, senderHeight, fps);
+ str[255] = 0;
+ #endif
+ ofDrawBitmapString(str, 20, 30);
+ }
+
+ if(nSenders == 1) {
+ ofDrawBitmapString("1 network source", 20, ofGetHeight()-20);
+ }
+ else {
+ #ifdef _MSC_VER
+ sprintf_s(str, 256, "%d network sources", nSenders);
+ #else
+ // !CHECK MACOS
+ snprintf(str, 256, "%d network sources", nSenders);
+ str[255] = 0;
+ #endif
+ ofDrawBitmapString(str, 20, ofGetHeight()-40);
+ ofDrawBitmapString("'SPACE' to list senders or RH click to open sender dialog", 20, ofGetHeight()-20);
+ }
+ }
+ }
+ else {
+ ofDrawBitmapString("Connecting . . .", 20, 30);
+ }
+
+}
+
+
+//--------------------------------------------------------------
+void ofApp::keyPressed(int key) {
+
+ char name[256];
+ int index = key-48;
+ int nSenders = ndiReceiver.GetSenderCount();
+
+ if(key == ' ') {
+ // List all the senders
+ if(nSenders > 0) {
+ cout << "Number of NDI senders found: " << nSenders << endl;
+ for (int i = 0; i < nSenders; i++) {
+ ndiReceiver.GetSenderName(name, i);
+ cout << " Sender " << i << " [" << name << "]" << endl;
+ }
+ if(nSenders > 1)
+ cout << "Press key [0] to [" << nSenders-1 << "] to select a sender" << endl;
+ }
+ else
+ cout << "No NDI senders found" << endl;
+ }
+ else if(index >= 0 && index < nSenders) {
+ // Update the receiver with the returned index
+ // "SenderSelected" will then return true in Draw() to update the receiver
+ ndiReceiver.SetSenderIndex(index);
+ }
+}
+
+//--------------------------------------------------------------
+void ofApp::keyReleased(int key){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mousePressed(int x, int y, int button) {
+
+ char name[256];
+ int index = 0;
+ std::vector<std::string> senderlist;
+
+ if(button == 2) { // RH button
+ // Get the senders into a list for the dialog
+ int nSenders = ndiReceiver.GetSenderCount();
+ if(nSenders > 0) {
+ cout << "Number of NDI senders found: " << nSenders << endl;
+ for (int i = 0; i < nSenders; i++) {
+ ndiReceiver.GetSenderName(name, i);
+ senderlist.push_back(name);
+ cout << " Sender " << i << " [" << name << "]" << endl;
+ }
+ // Open the sender list dialog
+ // Returns true for OK, false for Cancel and the selected index
+ if(ndiDialog.SelectNDIPanel(senderlist, index)) {
+ // Update the receiver with the returned index
+ // "SenderSelected" will then return true in Draw() to update the receiver
+ ndiReceiver.SetSenderIndex(index);
+ // Show which sender was selected
+ ndiReceiver.GetSenderName(name, index);
+ cout << " Selected sender " << index << " [" << name << "]" << endl;
+ }
+ }
+ else
+ cout << "No NDI senders found" << endl;
+ }
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseMoved(int x, int y ){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseDragged(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseReleased(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseEntered(int x, int y){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::mouseExited(int x, int y){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::windowResized(int w, int h){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::gotMessage(ofMessage msg){
+
+}
+
+//--------------------------------------------------------------
+void ofApp::dragEvent(ofDragInfo dragInfo){
+
+}
diff --git a/receiver/src/ofApp.h b/receiver/src/ofApp.h
new file mode 100755
index 0000000..d8a9526
--- /dev/null
+++ b/receiver/src/ofApp.h
@@ -0,0 +1,81 @@
+/*
+
+ OpenFrameworks NDI receiver example
+
+ using the NDI SDK to receive frames via network
+
+ http://NDI.NewTek.com
+
+ Copyright (C) 2016-2017 Lynn Jarvis.
+
+ http://www.spout.zeal.co
+
+ =========================================================================
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ =========================================================================
+*/
+#pragma once
+
+#include "ofMain.h"
+#include "ofxNDI.h" // NDI classes
+
+#include "ofxNDIdialog.h" // for the sender dialog
+//
+// Also if you want to use the sender selection dialog,
+// include in your project from the ofxNDI addon source files :
+// ofxNDIdialog.h
+// ofxNDIdialog.cpp
+// resource.h
+// resource.rc
+// If this conflicts with existing resources, you will need to include
+// the code for the dialog within your own resource files and change
+// identifiers as necessary.
+//
+
+class ofApp : public ofBaseApp {
+
+ public:
+
+ void setup();
+ void update();
+ void draw();
+
+ void keyPressed(int key);
+ void keyReleased(int key);
+ void mouseMoved(int x, int y );
+ void mouseDragged(int x, int y, int button);
+ void mousePressed(int x, int y, int button);
+ void mouseReleased(int x, int y, int button);
+ void mouseEntered(int x, int y);
+ void mouseExited(int x, int y);
+ void windowResized(int w, int h);
+ void dragEvent(ofDragInfo dragInfo);
+ void gotMessage(ofMessage msg);
+
+ ofxNDIreceiver ndiReceiver; // NDI receiver object
+ ofxNDIdialog ndiDialog; // for the sender dialog
+
+ ofImage ndiImage; // Image used for pixel transfer and display
+ char senderName[256]; // Sender name used by a receiver
+ int nSenders;
+ unsigned int senderWidth;
+ unsigned int senderHeight;
+ bool bNDIreceiver;
+
+ // For received frame fps calculations
+ double startTime, lastTime, frameTime, frameRate, fps;
+
+
+
+};
diff --git a/receiver/start b/receiver/start
new file mode 100755
index 0000000..ae5a2e8
--- /dev/null
+++ b/receiver/start
@@ -0,0 +1,2 @@
+mkdir bin/receiver.app/Contents/MacOS/@rpath
+cp libs/libndi.3.dylib bin/receiver.app/Contents/MacOS/@rpath/