Skip to content

Commit 9f42ea4

Browse files
authored
Describe Warp object model (#55)
* Describe Warp object model This is mostly based on the discussions we had the last week, with some terminology choices slightly adjusted by myself to make things clearer * Change "feed" to "track" for now This is the terminology currently used in the draft, and it probably makes it less confusing * Remove mention of datagrams for now This line seems to make things more confusing * Make all IDs opaque integers, since that is the simplest option * s/chunk/object/ * Address review comments
1 parent 87d1085 commit 9f42ea4

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

draft-lcurley-warp.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,19 @@ Track:
159159

160160
This document uses the conventions detailed in Section 1.3 of {{!RFC9000}} when describing the binary encoding.
161161

162+
# Model
163+
164+
The basic element of Warp is *a media object*. A media object is a single addressable cacheable unit that may either contain a sequence of media samples, or some media-specific metadata, and may have relay-related attributes such as TTL or delivery priority associated with it. A media object is a sequence of bytes with a finite length. A Warp media object is similar in function to what is often referred to as "segments" or "chunks" in other media protocols; however, they are different from the traditional notion of chunks. The first key distinction is that Warp media objects are not always expected to be fully available, and thus any relays have to be able to convey partial media objects. The second key distinction is that Warp media objects may not be fully decodable by themselves; an object will contain a description of the prerequisites if that is the case.
165+
166+
*A media track* in Warp is a combination of *an init object* and a sequence of media objects. An init object is a format-specific self-contained description of the track that is required to decode any media object contained within the track, but can also be used as the metadata for track selection. If two media tracks carry semantically equivalent but differently encoded media, they are referred to as *variants* of each other.
167+
168+
*A Warp broadcast* is a collection of multiple media tracks produced by a single origin. When subscribing to a broadcast, a peer has an option of subscribing to one, many or all media tracks within the broadcast.
169+
170+
A Warp broadcast is globally identifiable via a URI. Within the broadcast, every media track is identified via *a track ID* that is unique within the broadcast. Within a single media track, every media object is identified by an *object ID* that is unique within the track.
171+
172+
Depending on the profile of the application using it, Warp supports both a mode of operation where the peer unilaterally sends a broadcast with the media tracks of its choice, and a mode where the peer has to explicitly subscribe to a broadcast and select media tracks it wishes to receive.
173+
174+
As an example, consider a scenario where `example.org` hosts a simple live stream that anyone can subscribe to. That live stream would be a single Warp broadcast identified by the URL `https://example.org/livestream`. In the simplest implementation, it would provide only two media tracks, one with audio and one with video. In more complicated scenarios, it could provide multiple video formats of different levels of video quality; those tracks would be variants of each other. Note that the track IDs are opaque on the Warp level; if the player has not received the description of media tracks out of band in advance, it would have to request the broadcast description first.
162175

163176
# Motivation
164177

0 commit comments

Comments
 (0)