... | ... | @@ -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.
|
|
|
|
|
|
### 1. Contents of a Frame
|
|
|
|
|
|
#### 1.1 General Properties
|
|
|
* **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.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.1** A `Feed` class must manage the creation of frames.
|
|
|
* **2.2** A `Frame` can be modified only prior to flushing (aka. transmission).
|
... | ... | |