AtomicString InbandTextTrackPrivateAVCF::label() const { if (!m_mediaSelectionOption) return emptyAtom; RetainPtr<CFStringRef> title; RetainPtr<CFArrayRef> commonMetaData = adoptCF(AVCFMediaSelectionOptionCopyCommonMetadata(mediaSelectionOption())); RetainPtr<CFArrayRef> titles = adoptCF(AVCFMetadataItemCopyItemsWithKeyAndKeySpace(commonMetaData.get(), AVCFMetadataCommonKeyTitle, AVCFMetadataKeySpaceCommon)); CFIndex titlesCount = CFArrayGetCount(titles.get()); if (!titlesCount) return emptyAtom; // If possible, return a title in one of the user's preferred languages. RetainPtr<CFArrayRef> preferredLanguages = CFLocaleCopyPreferredLanguages(); RetainPtr<CFArrayRef> titlesForPreferredLanguages = AVCFMediaSelectionCopyOptionsFromArrayFilteredAndSortedAccordingToPreferredLanguages(titles.get(), preferredLanguages.get()); CFIndex preferredTitlesCount = CFArrayGetCount(titlesForPreferredLanguages.get()); if (preferredTitlesCount) { AVCFMetadataItemRef titleMetadata = static_cast<AVCFMetadataItemRef>(CFArrayGetValueAtIndex(titlesForPreferredLanguages.get(), 0)); title = adoptCF(AVCFMetadataItemCopyStringValue(titleMetadata)); } if (!title) { AVCFMetadataItemRef titleMetadata = static_cast<AVCFMetadataItemRef>(CFArrayGetValueAtIndex(titles.get(), 0)); title = adoptCF(AVCFMetadataItemCopyStringValue(titleMetadata)); } return title ? AtomicString(title.get()) : emptyAtom; }
AtomicString InbandTextTrackPrivateLegacyAVCF::label() const { if (!m_playerItemTrack) return emptyAtom; RetainPtr<CFStringRef> title; RetainPtr<AVCFAssetTrackRef> assetTrack = adoptCF(AVCFPlayerItemTrackCopyAssetTrack(m_playerItemTrack.get())); RetainPtr<CFArrayRef> commonMetaData = adoptCF(AVCFAssetTrackCopyCommonMetadata(assetTrack.get())); RetainPtr<CFArrayRef> titles = adoptCF(AVCFMetadataItemCopyItemsWithKeyAndKeySpace(commonMetaData.get(), AVCFMetadataCommonKeyTitle, AVCFMetadataKeySpaceCommon)); CFIndex titlesCount = CFArrayGetCount(titles.get()); if (titlesCount) { RetainPtr<CFLocaleRef> currentLocale = adoptCF(CFLocaleCopyCurrent()); RetainPtr<CFArrayRef> titlesForPreferredLanguages = adoptCF(AVCFMetadataItemCopyItemsWithLocale(titles.get(), currentLocale.get())); CFIndex preferredTitlesCount = CFArrayGetCount(titlesForPreferredLanguages.get()); if (preferredTitlesCount) { AVCFMetadataItemRef titleMetadata = static_cast<AVCFMetadataItemRef>(CFArrayGetValueAtIndex(titlesForPreferredLanguages.get(), 0)); title = adoptCF(AVCFMetadataItemCopyStringValue(titleMetadata)); } if (!title) { AVCFMetadataItemRef titleMetadata = static_cast<AVCFMetadataItemRef>(CFArrayGetValueAtIndex(titles.get(), 0)); title = adoptCF(AVCFMetadataItemCopyStringValue(titleMetadata)); } } return title ? AtomicString(title.get()) : emptyAtom; }