@class NRFProcessor, NSString, NSDictionary, FigMetalContext, PanoramaAssemblyShaders, NSMutableArray; @protocol MTLCommandQueue, MTLTexture; @interface PanoramaAssemblyStage : NSObject <MetalImageBufferProcessor> { FigMetalContext *_metal; PanoramaAssemblyShaders *_shaders; unsigned long long _sliceWidth; unsigned long long _sliceHeight; int _direction; unsigned long long _stagingWidth; unsigned long long _stagingHeight; struct { unsigned long long frameWidth; unsigned long long frameHeight; BOOL enableTranslationCorrection; int movingAverageFilterSize; int referenceMeanStartingFrame; float atlasTranslationShiftLowThreshold; float atlasTranslationShiftHighThreshold; float atlasTranslationCorrectionStrength; int NRFversion; } _assemblyParams; unsigned long long _sliceBufferAllocSize; unsigned long long _sliceBufferLength; struct { void /* unknown type, empty encoding */ x0[3]; } *_sliceHomographies; struct { void /* unknown type, empty encoding */ x0[3]; } *_atlasHomographies; id<MTLTexture> _projectiveGrid; NSMutableArray *_stagingBufferPool; NSMutableArray *_dirtyStagingBuffers; struct __CVBuffer { } *_nrfInputPixelBuffer; id<MTLTexture> _nrfInputLuma; id<MTLTexture> _nrfInputChroma; struct opaqueCMSampleBuffer { } *_nrfInputSampleBuffer; struct __CVBuffer { } *_nrfOutputPixelBuffer; id<MTLTexture> _nrfOutputLuma; id<MTLTexture> _nrfOutputChroma; float _startingMean; float _lastFilteredValue; float *_movingAverageBuffer; id<MTLTexture> _outputBoundLuma; id<MTLTexture> _outputBoundChroma; id<MTLTexture> _outputMask; struct { void /* unknown type, empty encoding */ columns[3]; } _outputAtlasHomography; } @property (nonatomic) struct __CVBuffer { } *output; @property (nonatomic) int assemblyMode; @property (nonatomic) struct CGRect { struct CGPoint { double x; double y; } origin; struct CGSize { double width; double height; } size; } cropRect; @property (retain, nonatomic) NRFProcessor *nrfProcessor; @property (retain, nonatomic) id<MTLCommandQueue> metalCommandQueue; @property (retain, nonatomic) NSDictionary *tuningParameters; @property (retain, nonatomic) NSDictionary *cameraInfoByPortType; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; - (int)resetState; - (int)prewarm; - (void)dealloc; - (int)finishProcessing; - (int)process; - (int)setDirection:(int)a0; - (void).cxx_destruct; - (int)prepareToProcess:(unsigned int)a0; - (int)purgeResources; - (int)setup; - (int)clearStagingBuffer:(id)a0 withEncoder:(id)a1; - (int)_addStagingBuffer; - (int)_bindOutput; - (struct { void /* unknown type, empty encoding */ x0[3]; })_stagingHomography; - (void)addHomogToStaging:(struct { void /* unknown type, empty encoding */ x0[3]; })a0; - (int)addSlice:(struct __CVBuffer { } *)a0 metadata:(id)a1 sliceHomography:(struct { void /* unknown type, empty encoding */ x0[3]; })a2 stitchingMask:(id)a3 motionCue:(id)a4 roi:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a5 sliceType:(int)a6; - (int)addSliceToProjectiveGrid:(struct { void /* unknown type, empty encoding */ x0[3]; })a0 atlasHomography:(struct { void /* unknown type, empty encoding */ x0[3]; })a1 panoHomography:(struct { void /* unknown type, empty encoding */ x0[3]; })a2 encoder:(id)a3 sliceType:(int)a4; - (int)addSliceToStagingBuffer:(id)a0 sliceLuma:(id)a1 sliceChroma:(id)a2 sliceMask:(id)a3 sliceGlobalHomography:(struct { void /* unknown type, empty encoding */ x0[3]; })a4 encoder:(id)a5; - (int)addStagingToOutput:(id)a0; - (int)getMaskAsBuffer:(char **)a0 widthOut:(unsigned long long *)a1 heightOut:(unsigned long long *)a2; - (id)initWithContext:(id)a0 robustPanoParams:(struct { unsigned long long x0; unsigned long long x1; BOOL x2; int x3; int x4; float x5; float x6; float x7; int x8; })a1; - (struct { void /* unknown type, empty encoding */ x0[3]; })panoHomography; - (int)prepareToProcessPanoWidth:(unsigned long long)a0 panoHeight:(unsigned long long)a1; - (int)prepareToProcessSliceWidth:(unsigned long long)a0 sliceHeight:(unsigned long long)a1 stagingWidth:(unsigned long long)a2 stagingHeight:(unsigned long long)a3; - (int)renderDirtyStagingBuffers; @end