This commit is contained in:
2021-10-14 13:47:35 +02:00
commit 6625a8dfaa
4026 changed files with 844291 additions and 0 deletions
@@ -0,0 +1,70 @@
#pragma once
#include <vector>
namespace Common {
namespace Converter {
#if defined TARGET_OS_Windows
// Returns the wstring (ie the utf16 formatted string) version of an utf8 string
static std::wstring Utf8ToUtf16(const std::string& utf8)
{
std::vector<unsigned long> unicode;
size_t i = 0;
while (i < utf8.size())
{
unsigned long uni;
size_t todo;
unsigned char ch = utf8[i++];
if (ch <= 0x7F)
{
uni = ch;
todo = 0;
}
else if (ch <= 0xBF) { throw std::logic_error("not a UTF-8 string"); }
else if (ch <= 0xDF)
{
uni = ch & 0x1F;
todo = 1;
}
else if (ch <= 0xEF)
{
uni = ch & 0x0F;
todo = 2;
}
else if (ch <= 0xF7)
{
uni = ch & 0x07;
todo = 3;
}
else { throw std::logic_error("not a UTF-8 string"); }
for (size_t j = 0; j < todo; ++j)
{
if (i == utf8.size()) { throw std::logic_error("not a UTF-8 string"); }
ch = utf8[i++];
if (ch < 0x80 || ch > 0xBF) { throw std::logic_error("not a UTF-8 string"); }
uni <<= 6;
uni += ch & 0x3F;
}
if (uni >= 0xD800 && uni <= 0xDFFF) { throw std::logic_error("not a UTF-8 string"); }
if (uni > 0x10FFFF) { throw std::logic_error("not a UTF-8 string"); }
unicode.push_back(uni);
}
std::wstring utf16;
for (i = 0; i < unicode.size(); ++i)
{
unsigned long uni = unicode[i];
if (uni <= 0xFFFF) { utf16 += wchar_t(uni); }
else
{
uni -= 0x10000;
utf16 += wchar_t((uni >> 10) + 0xD800);
utf16 += wchar_t((uni & 0x3FF) + 0xDC00);
}
}
return utf16;
}
#endif // TARGET_OS_Windows
} // namespace Converter
} // namespace Common
@@ -0,0 +1,422 @@
#pragma once
#include <vector>
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <r8brain/CDSPResampler.h>
namespace Common {
namespace Resampler {
enum class EResamplerStoreModes { ChannelWise, SampleWise };
template <class TFloat, EResamplerStoreModes TStoreMode>
class TResampler
{
public:
class ICallback
{
public:
virtual ~ICallback() { }
virtual void processResampler(const TFloat* pSample, const size_t nChannel) const = 0;
};
private:
TResampler(const TResampler<TFloat, TStoreMode>&) = default;
public:
/// <summary> Constructor, with default values for real-time processing. </summary>
TResampler()
{
this->clear();
switch (TStoreMode)
{
case EResamplerStoreModes::ChannelWise:
m_fpResample = &TResampler<TFloat, TStoreMode>::resampleChannelWise;
m_fpResampleDirect = &TResampler<TFloat, TStoreMode>::resampleChannelWise;
break;
case EResamplerStoreModes::SampleWise:
m_fpResample = &TResampler<TFloat, TStoreMode>::resampleSampleWise;
m_fpResampleDirect = &TResampler<TFloat, TStoreMode>::resampleSampleWise;
break;
default:
assert(false);
}
}
virtual ~TResampler() { this->clear(); }
void clear()
{
for (size_t j = 0; j < m_resamplers.size(); ++j) { delete m_resamplers[j]; }
m_resamplers.clear();
m_nChannel = 0;
m_iSampling = 0;
m_oSampling = 0;
m_nFractionalDelayFilterSample = 6;
m_iMaxNSampleIn = 1024;
m_transitionBandPercent = 45;
m_stopBandAttenuation = 49;
}
/// <summary> Specifies the number of samples (taps) each fractional delay filter should have.\n
///
/// This must be an even value.To achieve a higher resampling precision,
/// the oversampling should be used in the first place instead of using a higher FractionalDelayFilterSampleCount value.
/// The lower this value is the lower the signal - to - noise performance of the interpolator will be.
/// Each FractionalDelayFilterSampleCount decrease by 2 decreases SNR by approximately 12 to 14 decibels. </summary>
/// <param name="n">The fractional delay (Between 6 and 30, and default = 6).</param>
/// <returns> <c>true</c> if even and between 6 and 30, <c>false</c> otherwise. </returns>
/// <remarks>For real-time processing, n = 6. </remarks>
bool setFractionalDelayFilterSampleCount(const int n = 6)
{
if (n < 6 || 30 < n || n % 2 == 1) { return false; } // false if odd value
m_nFractionalDelayFilterSample = n;
return true;
}
/// <summary> Maximal planned length of the input buffer (in samples) that will be passed to the resampler.
/// Input buffers longer than this value should never be supplied to the resampler.
/// The resampler relies on this value as it allocates intermediate buffers. </summary>
/// <param name="n">The maximal input sample count.</param>
/// <returns> <c>true</c> if between 8 and 2048, <c>false</c> otherwise. </returns>
/// <remarks> Note that the resampler may use the input buffer itself for intermediate sample data storage. </remarks>
bool setMaxNSampleIn(const int n = 8)
{
if (n < 8 || 2048 < n) { return false; }
m_iMaxNSampleIn = n;
return true;
}
/// <summary> Transition band, in percent of the spectral space of the input signal
/// (or the output signal if downsampling is performed) between filter's -3 dB point and the Nyquist frequency. </summary>
/// <param name="n">The Transition band (Between 0.5% and 45%, and default = 10.).</param>
/// <returns> <c>true</c> if between 0.5 and 45, <c>false</c> otherwise. </returns>
/// <remarks>For real-time processing, n = 45. </remarks>
bool setTransitionBand(const double n = 10)
{
if (n < r8b::CDSPFIRFilter::getLPMinTransBand() || r8b::CDSPFIRFilter::getLPMaxTransBand() < n) { return false; }
m_transitionBandPercent = n;
return true;
}
/// <summary> Stop-band attenuation in decibel.\n
///
/// The general formula is 6.02 * Bits + 40, where "Bits" is the bit resolution(e.g. 16, 24),
/// "40" is an added resolution for stationary signals, this value can be decreased to 20 to 10
/// if the signal being resampled is mostly non - stationary(e.g.impulse response). </summary>
/// <param name="n">The Stop-band attenuation in decibel (Between 49 and 218, and default = 49 is given by the general formula).</param>
/// <returns> <c>true</c> if between 49 and 218, <c>false</c> otherwise. </returns>
/// <remarks>For real-time processing, n = 49. </remarks>
bool setStopBandAttenuation(const double n = 49)
{
if (n < r8b::CDSPFIRFilter::getLPMinAtten() || r8b::CDSPFIRFilter::getLPMaxAtten() < n) { return false; }
m_stopBandAttenuation = n;
return true;
}
/// <summary> This fonction initializes the vector of Resampler, using the number of channels, the input and the output sampling rates. </summary>
/// <param name="nChannel"> The number of channel. </param>
/// <param name="iSampling"> The input sampling. </param>
/// <param name="oSampling"> The output sampling. </param>
/// <returns> <c>true</c> if success, <c>false</c> otherwise. </returns>
bool reset(const size_t nChannel, const size_t iSampling, const size_t oSampling)
{
if (nChannel == 0 || iSampling == 0 || oSampling == 0) { return false; }
m_iSampling = iSampling;
m_oSampling = oSampling;
m_nChannel = nChannel;
for (size_t i = 0; i < m_resamplers.size(); ++i) { delete m_resamplers[i]; }
m_resamplers.clear();
m_resamplers.resize(m_nChannel);
const double in = double(iSampling), out = double(oSampling);
const double stopBandAttenuation = m_stopBandAttenuation == 0
? std::min(6.02 * m_nFractionalDelayFilterSample + 40, r8b::CDSPFIRFilter::getLPMaxAtten())
: m_stopBandAttenuation;
#define NEW_SAMPLER(Len, Fracs)\
new r8b::CDSPResampler<r8b::CDSPFracInterpolator<Len, Fracs>>(in, out, m_iMaxNSampleIn,\
m_transitionBandPercent, stopBandAttenuation,r8b::EDSPFilterPhaseResponse(0), false)
for (size_t j = 0; j < m_nChannel; ++j)
{
switch (m_nFractionalDelayFilterSample) // it defines iFractionalDelayPositionCount
{
case 6:
m_resamplers[j] = NEW_SAMPLER(6, 11);
break;
case 8:
m_resamplers[j] = NEW_SAMPLER(8, 17);
break;
case 10:
m_resamplers[j] = NEW_SAMPLER(10, 23);
break;
case 12:
m_resamplers[j] = NEW_SAMPLER(12, 41);
break;
case 14:
//stopBandAttenuation = 109.56;
m_resamplers[j] = NEW_SAMPLER(14, 67);
break;
case 16:
m_resamplers[j] = NEW_SAMPLER(16, 97);
break;
case 18:
//stopBandAttenuation = 136.45;
m_resamplers[j] = NEW_SAMPLER(18, 137);
break;
case 20:
m_resamplers[j] = NEW_SAMPLER(20, 211);
break;
case 22:
m_resamplers[j] = NEW_SAMPLER(22, 353);
break;
case 24:
//stopBandAttenuation = 180.15;
m_resamplers[j] = NEW_SAMPLER(24, 673);
break;
case 26:
m_resamplers[j] = NEW_SAMPLER(26, 1051);
break;
case 28:
m_resamplers[j] = NEW_SAMPLER(28, 1733);
break;
case 30:
m_resamplers[j] = NEW_SAMPLER(30, 2833);
break;
default:
return false;
}
}
#undef NEW_SAMPLER(Len, Fracs)
return true;
}
/// <summary> Gets the latency.\n
///
/// This value is usually zero if the DSP processor "consumes" the latency automatically. (from CDSPProcessor.h) </summary>
/// <returns> Latency. </returns>
virtual int getLatency() const { return m_resamplers[0]->getLatency(); }
/// <summary> Gets the Fractional latency.
///
/// Fractional latency, in samples, which is present in the output signal.
/// This value is usually zero if a linear - phase filtering is used.
/// With minimum - phase filters in use, this value can be non - zero even if the getLatency() function returns zero. (from CDSPProcessor.h)
/// </summary>
/// <returns></returns>
/// <returns> Fractionnal Latency. </returns>
virtual double getLatencyFrac() const { return m_resamplers[0]->getLatencyFrac(); }
/// <summary> Gets the cumulative number of samples that should be passed to *this object before the actual output starts.
/// This value includes latencies induced by all processors which run after *this processor in chain. </summary>
/// <param name="nextInLen"> The number of input samples required before the output starts on the next resampling step. (from CDSPProcessor.h) </param>
/// <returns> the cumulative number of samples. </returns>
virtual int getInLenBeforeOutStart(const int nextInLen) const { return m_resamplers[0]->getInLenBeforeOutStart(nextInLen); }
/// <summary> Gets the maximal length of the output buffer required when processing the "maxInLen" number of input samples. </summary>
/// <param name="maxInLen"> The number of samples planned to process at once, at most. (from CDSPProcessor.h). </param>
/// <returns> The length. </returns>
virtual int getMaxOutLen(const int maxInLen) const { return m_resamplers[0]->getMaxOutLen(maxInLen); }
double getBuiltInLatency() const { return (m_iSampling != 0) ? (1.0 * m_resamplers[0]->getInLenBeforeOutStart(0) / m_iSampling) : 0.0; }
size_t resample(const ICallback& callback, const TFloat* iSample, const size_t nInSample) { return (this->*m_fpResample)(callback, iSample, nInSample); }
size_t downsample(const ICallback& callback, const TFloat* iSample, const size_t nInSample) { return (this->*m_fpResample)(callback, iSample, nInSample); }
private:
/// <summary> This function resamples the signal assuming the input samples are ordered this way :
/// - sample 1 of channel 1, sample 1 of channel 2, ..., sample 1 of channel nChannel,
/// - sample 2 of channel 1, sample 2 of channel 2, ..., sample 2 of channel nChannel,
/// - ...
/// - sample nInSample of channel 1, sample nInSample of channel 2, ..., sample nInSample of channel nChannel,\n
///
/// This is convenient for resampling at the acquisition level. </summary>
/// <param name="callback">The callback.</param>
/// <param name="iSample">The input sample.</param>
/// <param name="nInSample">The n input sample.</param>
/// <returns> the number of sample process in last channel. </returns>
size_t resampleChannelWise(const ICallback& callback, const TFloat* iSample, const size_t nInSample)
{
int nI = 0;
bool isFirstChannel = true;
std::vector<double> iBuffers(nInSample);
std::vector<TFloat> oBuffers;
for (size_t j = 0; j < m_nChannel; ++j)
{
for (size_t k = 0; k < nInSample; ++k) { iBuffers[k] = double(iSample[k * m_nChannel + j]); }
double* resamplerOutputBuffer;
nI = m_resamplers[j]->process(&iBuffers[0], int(nInSample), resamplerOutputBuffer);
if (isFirstChannel)
{
oBuffers.resize(nI * m_nChannel);
isFirstChannel = false;
}
for (int k = 0; k < nI; ++k) { oBuffers[k * m_nChannel + j] = TFloat(resamplerOutputBuffer[k]); }
}
for (int k = 0; k < nI; ++k) { callback.processResampler(&oBuffers[k * m_nChannel], m_nChannel); }
return nI;
}
/// <summary> This function resamples the signal assuming the input samples are ordered this way :
/// - sample 1 of channel 1, sample 2 of channel 1, ..., sample nInSample of channel 1,
/// - sample 1 of channel 2, sample 2 of channel 2, ..., sample nInSample of channel 2,
/// - ...
/// - sample 1 of channel nChannel, sample 2 of channel nChannel, ..., sample nInSample of channel nChannel,
///
/// This is convenient for resampling at the signal-processing level. </summary>
/// <param name="callback">The callback.</param>
/// <param name="iSample">The input sample.</param>
/// <param name="nInSample">The n input sample.</param>
/// <returns> the number of sample process in last channel. </returns>
size_t resampleSampleWise(const ICallback& callback, const TFloat* iSample, const size_t nInSample)
{
int nI = 0;
bool isFirstChannel = true;
std::vector<double> iBuffers(nInSample);
std::vector<TFloat> oBuffers;
for (size_t j = 0; j < m_nChannel; ++j)
{
for (size_t k = 0; k < nInSample; ++k) { iBuffers[k] = double(iSample[j * nInSample + k]); }
double* resamplerOutputBuffer;
nI = m_resamplers[j]->process(&iBuffers[0], int(nInSample), resamplerOutputBuffer);
if (isFirstChannel)
{
oBuffers.resize(nI * m_nChannel);
isFirstChannel = false;
}
for (int k = 0; k < nI; ++k) { oBuffers[k * m_nChannel + j] = TFloat(resamplerOutputBuffer[k]); }
}
for (int k = 0; k < nI; ++k) { callback.processResampler(&oBuffers[k * m_nChannel], m_nChannel); }
return nI;
}
protected:
/// <summary> Trivial channel wise callback implementation. </summary>
class CCallbackChannelWise final : public ICallback
{
public:
CCallbackChannelWise(TFloat* oSample) : m_OutputSample(oSample) { }
void processResampler(const TFloat* sample, const size_t nChannel) const override
{
for (size_t i = 0; i < nChannel; ++i)
{
*m_OutputSample = *sample;
++m_OutputSample;
++sample;
}
}
mutable TFloat* m_OutputSample;
};
/// <summary> Trivial sample wise callback implementation. </summary>
class CCallbackSampleWise final : public ICallback
{
public:
CCallbackSampleWise(TFloat* oSample, const size_t nOutSample) : m_OutputSample(oSample), m_NOutputSample(nOutSample) { }
void processResampler(const TFloat* sample, const size_t nChannel) const override
{
for (size_t i = 0; i < nChannel; ++i) { m_OutputSample[i * m_NOutputSample + m_OutputSampleIdx] = sample[i]; }
m_OutputSampleIdx++;
m_OutputSampleIdx %= m_NOutputSample;
}
TFloat* const m_OutputSample;
size_t m_NOutputSample = 0;
mutable size_t m_OutputSampleIdx = 0;
};
size_t resampleChannelWise(TFloat* oSample, const TFloat* iSample, const size_t nInSample, const size_t /*nOutSample*/)
{
return this->resample(CCallbackChannelWise(oSample), iSample, nInSample);
}
size_t resampleSampleWise(TFloat* oSample, const TFloat* iSample, const size_t nInSample, const size_t nOutSample)
{
return this->resample(CCallbackSampleWise(oSample, nOutSample), iSample, nInSample);
}
public:
size_t resample(TFloat* oSample, const TFloat* iSample, const size_t nInSample, const size_t nOutSample = 1)
{
return (this->*m_fpResampleDirect)(oSample, iSample, nInSample, nOutSample);
}
size_t downsample(TFloat* oSample, const TFloat* iSample, const size_t nInSample, const size_t nOutSample = 1)
{
return resample(oSample, iSample, nInSample, nOutSample);
}
protected:
size_t m_nChannel = 0;
size_t m_iSampling = 0;
size_t m_oSampling = 0;
int m_nFractionalDelayFilterSample = 6;
int m_iMaxNSampleIn = 1024;
double m_transitionBandPercent = 45;
double m_stopBandAttenuation = 49;
std::vector<r8b::CDSPProcessor*> m_resamplers;
size_t (TResampler<TFloat, TStoreMode>::*m_fpResample)(const ICallback& callback, const TFloat* iSample, const size_t nInSample);
size_t (TResampler<TFloat, TStoreMode>::*m_fpResampleDirect)(TFloat* oSample, const TFloat* iSample, const size_t nInSample, const size_t nOutSample);
};
typedef TResampler<float, EResamplerStoreModes::SampleWise> CResamplerSf;
typedef TResampler<float, EResamplerStoreModes::ChannelWise> CResamplerCf;
typedef TResampler<double, EResamplerStoreModes::SampleWise> CResamplerSd;
typedef TResampler<double, EResamplerStoreModes::ChannelWise> CResamplerCd;
typedef TResampler<float, EResamplerStoreModes::SampleWise> CDownsamplerSf;
typedef TResampler<float, EResamplerStoreModes::ChannelWise> CDownsamplerCf;
typedef TResampler<double, EResamplerStoreModes::SampleWise> CDownsamplerSd;
typedef TResampler<double, EResamplerStoreModes::ChannelWise> CDownsamplerCd;
} // namespace Resampler
} // namespace Common
@@ -0,0 +1,149 @@
#pragma once
#include <cstdlib> // For Unix Compatibility (size_t)
#include <cstdint> // For Uint standard
//
// This file checks the presence of several defines that are supposed to
// be set by the build system. In addition, it defines some additional ones.
//
#if defined(_MSC_VER)
// We need some magic to get #warning behavior on MSVC
#define STRINGISE(N) #N
#define EXPAND_THEN_STRINGISE(N) STRINGISE(N)
#define __LINE_STR__ EXPAND_THEN_STRINGISE(__LINE__)
// Format #pragma message
#define __LOC__ __FILE__ "(" __LINE_STR__ ")"
#define __OUTPUT_FORMAT__(type) __LOC__ " : " type " : "
// Actual warning message type
#define __WARNING__ __OUTPUT_FORMAT__("Warning")
#endif
//___________________________________________________________________//
// //
// Operating System identification //
//___________________________________________________________________//
// //
#if !(defined(TARGET_OS_Windows) || defined(TARGET_OS_Linux) || defined(TARGET_OS_MacOS))
#if defined(_MSC_VER)
#pragma message( __WARNING__ "No known target OS specified!")
#else
#warning "No known target OS specified!"
#endif
#endif
//___________________________________________________________________//
// //
// Build type identification //
//___________________________________________________________________//
// //
#if !(defined(TARGET_BUILDTYPE_Debug) || defined(TARGET_BUILDTYPE_Release))
#if defined(_MSC_VER)
#pragma message( __WARNING__ "No known build type defined!")
#else
#warning "No known build type defined!"
#endif
#endif
//___________________________________________________________________//
// //
// Compiler software identification //
//___________________________________________________________________//
// //
#if !(defined(TARGET_COMPILER_GCC) || defined(TARGET_COMPILER_VisualStudio) || defined(TARGET_COMPILER_LLVM))
#if defined(_MSC_VER)
#pragma message( __WARNING__ "No known compiler defined!")
#else
#warning "No known compiler defined!"
#endif
#endif
//___________________________________________________________________//
// //
// API Definition //
//___________________________________________________________________//
// //
// Taken from
// - http://people.redhat.com/drepper/dsohowto.pdf
// - http://www.nedprod.com/programs/gccvisibility.html
#if defined OV_Shared
#if defined TARGET_OS_Windows
#define OV_API_Export __declspec(dllexport)
#define OV_API_Import __declspec(dllimport)
#elif defined TARGET_OS_Linux || defined TARGET_OS_MacOS
#define OV_API_Export __attribute__((visibility("default")))
#define OV_API_Import __attribute__((visibility("default")))
#else
#define OV_API_Export
#define OV_API_Import
#endif
#else
#define OV_API_Export
#define OV_API_Import
#endif
#if defined OV_Exports
#define OV_API OV_API_Export
#else
#define OV_API OV_API_Import
#endif
//___________________________________________________________________//
// //
// API Definition for plugins //
//___________________________________________________________________//
// //
// Taken from
// - http://people.redhat.com/drepper/dsohowto.pdf
// - http://www.nedprod.com/programs/gccvisibility.html
#if defined OVP_Shared
#if defined TARGET_OS_Windows
#define OVP_API_Export __declspec(dllexport)
#define OVP_API_Import __declspec(dllimport)
#elif defined TARGET_OS_Linux || defined TARGET_OS_MacOS
#define OVP_API_Export __attribute__((visibility("default")))
#define OPV_API_Import __attribute__((visibility("default")))
#else
#define OVP_API_Export
#define OVP_API_Import
#endif
#else
# define OVP_API_Export
# define OVP_API_Import
#endif
#if defined OVP_Exports
# define OVP_API OVP_API_Export
#else
# define OVP_API OVP_API_Import
#endif
//___________________________________________________________________//
// //
// NULL Definition //
//___________________________________________________________________//
// //
#ifndef NULL
#define NULL 0
#endif
#if defined(__cplusplus) && (__cplusplus >= 201402L)
#define OV_DEPRECATED(since) [[deprecated("Since " #since)]]
#define OV_DEPRECATED_FOR(since, replacement) [[deprecated("Since " #since "; use " #replacement)]]
#elif defined(_MSC_VER)
#define OV_DEPRECATED(since) __declspec(deprecated("Since " # since))
#define OV_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement))
#else
#define OV_DEPRECATED(since) __attribute__((__deprecated__))
#define OV_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__))
#endif
@@ -0,0 +1,278 @@
#pragma once
// -----------------------------------------------------
// XML Scenario importer
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_XMLScenarioImporter OpenViBE::CIdentifier(0xe80c3ea2, 0x149c4a05)
#define OVP_GD_ClassId_Algorithm_XMLScenarioExporter OpenViBE::CIdentifier(0x53693531, 0xb136cf3f)
#define OVP_GD_TypeId_ClassificationPairwiseStrategy OpenViBE::CIdentifier(0x0DD51C74, 0x3C4E74C9)
#define OVP_GD_TypeId_OneVsOne_DecisionAlgorithms OpenViBE::CIdentifier(0x0DEC1510, 0x0DEC1510)
#define OVP_GD_ClassId_Algorithm_PairwiseStrategy_PKPD OpenViBE::CIdentifier(0x26EF6DDA, 0xF137053C)
#define OVP_GD_ClassId_Algorithm_PairwiseDecision_Voting OpenViBE::CIdentifier(0xA111B830, 0x4679BAFD)
#define OVP_GD_ClassId_Algorithm_PairwiseDecision_HT OpenViBE::CIdentifier(0xD24F7F19, 0xA744FAD2)
// Algorithm OVMatrixFileReader
#define OVP_GD_ClassId_Algorithm_OVMatrixFileReader OpenViBE::CIdentifier(0x10661A33, 0x0B0F44A7)
#define OVP_GD_ClassId_Algorithm_OVMatrixFileReaderDesc OpenViBE::CIdentifier(0x0E873B5E, 0x0A287FCB)
#define OVP_GD_Algorithm_OVMatrixFileReader_InputParameterId_Filename OpenViBE::CIdentifier(0x28F87B29, 0x0B09737E)
#define OVP_GD_Algorithm_OVMatrixFileReader_OutputParameterId_Matrix OpenViBE::CIdentifier(0x2F9521E0, 0x027D789F)
#define OVP_GD_Algorithm_OVMatrixFileReader_InputTriggerId_Open OpenViBE::CIdentifier(0x2F996376, 0x2A942485)
#define OVP_GD_Algorithm_OVMatrixFileReader_InputTriggerId_Load OpenViBE::CIdentifier(0x22841807, 0x102D681C)
#define OVP_GD_Algorithm_OVMatrixFileReader_InputTriggerId_Close OpenViBE::CIdentifier(0x7FDE77DA, 0x384A0B3D)
#define OVP_GD_Algorithm_OVMatrixFileReader_OutputTriggerId_Error OpenViBE::CIdentifier(0x6D4F2F4B, 0x05EC6CB9)
#define OVP_GD_Algorithm_OVMatrixFileReader_OutputTriggerId_DataProduced OpenViBE::CIdentifier(0x76F46051, 0x003B6FE8)
// -----------------------------------------------------
// EBML stream encoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_StreamStructureDecoder OpenViBE::CIdentifier(0xA7EF3E8B, 0x4CF70B74)
#define OVP_GD_ClassId_Algorithm_StreamStructureDecoderDesc OpenViBE::CIdentifier(0x2E361099, 0xCBE828A7)
#define OVP_GD_Algorithm_StreamStructureDecoder_InputParameterId_MemoryBufferToDecode OpenViBE::CIdentifier(0x2F98EA3C, 0xFB0BE096)
#define OVP_GD_Algorithm_StreamStructureDecoder_OutputTriggerId_ReceivedHeader OpenViBE::CIdentifier(0x815234BF, 0xAABAE5F2)
#define OVP_GD_Algorithm_StreamStructureDecoder_OutputTriggerId_ReceivedBuffer OpenViBE::CIdentifier(0xAA2738BF, 0xF7FE9FC3)
#define OVP_GD_Algorithm_StreamStructureDecoder_OutputTriggerId_ReceivedEnd OpenViBE::CIdentifier(0xC4AA114C, 0x628C2D77)
// -----------------------------------------------------
// Streamed matrix stream encoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_StreamedMatrixEncoder OpenViBE::CIdentifier(0x5cb32c71, 0x576f00a6)
#define OVP_GD_Algorithm_StreamedMatrixEncoder_InputParameterId_Matrix OpenViBE::CIdentifier(0xa3e9e5b0, 0xae756303)
#define OVP_GD_Algorithm_StreamedMatrixEncoder_OutputParameterId_EncodedMemoryBuffer OpenViBE::CIdentifier(0xa3d8b171, 0xf8734734)
#define OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeBuffer OpenViBE::CIdentifier(0x1b7076fd, 0x449bc70a)
#define OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeEnd OpenViBE::CIdentifier(0x3fc23508, 0x806753d8)
#define OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeHeader OpenViBE::CIdentifier(0x878eaf60, 0xf9d5303f)
// -----------------------------------------------------
// Experiment information stream decoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_ExperimentInfoDecoder OpenViBE::CIdentifier(0x6fa7d52b, 0x80e2abd6)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_InputParameterId_MemoryBufferToDecode OpenViBE::CIdentifier(0x2f98ea3c, 0xfb0be096)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_SubjectName OpenViBE::CIdentifier(0x3d3826ea, 0xe8883815)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_ExperimentID OpenViBE::CIdentifier(0x40259641, 0x478c73de)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_LaboratoryName OpenViBE::CIdentifier(0x5ca80fa5, 0x774f01cb)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_SubjectGender OpenViBE::CIdentifier(0x7d5059e8, 0xe4d8b38d)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_SubjectID OpenViBE::CIdentifier(0x97c5d20d, 0x203e65b3)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_TechnicianName OpenViBE::CIdentifier(0xb8a94b68, 0x389393d9)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_ExperimentDate OpenViBE::CIdentifier(0xbc0266a2, 0x9c2935f1)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_SubjectAge OpenViBE::CIdentifier(0xc36c6b08, 0x5227380a)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_TechnicianID OpenViBE::CIdentifier(0xc8ecfbbc, 0x0dcda310)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_LaboratoryID OpenViBE::CIdentifier(0xe761d3d4, 0x44ba1ebf)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedHeader OpenViBE::CIdentifier(0x815234bf, 0xaabae5f2)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedBuffer OpenViBE::CIdentifier(0xaa2738bf, 0xf7fe9fc3)
#define OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedEnd OpenViBE::CIdentifier(0xc4aa114c, 0x628c2d77)
// -----------------------------------------------------
// Channel localisation stream encoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_ChannelLocalisationEncoder OpenViBE::CIdentifier(0xc4aa738a, 0x2368c0ea)
#define OVP_GD_Algorithm_ChannelLocalisationEncoder_InputParameterId_Matrix OpenViBE::CIdentifier(0xa3e9e5b0, 0xae756303) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputParameterId_Matrix
#define OVP_GD_Algorithm_ChannelLocalisationEncoder_InputParameterId_Dynamic OpenViBE::CIdentifier(0xcf5dd4f8, 0xc2ff2878)
#define OVP_GD_Algorithm_ChannelLocalisationEncoder_OutputParameterId_EncodedMemoryBuffer OpenViBE::CIdentifier(0xa3d8b171, 0xf8734734) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_OutputParameterId_EncodedMemoryBuffer
#define OVP_GD_Algorithm_ChannelLocalisationEncoder_InputTriggerId_EncodeBuffer OpenViBE::CIdentifier(0x1b7076fd, 0x449bc70a) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeBuffer
#define OVP_GD_Algorithm_ChannelLocalisationEncoder_InputTriggerId_EncodeEnd OpenViBE::CIdentifier(0x3fc23508, 0x806753d8) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeEnd
#define OVP_GD_Algorithm_ChannelLocalisationEncoder_InputTriggerId_EncodeHeader OpenViBE::CIdentifier(0x878eaf60, 0xf9d5303f) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeHeader
// -----------------------------------------------------
// Signal stream decoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_SignalDecoder OpenViBE::CIdentifier(0x7237c149, 0x0ca66da7)
#define OVP_GD_Algorithm_SignalDecoder_InputParameterId_MemoryBufferToDecode OpenViBE::CIdentifier(0x2f98ea3c, 0xfb0be096) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_InputParameterId_MemoryBufferToDecode
#define OVP_GD_Algorithm_SignalDecoder_OutputParameterId_Sampling OpenViBE::CIdentifier(0x363d8d79, 0xeefb912c)
#define OVP_GD_Algorithm_SignalDecoder_OutputParameterId_Matrix OpenViBE::CIdentifier(0x79ef3123, 0x35e3ea4d)
#define OVP_GD_Algorithm_SignalDecoder_OutputTriggerId_ReceivedHeader OpenViBE::CIdentifier(0x815234bf, 0xaabae5f2) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedHeader
#define OVP_GD_Algorithm_SignalDecoder_OutputTriggerId_ReceivedBuffer OpenViBE::CIdentifier(0xaa2738bf, 0xf7fe9fc3) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedBuffer
#define OVP_GD_Algorithm_SignalDecoder_OutputTriggerId_ReceivedEnd OpenViBE::CIdentifier(0xc4aa114c, 0x628c2d77) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedEnd
// -----------------------------------------------------
// Spectrum stream encoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_SpectrumEncoder OpenViBE::CIdentifier(0xb3e252db, 0xc3214498)
#define OVP_GD_Algorithm_SpectrumEncoder_InputParameterId_Matrix OpenViBE::CIdentifier(0xa3e9e5b0, 0xae756303) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputParameterId_Matrix
#define OVP_GD_Algorithm_SpectrumEncoder_InputParameterId_FrequencyAbscissa OpenViBE::CIdentifier(0x05C91BD6, 0x2D8C4083)
#define OVP_GD_Algorithm_SpectrumEncoder_InputParameterId_Sampling OpenViBE::CIdentifier(0x02D25E1B, 0x76A1019B)
#define OVP_GD_Algorithm_SpectrumEncoder_OutputParameterId_EncodedMemoryBuffer OpenViBE::CIdentifier(0xa3d8b171, 0xf8734734) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_OutputParameterId_EncodedMemoryBuffer
#define OVP_GD_Algorithm_SpectrumEncoder_InputTriggerId_EncodeBuffer OpenViBE::CIdentifier(0x1b7076fd, 0x449bc70a) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeBuffer
#define OVP_GD_Algorithm_SpectrumEncoder_InputTriggerId_EncodeEnd OpenViBE::CIdentifier(0x3fc23508, 0x806753d8) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeEnd
#define OVP_GD_Algorithm_SpectrumEncoder_InputTriggerId_EncodeHeader OpenViBE::CIdentifier(0x878eaf60, 0xf9d5303f) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeHeader
// -----------------------------------------------------
// Acquisition stream decoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_AcquisitionDecoder OpenViBE::CIdentifier(0x1e0812b7, 0x3f686dd4)
#define OVP_GD_Algorithm_AcquisitionDecoder_InputParameterId_MemoryBufferToDecode OpenViBE::CIdentifier(0x2f98ea3c, 0xfb0be096) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_InputParameterId_MemoryBufferToDecode
#define OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_StimulationStream OpenViBE::CIdentifier(0x08fc3c12, 0x86a07bf7)
#define OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_ChannelUnitsStream OpenViBE::CIdentifier(0x11b93981, 0x6e5da9b0)
#define OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_SignalStream OpenViBE::CIdentifier(0x42c0d7bd, 0xbbcea3f3)
#define OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_ChannelLocalisationStream OpenViBE::CIdentifier(0x4eb92f81, 0x6ecda6b9)
#define OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_BufferDuration OpenViBE::CIdentifier(0x7527d6e5, 0xb7a70339)
#define OVP_GD_Algorithm_AcquisitionDecoder_OutputParameterId_ExperimentInfoStream OpenViBE::CIdentifier(0xa7f1d539, 0xec708539)
#define OVP_GD_Algorithm_AcquisitionDecoder_OutputTriggerId_ReceivedHeader OpenViBE::CIdentifier(0x815234bf, 0xaabae5f2) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedHeader
#define OVP_GD_Algorithm_AcquisitionDecoder_OutputTriggerId_ReceivedBuffer OpenViBE::CIdentifier(0xaa2738bf, 0xf7fe9fc3) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedBuffer
#define OVP_GD_Algorithm_AcquisitionDecoder_OutputTriggerId_ReceivedEnd OpenViBE::CIdentifier(0xc4aa114c, 0x628c2d77) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedEnd
#define OVP_GD_ClassId_Algorithm_MasterAcquisitionEncoder OpenViBE::CIdentifier(0x2d15e00b, 0x51414eb6)
#define OVP_GD_ClassId_Algorithm_MasterAcquisitionEncoderDesc OpenViBE::CIdentifier(0xe6ec841d, 0x9e75a8fb)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputParameterId_EncodeChannelUnitData OpenViBE::CIdentifier(0x19dc533c, 0x56301d0b)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputParameterId_ChannelLocalisation OpenViBE::CIdentifier(0x227e13f0, 0x206b44f9)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputParameterId_EncodeChannelLocalisationData OpenViBE::CIdentifier(0x26ee1f81, 0x3db00d5d)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputParameterId_StimulationSet OpenViBE::CIdentifier(0x5b728d37, 0xfd088887)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputParameterId_ChannelUnits OpenViBE::CIdentifier(0x740060c2, 0x7d2b4f57)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputParameterId_SubjectAge OpenViBE::CIdentifier(0x9ef355e4, 0xc8531112)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputParameterId_SubjectGender OpenViBE::CIdentifier(0xa9056ae3, 0x57fe6af0)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputParameterId_SignalSampling OpenViBE::CIdentifier(0xb84ad0ca, 0x4f316dd3)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputParameterId_SubjectID OpenViBE::CIdentifier(0xd5bb5231, 0x59389b72)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputParameterId_BufferDuration OpenViBE::CIdentifier(0xe1fc7385, 0x586a4f3f)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputParameterId_SignalMatrix OpenViBE::CIdentifier(0xe9ac8077, 0xe369a51d)
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_OutputParameterId_EncodedMemoryBuffer OpenViBE::CIdentifier(0xa3d8b171, 0xf8734734) // Duplicate of OVP_GD_Algorit hm_AcquisitionStreamEncoder_OutputParameterId_EncodedMemoryBuffer
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputTriggerId_EncodeBuffer OpenViBE::CIdentifier(0x1b7076fd, 0x449bc70a) // Duplicate of OVP_GD_Algorit hm_AcquisitionStreamEncoder_InputTriggerId_EncodeBuffer
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputTriggerId_EncodeEnd OpenViBE::CIdentifier(0x3fc23508, 0x806753d8) // Duplicate of OVP_GD_Algorit hm_AcquisitionStreamEncoder_InputTriggerId_EncodeEnd
#define OVP_GD_Algorithm_MasterAcquisitionEncoder_InputTriggerId_EncodeHeader OpenViBE::CIdentifier(0x878eaf60, 0xf9d5303f) // Duplicate of OVP_GD_Algorit hm_AcquisitionStreamEncoder_InputTriggerId_EncodeHeader
// -----------------------------------------------------
// Spectrum stream decoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_SpectrumDecoder OpenViBE::CIdentifier(0x128202db, 0x449fc7a6)
#define OVP_GD_Algorithm_SpectrumDecoder_InputParameterId_MemoryBufferToDecode OpenViBE::CIdentifier(0x2f98ea3c, 0xfb0be096) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_InputParameterId_MemoryBufferToDecode
#define OVP_GD_Algorithm_SpectrumDecoder_OutputParameterId_FrequencyAbscissa OpenViBE::CIdentifier(0x14A572E4, 0x5C405C8E)
#define OVP_GD_Algorithm_SpectrumDecoder_OutputParameterId_Sampling OpenViBE::CIdentifier(0x68442C12, 0x0D9A46DE)
#define OVP_GD_Algorithm_SpectrumDecoder_OutputParameterId_Matrix OpenViBE::CIdentifier(0x79ef3123, 0x35e3ea4d) // Duplicate of OVP_GD_Algorithm_SignalDecoder_OutputParameterId_Matrix
#define OVP_GD_Algorithm_SpectrumDecoder_OutputTriggerId_ReceivedHeader OpenViBE::CIdentifier(0x815234bf, 0xaabae5f2) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedHeader
#define OVP_GD_Algorithm_SpectrumDecoder_OutputTriggerId_ReceivedBuffer OpenViBE::CIdentifier(0xaa2738bf, 0xf7fe9fc3) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedBuffer
#define OVP_GD_Algorithm_SpectrumDecoder_OutputTriggerId_ReceivedEnd OpenViBE::CIdentifier(0xc4aa114c, 0x628c2d77) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedEnd
// -----------------------------------------------------
// Stimulation stream decoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_StimulationDecoder OpenViBE::CIdentifier(0xc8807f2b, 0x0813c5b1)
#define OVP_GD_Algorithm_StimulationDecoder_InputParameterId_MemoryBufferToDecode OpenViBE::CIdentifier(0x2f98ea3c, 0xfb0be096) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_InputParameterId_MemoryBufferToDecode
#define OVP_GD_Algorithm_StimulationDecoder_OutputParameterId_StimulationSet OpenViBE::CIdentifier(0xf46d0c19, 0x47306bea)
#define OVP_GD_Algorithm_StimulationDecoder_OutputTriggerId_ReceivedHeader OpenViBE::CIdentifier(0x815234bf, 0xaabae5f2) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedHeader
#define OVP_GD_Algorithm_StimulationDecoder_OutputTriggerId_ReceivedBuffer OpenViBE::CIdentifier(0xaa2738bf, 0xf7fe9fc3) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedBuffer
#define OVP_GD_Algorithm_StimulationDecoder_OutputTriggerId_ReceivedEnd OpenViBE::CIdentifier(0xc4aa114c, 0x628c2d77) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedEnd
// -----------------------------------------------------
// Streamed matrix stream decoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_StreamedMatrixDecoder OpenViBE::CIdentifier(0x7359d0db, 0x91784b21)
#define OVP_GD_Algorithm_StreamedMatrixDecoder_InputParameterId_MemoryBufferToDecode OpenViBE::CIdentifier(0x2f98ea3c, 0xfb0be096) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_InputParameterId_MemoryBufferToDecode
#define OVP_GD_Algorithm_StreamedMatrixDecoder_OutputParameterId_Matrix OpenViBE::CIdentifier(0x79ef3123, 0x35e3ea4d) // Duplicate of OVP_GD_Algorithm_SignalDecoder_OutputParameterId_Matrix
#define OVP_GD_Algorithm_StreamedMatrixDecoder_OutputTriggerId_ReceivedHeader OpenViBE::CIdentifier(0x815234bf, 0xaabae5f2) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedHeader
#define OVP_GD_Algorithm_StreamedMatrixDecoder_OutputTriggerId_ReceivedBuffer OpenViBE::CIdentifier(0xaa2738bf, 0xf7fe9fc3) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedBuffer
#define OVP_GD_Algorithm_StreamedMatrixDecoder_OutputTriggerId_ReceivedEnd OpenViBE::CIdentifier(0xc4aa114c, 0x628c2d77) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedEnd
// -----------------------------------------------------
// Feature vector stream decoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_FeatureVectorDecoder OpenViBE::CIdentifier(0xc2689ecc, 0x43b335c1)
#define OVP_GD_Algorithm_FeatureVectorDecoder_InputParameterId_MemoryBufferToDecode OpenViBE::CIdentifier(0x2f98ea3c, 0xfb0be096) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_InputParameterId_MemoryBufferToDecode
#define OVP_GD_Algorithm_FeatureVectorDecoder_OutputParameterId_Matrix OpenViBE::CIdentifier(0x79ef3123, 0x35e3ea4d) // Duplicate of OVP_GD_Algorithm_SignalDecoder_OutputParameterId_Matrix
#define OVP_GD_Algorithm_FeatureVectorDecoder_OutputTriggerId_ReceivedHeader OpenViBE::CIdentifier(0x815234bf, 0xaabae5f2) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedHeader
#define OVP_GD_Algorithm_FeatureVectorDecoder_OutputTriggerId_ReceivedBuffer OpenViBE::CIdentifier(0xaa2738bf, 0xf7fe9fc3) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedBuffer
#define OVP_GD_Algorithm_FeatureVectorDecoder_OutputTriggerId_ReceivedEnd OpenViBE::CIdentifier(0xc4aa114c, 0x628c2d77) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedEnd
// -----------------------------------------------------
// Channel localisation stream decoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_ChannelLocalisationDecoder OpenViBE::CIdentifier(0x8222f065, 0xb05d35cf)
#define OVP_GD_Algorithm_ChannelLocalisationDecoder_InputParameterId_MemoryBufferToDecode OpenViBE::CIdentifier(0x2f98ea3c, 0xfb0be096) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_InputParameterId_MemoryBufferToDecode
#define OVP_GD_Algorithm_ChannelLocalisationDecoder_OutputParameterId_Matrix OpenViBE::CIdentifier(0x79ef3123, 0x35e3ea4d) // Duplicate of OVP_GD_Algorithm_SignalDecoder_OutputParameterId_Matrix
#define OVP_GD_Algorithm_ChannelLocalisationDecoder_OutputParameterId_Dynamic OpenViBE::CIdentifier(0xd20991fd, 0xa3153651)
#define OVP_GD_Algorithm_ChannelLocalisationDecoder_OutputTriggerId_ReceivedHeader OpenViBE::CIdentifier(0x815234bf, 0xaabae5f2) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedHeader
#define OVP_GD_Algorithm_ChannelLocalisationDecoder_OutputTriggerId_ReceivedBuffer OpenViBE::CIdentifier(0xaa2738bf, 0xf7fe9fc3) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedBuffer
#define OVP_GD_Algorithm_ChannelLocalisationDecoder_OutputTriggerId_ReceivedEnd OpenViBE::CIdentifier(0xc4aa114c, 0x628c2d77) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedEnd
// -----------------------------------------------------
// Channel units stream decoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_ChannelUnitsDecoder OpenViBE::CIdentifier(0x5f973ddf, 0x4a582daf)
#define OVP_GD_Algorithm_ChannelUnitsDecoder_InputParameterId_MemoryBufferToDecode OpenViBE::CIdentifier(0x2f98ea3c, 0xfb0be096) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_InputParameterId_MemoryBufferToDecode
#define OVP_GD_Algorithm_ChannelUnitsDecoder_OutputParameterId_Dynamic OpenViBE::CIdentifier(0x31cf1c7a, 0x17475323)
#define OVP_GD_Algorithm_ChannelUnitsDecoder_OutputParameterId_Matrix OpenViBE::CIdentifier(0x79ef3123, 0x35e3ea4d) // Duplicate of OVP_GD_Algorithm_SignalDecoder_OutputParameterId_Matrix
#define OVP_GD_Algorithm_ChannelUnitsDecoder_OutputTriggerId_ReceivedHeader OpenViBE::CIdentifier(0x815234bf, 0xaabae5f2) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedHeader
#define OVP_GD_Algorithm_ChannelUnitsDecoder_OutputTriggerId_ReceivedBuffer OpenViBE::CIdentifier(0xaa2738bf, 0xf7fe9fc3) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedBuffer
#define OVP_GD_Algorithm_ChannelUnitsDecoder_OutputTriggerId_ReceivedEnd OpenViBE::CIdentifier(0xc4aa114c, 0x628c2d77) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputTriggerId_ReceivedEnd
// -----------------------------------------------------
// Experiment information stream encoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_ExperimentInfoEncoder OpenViBE::CIdentifier(0x56b354fe, 0xbf175468)
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputParameterId_SubjectName OpenViBE::CIdentifier(0x3d3826ea, 0xe8883815) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_SubjectName
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputParameterId_ExperimentID OpenViBE::CIdentifier(0x40259641, 0x478c73de) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_ExperimentID
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputParameterId_LaboratoryName OpenViBE::CIdentifier(0x5ca80fa5, 0x774f01cb) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_LaboratoryName
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputParameterId_SubjectGender OpenViBE::CIdentifier(0x7d5059e8, 0xe4d8b38d) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_SubjectGender
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputParameterId_SubjectID OpenViBE::CIdentifier(0x97c5d20d, 0x203e65b3) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_SubjectID
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputParameterId_TechnicianName OpenViBE::CIdentifier(0xb8a94b68, 0x389393d9) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_TechnicianName
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputParameterId_ExperimentDate OpenViBE::CIdentifier(0xbc0266a2, 0x9c2935f1) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_ExperimentDate
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputParameterId_SubjectAge OpenViBE::CIdentifier(0xc36c6b08, 0x5227380a) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_SubjectAge
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputParameterId_TechnicianID OpenViBE::CIdentifier(0xc8ecfbbc, 0x0dcda310) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_TechnicianID
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputParameterId_LaboratoryID OpenViBE::CIdentifier(0xe761d3d4, 0x44ba1ebf) // Duplicate of OVP_GD_Algorithm_ExperimentInfoDecoder_OutputParameterId_LaboratoryID
#define OVP_GD_Algorithm_ExperimentInfoEncoder_OutputParameterId_EncodedMemoryBuffer OpenViBE::CIdentifier(0xa3d8b171, 0xf8734734) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_OutputParameterId_EncodedMemoryBuffer
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputTriggerId_EncodeBuffer OpenViBE::CIdentifier(0x1b7076fd, 0x449bc70a) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeBuffer
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputTriggerId_EncodeEnd OpenViBE::CIdentifier(0x3fc23508, 0x806753d8) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeEnd
#define OVP_GD_Algorithm_ExperimentInfoEncoder_InputTriggerId_EncodeHeader OpenViBE::CIdentifier(0x878eaf60, 0xf9d5303f) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeHeader
// -----------------------------------------------------
// Feature vector stream encoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_FeatureVectorEncoder OpenViBE::CIdentifier(0x7ebe049d, 0xf777a602)
#define OVP_GD_Algorithm_FeatureVectorEncoder_InputParameterId_Matrix OpenViBE::CIdentifier(0xa3e9e5b0, 0xae756303) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputParameterId_Matrix
#define OVP_GD_Algorithm_FeatureVectorEncoder_OutputParameterId_EncodedMemoryBuffer OpenViBE::CIdentifier(0xa3d8b171, 0xf8734734) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_OutputParameterId_EncodedMemoryBuffer
#define OVP_GD_Algorithm_FeatureVectorEncoder_InputTriggerId_EncodeBuffer OpenViBE::CIdentifier(0x1b7076fd, 0x449bc70a) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeBuffer
#define OVP_GD_Algorithm_FeatureVectorEncoder_InputTriggerId_EncodeEnd OpenViBE::CIdentifier(0x3fc23508, 0x806753d8) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeEnd
#define OVP_GD_Algorithm_FeatureVectorEncoder_InputTriggerId_EncodeHeader OpenViBE::CIdentifier(0x878eaf60, 0xf9d5303f) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeHeader
// -----------------------------------------------------
// Stimulation stream encoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_StimulationEncoder OpenViBE::CIdentifier(0x6e86f7d5, 0xa4668108)
#define OVP_GD_Algorithm_StimulationEncoder_InputParameterId_StimulationSet OpenViBE::CIdentifier(0x8565254c, 0x3a49268e)
#define OVP_GD_Algorithm_StimulationEncoder_OutputParameterId_EncodedMemoryBuffer OpenViBE::CIdentifier(0xa3d8b171, 0xf8734734) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_OutputParameterId_EncodedMemoryBuffer
#define OVP_GD_Algorithm_StimulationEncoder_InputTriggerId_EncodeBuffer OpenViBE::CIdentifier(0x1b7076fd, 0x449bc70a) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeBuffer
#define OVP_GD_Algorithm_StimulationEncoder_InputTriggerId_EncodeEnd OpenViBE::CIdentifier(0x3fc23508, 0x806753d8) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeEnd
#define OVP_GD_Algorithm_StimulationEncoder_InputTriggerId_EncodeHeader OpenViBE::CIdentifier(0x878eaf60, 0xf9d5303f) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeHeader
// -----------------------------------------------------
// Channel units stream encoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_ChannelUnitsEncoder OpenViBE::CIdentifier(0x2ca034fd, 0x5c051e86)
#define OVP_GD_Algorithm_ChannelUnitsEncoder_InputParameterId_Dynamic OpenViBE::CIdentifier(0x615f03b9, 0x4f6a320a)
#define OVP_GD_Algorithm_ChannelUnitsEncoder_InputParameterId_Matrix OpenViBE::CIdentifier(0xa3e9e5b0, 0xae756303) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputParameterId_Matrix
#define OVP_GD_Algorithm_ChannelUnitsEncoder_OutputParameterId_EncodedMemoryBuffer OpenViBE::CIdentifier(0xa3d8b171, 0xf8734734) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_OutputParameterId_EncodedMemoryBuffer
#define OVP_GD_Algorithm_ChannelUnitsEncoder_InputTriggerId_EncodeBuffer OpenViBE::CIdentifier(0x1b7076fd, 0x449bc70a) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeBuffer
#define OVP_GD_Algorithm_ChannelUnitsEncoder_InputTriggerId_EncodeEnd OpenViBE::CIdentifier(0x3fc23508, 0x806753d8) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeEnd
#define OVP_GD_Algorithm_ChannelUnitsEncoder_InputTriggerId_EncodeHeader OpenViBE::CIdentifier(0x878eaf60, 0xf9d5303f) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeHeader
// -----------------------------------------------------
// Signal stream encoder
// -----------------------------------------------------
#define OVP_GD_ClassId_Algorithm_SignalEncoder OpenViBE::CIdentifier(0xc488ad3c, 0xeb2e36bf)
#define OVP_GD_Algorithm_SignalEncoder_InputParameterId_Sampling OpenViBE::CIdentifier(0x998710ff, 0x2c5cca82)
#define OVP_GD_Algorithm_SignalEncoder_InputParameterId_Matrix OpenViBE::CIdentifier(0xa3e9e5b0, 0xae756303) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputParameterId_Matrix
#define OVP_GD_Algorithm_SignalEncoder_OutputParameterId_EncodedMemoryBuffer OpenViBE::CIdentifier(0xa3d8b171, 0xf8734734) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_OutputParameterId_EncodedMemoryBuffer
#define OVP_GD_Algorithm_SignalEncoder_InputTriggerId_EncodeBuffer OpenViBE::CIdentifier(0x1b7076fd, 0x449bc70a) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeBuffer
#define OVP_GD_Algorithm_SignalEncoder_InputTriggerId_EncodeEnd OpenViBE::CIdentifier(0x3fc23508, 0x806753d8) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeEnd
#define OVP_GD_Algorithm_SignalEncoder_InputTriggerId_EncodeHeader OpenViBE::CIdentifier(0x878eaf60, 0xf9d5303f) // Duplicate of OVP_GD_Algorithm_StreamedMatrixEncoder_InputTriggerId_EncodeHeader