@class FRCScaler, NSDate, LiteSynthesis, OpticalFlow, FRCImageProcessor, NSDictionary, NSObject, Synthesis, FRCFrameDropDetector, OpticalFlowAnalyzer; @protocol OS_dispatch_group, OS_os_log, FRCSynthesis, OS_dispatch_semaphore, OS_dispatch_queue; @interface FRCFrameInterpolator : NSObject { OpticalFlow *_opticalFlow; Synthesis *_deepSynthesis; LiteSynthesis *_liteSynthesis; id<FRCSynthesis> _synthesis; FRCScaler *_scaler; OpticalFlowAnalyzer *_flowAnalyzer; struct __CVBuffer { } *_flowForward; struct __CVBuffer { } *_flowBackward; struct __CVBuffer { } *_flowForwardGating; struct __CVBuffer { } *_flowBackwardGating; struct __CVBuffer { } *_prevFlowBackwardGating; struct CGRect { struct CGPoint { double x; double y; } origin; struct CGSize { double width; double height; } size; } _cleanRectFirst; struct CGRect { struct CGPoint { double x; double y; } origin; struct CGSize { double width; double height; } size; } _cleanRectSecond; struct __CVPixelBufferPool { } *_outputPixelBufferPool; BOOL _enableCrossFlowAnalysis; unsigned long long _width; unsigned long long _height; struct { long long value; int timescale; unsigned int flags; long long epoch; } _lastFramePts; struct { long long value; int timescale; unsigned int flags; long long epoch; } _lastFrameDuration; unsigned long long _lastFramesToInterpolate; struct { long long value; int timescale; unsigned int flags; long long epoch; } _ptsForLiteDebugging; NSObject<OS_dispatch_semaphore> *_completion_semaphore; FRCFrameDropDetector *_frameDropDetector; struct __CFDictionary { } *_anchorFrameCMAttachment; long long _inputRotation; BOOL _concurrentOpticalFlow; NSObject<OS_dispatch_semaphore> *_postProcessingComletionSemaphore; NSObject<OS_dispatch_semaphore> *_initializationSemaphore; NSObject<OS_os_log> *_logger; NSObject<OS_dispatch_group> *_dispatchGroup; NSObject<OS_dispatch_queue> *_concurrentQueue; NSDate *_startTime; unsigned long long _totalFramesInterpolated; unsigned long long _totalFramePairsProcessed; BOOL _onDemandOpticalFlowBuffersAllocation; BOOL _onDemandSynthesisBufferAllocation; long long _sessionResult; struct { long long value; int timescale; unsigned int flags; long long epoch; } _maxTimeGap; BOOL _fullRange; BOOL _isYUV; unsigned long long _bitDepth; unsigned int _RGBAFormat; FRCImageProcessor *_imageProcessor; BOOL _removeCMAttachment; BOOL _gatingEnabled; BOOL _shouldGatedForInteractive; float _maxPixelMeanDiff; float _maxPixelMeanChange; struct __CVBuffer { } *_quarterResRGB; } @property (nonatomic) BOOL tilingEnabled; @property (nonatomic) BOOL secondLevelFlow; @property (nonatomic) unsigned long long synthesisMode; @property (nonatomic) BOOL inputScaling; @property (nonatomic) unsigned long long opticalFlowDownsampling; @property (nonatomic) BOOL singleFlow; @property (nonatomic) BOOL twoStageFlow; @property (nonatomic) BOOL opticalFlowAdaptationLayer; @property (nonatomic) BOOL forceFrameOutput; @property (nonatomic) BOOL forceSingleStageFlow; @property (nonatomic) BOOL synthesisTemporalSmoothing; @property (nonatomic) BOOL linearSplatting; @property (nonatomic) BOOL lowMemoryMode; @property (nonatomic) long long usage; @property (nonatomic) long long qualityMode; @property (nonatomic) struct CGAffineTransform { double a; double b; double c; double d; double tx; double ty; } preferredTransform; @property (readonly, nonatomic) long long state; @property (readonly, nonatomic) BOOL gated; @property (readonly, nonatomic) float sessionConfidence; @property (readonly, nonatomic) NSDictionary *sessionStatistics; @property (nonatomic) unsigned long long useCase; @property (nonatomic) long long gatingLevel; @property (readonly, nonatomic) long long recommendation; + (long long)getUsageFromSizeWidth:(unsigned long long)a0 height:(unsigned long long)a1; + (void)getInputFrameSizeForUsage:(long long)a0 width:(unsigned long long *)a1 height:(unsigned long long *)a2; - (id)init; - (void)dealloc; - (id)initWithMode:(long long)a0; - (long long)endSession; - (void).cxx_destruct; - (id)interpolateBetweenFirstFrame:(id)a0 secondFrame:(id)a1 numberOfFrames:(unsigned long long)a2 withError:(id *)a3; - (id)interpolateBetweenFirstFrame:(id)a0 secondFrame:(id)a1 timeScales:(id)a2 withError:(id *)a3; - (id)selectFrameInsertionPointsFromTimingList:(id)a0 metadataList:(id)a1 withError:(id *)a2; - (long long)startSessionWithUsage:(long long)a0; - (void)configureGating; - (id)interpolateRecursiveFirstFrame:(id)a0 secondFrame:(id)a1 timeScale:(id)a2 withError:(id *)a3; - (void)restoreCMAttachmentToFirstFrame:(id)a0 secondFrame:(id)a1 interpolatedFrames:(id)a2; - (id)selectFrameInsertionPointsFromTimingList:(id)a0 preModifiedTimingList:(id)a1; - (long long)adjustUsage:(long long)a0; - (void)allocateInternalBuffers; - (int)closestNumIdxInArray:(id)a0 target:(double)a1; - (BOOL)configureSynthesis; - (void)constructSessionStatisticsWithSessionDuration:(double)a0; - (id)createOutputFramesWithWidth:(unsigned long long)a0 height:(unsigned long long)a1 pixelFormat:(unsigned int)a2 numberOframes:(unsigned long long)a3; - (id)errorWithErrorCode:(long long)a0; - (long long)getFrameRotation:(long long)a0; - (void)getPixelAttributesForBuffer:(struct __CVBuffer { } *)a0; - (void)initSubModules; - (id)interpolateBetweenFirstFrame:(id)a0 secondFrame:(id)a1 timeScales:(id)a2 outputSize:(struct CGSize { double x0; double x1; })a3 outputPixelFormat:(unsigned int)a4 withError:(id *)a5; - (id)normalizeTimingFromTimeScales:(id)a0 newBeginIdx:(int)a1 newEndIdx:(int)a2; - (void)preserveCMAttachmentFirstFrame:(id)a0 secondFrame:(id)a1; - (void)releaseInternalBuffers; - (void)setCrossFlowAnalysisFromDefaults; - (void)setFlowAnalysisFromDefaults; - (void)setLiteSynthesisDebugFromDefaults; - (void)setNormalizationModeFromDefaults; - (void)setPropertiesFromDefaults; - (BOOL)shallDumpDebugInfoForCurrPts:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0 prevPts:(struct { long long x0; int x1; unsigned int x2; long long x3; })a1; - (BOOL)shallReusePreviousFlowPts0:(struct { long long x0; int x1; unsigned int x2; long long x3; })a0 Pts1:(struct { long long x0; int x1; unsigned int x2; long long x3; })a1; - (struct __CVBuffer { } *)synthesisFrameForTimeScale:(float)a0 outputSize:(struct CGSize { double x0; double x1; })a1 outputPixelFormat:(unsigned int)a2 scalerEnabled:(BOOL)a3 frameIndex:(unsigned long long)a4 lastFrame:(BOOL)a5; - (id)synthesizeInterpolatedFrames:(id)a0 second:(id)a1 normalizedFirst:(struct __CVBuffer { } *)a2 normalizedSecond:(struct __CVBuffer { } *)a3 timeScales:(id)a4 outputSize:(struct CGSize { double x0; double x1; })a5 outputPixelFormat:(unsigned int)a6 scalerEnabled:(BOOL)a7; - (void)updateBackwardFlow; - (BOOL)updateGatingResult; - (void)updateLastFramePts:(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 toInterpolate:(unsigned long long)a2; - (void)updateRecommendation; @end