Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extend EncodedVideoChunkMetadata for Spatial SVC #654

Closed
wants to merge 12 commits into from
67 changes: 63 additions & 4 deletions index.src.html
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,15 @@

<pre class='biblio'>
{
"AV1-RTP": {
"title": "RTP Payload Format for AV1",
"href": "https://aomediacodec.github.io/av1-rtp-spec/",
"authors": [
"AV1 RTC SG"
],
"status": "Standard",
"publisher": "Alliance for Open Media"
},
"H.273": {
"href": "https://www.itu.int/rec/T-REC-H.273/en",
"title": "Coding-independent code points for video signal type identification",
Expand Down Expand Up @@ -128,6 +137,24 @@
:: A grouping of {{EncodedVideoChunk}}s whose timestamp cadence produces a
particular framerate. See {{VideoEncoderConfig/scalabilityMode}}.

: <dfn>Spatial Layer</dfn>
:: A grouping of {{EncodedVideoChunk}}s which produces a particular
resolution. See {{VideoEncoderConfig/scalabilityMode}}.

: <dfn>Chains</dfn>
:: A sequence of frames for which it can be determined instantly if a frame
from that sequence has been lost. Defined in Section A.5 of [[AV1-RTP]].

: <dfn>Frame Number</dfn>
:: A 16-bit number that increases monotonically in decode order. Defined in
Section A.8.3 of [[AV1-RTP]].

: <dfn>Decode Target</dfn>
:: A numerical index determined by the encoder that indicates the set of
frames needed to decode a sequence of {{EncodedVideoChunk}}s at a
given spatial and temporal fidelity. Values do not necessarily
correspond to a given [=Temporal Layer=] or [=Spatial Layer=].

: <dfn>Progressive Image</dfn>
:: An image that supports decoding to multiple levels of detail, with lower
levels becoming available while the encoded data is not yet fully buffered.
Expand Down Expand Up @@ -1639,11 +1666,20 @@
|svc|.{{SvcOutputMetadata/temporalLayerId}}.
4. Assign |svc| to
|chunkMetadata|.{{EncodedVideoChunkMetadata/svc}}.
8. If |encoderConfig|.{{VideoEncoderConfig/alpha}} is set to `"keep"`:
8. If |encoderConfig|.{{VideoEncoderConfig/scalabilityMode}}
describes more than one [=Spatial Layer=]:
1. Let |svc| be a new {{SvcOutputMetadata}} instance.
2. Let |spatial_layer_id| be the zero-based index describing the
spatial layer for |output|.
3. Assign |spatial_layer_id| to
|svc|.{{SvcOutputMetadata/spatialLayerId}}.
4. Assign |svc| to
|chunkMetadata|.{{EncodedVideoChunkMetadata/svc}}.
9. If |encoderConfig|.{{VideoEncoderConfig/alpha}} is set to `"keep"`:
1. Let |alphaSideData| be the encoded alpha data in |output|.
2. Assign |alphaSideData| to
|chunkMetadata|.{{EncodedVideoChunkMetadata/alphaSideData}}.
9. Invoke {{VideoEncoder/[[output callback]]}} with |chunk| and
10. Invoke {{VideoEncoder/[[output callback]]}} with |chunk| and
|chunkMetadata|.
</dd>
<dt><dfn>Reset VideoEncoder</dfn> (with |exception|)</dt>
Expand Down Expand Up @@ -1692,6 +1728,11 @@

dictionary SvcOutputMetadata {
unsigned long temporalLayerId;
unsigned long spatialLayerId;
unsigned long frameNumber;
sequence <unsigned long> dependencies;
sequence <unsigned long> decodeTargets;
record <USVString, unsigned long> chainLinks;
};
</xmp>

Expand All @@ -1708,9 +1749,27 @@
channel data.

: <dfn dict-member for=SvcOutputMetadata>temporalLayerId</dfn>
:: A number that identifies the [=temporal layer=] for the associated
:: A number that identifies the [=Temporal Layer=] for the associated
{{EncodedVideoChunk}}.


: <dfn dict-member for=SvcOutputMetadata>spatialLayerId</dfn>
:: A number that identifies the [=Spatial Layer=] for the associated
{{EncodedVideoChunk}}.

: <dfn dict-member for=SvcOutputMetadata>frameNumber</dfn>
:: A number that identifies the frame.

: <dfn dict-member for=SvcOutputMetadata>dependencies</dfn>
:: A sequence of frame number values that this {{EncodedVideoChunk}}
depends on.

: <dfn dict-member for=SvcOutputMetadata>decodeTargets</dfn>
:: A sequence of [=Decode Target=] values that this {{EncodedVideoChunk}}
participates in.

: <dfn dict-member for=SvcOutputMetadata>chainLinks</dfn>
:: A mapping of [=Decode Target=] values to the frame number of the
last important frame to decode prior to this {{EncodedVideoChunk}}.

Configurations{#configurations}
===============================
Expand Down