MOQT uses a single bidirectional stream to exchange control messages, as defined in Section 3.3. Every single message on the control stream is formatted as follows:
MOQT Control Message {
Message Type (i),
Message Length (i),
Message Payload (..),
}
| ID | Messages |
|---|---|
| 0x2 | SUBSCRIBE_UPDATE (Section 6.5) |
| 0x3 | SUBSCRIBE (Section 6.4) |
| 0x4 | SUBSCRIBE_OK (Section 6.15) |
| 0x5 | SUBSCRIBE_ERROR (Section 6.16) |
| 0x6 | ANNOUNCE (Section 6.21) |
| 0x7 | ANNOUNCE_OK (Section 6.9) |
| 0x8 | ANNOUNCE_ERROR (Section 6.10) |
| 0x9 | UNANNOUNCE (Section 6.22) |
| 0xA | UNSUBSCRIBE (Section 6.6) |
| 0xB | SUBSCRIBE_DONE (Section 6.19) |
| 0xC | ANNOUNCE_CANCEL (Section 6.11) |
| 0xD | TRACK_STATUS_REQUEST (Section 6.12) |
| 0xE | TRACK_STATUS (Section 6.23) |
| 0x10 | GOAWAY (Section 6.3) |
| 0x11 | SUBSCRIBE_ANNOUNCES (Section 6.13) |
| 0x12 | SUBSCRIBE_ANNOUNCES_OK (Section 6.24) |
| 0x13 | SUBSCRIBE_ANNOUNCES_ERROR (Section 6.25 |
| 0x14 | UNSUBSCRIBE_ANNOUNCES (Section 6.14) |
| 0x15 | MAX_SUBSCRIBE_ID (Section 6.20) |
| 0x16 | FETCH (Section 6.7) |
| 0x17 | FETCH_CANCEL (Section 6.8) |
| 0x18 | FETCH_OK (Section 6.17) |
| 0x19 | FETCH_ERROR (Section 6.18) |
| 0x40 | CLIENT_SETUP (Section 6.2) |
| 0x41 | SERVER_SETUP (Section 6.2) |
An endpoint that receives an unknown message type MUST close the session. Control messages have a length to make parsing easier, but no control messages are intended to be ignored. If the length does not match the length of the message content, the receiver MUST close the session.