@class TVPProgressiveJumpingScrubber, AVQueuePlayer, TVPPlayerReporter, TVPTimeRange, TVPChapter, NSMutableArray, NSString, NSMutableSet, TVPMediaItemLoader, TVPInterstitial, TVPPlayerItem, TVPExternalImagePlayer, NSMutableDictionary, TVPPlaylist, NSArray, TVPInterstitialCollection, AVPlayer, TVPChapterCollection, TVPPlayerBookmarkMonitor, NSObject, TVPDateRange, AVPlayerItem, TVPAudioOption, TVPSubtitleOption, TVPStateMachine, NSDate, TVPPlaybackState, NSNumber, NSHashTable; @protocol TVPPlaybackDelegate, TVPMediaItem, TVPASyncPlaybackDelegate; @interface TVPPlayer : NSObject <AVPlayerPlaybackCoordinatorDelegate, AVPlayerItemDelegate, TVPAVFPlayback> @property (nonatomic) BOOL invalidated; @property (retain, nonatomic) TVPStateMachine *stateMachine; @property (retain, nonatomic) TVPPlaylist *playlistInternal; @property (retain, nonatomic) TVPPlaybackState *postLoadingState; @property (retain, nonatomic) TVPPlaybackState *postAVKitScanningState; @property (retain, nonatomic) TVPMediaItemLoader *currentMediaItemLoader; @property (retain, nonatomic) NSMutableDictionary *elapsedTimeObserverBlocks; @property (retain, nonatomic) NSMutableDictionary *boundaryTimeObserverInfos; @property (retain, nonatomic) id periodicTimeObserverToken; @property (retain, nonatomic) id highFrequencyTimeObserverToken; @property (nonatomic) struct { long long value; int timescale; unsigned int flags; long long epoch; } startTime; @property (nonatomic) struct { long long value; int timescale; unsigned int flags; long long epoch; } startingSeekPrecision; @property (retain, nonatomic) NSDate *startDate; @property (retain, nonatomic) TVPPlayerBookmarkMonitor *bookmarkMonitor; @property (retain, nonatomic) TVPPlayerReporter *playerReporter; @property (nonatomic) long long numOutstandingSeeks; @property (retain, nonatomic) NSHashTable *videoViewWeakReferences; @property (retain, nonatomic) NSMutableSet *mediaItemLoaders; @property (nonatomic) BOOL handleRemoteCommandsWithoutUpdatingMediaRemote; @property (nonatomic) BOOL pausesOnRouteChange; @property (nonatomic) BOOL updatesBookmarks; @property (nonatomic) BOOL sendsPlayerReports; @property (nonatomic) struct { long long value; int timescale; unsigned int flags; long long epoch; } lastTimeSentToAVKitImageHandler; @property (nonatomic) BOOL pausesOnHDCPProtectionDown; @property (nonatomic) double preferredForwardBufferDuration; @property (nonatomic) struct CGSize { double width; double height; } preferredMaximumResolution; @property (nonatomic) struct CGSize { double width; double height; } preferredMaximumResolutionForExpensiveNetworks; @property (nonatomic) BOOL prefersSDRVideo; @property (nonatomic) BOOL limitsBandwidthForCellularAccess; @property (nonatomic) BOOL allowsCellularUsage; @property (nonatomic) BOOL allowsConstrainedNetworkUsage; @property (nonatomic) long long currentMediaItemVideoRange; @property (nonatomic) long long currentMediaItemAudioFormat; @property (nonatomic) long long currentMediaItemAudioChannels; @property (copy, nonatomic) NSArray *pendingSelectedMediaArray; @property (nonatomic) BOOL wasMutedPriorToScreenRecording; @property (nonatomic) BOOL allowsExternalPlayback; @property (retain, nonatomic) NSString *preferredAudioLanguageCode; @property (nonatomic) BOOL prefersAudioDescriptions; @property (retain, nonatomic) NSString *reportingCategory; @property (nonatomic) BOOL loadingInitialItemInPlaylist; @property (retain, nonatomic) TVPPlayerItem *currentPlayerItem; @property (nonatomic) BOOL modifyingAVPlayerRate; @property (nonatomic) BOOL modifyingAVPlayerQueue; @property (nonatomic) BOOL playerItemChangeIsHappening; @property (nonatomic) struct { long long value; int timescale; unsigned int flags; long long epoch; } timeBeingSeekedTo; @property (retain, nonatomic) NSDate *dateBeingSeekedTo; @property (retain, nonatomic) NSDate *playbackDateAtStartOfSeek; @property (nonatomic) struct { long long value; int timescale; unsigned int flags; long long epoch; } timeAtStartOfSeek; @property (nonatomic) long long currentDirectionOfPlaylistChange; @property (retain, nonatomic) id chapterBoundaryTimeObserverToken; @property (retain, nonatomic) TVPExternalImagePlayer *externalImagePlayer; @property (retain, nonatomic) TVPInterstitialCollection *currentInterstitialCollection; @property (retain, nonatomic) id interstitialBoundaryTimeObserverToken; @property (nonatomic) struct { long long value; int timescale; unsigned int flags; long long epoch; } cachedElapsedTime; @property (retain, nonatomic) TVPProgressiveJumpingScrubber *progressiveJumpingScrubber; @property (retain, nonatomic) NSString *mediaItemChangeReason; @property (nonatomic) BOOL sceneCompletelyBuffered; @property (retain, nonatomic) NSMutableArray *asyncDelegateOperations; @property (retain, nonatomic) NSNumber *temporarySubtitleOverrideType; @property (retain, nonatomic) NSArray *playbackEndTimeBoundaryObserverTokens; @property (retain, nonatomic) TVPAudioOption *cachedSelectedAudioOption; @property (retain, nonatomic) AVQueuePlayer *earlyAVQueuePlayer; @property (nonatomic) struct { long long value; int timescale; unsigned int flags; long long epoch; } cachedDuration; @property (retain, nonatomic) NSArray *cachedLoadedTimeRanges; @property (retain, nonatomic) NSArray *cachedSeekableTimeRanges; @property (nonatomic) BOOL currentMediaItemInitialLoadingComplete; @property (nonatomic) BOOL currentMediaItemHasVideoContent; @property (nonatomic) BOOL currentMediaItemIsStreaming; @property (nonatomic) struct CGSize { double width; double height; } currentMediaItemPresentationSize; @property (nonatomic) BOOL currentMediaItemHasDates; @property (retain, nonatomic) AVQueuePlayer *AVQueuePlayer; @property (retain, nonatomic) TVPPlayerItem *playerItemFromCacheManager; @property (nonatomic) BOOL outputObscuredDueToInsufficientExternalProtection; @property (nonatomic) double startPosition; @property (retain, nonatomic) NSArray *chapterCollections; @property (retain, nonatomic) TVPChapter *currentChapter; @property (retain, nonatomic) TVPInterstitial *currentInterstitial; @property (retain, nonatomic) NSArray *audioOptions; @property (retain, nonatomic) NSArray *subtitleOptions; @property (nonatomic) struct CGSize { double width; double height; } iFramePrefetchMaxSize; @property (nonatomic) BOOL asyncDelegateInProgress; @property (nonatomic) BOOL usesLegacyDelegateBehavior; @property (nonatomic) BOOL isLive; @property (copy, nonatomic) id /* block */ highFrequencyElapsedTimeObserverBlock; @property (nonatomic) BOOL createsPlayerItemButDoesNotEnqueue; @property (retain, nonatomic) AVPlayerItem *unqueuedPlayerItem; @property (copy, nonatomic) id /* block */ AVKitExternalImageScanningUpdateBlock; @property (nonatomic) BOOL mediaRemoteUpdatingEnabled; @property (nonatomic) BOOL remainLoadingWhenSeekCompletes; @property (nonatomic) BOOL initialMediaItemHasCompletedInitialLoading; @property (nonatomic) BOOL haveEverEnqueuedPlayerItem; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; @property (readonly, nonatomic) AVPlayer *avPlayer; @property (readonly, nonatomic) NSString *name; @property (weak, nonatomic) id<TVPPlaybackDelegate> delegate; @property (weak, nonatomic) id<TVPASyncPlaybackDelegate> asyncDelegate; @property (retain, nonatomic) TVPPlaylist *playlist; @property (retain, nonatomic) NSObject<TVPMediaItem> *currentMediaItem; @property (readonly, nonatomic) BOOL currentMediaItemPreparedForLoading; @property (readonly, nonatomic) TVPPlaybackState *state; @property (nonatomic) long long errorBehavior; @property (nonatomic) BOOL interactive; @property (readonly, nonatomic) double rate; @property (nonatomic) double rateUsedForPlayback; @property (nonatomic) BOOL waitsAfterPreparingMediaItems; @property (readonly, nonatomic) double elapsedTime; @property (copy, nonatomic) NSDate *playbackDate; @property (readonly, nonatomic) double duration; @property (nonatomic) BOOL muted; @property (nonatomic) float volume; @property (retain, nonatomic) TVPChapterCollection *currentChapterCollection; @property (readonly, nonatomic) TVPTimeRange *bufferedTimeRange; @property (readonly, nonatomic) TVPTimeRange *seekableTimeRange; @property (readonly, nonatomic) TVPDateRange *seekableDateRange; @property (readonly, nonatomic) double forwardPlaybackEndTime; @property (readonly, nonatomic) double reversePlaybackEndTime; @property (nonatomic) long long mediaItemEndAction; @property (retain, nonatomic) TVPAudioOption *selectedAudioOption; @property (retain, nonatomic) TVPSubtitleOption *selectedSubtitleOption; @property (nonatomic) double maximumBitRate; @property (nonatomic) BOOL preventsSleepDuringVideoPlayback; @property (nonatomic) BOOL updatesMediaRemoteInfoAutomatically; @property (nonatomic) BOOL respondsToRemoteControlEvents; @property (nonatomic) BOOL limitReadAhead; + (BOOL)automaticallyNotifiesObserversForKey:(id)a0; + (void)initialize; + (id)savedPreferredAudioLanguageCode; + (void)removeTemporaryDownloadDirectory; + (void)updateSupplementaryAvailableAudioLanguageCodes:(id)a0; + (long long)_audioFormatForFormatDescription:(struct opaqueCMFormatDescription { } *)a0; + (id)_audioSelectionCriteriaForPreferredAudioLanguageCodes:(id)a0 mediaItemLoader:(id)a1 prefersAudioDescriptions:(BOOL)a2; + (id)_newAVQueuePlayer; + (void)_playerDidBecomeInactive:(id)a0; + (void)_playerWillBecomeActive:(id)a0; + (id)_stringForAudioFormat:(long long)a0; + (void)_updateAudioSelectionCriteriaForAVQueuePlayer:(id)a0 mediaItemLoader:(id)a1 preferredAudioLanguageCodes:(id)a2 prefersAudioDescriptions:(BOOL)a3; + (void)setShouldDeactivateAVAudioSession:(BOOL)a0; + (BOOL)shouldDeactivateAVAudioSession; + (long long)tvpVideoRangeForVideoDynamicRange:(int)a0; - (long long)externalPlaybackType; - (void)_audioRouteChanged:(id)a0; - (void)play; - (void)pause; - (id)init; - (void)dealloc; - (void)invalidate; - (void)stop; - (id)initWithName:(id)a0; - (void)setElapsedTime:(double)a0; - (void)observeValueForKeyPath:(id)a0 ofObject:(id)a1 change:(id)a2 context:(void *)a3; - (void).cxx_destruct; - (void)togglePlayPause; - (id)accessLog; - (id)errorLog; - (id)playbackCoordinator:(id)a0 identifierForPlayerItem:(id)a1; - (BOOL)playerItem:(id)a0 shouldSeekToTime:(struct { long long x0; int x1; unsigned int x2; long long x3; } *)a1 toleranceBefore:(struct { long long x0; int x1; unsigned int x2; long long x3; } *)a2 toleranceAfter:(struct { long long x0; int x1; unsigned int x2; long long x3; } *)a3; - (id)timedMetadata; - (BOOL)seeking; - (void)_registerStateMachineHandlers; - (id)addElapsedTimeObserver:(id /* block */)a0; - (void)changeMediaInDirection:(long long)a0; - (void)changeMediaInDirection:(long long)a0 reason:(id)a1; - (void)removeElapsedTimeObserverWithToken:(id)a0; - (void)restartPlaybackWithState:(id)a0; - (void)setElapsedTime:(double)a0 precise:(BOOL)a1; - (void)setSelectedSubtitleOption:(id)a0 setGlobalPreference:(BOOL)a1; - (void)scanWithRate:(double)a0; - (id)AVQueuePlayerCreateIfNecessary:(BOOL)a0; - (BOOL)_beingUsedForIFrameOnlyPlayback; - (BOOL)_currentPlayerItemContainsDates; - (void)_enqueueAsyncDelegateOperation:(id)a0; - (void)_screenRecordingStateDidChange:(id)a0; - (id)_bitRateString:(double)a0; - (struct { long long x0; int x1; unsigned int x2; long long x3; })_clampedSceneTimeForPlayerTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0; - (void)_notifyListenersOfElapsedTimeChange:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0 playbackDate:(id)a1 dueToTimeJump:(BOOL)a2; - (void)_setSelectedSubtitleOption:(id)a0 userOverridesSystemSubtitleSettings:(BOOL)a1; - (long long)currentScanMode; - (void)removeWeakReferenceToVideoView:(id)a0; - (void)_addBoundaryTimeObserversToAVQueuePlayer:(id)a0; - (void)_addHighFrequencyTimeObserverIfNecessary; - (void)_addObserversForMediaItem:(id)a0; - (void)_addObserversForMediaItemLoader:(id)a0; - (void)_addObserversForPlayerItem:(id)a0; - (void)_addObserversForPlaylist:(id)a0; - (void)_addObserversToAVQueuePlayer:(id)a0; - (void)_addPeriodicTimeObserverToAVQueuePlayer:(id)a0; - (void)_addPlaybackEndTimeBoundaryObservers; - (id)_assetTracksOfType:(id)a0 fromTracks:(id)a1; - (void)_avPlayerRateDidChange:(id)a0; - (void)_avPlayerRateDidChangeTo:(float)a0; - (void)_avPlayerTimeDidChangeTo:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0; - (struct { long long x0; int x1; unsigned int x2; long long x3; })_clampInfiniteTimeToSeekableRange:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0; - (struct { long long x0; int x1; unsigned int x2; long long x3; })_clampedElapsedTimeForTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0 duration:(struct { long long x0; int x1; unsigned int x2; long long x3; })a1; - (void)_configureSoundCheckForPlayerItem:(id)a0 tracks:(id)a1; - (id)_currentDateFromPlayerItem:(id)a0; - (struct { long long x0; int x1; unsigned int x2; long long x3; })_currentMediaItemForwardPlaybackEndTime; - (void)_currentMediaItemMetadataDidChange:(id)a0; - (struct { long long x0; int x1; unsigned int x2; long long x3; })_currentMediaItemReversePlaybackEndTime; - (void)_currentPlayerItemAccessLogDidChange:(id)a0; - (void)_currentPlayerItemBufferEmptyDidChangeTo:(BOOL)a0; - (void)_currentPlayerItemBufferFullDidChangeTo:(BOOL)a0; - (BOOL)_currentPlayerItemCanScanAtRate:(double)a0; - (void)_currentPlayerItemDidChangeTo:(id)a0; - (void)_currentPlayerItemDidFailToPlayToEnd:(id)a0; - (void)_currentPlayerItemDidHitBeginningOrEnd:(id)a0; - (void)_currentPlayerItemDidStall:(id)a0; - (void)_currentPlayerItemDurationDidChangeTo:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0; - (void)_currentPlayerItemErrorLogDidChange:(id)a0; - (void)_currentPlayerItemHasVideoDidChangeTo:(BOOL)a0; - (void)_currentPlayerItemLikelyToKeepUpDidChangeTo:(BOOL)a0; - (void)_currentPlayerItemLoadedTimeRangesDidChangeTo:(id)a0; - (void)_currentPlayerItemMediaSelectionDidChange:(id)a0; - (void)_currentPlayerItemPresentationSizeDidChangeTo:(struct CGSize { double x0; double x1; })a0; - (void)_currentPlayerItemReachedTimeToPauseBuffering:(id)a0; - (void)_currentPlayerItemReachedTimeToPausePlayback:(id)a0; - (void)_currentPlayerItemSeekableTimeRangesDidChangeTo:(id)a0; - (void)_currentPlayerItemStatusDidChangeTo:(long long)a0 from:(long long)a1; - (void)_currentPlayerItemTimedMetadataDidChange; - (void)_currentPlayerItemTracksDidChangeTo:(id)a0 from:(id)a1; - (void)_currentPlayerItemWillChange; - (id)_descriptionForVideoRange:(long long)a0; - (id)_descriptionForVideoResolutionClass:(long long)a0; - (struct { long long x0; int x1; unsigned int x2; long long x3; })_estimatedCMTimeForPlaybackDate:(id)a0 referenceTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a1 referenceDate:(id)a2; - (id)_estimatedPlaybackDateForCMTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0; - (void)_externalPlaybackActiveDidChange; - (BOOL)_getStringForTitleLabel:(id *)a0 subtitleLabel:(id *)a1 forMediaItem:(id)a2; - (BOOL)_isPlaybackLikelyToKeepUp; - (BOOL)_isScreenBeingRecorded; - (void)_logAccessLogEvents; - (void)_logExternalPlaybackType; - (void)_mediaItemLoader:(id)a0 stateDidChangeTo:(id)a1; - (void)_notifyOfBoundaryCrossingBetweenPreviousTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0 updatedTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a1; - (void)_outputObscuredDidChangeTo:(BOOL)a0; - (void)_playerMutedDidChange; - (void)_playlistCurrentMediaItemDidChangeWithContext:(id)a0; - (void)_playlistCurrentMediaItemWillChangeWithContext:(id)a0; - (void)_playlistEndActionDidChange; - (void)_playlistNextMediaItemDidChangeWithContext:(id)a0; - (void)_populateCurrentPlayerItemWithUpNextMetadata; - (void)_populatePlayerItem:(id)a0 withMetadataFromMediaItem:(id)a1; - (void)_postCurrentMediaItemDidChangeNotificationWithDirection:(id)a0 reason:(id)a1 didHitBeginningOfPlaylist:(BOOL)a2 didHitEndOfPlaylist:(BOOL)a3; - (void)_postCurrentMediaItemWillChangeNotificationWithDirection:(id)a0 reason:(id)a1 didHitBeginningOfPlaylist:(BOOL)a2 didHitEndOfPlaylist:(BOOL)a3; - (void)_preferVideoDescriptionsSettingDidChange; - (void)_processNextAsyncDelegateOperation; - (void)_removeBoundaryTimeObserversFromAVQueuePlayer:(id)a0; - (void)_removeHighFrequencyTimeObserverIfNecessary; - (void)_removeObserversForMediaItem:(id)a0; - (void)_removeObserversForMediaItemLoader:(id)a0; - (void)_removeObserversForPlayerItem:(id)a0; - (void)_removeObserversForPlaylist:(id)a0; - (void)_removeObserversFromAVQueuePlayer:(id)a0; - (void)_removePeriodicTimeObserverFromAVQueuePlayer:(id)a0; - (void)_removePlaybackEndTimeBoundaryObservers; - (void)_resetAndReselectAudioOptions; - (void)_selectMediaArray:(id)a0 withItem:(id)a1; - (void)_setScrubPlayerItem:(id)a0 onPlayerItem:(id)a1; - (void)_setState:(id)a0 updatedRate:(double)a1 notifyListeners:(BOOL)a2; - (void)_setState:(id)a0 updatedRate:(double)a1 reason:(id)a2 notifyListeners:(BOOL)a3; - (id)_soundCheckNormalizationForMediaItem:(id)a0; - (id)_statesThatReturnAVPlayerTime; - (id)_statesThatReturnSeekTime; - (id)_statesThatReturnStartTime; - (void)_subtitleSettingsDidChange; - (void)_timeControlStatusDidChangeTo:(long long)a0 oldStatusNum:(id)a1; - (void)_updateAVPlayerActionAtItemEnd; - (void)_updateAudioSelectionCriteria; - (void)_updateCurrentMediaItemAudioInfoForPlayerItem:(id)a0 tracks:(id)a1; - (void)_updateCurrentMediaItemVideoRangeForTracks:(id)a0; - (void)_updateIsLiveForElapsedTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0; - (void)_updateMediaRemoteManager; - (void)_updateSelectedSubtitleForFilteredOptions:(id)a0; - (void)_updateVideoViewsWithAVQueuePlayer:(id)a0; - (int)_videoTrackIDFromTracks:(id)a0; - (id)addBoundaryTimeObserverForDates:(id)a0 withHandler:(id /* block */)a1; - (id)addBoundaryTimeObserverForTimes:(id)a0 withHandler:(id /* block */)a1; - (void)addWeakReferenceToVideoView:(id)a0; - (void)avKitDidFinishScanning; - (void)avKitSeekDidComplete; - (id)beginCoordinatedPlaybackSuspensionWithReason:(id)a0; - (void)changeMediaInDirection:(long long)a0 reason:(id)a1 ignoreDelegate:(BOOL)a2; - (void)changeToMediaAtIndex:(unsigned long long)a0 reason:(id)a1; - (void)changeToMediaAtIndex:(unsigned long long)a0 reason:(id)a1 ignoreDelegate:(BOOL)a2; - (void)continueLoadingCurrentItem; - (BOOL)currentMediaItemSupportsScrubbingUsingPlayer; - (struct { long long x0; int x1; unsigned int x2; long long x3; })durationCMTime; - (struct { long long x0; int x1; unsigned int x2; long long x3; })elapsedCMTime; - (void)endCoordinatedPlaybackSuspension:(id)a0; - (void)pauseIgnoringDelegate:(BOOL)a0; - (void)pauseWithAVKitCompletion:(id /* block */)a0; - (void)pauseWithVolumeRampDuration:(double)a0; - (void)playIgnoringDelegate:(BOOL)a0; - (void)playWithAVKitCompletion:(id /* block */)a0; - (id)playbackErrorFromError:(id)a0 forMediaItem:(id)a1; - (void)playerDidHitBeginningOrEnd; - (void)removeBoundaryTimeObserverWithToken:(id)a0; - (void)scanWithRate:(double)a0 withAVKitCompletion:(id /* block */)a1; - (void)selectMediaArray:(id)a0; - (void)setElapsedTime:(double)a0 orPlaybackDate:(id)a1 withAVKitCompletion:(id /* block */)a2; - (void)setElapsedTime:(double)a0 seekPrecision:(struct { long long x0; int x1; unsigned int x2; long long x3; })a1; - (void)setElapsedTime:(double)a0 seekPrecision:(struct { long long x0; int x1; unsigned int x2; long long x3; })a1 ignoreDelegate:(BOOL)a2; - (void)setElapsedTime:(double)a0 seekPrecision:(struct { long long x0; int x1; unsigned int x2; long long x3; })a1 ignoreDelegate:(BOOL)a2 withAVKitCompletion:(id /* block */)a3; - (void)setPlaybackDate:(id)a0 withAVKitCompletion:(id /* block */)a1; - (void)setPlaybackHUDString:(id)a0; - (void)skipToNextChapterInDirection:(long long)a0; - (void)stopWithVolumeRampDuration:(double)a0; - (void)updateSubtitleOptions; - (void)updateSubtitleOptionsAndSelection; @end