@class NSMutableDictionary, PFSlowMotionTimeRangeMapper, NSObject, PXDisplayLink, NSMutableArray, PXPhotosensitivityProcessing, AVPlayerItemVideoOutput, ISWrappedAVAudioSession, NSString, AVPlayerItem, ISWrappedAVPlayer, NSTimer, NSMutableSet, PXVideoContentProvider, PXNumberAnimator, NSError, NSLock; @protocol OS_dispatch_queue, PXVideoSessionDelegate; @interface PXVideoSession : PXObservable { long long _tokenCounter; NSTimer *_playerTimeAdvancementTimer; void *_updateQueueIdentifier; NSObject *_audioSessionQueue; NSObject *_videoWorkQueue; NSObject *_stateQueue; NSObject *_updateQueue; NSMutableArray *_mainQueue_videoViewQueue; NSMutableDictionary *_stateQueue_presentationStatesByContext; NSMutableSet *_stateQueue_pixelBufferOutputTokens; NSMutableDictionary *_stateQueue_pixelBufferOutputSizesByTokens; NSMutableSet *_stateQueue_pixelBufferPausedOutputTokens; id _stateQueue_playbackTimeRangeEndBoundaryObserver; long long _stateQueue_playState; NSString *_stateQueue_audioSessionCategory; unsigned long long _stateQueue_audioSessionCategoryOptions; NSString *_stateQueue_audioSessionMode; unsigned long long _stateQueue_audioSessionRouteSharingPolicy; BOOL _stateQueue_isUpdatingAudioSession; BOOL _stateQueue_buffering; long long _stateQueue_desiredPlayState; AVPlayerItemVideoOutput *_stateQueue_videoOutput; struct CGSize { double width; double height; } _stateQueue_videoOutputSize; BOOL _stateQueue_videoOutputIsReady; struct { long long value; int timescale; unsigned int flags; long long epoch; } _stateQueue_videoDuration; AVPlayerItem *_stateQueue_currentPlayerItem; BOOL _stateQueue_isPlayerTimeAdvancing; long long _stateQueue_audioStatus; AVPlayerItem *_stateQueue_playerItem; PFSlowMotionTimeRangeMapper *_stateQueue_timeRangeMapper; struct { struct { long long value; int timescale; unsigned int flags; long long epoch; } start; struct { long long value; int timescale; unsigned int flags; long long epoch; } duration; } _stateQueue_segmentTimeRangeOfOriginalVideo; BOOL _stateQueue_isPlayable; BOOL _stateQueue_isStalled; BOOL _stateQueue_isLoopingEnabled; struct { struct { long long value; int timescale; unsigned int flags; long long epoch; } start; struct { long long value; int timescale; unsigned int flags; long long epoch; } duration; } _stateQueue_playbackTimeRange; struct { long long value; int timescale; unsigned int flags; long long epoch; } _stateQueue_playbackStartTime; float _stateQueue_volume; BOOL _stateQueue_shouldFadeVolumeChange; BOOL _stateQueue_seekToBeginningAtEnd; BOOL _stateQueue_isAtEnd; BOOL _stateQueue_isAtBeginning; struct CGAffineTransform { double a; double b; double c; double d; double tx; double ty; } _stateQueue_preferredTransform; struct CGSize { double width; double height; } _stateQueue_naturalSize; float _stateQueue_nominalFrameRate; struct __CVBuffer { } *_stateQueue_currentPixelBuffer; BOOL _stateQueue_obtainedFirstPixelBuffer; long long _stateQueue_pixelBufferFrameDrops; BOOL _stateQueue_readyForSeeking; struct { long long value; int timescale; unsigned int flags; long long epoch; } _stateQueue_currentTime; NSLock *_stateQueue_isPlayableLock; NSLock *_stateQueue_readyForSeekingLock; NSLock *_stateQueue_videoOutputReadyLock; BOOL _stateQueue_shouldDisableAutomaticPixelBufferUpdates; ISWrappedAVPlayer *_stateQueue_videoPlayer; id _stateQueue_playerTimeObservationToken; ISWrappedAVAudioSession *_stateQueue_audioSession; struct { unsigned long long needsUpdate; unsigned long long updated; BOOL isPerformingUpdate; BOOL willPerformUpdate; } _updateQueue_updateFlags; long long _updateQueue_pendingPlayerItemSeekCount; BOOL _updateQueue_didFinishInitializingAudioSession; struct { long long value; int timescale; unsigned int flags; long long epoch; } _updateQueue_lastPlayerTime; long long _updateQueue_playRequestIntervalSignpost; PXNumberAnimator *_mainQueue_volumeAnimator; PXDisplayLink *_mainQueue_displayLink; BOOL _sharedLock_has4k60Allowance; } @property (nonatomic, getter=isBuffering) BOOL buffering; @property (nonatomic, setter=setAtBeginning:) BOOL isAtBeginning; @property (nonatomic, setter=setAtEnd:) BOOL isAtEnd; @property (nonatomic, setter=setStalled:) BOOL isStalled; @property (nonatomic) struct { long long value; int timescale; unsigned int flags; long long epoch; } currentTime; @property (nonatomic) long long audioStatus; @property (nonatomic, setter=setUpdatingAudioSession:) BOOL isUpdatingAudioSession; @property (nonatomic) struct { long long x0; int x1; unsigned int x2; long long x3; } videoDuration; @property (nonatomic) struct __CVBuffer { } *currentPixelBuffer; @property (nonatomic) struct CGAffineTransform { double x0; double x1; double x2; double x3; double x4; double x5; } preferredTransform; @property (nonatomic) struct CGSize { double x0; double x1; } naturalSize; @property (nonatomic) float nominalFrameRate; @property (readonly, nonatomic) AVPlayerItemVideoOutput *videoOutput; @property (readonly, nonatomic) struct CGSize { double x0; double x1; } videoOutputSize; @property (nonatomic) BOOL isVideoOutputReady; @property (readonly, nonatomic) BOOL isExpectingVideoView; @property (readonly, nonatomic) PXPhotosensitivityProcessing *photoSensitivityProcessing; @property (weak, nonatomic) id delegate; @property (readonly, nonatomic) PXVideoContentProvider *contentProvider; @property (readonly, nonatomic) AVPlayerItem *playerItem; @property (readonly, nonatomic) PFSlowMotionTimeRangeMapper *timeRangeMapper; @property (readonly, nonatomic) long long playState; @property (readonly, nonatomic) BOOL isSegmentOfOriginalVideo; @property (readonly, nonatomic) 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; } segmentTimeRangeOfOriginalVideo; @property (readonly, nonatomic) float volume; @property (readonly, copy, nonatomic) NSString *audioSessionCategory; @property (readonly, nonatomic) NSString *audioSessionMode; @property (readonly, nonatomic) unsigned long long audioSessionRouteSharingPolicy; @property (readonly, nonatomic) unsigned long long audioSessionCategoryOptions; @property (readonly, nonatomic) NSError *error; @property (readonly, nonatomic) NSString *debugDetailedDescription; @property (readonly, nonatomic) NSString *statusDescription; @property (readonly, nonatomic) BOOL isPlayable; @property (readonly, nonatomic) long long desiredPlayState; @property (readonly, nonatomic) BOOL preventsSleepDuringVideoPlayback; @property (readonly, nonatomic) BOOL allowsExternalPlayback; @property (readonly, nonatomic, getter=isLoopingEnabled) BOOL loopingEnabled; @property (readonly, nonatomic) 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; } playbackTimeRange; @property (readonly, nonatomic) struct { long long x0; int x1; unsigned int x2; long long x3; } playbackStartTime; @property (readonly, nonatomic) BOOL seekToBeginningAtEnd; @property (readonly, nonatomic) BOOL isReadyForSeeking; @property (readonly, nonatomic) BOOL shouldDisableAutomaticPixelBufferUpdates; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; - (void)performChanges:(id /* block */)a0; - (id)init; - (void)setAllowsExternalPlayback:(BOOL)a0; - (void)observable:(id)a0 didChange:(unsigned long long)a1 context:(void *)a2; - (void)dealloc; - (void)_performChanges:(id /* block */)a0; - (void)didPerformChanges; - (void)_handleDisplayLink:(id)a0; - (id)mutableChangeObject; - (void)setVideoPlayer:(id)a0; - (void).cxx_destruct; - (void)cancelLoading; - (struct CGImage { } *)generateSnapshotImage; - (void)setPlayable:(BOOL)a0; - (id)videoPlayer; - (void)setAudioSession:(id)a0; - (id)audioSession; - (void)registerChangeObserver:(id)a0 context:(void *)a1; - (void)avPlayer:(id)a0 itemDidPlayToEnd:(id)a1; - (void)seekToTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0 toleranceBefore:(struct { long long x0; int x1; unsigned int x2; long long x3; })a1 toleranceAfter:(struct { long long x0; int x1; unsigned int x2; long long x3; })a2 completionHandler:(id /* block */)a3; - (void)setLoopingEnabled:(BOOL)a0; - (void)setPreventsSleepDuringVideoPlayback:(BOOL)a0; - (void)unregisterChangeObserver:(id)a0 context:(void *)a1; - (void)outputMediaDataWillChange:(id)a0; - (void)seekToTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0 completionHandler:(id /* block */)a1; - (void)_updateDuration; - (void)_addOutput:(id)a0 toPlayerItem:(id)a1; - (void)_assertOnUpdateQueue; - (void)_audioSessionQueue_initializeAudioSession; - (void)_audioSessionQueue_updateAudioSessionWithCategory:(id)a0 mode:(id)a1 routeSharingPolicy:(unsigned long long)a2 options:(unsigned long long)a3; - (void)_avPlayerTimeDidChange:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0; - (void)_didFinishInitializingAudioSession; - (void)_handleAssetTracksDidLoadForAsset:(id)a0; - (void)_handleContentLoadingResult:(id)a0; - (void)_handleDidReachPlaybackTimeRangeEnd; - (void)_handleMediaServicesWereResetNotification:(id)a0; - (void)_handlePlayabilityDidLoadForAsset:(id)a0; - (void)_handlePlayerItemSeekDidFinish; - (void)_handlePlayerTimeAdvancementTimer:(id)a0; - (void)_handleTrackGeometryDidLoad; - (BOOL)_isOnUpdateQueue; - (void)_loadAssetTracksIfNeeded; - (void)_mainQueue_actuallyPrewarmVideoView; - (void)_mainQueue_setDisplayLink:(id)a0; - (void)_mainQueue_setDisplayLinkPaused:(BOOL)a0; - (void)_mainQueue_updateCurrentPixelBufferWithVideoOutput:(id)a0; - (id)_newVideoView; - (void)_performBlockOnUpdateQueue:(id /* block */)a0; - (id)_playbackStateDescription; - (void)_relinquishAny4k60StreamAllowance; - (void)_removeAllVideoOutputs; - (BOOL)_request4k60StreamAllowance; - (void)_setPlayabilityFromAsset:(id)a0; - (id)_stateQueue_newPresentationStateFromCurrentWithPresenter:(void *)a0; - (void)_updateAVPlayerPlayState; - (void)_updateAtBeginningOrEnd; - (void)_updateAtBeginningOrEndWithPlayerItemDuration:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0 success:(BOOL)a1 error:(id)a2; - (void)_updateAudioStatus; - (void)_updateBuffering; - (void)_updateCurrenPixelBufferAfterSeekingToTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0 completionLock:(id)a1; - (void)_updateCurrentPixelBuffer; - (void)_updateCurrentPlayerItem; - (void)_updateDisplayLinkState; - (void)_updateFromCurrentPresentationState; - (void)_updatePlayState; - (void)_updatePlayability; - (void)_updatePlayerItem; - (void)_updatePlayerItemInPlayer; - (void)_updatePlayerVolume; - (void)_updateQueue_decrementPendingPlayerItemSeekCount; - (void)_updateQueue_registerChangeObserver:(id)a0 context:(void *)a1; - (void)_updateQueue_seekToPlaybackTimeRangeStartIfNeeded; - (void)_updateQueue_unregisterChangeObserver:(id)a0 context:(void *)a1; - (void)_updateReadyForSeeking; - (void)_updateStalled; - (void)_updateTrackGeometry; - (void)_updateVideoOutput; - (void)_updateVolumeAnimator; - (void)_videoQueue_updateTrackGeomnetryWithPlayerItem:(id)a0; - (void)_videoWorkQueue_updateCurrenPixelBufferAfterSeekingToTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0 completionLock:(id)a1; - (void)_videoWorkQueue_updateCurrentPixelBufferWithVideoOutput:(id)a0 outputTime:(double)a1; - (void)cancelPixelBufferOutputWithRequestIdentifier:(id)a0; - (id)currentPlayerItem; - (id)dequeueVideoView; - (void)enterPresentationContext:(long long)a0 presenter:(void *)a1; - (void)incrementPixelBufferFrameDropsCount; - (id)initWithContentProvider:(id)a0; - (id)initWithContentProvider:(id)a0 videoPlayer:(id)a1; - (id)initWithContentProvider:(id)a0 videoPlayer:(id)a1 playerCreationDelay:(double)a2; - (BOOL)isPlayerTimeAdvancing; - (void)leavePresentationContext:(long long)a0 presenter:(void *)a1; - (void)loadIfNeededWithPriority:(long long)a0; - (void)performChanges:(id /* block */)a0 withPresentationContext:(long long)a1 presenter:(void *)a2; - (id)performFinalCleanup; - (long long)pixelBufferFrameDropsCount; - (id)pixelBufferOutputSizes; - (unsigned long long)pixelBufferOutputTokenCount; - (id)playbackTimeRangeEndBoundaryObserver; - (void)prewarmVideoView; - (void)recycleVideoView:(id)a0; - (void)requestPixelBufferOutputWithRequestIdentifier:(id)a0 maxOutputSize:(struct CGSize { double x0; double x1; })a1; - (void)seekToExactTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0 updatePixelBuffer:(BOOL)a1 waitUntilComplete:(BOOL)a2; - (void)seekToPlaybackStartTime; - (void)setAudioSessionCategory:(id)a0 mode:(id)a1 routeSharingPolicy:(unsigned long long)a2 options:(unsigned long long)a3; - (void)setCurrentPlayerItem:(id)a0; - (void)setDesiredPlayState:(long long)a0; - (void)setIsReadyForSeeking:(BOOL)a0; - (void)setPlayState:(long long)a0; - (void)setPlaybackStartTime:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0; - (void)setPlaybackTimeRange:(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; })a0; - (void)setPlaybackTimeRangeEndBoundaryObserver:(id)a0; - (void)setPlayerItem:(id)a0 segmentTimeRangeOfOriginalVideo:(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; })a1 timeRangeMapper:(id)a2; - (void)setPlayerTimeAdvancing:(BOOL)a0; - (void)setSeekToBeginningAtEnd:(BOOL)a0; - (void)setShouldDisableAutomaticPixelBufferUpdates:(BOOL)a0; - (void)setVideoOutput:(id)a0 size:(struct CGSize { double x0; double x1; })a1; - (void)setVolume:(float)a0 withFade:(BOOL)a1; - (void)wrappedAudioSession:(id)a0 didChangeVolumeFrom:(float)a1 to:(float)a2; @end