Changeset 142334 in webkit
- Timestamp:
- Feb 8, 2013 5:32:16 PM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r142333 r142334 1 2013-02-08 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] In-band closed caption tracks are not always initialized correctly 4 https://bugs.webkit.org/show_bug.cgi?id=109323 5 6 Reviewed by Dean Jackson. 7 8 No new tests, this fix makes existing tests less flakey. 9 10 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: 11 (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem): Create and configure legible output 12 here instad of in tracksChanged. 13 (WebCore::MediaPlayerPrivateAVFoundationObjC::setClosedCaptionsVisible): Do nothing in a build with 14 in-band track support. 15 (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): Move legible output creation to 16 createAVPlayerItem, don't set look at track media type to see if the movie has captions 17 when we have support for in-band captions. 18 1 19 2013-02-08 Dean Jackson <dino@apple.com> 2 20 -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
r142327 r142334 438 438 [m_avPlayer.get() replaceCurrentItemWithPlayerItem:m_avPlayerItem.get()]; 439 439 440 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) 441 const NSTimeInterval legibleOutputAdvanceInterval = 2; 442 443 m_legibleOutput = adoptNS([[AVPlayerItemLegibleOutput alloc] initWithMediaSubtypesForNativeRepresentation:[NSArray array]]); 444 [m_legibleOutput.get() setSuppressesPlayerRendering:YES]; 445 446 // We enabled automatic media selection because we want alternate audio tracks to be enabled/disabled automatically, 447 // but set the selected legible track to nil so text tracks will not be automatically configured. 448 [m_avPlayerItem.get() selectMediaOption:nil inMediaSelectionGroup:[m_avAsset.get() mediaSelectionGroupForMediaCharacteristic:AVMediaCharacteristicLegible]]; 449 450 [m_legibleOutput.get() setDelegate:m_objcObserver.get() queue:dispatch_get_main_queue()]; 451 [m_legibleOutput.get() setAdvanceIntervalForDelegateInvocation:legibleOutputAdvanceInterval]; 452 [m_legibleOutput.get() setTextStylingResolution:AVPlayerItemLegibleOutputTextStylingResolutionSourceAndRulesOnly]; 453 [m_avPlayerItem.get() addOutput:m_legibleOutput.get()]; 454 #endif 455 440 456 setDelayCallbacks(false); 441 457 } … … 596 612 return; 597 613 614 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) 615 UNUSED_PARAM(closedCaptionsVisible); 616 #else 598 617 LOG(Media, "MediaPlayerPrivateAVFoundationObjC::setClosedCaptionsVisible(%p) - setting to %s", this, boolString(closedCaptionsVisible)); 599 618 [m_avPlayer.get() setClosedCaptionDisplayEnabled:closedCaptionsVisible]; 619 #endif 600 620 } 601 621 … … 905 925 return; 906 926 907 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)908 const NSTimeInterval legibleOutputAdvanceInterval = 2;909 910 if (m_avPlayerItem && !m_legibleOutput) {911 m_legibleOutput = adoptNS([[AVPlayerItemLegibleOutput alloc] initWithMediaSubtypesForNativeRepresentation:[NSArray array]]);912 [m_legibleOutput.get() setSuppressesPlayerRendering:YES];913 914 // We enabled automatic media selection because we want alternate audio tracks to be enabled/disabled automatically,915 // but set the selected legible track to nil so text tracks will not be automatically configured.916 [m_avPlayerItem.get() selectMediaOption:nil inMediaSelectionGroup:[m_avAsset.get() mediaSelectionGroupForMediaCharacteristic:AVMediaCharacteristicLegible]];917 918 [m_legibleOutput.get() setDelegate:m_objcObserver.get() queue:dispatch_get_main_queue()];919 [m_legibleOutput.get() setAdvanceIntervalForDelegateInvocation:legibleOutputAdvanceInterval];920 [m_legibleOutput.get() setTextStylingResolution:AVPlayerItemLegibleOutputTextStylingResolutionSourceAndRulesOnly];921 [m_avPlayerItem.get() addOutput:m_legibleOutput.get()];922 }923 #endif924 925 927 bool hasCaptions = false; 926 928 … … 932 934 setHasVideo([[m_avAsset.get() tracksWithMediaCharacteristic:AVMediaCharacteristicVisual] count]); 933 935 setHasAudio([[m_avAsset.get() tracksWithMediaCharacteristic:AVMediaCharacteristicAudible] count]); 936 #if !HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) 934 937 hasCaptions = [[m_avAsset.get() tracksWithMediaType:AVMediaTypeClosedCaption] count]; 938 #endif 935 939 } else { 936 940 bool hasVideo = false; … … 944 948 else if ([[assetTrack mediaType] isEqualToString:AVMediaTypeAudio]) 945 949 hasAudio = true; 950 #if !HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) 946 951 else if ([[assetTrack mediaType] isEqualToString:AVMediaTypeClosedCaption]) 947 952 hasCaptions = true; 953 #endif 948 954 } 949 955 } … … 953 959 954 960 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) 955 if (!hasCaptions ) {961 if (!hasCaptions && m_legibleOutput) { 956 962 AVMediaSelectionGroupType *legibleGroup = [m_avAsset.get() mediaSelectionGroupForMediaCharacteristic:AVMediaCharacteristicLegible]; 957 963 hasCaptions = [[AVMediaSelectionGroup playableMediaSelectionOptionsFromArray:[legibleGroup options]] count];
Note: See TracChangeset
for help on using the changeset viewer.