@class CVAFilterHybridResampling, CVAFilterDiffusion, CVAFilterBox, NSDictionary, MPSImageGuidedFilter, CVAFilterGuided, NSObject, MPSImageAreaMin, CVAFilterRenderStagelight, MPSImageGaussianBlur, CVAFilterInfimumConvolution, PTRenderRequest, PTRenderPipeline, CVAPhotoMTLRingBuffer, CVAFilterRenderComposite, CVAFilterColorAlphaToFgBg, MPSImageBox, NSData, CVAFilterMaskedVariableBlur, CVAFilterDistanceTransform; @protocol MTLTexture, MTLComputePipelineState, PTRenderState, OS_dispatch_queue, MTLPipelineLibrarySPI, MTLLibrary, OS_dispatch_semaphore, MTLDeviceSPI, MTLCommandQueue, MTLResourceGroupSPI; @interface VideoMattingMetal : ImageSaverRegistrator { id _device; id _defaultLibrary; id _pipelineLibrary; id _commandQueue; void *_metalContext; BOOL _mattingUsesPostprocessing; BOOL _renderingUsesPostprocessing; BOOL _enableInfConvolution; int _lastCommittedCommand; int _width; int _height; int _width2; int _height2; float _renderingDisparityBlurRadius; float _renderingLensFocalLength_mm; BOOL _useTemporalConfidence; CVAFilterBox *_boxFilter; CVAFilterHybridResampling *_hybridResampler; MPSImageGuidedFilter *_guidedFilter; CVAFilterGuided *_cvaGuidedFilter; CVAFilterRenderStagelight *_stagelightFilter; CVAFilterColorAlphaToFgBg *_colorAlphaToFgBg; CVAFilterRenderComposite *_renderComposite; CVAFilterDistanceTransform *_distanceTransform; BOOL _doDisparityDiffusion; CVAFilterDiffusion *_diffusion; CVAFilterInfimumConvolution *_infConvolution; float _infConvolutionScale; float _gammaExponent; id _diffusionMapKernel; id _fillBackgroundDisparityKernel; id _fillBackgroundDisparityKernel_faceMask; id _disparityConfidenceMaskKernel; id _disparityMasksKernel; id _disparityIsValidKernel; id _domainTransformXKernel; id _domainTransformYKernel; id _edgeAwareFillXKernel; id _edgeAwareFillYKernel; id _invalidDisparityMaskKernel; id _bgFillXKernel; id _bgFillYKernel; id _internalDisparityToCanonicalDisparityKernel; id _disparityDecimateKernel; id _alphaFillKernel; id _disparityCleanupKernel; id _disparityCleanupKernel_firstFrame; id _simpleConfidenceKernel; id _updateConfidenceAndLastValidDisparityKernel; id _updateConfidenceAndLastValidDisparityKernel_useTemporalConfidence; id _roughDisparityKernel; id _temporalDisparityFilterKernel; id _temporalDisparityFilterKernel_fallbackToInvalid; id _renderingDisparityDeweightKernel; CVAPhotoMTLRingBuffer *_disparityConfig; id _renderingDisparityFillAndFilterKernel; struct CompositeConfig { unsigned int frameNumber; unsigned int seedGeneratorFactor; int noiseBits; float noiseBitsFactor; float cubeIntensity; float noisePercentToAddAtInfinity; } _noiseConfig; CVAFilterMaskedVariableBlur *_maskedVariableBlur; id _halfDownSampler; id _colorSimKernel; id _colorSimL1Kernel; id _temporalCoefficientsFilterKernel; id _guidedFilterWeightKernel; NSObject *_semaphore; id _rTexture; id _gTexture; id _bTexture; id _bg; id _blurredBg; id _deweightedDisparity; id _shift[2]; id _coc; id _sdofYIntermediate; id _sdofUVIntermediate; id _sdofInYTexture; id _sdofInUVTexture; id _sdofOutYTexture; id _sdofOutUVTexture; id _coloredYTexture; id _coloredUVTexture; id _bgColorLut; id _fgColorLut; id _stageLightProxyLut; id _stageLightLut; id _backgroundTextureGroup; MPSImageBox *_disparityBlurBoxKernel; MPSImageBox *_fgBlurBoxKernel; MPSImageAreaMin *_fgMaskErosionKernel; id _gfForegroundMask; id _gfWeight; id _disparityLastValidValue[2]; id _disparity[2]; id _facemaskDisparity; id _filledDisparityTexture; id _filledDisparityNoInvalidTexture; id _temporallyFilteredDisparity; id _disparityConfidenceMaskTexture; id _smoothConfidence[2]; id _smoothDisparity[2]; id _roughDisparity; id _diffusionMapTexture; id _disparityIsValidTexture; id _distanceFromKnownDisparityTexture; id _domainTransformXTexture; id _domainTransformYTexture; id _edgeAwareFillTempTexture; id _bgFillTempTexture; id _invalidDisparityMaskTexture; id _initDisparity; id _outputCanonicalDisparity; id _coeff; id _coeffHistory[2]; id _isForegroundTexture; id _distanceToForegroundTexture; id _alphaNoPostprocessing; id _alphaNoPostprocessingGroup; id _edgeAwareGroup; id _bgFillGroup; id _scaledSource[2]; struct __CVBuffer *_scaledSourceCV[2]; id _tempFloatR32FloatTexture; struct __CVBuffer { } *_yuvSourceDownsampledBuffer; BOOL _doFaceMask; id _facemaskRegionTexture; unsigned long long _frameIndex; MPSImageGaussianBlur *_smoothFilter; struct __IOSurfaceAccelerator { } *_hwScaler; id _yuvSourceDownsampledTexture; NSData *_lastBgLutData; NSData *_lastFgLutData; NSData *_lastStageLightProxyCubeData; NSData *_lastStageLightCubeData; NSObject *_synchronousRenderingCallbackQueue; NSObject *_renderingCallbackSemaphore; NSObject *_synchronousMattingCallbackQueue; NSObject *_mattingCallbackSemaphore; BOOL _sdofRenderingHasForegroundBlur; PTRenderPipeline *_ptPipeline; id _ptRenderState; PTRenderRequest *_ptRequest; BOOL _sdofRenderingNeedsCropping; BOOL _renderStateIsConfigured; struct CGRect { struct CGPoint { double x; double y; } origin; struct CGSize { double width; double height; } size; } _previousRenderingRect; } @property BOOL isBgColorLutBlack; @property float renderingDisparityUpdateRate; @property BOOL bypassShiftCleanup; @property (readonly) id colorSim; @property (readonly) id filteredBeforeSmoothDisparity; @property (retain) NSDictionary *sbufMetadata; @property struct CGRect { struct CGPoint { double x; double y; } origin; struct CGSize { double width; double height; } size; } renderingRect; + (void)decomposeYuvPixelBuffer:(struct __CVBuffer { } *)a0 yTexture:(id *)a1 uvTexture:(id *)a2 device:(id)a3; + (void)saveTexture:(id)a0 toFilename:(id)a1; - (void)encodeDisparityCleanupToCommandBuffer:(id)a0 prevDisparity:(id)a1 currDisparity:(id)a2 colorSim:(id)a3 cleanDisparity:(id)a4; - (void)encodeDisparityDecimateToCommandBuffer:(id)a0 canonicalDisparity:(struct __CVBuffer { } *)a1 disparityOut:(id)a2; - (void)updateRenderRequestwithPerFrameMetadata:(id)a0 properties:(id)a1; - (void)dealloc; - (void)encodeDisparityTemporalFilterToCommandBuffer:(id)a0 currentDisparity:(id)a1 previousDisparity:(id)a2 currConfidence:(id)a3 prevSmoothConfidence:(id)a4 colorSim:(id)a5 outPrevSmoothConfidence:(id)a6 outTemporallyFilteredDisparity:(id)a7 disparityFallbackToInvalid:(BOOL)a8 disparityFilterUpdateRate:(float)a9 minimumConfidenceToKeepDisparity:(float)a10 maximumSimilarityToKeepDisparity:(float)a11; - (void)encodeColorSimL1ToCommandBuffer:(id)a0 prevSource:(id)a1 currSource:(id)a2 destination:(id)a3; - (void)encodeDisparitySmoothingToCommandBuffer:(id)a0 disparity:(id)a1; - (void)encodeFilterCoefficientToBuffer:(id)a0 inputCoeff:(id)a1 prevCoeff:(id)a2 outCoeff:(id)a3 inColorSim:(id)a4 updateRate:(float)a5; - (void)encodeUpdateConfidenceAndLastValidDisparityToCommandBuffer:(id)a0 disparity:(id)a1 prevSmoothConfidence:(id)a2 lastValidDisparityIn:(id)a3 lastValidDisparityOut:(id)a4 currConfidenceOut:(id)a5 useTemporalConfidence:(BOOL)a6; - (void)renderStageLightWithSource:(const struct __CVBuffer { } *)a0 alpha:(const struct __CVBuffer { } *)a1 canonicalDisparity:(const struct __CVBuffer { } *)a2 dstColor:(struct __CVBuffer { } *)a3 blackBackgroundIntensity:(float)a4 vignetteIntensity:(float)a5 isFinalStage:(BOOL)a6 callbackQueue:(id)a7 withCallback:(id /* block */)a8; - (void)encodeConfidenceMaskToCommandBuffer:(id)a0 inputDisparity:(id)a1 inputDisparityNoInvalid:(id)a2 outputConfidenceMask:(id)a3; - (void)downsampleWithHWScalerSource:(struct __CVBuffer { } *)a0 destination:(struct __CVBuffer { } *)a1; - (void)encodeInvalidDisparityMaskToCommandBuffer:(id)a0 inputDisparity:(id)a1 outputMask:(id)a2; - (void)encodeScaleSourceToCommandBuffer:(id)a0 source:(struct __CVBuffer { } *)a1 targetWidth:(unsigned long long)a2 targetHeight:(unsigned long long)a3; - (void)encodeBackgroundFillToCommandBuffer:(id)a0 inputDisparity:(id)a1 inputMask:(id)a2 outputDisparity:(id)a3; - (void)setStageLightProxyCubeData:(id)a0 cubeData:(id)a1; - (void)encodeForegroundMaskToBuffer:(id)a0 disparity:(id)a1 inSegmentation:(id)a2 useSegmentationOnly:(BOOL)a3 weight:(id)a4 foregroundMask:(id)a5 erodedForegroundMask:(id)a6 disparityMin:(float)a7 focusDisparity:(float)a8 hardness:(float)a9 minDistToDeweight:(float)a10 unconfidentWeight:(float)a11 dilateForegroundMask:(BOOL)a12 foregroundMaskDilationRadius:(float)a13; - (void)initSourceTexture:(struct __CVBuffer { } *)a0; - (void)cropFrame:(const struct __CVBuffer { } *)a0 destination:(struct __CVBuffer { } *)a1 rect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a2; - (void)encode420Bilinear2xDownsamplingToCommandBuffer:(id)a0 source:(struct __CVBuffer { } *)a1 destination:(struct __CVBuffer { } *)a2; - (void)alphaMattingWithPostprocessedDisparity:(const struct __CVBuffer { } *)a0 source:(const struct __CVBuffer { } *)a1 inSegmentation:(struct __CVBuffer { } *)a2 alpha:(struct __CVBuffer { } *)a3 staticParams:(const struct VideoMattingStaticParams { BOOL x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; int x7; int x8; unsigned int x9; float x10; float x11; float x12; float x13; float x14; float x15; float x16; float x17; float x18; float x19; float x20; unsigned int x21; unsigned int x22; int x23; float x24; float x25; float x26; float x27; } *)a4 dynamicParams:(const void *)a5 usePostprocessedDisparity:(BOOL)a6 isFinalStage:(BOOL)a7 dilateForegroundMask:(BOOL)a8 callbackQueue:(id)a9 callback:(id /* block */)a10; - (void)encodeGuidedFilterWeightToCommandBuffer:(id)a0 inputDisparity:(id)a1 inputSegmentation:(id)a2 useSegmentationOnly:(BOOL)a3 inputForegroundDistance:(id)a4 outputForegroundMask:(id)a5 outputWeight:(id)a6 minDistToDeweight:(float)a7 unconfidentWeight:(float)a8 dilateForegroundMask:(BOOL)a9 foregroundMaskDilationRadius:(float)a10; - (void)setPortraitForegroundCubeData:(id)a0 backgroundCubeData:(id)a1; - (void)encodeFillAlphaToCommandBuffer:(id)a0 alpha:(id)a1; - (void)setBgLut:(id)a0; - (void)encodeDomainTransformToCommandBuffer:(id)a0 inputDiffusionMap:(id)a1 inputDistanceFromKnownDisparity:(id)a2 outputDomainTransformX:(id)a3 outputDomainTransformY:(id)a4; - (void).cxx_destruct; - (void)encodeSimpleConfidenceToCommandBuffer:(id)a0 disparity:(id)a1 outConfidence:(id)a2; - (void)encodeDisparityMasksToCommandBuffer:(id)a0 inputDisparity:(id)a1 inputSegmentation:(id)a2 useSegmentationOnly:(BOOL)a3 outputForegroundMask:(id)a4 outputIsForeground:(id)a5 disparityMin:(float)a6 focusDisparity:(float)a7 hardness:(float)a8 minDistToDeweight:(float)a9 unconfidentWeight:(float)a10; - (void)renderContinuousWithSource:(const struct __CVBuffer { } *)a0 alpha:(const struct __CVBuffer { } *)a1 canonicalDisparity:(const struct __CVBuffer { } *)a2 disparityInFocus:(float)a3 focusCanonicalDisparity:(float)a4 fNumber:(float)a5 infConvolutionScale:(float)a6 noiseBits:(float)a7 disparityUpdateRate:(float)a8 focusThresholdHardness:(float)a9 cubeIntensity:(float)a10 usePostprocessedDisparity:(BOOL)a11 dstColor:(struct __CVBuffer { } *)a12 isFinalStage:(BOOL)a13 properties:(id)a14 callbackQueue:(id)a15 withCallback:(id /* block */)a16; - (void)encode420HybridDownsamplingToCommandBuffer:(id)a0 source:(struct __CVBuffer { } *)a1 destination:(struct __CVBuffer { } *)a2; - (id)disparityPostprocessingWithCanonicalDisparity:(const struct __CVBuffer { } *)a0 color:(const struct __CVBuffer { } *)a1 postProcessedDisparity:(struct __CVBuffer { } *)a2 staticParams:(const struct VideoMattingStaticParams { BOOL x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; int x7; int x8; unsigned int x9; float x10; float x11; float x12; float x13; float x14; float x15; float x16; float x17; float x18; float x19; float x20; unsigned int x21; unsigned int x22; int x23; float x24; float x25; float x26; float x27; } *)a3 dynamicParams:(const void *)a4 postProcessingParams:(const struct VideoPostprocessingParams { BOOL x0; float x1; BOOL x2; float x3; float x4; BOOL x5; } *)a5 facesArray:(id)a6 faceModel:(id)a7 isFinalStage:(BOOL)a8 callbackQueue:(id)a9 callback:(id /* block */)a10; - (id)getPTTextureFromLuma:(id)a0 chroma:(id)a1; - (void)encodeEdgeAwareFillToCommandBuffer:(id)a0 inputDisparity:(id)a1 inputDomainTransformX:(id)a2 inputDomainTransformY:(id)a3 outputDisparity:(id)a4; - (void)encodeColorSimToCommandBuffer:(id)a0 prevSource:(id)a1 currSource:(id)a2 destination:(id)a3 similarityScaleFactor:(float)a4; - (void)encode420ScalingByMPSToCommandBuffer:(id)a0 source:(struct __CVBuffer { } *)a1 destination:(struct __CVBuffer { } *)a2; - (void)encodeDiffusionMapToCommandBuffer:(id)a0 color:(id)a1 diffusionMap:(id)a2; - (void)setFgLut:(id)a0; - (void)prewarmGuidedFilter:(id)a0 device:(id)a1 commandBuffer:(id)a2 width:(int)a3 height:(int)a4 width2:(int)a5 height2:(int)a6; - (void)encodeFillBackgroundDisparityToCommandBuffer:(id)a0 inputDisparity:(id)a1 inputFacemask:(id)a2 outputDistanceFromKnownDisparity:(id)a3 outputDisparity:(id)a4 backgroundDisparityValue:(float)a5 minimumDistanceFromValidDisparity:(float)a6; - (struct pair { float x0; float x1; })blurRadiusAndStdAtInfinityForFocalLength:(float)a0 focusCanonicalDisparity:(float)a1 fNumber:(float)a2 xResolution:(float)a3 useNewCoCFormula:(BOOL)a4; - (struct __CVBuffer { } *)createCVBufferWithWidth:(unsigned long long)a0 height:(unsigned long long)a1 format:(unsigned int)a2; - (void)setAlphaLut:(float)a0 gammaExponent:(float)a1; - (void)encodeOutputDisparityToCommandBuffer:(id)a0 inputDisparity:(id)a1 outputDisparity:(id)a2; - (id)initWithStaticParams:(const struct VideoMattingStaticParams { BOOL x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; int x7; int x8; unsigned int x9; float x10; float x11; float x12; float x13; float x14; float x15; float x16; float x17; float x18; float x19; float x20; unsigned int x21; unsigned int x22; int x23; float x24; float x25; float x26; float x27; } *)a0 renderingDisparityUpdateRate:(float)a1 renderingDisparityBlurRadius:(float)a2 renderingLensFocalLength_mm:(float)a3 useTemporalConfidence:(BOOL)a4 metalContext:(void *)a5 error:(id *)a6; - (void)encodeCopyTextureToCommandBuffer:(id)a0 inTexture:(id)a1 outTexture:(id)a2; @end