@class NSURL, IMPlayerManifest, IMPlayerItem, NSObject, AVPlayerLayer, NSMutableArray, AVPlayerItem, MPRemoteCommandCenter, IMAVPlayerVideoViewController, NSTimer, AVAudioSession, IMPlayerChapterInfo, NSArray, MPNowPlayingInfoCenter, NSString, AVPlayer, UIWindow; @protocol OS_dispatch_source, IMAVPlayerDelegate, IMAVPlaybackCausalityObserver; @interface IMAVPlayer : NSObject @property (class, readonly, nonatomic) NSArray *availableSpeeds; @property (retain, nonatomic) NSURL *lastPlayingURL; @property (nonatomic) unsigned long long backgroundTask; @property (retain, nonatomic) NSTimer *hdcpTimer; @property (retain, nonatomic) NSTimer *seekTimer; @property (retain, nonatomic) NSMutableArray *timeObservers; @property (retain, nonatomic) NSMutableArray *observingTimes; @property (nonatomic) BOOL timeObserverNeedsUpdate; @property (nonatomic) BOOL seekForward; @property (nonatomic) struct { unsigned char delegateStateChanged : 1; unsigned char delegateErrorDidOccur : 1; unsigned char delegateMediaTypeAvailable : 1; unsigned char delegateDurationAvailable : 1; unsigned char delegateCallbackForTime : 1; unsigned char delegatePeriodicUpdate : 1; unsigned char delegateHasDidChangePlayerItem : 1; unsigned char delegateHasDidStopPlayerItem : 1; unsigned char delegateHasDidEndedPlayerItem : 1; unsigned char delegateLoadedDurationChanged : 1; unsigned char delegateChapterStarted : 1; unsigned char delegateCurrentManifestItemChanged : 1; } delegateFlags; @property (retain, nonatomic) NSObject *fadeOutTimer; @property (retain, nonatomic) MPNowPlayingInfoCenter *infoCenter; @property (retain, nonatomic) MPRemoteCommandCenter *commandCenter; @property (retain, nonatomic) AVAudioSession *audioSession; @property (retain, nonatomic) AVPlayer *player; @property (retain, nonatomic) AVPlayerItem *playerItem; @property (retain, nonatomic) id periodicTimeObserver; @property (retain, nonatomic) id nowPlayingInfoPeriodicTimeObserver; @property (nonatomic) BOOL isUpdatingCurrentTime; @property (nonatomic) float requestedRate; @property (nonatomic) BOOL wasInterrupted; @property (nonatomic) BOOL wasInterruptedEarly; @property (nonatomic) BOOL stateChangeInterruptionFlag; @property (retain, nonatomic) NSTimer *autoStopTimer; @property (nonatomic) double autoStopTimerPausedTime; @property (retain, nonatomic) IMAVPlayerVideoViewController *videoViewController; @property (retain, nonatomic) AVPlayerLayer *videoLayer; @property (retain, nonatomic) UIWindow *externalVideoWindow; @property (nonatomic) float scanRate; @property (weak, nonatomic) id delegate; @property (weak, nonatomic) NSObject *causalityObserver; @property (nonatomic) unsigned long long state; @property (readonly, nonatomic) unsigned long long loadState; @property (readonly, nonatomic) BOOL isPlaybackRequested; @property (readonly, nonatomic) BOOL isPlaybackActive; @property (nonatomic) float volume; @property (readonly, nonatomic) float actualRate; @property (readonly, nonatomic) double loadedDuration; @property (readonly, nonatomic) BOOL bufferEmpty; @property (readonly, nonatomic) IMPlayerManifest *manifest; @property (retain, nonatomic) IMPlayerItem *currentItem; @property (copy, nonatomic) id /* block */ playbackErrorFallback; @property (nonatomic) double currentTime; @property (readonly, nonatomic) double duration; @property (nonatomic) unsigned long long autoStop; @property (nonatomic) double autoStopTimerTime; @property (nonatomic) double autoStopMediaTime; @property (readonly, nonatomic) double autoStopTimeRemaining; @property (nonatomic) BOOL providesVideoView; @property (readonly, nonatomic) BOOL airplayVideoActive; @property (nonatomic) BOOL shouldEnforceHDCP; @property (nonatomic) unsigned long long videoScale; @property (readonly, nonatomic) BOOL externalDisplay; @property (nonatomic) unsigned long long currentChapterIndex; @property (readonly, nonatomic) IMPlayerChapterInfo *currentChapter; @property (readonly, nonatomic) unsigned long long chapterCount; @property (nonatomic) unsigned long long chapterMetadataMode; @property (nonatomic) int loops; @property (nonatomic) BOOL scrubbing; @property (readonly, nonatomic) BOOL isSeeking; @property (readonly, nonatomic) BOOL isScanning; @property (nonatomic) unsigned long long playbackSpeed; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; + (id)sharedPlayer; + (id)availableSpeeds; + (id)avPlaybackSpeedForSpeed:(unsigned long long)a0; + (unsigned long long)decrementPlaybackSpeed:(unsigned long long)a0; + (unsigned long long)incrementPlaybackSpeed:(unsigned long long)a0; + (BOOL)isMaxSpeed:(unsigned long long)a0; + (BOOL)isMinSpeed:(unsigned long long)a0; + (void)performOnAvSessionQueue:(id /* block */)a0; + (void)performOnMainQueue:(id /* block */)a0; + (unsigned long long)playbackSpeedForRate:(float)a0; + (float)rateForPlaybackSpeed:(unsigned long long)a0; - (BOOL)play; - (BOOL)pause; - (id)init; - (void)dealloc; - (void)nextChapter; - (BOOL)stop; - (void)endSeek; - (BOOL)isStalled; - (void)observeValueForKeyPath:(id)a0 ofObject:(id)a1 change:(id)a2 context:(void *)a3; - (void).cxx_destruct; - (BOOL)isAtEnd; - (void)previousChapter; - (BOOL)_pause; - (void)_postNotificationName:(id)a0 userInfo:(id)a1; - (void)fadeOut; - (void)fadeOutWithDuration:(double)a0; - (BOOL)togglePlayPause; - (void)removeTimeObserver:(double)a0; - (void)endBackgroundTask; - (void)fadeOutWithDuration:(double)a0 completion:(id /* block */)a1; - (void)sleep; - (void)_createPlayer; - (BOOL)_pause:(BOOL)a0; - (void)handleAudioSessionInterruption:(id)a0; - (void)nextMediaItem; - (void)previousMediaItem; - (BOOL)isDurationReady; - (void)setCurrentTime:(double)a0 fromMediaRemote:(BOOL)a1; - (void)_failedToPlayToEndNotification:(id)a0; - (BOOL)previousRemote:(BOOL)a0; - (void)_assertMainThread; - (void)_autoStopTimerFired; - (void)_clearAutoStop; - (void)_clearAutoStopTimmer; - (void)_configureAudioSessionWithCompletion:(id /* block */)a0; - (void)_durationAvailable; - (void)_pauseAutoStopTimer; - (void)_primitiveSetCurrentItem:(id)a0; - (void)_setChapterIndex:(unsigned long long)a0; - (void)_setCurrentTime:(double)a0; - (void)_setupAutoStopTimer; - (struct { struct { long long x0; int x1; unsigned int x2; long long x3; } x0; struct { long long x0; int x1; unsigned int x2; long long x3; } x1; })_skipToPreviousThreshold; - (BOOL)_stopWithReason:(unsigned long long)a0 initiator:(unsigned long long)a1 stopBlock:(id /* block */)a2; - (void)_updateForCurrentRateAndTimeControlStatus; - (void)_updatePlayerForCurrentItem; - (void)_updatePlayerTimeCompleted:(double)a0 completion:(id /* block */)a1; - (void)_updatePlayerToCurrentTime:(id /* block */)a0; - (BOOL)_validatePlay; - (void)addCMTimeObserver:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0; - (void)addPeriodicTimeObservers; - (void)addTimeObserver:(double)a0; - (void)becomeActiveMediaPlayer; - (void)beginBackgroundTask; - (void)cancelFadeOut; - (void)cancelSeek; - (void)clearTimeObservers; - (void)configureAudioSessionAndSetActive:(BOOL)a0 withCompletion:(id /* block */)a1; - (void)enforceAutoStopForMode:(unsigned long long)a0; - (void)forceTriggerTimeObserverAt:(double)a0; - (void)handlePlayerInterruption:(id)a0; - (BOOL)hasChapters; - (void)hdcpTimer:(id)a0; - (id)initWithCommandCenter:(id)a0 infoCenter:(id)a1 audioSession:(id)a2; - (void)manifestCurrentItemDidChange; - (BOOL)nextRemote; - (void)onChaptersLoaded:(id)a0; - (void)onRouteChange:(id)a0; - (void)onSeekTimer:(id)a0; - (BOOL)pauseWithInitiator:(unsigned long long)a0; - (BOOL)pauseWithInitiator:(unsigned long long)a0 interruptionEvent:(BOOL)a1; - (void)play:(id /* block */)a0 interruptionEvent:(BOOL)a1; - (void)playerItemDidReachEnd:(id)a0; - (BOOL)previousRemote; - (void)registerAVSessionCategoryAndMode; - (void)removeAllTimeObservers; - (void)removeCMTimeObserver:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0; - (void)removePeriodicTimeObservers; - (void)resetPlayer:(id)a0; - (void)scanWithRate:(float)a0; - (void)sendItemEndedNotification; - (void)sendPeriodicTimeEvent:(double)a0 duration:(double)a1 finished:(BOOL)a2; - (void)setCurrentTimeRemote:(double)a0; - (void)setManifest:(id)a0 completion:(id /* block */)a1; - (void)setState:(unsigned long long)a0 additionalUserInfo:(id)a1 completion:(id /* block */)a2; - (void)setupChapterAtTime:(double)a0; - (void)setupChapterTimeObservers; - (void)setupTimeObserver:(id)a0; - (void)startSeek:(BOOL)a0; - (id)stillFrameAt:(double)a0 maxSize:(struct CGSize { double x0; double x1; })a1 scale:(double)a2; - (void)stopObservingPlayer:(id)a0; - (void)stopObservingPlayerItem:(id)a0; - (BOOL)stopWithReason:(unsigned long long)a0 initiator:(unsigned long long)a1; - (float)storedVolume; - (void)toggleVideoAspectScaleMode; - (void)triggerTimeObserverAt:(id)a0; - (void)updateInfoCenterPlaybackState; - (void)updateNowPlayingDurationSnapshot; - (void)updateNowPlayingMetadataIncludingArtwork:(BOOL)a0; - (void)updateRateForCurrentState; - (void)updateRateForCurrentState:(id /* block */)a0; - (void)updateTimeObservers; @end