- From: Glenn Adams <glenn@skynav.com>
- Date: Fri, 18 Oct 2013 18:42:28 -0600
- To: Brendan Long <self@brendanlong.com>
- Cc: "HTML WG (public-html@w3.org)" <public-html@w3.org>
- Message-ID: <CACQ=j+eLxie2j+wW6Z=gGFC_c-x-rJj+BKoUwgcHTZYVNSn9MA@mail.gmail.com>
On Fri, Oct 18, 2013 at 6:14 PM, Glenn Adams <glenn@skynav.com> wrote: > > On Fri, Oct 18, 2013 at 3:48 PM, Brendan Long <self@brendanlong.com>wrote: > >> I'm looking at implementing the CableLabs "Exposing In-Band Media >> Container Tracks in HTML5<http://html5.cablelabs.com/tracks/media-container-mapping.html>" >> spec, and it seems to conflict with the idea behind DataCue*, so I'm >> wondering how people would feel about a cue with no .data attribute, and a >> getCueAsObject(), returning a JavaScript object. >> > > I don't see any conflict. And don't see any need for not having a data > attribute, or for having getCueAsObject(). > > >> >> The reason this would be helpful if that, at least in GStreamer, getting >> raw binary data is actually relatively difficult, and we easily have access >> to structured data. >> > > Really? I don't think so. Just use > > new DataCue(*start*, *end*, stringToUint16Array(*jsonText*)) > If it isn't obvious, I left the implementation of stringToUint16Array() as an exercise for the reader. > > > For example, we have GstMpegTsSection<http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-Base-MPEG-TS-sections.html>for MPEG-TS metadata and >> GstToc<http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstToc.html>for the table of contents (which converts nicely to WebVTT already). I >> assume other kinds of metadata will also be exposed this way, not as raw >> binary streams, like the spec seems to expect. >> >> With structured data, it would be nice if we could just throw it into a >> JSON object, like so: >> >> interface JSONCue : TextTrackCue <http://www.w3.org/html/wg/drafts/html/master/single-page.html#texttrackcue> { >> readonly attribute DOMString text <http://www.w3.org/html/wg/drafts/html/master/single-page.html#dom-datacue-text>; /* JSON */ >> readonly attribute object getCueAsObject(); /* JavaScript object */ >> }; >> >> You really don't need the syntactic sugar of adding a getCueAsObject() > method, but if you really want this method, e.g., to cache the object > decoded from JSON, then just add yourself: > > cue.getCueAsObject = function() { > if (!this.cachedObject) > this.cachedObject = JSON.parse(this.text); > return this.cachedObject; > } > > In this case, there really isn't much point in defining a new JSONCue > interface; just use DataCue. > > > >> The advantages are: >> >> - It's easier to do with GStreamer. >> >> No it isn't. There is no requirement to populate *data*. > Scratch that last sentence. > >> - It should be easier for JS developers to work with. >> >> Not particularly. See above. > > >> >> - At least in MPEG-TS, tracks aren't easily separated, so providing a >> metadata track without parsing it doesn't really make sense. This may not >> apply to other formats though. >> >> Of course you have to parse it. DataCue is not expected to contain a TS > byte stream, a stream of TS packets, a stream of TS sections, etc. > > Any implementation that uses DataCue should document the circumstances in > which it is constructed, what the binary data buffer contains, and how the > text field, if non null, represents that data. > > Implementations would normally used an internal type that effectively > represents a subclass of DataCue. But this doesn't mean there is a need to > export a JS version of that subclass when DataCue will do. > >> >> - >> >> The disadvantage is: >> >> - It may be harder to create in non-GStreamer media pipelines. >> >> My question is, does this make sense for other implementors, or is this >> only easier for GStreamer? We *could* rebuild the binary format from the >> structured data if we needed to, I just want to make sure we're not doing >> something unnecessarily complicated if providing structured data makes more >> sense for other media pipelines too. >> >> * I realize we could just use DataCue and put JSON in the text and data >> fields, but that doesn't seem to be what it was meant for, so I don't want >> to do that unless the concensus is that it's "the right thing to do". >> > > Why do you think it wasn't meant for this? That was what it was intended > to do. Again, implementations that populate a track with DataCue instances > should document how they are using DataCue in this regard. > > >
Received on Saturday, 19 October 2013 00:43:17 UTC