From 8ada05152b6ec35fa18e272fadd67cf74141a30a Mon Sep 17 00:00:00 2001 From: Bernard Aboba Date: Wed, 3 Jan 2024 22:12:02 -0800 Subject: [PATCH] Extend EncodedVideoChunkMetadata for Spatial Scalability Fixes https://github.com/w3c/webcodecs/issues/619 Rebase and update of PR https://github.com/w3c/webcodecs/pull/654 --- index.src.html | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/index.src.html b/index.src.html index 7a704560..8030f74b 100644 --- a/index.src.html +++ b/index.src.html @@ -133,6 +133,10 @@ :: A grouping of {{EncodedVideoChunk}}s whose timestamp cadence produces a particular framerate. See {{VideoEncoderConfig/scalabilityMode}}. +: Spatial Layer +:: A grouping of {{EncodedVideoChunk}}s which produces a particular + resolution. See {{VideoEncoderConfig/scalabilityMode}}. + : Progressive Image :: An image that supports decoding to multiple levels of detail, with lower levels becoming available while the encoded data is not yet fully buffered. @@ -1652,11 +1656,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 multiple [=spatial layers=]: + 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|.
Reset VideoEncoder (with |exception|)
@@ -1704,6 +1717,9 @@ dictionary SvcOutputMetadata { unsigned long temporalLayerId; + unsigned long spatialLayerId; + unsigned long long frameId; + sequence dependencies; }; @@ -1723,7 +1739,16 @@ :: A number that identifies the [=temporal layer=] for the associated {{EncodedVideoChunk}}. +: spatialLayerId +:: A number that identifies the [=spatial layer=] for the associated + {{EncodedVideoChunk}}. + +: frameId +:: A number that identifies the associated {{EncodedVideoChunk}}. +: dependencies +:: A sequence containing the {{frameId}} values that the associated {{EncodedVideoChunk}} depends on. + Configurations{#configurations} ===============================