luxlabs header browser preview


@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 <ISChangeObserver, AVPlayerItemOutputPullDelegate, PXChangeObserver, ISWrappedAVPlayerDelegate, ISWrappedAVAudioSessionVolumeObserver> {
    long long _tokenCounter;
    NSTimer *_playerTimeAdvancementTimer;
    void *_updateQueueIdentifier;
    NSObject<OS_dispatch_queue> *_audioSessionQueue;
    NSObject<OS_dispatch_queue> *_videoWorkQueue;
    NSObject<OS_dispatch_queue> *_stateQueue;
    NSObject<OS_dispatch_queue> *_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<PXVideoSessionDelegate> 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