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.
10.2.1. Canonical Object Properties
A canonical MoQ Object has the following information:
-
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 Preferenceis 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 itsObject 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 Preferenceis 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 10.2.1.1 below.
-
Object Extensions : A sequence of Extensions associated with the object. See Section 10.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).
10.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.4).
Any object with a status code other than zero MUST have an empty payload.
10.2.1.2. Object Extension Headers
Any Object with status Normal can have extension headers (Section 2.5).
If an endpoint receives extension headers on Objects with status that is
not Normal, it MUST close the session with a PROTOCOL_VIOLATION.
Object Extension Headers 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 extension header.
Object Extension Headers are serialized as a length in bytes followed by Key-Value-Pairs (see Figure 2).
Extensions {
Extension Headers Length (i),
Extension Headers (..),
}
Object Extension Header types are registered in the IANA table 'MOQ Extension Headers'. See Section 13.