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,229 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
.PHONY: help
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " epub3 to make an epub3"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
@echo " dummy to check syntax errors of document sources"
.PHONY: clean
clean:
rm -rf $(BUILDDIR)/*
.PHONY: html
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
.PHONY: livehtml
livehtml:
sphinx-autobuild -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
.PHONY: dirhtml
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
.PHONY: singlehtml
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
.PHONY: pickle
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
.PHONY: json
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
.PHONY: htmlhelp
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
.PHONY: qthelp
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/NeuroRTArchway.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/NeuroRTArchway.qhc"
.PHONY: applehelp
applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."
.PHONY: devhelp
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/NeuroRTArchway"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/NeuroRTArchway"
@echo "# devhelp"
.PHONY: epub
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
.PHONY: epub3
epub3:
$(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3
@echo
@echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3."
.PHONY: latex
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
.PHONY: latexpdf
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: latexpdfja
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: text
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
.PHONY: man
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
.PHONY: texinfo
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
.PHONY: info
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
.PHONY: gettext
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
.PHONY: changes
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
.PHONY: linkcheck
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
.PHONY: doctest
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
.PHONY: coverage
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
.PHONY: xml
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
.PHONY: pseudoxml
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
.PHONY: dummy
dummy:
$(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy
@echo
@echo "Build finished. Dummy builder generates no files."
@@ -0,0 +1,17 @@
setlocal
setlocal enableextensions
set "OV_PATH_ROOT=%~dp0.."
set "PATH=%OV_PATH_ROOT%/bin;%PATH%"
set "TEMPLATE_DIR=sphinx emplates"
if not exist %TEMPLATE_DIR% (md %TEMPLATE_DIR%)
call openvibe-plugin-inspector --box-doc-directory sphinx/templates
move sphinx\templates\index-boxes.rst sphinx\source\boxes
pushd sphinx
call make.bat html
popd
endlocal
if exist ..\doc (rmdir /s /q ..\doc)
mkdir ..\doc
move sphinx\build\html "..\doc\OpenViBE Manual"
@@ -0,0 +1,14 @@
export OV_PATH_ROOT="${PWD}/.."
export LD_LIBRARY_PATH="${OV_PATH_ROOT}/lib"
export DYLD_LIBRARY_PATH="${OV_PATH_ROOT}/lib"
mkdir -p sphinx/templates
"${OV_PATH_ROOT}/bin/openvibe-plugin-inspector" --box-doc-directory sphinx/templates
mv sphinx/templates/index-boxes.rst sphinx/source/boxes
pushd sphinx
make html
popd
rm -fr "../doc/NeuroRT Manual"
mkdir -p ../doc
mv sphinx/build/html "../doc/OpenViBE Manual"
@@ -0,0 +1,281 @@
@ECHO OFF
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set BUILDDIR=build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source
set I18NSPHINXOPTS=%SPHINXOPTS% source
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
if "%1" == "" goto help
if "%1" == "help" (
:help
echo.Please use `make ^<target^>` where ^<target^> is one of
echo. html to make standalone HTML files
echo. dirhtml to make HTML files named index.html in directories
echo. singlehtml to make a single large HTML file
echo. pickle to make pickle files
echo. json to make JSON files
echo. htmlhelp to make HTML files and a HTML help project
echo. qthelp to make HTML files and a qthelp project
echo. devhelp to make HTML files and a Devhelp project
echo. epub to make an epub
echo. epub3 to make an epub3
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
echo. text to make text files
echo. man to make manual pages
echo. texinfo to make Texinfo files
echo. gettext to make PO message catalogs
echo. changes to make an overview over all changed/added/deprecated items
echo. xml to make Docutils-native XML files
echo. pseudoxml to make pseudoxml-XML files for display purposes
echo. linkcheck to check all external links for integrity
echo. doctest to run all doctests embedded in the documentation if enabled
echo. coverage to run coverage check of the documentation if enabled
echo. dummy to check syntax errors of document sources
goto end
)
if "%1" == "clean" (
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
del /q /s %BUILDDIR%\*
goto end
)
REM Check if sphinx-build is available and fallback to Python version if any
%SPHINXBUILD% 1>NUL 2>NUL
if errorlevel 9009 goto sphinx_python
goto sphinx_ok
:sphinx_python
set SPHINXBUILD=python -m sphinx.__init__
%SPHINXBUILD% 2> nul
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
:sphinx_ok
if "%1" == "html" (
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
goto end
)
if "%1" == "dirhtml" (
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
goto end
)
if "%1" == "singlehtml" (
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
goto end
)
if "%1" == "pickle" (
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the pickle files.
goto end
)
if "%1" == "json" (
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the JSON files.
goto end
)
if "%1" == "htmlhelp" (
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run HTML Help Workshop with the ^
.hhp project file in %BUILDDIR%/htmlhelp.
goto end
)
if "%1" == "qthelp" (
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run "qcollectiongenerator" with the ^
.qhcp project file in %BUILDDIR%/qthelp, like this:
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\NeuroRTArchway.qhcp
echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\NeuroRTArchway.ghc
goto end
)
if "%1" == "devhelp" (
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished.
goto end
)
if "%1" == "epub" (
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub file is in %BUILDDIR%/epub.
goto end
)
if "%1" == "epub3" (
%SPHINXBUILD% -b epub3 %ALLSPHINXOPTS% %BUILDDIR%/epub3
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub3 file is in %BUILDDIR%/epub3.
goto end
)
if "%1" == "latex" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
if errorlevel 1 exit /b 1
echo.
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdf" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdfja" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf-ja
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "text" (
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The text files are in %BUILDDIR%/text.
goto end
)
if "%1" == "man" (
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The manual pages are in %BUILDDIR%/man.
goto end
)
if "%1" == "texinfo" (
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
goto end
)
if "%1" == "gettext" (
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
goto end
)
if "%1" == "changes" (
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
if errorlevel 1 exit /b 1
echo.
echo.The overview file is in %BUILDDIR%/changes.
goto end
)
if "%1" == "linkcheck" (
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
if errorlevel 1 exit /b 1
echo.
echo.Link check complete; look for any errors in the above output ^
or in %BUILDDIR%/linkcheck/output.txt.
goto end
)
if "%1" == "doctest" (
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
if errorlevel 1 exit /b 1
echo.
echo.Testing of doctests in the sources finished, look at the ^
results in %BUILDDIR%/doctest/output.txt.
goto end
)
if "%1" == "coverage" (
%SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage
if errorlevel 1 exit /b 1
echo.
echo.Testing of coverage in the sources finished, look at the ^
results in %BUILDDIR%/coverage/python.txt.
goto end
)
if "%1" == "xml" (
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The XML files are in %BUILDDIR%/xml.
goto end
)
if "%1" == "pseudoxml" (
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
goto end
)
if "%1" == "dummy" (
%SPHINXBUILD% -b dummy %ALLSPHINXOPTS% %BUILDDIR%/dummy
if errorlevel 1 exit /b 1
echo.
echo.Build finished. Dummy builder generates no files.
goto end
)
:end
@@ -0,0 +1,50 @@
@import url("theme.css");
.color-stream-unidentified {
color: #F2F2F2;
}
.color-stream-if-else {
color: #00FDFF;
}
.color-stream-ebml {
color: #ABAEE5;
}
.color-stream-experiment-information {
color: #F0D688;
}
.color-stream-stimulations {
color: #B288AD;
}
.color-stream-streamed-matrix {
color: #A5ED80;
}
.color-stream-covariance-matrix {
color: #82B784;
}
.color-stream-channel-localization {
color: #87A3F4;
}
.color-stream-feature-vector {
color: #F49599;
}
.color-stream-signal {
color: #EA99E1;
}
.color-stream-spectrum {
color: #F6D99C;
}
.color-stream-time-frequency {
color: #F6F99C;
}
@@ -0,0 +1,71 @@
# -*- coding: utf-8 -*-
#
# OpenViBE documentation build configuration file, created by
# sphinx-quickstart on Fri Jun 24 16:43:33 2016.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ------------------------------------------------
extensions = [
'sphinx.ext.todo',
'sphinx.ext.mathjax',
'sphinx.ext.ifconfig',
]
templates_path = ['_templates']
source_suffix = '.rst'
source_encoding = 'utf-8-sig'
master_doc = 'index'
# General information about the project.
project = u'OpenViBE'
copyright = u'2018, Inria & Mensia'
author = u'OpenViBE Team'
# The short X.Y version.
version = u'3.2'
# The full version, including alpha/beta/rc tags.
release = u'3.2'
language = None
exclude_patterns = []
pygments_style = 'sphinx'
todo_include_todos = True
html_theme = 'sphinx_rtd_theme'
html_static_path = ['_static']
html_style = 'css/openvibe.css'
html_extra_path = []
htmlhelp_basename = 'OpenViBEdoc'
rst_epilog = """
.. |Brand| replace:: OpenViBE
.. |AuthTool| replace:: Designer
.. |BulletEngCtrlPanel| replace:: Custom Tools
"""
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,9 @@
Data Formats Documentation
==========================
.. toctree::
:maxdepth: 1
stream-structures
stimulations
matrix-file-format
@@ -0,0 +1,67 @@
.. _Doc_MatrixFileFormat:
Matrix File Format
==================
Sometimes it is useful to be able to save/load OpenViBE matrices to/from disk.
Examples of such matrices are channel localization data that contains a list of
electrode names and their coordinates, and color scales, which may be used by
visualisation plugins to map potentials to colors. To that end, an OpenViBE
matrix file format was defined and OpenViBE matrix file reader/writer
algorithms created to process it. For a programmer, either the algorithms can
be used, or more straightforwardly via the toolkit functions,
.. code::
OpenViBE::Toolkit::Matrix::saveToTextFile(...)
OpenViBE::Toolkit::Matrix::loadFromTextFile(...)
On disk, this format follows a very simple text syntax for maximum portability.
.. note::
Since the matrices are stored as text, they do not maintain absolute float
precision. For the aforementioned save routine, a desired precision can be
given.
Comments may be inserted anywhere, start with a ``#`` character and extend to
the end of the line.
Also, trailing/leading whitespaces on a line are trimmed by the parser.
The file should begin by the header section, delimited by opening and closing
brackets. Each dimension of the matrix is listed in turn and delimited by its
own opening and closing brackets. Dimension element labels should be declared
within these brackets, each being delimited by quotation marks. Empty labels
may be used, and the number of labels must match the dimension size. This is
what a header might look like :
::
# header
[
[ "color1" "color2" ]
[ "Red" "Green" "Blue" ]
]
The next section of the file is the buffer part of the matrix. Opening and closing brackets are used to identify dimensions. Elements are listed in the innermost dimension, and are separated by quotation marks. This is what an appropriate buffer could look like for a 2×3 matrix :
::
# header
[
[ "color1" "color2" ]
[ "Red" "Green" "Blue" ]
]
#buffer
[ #color1
[1 0 0] #red
]
[ #color2
[0 1 0] #blue
]
#end of buffer
@@ -0,0 +1,443 @@
.. _Doc_Stimulations:
Stimulations
============
Stimulation codes for available named stimulations are:
.. csv-table::
:header: "Stimulation Name", "Stimulation Code"
"OVTK_StimulationId_ExperimentStart", "0x00008001"
"OVTK_StimulationId_ExperimentStop", "0x00008002"
"OVTK_StimulationId_SegmentStart", "0x00008003"
"OVTK_StimulationId_SegmentStop", "0x00008004"
"OVTK_StimulationId_TrialStart", "0x00008005"
"OVTK_StimulationId_TrialStop", "0x00008006"
"OVTK_StimulationId_BaselineStart", "0x00008007"
"OVTK_StimulationId_BaselineStop", "0x00008008"
"OVTK_StimulationId_RestStart", "0x00008009"
"OVTK_StimulationId_RestStop", "0x0000800a"
"OVTK_StimulationId_VisualStimulationStart", "0x0000800b"
"OVTK_StimulationId_VisualStimulationStop", "0x0000800c"
"OVTK_StimulationId_VisualSteadyStateStimulationStart", "0x00008010"
"OVTK_StimulationId_VisualSteadyStateStimulationStop", "0x00008011"
"OVTK_StimulationId_Button1_Pressed", "0x00008012"
"OVTK_StimulationId_Button1_Released", "0x00008013"
"OVTK_StimulationId_Button2_Pressed", "0x00008014"
"OVTK_StimulationId_Button2_Released", "0x00008015"
"OVTK_StimulationId_Button3_Pressed", "0x00008016"
"OVTK_StimulationId_Button3_Released", "0x00008017"
"OVTK_StimulationId_Button4_Pressed", "0x00008018"
"OVTK_StimulationId_Button4_Released", "0x00008019"
"OVTK_StimulationId_Label_00", "0x00008100"
"OVTK_StimulationId_Label_01", "0x00008101"
"OVTK_StimulationId_Label_02", "0x00008102"
"OVTK_StimulationId_Label_03", "0x00008103"
"OVTK_StimulationId_Label_04", "0x00008104"
"OVTK_StimulationId_Label_05", "0x00008105"
"OVTK_StimulationId_Label_06", "0x00008106"
"OVTK_StimulationId_Label_07", "0x00008107"
"OVTK_StimulationId_Label_08", "0x00008108"
"OVTK_StimulationId_Label_09", "0x00008109"
"OVTK_StimulationId_Label_0A", "0x0000810a"
"OVTK_StimulationId_Label_0B", "0x0000810b"
"OVTK_StimulationId_Label_0C", "0x0000810c"
"OVTK_StimulationId_Label_0D", "0x0000810d"
"OVTK_StimulationId_Label_0E", "0x0000810e"
"OVTK_StimulationId_Label_0F", "0x0000810f"
"OVTK_StimulationId_Label_10", "0x00008110"
"OVTK_StimulationId_Label_11", "0x00008111"
"OVTK_StimulationId_Label_12", "0x00008112"
"OVTK_StimulationId_Label_13", "0x00008113"
"OVTK_StimulationId_Label_14", "0x00008114"
"OVTK_StimulationId_Label_15", "0x00008115"
"OVTK_StimulationId_Label_16", "0x00008116"
"OVTK_StimulationId_Label_17", "0x00008117"
"OVTK_StimulationId_Label_18", "0x00008118"
"OVTK_StimulationId_Label_19", "0x00008119"
"OVTK_StimulationId_Label_1A", "0x0000811a"
"OVTK_StimulationId_Label_1B", "0x0000811b"
"OVTK_StimulationId_Label_1C", "0x0000811c"
"OVTK_StimulationId_Label_1D", "0x0000811d"
"OVTK_StimulationId_Label_1E", "0x0000811e"
"OVTK_StimulationId_Label_1F", "0x0000811f"
"OVTK_StimulationId_Label_20", "0x00008120"
"OVTK_StimulationId_Label_21", "0x00008121"
"OVTK_StimulationId_Label_22", "0x00008122"
"OVTK_StimulationId_Label_23", "0x00008123"
"OVTK_StimulationId_Label_24", "0x00008124"
"OVTK_StimulationId_Label_25", "0x00008125"
"OVTK_StimulationId_Label_26", "0x00008126"
"OVTK_StimulationId_Label_27", "0x00008127"
"OVTK_StimulationId_Label_28", "0x00008128"
"OVTK_StimulationId_Label_29", "0x00008129"
"OVTK_StimulationId_Label_2A", "0x0000812a"
"OVTK_StimulationId_Label_2B", "0x0000812b"
"OVTK_StimulationId_Label_2C", "0x0000812c"
"OVTK_StimulationId_Label_2D", "0x0000812d"
"OVTK_StimulationId_Label_2E", "0x0000812e"
"OVTK_StimulationId_Label_2F", "0x0000812f"
"OVTK_StimulationId_Label_30", "0x00008130"
"OVTK_StimulationId_Label_31", "0x00008131"
"OVTK_StimulationId_Label_32", "0x00008132"
"OVTK_StimulationId_Label_33", "0x00008133"
"OVTK_StimulationId_Label_34", "0x00008134"
"OVTK_StimulationId_Label_35", "0x00008135"
"OVTK_StimulationId_Label_36", "0x00008136"
"OVTK_StimulationId_Label_37", "0x00008137"
"OVTK_StimulationId_Label_38", "0x00008138"
"OVTK_StimulationId_Label_39", "0x00008139"
"OVTK_StimulationId_Label_3A", "0x0000813a"
"OVTK_StimulationId_Label_3B", "0x0000813b"
"OVTK_StimulationId_Label_3C", "0x0000813c"
"OVTK_StimulationId_Label_3D", "0x0000813d"
"OVTK_StimulationId_Label_3E", "0x0000813e"
"OVTK_StimulationId_Label_3F", "0x0000813f"
"OVTK_StimulationId_Label_40", "0x00008140"
"OVTK_StimulationId_Label_41", "0x00008141"
"OVTK_StimulationId_Label_42", "0x00008142"
"OVTK_StimulationId_Label_43", "0x00008143"
"OVTK_StimulationId_Label_44", "0x00008144"
"OVTK_StimulationId_Label_45", "0x00008145"
"OVTK_StimulationId_Label_46", "0x00008146"
"OVTK_StimulationId_Label_47", "0x00008147"
"OVTK_StimulationId_Label_48", "0x00008148"
"OVTK_StimulationId_Label_49", "0x00008149"
"OVTK_StimulationId_Label_4A", "0x0000814a"
"OVTK_StimulationId_Label_4B", "0x0000814b"
"OVTK_StimulationId_Label_4C", "0x0000814c"
"OVTK_StimulationId_Label_4D", "0x0000814d"
"OVTK_StimulationId_Label_4E", "0x0000814e"
"OVTK_StimulationId_Label_4F", "0x0000814f"
"OVTK_StimulationId_Label_50", "0x00008150"
"OVTK_StimulationId_Label_51", "0x00008151"
"OVTK_StimulationId_Label_52", "0x00008152"
"OVTK_StimulationId_Label_53", "0x00008153"
"OVTK_StimulationId_Label_54", "0x00008154"
"OVTK_StimulationId_Label_55", "0x00008155"
"OVTK_StimulationId_Label_56", "0x00008156"
"OVTK_StimulationId_Label_57", "0x00008157"
"OVTK_StimulationId_Label_58", "0x00008158"
"OVTK_StimulationId_Label_59", "0x00008159"
"OVTK_StimulationId_Label_5A", "0x0000815a"
"OVTK_StimulationId_Label_5B", "0x0000815b"
"OVTK_StimulationId_Label_5C", "0x0000815c"
"OVTK_StimulationId_Label_5D", "0x0000815d"
"OVTK_StimulationId_Label_5E", "0x0000815e"
"OVTK_StimulationId_Label_5F", "0x0000815f"
"OVTK_StimulationId_Label_60", "0x00008160"
"OVTK_StimulationId_Label_61", "0x00008161"
"OVTK_StimulationId_Label_62", "0x00008162"
"OVTK_StimulationId_Label_63", "0x00008163"
"OVTK_StimulationId_Label_64", "0x00008164"
"OVTK_StimulationId_Label_65", "0x00008165"
"OVTK_StimulationId_Label_66", "0x00008166"
"OVTK_StimulationId_Label_67", "0x00008167"
"OVTK_StimulationId_Label_68", "0x00008168"
"OVTK_StimulationId_Label_69", "0x00008169"
"OVTK_StimulationId_Label_6A", "0x0000816a"
"OVTK_StimulationId_Label_6B", "0x0000816b"
"OVTK_StimulationId_Label_6C", "0x0000816c"
"OVTK_StimulationId_Label_6D", "0x0000816d"
"OVTK_StimulationId_Label_6E", "0x0000816e"
"OVTK_StimulationId_Label_6F", "0x0000816f"
"OVTK_StimulationId_Label_70", "0x00008170"
"OVTK_StimulationId_Label_71", "0x00008171"
"OVTK_StimulationId_Label_72", "0x00008172"
"OVTK_StimulationId_Label_73", "0x00008173"
"OVTK_StimulationId_Label_74", "0x00008174"
"OVTK_StimulationId_Label_75", "0x00008175"
"OVTK_StimulationId_Label_76", "0x00008176"
"OVTK_StimulationId_Label_77", "0x00008177"
"OVTK_StimulationId_Label_78", "0x00008178"
"OVTK_StimulationId_Label_79", "0x00008179"
"OVTK_StimulationId_Label_7A", "0x0000817a"
"OVTK_StimulationId_Label_7B", "0x0000817b"
"OVTK_StimulationId_Label_7C", "0x0000817c"
"OVTK_StimulationId_Label_7D", "0x0000817d"
"OVTK_StimulationId_Label_7E", "0x0000817e"
"OVTK_StimulationId_Label_7F", "0x0000817f"
"OVTK_StimulationId_Label_80", "0x00008180"
"OVTK_StimulationId_Label_81", "0x00008181"
"OVTK_StimulationId_Label_82", "0x00008182"
"OVTK_StimulationId_Label_83", "0x00008183"
"OVTK_StimulationId_Label_84", "0x00008184"
"OVTK_StimulationId_Label_85", "0x00008185"
"OVTK_StimulationId_Label_86", "0x00008186"
"OVTK_StimulationId_Label_87", "0x00008187"
"OVTK_StimulationId_Label_88", "0x00008188"
"OVTK_StimulationId_Label_89", "0x00008189"
"OVTK_StimulationId_Label_8A", "0x0000818a"
"OVTK_StimulationId_Label_8B", "0x0000818b"
"OVTK_StimulationId_Label_8C", "0x0000818c"
"OVTK_StimulationId_Label_8D", "0x0000818d"
"OVTK_StimulationId_Label_8E", "0x0000818e"
"OVTK_StimulationId_Label_8F", "0x0000818f"
"OVTK_StimulationId_Label_90", "0x00008190"
"OVTK_StimulationId_Label_91", "0x00008191"
"OVTK_StimulationId_Label_92", "0x00008192"
"OVTK_StimulationId_Label_93", "0x00008193"
"OVTK_StimulationId_Label_94", "0x00008194"
"OVTK_StimulationId_Label_95", "0x00008195"
"OVTK_StimulationId_Label_96", "0x00008196"
"OVTK_StimulationId_Label_97", "0x00008197"
"OVTK_StimulationId_Label_98", "0x00008198"
"OVTK_StimulationId_Label_99", "0x00008199"
"OVTK_StimulationId_Label_9A", "0x0000819a"
"OVTK_StimulationId_Label_9B", "0x0000819b"
"OVTK_StimulationId_Label_9C", "0x0000819c"
"OVTK_StimulationId_Label_9D", "0x0000819d"
"OVTK_StimulationId_Label_9E", "0x0000819e"
"OVTK_StimulationId_Label_9F", "0x0000819f"
"OVTK_StimulationId_Label_A0", "0x000081a0"
"OVTK_StimulationId_Label_A1", "0x000081a1"
"OVTK_StimulationId_Label_A2", "0x000081a2"
"OVTK_StimulationId_Label_A3", "0x000081a3"
"OVTK_StimulationId_Label_A4", "0x000081a4"
"OVTK_StimulationId_Label_A5", "0x000081a5"
"OVTK_StimulationId_Label_A6", "0x000081a6"
"OVTK_StimulationId_Label_A7", "0x000081a7"
"OVTK_StimulationId_Label_A8", "0x000081a8"
"OVTK_StimulationId_Label_A9", "0x000081a9"
"OVTK_StimulationId_Label_AA", "0x000081aa"
"OVTK_StimulationId_Label_AB", "0x000081ab"
"OVTK_StimulationId_Label_AC", "0x000081ac"
"OVTK_StimulationId_Label_AD", "0x000081ad"
"OVTK_StimulationId_Label_AE", "0x000081ae"
"OVTK_StimulationId_Label_AF", "0x000081af"
"OVTK_StimulationId_Label_B0", "0x000081b0"
"OVTK_StimulationId_Label_B1", "0x000081b1"
"OVTK_StimulationId_Label_B2", "0x000081b2"
"OVTK_StimulationId_Label_B3", "0x000081b3"
"OVTK_StimulationId_Label_B4", "0x000081b4"
"OVTK_StimulationId_Label_B5", "0x000081b5"
"OVTK_StimulationId_Label_B6", "0x000081b6"
"OVTK_StimulationId_Label_B7", "0x000081b7"
"OVTK_StimulationId_Label_B8", "0x000081b8"
"OVTK_StimulationId_Label_B9", "0x000081b9"
"OVTK_StimulationId_Label_BA", "0x000081ba"
"OVTK_StimulationId_Label_BB", "0x000081bb"
"OVTK_StimulationId_Label_BC", "0x000081bc"
"OVTK_StimulationId_Label_BD", "0x000081bd"
"OVTK_StimulationId_Label_BE", "0x000081be"
"OVTK_StimulationId_Label_BF", "0x000081bf"
"OVTK_StimulationId_Label_C0", "0x000081c0"
"OVTK_StimulationId_Label_C1", "0x000081c1"
"OVTK_StimulationId_Label_C2", "0x000081c2"
"OVTK_StimulationId_Label_C3", "0x000081c3"
"OVTK_StimulationId_Label_C4", "0x000081c4"
"OVTK_StimulationId_Label_C5", "0x000081c5"
"OVTK_StimulationId_Label_C6", "0x000081c6"
"OVTK_StimulationId_Label_C7", "0x000081c7"
"OVTK_StimulationId_Label_C8", "0x000081c8"
"OVTK_StimulationId_Label_C9", "0x000081c9"
"OVTK_StimulationId_Label_CA", "0x000081ca"
"OVTK_StimulationId_Label_CB", "0x000081cb"
"OVTK_StimulationId_Label_CC", "0x000081cc"
"OVTK_StimulationId_Label_CD", "0x000081cd"
"OVTK_StimulationId_Label_CE", "0x000081ce"
"OVTK_StimulationId_Label_CF", "0x000081cf"
"OVTK_StimulationId_Label_D0", "0x000081d0"
"OVTK_StimulationId_Label_D1", "0x000081d1"
"OVTK_StimulationId_Label_D2", "0x000081d2"
"OVTK_StimulationId_Label_D3", "0x000081d3"
"OVTK_StimulationId_Label_D4", "0x000081d4"
"OVTK_StimulationId_Label_D5", "0x000081d5"
"OVTK_StimulationId_Label_D6", "0x000081d6"
"OVTK_StimulationId_Label_D7", "0x000081d7"
"OVTK_StimulationId_Label_D8", "0x000081d8"
"OVTK_StimulationId_Label_D9", "0x000081d9"
"OVTK_StimulationId_Label_DA", "0x000081da"
"OVTK_StimulationId_Label_DB", "0x000081db"
"OVTK_StimulationId_Label_DC", "0x000081dc"
"OVTK_StimulationId_Label_DD", "0x000081dd"
"OVTK_StimulationId_Label_DE", "0x000081de"
"OVTK_StimulationId_Label_DF", "0x000081df"
"OVTK_StimulationId_Label_E0", "0x000081e0"
"OVTK_StimulationId_Label_E1", "0x000081e1"
"OVTK_StimulationId_Label_E2", "0x000081e2"
"OVTK_StimulationId_Label_E3", "0x000081e3"
"OVTK_StimulationId_Label_E4", "0x000081e4"
"OVTK_StimulationId_Label_E5", "0x000081e5"
"OVTK_StimulationId_Label_E6", "0x000081e6"
"OVTK_StimulationId_Label_E7", "0x000081e7"
"OVTK_StimulationId_Label_E8", "0x000081e8"
"OVTK_StimulationId_Label_E9", "0x000081e9"
"OVTK_StimulationId_Label_EA", "0x000081ea"
"OVTK_StimulationId_Label_EB", "0x000081eb"
"OVTK_StimulationId_Label_EC", "0x000081ec"
"OVTK_StimulationId_Label_ED", "0x000081ed"
"OVTK_StimulationId_Label_EE", "0x000081ee"
"OVTK_StimulationId_Label_EF", "0x000081ef"
"OVTK_StimulationId_Label_F0", "0x000081f0"
"OVTK_StimulationId_Label_F1", "0x000081f1"
"OVTK_StimulationId_Label_F2", "0x000081f2"
"OVTK_StimulationId_Label_F3", "0x000081f3"
"OVTK_StimulationId_Label_F4", "0x000081f4"
"OVTK_StimulationId_Label_F5", "0x000081f5"
"OVTK_StimulationId_Label_F6", "0x000081f6"
"OVTK_StimulationId_Label_F7", "0x000081f7"
"OVTK_StimulationId_Label_F8", "0x000081f8"
"OVTK_StimulationId_Label_F9", "0x000081f9"
"OVTK_StimulationId_Label_FA", "0x000081fa"
"OVTK_StimulationId_Label_FB", "0x000081fb"
"OVTK_StimulationId_Label_FC", "0x000081fc"
"OVTK_StimulationId_Label_FD", "0x000081fd"
"OVTK_StimulationId_Label_FE", "0x000081fe"
"OVTK_StimulationId_Label_FF", "0x000081ff"
"OVTK_StimulationId_Number_00", "0x00000000"
"OVTK_StimulationId_Number_01", "0x00000001"
"OVTK_StimulationId_Number_02", "0x00000002"
"OVTK_StimulationId_Number_03", "0x00000003"
"OVTK_StimulationId_Number_04", "0x00000004"
"OVTK_StimulationId_Number_05", "0x00000005"
"OVTK_StimulationId_Number_06", "0x00000006"
"OVTK_StimulationId_Number_07", "0x00000007"
"OVTK_StimulationId_Number_08", "0x00000008"
"OVTK_StimulationId_Number_09", "0x00000009"
"OVTK_StimulationId_Number_0A", "0x0000000a"
"OVTK_StimulationId_Number_0B", "0x0000000b"
"OVTK_StimulationId_Number_0C", "0x0000000c"
"OVTK_StimulationId_Number_0D", "0x0000000d"
"OVTK_StimulationId_Number_0E", "0x0000000e"
"OVTK_StimulationId_Number_0F", "0x0000000f"
"OVTK_StimulationId_Number_10", "0x00000010"
"OVTK_StimulationId_Number_11", "0x00000011"
"OVTK_StimulationId_Number_12", "0x00000012"
"OVTK_StimulationId_Number_13", "0x00000013"
"OVTK_StimulationId_Number_14", "0x00000014"
"OVTK_StimulationId_Number_15", "0x00000015"
"OVTK_StimulationId_Number_16", "0x00000016"
"OVTK_StimulationId_Number_17", "0x00000017"
"OVTK_StimulationId_Number_18", "0x00000018"
"OVTK_StimulationId_Number_19", "0x00000019"
"OVTK_StimulationId_Number_1A", "0x0000001a"
"OVTK_StimulationId_Number_1B", "0x0000001b"
"OVTK_StimulationId_Number_1C", "0x0000001c"
"OVTK_StimulationId_Number_1D", "0x0000001d"
"OVTK_StimulationId_Number_1E", "0x0000001e"
"OVTK_StimulationId_Number_1F", "0x0000001f"
"OVTK_StimulationId_Train", "0x00008201"
"OVTK_StimulationId_Beep", "0x00008202"
"OVTK_StimulationId_DoubleBeep", "0x00008203"
"OVTK_StimulationId_EndOfFile", "0x00008204"
"OVTK_StimulationId_Target", "0x00008205"
"OVTK_StimulationId_NonTarget", "0x00008206"
"OVTK_StimulationId_TrainCompleted", "0x00008207"
"OVTK_StimulationId_Reset", "0x00008208"
"OVTK_StimulationId_ThresholdPassed_Positive", "0x00008209"
"OVTK_StimulationId_ThresholdPassed_Negative", "0x00008210"
"OVTK_StimulationId_NoArtifact", "0x00008301"
"OVTK_StimulationId_Artifact", "0x00008302"
"OVTK_StimulationId_RemovedSamples", "0x00008310"
"OVTK_StimulationId_AddedSamplesBegin", "0x00008311"
"OVTK_StimulationId_AddedSamplesEnd", "0x00008312"
"OVTK_GDF_Artifact_EOG_Large", "0x101"
"OVTK_GDF_Artifact_ECG", "0x102"
"OVTK_GDF_Artifact_EMG", "0x103"
"OVTK_GDF_Artifact_Movement", "0x104"
"OVTK_GDF_Artifact_Failing_Electrode0x00008004", "0x105"
"OVTK_GDF_Artifact_Sweat", "0x106"
"OVTK_GDF_Artifact_50_60_Hz_Interference", "0x107"
"OVTK_GDF_Artifact_Breathing", "0x108"
"OVTK_GDF_Artifact_Pulse", "0x109"
"OVTK_GDF_Artifact_EOG_Small", "0x10A"
"OVTK_GDF_Calibration", "0x10F"
"OVTK_GDF_EEG_Sleep_Splindles", "0x111"
"OVTK_GDF_EEG_K_Complexes", "0x112"
"OVTK_GDF_EEG_Saw_Tooth_Waves", "0x113"
"OVTK_GDF_EEG_Idling_EEG_Eyes_Open", "0x114"
"OVTK_GDF_EEG_Idling_EEG_Eyes_Closed", "0x115"
"OVTK_GDF_EEG_Spike", "0x116"
"OVTK_GDF_EEG_Seizure", "0x117"
"OVTK_GDF_VEP", "0x121"
"OVTK_GDF_AEP", "0x122"
"OVTK_GDF_SEP", "0x123"
"OVTK_GDF_TMS", "0x12F"
"OVTK_GDF_SSVEP", "0x131"
"OVTK_GDF_SSAEP", "0x132"
"OVTK_GDF_SSSEP", "0x133"
"OVTK_GDF_Start_Of_Trial", "0x300"
"OVTK_GDF_Left", "0x301"
"OVTK_GDF_Right", "0x302"
"OVTK_GDF_Foot", "0x303"
"OVTK_GDF_Tongue", "0x304"
"OVTK_GDF_class5", "0x305"
"OVTK_GDF_Down", "0x306"
"OVTK_GDF_class7", "0x307"
"OVTK_GDF_class8", "0x308"
"OVTK_GDF_class9", "0x309"
"OVTK_GDF_class10", "0x30A"
"OVTK_GDF_class11", "0x30B"
"OVTK_GDF_Up", "0x30C"
"OVTK_GDF_Feedback_Continuous", "0x30D"
"OVTK_GDF_Feedback_Discrete", "0x30E"
"OVTK_GDF_Cue_Unknown_Undefined", "0x30F"
"OVTK_GDF_Beep", "0x311"
"OVTK_GDF_Cross_On_Screen", "0x312"
"OVTK_GDF_Flashing_Light", "0x313"
"OVTK_GDF_End_Of_Trial", "0x320"
"OVTK_GDF_Correct", "0x381"
"OVTK_GDF_Incorrect", "0x382"
"OVTK_GDF_End_Of_Session", "0x3F2"
"OVTK_GDF_Rejection", "0x3FF"
"OVTK_GDF_OAHE", "0x401"
"OVTK_GDF_RERA", "0x402"
"OVTK_GDF_CAHE", "0x403"
"OVTK_GDF_CSB", "0x404"
"OVTK_GDF_Sleep_Hypoventilation", "0x405"
"OVTK_GDF_Maximum_Inspiration", "0x40E"
"OVTK_GDF_Start_Of_Inspiration", "0x40F"
"OVTK_GDF_Wake", "0x410"
"OVTK_GDF_Stage_1", "0x411"
"OVTK_GDF_Stage_2", "0x412"
"OVTK_GDF_Stage_3", "0x413"
"OVTK_GDF_Stage_4", "0x414"
"OVTK_GDF_REM", "0x415"
"OVTK_GDF_Lights_On", "0x420"
"OVTK_GDF_Lights_Off", "0x8420"
"OVTK_GDF_Eyes_Left", "0x431"
"OVTK_GDF_Eyes_Right", "0x432"
"OVTK_GDF_Eyes_Up", "0x433"
"OVTK_GDF_Eyes_Down", "0x434"
"OVTK_GDF_Horizontal_Eye_Movement", "0x435"
"OVTK_GDF_Vertical_Eye_Movement", "0x436"
"OVTK_GDF_Rotation_Clockwise", "0x437"
"OVTK_GDF_Rotation_Counterclockwise", "0x438"
"OVTK_GDF_Eye_Blink", "0x439"
"OVTK_GDF_Left_Hand_Movement", "0x441"
"OVTK_GDF_Right_Hand_Movement", "0x442"
"OVTK_GDF_Head_Movement", "0x443"
"OVTK_GDF_Tongue_Movement", "0x444"
"OVTK_GDF_Swallowing", "0x445"
"OVTK_GDF_Biting", "0x446"
"OVTK_GDF_Foot_Movement", "0x447"
"OVTK_GDF_Foot_Right_Movement", "0x448"
"OVTK_GDF_Arm_Movement", "0x449"
"OVTK_GDF_Arm_Right_Movement", "0x44A"
"OVTK_GDF_ECG_Fiducial_Point_QRS_Complex", "0x501"
"OVTK_GDF_ECG_P_Wave", "0x502"
"OVTK_GDF_ECG_QRS_Complex", "0x503"
"OVTK_GDF_ECG_R_Point", "0x504"
"OVTK_GDF_ECG_T_Wave", "0x506"
"OVTK_GDF_ECG_U_Wave", "0x507"
"OVTK_GDF_Start", "0x580"
"OVTK_GDF_25_Watt", "0x581"
"OVTK_GDF_50_Watt", "0x582"
"OVTK_GDF_75_Watt", "0x583"
"OVTK_GDF_100_Watt", "0x584"
"OVTK_GDF_125_Watt", "0x585"
"OVTK_GDF_150_Watt", "0x586"
"OVTK_GDF_175_Watt", "0x587"
"OVTK_GDF_200_Watt", "0x588"
"OVTK_GDF_225_Watt", "0x589"
"OVTK_GDF_250_Watt", "0x58A"
"OVTK_GDF_275_Watt", "0x58B"
"OVTK_GDF_300_Watt", "0x58C"
"OVTK_GDF_325_Watt", "0x58D"
"OVTK_GDF_350_Watt", "0x58E"
"OVTK_GDF_Start_Of_New_Segment", "0x7FFE"
"OVTK_GDF_Non_Equidistant_Sampling_Value", "0x7FFF"
@@ -0,0 +1,652 @@
.. |clearfloat| raw:: html
<div style="clear:both"></div>
Stream Structures
=================
Introduction
------------
All the streams are defined using EBML (Extensible Binary Meta-Language). They are all structured in 3 sections:
HEADER
this part is the first ever sent and received on the stream, when the user presses "play" in a scenario. It usually contains the stream description used by the boxes and algorithms to initialize everything properly (e.g. size of an internal buffer)
BUFFERS
the number of buffers that may then transit through the stream is unlimited. Buffers contain the payload, e.g. the current signal matrix.
END
this last part is received once, when the user presses "stop" in a scenario. This mechanism is not concretely used in existing boxes, however everything is implemented to handle it.
Hierarchy
---------
The stream hierarchy is displayed on figure below. Every lower stream also
contains the information specific to the upper stream. The color of the
corresponding input and output in the Designer are also displayed.
.. figure:: images/streams.png
:alt: The OpenViBE stream hierarchy
The OpenViBE stream hierarchy
As you can see every stream is an **EBML stream**. Then the EBML container is
specialized in 3 streams : **experiment information**, **stimulations** or
**streamed matrix***.
The **Streamed Matrix** stream can be used as is, or as one of its 4 derived
streams : **channel localisation**, **channel units**, **feature vector**,
**signal** or **spectrum**.
::
#define OVTK_TypeId_EBMLStream OpenViBE::CIdentifier(0x434F6587, 0x2EFD2B7E)
#define OVTK_TypeId_ExperimentInfo OpenViBE::CIdentifier(0x403488E7, 0x565D70B6)
#define OVTK_TypeId_Stimulations OpenViBE::CIdentifier(0x6F752DD0, 0x082A321E)
#define OVTK_TypeId_StreamedMatrix OpenViBE::CIdentifier(0x544A003E, 0x6DCBA5F6)
#define OVTK_TypeId_FeatureVector OpenViBE::CIdentifier(0x17341935, 0x152FF448)
#define OVTK_TypeId_Signal OpenViBE::CIdentifier(0x5BA36127, 0x195FEAE1)
#define OVTK_TypeId_Spectrum OpenViBE::CIdentifier(0x1F261C0A, 0x593BF6BD)
#define OVTK_TypeId_ChannelLocalisation OpenViBE::CIdentifier(0x1E4C0D6E, 0x5204EEB2)
#define OVTK_TypeId_ChannelUnits OpenViBE::CIdentifier(0x5E330216, 0x2C09724C)
The following sections will describe each stream type.
.. _Doc_Streams_EBML:
Standard EBML stream
~~~~~~~~~~~~~~~~~~~~
.. image:: images/ebml-stream-card.png
:align: left
EBML stream description (November 6th 2006, version 1).
From any standard EBML stream header, you can retrieve the stream type identifier, and the stream version.
|clearfloat|
EBML description & identifiers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
* STREAM STRUCTURE
* ----------------
* OVTK_NodeId_Header
* OVTK_NodeId_Header_StreamType (integer:)
* OVTK_NodeId_Header_StreamVersion (integer:)
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer
* ...
* OVTK_NodeId_End
*
::
* NODE IDENTIFIERS
* ----------------
#define OVTK_NodeId_Header EBML::CIdentifier(0x002B395F, 0x108ADFAE)
#define OVTK_NodeId_Header_StreamType EBML::CIdentifier(0x00CDD0F7, 0x46B0278D)
#define OVTK_NodeId_Header_StreamVersion EBML::CIdentifier(0x006F5A08, 0x7796EBC5)
#define OVTK_NodeId_Buffer EBML::CIdentifier(0x00CF2101, 0x02375310)
#define OVTK_NodeId_End EBML::CIdentifier(0x00D9DDC3, 0x0B12873A)
.. _Doc_Streams_StreamedMatrix:
Streamed matrix stream
~~~~~~~~~~~~~~~~~~~~~~
.. image:: images/sm-stream-card.png
:align: left
Streamed matrix stream description (November 6th 2006, version 1).
The streamed matrix stream is an EBML Stream that also contains a matrix
descriptor in the header, and a **matrix of double precision floating values**
in its buffers. The matrix descriptor gives the **dimension count**, **size**
of each dimension, and **labels** of each dimension.
|clearfloat|
EBML description & identifiers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
* STREAM STRUCTURE
* ----------------
* OVTK_NodeId_Header
* OVTK_NodeId_Header_StreamType (integer:)
* OVTK_NodeId_Header_StreamVersion (integer:)
* OVTK_NodeId_Header_StreamedMatrix
* OVTK_NodeId_Header_StreamedMatrix_DimensionCount (integer:)
* OVTK_NodeId_Header_StreamedMatrix_Dimension
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Size (integer:)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:)
* ...
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* ...
* OVTK_NodeId_End
*
::
* NODE IDENTIFIERS
* ----------------
#define OVTK_NodeId_Header_StreamedMatrix EBML::CIdentifier(0x0072F560, 0x7ED2CBED)
#define OVTK_NodeId_Header_StreamedMatrix_DimensionCount EBML::CIdentifier(0x003FEBD4, 0x2725D428)
#define OVTK_NodeId_Header_StreamedMatrix_Dimension EBML::CIdentifier(0x0000E3C0, 0x3A7D5141)
#define OVTK_NodeId_Header_StreamedMatrix_Dimension_Size EBML::CIdentifier(0x001302F7, 0x36D8438A)
#define OVTK_NodeId_Header_StreamedMatrix_Dimension_Label EBML::CIdentifier(0x00153E40, 0x190227E0)
#define OVTK_NodeId_Buffer_StreamedMatrix EBML::CIdentifier(0x00120663, 0x08FBC165)
#define OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer EBML::CIdentifier(0x00B18C10, 0x427D098C)
.. _Doc_Streams_ChannelLocalization:
Channel localization stream
~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. image:: images/chanloc-stream-card.png
:align: left
Channel localisation description (nov 04th 2008, version 1)
The channel localisation stream is a stream matrix stream with some
constraints:
- 2 dimensions : **channels** and **positions**
- First dimension has variable size (channel count)
- Second dimension has a size of 3 : the normalized cartesian coordinates in
the following frame of reference : X right, Y front and Z up.
Its header also exposes a boolean value : **Dynamic**. If false the coordinates
are assumed to be static, thus sent once and for all (e.g. with an EEG system).
If Dynamic is set, the coordinates of the sensors may change over time, thus
several buffer can be received over time.
|clearfloat|
EBML description & identifiers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
* STREAM STRUCTURE
* ----------------
* OVTK_NodeId_Header
* OVTK_NodeId_Header_StreamType (integer:)
* OVTK_NodeId_Header_StreamVersion (integer:2)
* OVTK_NodeId_Header_ChannelLocalisation
* OVTK_NodeId_Header_ChannelLocalisation_Dynamic (boolean)
* OVTK_NodeId_Header_StreamedMatrix
* OVTK_NodeId_Header_StreamedMatrix_DimensionCount (integer:2)
* OVTK_NodeId_Header_StreamedMatrix_Dimension
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Size (integer:channel count)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:channel 1 name)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:channel 2 name)
* ...
* OVTK_NodeId_Header_StreamedMatrix_Dimension
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Size (integer:3)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:x)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:y)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:z)
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* ...
* OVTK_NodeId_End
*
::
* NODE IDENTIFIERS
* ----------------
#define OVTK_NodeId_Header_ChannelLocalisation EBML::CIdentifier(0xF2CFE60B, 0xEFD63E3B)
#define OVTK_NodeId_Header_ChannelLocalisation_Dynamic EBML::CIdentifier(0x5338AF5C, 0x07C469C3)
.. _Doc_Streams_ChannelUnits:
Channel units stream
~~~~~~~~~~~~~~~~~~~~
Channel units description (mar 30th 2015, version 1).
The channel units stream is a streamed matrix stream intended to carry channel
measurement unit information from the drivers to Designer (e.g. ‘channel 1 is
in microvolts’). The stream has some constraints:
- 2 dimensions : **channels** and their **properties**
- First dimension has variable size (channel count)
- Second dimension has a size of 2 : the unit and the scaling factor. Although
the stream contents can be handled as a matrix, the unit codes and scaling
factors supported and understood by OpenViBE are limited to a specific set.
The list is in in ``toolkit/include/ovtk_defines.h``.
Its header also exposes a boolean value : **Dynamic**. If false the units are assumed to be static, thus sent once and for all (e.g. with an EEG system). If Dynamic is set, the units may change over time, thus several buffer can be received over time. However, no component in 1.0.0 supports the dynamic units.
EBML description & identifiers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
* STREAM STRUCTURE
* ----------------
* OVTK_NodeId_Header
* OVTK_NodeId_Header_StreamType (integer:)
* OVTK_NodeId_Header_StreamVersion (integer:2)
* OVTK_NodeId_Header_ChannelUnits
* OVTK_NodeId_Header_ChannelUnits_Dynamic (boolean)
* OVTK_NodeId_Header_StreamedMatrix
* OVTK_NodeId_Header_StreamedMatrix_DimensionCount (integer:2)
* OVTK_NodeId_Header_StreamedMatrix_Dimension
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Size (integer:channel count)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:channel 1 name)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:channel 2 name)
* ...
* OVTK_NodeId_Header_StreamedMatrix_Dimension
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Size (integer:2)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:unit)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:factor)
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* ...
* OVTK_NodeId_End
*
::
* NODE IDENTIFIERS
* ----------------
#define OVTK_NodeId_Header EBML::CIdentifier(0x002B395F, 0x108ADFAE)
#define OVTK_NodeId_Header_StreamType EBML::CIdentifier(0x00CDD0F7, 0x46B0278D)
#define OVTK_NodeId_Header_StreamVersion EBML::CIdentifier(0x006F5A08, 0x7796EBC5)
#define OVTK_NodeId_Buffer EBML::CIdentifier(0x00CF2101, 0x02375310)
#define OVTK_NodeId_End EBML::CIdentifier(0x00D9DDC3, 0x0B12873A)
.. _Doc_Streams_FeatureVector:
Feature vector stream
~~~~~~~~~~~~~~~~~~~~~
.. image:: images/fvec-stream-card.png
:align: left
Feature vector stream description (may 24th 2007, version 1).
The feature vector stream is a stream matrix stream with some constraints:
- 1 dimension : the **features**
- Number of features may vary, but remains the same for one stream life time.
EBML description & identifiers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
* STREAM STRUCTURE
* ----------------
* OVTK_NodeId_Header
* OVTK_NodeId_Header_StreamType (integer:)
* OVTK_NodeId_Header_StreamVersion (integer:)
* OVTK_NodeId_Header_StreamedMatrix
* OVTK_NodeId_Header_StreamedMatrix_DimensionCount (integer:1)
* OVTK_NodeId_Header_StreamedMatrix_Dimension
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Size (integer:feature count)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:feature 1 name)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:feature 2 name)
* ...
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* ...
* OVTK_NodeId_End
*
.. _Doc_Streams_Spectrum:
Spectrum stream
~~~~~~~~~~~~~~~
.. image:: images/spec-stream-card.png
:align: left
Spectrum stream description (jan. 2017, version 2).
The spectrum stream is a stream matrix stream with some constraints:
- 2 dimensions : **channels** and **number of frequency values**
- First dimension has variable size (channel count)
- Second dimension has variable size (number of frequency values)
Its header also expose the sampling rate of the signal and the list of frequency values used.
|clearfloat|
EBML description & identifiers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
* STREAM STRUCTURE
* ----------------
* OVTK_NodeId_Header
* OVTK_NodeId_Header_StreamType (integer:)
* OVTK_NodeId_Header_StreamVersion (integer:)
* OVTK_NodeId_Header_StreamedMatrix
* OVTK_NodeId_Header_StreamedMatrix_DimensionCount (integer:2)
* OVTK_NodeId_Header_StreamedMatrix_Dimension
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Size (integer:channel count)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:channel 1 name)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:channel 2 name)
* ...
* OVTK_NodeId_Header_StreamedMatrix_Dimension
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Size (integer:number of frequency band)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:frequency band 1 name)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:frequency band 2 name)
* ...
* OVTK_NodeId_Header_Spectrum
* OVTK_NodeId_Header_Spectrum_Sampling
* OVTK_NodeId_Header_Spectrum_FrequencyAbscissa (double)
* OVTK_NodeId_Header_Spectrum_FrequencyAbscissa (double)
* OVTK_NodeId_Header_Spectrum_FrequencyAbscissa (double)
* ...
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* ...
* OVTK_NodeId_End
*
::
* NODE IDENTIFIERS
* ----------------
#define OVTK_NodeId_Header_Spectrum EBML::CIdentifier(0x00CCFA4B, 0x14F37D4D)
#define OVTK_NodeId_Header_Spectrum_FrequencyBand_Deprecated EBML::CIdentifier(0x0010983C, 0x21F8BDE5)
#define OVTK_NodeId_Header_Spectrum_FrequencyBand_Start_Deprecated EBML::CIdentifier(0x00AA5654, 0x2403A2CB)
#define OVTK_NodeId_Header_Spectrum_FrequencyBand_Stop_Deprecated EBML::CIdentifier(0x00A44C82, 0x05BE50D5)
#define OVTK_NodeId_Header_Spectrum_FrequencyAbscissa EBML::CIdentifier(0x00D7287D, 0x622A2BF5)
#define OVTK_NodeId_Header_Spectrum_Sampling EBML::CIdentifier(0x006876E9, 0x1DCB0CA1)
.. _Doc_Streams_Signal:
Signal stream
~~~~~~~~~~~~~
.. image:: images/signal-stream-card.png
:align: left
Signal stream description (may 24th 2007, version 2).
The signal stream is a stream matrix stream with some constraints:
- 2 dimensions : **channels** and **samples**
- First dimension has variable size (channel count)
- Second dimension has a size corresponding to the **sample count per buffer**.
Its header also expose an integer value : the **Sampling Frequency**. Sampling
frequency and sample count per buffer depends on the data producer (file reader
or acquisition client).
|clearfloat|
EBML description & identifiers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
* STREAM STRUCTURE
* ----------------
* OVTK_NodeId_Header
* OVTK_NodeId_Header_StreamType (integer:)
* OVTK_NodeId_Header_StreamVersion (integer:)
* OVTK_NodeId_Header_Signal
* OVTK_NodeId_Header_Signal_Sampling (integer)
* OVTK_NodeId_Header_StreamedMatrix
* OVTK_NodeId_Header_StreamedMatrix_DimensionCount (integer:2)
* OVTK_NodeId_Header_StreamedMatrix_Dimension
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Size (integer:channel count)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:channel 1 name)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string:channel 2 name)
* ...
* OVTK_NodeId_Header_StreamedMatrix_Dimension
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Size (integer:number of samples per buffer)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string)
* OVTK_NodeId_Header_StreamedMatrix_Dimension_Label (string)
* ...
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_StreamedMatrix
* OVTK_NodeId_Buffer_StreamedMatrix_RawBuffer (array of double)
* ...
* OVTK_NodeId_End
*
::
* NODE IDENTIFIERS
* ----------------
#define OVTK_NodeId_Header_Signal EBML::CIdentifier(0x007855DE, 0x3748D375)
#define OVTK_NodeId_Header_Signal_Sampling EBML::CIdentifier(0x00141C43, 0x0C37006B)
.. _Doc_Streams_Stimulation:
Stimulation stream
~~~~~~~~~~~~~~~~~~
.. image:: images/stim-stream-card.png
:align: left
Stimulation stream description (may 24th 2007, version 3).
The stimulation stream is an EBML stream which buffers contains stimulation
sets. Each stimulation has 3 attributes:
- **Stimulation Date**: a 64bit unsigned integer in 32:32 precision (first 32
bits for the seconds, last 32 bits for the divisions)
- **Stimulation Identifier** as listed in the documentation page.
- **Stimulation Duration**: same encoding as stimulation date. In practice, the
duration is never used by boxes, thus the value is most of the time 0.
|clearfloat|
EBML description & identifiers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
* STREAM STRUCTURE
* ----------------
* OVTK_NodeId_Header
* OVTK_NodeId_Header_StreamType (integer:)
* OVTK_NodeId_Header_StreamVersion (integer:)
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer_Stimulation
* OVTK_NodeId_Buffer_Stimulation_NumberOfStimulations (integer)
* OVTK_NodeId_Buffer_Stimulation_Stimulation
* OVTK_NodeId_Buffer_Stimulation_Stimulation_ID (integer)
* OVTK_NodeId_Buffer_Stimulation_Stimulation_Date (integer)
* OVTK_NodeId_Buffer_Stimulation_Stimulation_Duration (integer)
* OVTK_NodeId_Stimulation_Stimulation
* ...
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer
* ...
* OVTK_NodeId_End
*
::
* NODE IDENTIFIERS
* ----------------
#define OVTK_NodeId_Buffer_Stimulation EBML::CIdentifier(0x006DEABE, 0x7FC05A20)
#define OVTK_NodeId_Buffer_Stimulation_NumberOfStimulations EBML::CIdentifier(0x00BB790B, 0x2B8574D8)
#define OVTK_NodeId_Buffer_Stimulation_Stimulation EBML::CIdentifier(0x0016EAC6, 0x29FBCAA1)
#define OVTK_NodeId_Buffer_Stimulation_Stimulation_ID EBML::CIdentifier(0x006FA5DB, 0x4BAC31E9)
#define OVTK_NodeId_Buffer_Stimulation_Stimulation_Date EBML::CIdentifier(0x00B866D8, 0x14DA5374)
#define OVTK_NodeId_Buffer_Stimulation_Stimulation_Duration EBML::CIdentifier(0x14EE055F, 0x87FBCC9C)
.. _Doc_Streams_ExperimentInfo:
Experimentation information stream
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. image:: images/xp-stream-card.png
:align: left
Experimentation information stream description (november 6th 2006, version 1).
The experiment information stream is an EBML stream that provides in its header
some information about the experiment being conducted. These information are
entered for example in the acquisition server, when configuring the driver
before starting the acquisition. You can find:
- **Experiment description**: identifier and date.
- **Subject description**: identifier, name, age and gender.
- **Context**: laboratory identifier and name, technician identifier and name.
|clearfloat|
EBML description & identifiers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
* STREAM STRUCTURE
* ----------------
* OVTK_NodeId_Header
* OVTK_NodeId_Header_StreamType (integer:)
* OVTK_NodeId_Header_StreamVersion (integer:)
* OVTK_NodeId_Header_ExperimentInfo
* OVTK_NodeId_Header_ExperimentInfo_Experiment
* OVTK_NodeId_Header_ExperimentInfo_Experiment_ID (integer)
* OVTK_NodeId_Header_ExperimentInfo_Experiment_Date (date)
* OVTK_NodeId_Header_ExperimentInfo_Subject
* OVTK_NodeId_Header_ExperimentInfo_Subject_ID (integer)
* OVTK_NodeId_Header_ExperimentInfo_Subject_Name (string)
* OVTK_NodeId_Header_ExperimentInfo_Subject_Age (integer)
* OVTK_NodeId_Header_ExperimentInfo_Subject_Gender (integer)
* OVTK_NodeId_Header_ExperimentInfo_Context
* OVTK_NodeId_Header_ExperimentInfo_Context_LaboratoryID (integer)
* OVTK_NodeId_Header_ExperimentInfo_Context_LaboratoryName (string)
* OVTK_NodeId_Header_ExperimentInfo_Context_TechnicianID (integer)
* OVTK_NodeId_Header_ExperimentInfo_Context_TechnicianName (string)
* OVTK_NodeId_End
*
::
* NODE IDENTIFIERS
* ----------------
#define OVTK_NodeId_Header_ExperimentInfo EBML::CIdentifier(0x00746BA0, 0x115AE04D)
#define OVTK_NodeId_Header_ExperimentInfo_Experiment EBML::CIdentifier(0x0011D6B7, 0x48F1AA39)
#define OVTK_NodeId_Header_ExperimentInfo_Experiment_ID EBML::CIdentifier(0x006ACD74, 0x1C960C26)
#define OVTK_NodeId_Header_ExperimentInfo_Experiment_Date EBML::CIdentifier(0x002F8FB7, 0x6DA7552D)
#define OVTK_NodeId_Header_ExperimentInfo_Subject EBML::CIdentifier(0x003EC620, 0x333E0A94)
#define OVTK_NodeId_Header_ExperimentInfo_Subject_ID EBML::CIdentifier(0x00D62974, 0x473D4AA5)
#define OVTK_NodeId_Header_ExperimentInfo_Subject_Name EBML::CIdentifier(0x0041FD0A, 0x6BCD9A99)
#define OVTK_NodeId_Header_ExperimentInfo_Subject_Age EBML::CIdentifier(0x00DF7DD9, 0x33336C51)
/* for retro compat */
#define OVTK_NodeId_Header_ExperimentInfo_Subject_Sex EBML::CIdentifier(0x0069BB84, 0x3FC8E149)
#define OVTK_NodeId_Header_ExperimentInfo_Subject_Gender EBML::CIdentifier(0x0069BB84, 0x3FC8E149)
#define OVTK_NodeId_Header_ExperimentInfo_Context EBML::CIdentifier(0x0018C291, 0x7985DFDD)
#define OVTK_NodeId_Header_ExperimentInfo_Context_LaboratoryID EBML::CIdentifier(0x003F11B9, 0x26D76D9C)
#define OVTK_NodeId_Header_ExperimentInfo_Context_LaboratoryName EBML::CIdentifier(0x00EB1F23, 0x51C23B83)
#define OVTK_NodeId_Header_ExperimentInfo_Context_TechnicianID EBML::CIdentifier(0x00874A7F, 0x60DC34C2)
#define OVTK_NodeId_Header_ExperimentInfo_Context_TechnicianName EBML::CIdentifier(0x00C8C393, 0x31CE5B3E)
Acquisition stream
~~~~~~~~~~~~~~~~~~
.. image:: images/acquisition-stream-small.png
:align: left
Acquisition stream description (nov 2014, version 3). This is a multiplexed
stream.
The acquisition stream encapsulates 5 streams : experiment information, channel
localisation, channel units, signal and stimulation.
This stream is produced by the Acquisition Server and is sent to every client
connected via tcp/ip network connection. The stream is received by the
Acquisition Client box, that separates each streams and makes them available on
5 corresponding outputs.
|clearfloat|
EBML description & identifiers
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
* STREAM STRUCTURE
* ----------------
* OVTK_NodeId_Header
* OVTK_NodeId_Acquisition_Header_ExperimentInfo
* ... some experiment information stream header
* OVTK_NodeId_Acquisition_Header_Signal
* ... some signal stream header
* OVTK_NodeId_Acquisition_Header_Stimulation
* ... some stimulation stream header
* OVTK_NodeId_Acquisition_Header_ChannelLocalisation
* ... some channel localisation stream header
* OVTK_NodeId_Acquisition_Header_ChannelUnits
* ... some channel units stream header
* OVTK_NodeId_Buffer
* OVTK_NodeId_Acquisition_Buffer_ExperimentInfo
* ... some experiment information stream buffer
* OVTK_NodeId_Acquisition_Buffer_Signal
* ... some signal stream buffer
* OVTK_NodeId_Acquisition_Buffer_Stimulation
* ... some stimulation stream buffer
* OVTK_NodeId_Acquisition_Buffer_ChannelLocalisation
* ... some channel localisation stream buffer
* OVTK_NodeId_Acquisition_Buffer_ChannelUnits
* ... some channel units stream buffer
* OVTK_NodeId_Buffer
* OVTK_NodeId_Buffer
* ...
*
@@ -0,0 +1,17 @@
OpenViBE SDK Documentation
==========================
Available Boxes
---------------
.. toctree::
:maxdepth: 1
boxes/index-boxes
Data Formats Documentation
--------------------------
.. toctree::
:maxdepth: 2
data-formats/index-data-formats