- From: Silvia Pfeiffer <silviapfeiffer1@gmail.com>
- Date: Tue, 30 Apr 2013 10:03:25 +1000
- To: Simon Pieters <simonp@opera.com>
- Cc: Glenn Adams <glenn@skynav.com>, Pierre-Anthony Lemieux <pal@sandflow.com>, Bob Lund <B.Lund@cablelabs.com>, "Jerry Smith (WINDOWS)" <jdsmith@microsoft.com>, "Mark Vickers @ Comcast" <mark_vickers@cable.comcast.com>, public-html <public-html@w3.org>
- Message-ID: <CAHp8n2msjydrbNUB2+UueH6tYmnT8widChf58Mb1+VJ3xD+WMA@mail.gmail.com>
On Mon, Apr 29, 2013 at 6:42 PM, Simon Pieters <simonp@opera.com> wrote: > On Mon, 29 Apr 2013 10:25:35 +0200, Glenn Adams <glenn@skynav.com> wrote: > > Similarly, if it is useful to construct cues for a specific format in JS, >>> it should define a constructor like WebVTTCue() does for WebVTT. >>> >>> >> It is not clear to me that it is particularly important to expose a >> constructor for cues of any particular type. As currently defined, it is >> not the client JS that creates cue instances, but the internal >> implementation of a text track decoder. >> > > For WebVTT, the WebVTTCue() constructor is for client JS, not for the > internal implementation. If a format does not need client JS to be able to > construct cues, then a JS-exposed constructor is not necessary. > > > From what I can tell, a constructor was exposed only to provide a means to >>> >> programmatically construct a text track via JS, >> > > Yes. > > > but this seems an odd >> corner case. >> > > I believe there were use cases for this (probably mostly for the metadata > kind, though). There is also an accessibility requirement to be able to render caption cues anywhere else on a Web page, for which we need to be able to expose captions and subtitles to JS developers. Silvia. By analogy, it is sort of like providing a FrameList on video and audio >> tracks, and then allowing the application to construct Frame objects. As >> we >> know, this is not necessary to play back video or audio streams, and it >> doesn't seem particularly needed to playback (render or expose) text track >> streams. >> >> >> >>> That said, I don't object to moving back .text and .getCueAsHTML() if it >>> is shown that most or all formats need them. As far as I can tell, it has >>> so far been shown that most formats need .text but not .getCueAsHTML(). >>> >> >> >> I do expect that, at least for TTML streams, a specific mapping to HTML >> fragments is quite feasible. Indeed, it is a work item underway in the >> TTWG >> to define such a mapping, and a very early straw man draft was published a >> while back at [1]. >> > > I agree it is feasible for TTML. > > [1] http://www.cwmwenallt.com/**ttml/TTMLmapping.htm<http://www.cwmwenallt.com/ttml/TTMLmapping.htm> >> > > > Having a property available but not return something useful is bad for >>> feature checking in JS. For instance, if a UA supports TTML but does not >>> support serializing TTML cues to HTML, it would be nice to be able to >>> check >>> for that with e.g.: >>> >>> var supported = 'getCueAsHTML' in TTMLCue.prototype; >>> >> >> >> Tying this functionality to a cue constructor seems odd, particularly as I >> point out above that many (most) cue instances will be constructed >> internally using not necessarily exposed constructors, i.e., a cue object >> will simply be accessible in a text track cue list without knowing >> anything >> more about it other than the metadata exposed on the track object (e.g., >> track kind, language, and so on). >> > > I don't understand what is odd about it. That most cues are not > script-created doesn't mean that a particular design intended for > script-created cues is odd. That's like saying that > document.createElement() is odd because most elements are created by the > HTML parser. > > > > It is quite unusual for methods that usually return a value to return >>> undefined (more common to return null). In any case, returning null or >>> the >>> empty string makes it ambiguous whether the feature is unavailable or >>> whether the cue is empty, which is bad. >>> >> >> >> I agree that returning 'undefined' is not as good as returning 'null'. For >> example, Node.nodeValue [2] dereferences a value that depends upon the >> "context object", and returns null when there is no suitable defined >> value. >> >> [2] http://www.w3.org/TR/domcore/#**dom-node-nodevalue<http://www.w3.org/TR/domcore/#dom-node-nodevalue> >> > > > -- > Simon Pieters > Opera Software >
Received on Tuesday, 30 April 2013 00:04:12 UTC