Changeset 149741 in webkit
- Timestamp:
- May 8, 2013 9:06:34 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r149740 r149741 1 2013-05-08 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] Inband text tracks are not in track menu on Lion 4 https://bugs.webkit.org/show_bug.cgi?id=115740 5 6 Reviewed by Dean Jackson. 7 8 * platform/mac-lion/media/video-controls-captions-trackmenu-localized-expected.txt: 9 1 10 2013-05-08 Sergio Villar Senin <svillar@igalia.com> 2 11 -
trunk/LayoutTests/platform/mac-lion/media/video-controls-captions-trackmenu-localized-expected.txt
r149526 r149741 15 15 16 16 Third item in captions menu should be labelled 'English CC' 17 EXPECTED (item.textContent == 'English CC') , OBSERVED 'Laugh Track (English-United States)' FAIL17 EXPECTED (item.textContent == 'English CC') OK 18 18 19 19 Fourth item in captions menu should be labelled 'Laugh Track (English-United States)' 20 EXPECTED (item.textContent == 'Laugh Track (English-United States)') , OBSERVED 'Unknown SDH' FAIL20 EXPECTED (item.textContent == 'Laugh Track (English-United States)') OK 21 21 22 22 Fifth item in captions menu should be labelled 'Unknown SDH' 23 TypeError: 'undefined' is not an object (evaluating 'item.textContent') 23 EXPECTED (item.textContent == 'Unknown SDH') OK 24 24 END OF TEST 25 25 -
trunk/Source/WTF/ChangeLog
r149739 r149741 1 2013-05-08 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] Inband text tracks are not in track menu on Lion 4 https://bugs.webkit.org/show_bug.cgi?id=115740 5 6 Reviewed by Dean Jackson. 7 8 * wtf/Platform.h: AVFOUNDATION_TEXT_TRACK_SUPPORT -> AVFOUNDATION_MEDIA_SELECTION_GROUP 9 1 10 2013-05-08 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> 2 11 -
trunk/Source/WTF/wtf/Platform.h
r149509 r149741 957 957 958 958 #if PLATFORM(MAC) && !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 959 #define HAVE_AVFOUNDATION_ TEXT_TRACK_SUPPORT1959 #define HAVE_AVFOUNDATION_MEDIA_SELECTION_GROUP 1 960 960 #endif 961 961 -
trunk/Source/WebCore/ChangeLog
r149740 r149741 1 2013-05-08 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] Inband text tracks are not in track menu on Lion 4 https://bugs.webkit.org/show_bug.cgi?id=115740 5 6 Reviewed by Dean Jackson. 7 8 No new tests, covered by existing tests. 9 10 * html/HTMLMediaElement.cpp: 11 (WebCore::HTMLMediaElement::HTMLMediaElement): Remove m_legacyWebKitClosedCaptionsVisible. 12 (WebCore::HTMLMediaElement::setClosedCaptionsVisible): Set m_closedCaptionsVisible 13 to false immediately, it will be reset to the appropriate value if necessary. 14 (WebCore::HTMLMediaElement::setWebkitClosedCaptionsVisible): Remove m_legacyWebKitClosedCaptionsVisible. 15 (WebCore::HTMLMediaElement::webkitClosedCaptionsVisible): Remove m_legacyWebKitClosedCaptionsVisible. 16 * html/HTMLMediaElement.h: 17 18 * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp: Remove 19 HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) requirement. AVFOUNDATION_TEXT_TRACK_SUPPORT -> 20 AVFOUNDATION_MEDIA_SELECTION_GROUP 21 * platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h: Ditto. 22 23 * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: 24 (WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation): Ditto. 25 (WebCore::MediaPlayerPrivateAVFoundation::seek): Ditto. 26 (WebCore::MediaPlayerPrivateAVFoundation::seekCompleted): Ditto. 27 (WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification): Ditto. 28 (WebCore::MediaPlayerPrivateAVFoundation::trackModeChanged): Ditto. 29 * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h: Ditto. 30 31 * platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.h: Ditto. 32 * platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm: 33 (WebCore::InbandTextTrackPrivateLegacyAVFObjC::kind): Don't look at media characteristics, 34 a legacy CC track is always Captions. 35 (WebCore::InbandTextTrackPrivateLegacyAVFObjC::isClosedCaptions): Ditto. 36 (WebCore::InbandTextTrackPrivateLegacyAVFObjC::containsOnlyForcedSubtitles): Ditto. 37 (WebCore::InbandTextTrackPrivateLegacyAVFObjC::isMainProgramContent): Ditto. 38 (WebCore::InbandTextTrackPrivateLegacyAVFObjC::isEasyToRead): Ditto. 39 (WebCore::InbandTextTrackPrivateLegacyAVFObjC::label): Use different AVFoundation API on 10.7. 40 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: 41 42 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: 43 (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): AVFOUNDATION_TEXT_TRACK_SUPPORT -> 44 AVFOUNDATION_MEDIA_SELECTION_GROUP. 45 (WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad): Ditto. 46 (WebCore::MediaPlayerPrivateAVFoundationObjC::setClosedCaptionsVisible): Do nothing. AVFOUNDATION_TEXT_TRACK_SUPPORT -> 47 AVFOUNDATION_MEDIA_SELECTION_GROUP. 48 (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): Support legacy CC tracks 49 only on 10.8. AVFOUNDATION_TEXT_TRACK_SUPPORT -> AVFOUNDATION_MEDIA_SELECTION_GROUP 50 (WebCore::MediaPlayerPrivateAVFoundationObjC::processLegacyClosedCaptionsTracks): Ditto. 51 (WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTrack): Ditto. 52 (WebCore::MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack): AVFOUNDATION_TEXT_TRACK_SUPPORT -> 53 AVFOUNDATION_MEDIA_SELECTION_GROUP 54 1 55 2013-05-08 Sergio Villar Senin <svillar@igalia.com> 2 56 -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r149544 r149741 295 295 , m_isFullscreen(false) 296 296 , m_closedCaptionsVisible(false) 297 , m_legacyWebKitClosedCaptionsVisible(false)298 297 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) 299 298 , m_needWidgetUpdate(false) … … 4446 4445 LOG(Media, "HTMLMediaElement::setClosedCaptionsVisible(%s)", boolString(closedCaptionVisible)); 4447 4446 4447 m_closedCaptionsVisible = false; 4448 4448 4449 if (!m_player || !hasClosedCaptions()) 4449 4450 return; … … 4465 4466 void HTMLMediaElement::setWebkitClosedCaptionsVisible(bool visible) 4466 4467 { 4467 m_legacyWebKitClosedCaptionsVisible = visible;4468 4468 setClosedCaptionsVisible(visible); 4469 m_legacyWebKitClosedCaptionsVisible = m_closedCaptionsVisible;4470 4469 } 4471 4470 4472 4471 bool HTMLMediaElement::webkitClosedCaptionsVisible() const 4473 4472 { 4474 return m_ legacyWebKitClosedCaptionsVisible;4473 return m_closedCaptionsVisible; 4475 4474 } 4476 4475 -
trunk/Source/WebCore/html/HTMLMediaElement.h
r149503 r149741 710 710 bool m_isFullscreen : 1; 711 711 bool m_closedCaptionsVisible : 1; 712 bool m_legacyWebKitClosedCaptionsVisible : 1;713 712 714 713 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) -
trunk/Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp
r149187 r149741 26 26 #include "config.h" 27 27 28 #if ENABLE(VIDEO) && ( (USE(AVFOUNDATION) && HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)) || PLATFORM(IOS))28 #if ENABLE(VIDEO) && (USE(AVFOUNDATION) || PLATFORM(IOS)) 29 29 30 30 #include "InbandTextTrackPrivateAVF.h" … … 448 448 } // namespace WebCore 449 449 450 #endif // ENABLE(VIDEO) && ( (USE(AVFOUNDATION) && HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)) || PLATFORM(IOS))450 #endif // ENABLE(VIDEO) && (USE(AVFOUNDATION) || PLATFORM(IOS)) -
trunk/Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h
r149503 r149741 27 27 #define InbandTextTrackPrivateAVF_h 28 28 29 #if ENABLE(VIDEO) && ( (USE(AVFOUNDATION) && HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)) || PLATFORM(IOS))29 #if ENABLE(VIDEO) && (USE(AVFOUNDATION) || PLATFORM(IOS)) 30 30 31 31 #include "InbandTextTrackPrivate.h" … … 91 91 } // namespace WebCore 92 92 93 #endif // ENABLE(VIDEO) && ((USE(AVFOUNDATION) && HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)) || PLATFORM(IOS))93 #endif // ENABLE(VIDEO) && (USE(AVFOUNDATION) || PLATFORM(IOS)) 94 94 95 95 #endif // InbandTextTrackPrivateAVF_h -
trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp
r149187 r149741 76 76 , m_haveReportedFirstVideoFrame(false) 77 77 , m_playWhenFramesAvailable(false) 78 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)79 78 , m_inbandTrackConfigurationPending(false) 80 #endif81 79 { 82 80 LOG(Media, "MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation(%p)", this); … … 268 266 return; 269 267 270 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)271 268 if (currentTrack()) 272 269 currentTrack()->beginSeeking(); 273 #endif274 270 275 271 LOG(Media, "MediaPlayerPrivateAVFoundation::seek(%p) - seeking to %f", this, time); … … 595 591 UNUSED_PARAM(finished); 596 592 597 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)598 593 if (currentTrack()) 599 594 currentTrack()->endSeeking(); 600 #endif601 595 602 596 m_seekTo = MediaPlayer::invalidTime(); … … 829 823 break; 830 824 case Notification::InbandTracksNeedConfiguration: 831 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)832 825 m_inbandTrackConfigurationPending = false; 833 826 configureInbandTracks(); 834 #endif835 827 break; 836 828 … … 841 833 } 842 834 843 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)844 835 void MediaPlayerPrivateAVFoundation::configureInbandTracks() 845 836 { … … 868 859 scheduleMainThreadNotification(Notification::InbandTracksNeedConfiguration); 869 860 } 861 862 } // namespace WebCore 863 870 864 #endif 871 872 } // namespace WebCore873 874 #endif -
trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h
r149503 r149741 41 41 42 42 class MediaPlayerPrivateAVFoundation : public MediaPlayerPrivateInterface 43 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)44 43 , public AVFInbandTrackParent 45 #endif46 44 { 47 45 public: … … 57 55 virtual void didEnd(); 58 56 virtual void contentsNeedsDisplay() { } 59 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)60 57 virtual void configureInbandTracks(); 61 58 virtual void setCurrentTrack(InbandTextTrackPrivateAVF*) { } 62 59 virtual InbandTextTrackPrivateAVF* currentTrack() const = 0; 63 #endif64 60 65 61 class Notification { … … 267 263 virtual String engineDescription() const { return "AVFoundation"; } 268 264 269 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)270 265 virtual void trackModeChanged() OVERRIDE; 271 266 Vector<RefPtr<InbandTextTrackPrivateAVF> > m_textTracks; 272 #endif273 267 274 268 private: … … 307 301 bool m_haveReportedFirstVideoFrame; 308 302 bool m_playWhenFramesAvailable; 309 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)310 303 bool m_inbandTrackConfigurationPending; 311 #endif312 304 }; 313 305 -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.h
r149503 r149741 27 27 #define InbandTextTrackPrivateAVFObjC_h 28 28 29 #if ENABLE(VIDEO) && USE(AVFOUNDATION) && HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)29 #if ENABLE(VIDEO) && USE(AVFOUNDATION) && HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 30 30 31 31 #include "InbandTextTrackPrivateAVF.h" -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.mm
r149503 r149741 26 26 #import "config.h" 27 27 28 #if ENABLE(VIDEO) && USE(AVFOUNDATION) && HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)28 #if ENABLE(VIDEO) && USE(AVFOUNDATION) && HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 29 29 30 30 #import "InbandTextTrackPrivateAVFObjC.h" -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.h
r149510 r149741 27 27 #define InbandTextTrackPrivateLegacyAVFObjC_h 28 28 29 #if ENABLE(VIDEO) && USE(AVFOUNDATION) && HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) && !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)29 #if ENABLE(VIDEO) && USE(AVFOUNDATION) && !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) && !PLATFORM(IOS) 30 30 31 31 #include "InbandTextTrackPrivateAVF.h" … … 69 69 } 70 70 71 #endif // ENABLE(VIDEO) && USE(AVFOUNDATION) && !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) && !PLATFORM(IOS) 72 71 73 #endif 72 #endif -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm
r149716 r149741 26 26 #import "config.h" 27 27 28 #if ENABLE(VIDEO) && USE(AVFOUNDATION) && HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) && !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)28 #if ENABLE(VIDEO) && USE(AVFOUNDATION) && !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) && !PLATFORM(IOS) 29 29 30 30 #import "InbandTextTrackPrivateLegacyAVFObjC.h" … … 44 44 SOFT_LINK_CLASS(AVFoundation, AVMetadataItem) 45 45 #define AVMediaTypeClosedCaption getAVMediaTypeClosedCaption() 46 #define AVMediaCharacteristicContainsOnlyForcedSubtitles getAVMediaCharacteristicContainsOnlyForcedSubtitles()47 #define AVMediaCharacteristicIsMainProgramContent getAVMediaCharacteristicIsMainProgramContent()48 #define AVMediaCharacteristicEasyToRead getAVMediaCharacteristicEasyToRead()49 46 50 47 SOFT_LINK_POINTER(AVFoundation, AVMediaTypeClosedCaption, NSString *) … … 52 49 SOFT_LINK_POINTER(AVFoundation, AVMetadataCommonKeyTitle, NSString *) 53 50 SOFT_LINK_POINTER(AVFoundation, AVMetadataKeySpaceCommon, NSString *) 54 SOFT_LINK_POINTER(AVFoundation, AVMediaTypeSubtitle, NSString *)55 SOFT_LINK_POINTER(AVFoundation, AVMediaCharacteristicTranscribesSpokenDialogForAccessibility, NSString *)56 SOFT_LINK_POINTER(AVFoundation, AVMediaCharacteristicDescribesMusicAndSoundForAccessibility, NSString *)57 SOFT_LINK_POINTER(AVFoundation, AVMediaCharacteristicContainsOnlyForcedSubtitles, NSString *)58 SOFT_LINK_POINTER(AVFoundation, AVMediaCharacteristicIsMainProgramContent, NSString *)59 SOFT_LINK_POINTER(AVFoundation, AVMediaCharacteristicEasyToRead, NSString *)60 51 61 52 #define AVMetadataItem getAVMetadataItemClass() … … 63 54 #define AVMetadataCommonKeyTitle getAVMetadataCommonKeyTitle() 64 55 #define AVMetadataKeySpaceCommon getAVMetadataKeySpaceCommon() 65 #define AVMediaTypeSubtitle getAVMediaTypeSubtitle()66 #define AVMediaCharacteristicTranscribesSpokenDialogForAccessibility getAVMediaCharacteristicTranscribesSpokenDialogForAccessibility()67 #define AVMediaCharacteristicDescribesMusicAndSoundForAccessibility getAVMediaCharacteristicDescribesMusicAndSoundForAccessibility()68 56 69 57 using namespace WebCore; … … 89 77 return InbandTextTrackPrivate::None; 90 78 91 AVAssetTrack *assetTrack = [m_playerItemTrack assetTrack];92 NSString *mediaType = [assetTrack mediaType];93 94 if ([mediaType isEqualToString:AVMediaTypeClosedCaption])95 return InbandTextTrackPrivate::Captions;96 if ([mediaType isEqualToString:AVMediaTypeSubtitle]) {97 98 if ([assetTrack hasMediaCharacteristic:AVMediaCharacteristicContainsOnlyForcedSubtitles])99 return InbandTextTrackPrivate::Forced;100 101 // An "SDH" track is a subtitle track created for the deaf or hard-of-hearing. "captions" in WebVTT are102 // "labeled as appropriate for the hard-of-hearing", so tag SDH sutitles as "captions".103 if ([assetTrack hasMediaCharacteristic:AVMediaCharacteristicTranscribesSpokenDialogForAccessibility])104 return InbandTextTrackPrivate::Captions;105 if ([assetTrack hasMediaCharacteristic:AVMediaCharacteristicDescribesMusicAndSoundForAccessibility])106 return InbandTextTrackPrivate::Captions;107 108 return InbandTextTrackPrivate::Subtitles;109 }110 111 79 return InbandTextTrackPrivate::Captions; 112 80 } … … 114 82 bool InbandTextTrackPrivateLegacyAVFObjC::isClosedCaptions() const 115 83 { 116 if (!m_playerItemTrack) 117 return false; 118 119 return [[[m_playerItemTrack assetTrack] mediaType] isEqualToString:AVMediaTypeClosedCaption]; 84 return m_playerItemTrack; 120 85 } 121 86 122 87 bool InbandTextTrackPrivateLegacyAVFObjC::containsOnlyForcedSubtitles() const 123 88 { 124 if (!m_playerItemTrack) 125 return false; 126 127 return [[m_playerItemTrack assetTrack] hasMediaCharacteristic:AVMediaCharacteristicContainsOnlyForcedSubtitles]; 89 return false; 128 90 } 129 91 130 92 bool InbandTextTrackPrivateLegacyAVFObjC::isMainProgramContent() const 131 93 { 132 if (!m_playerItemTrack) 133 return false; 134 135 return [[m_playerItemTrack assetTrack] hasMediaCharacteristic:AVMediaCharacteristicIsMainProgramContent]; 94 return m_playerItemTrack; 136 95 } 137 96 138 97 bool InbandTextTrackPrivateLegacyAVFObjC::isEasyToRead() const 139 98 { 140 if (!m_playerItemTrack) 141 return false; 142 143 return [[m_playerItemTrack assetTrack] hasMediaCharacteristic:AVMediaCharacteristicEasyToRead]; 99 return false; 144 100 } 145 101 … … 153 109 NSArray *titles = [AVMetadataItem metadataItemsFromArray:[[m_playerItemTrack assetTrack] commonMetadata] withKey:AVMetadataCommonKeyTitle keySpace:AVMetadataKeySpaceCommon]; 154 110 if ([titles count]) { 111 #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 155 112 // If possible, return a title in one of the user's preferred languages. 156 113 NSArray *titlesForPreferredLanguages = [AVMetadataItem metadataItemsFromArray:titles filteredAndSortedAccordingToPreferredLanguages:[NSLocale preferredLanguages]]; 114 #else 115 NSArray *titlesForPreferredLanguages = [AVMetadataItem metadataItemsFromArray:titles withLocale:[NSLocale currentLocale]]; 116 #endif 157 117 if ([titlesForPreferredLanguages count]) 158 118 title = [[titlesForPreferredLanguages objectAtIndex:0] stringValue]; -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h
r149503 r149741 69 69 virtual void tracksChanged(); 70 70 71 #if HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)71 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 72 72 RetainPtr<AVPlayerItem> playerItem() const { return m_avPlayerItem; } 73 73 void processCue(NSArray *, double); … … 168 168 virtual String languageOfPrimaryAudioTrack() const OVERRIDE; 169 169 170 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) 170 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 171 void processMediaSelectionOptions(); 172 AVMediaSelectionGroup* safeMediaSelectionGroupForLegibleMedia(); 173 #endif 174 171 175 virtual void setCurrentTrack(InbandTextTrackPrivateAVF*) OVERRIDE; 172 176 virtual InbandTextTrackPrivateAVF* currentTrack() const OVERRIDE { return m_currentTrack; } 173 void processMediaSelectionOptions();174 177 void processNewAndRemovedTextTracks(const Vector<RefPtr<InbandTextTrackPrivateAVF> >&); 175 178 void clearTextTracks(); 176 AVMediaSelectionGroup* safeMediaSelectionGroupForLegibleMedia();177 179 178 180 #if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) 179 181 void processLegacyClosedCaptionsTracks(); 180 #endif181 182 182 #endif 183 183 … … 209 209 #endif 210 210 211 #if HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)211 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) 212 212 RetainPtr<AVPlayerItemLegibleOutput> m_legibleOutput; 213 213 #endif 214 214 215 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)216 215 InbandTextTrackPrivateAVF* m_currentTrack; 217 #endif218 216 }; 219 217 -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
r149503 r149741 117 117 #define AVURLAssetReferenceRestrictionsKey getAVURLAssetReferenceRestrictionsKey() 118 118 119 #if HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)119 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 120 120 typedef AVMediaSelectionGroup AVMediaSelectionGroupType; 121 121 typedef AVMediaSelectionOption AVMediaSelectionOptionType; … … 149 149 }; 150 150 151 #if HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)151 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) 152 152 @interface WebCoreAVFMovieObserver : NSObject <AVPlayerItemLegibleOutputPushDelegate> 153 153 #else … … 165 165 -(void)didEnd:(NSNotification *)notification; 166 166 -(void)observeValueForKeyPath:keyPath ofObject:(id)object change:(NSDictionary *)change context:(MediaPlayerAVFoundationObservationContext)context; 167 #if HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)167 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 168 168 - (void)legibleOutput:(id)output didOutputAttributedStrings:(NSArray *)strings nativeSampleBuffers:(NSArray *)nativeSamples forItemTime:(CMTime)itemTime; 169 169 #endif … … 236 236 , m_loaderDelegate(adoptNS([[WebCoreAVFLoaderDelegate alloc] initWithCallback:this])) 237 237 #endif 238 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)239 238 , m_currentTrack(0) 240 #endif241 239 { 242 240 #if ENABLE(ENCRYPTED_MEDIA_V2) … … 272 270 } 273 271 274 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)275 272 clearTextTracks(); 276 #endif 277 278 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) 273 274 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) 279 275 if (m_legibleOutput) { 280 276 if (m_avPlayerItem) … … 447 443 [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@"rate" options:nil context:(void *)MediaPlayerAVFoundationObservationContextPlayer]; 448 444 449 #if HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)445 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) 450 446 [m_avPlayer.get() setAppliesMediaSelectionCriteriaAutomatically:YES]; 451 447 #endif … … 477 473 [m_avPlayer.get() replaceCurrentItemWithPlayerItem:m_avPlayerItem.get()]; 478 474 479 #if HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)475 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) 480 476 const NSTimeInterval legibleOutputAdvanceInterval = 2; 481 477 … … 643 639 return; 644 640 645 #if HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)641 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 646 642 UNUSED_PARAM(closedCaptionsVisible); 647 643 #else 648 644 LOG(Media, "MediaPlayerPrivateAVFoundationObjC::setClosedCaptionsVisible(%p) - setting to %s", this, boolString(closedCaptionsVisible)); 649 [m_avPlayer.get() setClosedCaptionDisplayEnabled:closedCaptionsVisible];650 645 #endif 651 646 } … … 770 765 for (NSString *keyName in assetMetadataKeyNames()) { 771 766 AVKeyValueStatus keyStatus = [m_avAsset.get() statusOfValueForKey:keyName error:nil]; 767 772 768 if (keyStatus < AVKeyValueStatusLoaded) 773 769 return MediaPlayerAVAssetStatusLoading;// At least one key is not loaded yet. … … 994 990 setHasVideo([[m_avAsset.get() tracksWithMediaCharacteristic:AVMediaCharacteristicVisual] count]); 995 991 setHasAudio([[m_avAsset.get() tracksWithMediaCharacteristic:AVMediaCharacteristicAudible] count]); 996 #if !HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)992 #if !HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 997 993 hasCaptions = [[m_avAsset.get() tracksWithMediaType:AVMediaTypeClosedCaption] count]; 998 994 #endif … … 1009 1005 hasAudio = true; 1010 1006 else if ([[assetTrack mediaType] isEqualToString:AVMediaTypeClosedCaption]) { 1011 #if !HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)1007 #if !HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 1012 1008 hasCaptions = true; 1013 1009 #endif … … 1020 1016 } 1021 1017 1022 #if HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)1018 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 1023 1019 if (AVMediaSelectionGroupType *legibleGroup = safeMediaSelectionGroupForLegibleMedia()) { 1024 1020 hasCaptions = [[AVMediaSelectionGroup playableMediaSelectionOptionsFromArray:[legibleGroup options]] count]; … … 1026 1022 processMediaSelectionOptions(); 1027 1023 } 1028 1029 #if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) 1024 #endif 1025 1026 #if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) && HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 1030 1027 if (!hasCaptions && haveCCTrack) 1031 1028 processLegacyClosedCaptionsTracks(); 1032 #endif 1033 1029 #elif !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) 1030 if (haveCCTrack) 1031 processLegacyClosedCaptionsTracks(); 1034 1032 #endif 1035 1033 … … 1187 1185 } 1188 1186 } 1189 1190 1187 #endif 1191 1188 … … 1331 1328 #endif 1332 1329 1333 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)1334 1330 1335 1331 void MediaPlayerPrivateAVFoundationObjC::clearTextTracks() … … 1343 1339 } 1344 1340 1345 AVMediaSelectionGroupType* MediaPlayerPrivateAVFoundationObjC::safeMediaSelectionGroupForLegibleMedia()1346 {1347 if (!m_avAsset)1348 return nil;1349 1350 if ([m_avAsset.get() statusOfValueForKey:@"availableMediaCharacteristicsWithMediaSelectionOptions" error:NULL] != AVKeyValueStatusLoaded)1351 return nil;1352 1353 return [m_avAsset.get() mediaSelectionGroupForMediaCharacteristic:AVMediaCharacteristicLegible];1354 }1355 1356 1341 #if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) 1357 1342 void MediaPlayerPrivateAVFoundationObjC::processLegacyClosedCaptionsTracks() 1358 1343 { 1344 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 1359 1345 [m_avPlayerItem.get() selectMediaOption:nil inMediaSelectionGroup:safeMediaSelectionGroupForLegibleMedia()]; 1346 #endif 1360 1347 1361 1348 Vector<RefPtr<InbandTextTrackPrivateAVF> > removedTextTracks = m_textTracks; … … 1416 1403 } 1417 1404 1405 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 1406 AVMediaSelectionGroupType* MediaPlayerPrivateAVFoundationObjC::safeMediaSelectionGroupForLegibleMedia() 1407 { 1408 if (!m_avAsset) 1409 return nil; 1410 1411 if ([m_avAsset.get() statusOfValueForKey:@"availableMediaCharacteristicsWithMediaSelectionOptions" error:NULL] != AVKeyValueStatusLoaded) 1412 return nil; 1413 1414 return [m_avAsset.get() mediaSelectionGroupForMediaCharacteristic:AVMediaCharacteristicLegible]; 1415 } 1416 1418 1417 void MediaPlayerPrivateAVFoundationObjC::processMediaSelectionOptions() 1419 1418 { … … 1460 1459 m_currentTrack->processCue(reinterpret_cast<CFArrayRef>(attributedStrings), time); 1461 1460 } 1461 #endif // HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 1462 1462 1463 1463 void MediaPlayerPrivateAVFoundationObjC::setCurrentTrack(InbandTextTrackPrivateAVF *track) … … 1473 1473 if (track->isLegacyClosedCaptionsTrack()) 1474 1474 [m_avPlayer.get() setClosedCaptionDisplayEnabled:YES]; 1475 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 1475 1476 else 1476 1477 [m_avPlayerItem.get() selectMediaOption:static_cast<InbandTextTrackPrivateAVFObjC*>(track)->mediaSelectionOption() inMediaSelectionGroup:safeMediaSelectionGroupForLegibleMedia()]; 1478 #endif 1477 1479 } else { 1480 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 1478 1481 [m_avPlayerItem.get() selectMediaOption:0 inMediaSelectionGroup:safeMediaSelectionGroupForLegibleMedia()]; 1482 #endif 1479 1483 [m_avPlayer.get() setClosedCaptionDisplayEnabled:NO]; 1480 1484 } 1481 1485 1482 1486 } 1483 1484 #endif // HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)1485 1487 1486 1488 String MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack() const … … 1492 1494 return emptyString(); 1493 1495 1494 #if HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)1496 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 1495 1497 // If AVFoundation has an audible group, return the language of the currently selected audible option. 1496 1498 AVMediaSelectionGroupType *audibleGroup = [m_avAsset.get() mediaSelectionGroupForMediaCharacteristic:AVMediaCharacteristicAudible]; … … 1502 1504 return m_languageOfPrimaryAudioTrack; 1503 1505 } 1504 #endif // HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)1506 #endif // HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 1505 1507 1506 1508 // AVFoundation synthesizes an audible group when there is only one ungrouped audio track if there is also a legible group (one or … … 1657 1659 } 1658 1660 1659 #if HAVE(AVFOUNDATION_ TEXT_TRACK_SUPPORT)1661 #if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) 1660 1662 - (void)legibleOutput:(id)output didOutputAttributedStrings:(NSArray *)strings nativeSampleBuffers:(NSArray *)nativeSamples forItemTime:(CMTime)itemTime 1661 1663 {
Note: See TracChangeset
for help on using the changeset viewer.