Bug 88187

Summary: Basic support for timestamps within a TextTrackCue
Product: WebKit Reporter: Victor Carbune <vcarbune>
Component: MediaAssignee: Victor Carbune <vcarbune>
Status: RESOLVED FIXED    
Severity: Normal CC: annacc, cdumez, cmarcelo, eric.carlson, feature-media-reviews, macpherson, menard, silviapf, webkit.review.bot
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on:    
Bug Blocks: 79347    
Attachments:
Description Flags
Preliminary patch
none
Corrected patch
none
Updated patch none

Victor Carbune
Reported 2012-06-03 04:28:20 PDT
WebVTT format support timestamps within the cue. There are multiple applications to this: Karaoke, Paint-on captions.
Attachments
Preliminary patch (21.69 KB, patch)
2012-06-03 04:37 PDT, Victor Carbune
no flags
Corrected patch (23.85 KB, patch)
2012-06-03 10:56 PDT, Victor Carbune
no flags
Updated patch (22.10 KB, patch)
2012-06-07 16:53 PDT, Victor Carbune
no flags
Victor Carbune
Comment 1 2012-06-03 04:30:48 PDT
Corrected blocking dependency, sorry.
Victor Carbune
Comment 2 2012-06-03 04:37:09 PDT
Created attachment 145481 [details] Preliminary patch
Victor Carbune
Comment 3 2012-06-03 10:56:36 PDT
Created attachment 145488 [details] Corrected patch
Victor Carbune
Comment 4 2012-06-03 10:59:02 PDT
Just realized that according to the spec, the ProcessingInstructions nodes must have the original timestamp, not the actual value (this seems to require to parse it each time, for now)
Eric Carlson
Comment 5 2012-06-05 20:57:18 PDT
Comment on attachment 145488 [details] Corrected patch View in context: https://bugs.webkit.org/attachment.cgi?id=145488&action=review > Source/WebCore/ChangeLog:5 > +2012-06-03 Victor Carbune <vcarbune@adobe.com> > + > + Need a short description and bug URL (OOPS!) > + > + Reviewed by NOBODY (OOPS!). Oops, > Source/WebCore/ChangeLog:36 > +2012-06-03 Victor Carbune <victor@rosedu.org> > + > + Basic support for timestamps within a TextTrackCue > + https://bugs.webkit.org/show_bug.cgi?id=88187 > + > + Implemented support for timestamps within a TextTrackCue. > + This enables rendering functionality for Karaoke and Paint-on captions. > + > + Reviewed by NOBODY (OOPS!). > + you have two ChangeLog entries. > Source/WebCore/css/mediaControls.css:237 > +video::-webkit-media-text-track-future-nodes { Do we display future nodes? > Source/WebCore/css/mediaControls.css:242 > + color: green; > + background-color: rgba(0, 0, 0, 0.8); If so, why are they green? > Source/WebCore/html/track/TextTrackCue.cpp:579 > + for (Node *child = referenceTree->firstChild(); child; child = child->nextSibling()) { > + if (child->nodeName() == timestampTag) { > + unsigned int position = 0; > + String timestamp = child->nodeValue(); > + > + double timestampTime = WebVTTParser::create(0, m_scriptExecutionContext)->collectTimeStamp(timestamp, &position); > + ASSERT(timestampTime != -1); > + > + if (timestampTime > movieTime) > + isPastNode = false; > + } Should you always set "isPastNode", or are timestamps guaranteed to be in ascending time order? > Source/WebCore/html/track/WebVTTParser.cpp:386 > - m_currentNode->parserAddChild(ProcessingInstruction::create(document, "timestamp", String(m_token.characters().data(), m_token.characters().size()))); > + m_currentNode->parserAddChild(ProcessingInstruction::create(document, "timestamp", String(m_token.characters().data(), m_token.characters().size()))); Is the only difference here an extra space? If so, it is unnecessary. > Source/WebCore/html/track/WebVTTParser.h:97 > + double collectTimeStamp(const String&, unsigned*); Because we are making this a public method, I think we should give it a better name, eg. something like "parseTimeStamp"?
Victor Carbune
Comment 6 2012-06-07 16:53:42 PDT
Created attachment 146418 [details] Updated patch
Victor Carbune
Comment 7 2012-06-07 16:58:24 PDT
(In reply to comment #5) > (From update of attachment 145488 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=145488&action=review > > > Source/WebCore/ChangeLog:5 > > +2012-06-03 Victor Carbune <vcarbune@adobe.com> > > + > > + Need a short description and bug URL (OOPS!) > > + > > + Reviewed by NOBODY (OOPS!). > > Oops, > > > Source/WebCore/ChangeLog:36 > > +2012-06-03 Victor Carbune <victor@rosedu.org> > > + > > + Basic support for timestamps within a TextTrackCue > > + https://bugs.webkit.org/show_bug.cgi?id=88187 > > + > > + Implemented support for timestamps within a TextTrackCue. > > + This enables rendering functionality for Karaoke and Paint-on captions. > > + > > + Reviewed by NOBODY (OOPS!). > > + > > you have two ChangeLog entries. Sorry, fixed. > > Source/WebCore/css/mediaControls.css:237 > > +video::-webkit-media-text-track-future-nodes { > > Do we display future nodes? They have visibility:none, so they are not visible, but are attached to the display tree and rendered there. > > Source/WebCore/css/mediaControls.css:242 > > + color: green; > > + background-color: rgba(0, 0, 0, 0.8); > > If so, why are they green? Oops, it was mostly for testing. Removed. > > Source/WebCore/html/track/TextTrackCue.cpp:579 > > + for (Node *child = referenceTree->firstChild(); child; child = child->nextSibling()) { > > + if (child->nodeName() == timestampTag) { > > + unsigned int position = 0; > > + String timestamp = child->nodeValue(); > > + > > + double timestampTime = WebVTTParser::create(0, m_scriptExecutionContext)->collectTimeStamp(timestamp, &position); > > + ASSERT(timestampTime != -1); > > + > > + if (timestampTime > movieTime) > > + isPastNode = false; > > + } > > Should you always set "isPastNode", or are timestamps guaranteed to be in ascending time order? Yes, timestamps are guaranteed to be in ascending time order in the spec. > > Source/WebCore/html/track/WebVTTParser.cpp:386 > > - m_currentNode->parserAddChild(ProcessingInstruction::create(document, "timestamp", String(m_token.characters().data(), m_token.characters().size()))); > > + m_currentNode->parserAddChild(ProcessingInstruction::create(document, "timestamp", String(m_token.characters().data(), m_token.characters().size()))); > > Is the only difference here an extra space? If so, it is unnecessary. Fixed. > > Source/WebCore/html/track/WebVTTParser.h:97 > > + double collectTimeStamp(const String&, unsigned*); > > Because we are making this a public method, I think we should give it a better name, eg. something like "parseTimeStamp"? I would suggest keeping it the same, mostly because "collect" is the term used in the specification (and by the other remaining private methods).
WebKit Review Bot
Comment 8 2012-06-09 10:01:59 PDT
Comment on attachment 146418 [details] Updated patch Clearing flags on attachment: 146418 Committed r119907: <http://trac.webkit.org/changeset/119907>
WebKit Review Bot
Comment 9 2012-06-09 10:02:05 PDT
All reviewed patches have been landed. Closing bug.
Chris Dumez
Comment 10 2012-06-10 00:10:39 PDT
The new test is failing on EFL port. The diff looks like: -Current time: 2.25 +Current time: 2.249999761581421 -Current time: 2.75 +Current time: 2.750000238418579 -Current time: 3.25 +Current time: 3.249999761581421 -Current time: 3.75 +Current time: 3.750000238418579 Looks like a rounding issue.
Chris Dumez
Comment 11 2012-06-10 00:20:23 PDT
The new test appears to be failing for GTK port as well. I opened Bug 88725 to track the issue.
Note You need to log in before you can comment on or make changes to this bug.