... | ... | @@ -9,16 +9,17 @@ Data is synchronised and organised into discrete frames that are represented by |
|
|
### 1. Contents of a Frame
|
|
|
* **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.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.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.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.5.1** `AudioFrame` channels have an accumulate recent changes storage status.
|
|
|
* **1.6** A `Frame` must include an ID and timestamp in milliseconds.
|
|
|
|
|
|
### 2. Creating and Modifying
|
... | ... | @@ -27,9 +28,15 @@ Data is synchronised and organised into discrete frames that are represented by |
|
|
* **2.3** Modifications after flushing are discarded.
|
|
|
* **2.4** A `Frame` can only be flushed once.
|
|
|
* **2.5** Modifications prior to flushing are local to the frame only.
|
|
|
* **2.6** Frames are given a unique source identifier by `Feed`.
|
|
|
* **2.7** `Frame` id and timestamp together are unique within the feed.
|
|
|
* **2.8** Local modifications override any other change status for a channel.
|
|
|
* **2.6** Frames are associated with a valid source identifier by `Feed`.
|
|
|
* **2.7** `Frame` id and timestamp together are unique within the `Feed`.
|
|
|
* **2.8** Modifications are one of three types (Local, Foreign, Completed)
|
|
|
* **2.8.1** `Local` change status means direct local modification occurred.
|
|
|
* **2.8.2** A `local` change overrides all other types and always takes the status.
|
|
|
* **2.8.3** `Foreign` change status means the change was received from elsewhere after a flush.
|
|
|
* **2.8.4** A `foreign` change overrides a `completed` change.
|
|
|
* **2.8.5** `Completed` change status means the change is confirmed and finished.
|
|
|
* **2.9** It must be possible to clear the change status to manually discard.
|
|
|
|
|
|
### 3. Receiving Frames
|
|
|
|
... | ... | |