TimedText/TTML2ImplementationReport
TTML2 Implementation Report
This document represents the Implementation Report of the Timed Text Markup Language 2 (TTML2) Specification. The intent of this report is to document Implementation Experience as related to TTML2, a mandatory process step in order to advance TTML2 to Proposed Recommendation.
Specifically, this report demonstrates that the CR Exit Criteria have been met, copied here for convenience:
- For this specification to exit CR, the following criteria must be met, as documented in the Working Group's implementation report. For each feature introduced in this specification:
- At least two independent implementations must support the feature. If both transformation semantics and presentation semantics are defined for the feature, then at least one implementation must be a transformation processor and at least one implementation must be a presentation processor;
- At least one of those implementations must be a validating processor that successfully verifies valid or invalid use of the feature as applicable.
The following information summarizes the results of reported testing and implementation of TTML2 functionality in eight implementations from five different organizations.
Validation Test Results
This section presents the results of performing validation processing against specific test content of two types:
- Valid Content Tests - tests validator ability to recognize valid content
- Invalid Content Tests - tests validator ability to recognize invalid content
Valid Content Tests
Table 1 represents the reported results of performing TTML2 validation processing on valid TTML2 content. These tests verify that a validation processor recognizes valid content.
Each row of this table reports on implementation test results for a specific test, where the columns are
- Test name, linked to the test file in the ttml2-tests repository.
- The TTV implementation results. TTV is a transforming validator/verifier, the results of which indicate the validity and/or invalidity of TTML2 content.
- The NFLX-V implementation results. NFLX-V is a transforming validator/verifier, the results of which indicate the validity and/or invalidity of TTML2 content.
- The ttval implementation results. ttval is a transforming validator/verifier, the results of which indicate the validity and/or invalidity of TTML2 content.
- The subcheck implementation results. subcheck is a transforming validator/verifier, the results of which indicate the validity and/or invalidity of TTML2 content.
Designations used in implementation columns are as follows:
- (P) - Designates the implementation passed the test.
- (F) - Designates the implementation failed the test.
- (blank) - Designates that pass/fail data is not available for the test.
A pass (P) designation for a given test means the implementation does not report a false negative result, which is to say, the implementation does not report a negative (invalid content) result. A fail (F) designation for a given test means the implementation reports a negative result, which is to say, it fails to recognize valid content as being valid, but instead reports it as invalid.
Invalid Content Tests
Table 2 represents the reported results of performing TTML2 validation processing on invalid TTML2 content. These tests verify that a validation processor recognizes and reports invalid content.
The rows and columns of this table follow the same format (and semantics) employed with Table 1 above, except that here, the tests contain content that is invalid in some manner.
A pass (P) designation for a given test means the implementation does not report a false positive result, which is to say, the implementation reports a negative (invalid content) result. A fail (F) designation for a given test means the implementation does not report a negative result, which is to say, it fails to recognize invalid content as being invalid, but instead reports it as valid.
Presentation Test Results
This section presents the results of performing presentation processing against specific test content.
Table 3 represents the reported results of performing TTML2 presentation processing on TTML2 content. These tests verify that a presentation processor produces a presentation output that is considered (by the reporter) to be within the range of variation allowed by the TTML2 specification.
Each row of this table reports on implementation test results for a specific test, where the columns are
- Test name, linked to the test file in the ttml2-tests repository.
- The TTPE implementation results. TTPE implements a TTML2 presentation processor, producing output as timed images (of either SVG or PNG format).
- The imscJS implementation results. imscJS implements a TTML2 presentation processor, producing output as HTML/CSS/Javascript then rendered by a suitable HTML browser.
- The adhere implementation results. adhere implements a TTML2 presentation processor with a focus on audio related features.
Designations used in implementation columns are as follows:
- (P) - Designates the reporter considers that the implementation passed the test.
- (F) - Designates the reporter considers that the implementation failed the test.
- (blank) - Designates that pass/fail data is not available for the test.
Aggregate Feature Implementation Results
Table 4 represents an aggregate report of the implementation of features (as denoted by feature designators) in TTML2. Each row of this table reports on implementations of a specific feature, where the columns are
- Section number of TTML2 specification that defines feature.
- Feature designator, linked to TTML2 section noted in 1st column.
- The TTV implementation results. TTV is a transforming validator/verifier, the results of which indicate the validity and/or invalidity of TTML2 content. TTV is counted as both a validation processor and a transformation processor.
- The TTX implementation results. TTX transforms TTML2 source content into TTML2 ISD content. TTX is counted as a transformation processor.
- The TTPE implementation results. TTPE implements a TTML2 presentation processor, producing output as timed images (of either SVG or PNG format). TTPE is counted as a presentation processor.
- The NFLX-V implementation results. NFLX-V is a transforming validator/verifier, the results of which indicate the validity and/or invalidity of TTML2 content. NFLX-V is counted as both a validation processor and a transformation processor.
- The ttval implementation results. ttval is a transforming validator/verifier, the results of which indicate the validity and/or invalidity of TTML2 content. ttval is counted as both a validation processor and a transformation processor.
- The imscJS implementation results. imscJS implements a TTML2 presentation processor, producing output as HTML/CSS/Javascript then rendered by a suitable HTML browser. imscJS is counted as a presentation processor.
- The subcheck implementation results. subcheck is a transforming validator/verifier, the results of which indicate the validity and/or invalidity of TTML2 content. subcheck is counted as both a validation processor and a transformation processor.
- The adhere implementation results. adhere implements a TTML2 presentation processor with a focus on audio related features. adhere is counted as a presentation processor.
- #V counts the number of implementations that provide validation processing functionality.
- #X counts the number of implementations that provide transformation processing functionality.
- #P counts the number of implementations that provide presentation processing functionality.
- #T is the sum of the previous three columns (#V, #X, #P). [Note: in some rows, this sum is greater than the number of implementation columns since some implementations are counted as having both validation and transformation processing functionality.]
- CR Exit Criteria Passed? is the test against the CR Exit Criteria, i.e. that there is at least one F and one X in two independent implementations and at least one of those provides validation.
Designations used in implementation columns are as follows:
- (F) - In columns describing validation processors, F designates full, which means the implementation is reported to pass all validation tests (for that feature) of both valid and invalid sub-types.
- (S) - In columns describing validation processors, S designates strict, which means the implementation is reported to pass all validation tests (for that feature) of the valid (but not necessarily the invalid) sub-type.
- (X) - In columns describing transformation or presentation processors, X designates the implementer has reported that feature as implemented.
- (P) - In columns describing transformation or presentation processors, P designates the implementer has reported that feature as partially implemented.
Organisation | Skynav | Netflix | Sandflow | IRT/BaseX | BBC | Totals | CR Exit Criteria Passed? | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Section | Feature | TTV | TTX | TTPE | NFLX-V | ttval | imscJS | subcheck | adhere | #V | #X | #P | #T | |
E.1.1 | #animate | F | X | X | S | F | 2 | 4 | 1 | 7 | Yes | |||
E.1.2 | #animate-minimal | F | X | X | F | F | X | 3 | 4 | 2 | 9 | Yes | ||
E.1.3 | #animate-fill | F | X | X | F | F | S | 4 | 5 | 1 | 10 | Yes | ||
E.1.4 | #animate-paced | F | X | X | F | F | 3 | 4 | 1 | 8 | Yes | |||
E.1.5 | #animate-repeat | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.6 | #animate-spline | F | X | X | F | F | 3 | 4 | 1 | 8 | Yes | |||
E.1.8 | #animation-out-of-line | F | X | X | S | F | 2 | 4 | 1 | 7 | Yes | |||
E.1.9 | #animation-version-2 | F | X | X | S | F | 2 | 4 | 1 | 7 | Yes | |||
E.1.10 | #audio | F | X | P | S | S | X | 1 | 4 | 1 | 6 | Yes | ||
E.1.11 | #audio-description | F | X | P | S | S | X | 1 | 4 | 1 | 6 | Yes | ||
E.1.12 | #audio-speech | F | X | P | S | S | X | 1 | 4 | 1 | 6 | Yes | ||
E.1.13 | #background | F | X | X | S | F | P | S | 2 | 5 | 1 | 8 | Yes | |
E.1.14 | #background-image | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.15 | #backgroundClip | F | X | X | S | F | F | 3 | 5 | 1 | 9 | Yes | ||
E.1.20 | #backgroundExtent | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.21 | #backgroundImage | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.22 | #backgroundOrigin | F | X | X | S | F | F | 3 | 5 | 1 | 9 | Yes | ||
E.1.23 | #backgroundPosition | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.24 | #backgroundRepeat | F | X | X | S | F | F | 3 | 5 | 1 | 9 | Yes | ||
E.1.26 | #base-general | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.27 | #base-version-2 | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.29 | #bidi-version-2 | F | X | X | F | F | P | F | 4 | 5 | 1 | 10 | Yes | |
E.1.30 | #border | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.31 | #border-block | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.32 | #border-inline | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.33 | #border-radii | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.34 | #border-radii-1 | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.35 | #border-radii-2 | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.36 | #border-region | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.37 | #bpd | F | X | X | F | F | S | 3 | 5 | 1 | 9 | Yes | ||
E.1.39 | #chunk | F | X | X | F | F | S | P | 3 | 5 | 1 | 9 | Yes | |
E.1.45 | #condition | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.46 | #condition-fn-media | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.47 | #condition-fn-parameter | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.48 | #condition-fn-supports | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.49 | #condition-primary | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.51 | #content-sizing | F | X | X | F | F | S | 3 | 5 | 1 | 9 | Yes | ||
E.1.52 | #contentProfiles | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.53 | #contentProfiles-combined | F | X | X | S | F | F | 3 | 5 | 1 | 9 | Yes | ||
E.1.55 | #data | F | X | X | S | F | S | P | 2 | 5 | 1 | 8 | Yes | |
E.1.57 | #disparity | F | X | P | F | X | F | 3 | 4 | 1 | 8 | Yes | ||
E.1.61 | #display-inlineBlock | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.63 | #display-version-2 | F | X | X | F | F | P | S | 3 | 5 | 1 | 9 | Yes | |
E.1.65 | #displayAlign-block | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.66 | #displayAlign-justify | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.69 | #displayAlign-version-2 | F | X | X | F | F | P | F | 4 | 5 | 1 | 10 | Yes | |
E.1.70 | #displayAspectRatio | F | X | X | F | F | X | F | 4 | 5 | 2 | 11 | Yes | |
E.1.75 | #embedded-audio | F | X | X | S | F | S | P | 2 | 5 | 1 | 8 | Yes | |
E.1.76 | #embedded-content | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.77 | #embedded-data | F | X | X | S | F | S | P | 2 | 5 | 1 | 8 | Yes | |
E.1.78 | #embedded-font | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.79 | #embedded-image | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.82 | #extent-auto-version-2 | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.83 | #extent-contain | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.84 | #extent-cover | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.85 | #extent-full-version-2 | F | X | X | S | F | P | S | 2 | 5 | 1 | 8 | Yes | |
E.1.86 | #extent-image | F | X | X | F | F | P | F | 4 | 5 | 1 | 10 | Yes | |
E.1.88 | #extent-length-version-2 | F | X | X | F | F | X | F | 4 | 5 | 2 | 11 | Yes | |
E.1.89 | #extent-measure | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.91 | #extent-region-version-2 | F | X | X | F | F | P | F | 4 | 5 | 1 | 10 | Yes | |
E.1.93 | #extent-root-version-2 | F | X | X | F | F | P | F | 4 | 5 | 1 | 10 | Yes | |
E.1.94 | #extent-version-2 | F | X | X | F | F | P | F | 4 | 5 | 1 | 10 | Yes | |
E.1.95 | #font | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.99 | #fontKerning | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.100 | #fontSelectionStrategy | F | X | X | S | F | F | 3 | 5 | 1 | 9 | Yes | ||
E.1.101 | #fontSelectionStrategy-character | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.102 | #fontShear | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.109 | #fontVariant | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.114 | #gain | F | X | P | S | S | X | 1 | 4 | 1 | 6 | Yes | ||
E.1.115 | #image | F | X | X | S | F | P | S | 2 | 5 | 1 | 8 | Yes | |
E.1.116 | #image-png | F | X | X | S | F | X | S | 2 | 5 | 2 | 9 | Yes | |
E.1.117 | #initial | F | X | X | F | X | F | 3 | 4 | 2 | 9 | Yes | ||
E.1.118 | #ipd | F | X | X | F | F | S | 3 | 5 | 1 | 9 | Yes | ||
E.1.129 | #length-root-container-relative | F | X | X | S | F | X | S | 2 | 5 | 2 | 9 | Yes | |
E.1.130 | #length-version-2 | F | X | X | S | F | X | S | 2 | 5 | 2 | 9 | Yes | |
E.1.131 | #letterSpacing | F | X | X | F | F | S | 3 | 5 | 1 | 9 | Yes | ||
E.1.134 | #lineShear | F | X | X | F | F | S | 3 | 5 | 1 | 9 | Yes | ||
E.1.135 | #luminanceGain | F | X | P | S | X | F | 2 | 4 | 1 | 7 | Yes | ||
E.1.140 | #metadata-item | F | X | X | S | X | F | 2 | 4 | 2 | 8 | Yes | ||
E.1.141 | #metadata-version-2 | F | X | X | S | X | F | 2 | 4 | 2 | 8 | Yes | ||
E.1.145 | #opacity-block | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.146 | #opacity-inline | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.148 | #opacity-version-2 | F | X | X | F | F | P | F | 4 | 5 | 1 | 10 | Yes | |
E.1.157 | #padding-block | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.158 | #padding-inline | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.160 | #padding-version-2 | F | X | X | S | F | P | S | 2 | 5 | 1 | 8 | Yes | |
E.1.161 | #pan | F | X | P | S | S | X | 1 | 4 | 1 | 6 | Yes | ||
E.1.162 | #permitFeatureNarrowing | F | X | X | S | F | F | 3 | 5 | 1 | 9 | Yes | ||
E.1.163 | #permitFeatureWidening | F | X | X | S | F | F | 3 | 5 | 1 | 9 | Yes | ||
E.1.164 | #pitch | F | X | P | S | S | X | 1 | 4 | 1 | 6 | Yes | ||
E.1.166 | #position | F | X | X | F | F | X | F | 4 | 5 | 2 | 11 | Yes | |
E.1.168 | #presentation-version-2 | F | X | X | S | F | P | S | 2 | 5 | 1 | 8 | Yes | |
E.1.169 | #processorProfiles | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.170 | #processorProfiles-combined | F | X | X | S | F | F | 3 | 5 | 1 | 9 | Yes | ||
E.1.172 | #profile-full-version-2 | F | X | X | S | F | P | S | 2 | 5 | 1 | 8 | Yes | |
E.1.173 | #profile-nesting | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.174 | #profile-version-2 | F | X | X | S | F | P | S | 2 | 5 | 1 | 8 | Yes | |
E.1.175 | #region-implied-animation | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.176 | #region-inline | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.178 | #resources | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.179 | #ruby | F | X | X | F | X | F | 3 | 4 | 2 | 9 | Yes | ||
E.1.180 | #ruby-full | F | X | X | F | P | F | 3 | 4 | 1 | 8 | Yes | ||
E.1.181 | #rubyAlign | F | X | X | F | P | F | 3 | 4 | 1 | 8 | Yes | ||
E.1.182 | #rubyAlign-minimal | F | X | X | F | P | F | 3 | 4 | 1 | 8 | Yes | ||
E.1.183 | #rubyAlign-withBase | F | X | X | F | F | 3 | 4 | 1 | 8 | Yes | |||
E.1.184 | #rubyPosition | F | X | X | F | X | F | 3 | 4 | 2 | 9 | Yes | ||
E.1.185 | #rubyReserve | F | X | X | S | X | F | 2 | 4 | 2 | 8 | Yes | ||
E.1.187 | #set-fill | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.188 | #set-multiple-styles | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.189 | #set-repeat | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes | ||
E.1.190 | #shear | F | X | X | F | F | X | S | 3 | 5 | 2 | 10 | Yes | |
E.1.192 | #source | F | X | X | S | F | S | P | 2 | 5 | 1 | 8 | Yes | |
E.1.193 | #speak | F | X | P | S | F | X | 2 | 4 | 1 | 7 | Yes | ||
E.1.194 | #speech | F | X | P | F | F | F | X | 4 | 5 | 1 | 10 | Yes | |
E.1.206 | #textAlign-justify | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.208 | #textAlign-version-2 | F | X | X | F | F | P | F | 4 | 5 | 1 | 10 | Yes | |
E.1.209 | #textCombine | F | X | X | F | X | F | 3 | 4 | 2 | 9 | Yes | ||
E.1.214 | #textEmphasis | F | X | X | F | F | P | S | 3 | 5 | 1 | 9 | Yes | |
E.1.215 | #textEmphasis-color | F | X | X | F | F | S | 3 | 5 | 1 | 9 | Yes | ||
E.1.216 | #textEmphasis-minimal | F | X | X | F | F | X | S | 3 | 5 | 2 | 10 | Yes | |
E.1.217 | #textEmphasis-quoted-string | F | X | X | F | F | S | 3 | 5 | 1 | 9 | Yes | ||
E.1.218 | #textOrientation | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.222 | #textShadow | F | X | X | S | F | P | S | 2 | 5 | 1 | 8 | Yes | |
E.1.233 | #time-wall-clock | F | X | X | F | S | 2 | 4 | 1 | 7 | Yes | |||
E.1.236 | #transformation-version-2 | F | X | X | S | F | P | S | 2 | 5 | 1 | 8 | Yes | |
E.1.238 | #unicodeBidi-isolate | F | X | X | F | F | F | 4 | 5 | 1 | 10 | Yes | ||
E.1.239 | #unicodeBidi-version-2 | F | X | X | F | F | P | F | 4 | 5 | 1 | 10 | Yes | |
E.1.240 | #validation | F | X | X | S | F | F | 3 | 5 | 1 | 9 | Yes | ||
E.1.243 | #visibility-image | F | X | X | F | F | X | F | 4 | 5 | 2 | 11 | Yes | |
E.1.246 | #visibility-version-2 | F | X | X | F | F | P | F | 4 | 5 | 1 | 10 | Yes | |
E.1.253 | #xlink | F | X | X | S | F | S | 2 | 5 | 1 | 8 | Yes |