160 lines
6.1 KiB
C
160 lines
6.1 KiB
C
#pragma once
|
|
|
|
// NOTE : The following MIT license applies to this file ONLY and not to the SDK as a whole. Please review
|
|
// the SDK documentation for the description of the full license terms, which are also provided in the file
|
|
// "NDI License Agreement.pdf" within the SDK or online at http://ndi.link/ndisdk_license. Your use of any
|
|
// part of this SDK is acknowledgment that you agree to the SDK license terms. The full NDI SDK may be
|
|
// downloaded at http://ndi.video/
|
|
//
|
|
//***********************************************************************************************************
|
|
//
|
|
// Copyright (C) 2023-2024 Vizrt NDI AB. All rights reserved.
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
// associated documentation files(the "Software"), to deal in the Software without restriction, including
|
|
// without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
|
|
// copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
|
|
// following conditions :
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in all copies or substantial
|
|
// portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
|
// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
|
|
// EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
|
|
// THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
//
|
|
//***********************************************************************************************************
|
|
|
|
#ifdef PROCESSINGNDILIB_STATIC
|
|
# ifdef __cplusplus
|
|
# define PROCESSINGNDILIB_API extern "C"
|
|
# else // __cplusplus
|
|
# define PROCESSINGNDILIB_API
|
|
# endif // __cplusplus
|
|
#else // PROCESSINGNDILIB_STATIC
|
|
# ifdef _WIN32
|
|
# ifdef PROCESSINGNDILIB_EXPORTS
|
|
# ifdef __cplusplus
|
|
# define PROCESSINGNDILIB_API extern "C" __declspec(dllexport)
|
|
# else // __cplusplus
|
|
# define PROCESSINGNDILIB_API __declspec(dllexport)
|
|
# endif // __cplusplus
|
|
# else // PROCESSINGNDILIB_EXPORTS
|
|
# ifdef __cplusplus
|
|
# define PROCESSINGNDILIB_API extern "C" __declspec(dllimport)
|
|
# else // __cplusplus
|
|
# define PROCESSINGNDILIB_API __declspec(dllimport)
|
|
# endif // __cplusplus
|
|
# ifdef _WIN64
|
|
# define NDILIB_LIBRARY_NAME "Processing.NDI.Lib.x64.dll"
|
|
# define NDILIB_REDIST_FOLDER "NDI_RUNTIME_DIR_V6"
|
|
# define NDILIB_REDIST_URL "http://ndi.link/NDIRedistV6"
|
|
# else // _WIN64
|
|
# define NDILIB_LIBRARY_NAME "Processing.NDI.Lib.x86.dll"
|
|
# define NDILIB_REDIST_FOLDER "NDI_RUNTIME_DIR_V6"
|
|
# define NDILIB_REDIST_URL "http://ndi.link/NDIRedistV6"
|
|
# endif // _WIN64
|
|
# endif // PROCESSINGNDILIB_EXPORTS
|
|
# else // _WIN32
|
|
# ifdef __APPLE__
|
|
# define NDILIB_LIBRARY_NAME "libndi.dylib"
|
|
# define NDILIB_REDIST_FOLDER "NDI_RUNTIME_DIR_V6"
|
|
# define NDILIB_REDIST_URL "http://ndi.link/NDIRedistV6Apple"
|
|
# else // __APPLE__
|
|
# define NDILIB_LIBRARY_NAME "libndi.so.6"
|
|
# define NDILIB_REDIST_FOLDER "NDI_RUNTIME_DIR_V6"
|
|
# define NDILIB_REDIST_URL ""
|
|
# endif // __APPLE__
|
|
# ifdef __cplusplus
|
|
# define PROCESSINGNDILIB_API extern "C" __attribute((visibility("default")))
|
|
# else // __cplusplus
|
|
# define PROCESSINGNDILIB_API __attribute((visibility("default")))
|
|
# endif // __cplusplus
|
|
# endif // _WIN32
|
|
#endif // PROCESSINGNDILIB_STATIC
|
|
|
|
#ifndef PROCESSINGNDILIB_DEPRECATED
|
|
# ifdef _WIN32
|
|
# ifdef _MSC_VER
|
|
# define PROCESSINGNDILIB_DEPRECATED __declspec(deprecated)
|
|
# else // _MSC_VER
|
|
# define PROCESSINGNDILIB_DEPRECATED __attribute((deprecated))
|
|
# endif // _MSC_VER
|
|
# else // _WIN32
|
|
# define PROCESSINGNDILIB_DEPRECATED
|
|
# endif // _WIN32
|
|
#endif // PROCESSINGNDILIB_DEPRECATED
|
|
|
|
#ifndef NDILIB_CPP_DEFAULT_CONSTRUCTORS
|
|
# ifdef __cplusplus
|
|
# define NDILIB_CPP_DEFAULT_CONSTRUCTORS 1
|
|
# else // __cplusplus
|
|
# define NDILIB_CPP_DEFAULT_CONSTRUCTORS 0
|
|
# endif // __cplusplus
|
|
#endif // NDILIB_CPP_DEFAULT_CONSTRUCTORS
|
|
|
|
#ifndef NDILIB_CPP_DEFAULT_VALUE
|
|
# ifdef __cplusplus
|
|
# define NDILIB_CPP_DEFAULT_VALUE(a) =(a)
|
|
# else // __cplusplus
|
|
# define NDILIB_CPP_DEFAULT_VALUE(a)
|
|
# endif // __cplusplus
|
|
#endif // NDILIB_CPP_DEFAULT_VALUE
|
|
|
|
// Data structures shared by multiple SDKs.
|
|
#include "Processing.NDI.compat.h"
|
|
#include "Processing.NDI.structs.h"
|
|
|
|
// This is not actually required, but will start and end the libraries which might get you slightly better
|
|
// performance in some cases. In general it is more "correct" to call these although it is not required.
|
|
// There is no way to call these that would have an adverse impact on anything (even calling destroy before
|
|
// you've deleted all your objects). This will return false if the CPU is not sufficiently capable to run
|
|
// NDILib currently NDILib requires SSE4.2 instructions (see documentation). You can verify a specific CPU
|
|
// against the library with a call to NDIlib_is_supported_CPU().
|
|
PROCESSINGNDILIB_API
|
|
bool NDIlib_initialize(void);
|
|
|
|
PROCESSINGNDILIB_API
|
|
void NDIlib_destroy(void);
|
|
|
|
PROCESSINGNDILIB_API
|
|
const char* NDIlib_version(void);
|
|
|
|
// Recover whether the current CPU in the system is capable of running NDILib.
|
|
PROCESSINGNDILIB_API
|
|
bool NDIlib_is_supported_CPU(void);
|
|
|
|
// The finding (discovery API).
|
|
#include "Processing.NDI.Find.h"
|
|
|
|
// The receiving video and audio API.
|
|
#include "Processing.NDI.Recv.h"
|
|
|
|
// Extensions to support PTZ control, etc...
|
|
#include "Processing.NDI.Recv.ex.h"
|
|
|
|
// The sending video API.
|
|
#include "Processing.NDI.Send.h"
|
|
|
|
// The routing of inputs API.
|
|
#include "Processing.NDI.Routing.h"
|
|
|
|
// Utility functions.
|
|
#include "Processing.NDI.utilities.h"
|
|
|
|
// Deprecated structures and functions.
|
|
#include "Processing.NDI.deprecated.h"
|
|
|
|
// The frame synchronizer.
|
|
#include "Processing.NDI.FrameSync.h"
|
|
|
|
// Dynamic loading used for OSS libraries.
|
|
#include "Processing.NDI.DynamicLoad.h"
|
|
|
|
// The C++ implementations.
|
|
#if NDILIB_CPP_DEFAULT_CONSTRUCTORS
|
|
#include "Processing.NDI.Lib.cplusplus.h"
|
|
#endif // NDILIB_CPP_DEFAULT_CONSTRUCTORS
|