Skip to content
  • eric.carlson@apple.com's avatar
    Support non-WebVTT cues from in-band text tracks · 6a82ee2a
    eric.carlson@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=107046
    
    Reviewed by Sam Weinig.
    
    * CMakeLists.txt: Add new files.
    * GNUmakefile.list.am: Ditto.
    * Target.pri: Ditto.
    * WebCore.gypi: Ditto.
    * WebCore.vcproj/WebCore.vcproj: Ditto.
    * WebCore.xcodeproj/project.pbxproj: Ditto.
    
    * html/shadow/MediaControlElements.cpp:
    (WebCore::MediaControlTextTrackContainerElement::updateDisplay): Pass video size to getDisplayTree.
    
    * html/track/InbandTextTrack.cpp:
    (WebCore::InbandTextTrack::addGenericCue): New, create a generic cue if it doesn't already exist.
    (WebCore::InbandTextTrack::addWebVTTCue): Renamed from addCue.
    * html/track/InbandTextTrack.h:
    
    * html/track/TextTrack.cpp:
    (WebCore::TextTrack::hasCue): Moved from InbandTextTrack.cpp, use operator == instead of inline
        comparison so derived TextTrackCues can be compared.
    * html/track/TextTrack.h:
    
    * html/track/TextTrackCue.cpp:
    (WebCore::TextTrackCueBox::applyCSSProperties): Interface change.
    (WebCore::TextTrackCue::TextTrackCue): Don't create the display tree in the constructor, it may
        never be needed.
    (WebCore::TextTrackCue::createDisplayTree): New, create the display tree.
    (WebCore::TextTrackCue::displayTreeInternal): Display tree accessor, allows it to be created lazily.
    (WebCore::TextTrackCue::setAlign): Alignment -> CueAlignment.
    (WebCore::TextTrackCue::setIsActive): Use displayTreeInternal().
    (WebCore::TextTrackCue::getDisplayTree): Use displayTreeInternal(), pass video size to applyCSSProperties.
    (WebCore::TextTrackCue::removeDisplayTree): Use displayTreeInternal().
    (WebCore::TextTrackCue::operator==): New.
    * html/track/TextTrackCue.h:
    (WebCore::TextTrackCue::getAlignment): Alignment -> CueAlignment.
    (WebCore::TextTrackCue::operator!=): New.
    (WebCore::TextTrackCue::cueType): New, cue type identified needed by operator==.
    (WebCore::TextTrackCue::ownerDocument): New.
    
    * html/track/TextTrackCueGeneric.cpp: Added.
    (WebCore::TextTrackCueGenericBox::create):
    (WebCore::TextTrackCueGenericBox::TextTrackCueGenericBox):
    (WebCore::TextTrackCueGenericBox::applyCSSProperties):
    (WebCore:::TextTrackCue):
    (WebCore::TextTrackCueGeneric::createDisplayTree):
    (WebCore::TextTrackCueGeneric::operator==):
    * html/track/TextTrackCueGeneric.h: Added.
    (WebCore::TextTrackCueGeneric::create):
    (WebCore::TextTrackCueGeneric::~TextTrackCueGeneric):
    (WebCore::TextTrackCueGeneric::baseFontSizeRelativeToVideoHeight):
    (WebCore::TextTrackCueGeneric::setBaseFontSizeRelativeToVideoHeight):
    (WebCore::TextTrackCueGeneric::fontSizeMultiplier):
    (WebCore::TextTrackCueGeneric::setFontSizeMultiplier):
    (WebCore::TextTrackCueGeneric::fontName):
    (WebCore::TextTrackCueGeneric::setFontName):
    (WebCore::TextTrackCueGeneric::operator!=):
    (WebCore::TextTrackCueGeneric::cueType):
    
    * platform/graphics/InbandTextTrackPrivateClient.h:
    * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
    (WebCore::InbandTextTrackPrivateAVF::processCueAttributes): Copy cue attributes into GenericCueData
        struct instead of trying to convert to WebVTT settings string. Process font size,font base
        size, font name, and vertical layout attributes,
    (WebCore::InbandTextTrackPrivateAVF::processCue): Create separate cues for each attributed
        string in the array because each one can be at a different screen location.
    (WebCore::InbandTextTrackPrivateAVF::resetCueValues):
    * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h:
    (InbandTextTrackPrivateAVF):
    
    * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
    (WebCore::MediaPlayerPrivateAVFoundation::seekCompleted): Reset any partially accumulated cues
        delivered since the seek was started.
    (WebCore::MediaPlayerPrivateAVFoundation::addGenericCue): Renamed from flushCurrentCue.
    * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
    
    * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
    (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): Whitespace cleanup.
    (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem): Ditto.
    (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): Tell legible output to deliver cues
        without any additional styling needed by the internal renderer.
    (WebCore::MediaPlayerPrivateAVFoundationObjC::processTextTracks):
    (WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTrack): Do nothing if asked to change
        to the track that is already current.
    (-[WebCoreAVFMovieObserver legibleOutput:didOutputAttributedStrings:nativeSampleBuffers:forItemTime:]):
        Check to make sure that the client callback isn't NULL.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@140359 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    6a82ee2a