@@ -922,14 +922,57 @@ NOT be processed by a relay.
922922
923923A receiver issues a SUBSCRIBE to a publisher to request a track.
924924
925- The format of SUBSCRIBE is as follows :
925+ # ## Susbscribe Locations {#susbscribe-locations}
926+
927+ The receiver specifies a start and optional end `Location` for the subscription.
928+ A location value may be an absolute group or object sequence, or it may be a
929+ delta relative to the largest group or the largest object in a group.
926930
927931~~~
928- SUBSCRIBE Message {
929- Track Namespace (b),
930- Track Name (b),
931- Number of Parameters (i),
932- Parameters (..) ...
932+ Location {
933+ Mode (i),
934+ [Value (i)]
935+ }
936+ ~~~
937+
938+ There are 4 modes :
939+
940+ None (0x0) : The Location is unspecified, Value is not present
941+
942+ Absolute (0x1) : Value is an absolute sequence
943+
944+ RelativePrevious (0x2) : Value is a delta from the largest sequence. 0 is the
945+ largest sequence, 1 is the largest sequence - 1, and so on.
946+
947+ RelativeNext (0x3) : Value is a delta from the largest sequence. 0 is the largest
948+ sequence + 1, 1 is the largest sequence + 2, and so on.
949+
950+ The following table shows an example of how the RelativePrevious and RelativeNext
951+ values are used to determine the absolute sequence.
952+
953+ ~~~
954+ Sequence : 0 1 2 3 4 [5] [6] ...
955+ ^
956+ Largest Sequence
957+ RelativePrevious Value : 4 3 2 1 0
958+ RelativeNext Value : 0 1 ...
959+ ~~~
960+ {: title="Relative Indexing"}
961+
962+
963+ # ## SUBSCRIBE REQUEST Format
964+
965+ The format of SUBSCRIBE REQUEST is as follows :
966+
967+ ~~~
968+ SUBSCRIBE REQUEST Message {
969+ Full Track Name Length (i),
970+ Full Track Name (...),
971+ StartGroup (Location),
972+ StartObject (Location),
973+ EndGroup (Location),
974+ EndObject (Location),
975+ Track Request Parameters (..) ...
933976}
934977~~~
935978{: # moq-transport-subscribe-format title="MOQT SUBSCRIBE Message"}
@@ -939,11 +982,83 @@ SUBSCRIBE Message {
939982
940983* Track Name: Identifies the track name as defined in ({{track-name}}).
941984
942- * Parameters: As defined in {{version-specific-params}}.
985+ * StartGroup: The Location of the requested group. StartGroup's Mode MUST NOT be
986+ None.
987+
988+ * StartObject: The Location of the requested object. StartObject's Mode MUST NOT
989+ be None.
990+
991+ * EndGroup: The last Group requested in the subscription, inclusive. EndGroup's
992+ Mode is None for an open-ended subscription.
993+
994+ * EndObject: The last Object requested in the subscription, exclusive.
995+ EndObject's Mode MUST be None if EndGroup's Mode is None. EndObject's Mode MUST
996+ NOT be None if EndGroup's Mode is not None.
997+
998+ * Track Request Parameters: The parameters are defined in
999+ {{version-specific-params}}
9431000
9441001On successful subscription, the publisher SHOULD start delivering
945- objects from the group sequence and object sequence as defined in the
946- Parameters.
1002+ objects from the group sequence and object sequence described above.
1003+
1004+ If a publisher cannot satisfy the requested start or end for the subscription it
1005+ MAY send a SUBSCRIBE_ERROR with code TBD. A publisher MUST NOT send objects
1006+ from outside the requested start and end.
1007+
1008+ # ## Examples
1009+
1010+ ~~~
1011+ 1. Now
1012+
1013+ Start Group : Mode=RelativePrevious, Value=0
1014+ Start Object : Mode=RelateiveNext, Value=0
1015+ End Group : Mode=None
1016+ End Object : Mode=None
1017+
1018+ StartGroup=Largest Group
1019+ StartObject=Largest Object + 1
1020+
1021+ 2. Current
1022+
1023+ Start Group : Mode=RelativePrevious, Value=0
1024+ Start Object : Mode=Absolute, Value=0
1025+ End Group : Mode=None
1026+ End Object : Mode=None
1027+
1028+ StartGroup=Largest Group
1029+ StartObject=0
1030+
1031+ 3. Previous
1032+
1033+ Start Group : Mode=RelativePrevious, Value=1
1034+ Start Object : Mode=Absolute, Value=0
1035+ End Group : Mode=None
1036+ End Object : Mode=None
1037+
1038+ StartGroup=Largest Group - 1
1039+ StartObject=0
1040+
1041+ 4. Next
1042+
1043+ Start Group : Mode=RelativeNext, Value=0
1044+ Start Object : Mode=Absolute, Value=0
1045+ End Group : Mode=None
1046+ End Object : Mode=None
1047+
1048+ StartGroup=Largest Group + 1
1049+ StartObject=0
1050+
1051+ 5. Range, All of group 3
1052+
1053+ Start Group : Mode=Absolute, Value=3
1054+ Start Object : Mode=Absolute, Value=0
1055+ End Group : Mode=Absolute, Value=4
1056+ End Object : Mode=Absolute, Value=0
1057+
1058+ Start = Group 3, Object 0
1059+ End = Group 3, Object <last>
1060+ ~~~
1061+
9471062
9481063# # SUBSCRIBE_OK {#message-subscribe-ok}
9491064
@@ -1194,7 +1309,7 @@ GOAWAY Message {
11941309
11951310# Security Considerations {#security}
11961311
1197- TODO : Expand this section.
1312+ TODO : Expand this section, including subscriptions .
11981313
11991314# # Resource Exhaustion
12001315
0 commit comments