§11.1.

Objects

An Object contains a range of contiguous bytes from the specified track, as well as associated metadata required to deliver, cache, and forward it. Objects are sent by publishers.

11.1.1. Object Status

The Object Status is a field that is only present in objects that are delivered via a SUBSCRIPTION, and is absent in Objects delivered via a FETCH. It allows the publisher to explicitly communicate that a specific range of objects does not exist.

Status can have the following values:

  • 0x0 := Normal object. This status is implicit for any non-zero length object. Zero-length objects explicitly encode the Normal status.

  • 0x3 := Indicates End of Group. Indicates that no objects with the specified Group ID and the Object ID that is greater than or equal to the one specified exist in the group identified by the Group ID.

  • 0x4 := Indicates End of Track. Indicates that no objects with the Location that is equal to or greater than the one specified exist.

All of those SHOULD be cached.

There is no Object Status value indicating the end of a Subgroup. The end of a Subgroup is signaled by closing its stream with a FIN (see Section 11.3.2).

Any other value SHOULD be treated as a protocol error and the session SHOULD be closed with a PROTOCOL_VIOLATION (Section 12.2). An Object MUST have an empty payload unless its Object Status value is registered as permitting a payload in the Object Status registry (Section 16.9). Of the values defined in this document, only Normal (0x0) permits a payload.

11.1.2. Object Properties

Any Object with status Normal can have properties (Section 8.4). If an endpoint receives properties on an Object with status that is not Normal, it MUST close the session with a PROTOCOL_VIOLATION.

Object Properties are visible to relays and are intended to be relevant to MOQT Object distribution. Any Object metadata never intended to be accessed by the transport or Relays SHOULD be serialized as part of the Object payload and not as an Object Property.

Object Properties set by the Original Publisher that are intended to be visible to relays, but not modified by them, SHOULD be placed in Immutable Properties (Section 10.7), which enables end-to-end authentication schemes.

Object Properties are serialized as a length in bytes followed by Key-Value-Pairs (see Figure 3).

Object Properties {
  Properties Length (vi64),
  Properties (..),
}

Object Property types are registered in the IANA table 'MOQ Properties'. See Section 16.

This is one section of the MoQT specification, rendered per-section for quick reference and citation. The authoritative text is draft-ietf-moq-transport-22 at the IETF.