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,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