OpenViBE 3.0.0 released

OpenViBE software releases, jobs and events
Posts: 73
Joined: Wed Mar 04, 2020 3:38 pm

OpenViBE 3.0.0 released

Post by Thomas »

We are pleased to announce the release of OpenViBE-3.0.0 (download).

This release follows the beta version advertise over a month ago.
Here is a list of the updates since OpenViBE 2.2.0:
  • Many new functionalities were added: Riemannian geometry, Multimodal Graz visualization, Artefact detection, Features selection and Stimulation validator
  • Support for Ubuntu 18.04
  • Support for Fedora 31
  • Mainly for developers and contributors: the code has had a lot of modernisation changes, and some refactoring

For the contributions to this version, we would like to thank:
  • Alexey Minin from UrFU for the Encephalan driver
  • Jimmy Leblanc & Yannis Bendi-Ouis from Polymont ITS for the pybox-manager
  • Anton Andreev from Gipsa-Lab for the Unicorn driver
  • G.TEC for their support with the Unicorn driver.
Please have a look at the following post for a list of required changes to your plugins in order to port them to the newer version.

We are very interested in hearing you feedback for this new version. Please raise an issue on our bug tracker if needed.

As mentioned in the release of the Beta version, we are reopening discussions about building a consortium around OpenViBE.
Please drop me an email if you wish to be included in the conversation:

On behalf of the development team,

Posts: 73
Joined: Wed Mar 04, 2020 3:38 pm

Re: OpenViBE 3.0.0 released

Post by Thomas »

Here is the list of changes necessary if you would like to migrate one of your plugins, compatible with OpenViBE 2:
  • OpenViBE types were removed and replaced with standard types:
    • OpenViBE::uintXX -> uintXX_t
    • OpenViBE::intXX -> intXX_t
    • OpenViBE::float64 -> double
    • OpenViBE::boolean -> bool
  • Some functions from System::Memory were removed and replaced with standard equivalent:
    • System::Memory::copy() -> std::memcpy()
    • System::Memory::move() -> std::memmove()
    • System::Memory::set() -> std::memset()
    • System::Memory::compare() -> std::memcmp()
  • Namespaces starting with OpenViBE having been split:
    • OpenViBEPlugins -> OpenViBE::Plugins
    • OpenViBEToolkit:: -> OpenViBE::Toolkit
    • OpenViBEVisualizationToolkit -> OpenViBE::VisualizationToolkit
  • Some ClassId variables were renamed:
    • variables containing StreamedMatrixStreamDecoder renamed with StreamedMatrixDecoder
      e.g. OVP_GD_ClassId_Algorithm_StreamedMatrixStreamDecoder -> OVP_GD_ClassId_Algorithm_StreamedMatrixDecoder
    • variables with StreamedMatrixStreamEncoder renamed with StreamedMatrixEncoder
      e.g. OVP_GD_ClassId_Algorithm_StreamedMatrixStreamEncoder -> OVP_GD_ClassId_Algorithm_StreamedMatrixEncoder
    • variables with SamplingRate renamed with Sampling
      e.g. OVP_GD_Algorithm_SignalEncoder_InputParameterId_SamplingRate -> OVP_GD_Algorithm_SignalEncoder_InputParameterId_Sampling
    • OVP_ClassId_Plugin_VisualizationContext -> OVP_ClassId_Plugin_VisualizationCtx
  • The include file <openvibe/ovITimeArithmetics.h> was removed and functionalities replaced:
    • New header: #include <openvibe/ovITimeArithmetics.h> -> #include <openvibe/CTime.hpp>
    • TimeArithmetics::timeToSeconds(timeVar) -> CTime(timeVar).toSeconds()
    • TimeArrithmetics::SecondsToTime(timeVar) -> CTime(timeVar).time()
    • TimeArithmetics::TimeToSampleCount(freqVar, timeVar) -> CTime(time).toSampleCount(freqVar)
  • In the package ovp_main.cpp, after the call to OVP_Declare_Begin(): rPluginModuleContext -> context
  • Signature of method processInput() overriden from class TBoxAlgorithm has changed (parameter type uint32_t -> const size_t):
    • OpenViBE::boolean processInput(OpenViBE::uint32) -> bool processInput(const size_t index)
  • Signature of method hasFunctionality() overridden from class IPluginObjectDesc ( in sdk/openvibe/include/openvibe/plugins/ovIPluginObjectDesc.h) has changed:
    • OpenViBE::boolean hasFunctionality(OpenViBE::CIdentifier functionalityIdentifier) const -> bool hasFunctionality(const EPluginFunctionality functionality) const
    • #define OVD_Functionality_Visualization replaced by EPluginFunctionality::Visualization
  • Method renamed to match coding rules:
    • TCPTagging::createStimulusSender() -> TCPTagging::CreateStimulusSender()
  • Signature of box processClock() may have changed. Both were used, but now only the latter:
    • bool processClock(Kernel::IMessageClock& msg) -> bool processClock(Kernel::CMessage& msg)