§11.2.

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.2.1. Object Header

A canonical MOQT Object has the following fields:

  • Track Namespace and Track Name: The track this object belongs to.

  • Group ID: The identifier of the Object's Group (see Section 2.3) within the Track.

  • Object ID: The order of the object within the group.

  • Publisher Priority: An 8 bit integer indicating the publisher's priority for the Object (Section 7).

  • Object Forwarding Preference: An enumeration indicating how a publisher sends an object. The preferences are Subgroup and Datagram. Object Forwarding Preference is a property of an individual Object and can vary among Objects in the same Track. In a subscription, an Object MUST be sent according to its Object Forwarding Preference.

  • Subgroup ID: The identifier of the Object's Subgroup (see Section 2.2) within the Group. This field is omitted if the Object Forwarding Preference is Datagram.

  • Object Status: An enumeration used to indicate whether the Object is a normal Object or mark the end of a group or track. See Section 11.2.1.1 below.

  • Object Properties : A sequence of Properties associated with the object. See Section 11.2.1.2.

  • Object Payload: An opaque payload intended for an End Subscriber and SHOULD NOT be processed by a relay. Only present when 'Object Status' is Normal (0x0).

11.2.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 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.

Any other value SHOULD be treated as a protocol error and the session SHOULD be closed with a PROTOCOL_VIOLATION (Section 3.5). Any object with a status code other than zero MUST have an empty payload.

11.2.1.2. Object Properties

Any Object with status Normal can have properties (Section 2.5). 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 are serialized as a length in bytes followed by Key-Value-Pairs (see Figure 2).

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

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

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