Skip to content

Commit

Permalink
Update registries to use W3C Registry Track (#524)
Browse files Browse the repository at this point in the history
* Update registries to use W3C Registry Track

* Registry edits

- Use lower-case "must" to avoid ReSpec warnings
- Use ED document type, as DRY is applied when publishing to /TR

* Update regsitry entries

- Remove custom JavaScript
- Use latest ReSpec script
- Add Conformance sections
- Update links to term definitions
- Export definitions from the EME spec:
  - Decryption key ID
  - Initialization Data Encountered
  - Encrypted Block Encountered

* Move export definitions
  • Loading branch information
chrisn authored Mar 19, 2024
1 parent 0bc7d34 commit 9e44ebd
Show file tree
Hide file tree
Showing 8 changed files with 141 additions and 333 deletions.
8 changes: 4 additions & 4 deletions encrypted-media-respec.html
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ <h2>Definitions</h2>
<p class="note">For example, a key is not usable for decryption if its license has expired. Even if its license has not expired, a key is not usable for decryption if other conditions (e.g., output protection) for its use are not currently satisfied.</p>
</dd>

<dt id="decryption-key-id">Key ID</dt>
<dt id="decryption-key-id"><dfn class="export" data-lt="Decryption key ID">Key ID</dfn></dt>
<dd>
<p>A <a href="#decryption-key">key</a> is associated with a key ID that is a sequence of octets and which uniquely identifies the key.
The container specifies the ID of the key that can decrypt a block or set of blocks within the <a def-id="media-data"></a>.
Expand Down Expand Up @@ -332,7 +332,7 @@ <h2>Definitions</h2>

<p>
The format of the initialization data depends upon the type of container, and containers MAY support more than one format
of initialization data. The <dfn id="initialization-data-type">Initialization Data Type</dfn> is a string that indicates the
of initialization data. The <dfn class="export" id="initialization-data-type">Initialization Data Type</dfn> is a string that indicates the
format of the accompanying Initialization Data. Initialization Data Type strings are always matched case-sensitively. It is
RECOMMENDED that Initialization Data Type strings are lower-case ASCII strings.
</p>
Expand Down Expand Up @@ -3027,7 +3027,7 @@ <h4>Media Data May Contain Encrypted Blocks</h4>
</section>

<section id="initdata-encountered">
<h4>Initialization Data Encountered</h4>
<h4><dfn class="export">Initialization Data Encountered</dfn></h4>
<p>
The Initialization Data Encountered algorithm queues an <a def-id="encrypted"></a> event for <a def-id="initialization-data"></a> encounterd in the <a def-id="media-data"></a>.
Requests to run this algorithm include a target <a def-id="htmlmediaelement"></a> object.
Expand Down Expand Up @@ -3061,7 +3061,7 @@ <h4>Initialization Data Encountered</h4>
</section>

<section id="encrypted-block-encountered">
<h4>Encrypted Block Encountered</h4>
<h4><dfn class="export">Encrypted Block Encountered</dfn></h4>
<p>
The Encrypted Block Encountered algorithm queues a block of encrypted media data for decryption and attempts to decrypt if possible.
Requests to run this algorithm include a target <a def-id="htmlmediaelement"></a> object.
Expand Down
69 changes: 20 additions & 49 deletions format-registry/initdata/cenc-respec.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>"cenc" Initialization Data Format</title>
<script src="https://www.w3.org/Tools/respec/respec-w3c-common" class="remove"></script>
<script src="../../encrypted-media.js" class="remove"></script>
<script src="https://www.w3.org/Tools/respec/respec-w3c" class="remove"></script>
<script class="remove">
var respecConfig = {
// specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
Expand All @@ -16,11 +15,6 @@
// if there a publicly available Editor's Draft, this is the link
edDraftURI: "https://w3c.github.io/encrypted-media/format-registry/initdata/cenc.html",

// if this is a LCWD, uncomment and set the end of its review period
// lcEnd: "2009-08-05",

// editors, add as many as you like
// only "name" is required
editors: [
{ name: "Joey Parrish", w3cid: "105371",
company: "Google Inc.", companyURL: "https://www.google.com/" },
Expand All @@ -39,21 +33,8 @@
company: "Microsoft Corporation", companyURL: "https://www.microsoft.com/" },
],

otherLinks: [
{ key: "Repository", href: "https://github.com/w3c/encrypted-media/" },
],

emeDefGroupName: "cenc-format",
emeUnusedGroupNameExcludeList: [
"encrypted-media",
"eme-references-from-registry",
],

// name of the WG
wg: "Media Working Group",

// URI of the public WG page
wgURI: "https://www.w3.org/media-wg/",
group: "media",
github: "w3c/encrypted-media",

// name (without the @w3c.org) of the public mailing to which comments are due
wgPublicList: "public-media-wg",
Expand All @@ -65,22 +46,6 @@
// Team Contact.
wgPatentURI: "https://www.w3.org/2004/01/pp-impl/115198/status",

noIDLIn: true,

scheme: "https",

// Empty definitions for objects declared in the document are here to
// prevent error messages from being displayed for references to these objects.
definitionMap: {},

preProcess: [ encryptedMediaPreProcessor ],

// Empty definitions for objects declared in the document are here to
// prevent error messages from being displayed for references to these objects.
definitionMap: {},

postProcess: [ encryptedMediaPostProcessor ],

localBiblio: {
"CENC": {
title: "ISO/IEC 23001-7:2016, Information technology — MPEG systems technologies — Part 7: Common encryption in ISO base media file format files",
Expand All @@ -89,6 +54,8 @@
publisher: "ISO/IEC",
},
},

xref: ["encrypted-media"]
};
</script>
<!-- script to register bugs -->
Expand All @@ -102,33 +69,34 @@
<body>
<!-- TODO: Use styles for ISO boxes like the MSE registry. -->
<section id="abstract">
<p>This specification defines the <code>"cenc"</code> <a def-id="initialization-data"></a> format for use with the <a def-id="eme-spec"></a> [[!ENCRYPTED-MEDIA]].
This format is commonly used with the <a def-id="stream-registry-mp4"></a> [[EME-STREAM-REGISTRY]].
<p>This specification defines the <code>"cenc"</code> [=initialization data=] format for use with the [[[ENCRYPTED-MEDIA]]] [[ENCRYPTED-MEDIA]].
This format is commonly used with the [[[EME-STREAM-MP4]]] [[EME-STREAM-REGISTRY]].
</p>
<p>This specification also defines a common SystemID and PSSH box format for use with Encrypted Media Extensions.</p>
<p class="note">This format's <a def-id="initialization-data-type"></a> string <code>"cenc"</code> refers to the [[CENC]] spec that defines the PSSH boxes that comprise the format.
<p class="note">This format's [=initialization data type=] string <code>"cenc"</code> refers to the [[CENC]] spec that defines the PSSH boxes that comprise the format.
It does not relate to or imply a stream format, including the use of the 'cenc' protection scheme.
Stream formats are indicated by the content types as defined in <a def-id="stream-registry"></a> [[EME-STREAM-REGISTRY]].
Stream formats are indicated by the content types as defined in the [[[EME-STREAM-REGISTRY]]] [[EME-STREAM-REGISTRY]].
</p>
</section>

<section id="sotd">
</section>

<section id="format">
<h2>Format</h2>
<p>The format is one or more concatenated Protection System Specific Header ('pssh') boxes [[!CENC]], each for a unique SystemID.
<p>The format is one or more concatenated Protection System Specific Header ('pssh') boxes [[CENC]], each for a unique SystemID.
One of the concatenated 'pssh' boxes SHOULD use the <a href="#common-system">Common SystemID and PSSH Box Format</a>.
</p>

<p class="note">[[!CENC]] also specifies storage of a 'pssh' box base64-encoded in an XML element of the form <code>&lt;cenc:pssh (base64 'pssh')&gt;</code>.
<p class="note">[[CENC]] also specifies storage of a 'pssh' box base64-encoded in an XML element of the form <code>&lt;cenc:pssh (base64 'pssh')&gt;</code>.
For example, [[MPEGDASH]] manifests may provide 'pssh' boxes in this format, each contained in a ContentProtection Descriptor element identified by a SystemID.
These 'pssh' boxes may be decoded and concatenated by an application to provide equivalent Initialization Data to that stored in movie or movie fragment boxes.
</p>
</section>

<section id="processing">
<h2>Processing</h2>
<p>When such Initialization Data is provided by the application, an implementation (the user agent and/or CDM) MUST :</p>
<p>When such Initialization Data is provided by the application, an implementation (the user agent and/or CDM) MUST:</p>
<ol>
<li><p>Examine the series of 'pssh' boxes to find the <em>first</em> 'pssh' box that the CDM instance supports. This includes checking the SystemID, box version, and system-specific values.</p></li>
<li><p>If no such supported box is found, the provided data SHALL be considered "not supported by the CDM."</p></li>
Expand All @@ -137,7 +105,7 @@ <h2>Processing</h2>

<section id="clear-key">
<h3>Use with Clear Key</h3>
<p>When Initialization data is provided with <var>initDataType</var> <code>"cenc"</code>, <a def-id="clear-key"></a> implementations MUST look for and use the PSSH box with the <a href="#common-system">Common SystemID</a>.</p>
<p>When Initialization data is provided with <var>initDataType</var> <code>"cenc"</code>, <a data-cite="encrypted-media#clear-key">Clear Key</a> implementations MUST look for and use the PSSH box with the <a href="#common-system">Common SystemID</a>.</p>
</section>

<section id="common-system">
Expand All @@ -149,19 +117,19 @@ <h2>Common SystemID and PSSH Box Format</h2>
Use of this SystemID is RECOMMENDED for applications, packagers, and implementors.
Use of other SystemIDs with the Encrypted Media Extensions APIs is discouraged.
'pssh' box(es) for this SystemID SHOULD be included in all new or repackaged content so that the content can be used with any compliant Key System.
For existing content, applications may alternatively obtain a 'pssh' box containing this SystemID or another Initialization Data Type (e.g., <a def-id="initdata-registry-keyids"></a> [[EME-STREAM-REGISTRY]]) from another source.
For existing content, applications may alternatively obtain a 'pssh' box containing this SystemID or another Initialization Data Type (e.g., [[[EME-INITDATA-KEYIDS]]] [[EME-STREAM-REGISTRY]]) from another source.
</p>
<p class="note">Implementations MAY support other SystemIDs for backwards compatibility with existing streams.</p>

<section id="common-system-definition">
<h3>Definition</h3>
<p>The SystemID is <code>1077efec-c0b2-4d02-ace3-3c1e52e2fb4b</code>.</p>
<p>The PSSH box format is as follows. It follows version 1 of the 'pssh' box as defined in [[!CENC]].</p>
<p>The PSSH box format is as follows. It follows version 1 of the 'pssh' box as defined in [[CENC]].</p>
<dl>
<dt>version</dt>
<dd><code>1</code></dd>
<dt>KID and KID_count</dt>
<dd>The <a def-id="key-id"></a>(s) represented by the PSSH box. For example, those key ID(s) used by the Movie ('moov') or Movie Fragment ('moof').</dd>
<dd>The [=Decryption key ID|key ID=](s) represented by the PSSH box. For example, those key ID(s) used by the Movie ('moov') or Movie Fragment ('moof').</dd>
<dt>Data and DataSize</dt>
<dd>Reserved for future use. DataSize SHALL be set to <code>0</code> when constructing this box. When processing, if dataSize is non-zero the Data field SHALL be ignored.</dd>
</dl>
Expand All @@ -184,6 +152,9 @@ <h2>Example</h2>
];
</pre>
</section>
</section>

<section id="conformance">
</section>
</body>
</html>
73 changes: 23 additions & 50 deletions format-registry/initdata/index-respec.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Encrypted Media Extensions Initialization Data Format Registry</title>
<script src="https://www.w3.org/Tools/respec/respec-w3c-common" class="remove"></script>
<script src="../../encrypted-media.js" class="remove"></script>
<script src="https://www.w3.org/Tools/respec/respec-w3c" class="remove"></script>
<script class="remove">
var respecConfig = {
// specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
Expand All @@ -16,11 +15,6 @@
// if there a publicly available Editor's Draft, this is the link
edDraftURI: "https://w3c.github.io/encrypted-media/format-registry/initdata/",

// if this is a LCWD, uncomment and set the end of its review period
// lcEnd: "2009-08-05",

// editors, add as many as you like
// only "name" is required
editors: [
{ name: "Joey Parrish", w3cid: "105371",
company: "Google Inc.", companyURL: "https://www.google.com/" },
Expand All @@ -39,21 +33,8 @@
company: "Microsoft Corporation", companyURL: "https://www.microsoft.com/" },
],

otherLinks: [
{ key: "Repository", href: "https://github.com/w3c/encrypted-media/" },
],

emeDefGroupName: "format-registry",
emeUnusedGroupNameExcludeList: [
"encrypted-media",
"eme-references-from-registry",
],

// name of the WG
wg: "Media Working Group",

// URI of the public WG page
wgURI: "https://www.w3.org/media-wg/",
group: "media",
github: "w3c/encrypted-media",

// name (without the @w3c.org) of the public mailing to which comments are due
wgPublicList: "public-media-wg",
Expand All @@ -65,21 +46,7 @@
// Team Contact.
wgPatentURI: "https://www.w3.org/2004/01/pp-impl/115198/status",

noIDLIn: true,

scheme: "https",

// Empty definitions for objects declared in the document are here to
// prevent error messages from being displayed for references to these objects.
definitionMap: {},

preProcess: [ encryptedMediaPreProcessor ],

// Empty definitions for objects declared in the document are here to
// prevent error messages from being displayed for references to these objects.
definitionMap: {},

postProcess: [ encryptedMediaPostProcessor ],
xref: ["html", "encrypted-media"]
};
</script>
<!-- script to register bugs -->
Expand All @@ -100,11 +67,12 @@
<body>

<section id="abstract">
<p>This specification defines the <a def-id="initialization-data"></a> formats for use with the <a def-id="eme-spec"></a> [[!ENCRYPTED-MEDIA]].</p>
<p>This specification defines the [=initialization data=] formats for use with the [[[ENCRYPTED-MEDIA]]] [[ENCRYPTED-MEDIA]].</p>

<p>Some formats may be extracted from <a def-id="media-data"></a> [[HTML5]] as defined in the <a def-id="stream-registry"></a> [[EME-STREAM-REGISTRY]].
<p>Some formats may be extracted from [=HTMLMediaElement/media data=] as defined in the [[[EME-STREAM-REGISTRY]]] [[EME-STREAM-REGISTRY]].
All may be provided separately, such as via a manifest or other application data.
</p>
<p>This registry is non-normative.</p>
</section>

<section id="sotd">
Expand All @@ -113,15 +81,15 @@
<section id="purpose">
<h2>Purpose</h2>
<p>This registry is intended to enhance interoperability among implementations and users of encrypted media streams with the
<a def-id="eme-spec"></a> (EME) specification [[!ENCRYPTED-MEDIA]]. In particular, this registry provides the means (1) to identify
[[[ENCRYPTED-MEDIA]]] (EME) specification [[ENCRYPTED-MEDIA]]. In particular, this registry provides the means (1) to identify
and avoid collisions among initialization data type strings, and (2) to disclose information about initialization data formats accepted by EME
implementations to promote interoperability.
</section>

<section id="organization">
<h2>Organization</h2>
<p>The registry maintains a mapping between <a def-id="initialization-data-type"></a> strings and format specifications, which describe the structure and semantics of initialization data.
The strings are those used for <code>initDataType</code> values provided by and to <a def-id="eme-spec"></a> [[!ENCRYPTED-MEDIA]] APIs.
<p>The registry maintains a mapping between [=initialization data type=] strings and format specifications, which describe the structure and semantics of initialization data.
The strings are those used for <code>initDataType</code> values provided by and to [[[ENCRYPTED-MEDIA]]] [[ENCRYPTED-MEDIA]] APIs.
</p>
<p>This registry is not intended to include any information on whether a format is encumbered by intellectual property claims. Implementors and users
are advised to seek appropriate legal counsel in this matter if they intend to implement or use a specific format.</p>
Expand All @@ -130,18 +98,23 @@ <h2>Organization</h2>
<section id="entry-requirements">
<h2>Registration Entry Requirements</h2>
<ol>
<li><p>Each entry must include a unique <a def-id="initialization-data-type"></a> string.</p></li>
<li><p>Each entry must include a unique [=initialization data type=] string.</p></li>
<li>
<p>Each entry must include a link that references a publicly available specification.
It is RECOMMENDED that such a specification be made available without cost (other than reasonable shipping and handling if not available by online means).
It is recommended that such a specification be made available without cost (other than reasonable shipping and handling if not available by online means).
</p>
</li>
<li>
<p>Candidate entries must be announced on <a href="mailto:[email protected]">[email protected]</a>(<a href="mailto:[email protected]">subscribe</a>,
<a href="https://lists.w3.org/Archives/Public/public-media-wg/">archives</a>) so they can be discussed and evaluated for compliance before being added to the registry.
<p>Candidate entries must be announced by filing an issue in the
<a href="https://github.com/w3c/encrypted-media/issues/">Encrypted Media Extensions GitHub issue tracker</a>
so they can be discussed and evaluated for compliance before being added to
the registry.
</p>
</li>
<li><p>Per the <a def-id="eme-spec"></a> specification, entries MUST be fully specified and support common formats such that instances of the format can be processed in a fully specified and compatible way.</p></li>
<li><p>Per the [[[ENCRYPTED-MEDIA]]] specification, entries must be fully specified and support common formats such that instances of the format can be processed in a fully specified and compatible way.</p></li>
<li>
<p>Existing entries cannot be deleted or deprecated.</p>
</li>
</ol>
</section>

Expand All @@ -159,19 +132,19 @@ <h2>Registry</h2>
<td>
cenc
</td>
<td><a def-id='initdata-registry-cenc'></a> [[!EME-INITDATA-CENC]]</td>
<td>[[[EME-INITDATA-CENC]]] [[EME-INITDATA-CENC]]</td>
</tr>
<tr>
<td>
keyids
</td>
<td><a def-id="initdata-registry-keyids"></a> [[!EME-INITDATA-KEYIDS]]</td>
<td>[[[EME-INITDATA-KEYIDS]]] [[EME-INITDATA-KEYIDS]]</td>
</tr>
<tr>
<td>
webm
</td>
<td><a def-id="initdata-registry-webm"></a> [[!EME-INITDATA-WEBM]]</td>
<td>[[[EME-INITDATA-WEBM]]] [[EME-INITDATA-WEBM]]</td>
</tr>
</tbody>
</table>
Expand Down
Loading

0 comments on commit 9e44ebd

Please sign in to comment.