[Bug 22117] Add a conformance section

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

--- Comment #6 from Cyril Concolato <cyril.concolato@telecom-paristech.fr> ---
I've searched for the MUST statements in the spec, and propose to change those
statements which do not have the UA as subject. I propose to rephrase as
follows:

In the "Coded Frame" definition:
Replace:
"If frames can be decoded out of order, then the decode timestamp must be
present in the byte stream."
With:
"If frames can be decoded out of order, then the decode timestamp are present
in the byte stream. The user agent must report a "decode" error if this is not
the case."

In the "Track Description" definition:
Replace:
"Each track description inside a single initialization segment must have a
unique Track ID."
With:
"Each track description inside a single initialization segment has a Track ID.
UA must report a "decode" error if the Track ID is not unique within the
initialization segment."

In "SourceBuffer Monitoring"
The following sentence uses MUST in a NOTE and for the media element. I suggest
keeping the sentence in the NOTE but using a SHOULD and rephrasing it from:
"When the media element needs more data, it must transition from
HAVE_ENOUGH_DATA to HAVE_FUTURE_DATA early enough for a web application to be
able to respond without causing an interruption in playback. "
to
"When the media element needs more data, the user agent SHOULD transition it
from HAVE_ENOUGH_DATA to HAVE_FUTURE_DATA early enough for a web application to
be able to respond without causing an interruption in playback. "

In "Source Buffer - Enumeration description" 
The following sentence uses MUST for a media segment. However, the first part
of the sentence is already covered in the coded frame processing algorithm. My
suggestion is:
Replace:
"Coded frames within a media segment must be adjacent in time, but media
segments can be appended in any order."
with
"Media segments can be appended in any order."

In "Prepare Append Algorithm":
The sentence uses MUST in a NOTE and the subject is a "web application". Since
the MSE spec is about defining conformant UA behavior and not conformant Web
apps, it should be rewritten from:
"The web application must use remove() to explicitly free up space and/or
reduce the size of the append."
to
"The web application SHOULD use remove() to explicitly free up space and/or
reduce the size of the append."

Similarly in "Stream Append Loop":
The sentences uses MUST in a NOTE for a web application. I suggest rephrasing
from:
"The web application must use remove() to free up space in the SourceBuffer."
to
"The web application SHOULD use remove() to free up space in the SourceBuffer."

Similarly in "Coded Frame Eviction Algorithm"
Rephrase:
"Implementations may use different methods for selecting removal ranges so web
applications must not depend on a specific behavior."
to:
"Implementations may use different methods for selecting removal ranges so web
applications do not depend on a specific behavior."

In section 12 "Byte Stream Formats", the subject of MUST statements is not the
UA but another "format". So, the MSE spec actually defines "conformant User
Agent" and "conformant Byte Stream Formats". See for instance the following
sentences which cannot easily be replaced:

"A byte stream format specification must define initialization segments and
media segments."
"It must be possible to identify segment boundaries and segment type
(initialization or media) by examining the byte stream alone."
"Byte stream specifications must at a minimum define constraints which ensure
that the above requirements hold."

I think this should be clarified in the introduction. I would suggest adding to
section "1.1 Goals" the following sentence (or similar):
"This specification defines:
- normative behavior for User Agents to enable interoperability between user
agents and web applications when processing media data;
- normative requirements to enable other specifications to define media formats
to be used with this specification".

The rest of section 12 can actually be rewritten into normative UA behavior, as
follows:
"The user agent MUST report a "decode" error when one of the following
conditions is met:
1. The number and type of tracks is not consistent across initialization
segments.
2. Track IDs are not the same across initialization segments, for segments
describing multiple tracks of a single type (e.g. 2 audio tracks).
3. Codecs changes across initialization segments.

The user agent MUST support: 
1. Track IDs change across initialization segments if the segments describes
only one track of each type.
2. Video frame size changes. The user agent MUST support seamless playback.
3. Audio channel count changes. The user agent MAY support seamless playback
and could trigger downmixing."

The paragraph and bullet points starting with:
"The following rules apply to all media segments within a byte stream: ..."
should be rephrased as:
"The following rules apply to all media segments within a byte stream. A user
agent MUST:
1. map all timestamps to the same media timeline.
2. support seamless playback of media segments having a timestamp gap smaller
than the audio frame size. User agent MUST not reflect these gaps in the
buffered attribute."

Additionally, that second bullet should actually be removed as the processing
of gap should be covered already in the coded frame processing algorithm. 

Note: I don't know how to rephrase the last bulleted paragraph starting with
"The combination of "

In section 12.2:
In this section, when a sentence indicates that a byte stream syntactical
element must have (resp. must not) have a specific feature, it should be
rewritten as "The user agent MUST report a "decode" error when encountering a
byte stream construct that does not (resp. does) have that feature.

"The tracks in the Movie Header Box must not contain any samples"
should be rephrased as:
"UA must report a "decode" error when parsing tracks in the Movie Header Box
that contain samples (i.e. when the entry_count in the stts, stsc and stco
boxes is set to zero"

" A Movie Extends (mvex) box must be contained in the Movie Header Box to
indicate that Movie Fragments are to be expected."
should be rephrased as:
"UA must report a decode error when a Movie Extends (mvex) box is not contained
in the Movie Header Box".

The following paragraph:
"The following rules apply to ISO BMFF media segments:
- The Movie Fragment Box must contain at least one Track Fragment Box (traf).
- The Movie Fragment Box must use movie-fragment relative addressing and the
flag default-base-is-moof must be set; absolute byte-offsets must not be used.
- External data references must not be used.
- If the Movie Fragment contains multiple tracks, the duration by which each
track extends should be as close to equal as practical.
- Each Track Fragment Box must contain a Track Fragment Decode Time Box (tfdt)
- The Media Data Boxes must contain all the samples referenced by the Track
Fragment Run Boxes (trun) of the Movie Fragment Box."
should be rephrased as:
"The following rules apply to ISO BMFF media segments. UA MUST report a
"decode" error when:
- The Movie Fragment Box does not contain at least one Track Fragment Box
(traf).
- The Movie Fragment Box does not use movie-fragment relative addressing or if
the flag default-base-is-moof is not set.
- External data references are used.
- A Track Fragment Box does not contain a Track Fragment Decode Time Box (tfdt)
- The Media Data Boxes do not contain all the samples referenced by the Track
Fragment Run Boxes (trun) of the Movie Fragment Box."

Similar changes should be done for the MPEG-2 TS and WebM part.

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

Received on Wednesday, 10 July 2013 12:50:31 UTC