[Bug 17673] Define Initialization Data for implementations that choose to support the ISO Base Media File Format

https://www.w3.org/Bugs/Public/show_bug.cgi?id=17673

--- Comment #11 from Steven Robertson <strobe@google.com> ---
As discussed, here is the proposed modified text for 7.2.3 Initialization Data
and Events. This text is intended to replace the first two paragraphs of that
section, and leave the remaining paragraphs intact.

For simplicity, it includes an explicit callout against 64-bit or "until-EOF"
size fields in initData boxes; the former is exceedingly unlikely, and the
latter would lead to undefined behavior. This change basically just removes
ambiguity, as does the language specifying how to go from 'moov' to 'initData'.

A more important change is the one indicating that the value of 'block
initData' in 5.1 is allowed to be defined by the CDM once it has been selected,
but the format must be the same as for normal start-of-stream 'initData'. This
enables CDMs to take advantage of the full, maddening open-endedness of CENC
should they so choose, without requiring any extra effort on the part of
authors, since all 'needkey' events will be handled in the same way. It also
solves a few particular issues around adaptive streaming and key rotation in
live streams that we've encountered.

--- Proposed text to replace the first two paragraphs of 7.2.3: ---

For ISO BMFF, the Initialization Data is in the form of concatenated BMFF
boxes. Such boxes (and any descendants) _must_ be correct according to the
specification which defines their structure in the stream, including the box
header defined in ISO/IEC 14496-12 section 4.2. Additionally, boxes with a
'size' value of 0 or 1 are forbidden.

The initData _shall_ begin with zero or more protection scheme information
boxes ('sinf'). Each 'sinf' includes zero or one scheme type box ('schm'),
which defines 'scheme_type', and zero or one scheme information box ('schi').

If a 'sinf' box contains a 'schm' box with a 'scheme_type' value of "cenc", the
'sinf' box will also contain one track encryption box ('tenc'), which provides
default values for 'IsEncrypted', 'IV_size', and 'KID' for that track.

Following the 'sinf' boxes, the initData _shall_ contain zero or more
protection-scheme-specific information boxes ('pssh'). If any 'sinf' box
indicates a 'scheme_type' of "cenc", at least one 'pssh' box _should_ be
present.

For the purposes of step 3 of section 5.2 of this specification, when no CDM is
selected, the User Agent _shall_ derive 'initData' from the 'moov' box of an
ISO BMFF stream as follows: for each 'moov' encountered, it _shall_ include, in
its entirety, every 'sinf' box that is an (indirect) descendant of a 'moov',
followed by every 'pssh' box that is a direct child of that 'moov'.

For the purposes of step 4 of section 5.1 of this specification, when no CDM is
selected, the User Agent _shall not_ consider a block to have 'block initData';
that value will remain null.

When a CDM has been selected, it _may_ provide its own mechanism for providing
a value for 'initData' in 5.2 step 3 and for 'block initData' in 5.1 step 4.
Such initData _must_ conform to the format described above ('sinf' boxes, then
'pssh' boxes).

---

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Sunday, 27 January 2013 21:58:40 UTC