Skip to content

Commit aeb7f5a

Browse files
committed
SP
1 parent 530e9cf commit aeb7f5a

1 file changed

Lines changed: 12 additions & 12 deletions

File tree

draft-lcurley-moq-transfork.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,11 @@ A Group is always an ordered set of bytes, although it may be served via a QUIC
6565
This simplification is able to support all of the documented use-cases; see the Appendix.
6666

6767
## Prioritization
68-
Prioritization is important for low-latency, ensuring the publisher sends the most important media first during congetsion.
68+
Prioritization is important for low-latency, ensuring the publisher sends the most important media first during congestion.
6969

70-
MoqTransport uses producer choosen priorities via send order.
70+
MoqTransport uses producer chosen priorities via send order.
7171
As the original proponent of this approach, I'm ashamed to admit that I was wrong.
72-
Reality is more naunced; both the subscriber and publisher need to work together.
72+
Reality is more nuanced; both the subscriber and publisher need to work together.
7373

7474
MoqTransfork instead delegates the priority decision for the last mile to the subscriber.
7575
This is done via a `Track Priority` and `Group Order` field within `SUBSCRIBE`.
@@ -214,7 +214,7 @@ Streams may only be created by the indicated role, otherwise the session MUST be
214214
The Session stream contains all messages that are session level.
215215

216216
The client MUST open a single Session Stream immediately after establishing the QUIC/WebTransport session.
217-
The client sneds a SESSION_CLIENT message and the server replies with a SESSION_SERVER message.
217+
The client sends a SESSION_CLIENT message and the server replies with a SESSION_SERVER message.
218218

219219
Afterwards, both endpoints MAY send SESSION_INFO messages containing information about the session.
220220
The endpoint SHOULD send an updated SESSION_INFO message, such as after a significant change in the session bitrate.
@@ -578,7 +578,7 @@ This truncates the Group and a subscriber can issue a FETCH if it wants to resum
578578
### Layers
579579
An advanced application can subdivide a GoP into layers.
580580

581-
The most comprehesive way to do this is with Scalable Video Coding (SVC).
581+
The most comprehensive way to do this is with Scalable Video Coding (SVC).
582582
There is a base layer and one or more enhancement layers that depend on lower layers.
583583
For example, a 4K stream could be broken into 4K, 1080p, and 360p (base) layers.
584584
However, SVC has limited support and is complex to encode.
@@ -590,7 +590,7 @@ This is effectively a custom SVC scheme, however it's limited to time (can't cha
590590

591591
The purpose of these layers is to support degrading the quality of the broadcast.
592592
A subscriber could limit bandwidth usage by choose to only receive the base layer or a subset of the enhancements layers.
593-
During congestion, the base layer can be priortizied while the enhancement layers can be deprioritized/dropped.
593+
During congestion, the base layer can be prioritized while the enhancement layers can be deprioritized/dropped.
594594
However, the cost is a small increase in bitrate (10%) as limiting potential references can only hurt the compression ratio.
595595

596596
When using MoqTransfork, each layer is delivered as a separate Track.
@@ -612,7 +612,7 @@ You can configure the encoder to produce non-reference frames but the result is
612612
But the main problem is the complexity introduced into the transport, as each frame must be transmitted as an individual QUIC stream based on a dependency graph that is not available to relays, and difficult for both broadcasters and viewers to parse.
613613

614614
The ability to drop individual non-reference frames in the middle of a group is an explicit non-goal for MoqTransfork.
615-
An alternative is to put them into a seperate layer, such that the tail of the layer could be dropped.
615+
An alternative is to put them into a separate layer, such that the tail of the layer could be dropped.
616616

617617

618618
## Audio
@@ -690,8 +690,8 @@ However, this only applies to the first hop and won't be applicable when relays
690690
## Latency
691691
One explicit goal of MoqTransfork is to support multiple latency targets.
692692

693-
This is accomplished by using the same Tracks and Group for all viewers, but sliiightly changing the behavior based on the subscription.
694-
This is driven by the subscriber, allowing them to choose the tradeoff between latency and reliability.
693+
This is accomplished by using the same Tracks and Group for all viewers, but slightly changing the behavior based on the subscription.
694+
This is driven by the subscriber, allowing them to choose the trade-off between latency and reliability.
695695
This may be done on the fly via SUBSCRIBE_UPDATE, for example if a high-latency viewer wishes to join the stage and suddenly needs real-time latency.
696696

697697
The below examples assume one audio and one video track.
@@ -702,7 +702,7 @@ Real-time latency is accomplished by prioritizing the most important media durin
702702

703703
This is slightly different from other media protocols which instead opt to drop packets.
704704
The end result is similar, but prioritization means utilizing all available bandwidth as determined by the congestion controller.
705-
A subscriber or publisher can reset groups to avoid wasiting bandwidth on old data.
705+
A subscriber or publisher can reset groups to avoid wasting bandwidth on old data.
706706

707707
A real-time viewer could issue:
708708

@@ -791,7 +791,7 @@ A DVR player does the same thing but can automatically support joining the live
791791
It's perfectly valid to specify a `end` in the future and it will behave like reliable live viewer once it reaches the live playhead.
792792

793793
Alternatively, a DVR player could prefetch the live playhead by issuing a parallel SUBSCRIBE at a lower priority.
794-
This would allow playback to immediately continue after clicking the "Go Live" button, cancelling or deprioritizing the VOD subscription.
794+
This would allow playback to immediately continue after clicking the "Go Live" button, canceling or deprioritizing the VOD subscription.
795795

796796
~~~
797797
SUBSCRIBE track=video priority=0 order=ASC start=123 end=134
@@ -886,7 +886,7 @@ SUBSCRIBE track=1080p priority=1 order=DESC
886886
SUBSCRIBE track=4k priority=2 order=DESC
887887
~~~
888888

889-
During congestion, the 4k enhancement layer will be deprioritized followed by the 1080p ehancement layer.
889+
During congestion, the 4k enhancement layer will be deprioritized followed by the 1080p enhancement layer.
890890
This is a more efficient use of bandwidth than ABR, but it requires more complex encoding.
891891

892892

0 commit comments

Comments
 (0)