Update Frames authored by Nicolas Pope's avatar Nicolas Pope
...@@ -7,23 +7,30 @@ Data is synchronised and organised into discrete frames that are represented by ...@@ -7,23 +7,30 @@ Data is synchronised and organised into discrete frames that are represented by
* **Flushing** is the saving of and transmission of the frame, completing the state transaction at that discrete time point. * **Flushing** is the saving of and transmission of the frame, completing the state transaction at that discrete time point.
### 1. Contents of a Frame ### 1. Contents of a Frame
#### 1.1 General Properties
* **1.1** Contains up to 2^32 number of data channels. * **1.1** Contains up to 2^32 number of data channels.
* **1.2** A data channel can in principle be any type.
* **1.2.1** It should be possible to fix the type at runtime.
* **1.2.2** To change the type of a non-fixed channel, it must be recreated.
* **1.3** Data channels have a storage mode (persistent, non-persistent, recent).
* **1.3.1** Persistent data exists between frames, over time.
* **1.3.2** Non-persistent becomes discarded at the end of the frames lifetime.
* **1.3.3** Recent channels accumulate all changes since the last frame, and then discard.
* **1.3.4** Non-persistent channels only contain the most recent data.
* **1.4** Channels below 32 are fixed to `VideoFrame` type.
* **1.4.1** `VideoFrame` channels have a non-persistent storage status.
* **1.5** Channels between 32 and 64 are fixed to `AudioFrame` type.
* **1.5.1** `AudioFrame` channels have an accumulate recent changes storage status.
* **1.6** Channels between 64 and 4046 are of mixed but fixed types and are reserved.
* **1.7** Channels above 4096 have no fixed type and are not reserved.
* **1.8** A `Frame` must include an ID and timestamp in milliseconds. * **1.8** A `Frame` must include an ID and timestamp in milliseconds.
#### 1.2 Channel Data Types
* **1.2.1** A data channel can in principle be any type.
* **1.2.2** It should be possible to fix the type at runtime.
* **1.2.3** To change the type of a non-fixed channel, it must be recreated.
* **1.2.4** Data channels have a storage mode (persistent, non-persistent, recent).
* **1.2.5** Persistent data exists between frames, over time.
* **1.2.6** Non-persistent becomes discarded at the end of the frames lifetime.
* **1.2.7** Recent channels accumulate all changes since the last frame, and then discard.
* **1.2.8** Non-persistent channels only contain the most recent data.
#### 1.3 Channel Mappings
* **1.3.1** Channels below 32 are fixed to `VideoFrame` type.
* **1.3.2** `VideoFrame` channels have a non-persistent storage status.
* **1.3.3** Channels between 32 and 64 are fixed to `AudioFrame` type.
* **1.3.4** `AudioFrame` channels have an accumulate recent changes storage status.
* **1.3.5** Channels between 64 and 4046 are of mixed but fixed types and are reserved.
* **1.3.6** Channels above 4096 have no fixed type and are not reserved.
### 2. Creating and Modifying ### 2. Creating and Modifying
* **2.1** A `Feed` class must manage the creation of frames. * **2.1** A `Feed` class must manage the creation of frames.
* **2.2** A `Frame` can be modified only prior to flushing (aka. transmission). * **2.2** A `Frame` can be modified only prior to flushing (aka. transmission).
... ...
......