Skip to content

Commit

Permalink
Initial commit of audio streaming. WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
pthatcherg committed Apr 2, 2019
1 parent 3352f78 commit 0db26f6
Showing 1 changed file with 84 additions and 0 deletions.
84 changes: 84 additions & 0 deletions index.bs
Expand Up @@ -1215,6 +1215,79 @@ implementation of this step is specific to the user agent.", the controlling
user agent may send the remote-playback-termination-request message.


Media Streaming Protocol {#media-streaming-protocol}
====================================================

The section defines the use of the Open Screen Protocol for streaming
media from one agent to another. We refer to the agent sending media
as the *sender* and the agent receiving the media as the *receiver*.

Capabilities {#media-streaming-capabilities}
--------------------------------------------


Requests {#media-streaming-requests}
------------------------------------


Audio {#media-streaming-audio}
------------------------------

Senders may send audio to receivers by sending audio-frame messages
(see [[#appendix-a]]) with the following keys and values. An audio
frame represents a set of encoded audio samples for a range of time.
A set of audio frames that share a codec, codec parameters and a
timeline form an audio encoding. A set of audio encodings that share
a timeline form an audio stream.

Unlike most Open Screen Protocol messages, this one uses an
array-based grouping rather than a struct-based grouping. For
required fields, this allows for a more efficient use of bytes on the
wire, which is important for streaming audio because the payload is
typically so small and every byte of overhead is relatively large. In
order to accomodate optional values in the array-based grouping, one
optional field in the array is used to hold all optional values in a
struct-based grouping. This will hopefully provide a good balance of
efficiency and flexibility.

To further increase efficiency, each audio-frame message must be sent
in a separate QUIC stream without the length prefix. It must only use
the type key prefix and then the encoded CBOR message immediately
after. Separate QUIC streams also allow audio frames to be received
out of order.

: encoding-id
:: Identifies the media encoding to which this audio frame belongs.

: start-time
::

: duration
::

: system-time
::

: payload
::

Video {#media-streaming-audio}
------------------------------

Text and Data {#media-streaming-data}
------------------------------------


Feedback {#media-streaming-feedback}
------------------------------------


Stats {#media-streaming-stats}
------------------------------




Security and Privacy {#security-privacy}
====================

Expand Down Expand Up @@ -1965,4 +2038,15 @@ text-track-state = {
6 : mode ; text-track-mode
}

; type key 22
audio-frame = [
encoding-id: uint
start-time: uint
payload: bytes
? optional: {
? 0: uint ; duration
? 1: media-time ; system-time
}
]

</pre>

0 comments on commit 0db26f6

Please sign in to comment.