Changeset 149741 in webkit


Ignore:
Timestamp:
May 8, 2013 9:06:34 AM (11 years ago)
Author:
eric.carlson@apple.com
Message:

[Mac] Inband text tracks are not in track menu on Lion
https://bugs.webkit.org/show_bug.cgi?id=115740

Reviewed by Dean Jackson.

Source/WebCore:

No new tests, covered by existing tests.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement): Remove m_legacyWebKitClosedCaptionsVisible.
(WebCore::HTMLMediaElement::setClosedCaptionsVisible): Set m_closedCaptionsVisible

to false immediately, it will be reset to the appropriate value if necessary.

(WebCore::HTMLMediaElement::setWebkitClosedCaptionsVisible): Remove m_legacyWebKitClosedCaptionsVisible.
(WebCore::HTMLMediaElement::webkitClosedCaptionsVisible): Remove m_legacyWebKitClosedCaptionsVisible.

  • html/HTMLMediaElement.h:
  • platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp: Remove

HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) requirement. AVFOUNDATION_TEXT_TRACK_SUPPORT ->
AVFOUNDATION_MEDIA_SELECTION_GROUP

  • platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h: Ditto.
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation): Ditto.
(WebCore::MediaPlayerPrivateAVFoundation::seek): Ditto.
(WebCore::MediaPlayerPrivateAVFoundation::seekCompleted): Ditto.
(WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification): Ditto.
(WebCore::MediaPlayerPrivateAVFoundation::trackModeChanged): Ditto.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h: Ditto.
  • platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.h: Ditto.
  • platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm:

(WebCore::InbandTextTrackPrivateLegacyAVFObjC::kind): Don't look at media characteristics,

a legacy CC track is always Captions.

(WebCore::InbandTextTrackPrivateLegacyAVFObjC::isClosedCaptions): Ditto.
(WebCore::InbandTextTrackPrivateLegacyAVFObjC::containsOnlyForcedSubtitles): Ditto.
(WebCore::InbandTextTrackPrivateLegacyAVFObjC::isMainProgramContent): Ditto.
(WebCore::InbandTextTrackPrivateLegacyAVFObjC::isEasyToRead): Ditto.
(WebCore::InbandTextTrackPrivateLegacyAVFObjC::label): Use different AVFoundation API on 10.7.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): AVFOUNDATION_TEXT_TRACK_SUPPORT ->

AVFOUNDATION_MEDIA_SELECTION_GROUP.

(WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setClosedCaptionsVisible): Do nothing. AVFOUNDATION_TEXT_TRACK_SUPPORT ->

AVFOUNDATION_MEDIA_SELECTION_GROUP.

(WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): Support legacy CC tracks

only on 10.8. AVFOUNDATION_TEXT_TRACK_SUPPORT -> AVFOUNDATION_MEDIA_SELECTION_GROUP

(WebCore::MediaPlayerPrivateAVFoundationObjC::processLegacyClosedCaptionsTracks): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setCurrentTrack): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack): AVFOUNDATION_TEXT_TRACK_SUPPORT ->

AVFOUNDATION_MEDIA_SELECTION_GROUP

Source/WTF:

  • wtf/Platform.h: AVFOUNDATION_TEXT_TRACK_SUPPORT -> AVFOUNDATION_MEDIA_SELECTION_GROUP

LayoutTests:

  • platform/mac-lion/media/video-controls-captions-trackmenu-localized-expected.txt:
Location:
trunk
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r149740 r149741  
     12013-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
    1102013-05-08  Sergio Villar Senin  <svillar@igalia.com>
    211
  • trunk/LayoutTests/platform/mac-lion/media/video-controls-captions-trackmenu-localized-expected.txt

    r149526 r149741  
    1515
    1616Third item in captions menu should be labelled 'English CC'
    17 EXPECTED (item.textContent == 'English CC'), OBSERVED 'Laugh Track (English-United States)' FAIL
     17EXPECTED (item.textContent == 'English CC') OK
    1818
    1919Fourth item in captions menu should be labelled 'Laugh Track (English-United States)'
    20 EXPECTED (item.textContent == 'Laugh Track (English-United States)'), OBSERVED 'Unknown SDH' FAIL
     20EXPECTED (item.textContent == 'Laugh Track (English-United States)') OK
    2121
    2222Fifth item in captions menu should be labelled 'Unknown SDH'
    23 TypeError: 'undefined' is not an object (evaluating 'item.textContent')
     23EXPECTED (item.textContent == 'Unknown SDH') OK
    2424END OF TEST
    2525
  • trunk/Source/WTF/ChangeLog

    r149739 r149741  
     12013-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
    1102013-05-08  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
    211
  • trunk/Source/WTF/wtf/Platform.h

    r149509 r149741  
    957957
    958958#if PLATFORM(MAC) && !PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
    959 #define HAVE_AVFOUNDATION_TEXT_TRACK_SUPPORT 1
     959#define HAVE_AVFOUNDATION_MEDIA_SELECTION_GROUP 1
    960960#endif
    961961
  • trunk/Source/WebCore/ChangeLog

    r149740 r149741  
     12013-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
    1552013-05-08  Sergio Villar Senin  <svillar@igalia.com>
    256
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r149544 r149741  
    295295    , m_isFullscreen(false)
    296296    , m_closedCaptionsVisible(false)
    297     , m_legacyWebKitClosedCaptionsVisible(false)
    298297#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
    299298    , m_needWidgetUpdate(false)
     
    44464445    LOG(Media, "HTMLMediaElement::setClosedCaptionsVisible(%s)", boolString(closedCaptionVisible));
    44474446
     4447    m_closedCaptionsVisible = false;
     4448
    44484449    if (!m_player || !hasClosedCaptions())
    44494450        return;
     
    44654466void HTMLMediaElement::setWebkitClosedCaptionsVisible(bool visible)
    44664467{
    4467     m_legacyWebKitClosedCaptionsVisible = visible;
    44684468    setClosedCaptionsVisible(visible);
    4469     m_legacyWebKitClosedCaptionsVisible = m_closedCaptionsVisible;
    44704469}
    44714470
    44724471bool HTMLMediaElement::webkitClosedCaptionsVisible() const
    44734472{
    4474     return m_legacyWebKitClosedCaptionsVisible;
     4473    return m_closedCaptionsVisible;
    44754474}
    44764475
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r149503 r149741  
    710710    bool m_isFullscreen : 1;
    711711    bool m_closedCaptionsVisible : 1;
    712     bool m_legacyWebKitClosedCaptionsVisible : 1;
    713712
    714713#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
  • trunk/Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp

    r149187 r149741  
    2626#include "config.h"
    2727
    28 #if ENABLE(VIDEO) && ((USE(AVFOUNDATION) && HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)) || PLATFORM(IOS))
     28#if ENABLE(VIDEO) && (USE(AVFOUNDATION) || PLATFORM(IOS))
    2929
    3030#include "InbandTextTrackPrivateAVF.h"
     
    448448} // namespace WebCore
    449449
    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  
    2727#define InbandTextTrackPrivateAVF_h
    2828
    29 #if ENABLE(VIDEO) && ((USE(AVFOUNDATION) && HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)) || PLATFORM(IOS))
     29#if ENABLE(VIDEO) && (USE(AVFOUNDATION) || PLATFORM(IOS))
    3030
    3131#include "InbandTextTrackPrivate.h"
     
    9191} // namespace WebCore
    9292
    93 #endif //  ENABLE(VIDEO) && ((USE(AVFOUNDATION) && HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)) || PLATFORM(IOS))
     93#endif // ENABLE(VIDEO) && (USE(AVFOUNDATION) || PLATFORM(IOS))
    9494
    9595#endif // InbandTextTrackPrivateAVF_h
  • trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp

    r149187 r149741  
    7676    , m_haveReportedFirstVideoFrame(false)
    7777    , m_playWhenFramesAvailable(false)
    78 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    7978    , m_inbandTrackConfigurationPending(false)
    80 #endif
    8179{
    8280    LOG(Media, "MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation(%p)", this);
     
    268266        return;
    269267
    270 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    271268    if (currentTrack())
    272269        currentTrack()->beginSeeking();
    273 #endif
    274270   
    275271    LOG(Media, "MediaPlayerPrivateAVFoundation::seek(%p) - seeking to %f", this, time);
     
    595591    UNUSED_PARAM(finished);
    596592
    597 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    598593    if (currentTrack())
    599594        currentTrack()->endSeeking();
    600 #endif
    601595
    602596    m_seekTo = MediaPlayer::invalidTime();
     
    829823        break;
    830824    case Notification::InbandTracksNeedConfiguration:
    831 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    832825        m_inbandTrackConfigurationPending = false;
    833826        configureInbandTracks();
    834 #endif
    835827        break;
    836828
     
    841833}
    842834
    843 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    844835void MediaPlayerPrivateAVFoundation::configureInbandTracks()
    845836{
     
    868859    scheduleMainThreadNotification(Notification::InbandTracksNeedConfiguration);
    869860}
     861
     862} // namespace WebCore
     863
    870864#endif
    871 
    872 } // namespace WebCore
    873 
    874 #endif
  • trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h

    r149503 r149741  
    4141
    4242class MediaPlayerPrivateAVFoundation : public MediaPlayerPrivateInterface
    43 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    4443    , public AVFInbandTrackParent
    45 #endif
    4644{
    4745public:
     
    5755    virtual void didEnd();
    5856    virtual void contentsNeedsDisplay() { }
    59 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    6057    virtual void configureInbandTracks();
    6158    virtual void setCurrentTrack(InbandTextTrackPrivateAVF*) { }
    6259    virtual InbandTextTrackPrivateAVF* currentTrack() const = 0;
    63 #endif
    6460
    6561    class Notification {
     
    267263    virtual String engineDescription() const { return "AVFoundation"; }
    268264
    269 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    270265    virtual void trackModeChanged() OVERRIDE;
    271266    Vector<RefPtr<InbandTextTrackPrivateAVF> > m_textTracks;
    272 #endif
    273267   
    274268private:
     
    307301    bool m_haveReportedFirstVideoFrame;
    308302    bool m_playWhenFramesAvailable;
    309 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    310303    bool m_inbandTrackConfigurationPending;
    311 #endif
    312304};
    313305
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.h

    r149503 r149741  
    2727#define InbandTextTrackPrivateAVFObjC_h
    2828
    29 #if ENABLE(VIDEO) && USE(AVFOUNDATION) && HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     29#if ENABLE(VIDEO) && USE(AVFOUNDATION) && HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    3030
    3131#include "InbandTextTrackPrivateAVF.h"
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.mm

    r149503 r149741  
    2626#import "config.h"
    2727
    28 #if ENABLE(VIDEO) && USE(AVFOUNDATION) && HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     28#if ENABLE(VIDEO) && USE(AVFOUNDATION) && HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    2929
    3030#import "InbandTextTrackPrivateAVFObjC.h"
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.h

    r149510 r149741  
    2727#define InbandTextTrackPrivateLegacyAVFObjC_h
    2828
    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)
    3030
    3131#include "InbandTextTrackPrivateAVF.h"
     
    6969}
    7070
     71#endif // ENABLE(VIDEO) && USE(AVFOUNDATION) && !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) && !PLATFORM(IOS)
     72
    7173#endif
    72 #endif
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm

    r149716 r149741  
    2626#import "config.h"
    2727
    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)
    2929
    3030#import "InbandTextTrackPrivateLegacyAVFObjC.h"
     
    4444SOFT_LINK_CLASS(AVFoundation, AVMetadataItem)
    4545#define AVMediaTypeClosedCaption getAVMediaTypeClosedCaption()
    46 #define AVMediaCharacteristicContainsOnlyForcedSubtitles getAVMediaCharacteristicContainsOnlyForcedSubtitles()
    47 #define AVMediaCharacteristicIsMainProgramContent getAVMediaCharacteristicIsMainProgramContent()
    48 #define AVMediaCharacteristicEasyToRead getAVMediaCharacteristicEasyToRead()
    4946
    5047SOFT_LINK_POINTER(AVFoundation, AVMediaTypeClosedCaption, NSString *)
     
    5249SOFT_LINK_POINTER(AVFoundation, AVMetadataCommonKeyTitle, NSString *)
    5350SOFT_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 *)
    6051
    6152#define AVMetadataItem getAVMetadataItemClass()
     
    6354#define AVMetadataCommonKeyTitle getAVMetadataCommonKeyTitle()
    6455#define AVMetadataKeySpaceCommon getAVMetadataKeySpaceCommon()
    65 #define AVMediaTypeSubtitle getAVMediaTypeSubtitle()
    66 #define AVMediaCharacteristicTranscribesSpokenDialogForAccessibility getAVMediaCharacteristicTranscribesSpokenDialogForAccessibility()
    67 #define AVMediaCharacteristicDescribesMusicAndSoundForAccessibility getAVMediaCharacteristicDescribesMusicAndSoundForAccessibility()
    6856
    6957using namespace WebCore;
     
    8977        return InbandTextTrackPrivate::None;
    9078
    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 are
    102         // "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 
    11179    return InbandTextTrackPrivate::Captions;
    11280}
     
    11482bool InbandTextTrackPrivateLegacyAVFObjC::isClosedCaptions() const
    11583{
    116     if (!m_playerItemTrack)
    117         return false;
    118    
    119     return [[[m_playerItemTrack assetTrack] mediaType] isEqualToString:AVMediaTypeClosedCaption];
     84    return m_playerItemTrack;
    12085}
    12186
    12287bool InbandTextTrackPrivateLegacyAVFObjC::containsOnlyForcedSubtitles() const
    12388{
    124     if (!m_playerItemTrack)
    125         return false;
    126    
    127     return [[m_playerItemTrack assetTrack] hasMediaCharacteristic:AVMediaCharacteristicContainsOnlyForcedSubtitles];
     89    return false;
    12890}
    12991
    13092bool InbandTextTrackPrivateLegacyAVFObjC::isMainProgramContent() const
    13193{
    132     if (!m_playerItemTrack)
    133         return false;
    134    
    135     return [[m_playerItemTrack assetTrack] hasMediaCharacteristic:AVMediaCharacteristicIsMainProgramContent];
     94    return m_playerItemTrack;
    13695}
    13796
    13897bool InbandTextTrackPrivateLegacyAVFObjC::isEasyToRead() const
    13998{
    140     if (!m_playerItemTrack)
    141         return false;
    142 
    143     return [[m_playerItemTrack assetTrack] hasMediaCharacteristic:AVMediaCharacteristicEasyToRead];
     99    return false;
    144100}
    145101
     
    153109    NSArray *titles = [AVMetadataItem metadataItemsFromArray:[[m_playerItemTrack assetTrack] commonMetadata] withKey:AVMetadataCommonKeyTitle keySpace:AVMetadataKeySpaceCommon];
    154110    if ([titles count]) {
     111#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
    155112        // If possible, return a title in one of the user's preferred languages.
    156113        NSArray *titlesForPreferredLanguages = [AVMetadataItem metadataItemsFromArray:titles filteredAndSortedAccordingToPreferredLanguages:[NSLocale preferredLanguages]];
     114#else
     115         NSArray *titlesForPreferredLanguages = [AVMetadataItem metadataItemsFromArray:titles withLocale:[NSLocale currentLocale]];
     116#endif
    157117        if ([titlesForPreferredLanguages count])
    158118            title = [[titlesForPreferredLanguages objectAtIndex:0] stringValue];
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h

    r149503 r149741  
    6969    virtual void tracksChanged();
    7070
    71 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     71#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    7272    RetainPtr<AVPlayerItem> playerItem() const { return m_avPlayerItem; }
    7373    void processCue(NSArray *, double);
     
    168168    virtual String languageOfPrimaryAudioTrack() const OVERRIDE;
    169169
    170 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     170#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
     171    void processMediaSelectionOptions();
     172    AVMediaSelectionGroup* safeMediaSelectionGroupForLegibleMedia();
     173#endif
     174
    171175    virtual void setCurrentTrack(InbandTextTrackPrivateAVF*) OVERRIDE;
    172176    virtual InbandTextTrackPrivateAVF* currentTrack() const OVERRIDE { return m_currentTrack; }
    173     void processMediaSelectionOptions();
    174177    void processNewAndRemovedTextTracks(const Vector<RefPtr<InbandTextTrackPrivateAVF> >&);
    175178    void clearTextTracks();
    176     AVMediaSelectionGroup* safeMediaSelectionGroupForLegibleMedia();
    177179
    178180#if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
    179181    void processLegacyClosedCaptionsTracks();
    180 #endif
    181 
    182182#endif
    183183
     
    209209#endif
    210210
    211 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
     211#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
    212212    RetainPtr<AVPlayerItemLegibleOutput> m_legibleOutput;
    213213#endif
    214214   
    215 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    216215    InbandTextTrackPrivateAVF* m_currentTrack;
    217 #endif
    218216};
    219217
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm

    r149503 r149741  
    117117#define AVURLAssetReferenceRestrictionsKey getAVURLAssetReferenceRestrictionsKey()
    118118
    119 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     119#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    120120typedef AVMediaSelectionGroup AVMediaSelectionGroupType;
    121121typedef AVMediaSelectionOption AVMediaSelectionOptionType;
     
    149149};
    150150
    151 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
     151#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
    152152@interface WebCoreAVFMovieObserver : NSObject <AVPlayerItemLegibleOutputPushDelegate>
    153153#else
     
    165165-(void)didEnd:(NSNotification *)notification;
    166166-(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)
    168168- (void)legibleOutput:(id)output didOutputAttributedStrings:(NSArray *)strings nativeSampleBuffers:(NSArray *)nativeSamples forItemTime:(CMTime)itemTime;
    169169#endif
     
    236236    , m_loaderDelegate(adoptNS([[WebCoreAVFLoaderDelegate alloc] initWithCallback:this]))
    237237#endif
    238 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    239238    , m_currentTrack(0)
    240 #endif
    241239{
    242240#if ENABLE(ENCRYPTED_MEDIA_V2)
     
    272270    }
    273271
    274 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    275272    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)
    279275    if (m_legibleOutput) {
    280276        if (m_avPlayerItem)
     
    447443    [m_avPlayer.get() addObserver:m_objcObserver.get() forKeyPath:@"rate" options:nil context:(void *)MediaPlayerAVFoundationObservationContextPlayer];
    448444
    449 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
     445#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
    450446    [m_avPlayer.get() setAppliesMediaSelectionCriteriaAutomatically:YES];
    451447#endif
     
    477473        [m_avPlayer.get() replaceCurrentItemWithPlayerItem:m_avPlayerItem.get()];
    478474
    479 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
     475#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP) && HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
    480476    const NSTimeInterval legibleOutputAdvanceInterval = 2;
    481477
     
    643639        return;
    644640
    645 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     641#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    646642    UNUSED_PARAM(closedCaptionsVisible);
    647643#else
    648644    LOG(Media, "MediaPlayerPrivateAVFoundationObjC::setClosedCaptionsVisible(%p) - setting to %s", this, boolString(closedCaptionsVisible));
    649     [m_avPlayer.get() setClosedCaptionDisplayEnabled:closedCaptionsVisible];
    650645#endif
    651646}
     
    770765    for (NSString *keyName in assetMetadataKeyNames()) {
    771766        AVKeyValueStatus keyStatus = [m_avAsset.get() statusOfValueForKey:keyName error:nil];
     767
    772768        if (keyStatus < AVKeyValueStatusLoaded)
    773769            return MediaPlayerAVAssetStatusLoading;// At least one key is not loaded yet.
     
    994990        setHasVideo([[m_avAsset.get() tracksWithMediaCharacteristic:AVMediaCharacteristicVisual] count]);
    995991        setHasAudio([[m_avAsset.get() tracksWithMediaCharacteristic:AVMediaCharacteristicAudible] count]);
    996 #if !HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     992#if !HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    997993        hasCaptions = [[m_avAsset.get() tracksWithMediaType:AVMediaTypeClosedCaption] count];
    998994#endif
     
    10091005                    hasAudio = true;
    10101006                else if ([[assetTrack mediaType] isEqualToString:AVMediaTypeClosedCaption]) {
    1011 #if !HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     1007#if !HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    10121008                    hasCaptions = true;
    10131009#endif
     
    10201016    }
    10211017
    1022 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     1018#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    10231019    if (AVMediaSelectionGroupType *legibleGroup = safeMediaSelectionGroupForLegibleMedia()) {
    10241020        hasCaptions = [[AVMediaSelectionGroup playableMediaSelectionOptionsFromArray:[legibleGroup options]] count];
     
    10261022            processMediaSelectionOptions();
    10271023    }
    1028 
    1029 #if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
     1024#endif
     1025
     1026#if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT) && HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    10301027    if (!hasCaptions && haveCCTrack)
    10311028        processLegacyClosedCaptionsTracks();
    1032 #endif
    1033    
     1029#elif !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
     1030    if (haveCCTrack)
     1031        processLegacyClosedCaptionsTracks();
    10341032#endif
    10351033
     
    11871185    }
    11881186}
    1189 
    11901187#endif
    11911188
     
    13311328#endif
    13321329
    1333 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    13341330
    13351331void MediaPlayerPrivateAVFoundationObjC::clearTextTracks()
     
    13431339}
    13441340
    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 
    13561341#if !HAVE(AVFOUNDATION_LEGIBLE_OUTPUT_SUPPORT)
    13571342void MediaPlayerPrivateAVFoundationObjC::processLegacyClosedCaptionsTracks()
    13581343{
     1344#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    13591345    [m_avPlayerItem.get() selectMediaOption:nil inMediaSelectionGroup:safeMediaSelectionGroupForLegibleMedia()];
     1346#endif
    13601347
    13611348    Vector<RefPtr<InbandTextTrackPrivateAVF> > removedTextTracks = m_textTracks;
     
    14161403}
    14171404
     1405#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
     1406AVMediaSelectionGroupType* 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
    14181417void MediaPlayerPrivateAVFoundationObjC::processMediaSelectionOptions()
    14191418{
     
    14601459    m_currentTrack->processCue(reinterpret_cast<CFArrayRef>(attributedStrings), time);
    14611460}
     1461#endif // HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    14621462
    14631463void MediaPlayerPrivateAVFoundationObjC::setCurrentTrack(InbandTextTrackPrivateAVF *track)
     
    14731473        if (track->isLegacyClosedCaptionsTrack())
    14741474            [m_avPlayer.get() setClosedCaptionDisplayEnabled:YES];
     1475#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    14751476        else
    14761477            [m_avPlayerItem.get() selectMediaOption:static_cast<InbandTextTrackPrivateAVFObjC*>(track)->mediaSelectionOption() inMediaSelectionGroup:safeMediaSelectionGroupForLegibleMedia()];
     1478#endif
    14771479    } else {
     1480#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    14781481        [m_avPlayerItem.get() selectMediaOption:0 inMediaSelectionGroup:safeMediaSelectionGroupForLegibleMedia()];
     1482#endif
    14791483        [m_avPlayer.get() setClosedCaptionDisplayEnabled:NO];
    14801484    }
    14811485
    14821486}
    1483 
    1484 #endif // HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
    14851487
    14861488String MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack() const
     
    14921494        return emptyString();
    14931495
    1494 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     1496#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    14951497    // If AVFoundation has an audible group, return the language of the currently selected audible option.
    14961498    AVMediaSelectionGroupType *audibleGroup = [m_avAsset.get() mediaSelectionGroupForMediaCharacteristic:AVMediaCharacteristicAudible];
     
    15021504        return m_languageOfPrimaryAudioTrack;
    15031505    }
    1504 #endif // HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     1506#endif // HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    15051507
    15061508    // AVFoundation synthesizes an audible group when there is only one ungrouped audio track if there is also a legible group (one or
     
    16571659}
    16581660
    1659 #if HAVE(AVFOUNDATION_TEXT_TRACK_SUPPORT)
     1661#if HAVE(AVFOUNDATION_MEDIA_SELECTION_GROUP)
    16601662- (void)legibleOutput:(id)output didOutputAttributedStrings:(NSArray *)strings nativeSampleBuffers:(NSArray *)nativeSamples forItemTime:(CMTime)itemTime
    16611663{
Note: See TracChangeset for help on using the changeset viewer.